قم بمزامنة الوقت على وحدة DS3231 مع الكمبيوتر. DS3231 - اتصال الساعة في الوقت الحقيقي

لماذا كل هذا ضروري؟

60 ثانية * 60 دقيقة * 24 ساعة * 365 يومًا = 31.536000 ثانية في السنة.

لكل من هذه الملايين ، يمكن لثانيتين أن تذهب في اتجاه أو آخر. 31.5 مليون مقسومة على مليون ومضروبة في 2: نحصل على 63 ثانية في السنة (الحد الأقصى). خيار مقبول؟ جداً. ولكن مرة كل ستة أشهر ، سأقوم بمزامنة الوقت بحيث يتناسب مع دقيقة واحدة.

ما هي طرق ضبط الوقت على ساعة الوحدة؟

تقليديًا ، بدءًا من وحدة DS3107 ، تم ضبط الوقت باستخدام رسم Arduino من حالات استخدام المكتبة. الخوارزمية كالتالي: افتح المخطط ، وانقر على "ترجمة وتحميل" ، ويتم ضبط الوقت في المرة الأولى التي يتم فيها تشغيل وحدة التحكم. يبقى السؤال: في أي وقت؟ كيف يمكن لـ Arduino معرفة الوقت الذي يجب ضبطه؟ وبكل بساطة - وقت تجميع الرسم التخطيطي. ومع ذلك ، أرى العديد من العيوب في هذا النهج:
  • يعتمد وقت التجميع على "قوة" الكمبيوتر ؛
  • يعتمد وقت التحميل على سرعة نقل الرسم المترجم إلى لوحة Arduino ؛
  • الرسم الذي تم تحميله "لمرة واحدة" (عفا عليه الزمن فور تحميله على Arduino).
كيف يمكنك "المراوغة" للالتفاف على هذه القيود؟ حسنًا ، على سبيل المثال ، بمعرفة (الإعداد التجريبي) وقت التجميع ، يمكنك "دفع" الساعة على الكمبيوتر إلى الأمام بحلول هذا الوقت. ثم قم بتشغيل التجميع ، وميض اللوحة ، وسيتم ضبط الوقت. ميزة الطريقة هي بساطتها النسبية. السلبيات - طريقة غير مريحة نسبيًا وغير دقيقة نسبيًا ولمرة واحدة.

ماذا يمكن ان يخطر لك؟ يمكنك ، على سبيل المثال ، ضبط الوقت المطلوب في الرسم يدويًا ، وتوفير زر ، والضغط على أي اللحظة المناسبةسيضبط الوقت المحدد "يدويًا" ، على سبيل المثال ، بعد دقيقتين من اللحظة الحالية: بينما "يمتلئ" الرسم التخطيطي ، بينما نستعد لتتبع اللحظة المناسبة تمامًا للضغط على الزر يدويًا ، فإن الدقيقتين فقط ستفعل يمر. وبعد ذلك ، بالنظر إلى الساعة في الكمبيوتر ، انتظر اللحظة "نفسها" للضغط على الزر. الايجابيات - أكثر تعقيدًا من الطريقة السابقة ، لكنها لا تزال بسيطة نسبيًا ، ولكنها أكثر دقة من الطريقة الأولى. السلبيات - هذه الطريقة أكثر إزعاجًا ، وأطول ، ولا تزال رسمًا "لمرة واحدة".

على من يقع اللوم وماذا تفعل؟

بعد أن سألت نفسي هذين السؤالين الخطابيين ، دخلت على الإنترنت للبحث عن من كتب بالفعل مزامنة الوقت لوحدة الساعة مع الكمبيوتر. وكما تعلم ، من يسعى دائما يجد. تم العثور على خيار مع. من الناحية النظرية ، كل شيء بسيط: يوزع "الملف الدفعي" المعتاد الوقت الإجمالي الحالي الذي تم الحصول عليه بواسطة الطريقة "الأولى" (لأنه بالإضافة إلى الوقت نفسه ، يلزم وجود التاريخ أيضًا) ، ويزيد الوقت بمقدار ثانيتين ، و " يقود "الدورة الفارغة حتى تأتي هذه الدورة الجديدة ،" plus_two_seconds "، وقت" رمي "البيانات في منفذ COM. علاوة على ذلك ، يتم تتبع الوقت "plus_two_second الجديد" بطريقة مختلفة (من خلال٪ time٪ ، إذا كان أي شخص مهتمًا). ولكن حول "عضادات" مثل هذا القرار في وقت لاحق. البيانات "التي يتم طرحها" إلى منفذ COM ، يوزع Arduino ثم يضبط الوقت في الوحدة النمطية. يبدو أن كل شيء بسيط ومنطقي ومريح. ولكن هناك كلمة سيئة للغاية "ولكن". يبدو أن كل هذا كتبه ألماني ، وتختلف المعايير الإقليمية في Windows عن "معاييرنا" ، وعلى وجه الخصوص ، يتم فصل الجزء الكسري بنقطة ، وليس فاصلة. عند إطلاقه مع المعايير الإقليمية المحلية ، لا يعمل الملف الدفعي ، لأنه يتم وصف وقت الخروج من حلقة فارغة من خلال شرط المقارنة مع XX: XX: XX.xxx. حسنًا ، أنت بحاجة إلى وضع فاصلة بدلاً من نقطة - وهذا كل شيء ، "لقد أصلحت كل شيء." وهذا ليس كل شيء (يمكنك التحقق من من يتذكر نوع الشر الذي يمكن برمجته في ملفات مجمعة). من الضروري تصحيح الملف الدفعي بجدية أكبر. وقمت بإصلاحه باستخدام "Mats-Rewinds" و "Manual" لـ DOS. لقد أصلحت ملف الدُفعات ، لكن الرسم لا يزال لا يعمل - لم يتم تعيين الوقت. أي أنه تم إرسال البيانات إلى المنفذ ، رآها اردوينو ، ولكن "حدث خطأ ما".

دعونا نلقي نظرة على ما يرسله الملف الدفعي إلى Arduino وبأي تنسيق (كمرجع).

الحالة 83: // S = الحالة الثانية 68: // D = Minute (Daghigheh in Persian) case 72: // H = Hour case 84: // T = Day Of Month (Tag in German) case 77: /// M = حالة الشهر 74: /// J = السنة (Jahr بالألمانية)
يتم إرسال البيانات بالتنسيق S ** ~ D ** ~ H ** ~ T * ~ M ** ~ J **** ~ ، حيث ~ هو 2 بايت إرجاع. المجموع ، 31 بايت. يبدو قليلاً ، سيتم إرسال البيانات بسرعة.

ومع ذلك ، هناك أيضًا إزعاج - كما ترى ، لا يتم إرسال يوم الأسبوع. فقط يوم الشهر. لتنفيذ ساعات مع منبهات حسب أيام الأسبوع ، سيكون هناك "غير قادر". يجب تعيين يوم الأسبوع باستخدام "مقابض" في الرسم التخطيطي ، مما يلمح مرة أخرى إلى رسم "لمرة واحدة" ، إلى دونيته.

بجمع العوامل - دونية الرسم "من المصنع" ، ورفضه للعمل بشكل طبيعي ، والحاجة إلى تصحيح "الملف الدفعي" لخطوط العرض "الخاصة بنا" - قررت تطوير كل شيء خاص بي. وإذا كان الأمر كذلك ، فيمكنني التخلص من أوجه القصور وتحسين تنسيق البيانات.

البرامج و الأجهزه.

لكي يعمل كل شيء ، يلزم مكونان: برنامج لنظام Windows وحزمة برامج أجهزة Arduino.

أولا ، بيانات عامة عن بروتوكول التبادل. نظرًا لأنني كنت حرًا في اختيار تنسيق البيانات للإرسال ، فقد قررت أن إرسال 31 بايت من المعلومات لم يكن منطقيًا ، وخفضت البيانات المرسلة إلى 4 بايت. وماذا كان كافيا؟ ما الذي يمكن أن يتسع لـ 4 بايت؟ نعم ، هذا يكفي. كل ما تحتاجه في مكانه الصحيح. أنا متأكد من أن الكثيرين قد خمنوا ما هي 4 بايت. بالنسبة لأولئك الذين لم يخمنوا ، سأقتبس جزءًا من مقال من ويكيبيديا:

وقت UNIX (وقت POSIX) - نظام لوصف اللحظات في الوقت المناسب ، تم اعتماده في UNIX وغيرها من المتوافقة مع POSIX أنظمة التشغيل. مُعرَّف بأنه عدد الثواني منذ منتصف الليل (00:00:00 بالتوقيت العالمي المنسق) في 1 يناير 1970 (الخميس).
يتم تمثيل وقت UNIX كرقم صحيح يزداد مع كل ثانية تمر دون الحاجة إلى حسابات لتحديد السنة أو الشهر أو اليوم أو الساعة أو الدقيقة لسهولة القراءة البشرية. يتوافق وقت UNIX الحديث مع التوقيت العالمي المنسق (UTC) - العد التنازلي بالثواني SI.

لذلك ، العدد الصحيح الذي يخزن وقت UNIX يستغرق 4 بايت ، وهو ما يكفي حتى 2،147،483،648 ثانية. وثم ممكنالمشاكل المحتملة. لماذا الإمكانيات؟ لأن هذه هي العتبة التي عندها الرقم ربمايتم تفسيرها على أنها سلبية (كما هو الحال مع أجهزة iPhone للعديد من الرفاق الفضوليين في وقت واحد). ربما ، ولكن ليس بالضرورة - يعتمد الأمر على ما إذا كانت أيدي المبرمجين تنمو من المكان الذي توفره الطبيعة. يتوافق عدد الثواني المحدد مع 03:14:08 في 19 يناير 2038. حتى ذلك الوقت ، يمكنك التبديل ببطء إلى إصدار 64 بت من نظام التشغيل ، حيث سيتم تخزين الوقت في متغير 8 بايت ، والذي سيكون كافيًا لـ 292 مليار سنة القادمة دون أي مشاكل. هناك احتمال أن يكون هذا كافياً لحياتنا. وبعد ذلك يتعين عليك الترقية إلى الإصدار 128 بت من UNIX.

ما هي المشاكل التي قمت بحلها من خلال الوصول إلى هذا الخيار؟ أولاً ، قمت بتقليل عدد البايتات المرسلة بشكل كبير ، مما يزيد من دقة إعداد الوقت بالمللي ثانية. إنه رائع ، أليس كذلك؟ وثانيًا ، لقد قمت (على الأرجح) بتخفيف توافق Linux. للأسف ، لا يمكنني التعود على Linux ، وأنا في الغالب أستخدم Windows فقط. بالنسبة إلى هذا Windows نفسه ، يمكنني كتابة معيد توجيه ، لكن لا يمكنني ذلك مع Linux. لكنني أعتقد أنه في Linux يمكنك الحصول على قيمة وقت UNIX أسهل بكثير من Windows ، وإرسال هذا الرقم إلى منفذ COM.

لا أحد إضافيلا يلزم إرسال البيانات ، مثل يوم الأسبوع وما إلى ذلك. وقت UNIX فقط. كل شيء آخر يتم في اردوينو.

الآن القليل من التفاصيل مباشرة عن أولاًمكون - برنامج لنظام التشغيل Windows. البرنامج مكتوب في دلفي القديمة الجيدة. عند بدء التشغيل ، تطلب منك نافذة منبثقة تحديد منفذ COM لإرسال البيانات. يختار. يجب ترك باقي الإعدادات في الوضع الافتراضي.

كيف يعمل البرنامج؟ يعيد الحساب من تنسيق الوقت بيانات الويندوزبالنسبة إلى تنسيق UNIX ، أي عدد الثواني منذ منتصف ليل 1 يناير 1970. ثم يضيف 3 ثوانٍ و "يسقط" في حلقة فارغة (من الواضح أنها أقل من تلك الثلاث ثوانٍ الإضافية) ، والخروج منها يحدث في العدد المطلوب من الثواني ، أقرب ما يمكن إلى 000 ميلي ثانية. بمعنى آخر ، يتم مراقبة بداية بداية تلك الثانية من الوقت ، والتي يجب إرسال قيمتها إلى Arduino. توافق على أن إرسال البيانات ، على سبيل المثال ، أصبح الآن XXXXXXXXX5 ثوانٍ ، بينما في الواقع ، على سبيل المثال ، XXXXXXXXX5 و 756 جزءًا من الألف (على سبيل المثال) ثانية ، لن يكون صحيحًا. لهذا السبب تحتاج إلى تتبع بداية الثانية لبدء نقل البيانات. بعد نقل البيانات ، يقوم البرنامج المألوف بالإبلاغ عن الحالة "تم :)". هذا يختتم مهمة البرنامج.


ثانيةالمكون - جزء الأجهزة والبرمجيات - Arduino. يوجد 2 أصنافأجهزة لهذا المشروع: نسخة "كاملة" مع شاشة وزر ، ونسخة "مجردة" لـ تحميل سريعوحدة الوقت ، مجمعة من "القرف والعصي". انظر أدناه لاختلافاتهم. يتكون الإصدار "الكامل" من Arduino Nano ، ودرع 1602 مع I2C لحماية "المحول" ، وزر إعادة تعيين Arduino اختياري ، ورأس دبوس (أنثى) لتوصيل وحدة الساعة. أيضًا ، اختياريًا ، من جسم الجهاز مع ملصق "لطيف". يتكون الإصدار "المجرد" من Arduino (Uno و Nano و Pro Mini + المحول "الصحيح" إلى USB مع DTR) و 4 أسلاك لتوصيل وحدة الساعة.



كما يتضح من الرسوم البيانية ، تحتوي النسخة "الكاملة" ، بالإضافة إلى النسخة "المقطوعة" ، على زر إعادة تعيين وشاشة 1602 مع "محول". كلا الإصدارين متطابقان تمامًا من حيث الوظيفة الرئيسية - إلى ضبط الوقت. الشاشة مطلوبة فقط لعرض مراحل العملية ، وفي نهاية عملية ضبط الوقت ، يتم عرض الوقت والتاريخ واليوم المحددين حديثًا. علاوة على ذلك ، ستكون البيانات في ذلك الوقت بالفعل القراءة من وحدة الساعة نفسها. في الإصدار "المقتطع" ، يعمل مؤشر LED المدمج في لوحة Arduino كشاشة: في نهاية عملية تعيين وقت جديد ، يبدأ في التوهج. هذا هو المؤشر بأكمله.

ما هو زر إعادة الضبط؟ لما هو في النسخة الكاملةبعد ضبط الوقت ، سيدخل Arduino حلقة لا نهاية لها لعرض ذلك الوقت المحدد حديثًا ، أي في الواقع ، سيصبح ساعة. علاوة على ذلك ، الساعات مصنوعة على بعجلة، فيما يتعلق بعدم تمكنهم من استبدال الساعة العادية لعدة أسباب (يتم تنفيذ اختيار الثواني من خلال تأخير ، وسيختفي عرض الوقت عند إيقاف تشغيل الطاقة). بعد كل شيء ، الهدف هو التأكد من مزامنة الوقت بشكل صحيح ، لا أكثر. لذلك ، لمزامنة وحدة الساعة التالية ، لا يمكنك الاستغناء عن إعادة الضبط (بتعبير أدق ، يمكنك القيام بذلك إذا قمت "بتشويه" كابل USB). بمعنى آخر ، الغرض من الزر نفعي بحت. إذا كنت ترغب في ذلك ، يمكنك الاستغناء عنها.

كيفية فلاش Arduino ، لأن هناك نسختين من الأجهزة ، ورسم تخطيطي واحد؟ لتجميع إصدار البرنامج الثابت "الصحيح" ، تحتاج إلى تعيين قيمة المعلمة المطلوبة في رأس المخطط الإصدار: حقيقي للنسخة "الكاملة" ، أو خطأ شنيع - لـ "مقطوع". وبالتالي سيحدد المترجم أي إصدار من الأجهزة لتجميع البرامج الثابتة.

إذن ، هناك مخطط اتصال ، تحتاج إلى رمز تخطيطي. يرجى ملاحظة أن ل عملية عاديةيحتاج الرسم بإصدار "كامل" إلى مكتبة LiquidCrystal I2Cبواسطة فرانك دي براباندر(مثبتة من المستودع باستخدام مدير المكتبة). نحتاج أيضًا إلى مكتبة لدعم وحدة الساعة ، وليس فقط أي :). حمل هنا: . لقد تعاملنا مع المكتبات.

هذا هو رمز الرسم:

// ======================================== الإعداد الذي يمكن تغييره === = ===================================== # تعريف fullVersion true // true = نسخة "كاملة" مع شاشة ؛ إصدار خاطئ = "تم تجريده" مع LED مدمج // ================================== المكتبات المستخدمة والمتغيرة الإعلانات = ================================== # تضمين #يشمل #if (fullVersion) # تضمين #endif غير موقعة طويل t1 = 0 ؛ // متغير للوقت المستلم بدون توقيع طويل t2 = 0 ؛ // متغير للبايت الزمني المستلم ب ؛ // المخزن المؤقت لتلقي البيانات من منفذ COM#if (fullVersion) بايت يوم = 0 ؛ ساعة #endif DS3231 ؛ RTCDateTime date1 ؛ #if (fullVersion) LiquidCrystal_I2C lcd (0x3F ، 16،2) ؛ // أحب الصينيون العنوان الجديد لـ "محولات" من i2c إلى الشاشة #endif // ============================== = ================================================== ================================== إعداد باطل () (#if (! fullVersion) // مناسب فقط لـ " نسخة مقطوعة - بداية قسم الكود pinMode (13، OUTPUT)؛ digitalWrite (13، LOW)؛ #endif // مناسب فقط للإصدار "المقتطع" - نهاية قسم الكود clock.begin ()؛ المسلسل .begin (9600)؛ #if (fullVersion) // مناسب فقط للإصدار "الكامل" - بداية قسم الكود lcd.init ()؛ lcd.backlight ()؛ lcd.setCursor (0،0)؛ lcd .print ("COMport 9600 8N1") ؛ // تلميح إلى معلمات منفذ COM التي يجب تحديدها في برنامج lcd.setCursor (0،1) ؛ lcd.print ("جاهز للمزامنة") ؛ // رسالة الحالة - جاهزة للمزامنة تأخير (1000) ؛ #endif // ذات صلة فقط بالإصدار "الكامل" - نهاية قسم الكود) حلقة فارغة () (إذا (Serial.available ()) (// إذا كان هناك "بارود في القوارير" من منفذ COM Serial.readBytes (b ، 4) ؛ // اقرأ كل 4 بايت (لا نتوقع أي شيء آخر) t1 = ب ؛ t2 = (t1<<24); //поместить значение байта в 4-байтную переменную и передвинуть его на 3 байта влево t1=b; t2+=(t1<<16); //поместить значение байта в 4-байтную переменную и передвинуть его на 2 байта влево t1=b; t2+=(t1<<8); //поместить значение байта в 4-байтную переменную и передвинуть его на 1 байт влево t2+=b; //поместить значение байта в 4-байтную переменную clock.setDateTime(t2); //установить полученное время на DS3231 #if (fullVersion) //актуально только для "полной" версии - начало участка кода lcd.clear(); lcd.setCursor(0,0); lcd.print("Done:) : :"); while (true){ //начало бесконечного цикла по отображению свежеустановленных времени и даты dat1 = clock.getDateTime(); if (dat1.day != day){ day = dat1.day; lcd.setCursor(0,1); if (dat1.day < 10) lcd.print("0"); lcd.print(day); lcd.print("-"); switch (dat1.month){ //выбираем буквенное соответствие месяца по цифре case 1:{ lcd.print("Jan"); break; } case 2:{ lcd.print("Feb"); break; } case 3:{ lcd.print("Mar"); break; } case 4:{ lcd.print("Apr"); break; } case 5:{ lcd.print("May"); break; } case 6:{ lcd.print("Jun"); break; } case 7:{ lcd.print("Jul"); break; } case 8:{ lcd.print("Aug"); break; } case 9:{ lcd.print("Sep"); break; } case 10:{ lcd.print("Oct"); break; } case 11:{ lcd.print("Nov"); break; } case 12:{ lcd.print("Dec"); break; } default:{ lcd.print("???"); break; } }//switch month lcd.print("-"); lcd.print(dat1.year); lcd.print(" "); switch(dat1.dayOfWeek){ //выбираем буквенное соответствие дня недели по цифре case 1:{ lcd.print("Mon"); break; } case 2:{ lcd.print("Tue"); break; } case 3:{ lcd.print("Wed"); break; } case 4:{ lcd.print("Thu"); break; } case 5:{ lcd.print("Fri"); break; } case 6:{ lcd.print("Sat"); break; } case 7:{ lcd.print("Sun"); break; } default:{ lcd.print("???"); break; } }//switch dayOfWeek }//if date changed lcd.setCursor(8,0); if (dat1.hour < 10) lcd.print("0"); lcd.print(dat1.hour); lcd.setCursor(11,0); if (dat1.minute < 10) lcd.print("0"); lcd.print(dat1.minute); lcd.setCursor(14,0); if (dat1.second < 10) lcd.print("0"); lcd.print(dat1.second); delay(995); }//while #else //актуально только для "урезанной" версии - начало участка кода digitalWrite(13, HIGH); delay(3000); digitalWrite(13, LOW); #endif //актуально только для "полной" версии - конец участка кода }//if Serial }//loop


صورتان للإصدار "الكامل" للجهاز النهائي.


وأخيرًا ، مقطع فيديو للجهاز أثناء العمل:

أين يمكنني تنزيل الرسم والبرنامج؟

تنزيل Sketch (Dropbox).
قم بتنزيل البرنامج لنظام التشغيل Windows (Dropbox).

"المميزات والعيوب".

من الصعب صياغة "إيجابيات" و "سلبيات" في هذه الحالة. لذلك يقرر كل فرد لنفسه ما هو خير وما هو شر.

المجموع.

لقد أحببت حقًا كيف تم ضبط الوقت الآن في وحدات! إذا كان من الضروري ضبط الوقت ، فلا يتعين علي أن أتذكر في كل مرة نوع الرسم الذي أحتاجه والتفكير في مدى دقة تعيين الوقت في الوحدة. علاوة على ذلك ، سيكون هناك قريبًا مراجعة للساعات محلية الصنع ، حيث بنيت في طريقة التزامن هذه - لقد أحببت هذه الطريقة كثيرًا. آمل أن يكون بعض القراء في متناول اليد أيضًا.

المشروع مجاني وغير تجاري. لكل شخص الحق في استخدام البيانات الواردة في المراجعة لأي غرض غير تجاري.

الامور جيدة.

أخطط لشراء +48 اضافة الى المفضلة أحب الاستعراض +60 +114

DS3231 عبارة عن ساعة RTC عالية الدقة في الوقت الفعلي تحتوي على مذبذب بلوري مدمج معوض لدرجة الحرارة ، مما ينتج عنه انجراف يبلغ ± دقيقتين فقط في السنة. بالإضافة إلى ذلك ، يتم تنفيذ وظيفة المنبه ، وهناك أيضًا خرج للمقاطعة. يمكن شراء الساعة كوحدة جاهزة للاردوينو مع عناصر ربط وحجرة بطارية.

طلبت الوحدة هنا. الرسم البياني موضح بالصورة ادناه:


تستخدم الشريحة على نطاق واسع. يتم دعم معدلات البيانات القياسية (100 كيلو هرتز) والمرتفعة (400 كيلو هرتز). عنوان الشريحة (7 بتات) على ناقل I2C هو 1101000. بالإضافة إلى ذلك ، تحتوي الوحدة النمطية على ذاكرة I2C (24C32) ، غير مبينة في الرسم التخطيطي.

أوضاع الطاقة

يمكن أن يكون جهد إمداد الدائرة المصغرة في حدود 2.3 ... 5.5 فولت ، وهناك نوعان من خطوط الطاقة ، لمصدر خارجي (خط Vcc) ، وكذلك للبطارية (Vbat). يتم مراقبة جهد المصدر الخارجي باستمرار ، عندما ينخفض ​​إلى ما دون عتبة Vpf = 2.5V ، فإنه يتحول إلى خط البطارية. يوضح الجدول التالي شروط التبديل بين خطوط الكهرباء:

يتم الحفاظ على دقة الساعة من خلال مراقبة درجة الحرارة المحيطة. تبدأ الدائرة المصغرة إجراءً داخليًا لضبط تردد مولد الساعة ، ويتم تحديد مقدار الضبط من خلال رسم بياني خاص لاعتماد التردد على درجة الحرارة. يبدأ الإجراء بعد التشغيل ثم يتم تشغيله كل 64 ثانية.

من أجل الحفاظ على الشحن ، عند توصيل البطارية (يتم تطبيق الجهد على خط Vbat) ، لا يبدأ مولد الساعة حتى يتجاوز الجهد على خط Vcc عتبة Vpf ، أو يتم إرسال عنوان الشريحة الصحيح عبر واجهة I2C . وقت بدء مولد الساعة أقل من ثانية واحدة. بعد ثانيتين تقريبًا من تطبيق الطاقة (Vcc) ، أو تلقي عنوان عبر واجهة I2C ، يبدأ إجراء تصحيح التردد. بمجرد بدء تشغيل مولد الساعة ، يستمر في العمل طالما كان Vcc أو Vbat موجودًا. عند التشغيل لأول مرة ، تتم إعادة تعيين سجلات التاريخ والوقت ولديها القيم التالية 01/01/00 - 01 - 00/00/00 (يوم / شهر / سنة / - يوم من الأسبوع - ساعة / دقيقة / ثانية ).

الاستهلاك الحالي عند تشغيله ببطارية 3.63 فولت هو 3 ميكرو أمبير ، في حالة عدم نقل البيانات عبر واجهة I2C. يمكن أن يصل الحد الأقصى للاستهلاك الحالي إلى 300uA عند استخدام مصدر طاقة خارجي 5.5 فولت ومعدل باود I2C مرتفع.

وظيفة إعادة الضبط الخارجية

يمكن استخدام خط RST لإعادة الضبط الخارجي ولديه أيضًا وظيفة إنذار الجهد المنخفض. يتم سحب الخط عالياً من خلال المقاوم الداخلي ، ولا يلزم سحب خارجي. لاستخدام وظيفة إعادة الضبط الخارجية ، يمكن توصيل زر بين خط RST والسلك المشترك ؛ للدائرة المصغرة حماية ضد ارتداد التلامس. يتم تنشيط وظيفة التنبيه عندما ينخفض ​​جهد الإمداد Vcc إلى ما دون قيمة العتبة Vpf ، بينما ينخفض ​​خط RST.

وصف السجلات DS3231

يعرض الجدول أدناه قائمة بسجلات الساعة في الوقت الفعلي:

عنواند 7د 6د 5د 4د 3د 2D1د 0وظيفةحدود
0x000 10 ثوانيثوانيثواني00-59
0x010 10 دقائقدقائقدقائق00-59
0x020 12/24 صباحا مساءا10 ساعاتساعةيشاهد1-12 + صباحًا / مساءً أو 00-23
10 ساعات
0x030 0 0 0 0 يوميوم الأسبوع1-7
0x040 0 رقم 10رقمتاريخ01-31
0x05قرن0 0 10 شهورشهرشهور / قرن01-12 + القرن
0x0610 سنواتسنةسنين00-99
0x07A1M110 ثوانيثوانيالثواني ، التنبيه الأول00-59
0x08A1M210 دقائقدقائقالدقائق ، التنبيه الأول00-59
0x09A1M312/24 صباحا مساءا10 ساعاتساعةالساعة ، التنبيه الأول1-12 + صباحًا / مساءً أو 00-23
10 ساعات
0x0AA1M4DY / DTرقم 10يوميوم الأسبوع ، التنبيه الأول1-7
رقمالتاريخ ، التنبيه الأول01-31
0x0BA2M210 دقائقدقائقالدقائق ، التنبيه الثاني00-59
0x0CA2M312/24 صباحا مساءا10 ساعاتساعةالساعة ، المنبه الثاني1-12 + صباحًا / مساءً أو 00-23
10 ساعات
0x0DA2M4DY / DTرقم 10يوميوم الأسبوع ، التنبيه الثاني1-7
رقمالتاريخ ، التنبيه الثاني01-31
0x0EEOSCBBSQWكونفRS2RS1INTCNA2IEA1IEتسجيل الإعدادات (التحكم)
0x0FOSF0 0 0 EN32 كيلو هرتزBSYA2FA1Fسجل الحالة (الحالة)
0x10لافتةبياناتبياناتبياناتبياناتبياناتبياناتبياناتشيخوخة سجل الإزاحة
0x11لافتةبياناتبياناتبياناتبياناتبياناتبياناتبياناتتسجيل درجة الحرارة بايت عالية
0x12بياناتبيانات0 0 0 0 0 0 تسجيل درجة الحرارة بايت منخفض

يتم تخزين معلومات الوقت بتنسيق عشري ثنائي ، أي أن كل رقم من الرقم العشري (من 0 إلى 9) يتم تمثيله بمجموعة من 4 بتات. في حالة البايت الواحد ، فإن العدد المنخفض للبايت يحسب الآحاد ، والعشرات العالية ، وما إلى ذلك. يتم حساب الوقت في السجلات ذات العناوين 0x00-0x06 ، لحساب الساعات ، يمكنك تحديد وضع 12 ساعة أو 24 ساعة. يؤدي تعيين البت السادس من سجل الساعة (العنوان 0x02) إلى تعيين وضع 12 ساعة ، حيث تشير البتة الخامسة إلى الوقت من اليوم ، والقيمة 1 تتوافق مع الوقت بعد الظهر (PM) ، والقيمة 0 تقابل الظهر ( أكون). تتوافق القيمة الصفرية للبت السادس مع وضع 24 ساعة ، وهنا يتم تضمين البتة الخامسة في حساب الساعات (القيم 20-23).

يزداد يوم التسجيل في الأسبوع عند منتصف الليل ، بدءًا من 1 إلى 7 ، ويحتوي سجل الشهر (العنوان 0x05) على القرن بت (بت 7) ، والذي يتم تبديله عندما يتدفق سجل عدد السنوات (العنوان 0x06) ، من 99 إلى 00 .

تحتوي شريحة DS3231 على إنذارين ، تم تكوين الإنذار الأول باستخدام سجلات مع العناوين 0x07-0x0A ، والإنذار الثاني مع السجلات 0x0B-0x0D. يمكن للبتين A1Mx و A2Mx ضبط أوضاع مختلفة للإنذارات ، وضبط البت يستبعد السجل المقابل من عملية المقارنة. تعرض الجداول أدناه مجموعات البت لأوضاع التنبيه المختلفة:

مجموعات البت غير المدرجة في الجداول تؤدي إلى التشغيل غير الصحيح لساعات المنبه. إذا كان بت DY / DT واضحًا ، فسيتم مراقبة التنبيه لمطابقة التاريخ (يوم من الشهر) ، عند تعيين بت DY / DT ، يتم التحقق من تطابق يوم الأسبوع.

يتم تكوين معظم الوظائف في سجل التحكم. يتحكم بت EOSC في بدء مولد الساعة ، مما يؤدي إلى مسح البت لبدء تشغيل المولد. ضبط البت يوقف المولد ، لوضع البطارية فقط (Vbat). عند تشغيله بواسطة مصدر خارجي (Vcc) ، يعمل المذبذب دائمًا بغض النظر عن حالة بت EOSC. بعد التمكين ، القيمة الافتراضية للبت هي 0.

يتيح ضبط بت BBSQW تشغيل خرج INT / SQW (الطرف 3) في وضع البطارية عندما لا يتم توفير طاقة خارجية. عندما تكون البتة صفرية ، ينتقل خرج INT / SQW إلى الحالة الثالثة (معطل) إذا انخفض جهد المصدر الخارجي Vcc إلى ما دون عتبة Vpf. بعد التشغيل ، القيمة الافتراضية للبت هي 0.

تكون بت CONV مسؤولة عن قياس درجة الحرارة القسرية ، حيث يبدأ تعيين البت في عملية التحويل ، والتي يتم خلالها أيضًا ضبط تردد الساعة ، وتكون نتيجة القياس في السجلات ذات العناوين 0x11 ، 0x12. البدء ممكن فقط إذا اكتمل التحويل السابق ، قبل البدء من الضروري فحص العلم المشغول BSY. لا يؤثر التحويل القسري لدرجة الحرارة على دورة ضبط التردد الداخلية البالغة 64 ثانية. لا يؤثر تعيين بت CONV على علامة BSY لمدة 2 مللي ثانية. تتم إعادة ضبط بتات CONV و BSY تلقائيًا بعد اكتمال التحويل.

ضبط بت RS2 ، RS1 تردد النبضات المستطيلة (تعرج) عند خرج INT / SQW. بشكل افتراضي ، عند التمكين ، يتم تعيين البتات على 1. يوضح الجدول أدناه المجموعات الممكنة من البتات:

يتحكم بت INTCN في إخراج INT / SQW. إذا تم إعادة تعيين البت ، تظهر نبضات مستطيلة (تعرج) عند الخرج ، ويتم ضبط ترددها بواسطة بت RS2 ، RS1. عند تعيين بت INTCN ، يتم استخدام الإخراج لتوليد مقاطعات الإنذار. بشكل افتراضي ، تكون قيمة البت هي 1. نوع الإخراج INT / SQW هو استنزاف مفتوح ، لذلك يلزم السحب من خلال المقاوم إلى مستوى منطقي مرتفع ، والمستوى النشط منخفض.

بتات الضبط A1IE ، A2IE تتيح مقاطعة الإنذار الأولى والثانية ، على التوالي. بتات إعادة التعيين ، وتعطيل المقاطعات. القيمة الافتراضية هي 0.

يحتوي سجل الحالة على أعلام الأحداث ويتحكم في إخراج 32 كيلو هرتز. تعكس علامة OSF حالة مولد الساعة ، وتعني القيمة 1 أنه تم إيقاف المولد ، ويمكن أن يحدث هذا الحدث في الحالات التالية:

  • لأول مرة بعد التشغيل
  • لا تكفي البطارية أو الجهد الخارجي لتشغيل مولد الساعة
  • يتم إيقاف تشغيل المولد عن طريق ضبط بت EOSC في وضع البطارية
  • العوامل الخارجية التي تؤثر على المذبذب البلوري (الضوضاء ، التسرب ، إلخ)

بمجرد التعيين ، لا تتغير قيمة البت ، يجب إعادة تعيين البت يدويًا.

يتيح ضبط بت EN32 كيلو هرتز توليد نبضات مستطيلة (تعرج) عند خرج 32 كيلو هرتز (دبوس 1) ، ويتم تثبيت تردد النبض عند 32.768 كيلو هرتز. تؤدي إعادة تعيين البت إلى تعطيل هذه الميزة وتعيين الإخراج إلى الحالة الثالثة (مقاومة إدخال عالية). القيمة الافتراضية للبت هي 1 ، بعد تطبيق الطاقة ، تظهر النبضات عند الخرج. نوع الإخراج 32 كيلو هرتز هو استنزاف مفتوح ، لذلك يلزم السحب.

يتم تعيين العلم المشغول BSY أثناء عملية تحويل درجة الحرارة وضبط الساعة. يتم إعادة تعيين العلم عند اكتمال التحويل.

يتم تعيين إشارات التنبيه A1F و A2F عندما تتطابق قيم سجلات عدد الوقت مع سجلات المنبه. إذا قاطع الإنذار A1IE ، تم تمكين A2IE ، وتم تعيين خرج المقاطعة (تم تعيين بت INTCN) ، فستظهر إشارة المقاطعة عند خرج INT / SQW (الانتقال من المستوى المنطقي العالي إلى المستوى المنخفض). يجب إعادة تعيين العلامات يدويًا عن طريق كتابة قيمة 0.

تم تصميم سجل إزاحة الشيخوخة لضبط تردد مولد الساعة. تتم إضافة قيمة التسجيل إلى تردد المذبذب أثناء إجراء الضبط الداخلي ، إذا تم الكشف عن تغير في درجة الحرارة ، وأيضًا عندما يتم تشغيل تحويل درجة الحرارة بواسطة بت CONV. يتم توقيع قيمة الإزاحة ، أي القيم الموجبة (1-127) تقلل التردد ، والقيم السالبة (128-255) تزيدها. بالنسبة لنفس الإزاحة ، سيكون تغيير التردد مختلفًا حسب درجة الحرارة. عند + 25 درجة مئوية ، سيكون تغيير التردد 0.1 جزء في المليون / LSB.

يتم تخزين قيمة درجة الحرارة الحالية في سجلات مع العناوين 0x11 و 0x12 ، البايت المرتفع والمنخفض ، على التوالي ، يتم تحديث قيمة درجة الحرارة في السجلات بشكل دوري. تم تعيين المحاذاة اليسرى ، والدقة هي 10 بت أو 0.25 درجة مئوية / LSB ، أي أن البايت العالي يحتوي على الجزء الصحيح من درجة الحرارة ، والبتات السادسة والسابعة في السجلات السفلية تشكل الجزء الكسري. في البايت العالي ، تشير البتة السابعة إلى علامة درجة الحرارة ، على سبيل المثال ، تتوافق القيمة 00011011 01 مع درجة حرارة +27.25 درجة مئوية ، والقيمة 11111110 10 تقابل -2.5 درجة مئوية.

عند قراءة سجلات حساب الوقت ، يوصى باستخدام مخزن مؤقت إضافي ، أي لقراءة عدة سجلات في وقت واحد ، وليس بشكل منفصل ، حيث أنه بين عمليات القراءة المنفصلة ، يمكن أن تغير سجلات الوقت قيمتها. يوصى بهذه القاعدة أيضًا عند كتابة بيانات جديدة في سجلات الحساب. تؤدي كتابة قيمة جديدة إلى سجل الثواني إلى إيقاف الساعة مؤقتًا لمدة ثانية واحدة ، ويجب الكتابة فوق باقي السجلات خلال هذا الوقت.

توصيل DS3231 بالمتحكم الدقيق

لقد قمت بتوصيل الساعة بالميكروكونترولر PIC16F628A المستخدم. يظهر مخطط الاتصال أدناه:


بعد تطبيق الطاقة ، يتم عرض علامات الشرطة (- - - - - -) على المؤشرات ، ثم يتم تهيئة الساعة ، تظهر قيمة الوقت على المؤشرات مع تأخير لمدة ثانية واحدة ، وهو أمر مطلوب لبدء مولد الساعة. تعرض المؤشرات قيمة الساعات والدقائق والثواني ، مفصولة بعلامة عشرية ، تنسيق الوقت هو 24 ساعة. باستخدام زر "المؤشر" SB1 ، يمكنك تغيير تنسيق العرض ، حيث ستعرض المؤشرات درجة الحرارة ، بالإضافة إلى قيمة الساعات والدقائق ، مفصولة بنقطة عشرية ، والتي تومض بتردد 2 هرتز. يتم عرض درجة الحرارة بدون جزء كسري ، فقط البايت العالي لتخزين درجة الحرارة على العنوان 0x11 تتم قراءته في البرنامج.

تتم قراءة قيمة الوقت من الساعة عن طريق الانقطاع على خط SQW / INT ، والذي يتم التحكم فيه بواسطة إشارة الإنذار الأولى ، أثناء تهيئة الساعة ، يتم ضبط المنبه على كل ثانية. يعمل مصباح HL1 LED كمؤشر ويومض على إشارة مقاطعة كل ثانية. يضيء مصباح HL2 LED في حالة حدوث خطأ في نقل البيانات عبر واجهة I2C.

بالإضافة إلى البرنامج إضافة القدرة على ضبط الساعة مع أزرار SB2 "Setting" ، SB3 "التثبيت". يتم الدخول إلى وضع الإعداد بالضغط على زر SB2 ، وتظهر المؤشرات 00 ساعة ، وشرطات بدلاً من الدقائق والثواني (00 - - - -). يضبط زر SB3 قيمة الساعة (زيادة مع كل ضغطة) ، ثم بالضغط على زر SB2 ، يمكنك التبديل إلى دقائق التحرير ، بدلاً من شرطة ، سيتم عرض 00 دقيقة. يقوم الزر SB3 أيضًا بتعيين القيمة المطلوبة ، وهكذا. بعد تحرير الثواني والضغط على زر SB2 ، يتم الكتابة فوق الوقت بالساعات ، ويتم عرض الوقت المحدث على المؤشرات.

الكود غير المكتمل للبرنامج موضح أدناه (يمكن تنزيل النسخة الكاملة في نهاية المقال):

؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛ #يشمل LIST p = 16F628A __CONFIG H "3F10" ؛ خطأ تكوين MCU ، المستوى -302 ؛ لا تقم بإخراج رسائل خطأ 302 في قائمة Sec equ 0020h ؛ سجلات العد الإضافية Sec1 equ 0021h ؛ sec2 يساوي 0022h ؛ scetbit equ 0024h ؛ سجل حساب البتات الإضافي يساوي 0025h ؛ السجل الإضافي لاستقبال / إرسال البايتات عبر spi ، i2c temp equ 0026h ؛ سجل درجة الحرارة perem_1 يساوي 0027h ؛ سجل إضافي لتحويل BCD النتيجة تساوي 0028h ؛ السجل المساعد BCD dat_ind equ 0029h ؛ سجل البيانات لإرسال spi adr_ind equ 002Ah ؛ سجل العنوان للإرسال spi الثاني يساوي 002Bh ؛ تسجيل الثواني لضبط الوقت دقيقة يساوي 002Ch ؛ تسجيل الدقائق لضبط الوقت ساعة يساوي 002Dh ؛ تسجيل ساعات التخزين لإعدادات الوقت adr_i2c equ 002Eh ؛ i2c تسجيلات روتينية لنقل البيانات tmp_i2c equ 002Fh slave_adr equ 0030h data_i2c equ 0031h flag equ 007Fh؛ تسجيل العلم #DEFINE int PORTB، 0؛ خط المقاطعة INT / SQW DS3231 #DEFINE sda line PORTB، 1؛ DS3231 connection #DEFINE SCL PORTB، 1؛ DS3231 connection #DEFINE SCL PORTB، 2؛ خط SCL لاتصال DS3231 #DEFINE sda_io TRISB، 1؛ SDA line direction #DEFINE scl_io TRISB، 2؛ SCL line direction #DEFINE datai PORTB، 5؛ MAX7219 driver data input line #DEFINE cs PORTB، 6؛ driver select line MAX7219 #DEFINE clk PORTB ، 7 ؛ خط تسجيل الوقت لبرنامج التشغيل MAX7219 #DEFINE led PORTB ، 4 ؛ خطأ i2c LED #DEFINE led_sec PORTB ، 3 ؛ مؤشر الساعة LED 1Hz #DEF INE regim PORTA ، 2 ؛ زر الإشارة - تغيير وضع العرض #DEFINE nast PORTA ، 3 ؛ زر الإعداد - الدخول إلى وضع ضبط الوقت #DEFINE ust PORTA ، 4 ؛ زر الإعداد - ضبط قيمة الساعة ؛؛؛؛؛؛؛؛ ؛؛ ؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ org 0000h؛ بدء تنفيذ البرنامج من العنوان 0000h انتقل إلى البداية؛ انتقل إلى التسمية Start ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛ البرنامج الرئيسي Start movlw b "00000000" ؛ تعيين المنفذ A الإخراج المزالج movwf PORTA ؛ movlw b "01000000" ؛ ضبط قيم مزلاج إخراج المنفذ B movwf PORTB ؛ movlw b "00000111" ؛ تعطيل المقارنات movwf CMCON ؛ bsf STATUS ، RP0 ؛ حدد البنك 1 movlw b "00000111" ؛ تكوين خطوط الإدخال / الإخراج للمنفذ B movwf TRISB ؛ RB0-RB2 - المدخلات ، وغيرها - الإخراج movlw b "11111111" ؛ تكوين خطوط الإدخال / الإخراج للمنفذ A movwf TRISA ؛ جميع أسطر الإدخال bcf STATUS ، RP0 ؛ حدد علامة bank 0 clrf ؛ إعادة تعيين علامات تسجيل استدعاء init_lcd ؛ استدعاء روتين فرعي لتهيئة برنامج التشغيل (MAX7219) viv_not ؛ عرض رموز الشرطة "------" ؛؛ ؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛ movlw b "11010000" ؛ عنوان الجهاز (DS3231) movwf slave_adr ؛ اكتب 4 بايت لتلقي / إرسال السجلات عبر i2c ؛ ضبط المنبه الأول هنا ، وإصدار صوت تنبيه كل ثانية movlw data_i2c ؛ إعداد أول سجل استقبال / إرسال عبر i2c movwf FSR ؛ movlw b "10000000" ؛ بيانات لثواني التنبيه الأول تسجل movwf INDF ؛ بما في ذلك FSR ، F ؛ movlw b "10000000" ؛ بيانات تسجيل الدقائق من أول إنذار movwf INDF ؛ بما في ذلك FSR ، F ؛ movlw b "10000000" ؛ بيانات لتسجيل الساعة من أول جهاز إنذار movwf INDF ؛ بما في ذلك FSR ، F ؛ movlw b "10000000" ؛ بيانات سجل التاريخ / أيام الأسبوع من أول إنذار movwf INDF ؛ movlw. 4 ؛ نقل 4 بايت عبر i2c movwf tmp_i2c ؛ movlw 0x07 ؛ اضبط عنوان سجل الثواني لجهاز الإنذار الأول movwf adr_i2c ؛ استدعاء write_i2c ؛ استدعاء روتين فرعي للكتابة عبر استدعاء واجهة i2c err_prov ؛ تحقق من أخطاء الكتابة / القراءة I2C movlw .1 ؛ نقل البايت الأول عبر i2c movwf tmp_i2c ؛ movlw 0x0E ؛ تعيين عنوان تسجيل التحكم في movwf adr_i2c ؛ movlw data_i2c ؛ قم بتعيين أول سجل استقبال / إرسال i2c movwf FSR ؛ movlw b "00000101" ؛ بدء الساعة ، تعطيل دبوس INT / SQW لـ movwf INDF ؛ وضع البطارية ، معدل نبض INT / SQW 1 هرتز ، مكالمة ساعة المنبه الأولى write_i2c ؛ استدعاء روتين الكتابة الفرعي عبر استدعاء واجهة i2c err_prov ؛ تحقق من كتابة / قراءة I2C أخطاء met_2 movlw .1 ؛ نقل البايت الأول عبر i2c movwf tmp_i2c ؛ movlw 0x0F ؛ تعيين عنوان سجل الحالة movwf adr_i2c ؛ movlw data_i2c ؛ قم بتعيين أول سجل استقبال / إرسال i2c movwf FSR ؛ movlw b "00000000" ؛ إعادة تعيين بت OSF ، تعطيل توليد النبضات عند إخراج EN32 كيلو هرتز ، movwf INDF ؛ إعادة تعيين إشارات مقاطعة التنبيه A2F ، A1F call write_i2c ؛ استدعاء روتين فرعي للكتابة عبر واجهة i2c call err_prov ؛ تحقق من أخطاء الكتابة / القراءة I2C met_1 btfsc int ؛ خط الإنذار للمقاطعة الانتقال إلى met_3 ؛ bsf led_sec ؛ قم بتشغيل مؤشر الساعة LED goto met_4 ؛ met_3 bcf led_sec ؛ إيقاف تشغيل مؤشر الساعة LED btfsc nast ؛ استقصاء زر إعداد الساعة goto met_5 ؛ استدعاء nast_time ؛ ضبط وقت المكالمة روتين فرعي goto met_2 ؛ نظام met_5 btfsc ؛ زر وضع عرض الاستطلاع الانتقال إلى met_1 ؛ met_6 call pause_knp؛ btfssregim. انتقل إلى met_6 ؛ علم btfss ، 2 ؛ قم بتغيير قيمة علامة وضع العرض goto met_7 ؛ علم bcf ، 2 ؛ إعادة تعيين إشارة الإشارة ، وضع عرض الساعة goto met_1 ؛ علم met_7 bsf ، 2 ؛ تعيين علامة الإشارة ودرجة الحرارة ووضع عرض الساعة goto met_1 ؛ met_4 movlw .1 ؛ نقل البايت الأول عبر i2c movwf tmp_i2c ؛ movlw 0x11 ؛ اضبط عنوان سجل درجة الحرارة العليا movwf adr_i2c ؛ استدعاء read_i2c ؛ استدعاء I2C قراءة المكالمة الروتينية err_prov ؛ تحقق من أخطاء الكتابة / القراءة I2C movf INDF ، W ؛ نسخ قيمة درجة الحرارة إلى سجل مؤقت movwf temp rd_time movlw .3 ؛ نقل 3 بايت عبر i2c movwf tmp_i2c ؛ movlw 0x00 ؛ تعيين عنوان سجل الثواني movwf adr_i2c ؛ استدعاء read_i2c ؛ استدعاء I2C قراءة مكالمة فرعية err_prov ؛ تحقق من أخطاء كتابة / قراءة I2C علامة btfsc ، 2 ؛ علامة وضع عرض الاقتراع goto met_8 ؛ استدعاء vivod ؛ اتصل بالروتين الفرعي لعرض قيمة الساعات على الشاشة الرقمية goto met_2 ؛ met_8 call vivod_temp؛ استدعاء الإجراء الفرعي لعرض درجة الحرارة والساعة على الشاشة الرقمية goto met_2 ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛ ؛؛؛؛؛؛؛؛؛؛؛؛؛

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

#يشمل

CONFIG H "3F10" ؛ تكوين وحدة التحكم الدقيقة

errorlevel -302 ؛ لا تعرض 302 رسالة خطأ في القائمة

sec equ 0020h ؛ سجلات العد الإضافية

sec1 يساوي 0021h ؛

sec2 يساوي 0022h ؛

scetbit يساوي 0024h ؛ سجل عدد البتات الإضافي

perem يساوي 0025h ؛ السجل المساعد لإرسال / استقبال بايت عبر spi ، i2c

temp equ 0026h ؛ سجل درجة الحرارة

perem_1 يساوي 0027h ؛ سجل مساعد BCD

النتيجة تساوي 0028h ؛ السجل المساعد BCD

dat_ind equ 0029h ؛ سجل البيانات لإرسال spi

adr_ind equ 002Ah؛ سجل عنوان spi

ثانية يساوي 002Bh ؛ تسجيل الثواني لضبط الوقت

دقيقة يساوي 002Ch ؛ تسجيل الدقائق لضبط الوقت

ساعة يساوي 002 درهم ؛ تسجيل ساعة لضبط الوقت

adr_i2c equ 002Eh ؛ السجلات الروتينية لنقل واجهة i2c

tmp_i2c يساوي 002Fh

slave_adr equ 0030h

data_i2c يساوي 0031h

العلم يساوي 007Fh ؛ سجل العلم

#DEFINE int PORTB، 0؛ خط المقاطعة INT / SQW DS3231

#DEFINE sda PORTB ، 1 ؛ خط SDA لتوصيل DS3231

#DEFINE SCL PORTB ، 2 ؛ خط SCL لتوصيل DS3231

#DEFINE datai PORTB ، 5 ؛ خط إدخال بيانات برنامج التشغيل MAX7219

#DEFINE cs PORTB، 6 ؛ خط اختيار برنامج التشغيل MAX7219

#DEFINE clk PORTB ، 7 ؛ خط ساعة برنامج التشغيل MAX7219

#DEFINE led PORTB ، 4 ؛ خطأ i2c LED

#DEFINE led_sec PORTB ، 3 ؛ مؤشر الساعة 1 هرتز

#DEFINE regim PORTA ، 2 ؛ زر الإشارة - تغيير وضع العرض

#DEFINE nast PORTA ، 3 ؛ زر الإعداد - أدخل وضع إعداد الوقت

#DEFINE ust PORTA ، 4 ؛ زر الإعداد - ضبط قيمة الساعة

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

org 0000h ؛ بدء تنفيذ البرنامج على العنوان 0000h

انتقل إلى البداية ؛ انتقل إلى التسمية "ابدأ"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

؛البرنامج الرئيسي

ابدأ movlw b "00000000" ؛ اضبط قيم قفل خرج المنفذ A

movlw b "01000000" ؛ ضبط قيم مزلاج خرج المنفذ B

movlw b "00000111" ؛ قم بإيقاف تشغيل المقارنة

bsf STATUS ، RP0 ؛ حدد البنك الأول

movlw b "00000111" ؛ تعيين خطوط الإدخال / الإخراج للمنفذ B.

movwf TRISB ؛ RB0-RB2 - المدخلات والمخرجات الأخرى

movlw b "11111111" ؛ تكوين خطوط الإدخال / الإخراج للمنفذ A

movwf TRISA ؛ جميع خطوط الإدخال

bcf STATUS، RP0 ؛ حدد البنك 0

علم clrf ؛ إعادة تعيين سجل العلم

استدعاء init_lcd ؛ إجراء تهيئة برنامج تشغيل الاتصال (MAX7219)

استدعاء viv_not ؛ عرض أحرف الشرطة "------"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

movlw b "11010000" ؛ عنوان الجهاز (DS3231)

؛ اكتب 4 بايت لتلقي / إرسال السجلات عبر i2c

movlw data_i2c ؛ قم بتعيين أول سجل استقبال / إرسال i2c

movlw b "10000000" ؛ بيانات تسجيل ثواني الإنذار الأول

movlw b "10000000" ؛ بيانات لتسجيل دقيقة الإنذار الأول

movlw b "10000000" ؛ بيانات لسجل المنبه الأول

movlw b "10000000" ؛ بيانات تسجيل التاريخ / أيام الأسبوع للإنذار الأول

movlw .4 ؛ نقل 4 بايت عبر i2c

movlw 0x07 ؛ اضبط عنوان سجل الثواني للإنذار الأول

". دعنا نتعرف على وحدة ساعة الوقت الحقيقي DS3231. تحتوي المقالة على إرشادات الفيديو وقوائم البرامج والغرض وطرق توصيل الوحدات من عائلة DS إلى Arduino.

وحدة ساعة الوقت الحقيقي DS3231

ما هي وحدة ساعة الوقت الحقيقي DS3231؟

وحدة ساعة الوقت الحقيقي- هذه دائرة إلكترونية مصممة لتسجيل بيانات الكرونومتر (الوقت الحالي ، التاريخ ، يوم الأسبوع ، إلخ) ، وهي عبارة عن نظام من مصدر طاقة مستقل وجهاز محاسبة.

وحدة DS3231في الأساس ، إنها مجرد ساعة عادية. تحتوي لوحات Arduino بالفعل على ساعة مدمجة ميليومع ذلك ، فإنه يعمل فقط عندما يتم تطبيق الطاقة على اللوحة. سيؤدي تعطيل وإعادة تمكين Arduino إلى إعادة ضبط وقت الميلي إلى الصفر. ويحتوي DS3231 على بطارية على متنها ، والتي ، حتى عند إيقاف تشغيل لوحة Arduino ، تستمر في "تشغيل" الوحدة ، مما يسمح لها بقياس الوقت.

يمكن استخدام الوحدة كساعة أو ساعة منبه على أساس لوحات Arduino. أو كتنبيه لأنظمة مختلفة ، على سبيل المثال ، في المنزل الذكي.

مواصفات DS3231:

  • تحسب الوحدة الساعات والدقائق والثواني والتواريخ والأشهر والسنوات (تؤخذ السنوات الكبيسة في الاعتبار حتى 2100) ؛
  • للاتصال بأجهزة مختلفة ، يتم توصيل الساعة عبر واجهة I2C.

32 ك- الإخراج مصمم لتزويد الطاقة الخارجية> 12 فولت.

SQW- خرج إشارة الموجة المربعة القابلة للبرمجة.

SCL- من خلال هذا الدبوس ، يتم تبادل البيانات مع الساعة عبر واجهة I2C.

SDA- تنتقل البيانات من الساعة عبر هذا الدبوس.

VCC- مزود طاقة على مدار الساعة في الوقت الحقيقي ، يحتاج إلى 5 فولت. إذا لم يتم تطبيق أي جهد على هذا الدبوس ، تنتقل الساعة إلى وضع السكون.

GND- أرض.

DS3231 مخطط الأسلاك في الوقت الحقيقي على مدار الساعة وبرنامج بسيط

دبابيس SDA و SCL على لوحات Arduino مختلفة:

SDA SCL
UNO A4 A5
ميني A4 A5
نانو A4 A5
ميجا 2560 20 21
ليوناردو 2 3

دعنا نربط وحدة الساعة في الوقت الحقيقي بـ Arduino UNO. SDA - دبوس A4 ، SCL - دبوس A5.

البرنامج التالي مناسب للنموذج للعمل (يمكنك ببساطة نسخ البرنامج إلى Arduino IDE):

#يشمل

الإعداد باطل()(
تأخير (300) ؛
Serial.begin (9600) ؛
time.begin () ؛
}
حلقة فارغة()(



}
}

هذا الرسم مجرد عد تنازلي.

بادئ ذي بدء ، في النص ، اتصال المكتبة arduino_RTC.h.

في نفس المكان ، حدد الاسم الدقيق للوحدة الخاصة بك للعمل الصحيح معها.

نتيجة لذلك ، نحصل على وقت الإخراج من وحدة DS3231 إلى شاشة المنفذ. يعرض الساعات والدقائق والثواني.

في الرسم التالي ، سنضيف دالة ضبط الوقت، مما يسمح لك بضبط وقت العد التنازلي الأولي.

#يشمل
وقت iarduino_RTC (RTC_DS3231) ؛
الإعداد باطل()(
تأخير (300) ؛
Serial.begin (9600) ؛
time.begin () ؛
time.settime (0،0،18،24،04،17،1) ؛ // 0 ثانية ، 0 دقيقة ، 18 ساعة ، 24 أبريل 2017 ، الإثنين
}
حلقة فارغة()(
إذا (مللي ()٪ 1000 == 0) (// إذا مرت ثانية واحدة
Serial.println (time.gettime ("d-m-Y، H: i: s، D")) ؛ // وقت الإخراج
تأخير (1) ؛ // توقف لمدة 1 مللي ثانية حتى لا يتم عرض الوقت عدة مرات في 1 مللي ثانية
}
}

في المثال ، يبدأ الوقت بالعد من 0 ثانية ، 0 دقيقة ، 18 ساعة ، 24 أبريل 2017 ، الإثنين.

مشاركات الدرس:

  1. الدرس الأول: .
  2. الدرس الثاني: .
  3. الدرس الثالث:.
  4. الدرس الرابع:.
  5. الدرس الخامس:.
  6. الدرس السادس:.
  7. الدرس السابع:.
  8. الدرس الثامن:.
  9. الدرس التاسع:

تعد وحدة DS3231 (RTC ، ZS-042) لوحة منخفضة التكلفة مزودة بساعة حقيقية دقيقة للغاية (RTC) ومذبذب بلوري معادل لدرجة الحرارة وبلور. تشتمل الوحدة على بطارية ليثيوم تحافظ على التشغيل دون انقطاع حتى عند إيقاف تشغيل مصدر الطاقة. حسّن المذبذب المدمج دقة الجهاز وجعل من الممكن تقليل عدد المكونات.

المواصفات الفنية

جهد الإمداد: 3.3 فولت و 5 فولت
شريحة الذاكرة: AT24C32 (32 كيلو بايت)
الدقة: ± 0.432 ثانية في اليوم
تردد الكوارتز: 32.768 كيلوهرتز
البروتوكول المدعوم: I2C
الأبعاد: 38 مم × 22 مم × 15 مم

معلومات عامة

تستخدم معظم الدوائر الدقيقة ، مثل DS1307 ، مذبذبًا بلوريًا خارجيًا 32 كيلو هرتز ، ولكن لها عيبًا كبيرًا ، عندما تتغير درجة الحرارة ، يتغير تواتر الكوارتز ، مما يؤدي إلى خطأ في التوقيت. تم إصلاح هذه المشكلة في شريحة DS3231 ، حيث يتم تثبيت مذبذب بلوري ومستشعر درجة الحرارة ، والذي يعوض عن تغيرات درجة الحرارة ، بحيث يظل الوقت دقيقًا (إذا لزم الأمر ، يمكن قراءة بيانات درجة الحرارة). أيضًا ، تدعم شريحة DS3231 معلومات الثواني والدقائق والساعات وأيام الأسبوع والتاريخ والشهر والسنة ، بالإضافة إلى مراقبة عدد الأيام في الشهر وإجراء تعديل للسنة الكبيسة. يدعم تشغيل الساعة بصيغتين 24 و 12 ، كما يمكن برمجة ساعتين منبه. تعمل الوحدة على ناقل I2C ثنائي الأسلاك.


الآن قليلاً عن الوحدة نفسها ، فهي مبنية على شريحة DS3231N. يلزم تجميع المقاوم RP1 (4.7 kOhm) لسحب خطوط 32K و SQW و SCL و SDA (بالمناسبة ، إذا كنت تستخدم عدة وحدات مع ناقل I2C ، فأنت بحاجة إلى لحام مقاومات السحب في وحدات أخرى). يلزم التجميع الثاني للمقاومات لسحب خطوط A0 و A1 و A2 ، فهي ضرورية لتغيير عنوان شريحة الذاكرة AT24C32N. يعمل المقاوم R5 والصمام الثنائي D1 على إعادة شحن البطارية ، من حيث المبدأ يمكن لحامهما ، حيث أن بطارية SR2032 التقليدية تدوم لسنوات. تم أيضًا تثبيت شريحة ذاكرة AT24C32N ، وهذا يشبه المكافأة ، وليس من الضروري أن تعمل ساعة RTC DS3231N. يشير المقاوم R1 و Power LED إلى أن الوحدة قيد التشغيل. كما ذكرنا ، تعمل الوحدة على ناقل I2C ، للراحة ، تم إحضار هذه الحافلات إلى موصلين J1 و J2 ، ويمكن رؤية تخصيص جهات الاتصال المتبقية أدناه. الغرض J1
32 كيلو: خرج ، تردد 32 كيلو هرتز
SQW: خروج
SDA: خط البيانات (Serial Dfta)
VCC: "+" وحدة الطاقة
GND: وحدة الطاقة "-" الموعد J2
SCL: خط الساعة (Serial CLock)
SDA: خط البيانات (البيانات التسلسلية)
VCC: "+" وحدة الطاقة
GND: وحدة الطاقة "-"


سأخبرك قليلاً عن الدائرة الدقيقة AT24C32N ، إنها دائرة كهربائية صغيرة بذاكرة 32 كيلو (EEPROM) من الشركة المصنعة Atmel ، مجمعة في حزمة SOIC8 ، تعمل على ناقل I2C ثنائي الأسلاك. عنوان الدائرة المصغرة هو 0x57 ، إذا لزم الأمر ، يمكن تغييره بسهولة باستخدام وصلات العبور A0 و A1 و A2 (وهذا يسمح لك بزيادة عدد الدوائر الدقيقة المتصلة AT24C32 / 64). نظرًا لأن شريحة AT24C32N بها ثلاثة مدخلات عنوان (A0 و A1 و A2) ، والتي يمكن أن تكون في حالتين ، إما سجل "1" أو سجل "0" ، فإن ثمانية عناوين متاحة للرقاقة. من 0x50 إلى 0x57.

توصيل DS3231 بأردوينو

التفاصيل المطلوبة:
اردوينو UNO R3 × 1 قطعة
ساعة في الوقت الحقيقي على DS3231 ، RTC ، SPI ، AT24C32 × 1 جهاز كمبيوتر.
سلك دوبونت ، 2.54 مم ، 20 سم ، F-M (انثى - ذكر) × 1 قطعة.
كابل USB 2.0 A-B × 1

اتصال:
في هذا المثال ، سأستخدم فقط وحدة DS3231 و Arduino UNO R3 ، وسيتم نقل جميع البيانات إلى "منفذ المراقبة". الدائرة ليست معقدة ، فأنت تحتاج فقط إلى أربعة أسلاك ، أولاً نقوم بتوصيل ناقل I2C و SCL بـ A4 (Arduino UNO) و SDA بـ A5 (Arduino UNO) ، ويبقى توصيل الطاقة GND بـ GND و VCC بـ 5 فولت (أنت يمكن أيضًا الكتابة من 3.3 فولت) ، الدائرة مجمعة ، نحتاج الآن إلى إعداد جزء البرنامج.

المكتبة التي تعمل مع DS3231 ليست في Arduino IDE ، تحتاج إلى تنزيل "DS3231" وإضافته إلى Arduino IDE.

ضبط الوقت DS3231
في المرة الأولى التي تقوم فيها بتشغيله ، تحتاج إلى برمجة الوقت ، وفتح المثال من مكتبة DS3231 "ملف" -> "أمثلة" -> "DS3231" -> "Arduino" -> "DS3231_Serial_Easy" ، أو نسخ الكود أقل

/ * تم إجراء الاختبار على Arduino IDE 1.8.0 بتاريخ الاختبار 31/8/2018. */ #يشمل // قم بتوصيل مكتبة Wire DS3231 rtc (SDA ، SCL) ؛ // تهيئة DS3231 إعداد الفراغ () (Serial.begin (115200) ؛ // تعيين اتصال تسلسلي rtc.begin () ؛ // تهيئة rtc // ضبط الوقت rtc.setDOW (الجمعة) ؛ // تعيين يوم من الأسبوع rtc. setTime (16 ، 29 ، 0) ؛ // اضبط الوقت على 16:29:00 (تنسيق 24 ساعة) rtc.setDate (31 ، 8 ، 2018) ؛ // تعيين التاريخ على 31 أغسطس 2018) باطل loop () (Serial. print (rtc.getDOWStr ()) ؛ // أرسل اليوم-الأسبوع Serial.print ("") ؛ Serial.print (rtc.getDateStr ()) ؛ // أرسل التاريخ Serial.print ( "-") ؛ Serial. println (rtc.getTimeStr ()) ؛ // إرسال تأخير الوقت (1000) ؛ // تأخير ثانية واحدة)

تم إجراء الاختبار على Arduino IDE 1.8.0

تاريخ الاختبار 31.08.2018

#يشمل // تضمين مكتبة Wire

DS3231 rtc (SDA ، SCL) ؛ // تهيئة DS3231

الإعداد باطل()

مسلسل. تبدأ (115200) ؛ // إنشاء اتصال تسلسلي

rtc. يبدأ()؛ // تهيئة rtc

// ضبط الوقت

rtc. setDOW (الجمعة) ؛ // تعيين يوم من الأسبوع

rtc. setTime (16 ، 29 ، 0) ؛ // ضبط الوقت على 16:29:00 (تنسيق 24 ساعة)

حلقة فارغة()

مسلسل. طباعة (rtc. getDOWStr ()) ؛ // إرسال يوم-أسبوع

مسلسل. مطبعة("")؛

مسلسل. طباعة (rtc. getDateStr ()) ؛ // إرسال التاريخ

مسلسل. مطبعة("-")؛

مسلسل. println (rtc. getTimeStr ()) ، // أرسل الوقت

تأخير (1000) ؛ // تأخير ثانية واحدة

قم بتحميل الرسم التخطيطي إلى وحدة تحكم Arduino وافتح "منفذ الشاشة"

هذه المراجعة مخصصة لهواة الراديو المبتدئين (هواة اللحام) ، لأولئك المهتمين بالعملية نفسها. يمكنك تقييم مهارتك. شريحة DS3231 عبارة عن ساعة في الوقت الحقيقي (RTC) مع مذبذب بلوري متكامل وتعويض حراري.

هذا ، بالطبع ، لا يلحم راسم الذبذبات. المستوى أدناه. لكن الوظيفة مثيرة للاهتمام.
دعنا نمر بسرعة ، في أي شكل جاء كل شيء.


كانت المحتويات في حقيبتين. أكياس زيبلوك قياسية. كانت هناك حقيبة صغيرة من الأشياء الصغيرة داخل حقيبة كبيرة.


شمل ما يلي:
- كجسم ، لوحان من البلاستيك الشفاف (ملون ومحمي بفيلم من الخدوش).
- الرسوم (جودة عالية جدا).


مصفوفتان.


على الجانب الأمامي محمية بفيلم. كانت الأرجل محمية بالبولي إيثيلين المسامي.


كبل USB بطول متر تقريبًا.


ملقاة كل ما تبقى.


قسمت الى جزئين.
براغي مع صواميل.


وما عليك لحام.


مقبس لبطارية ليثيوم CR1220 نادرة جدًا ، مستشعر موضع الزئبق ، زوج من الترانزستورات ، مكثفات إلكتروليتية ، مثبت AMS1117 (3.3 فولت) ، مكثفات ومقاومات SMD (10 ك) ، 3 أزرار ، موصل USB ، صفارة.
الأهم هو وحدة التحكم STC 15w1k24s وشريحة DS3231 عالية الدقة. كانت معبأة في نفطة صلبة جدا ، من الصعب جدا التجاعيد.


لم يكن هناك مخطط. ومع ذلك ، لم تكن هناك أسئلة ، كل شيء واضح.
لم يتم التوقيع على جميع التفاصيل الموجودة على السبورة فحسب ، بل تم رسمها أيضًا (بشروط).
كل شيء بسيط.
لكن أولاً ، استعد.


لقد بدأت بلحام أكثر دائرتين مصغرتين تعقيدًا (اعتقدت). يتم وضعها والإمساك بها في مكانين (عكس ذلك تمامًا). ثم ملحوم بشكل صحيح. لا تنسوا التمسك حتى لا "يغادروا".


ثم المثبت.


الترانزستور.


أربعة مقاومات SMD واثنين من المكثفات SMD. لم يكن الوضع والاستيلاء من حافة واحدة بهذه السهولة (يحتاج إلى مهارة). وليس لدي الكثير :)


اثنين من الشوارد.


موصل USB.


مقبس بطارية الليثيوم.


صرير. لا تنس الإيجابيات والسلبيات. بعد اللحام ، أقوم بقضم ساقي لأقصى حد ولا أريد عدم التدخل لاحقًا عند لحام المصفوفات.


مستشعر موضع الزئبق.


3 أزرار.


وأخيرًا ، المصفوفات. انتبه للتوجيه. هذا هو الجزء العلوي (سيكون مكبر الصوت على اليسار).


إليكم ما حدث.


صحيح ، بقيت قطع الغيار (في حالة الخسارة ، على الأرجح): ترانزستور واحد ومقاومتان ومكثف.


أغسل التدفق.
أنا أتحقق.
هم يعملون!
أخلع الفيلم الواقي.


انا اجمع.

بعد التبديل ، تم تهنئة الساعة بالعام الجديد.


لا عجب ، على مدار الساعة في 1 يناير 2000 ، 00 ساعة و 01 دقيقة.


لا تلتفت إلى المصفوفة متعددة الألوان. يتناسب معدل تحديث "الشاشة" مع سرعة الغالق في الكاميرا. ترى العين البشرية كل شيء باللون الأحمر الصحيح. هذا هو السبب في أنني قمت بتقييد النوافذ قليلاً عندما قمت بتصوير الفيديو (لزيادة سرعة الغالق).
الآن نحن بحاجة إلى إقامة.
تحتوي الساعة على ثلاثة أزرار في الخلف. سميتها بنفسي (من أعلى إلى أسفل):
1. القائمة.
2. زائد.
3. ناقص.
انظر خوارزمية الضبط. إذا كانت لديك ساعة في يديك ، حتى ما هو غير واضح سيصبح أوضح من الوضوح 
للدخول ، استمر في الضغط على الزر العلوي (القائمة) لفترة من الوقت. بعد ذلك ، نعمل مع مكابس قصيرة.

سأشرح شيئا. هناك ستة قوائم في المجموع. التبديل. يمكنك استخدام زر علامة الجمع ، يمكنك استخدام زر ناقص.
الوقت - ضبط الوقت.
التاريخ - تحديد التاريخ.
ALAR - ضبط المنبه.
FONT - اختيار الخط (في المجموع 5 أنواع: نحيف عريض مصقول ...).
DISP - اختيار الخوارزمية لعرض المعلومات (يمكنك فقط المشاهدة ، يمكنك تغيير المعلومات بالتتابع: الوقت ودرجة الحرارة والتاريخ والعطلات مع خط تشغيل ...).
MIDP - اختيار نوع نقاط التقسيم.


ليس من السهل شرح كل شيء بالكلمات. لقد عرضته بالتفصيل على الفيديو (الرابط في النهاية).
وفي هذا الفيديو (30 ثانية) يمكنك مشاهدة خوارزمية عرض المعلومات على المصفوفات (نوع قائمة DISP 2).


ملاحظة مهمة. بدون بطارية الليثيوم ، بعد الضبط ، يتم فقدان الوقت والتاريخ. تبقى بقية الإعدادات في الذاكرة.
متصل بشاحن عادي. قياس الاستهلاك.


لا يظهر جهاز USB شيئًا عند استهلاك أقل من 50 مللي أمبير (مثل هذه الميزة).
الخلاصة: في وضع الساعة ، يكون الاستهلاك الحالي أقل من 50 مللي أمبير ، في وضع خط التشغيل ، حوالي 70 مللي أمبير. ليس كثيرا.
قمت بقياس الأبعاد: 105 * 85 مم.
الأرقام في العرض القياسي 20 * 30 مم للجميع.


أضعه أمام التلفزيون.


لقد نسيت تقريبًا أمر مستشعر موضع الزئبق.
ستظهر الساعة دائمًا بشكل صحيح ، حتى إذا تم قلبها رأسًا على عقب. لمبة الزئبق تغلق أو تفتح جهات الاتصال. وفقًا لذلك ، تقوم وحدة التحكم بتغيير الخوارزمية لعرض المعلومات على المصفوفة.
هنا ، بشكل عام ، هذا كل شيء.
حان الوقت لتلخيص.
مجموعة أدوات DIY جيدة لهواة الراديو المبتدئين لاختبار مهاراتهم. علاوة على ذلك ، هذه ليست مجرد مجموعة للتدريب ، ولكن في النهاية اتضح أنها ساعة جيدة.
من أجل الاستنتاج الصحيح لما كتبه ، ينبغي أن يكون كافيا.
إذا كان هناك شيء غير واضح ، اطرح الأسئلة. أتمنى أن يكون قد ساعد شخصًا ما على الأقل.
حظ سعيد!

تم توفير المنتج لكتابة مراجعة من قبل المتجر. يتم نشر المراجعة وفقًا للمادة 18 من قواعد الموقع.

أخطط لشراء +61 اضافة الى المفضلة أحب الاستعراض +66 +122

تحميل...
قمة