DS3231: ពេលវេលានិងប្រតិទិនពេលវេលាពិតប្រាកដសម្រាប់ Arduino របស់អ្នក

DS3231

នៅក្នុងគម្រោងមួយចំនួនវាចាំបាច់ត្រូវមានភស្តុតាងអំពីពេលវេលាម៉ោងឬកាលបរិច្ឆេទ។ ដោយសារតម្រូវការដើម្បីអនុវត្តមុខងារជាក់លាក់ដោយផ្អែកលើពេលវេលារក្សាប្រតិទិនព្រឹត្តិការណ៍ឬការចុះឈ្មោះរក្សាពេលវេលានៅក្នុងប្រព័ន្ធឬគ្រាន់តែបង្កើតនាឡិកាឌីជីថល។ ជាមួយ Arduino។ ជាមួយ DS3231 អ្នកអាចយកវាបានហើយ សមាសភាគ ដែលយើងបន្ថែមទៅក្នុងបញ្ជី។

DS3231 គឺជាម៉ូឌុលដែលអ្នកកំពុងស្វែងរកហើយនៅទីនេះអ្នកនឹងឃើញអ្វីគ្រប់យ៉ាងដែលអ្នកត្រូវការសម្រាប់ការគ្រប់គ្រងរបស់វាហើយខ្ញុំក៏នឹងបង្ហាញអ្នកពីឧទាហរណ៍នៃរបៀប រួមបញ្ចូលវាជាមួយ Arduino ជាមួយឧទាហរណ៍ជាក់ស្តែង ...

តើ DS3231 គឺជាអ្វី?

DS3231

ដំបូងអ្នកគួរតែដឹងថាតើក RTC (ម៉ោងពិត), ឬពេលវេលាពិតប្រាកដ។ បន្ទះឈីបទាំងនេះមានភាពញឹកញាប់ណាស់នៅក្នុងកម្មវិធីជាច្រើនដែលតាមពិតកុំព្យូទ័ររបស់អ្នកមានមួយនៅលើ motherboard របស់អ្នកហើយវាក៏ត្រូវបានបំពាក់ដោយ ថ្ម CR2032 ផងដែរ។ វាគឺជាផ្នែកមួយដែលរក្សាពេលវេលានិងការកំណត់រចនាសម្ព័ន្ធនៅក្នុង BIOS / UEFI ហើយពីប្រព័ន្ធប្រតិបត្តិការយកវានៅពេលចាប់ផ្ដើមដំណើរការទាន់ពេល (ទោះបីជាឥឡូវនេះជាមួយនឹងអ៊ិនធឺរណែតការធ្វើសមកាលកម្មជាមួយម៉ាស៊ីនមេអាចត្រូវបានប្រើសម្រាប់ភាពជាក់លាក់កាន់តែច្រើនប៉ុន្តែនេះ គឺជារឿងមួយទៀត…) ។

អ្វីដែល RTC ធ្វើគឺទទួលបានការវាស់ពេលវេលាដែលសាមញ្ញ។ ភាពខុសគ្នាពីប្រភេទនាឡិកាអេឡិចត្រូនិចផ្សេងទៀតគឺថាវាសាមញ្ញ វាស់ពេលវេលាហើយវាធ្វើដូច្នេះដោយរាប់ជីពចរសញ្ញានាឡិកាដោយដឹងពីប្រេកង់និងរយៈពេលរបស់វា។ បន្ថែមពីលើពេលវេលា RTC ក៏អនុញ្ញាតឱ្យអ្នករក្សាគណនេយ្យថ្ងៃសប្តាហ៍ខែនិងឆ្នាំ។ នោះគឺកាលបរិច្ឆេទពេញលេញ ...

ដើម្បីធ្វើដូចនេះ RTC ត្រូវតែអមដោយក គ្រីស្តាល់ Xtal ឬរ៉ែថ្មខៀវ ដែលនឹងដើរតួជាឧបករណ៍រំonកមួយដែលផ្តល់ប្រេកង់។ លើសពីនេះទៀតអ្នកត្រូវការសៀគ្វីអេឡិចត្រូនិចដែលមានសមត្ថភាពរាប់និងរក្សាទុកកាលបរិច្ឆេទនៅក្នុងសតិ។ សៀគ្វីអគ្គីសនីត្រូវតែមានសមត្ថភាពរាប់វិនាទីនាទីម៉ោងម៉ោងថ្ងៃសប្តាហ៍ខែនិងឆ្នាំ។

អ៊ីសា ការចងចាំគឺងាយនឹងបង្កជាហេតុនោះហើយជាមូលហេតុដែលវាត្រូវការថ្មដើម្បីឱ្យមានថាមពលថេរ។ ប្រសិនបើអ្នកមិនមានថ្មឬវាអស់ថ្មវានឹងត្រូវបានលុបចោល ... នោះហើយជាអ្វីដែលកើតឡើងចំពោះកុំព្យូទ័រនៅពេលដែលថ្មអស់ហើយពួកគេផ្តល់ពេលវេលាមិនត្រឹមត្រូវ។ ប្រសិនបើអ្នកតំឡើងវានៅពេលកុំព្យូទ័រកំពុងបើកពេលវេលានឹងត្រូវបានរក្សាទុកពីព្រោះ RTC កំពុងត្រូវបានដំណើរការប៉ុន្តែវាស្ថិតនៅក្នុងអំឡុងពេលដំណើរការកំឡុងពេលដែលវាត្រូវបានបិទនៅពេលដែលថ្មត្រូវការ ...

សម្រាប់គម្រោង DIY អ្នកផលិតជាធម្មតាប្រើបន្ទះឈីប RTC ធម្មតាពីរដែលជារបស់ DS1307 និង DS3231។ ឧបករណ៍ទាំងពីរត្រូវបានផលិតដោយម៉ិមមីម (ពីមុនដាឡាសស៊ីលីខនឌ័រ) ហើយអេស .៣២៣១ កាន់តែមានភាពត្រឹមត្រូវជាងមុនពីព្រោះវាមិនរងឥទ្ធិពលពីការប្រែប្រួលសីតុណ្ហភាពដូចគ្នានឹងអតីតកាលដែរ។ ដូច្នេះវាមិនប្រែប្រួលច្រើនទេអាស្រ័យលើសីតុណ្ហភាពហើយវារក្សាពេលវេលាឱ្យកាន់តែច្បាស់។

នៅពេលខ្លះជាមួយនឹងភាពខុសគ្នានៃសីតុណ្ហភាពគួរឱ្យកត់សម្គាល់ DS1307 អាចនៅក្រៅដំណាក់កាលរហូតដល់ 1 ឬ 2 នាទីក្នុងមួយថ្ងៃ។ មានអ្វីដែលមិនអាចទ្រាំទ្របានសម្រាប់កម្មវិធីមួយចំនួន។

DS3231 មិនមែនថាវាមិនត្រូវបានប៉ះពាល់ដោយបំរែបំរួលនោះទេប៉ុន្តែវាមានប្រព័ន្ធវាស់សីតុណ្ហភាពនិងប្រព័ន្ធសំណងដែលភ្ជាប់មកជាមួយដើម្បីធានានូវភាពត្រឹមត្រូវនៃ 2ppm ដែលអាចស្មើនឹង យឺតយ៉ាវពេលវេលា ប្រហែល ១៧២ មក្នុងមួយថ្ងៃដែលច្រើនជាង ១ វិនាទីក្នុងមួយសប្តាហ៍។ ហើយនៅក្នុងការអនុវត្តជាក់ស្តែងពួកគេច្រើនតែប្រែប្រួលត្រឹមតែ ១ ឬ ២ វិនាទីក្នុងមួយខែ។

ដូចជាសម្រាប់វិធីនេះ ទាក់ទងជាមួយ RTC DS3131 ដើម្បីទទួលបានតម្លៃកាលបរិច្ឆេទដែលទទួលបានវាត្រូវបានធ្វើឡើងដោយ ឡានក្រុង I2C។ ហើយសម្រាប់ថាមពលអ្នកអាចប្រើថាមពលពី ២.៣ ទៅ ៥.៥ វ៉សម្រាប់អេស .៣២៣១ ដែលទាបជាង ៤.៥ ទៅ ៥.៥ វ៉សម្រាប់អេស .១៣០៧ ដូច្នេះវាអាចមានថាមពលកាន់តែច្រើននិងធ្វើឱ្យថ្មកាន់បានយូរ។

ដូចគ្នានេះផងដែរអ្នកគួរតែដឹងថាម៉ូឌុលទាំងនេះជាធម្មតាមាន EEPROM AT24C32 បន្ថែម ដើម្បីរក្សាទុកកំណត់ត្រាខ្លះនិងការវាស់វែងពីមុនដែលជាការអនុវត្តជាក់ស្តែង។

Aplicaciones

សម្រាប់កម្មវិធីខ្ញុំបានលើកឡើងរួចមកហើយដូចជាដើម្បីអនុវត្តនាឡិកាជាមួយអារីដូណូដើម្បីបង្កើតប្រព័ន្ធដែលដើរតួផ្អែកលើ ពេល​វេលា ទោះយ៉ាងណាក៏ដោយដើម្បីទុកពេលវេលានៅលើឧបករណ៍ដូចជាកុំព្យូទ័រនិងឧបករណ៍អេឡិចត្រូនិកនិងឧបករណ៍អេឡិចត្រូនិចជាច្រើនដែលមានពេលវេលា។ ល។

ក៏អាចត្រូវបានប្រើនៅក្នុង គម្រោង ដើម្បីបង្កើតកម្មវិធីកំណត់ពេលវេលាសម្រាប់ភ្លើងបំភ្លឺប្រព័ន្ធធារាសាស្ត្រឌីជីថលទិន្នន័យ។ ល។ កម្មវិធីអាចមានច្រើនបំផុត ...

ទិញ RTC DS3231

ម៉ូឌុល DS3131 គឺថោកហើយអ្នកអាចរកវាបាននៅតាមហាងលក់គ្រឿងអេឡិចត្រូនិចឯកទេសមួយចំនួនឬហាងធំ ៗ ដូចជា eBay, AliExpress, Amazon ជាដើម។ ប្រសិនបើអ្នកចាប់អារម្មណ៍ចង់មានវានេះគឺជាអនុសាសន៍មួយចំនួន៖

DS3231 សមាហរណកម្ម Arduino

រូបថតអេក្រង់របស់អារីដូណូអាយឌីអ៊ី

ប្រសិនបើអ្នកចង់ បញ្ចូល DS3231 របស់អ្នកជាមួយក្តារ Arduino របស់អ្នក ហើយចាប់ផ្តើមបង្កើតគំរោង“ ពេលវេលា” អ្នកត្រូវភ្ជាប់បណ្តាញដែលសមរម្យជាមុនសិន។ ដើម្បីអាចភ្ជាប់វាបានវាមានលក្ខណៈសាមញ្ញដូចជាៈ

  • ម្ជុល SLC នៃបន្ទះ DS3231 ត្រូវតែភ្ជាប់ទៅនឹងអេហ្វ ៥ របស់អ្នក Arduino UNO.
  • SDA នៃ DS3231 ត្រូវបានភ្ជាប់ទៅនឹង A4 នៃ Arduino ។
  • វីស៊ីពីម៉ូឌុលនឹងទៅ 5 វីពីអ័រឌូណូ។
  • GND ដល់ GND ។
ត្រូវចាំថាត្រូវតំឡើងបណ្ណាល័យដើម្បីប្រើ RTC DS3231 ក្នុងអាឌូឌីណូ IDE របស់អ្នកឬលេខកូដនឹងមិនដំណើរការទេ

ឥឡូវអ្នកមានប្រព័ន្ធតភ្ជាប់ហើយរឿងបន្ទាប់គឺសរសេរអក្សរ កូដប្រភពបង្ហាញប្រភេទរូបភាព ដើម្បីកំណត់ពេលវា។ អ្នកអាចកែប្រែលេខកូដនិងសម្របខ្លួនតាមតំរូវការរបស់អ្នកប៉ុន្តែអ្នកអាចចាប់ផ្តើមដោយគ្រាន់តែទទួលបានកាលបរិច្ឆេតពី RTC DS3231 ភ្ជាប់ជាមួយ Arduino៖

#include <Wire.h>
#include "RTClib.h"
 
// RTC_DS1307 rtc;
RTC_DS3231 rtc;
 
String daysOfTheWeek[7] = { "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado" };
String monthsNames[12] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo",  "Junio", "Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre" };
 
void setup() {
   Serial.begin(9600);
   delay(1000); 
 
   if (!rtc.begin()) {
      Serial.println(F("No se encuentra el RTC"));
      while (1);
   }
 
   // Si se ha perdido el suministro eléctrico, fijar fecha y hora
   if (rtc.lostPower()) {
      // Fijar a fecha y hora (poner la de compilación del sketch)
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
      
      // Fijar a fecha y hora específica. En este ejemplo el 2021-01-01 a las 00:00:00
      // rtc.adjust(DateTime(2020, 1, 1, 0, 0, 0));
   }
}
//Imprimir completa obtenida la fecha en decimal
void printDate(DateTime date)
{
   Serial.print(date.year(), DEC);
   Serial.print('/');
   Serial.print(date.month(), DEC);
   Serial.print('/');
   Serial.print(date.day(), DEC);
   Serial.print(" (");
   Serial.print(daysOfTheWeek[date.dayOfTheWeek()]);
   Serial.print(") ");
   Serial.print(date.hour(), DEC);
   Serial.print(':');
   Serial.print(date.minute(), DEC);
   Serial.print(':');
   Serial.print(date.second(), DEC);
   Serial.println();
}
 
void loop() {
   // Obtener fecha actual y mostrar por Serial
   DateTime now = rtc.now();
   printDate(now);
 
   delay(3000);    //Espera 3 segundos
}

ហើយដើម្បីប្រើកាលបរិច្ឆេទ RTC ទៅ កំណត់ពេលភារកិច្ចខ្លះដូចជាសម្រាប់បើកឬបិទភ្លើងសម្រាប់ទឹកស្វ័យប្រវត្តិឬសម្រាប់សំឡេងរោទិ៍សំឡេង។ ល។ ចងចាំថាដើម្បីគ្រប់គ្រងឧបករណ៍វ៉ុលខ្ពស់អ្នកអាចប្រើត្រង់ស៊ីស្ទ័រឬ បញ្ជូនត:

#include <Wire.h>
#include "RTClib.h"
 
const int outputPin = LED_BUILTIN;
bool state = false;
 
// RTC_DS1307 rtc;
RTC_DS3231 rtc;
 
void setup() {
   Serial.begin(9600);
   delay(1000);
 
   if (!rtc.begin()) {
      Serial.println(F("Couldn't find RTC"));
      while (1);
   }
 
   if (rtc.lostPower()) {
      rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
   }
}
 
// Se comprueba si está programado el encendido
bool isScheduledON(DateTime date)
{
   int weekDay = date.dayOfTheWeek();
   float hours = date.hour() + date.minute() / 60.0;
 
   // Configuración de horas de 08:30 a 9:30 y de 22:00 a 23:00 (usando decimal)
   bool hourCondition = (hours > 8.50 && hours < 9.50) || (hours > 22.00 && hours < 23.00);
 
   // Configuración del día Lunes, Sábado y Domingo con números (recuerda que en inglés comienza la semana en Domingo=0, Lunes=1,...
   bool dayCondition = (weekDay == 1 || weekDay == 6 || weekDay == 0); 
   if (hourCondition && dayCondition)
   {
      return true;
   }
   return false;
}
 
void loop() {
   DateTime now = rtc.now();
 
   if (state == false && isScheduledON(now))      // Apagado
   {
      digitalWrite(outputPin, HIGH);
      state = true;
      Serial.print("Activado");
   }
   else if (state == true && !isScheduledON(now))  // Encendido
   {
      digitalWrite(outputPin, LOW);
      state = false;
      Serial.print("Desactivado");
   }
 
   delay(3000);
}


ខ្លឹមសារនៃអត្ថបទប្រកាន់ខ្ជាប់នូវគោលការណ៍របស់យើង ក្រមសីលធម៌វិចារណកថា។ ដើម្បីរាយការណ៍ការចុចកំហុស នៅទីនេះ.

ធ្វើជាយោបល់ដំបូង

ទុកឱ្យយោបល់របស់អ្នក

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានបោះពុម្ភ។ អ្នកគួរតែអនុវត្តតាម *

*

*

  1. ទទួលខុសត្រូវចំពោះទិន្នន័យ: មីហ្គែល - ហ្គែលហ្គេតថន
  2. គោលបំណងនៃទិន្នន័យ៖ គ្រប់គ្រង SPAM ការគ្រប់គ្រងមតិយោបល់។
  3. ភាពស្របច្បាប់៖ ការយល់ព្រមរបស់អ្នក
  4. ការប្រាស្រ័យទាក់ទងទិន្នន័យ៖ ទិន្នន័យនឹងមិនត្រូវបានទាក់ទងទៅភាគីទីបីឡើយលើកលែងតែកាតព្វកិច្ចផ្នែកច្បាប់។
  5. ការផ្ទុកទិន្នន័យ៖ មូលដ្ឋានទិន្នន័យដែលរៀបចំដោយបណ្តាញ Occentus (EU)
  6. សិទ្ធិ៖ នៅពេលណាដែលអ្នកអាចដាក់កម្រិតទាញយកមកវិញនិងលុបព័ត៌មានរបស់អ្នក។