Բովանդակություն:
Video: Օգտագործելով DS1307 և DS3231 Իրական ժամանակի ժամացույցի մոդուլներ Arduino- ով. 3 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Մենք անընդհատ հարցում ենք ստանում այն մասին, թե ինչպես օգտագործել իրական ժամանակի DS1307 և DS3231 ժամացույցների մոդուլները Arduino- ով տարբեր աղբյուրներից, ուստի սա դրանցից օգտվելու երկու մասից բաղկացած առաջին ձեռնարկն է: Այս Arduino- ի ձեռնարկի համար մենք ունենք իրական ժամանակի ժամացույցի երկու մոդուլ, որոնցից մեկը հիմնված է Maxim DS1307 (քառակուսի մոդուլ) և DS3231 (ուղղանկյուն մոդուլ) վրա:
Իրական ժամանակի ժամացույցի մոդուլների IC- ների միջև կա երկու հիմնական տարբերություն, ինչը ժամանակի պահպանման ճշգրտությունն է: Առաջին մոդուլում օգտագործված DS1307- ը շատ լավ է աշխատում, սակայն արտաքին ջերմաստիճանը կարող է ազդել տատանումների միացման հաճախականության վրա, որը վարում է DS1307- ի ներքին հաշվիչը:
Սա կարող է հնչել որպես խնդիր, սակայն սովորաբար հանգեցնում է այն բանին, որ ժամացույցն անջատված է ամսական մոտ հինգ կամ ավելի րոպեով: DS3231- ը շատ ավելի ճշգրիտ է, քանի որ ունի ներքին տատանում, որի վրա արտաքին գործոններ չեն ազդում, ուստի ճշգրիտ է տարեկան մինչև մի քանի րոպե: Եթե ունեք DS1307 մոդուլ- վատ մի զգացեք, այն դեռ մեծ արժեք ունեցող տախտակ է և ձեզ լավ կծառայի: Երկու մոդուլների դեպքում էլ պահանջվում է պահեստային մարտկոց:
Լավ գաղափար է գնել նոր CR2032 մարտկոց և այն տեղավորել մոդուլին: Modամանակի և ամսաթվի հետագծման հետ մեկտեղ, այս մոդուլներն ունեն նաև փոքր EEPROM, ազդանշանային գործառույթ (միայն DS3231) և տարբեր հաճախականությունների քառակուսի ալիք առաջացնելու ունակություն, որոնք բոլորը երկրորդ ձեռնարկի առարկան կլինեն:
Քայլ 1. Ձեր մոդուլը Arduino- ին միացնելը
Երկու մոդուլներն էլ օգտագործում են I2C ավտոբուսը, ինչը շատ հեշտ է դարձնում կապը:
Նախ պետք է որոշեք, թե ձեր Arduino- ի ո՞ր կապերն են կամ համատեղելի տախտակները օգտագործվում I2C ավտոբուսի համար. Դրանք հայտնի կլինեն որպես SDA (կամ տվյալներ) և SCL (կամ ժամացույց): Arduino Uno- ի կամ համատեղելի տախտակների վրա տվյալների և ժամացույցի համար այս կապում են A4 և A5; Arduino Mega- ում կապում են D20 և D21 տվյալները և ժամացույցը. Եվ եթե դուք օգտագործում եք Pro Mini- համատեղելի, ապա կապումներն են A4 և A5: տվյալների և ժամացույցի համար, որոնք զուգահեռ են հիմնական կապերին:
DS1307 մոդուլ
Եթե ունեք DS1307 մոդուլը, ապա ձեզ հարկավոր է լարերը կպցնել տախտակին կամ կպցնել վերնագրի որոշ ներդիրների վրա, որպեսզի կարողանաք օգտագործել jumper լարերը: Այնուհետև SCL և SDA կապերը միացրեք ձեր Arduino- ին, իսկ Vcc կապը ՝ 5V, իսկ GND- ը ՝ GND- ին:
DS3231 մոդուլ
Այս մոդուլը միացնելը հեշտ է, քանի որ գործարանում տախտակի վրա տեղադրվում են վերնագրերի կապիչներ: Դուք պարզապես կարող եք նորից թռիչքային լարեր անցկացնել SCL- ից և SDA- ից մինչև Arduino և կրկին մոդուլի Vcc և GND կապումներից մինչև ձեր տախտակի 5V կամ 3.3. V և GND: Այնուամենայնիվ, դրանք կրկնօրինակվում են մյուս կողմից `ձեր սեփական լարերը զոդելու համար: Այս երկու մոդուլներն ունեն պահանջվող ձգման դիմադրիչներ, այնպես որ ձեզ հարկավոր չէ ավելացնել ձեր սեփականը: Ինչպես I2C ավտոբուսին միացված բոլոր սարքերը, այնպես էլ փորձեք SDA և SCL լարերի երկարությունը հասցնել նվազագույնի:
Քայլ 2: ingամանակ կարդալ և գրել ձեր RTC մոդուլից
Երբ դուք միացրել եք ձեր RTC մոդուլը: մուտքագրեք և վերբեռնեք հետևյալ ուրվագիծը: Չնայած էսքիզի նշումները և գործառույթները վերաբերում են միայն DS3231- ին, ծածկագիրը գործում է նաև DS1307- ի հետ:
#ներառել «Wire.h»#սահմանել DS3231_I2C_ADDRESS 0x68 // Փոխարկել նորմալ տասնորդական թվերը երկուական կոդավորված տասնորդական բայթ decToBcd (բայթ val) {վերադարձ ((val/10*16) + (val%10)); } // Երկուական կոդավորված տասնորդական դարձնել նորմալ տասնորդական թվեր բայթ bcdToDec (բայթ val) {վերադարձ ((val/16*10) + (val%16)); } void setup () {Wire.begin (); Serial.begin (9600); // սկզբնական ժամը սահմանեք այստեղ ՝ // DS3231 վայրկյան, րոպե, ժամ, օր, ամսաթիվ, ամիս, տարի // setDS3231 ժամ (30, 42, 21, 4, 26, 11, 14); } void setDS3231 անգամ (բայթ վայրկյան, բայթ րոպե, բայթ ժամ, բայթ օրՕրԱ շաբաթ, բայթ օրՄայիս, բայթ ամիս, բայթ տարի) {// ժամանակի և ամսաթվի տվյալները սահմանում է DS3231 Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // սահմանել հաջորդ մուտքագրումը ՝ վայրկյանների գրանցումից սկսելու համար Wire.write (decToBcd (երկրորդ)); // վայրկյաններ սահմանել Wire.write (decToBcd (րոպե)); // սահմանել րոպեներ Wire.write (decToBcd (ժամ)); // սահմանել ժամերը Wire.write (decToBcd (dayOfWeek)); // սահմանել շաբաթվա օրը (1 = կիրակի, 7 = շաբաթ) Wire.write (decToBcd (dayOfMonth)); // սահմանել ամսաթիվ (1 -ից 31 -ը) Wire.write (decToBcd (ամիս)); // սահմանել ամիս Wire.write (decToBcd (տարի)); // սահմանված տարի (0 -ից 99) Wire.endTransmission (); } void readDS3231 անգամ (բայթ *երկրորդ, բայթ *րոպե, բայթ *ժամ, բայթ *օրՕր շաբաթ, բայթ *օրԲոլոր ամիս, բայթ *ամիս, բայթ *տարի) {Wire.beginTransmission (DS3231_I2C_ADDRESS); Wire.write (0); // սահմանել DS3231 գրանցման ցուցիչը 00h Wire.endTransmission (); Մետաղալար. Խնդրում ենք (DS3231_I2C_ADDRESS, 7); // պահանջել տվյալների յոթ բայթ DS3231- ից ՝ սկսած գրանցումից 00h *վայրկյան = bcdToDec (Wire.read () & 0x7f); *րոպե = bcdToDec (Wire.read ()); *ժամ = bcdToDec (Wire.read () & 0x3f); *dayOfWeek = bcdToDec (Wire.read ()); *dayOfMonth = bcdToDec (Wire.read ()); *ամիս = bcdToDec (Wire.read ()); *տարի = bcdToDec (Wire.read ()); } void displayTime () {բայթ վայրկյան, րոպե, ժամ, dayOfWeek, dayOfMonth, ամիս, տարի; // տվյալների ստացում DS3231- ից readDS3231time (& երկրորդ, & րոպե, & ժամ, & dayOfWeek, & dayOfMonth, & month, & year); // ուղարկեք այն սերիական մոնիտորին Serial.print (ժամ, DEC); // փոխակերպել բայթ փոփոխականը տասնորդական համարի, երբ ցուցադրվում է Serial.print (":"); if (րոպե <10) {Serial.print ("0"); } Serial.print (րոպե, DEC); Serial.print (":"); if (երկրորդ <10) {Serial.print ("0"); } Serial.print (երկրորդ, DEC); Serial.print (""); Serial.print (dayOfMonth, DEC); Serial.print ("/"); Serial.print (ամիս, DEC); Serial.print ("/"); Serial.print (տարի, DEC); Serial.print («Շաբաթվա օր.»); switch (dayOfWeek) {case 1: Serial.println («կիրակի»); ընդմիջում; գործ 2: Serial.println («Երկուշաբթի»); ընդմիջում; դեպք 3: Serial.println («երեքշաբթի»); ընդմիջում; գործ 4: Serial.println («Չորեքշաբթի»); ընդմիջում; դեպք 5: Serial.println («հինգշաբթի»); ընդմիջում; դեպք 6: Serial.println («ուրբաթ»); ընդմիջում; գործ 7: Serial.println («Շաբաթ»); ընդմիջում; }} void loop () {displayTime (); // ցուցադրել սերիական մոնիտորի իրական ժամանակի ժամացույցի տվյալները, հետաձգում (1000); // ամեն վայրկյան }
Կարող է լինել շատ կոդ, սակայն այն լավ է բաժանվում կառավարելի մասերի:
Այն նախ ներառում է Wire գրադարանը, որն օգտագործվում է I2C ավտոբուսային հաղորդակցության համար, որին հաջորդում է RTC- ի ավտոբուսի հասցեի սահմանումը `0x68: Դրանց հաջորդում են երկու գործառույթներ, որոնք տասնորդական թվերը վերածում են BCD- ի (երկուական կոդավորված տասնորդական) և հակառակը: Սրանք անհրաժեշտ են, քանի որ RTC IC- ն աշխատում է BCD- ով և ոչ տասնորդական:
SetDS3231time () ֆունկցիան օգտագործվում է ժամացույցը կարգավորելու համար: Օգտագործելը շատ հեշտ է, տարեցից վայրկյան պարզ տեղադրեք արժեքները, և RTC- ն կսկսվի այդ ժամանակից: Օրինակ, եթե ցանկանում եք սահմանել հետևյալ ամսաթիվը և ժամը `չորեքշաբթի, 26 նոյեմբերի, 2014 և 21:42 և 30 վայրկյան, դուք կօգտագործեք.
setDS3231 անգամ (30, 42, 21, 4, 26, 11, 14);
Քայլ 3:
Նկատի ունեցեք, որ ժամանակը սահմանվում է ՝ օգտագործելով 24-ժամյա ժամ, և չորրորդ պարամետրը «շաբաթվա օրն» է: Սա ընկնում է 1 -ի և 7 -ի միջև, ինչը համապատասխանաբար կիրակիից շաբաթ է: Այս պարամետրերը բայթ արժեքներ են, եթե դուք ենթարկում եք ձեր սեփական փոփոխականներին:
Երբ գործառույթը գործարկեք, իմաստուն կլինի այն նախածանցով տեղադրել // և նորից վերբեռնել ձեր ծածկագիրը, այնպես որ այն չի վերականգնի այն ժամանակը, երբ հոսանքը կշրջվի կամ միկրոկառավարիչը կվերակայվի: Ձեր RTC- ի ժամանակը կարդալը նույնքան պարզ է, իրականում գործընթացը կարող է կոկիկ հետևվել ցուցադրման (TimeT) գործառույթի ներսում: RTC- ից տվյալները պահելու համար ձեզ հարկավոր է սահմանել յոթ բայթ փոփոխական, և դրանք տեղադրվում են readDS3231time () գործառույթում: Օրինակ, եթե ձեր փոփոխականներն են.
բայթ վայրկյան, րոպե, ժամ, շաբաթՇաբաթվա օր, ամսվա օր, ամիս, տարի;
… Դուք դրանք կթարմացնեք RTC- ի ընթացիկ տվյալներով ՝ օգտագործելով.
կարդալDS3232 ժամ (& երկրորդ, & րոպե, & ժամ, & dayOfWeek, & dayOfMonth, & month, & year);
Այնուհետև կարող եք օգտագործել փոփոխականները ՝ ըստ ձեր հայեցողության, սկսած ժամանակն ու ամսաթիվը սերիական մոնիտորին, ինչպես օրինակ էսքիզը `տվյալների փոխարկումը բոլոր տեսակի ելքային սարքերի համար համապատասխան ձևի:
Պարզապես ստուգելու համար, որ ամեն ինչ աշխատում է, ցուցադրման ուրվագծի մեջ մուտքագրեք համապատասխան ժամանակը և ամսաթիվը, վերբեռնեք այն, մեկնաբանեք setDS3231time () գործառույթը և նորից վերբեռնեք: Այնուհետև բացեք սերիական մոնիտորը, և ձեզ պետք է տրամադրվի ընթացիկ ժամի և ամսաթվի ցուցադրվող էկրան:
Այս պահից դուք այժմ ունեք ծրագրային գործիքներ ՝ տվյալները տեղադրելու և դրանք ձեր իրական ժամանակի ժամացույցի մոդուլից վերցնելու համար, և մենք հույս ունենք, որ դուք հասկացել եք, թե ինչպես օգտագործել այս էժան մոդուլները:
Դուք կարող եք ավելին իմանալ իրական ժամանակի ժամացույցների IC- ների մասին արտադրողի կայքից `DS1307 և DS3231:
Այս գրառումը ձեզ է բերել pmdway.com- ը `ամեն ինչ արտադրողների և էլեկտրոնիկայի սիրահարների համար` անվճար առաքում ամբողջ աշխարհով:
Խորհուրդ ենք տալիս:
Ինչպես օգտագործել իրական ժամանակի ժամացույցի մոդուլ (DS3231) ՝ 5 քայլ
Ինչպես օգտագործել իրական ժամանակի ժամացույցի մոդուլ (DS3231). DS3231- ը էժան, չափազանց ճշգրիտ I2C իրական ժամանակի (RTC) ժամացույց է (RTC) `ինտեգրված ջերմաստիճանի փոխհատուցվող բյուրեղային տատանումով (TCXO) և բյուրեղով: Սարքը ներառում է մարտկոցի մուտք և պահպանում է ժամանակի ճշգրիտ հաշվարկում, երբ հիմնական էներգիան
DS3231 RTC (Իրական ժամանակի ժամացույց) ճշգրիտ, արագ և ավտոմատացված ՝ օգտագործելով Java (+-1s) ՝ 3 քայլ
DS3231 RTC (Իրական ժամանակի ժամացույց) ճշգրիտ, արագ և ավտոմատացված օգտագործելով Java- ն (+-1s). Այս հրահանգը ցույց կտա ձեզ, թե ինչպես ժամանակ սահմանել DS3231 իրական ժամանակի ժամացույցի վրա `օգտագործելով Arduino և մի փոքր Java ծրագիր, որն օգտագործում է Arduino- ի սերիական կապը: Այս ծրագրի հիմնական տրամաբանությունը. Arduino- ն սերիական հարցում է ուղարկում
Իրական ժամանակի ժամացույցի ժամացույց ՝ 5 քայլ
Minitel Իրական ժամանակի ժամացույց. Ստեղծվել է 1978 թվականին France Telecom- ի կողմից, Minitel- ը տեղեկատվության որոնման և հաղորդագրությունների ուղարկման ծառայություն էր: Համարվում է, որ դա ամենահաջողված ցանցն է մինչ համաշխարհային ցանցը: 30 տարի անց `2008 թվականին, ցանցը վերջնականապես փակվեց: (Այս մասին շատ տեղեկություններ կան
DS1307 Իրական ժամանակի ժամացույց RTC Arduino- ով. 4 քայլ
DS1307 Իրական ժամանակի ժամացույց RTC Arduino- ի հետ. Այս ձեռնարկում մենք կիմանանք իրական ժամանակի ժամացույցի (RTC) և այն մասին, թե ինչպես է Arduino & Իրական ժամանակի ժամացույց IC DS1307- ը միասին դրված է որպես ժամանակացույցի սարք: Իրական ժամանակի ժամացույցը (RTC) օգտագործվում է ժամանակի մոնիտորինգի և օրացույցի պահպանման համար: RTC- ի օգտագործման համար w
Arduino- ի վրա հիմնված ժամացույց ՝ օգտագործելով DS1307 իրական ժամանակի ժամացույց (RTC) մոդուլ և 0.96: 5 քայլ
Arduino- ի վրա հիմնված ժամացույց ՝ օգտագործելով DS1307 Իրական ժամանակի ժամացույց (RTC) մոդուլ և 0.96. Բարև տղերք, այս ձեռնարկում մենք կտեսնենք, թե ինչպես պատրաստել աշխատանքային ժամացույց ՝ օգտագործելով իրական ժամանակի DS1307 ժամացույցի մոդուլ և AMP; OLED էկրաններ: Այսպիսով, մենք կկարդանք ժամանակը ժամացույցի մոդուլից DS1307: Եվ տպեք այն OLED էկրանին