DS3231: वास्तविक समय घडी र तपाईंको Ardino को लागि पात्रो

DS3231

केही परियोजनाहरूमा समय, घन्टा, वा मिति प्रमाण आवश्यक छ। या त समयका आधारमा केहि कार्यहरू गर्नु पर्ने भएकोले, घटनाहरूको दर्ता वा रेजिष्ट्रेसन कायम गर्न, प्रणालीमा समय राख्न, वा साधारण रूपमा डिजिटल घडी सिर्जना गर्न। Arduino संग। संग DS3231 तपाईं यसलाई प्राप्त गर्न सक्नुहुन्छ, अर्को घटकहरू त्यो हामी सूचीमा थप्छौं।

DS3231 मोड्युल हो जुन तपाईले खोज्नु भएको थियो र यहाँ तपाईले यसको नियन्त्रणको लागि चाहिने सबै कुरा पाउनुहुनेछ र म तपाईलाई कसरी एउटा उदाहरण देखाउने छ यसलाई अरुडिनोसँग एकीकृत गर्नुहोस् एक व्यावहारिक उदाहरण संग ...

DS3231 के हो?

DS3231

सबै भन्दा पहिले, तपाइँ एक के थाहा हुनुपर्छ RTC (वास्तविक समय घडी), वा वास्तविक समय घडी। यी चिपहरू धेरै पटक अनुप्रयोगहरूको समूहमा हुन्छन्, वास्तवमा, तपाईको पीसीमा ती मध्ये एउटा तपाईंको मदरबोर्डमा छ, र यो पनि एक द्वारा संचालित हो CR2032 ब्याट्री पनि। यो त्यो हो जुन BIOS / UEFI मा समय र कन्फिगरेसन कायम गर्दछ र जहाँबाट अपरेटि system सिस्टमले समयमै बूटिंग गर्दा लिन्छ (यद्यपि, इन्टरनेटको साथ, सर्भरहरूको साथ समक्रमण अझ ठूलो परिशुद्धताका लागि प्रयोग गर्न सकिन्छ, तर यो अर्को कथा हो ...)।

आरटीसीले के गर्दछ समय मापन प्राप्त गर्नु भनेको त्यो सरल छ। अन्य प्रकारका इलेक्ट्रोनिक घडीहरूको भिन्नता भनेको तिनीहरू केवल सरल छन् समय मापन गर्नुहोस्, र यो घडी संकेत दालहरू गणना गरेर, यसको फ्रिक्वेन्सी र अवधिहरू थाहा पाएर गर्छ। समयको साथसाथै, एक आरटीसीले तपाईंलाई दिन, हप्ता, महिना र वर्षहरूको लेखा राख्न पनि अनुमति दिन्छ। त्यो हो, पूरा मिति ...

यो सम्भव हुनको लागि, RTC सँग a हुनुपर्दछ Xtal वा क्वार्ट्ज क्रिस्टल जो एक गुंजयमानकर्ता को रूप मा कार्य गर्दछ, जो एक आवृत्ति प्रदान गर्दछ। थप रूपमा, तपाईंलाई गन्ती गर्न र मेमोरीमा मिति भण्डारण गर्न सक्षम इलेक्ट्रोनिक सर्किटरी आवश्यक छ। सर्किटरी सेकेन्ड, मिनेट, घण्टा, दिन, हप्ता, महिना र वर्ष गणना गर्न सक्षम हुनुपर्दछ।

ईएसए मेमोरी अस्थिर छयसैले यसको ब्याट्री आवश्यक पर्दछ, स्थिर शक्ति पाउन। यदि तपाईंसँग ब्याट्री छैन वा यो चालु छ भने, यो मेटिनेछ ... पीसीलाई के हुन्छ जब ब्याट्री सकियो, तिनीहरू गलत समय दिन्छन्। यदि तपाइँ पीसी चालू भएको बेलामा यसलाई कन्फिगर गर्नुहुन्छ भने, समय राखिनेछ, किनकि आरटीसी पावर भइरहेको छ, तर यो प्रक्रियाको क्रममा हुन्छ जब यो बन्द छ जब यो ब्याट्री आवश्यक पर्दा ...

DIY प्रोजेक्टहरूको लागि, निर्माताहरूले प्राय: दुई साझा RTC चिपहरू प्रयोग गर्छन्, जुन हो DS1307 र DS3231। दुबै म्याक्सिमले बनेका थिए (पहिले डलास सेमीकन्डक्टर), र DS3231 दुईको अधिक शुद्ध छ, किनकि यो पहिलेको जस्तो तापक्रमको भिन्नताबाट प्रभावित हुँदैन। तसर्थ, यो तापमान मा निर्भर गर्दछ यति धेरै उतार छैन, र यो समय अधिक सटीक राख्छ।

कहिलेकाँहि देख्न सकिने तापमान भिन्नताहरूको साथ, DS1307 प्रति दिन १ वा २ मिनेट जति ढिला हुन सक्दछ। केहि अनुप्रयोगहरूका लागि असहनीय।

DS3231 यो भिन्नताहरू द्वारा अप्रभावित होईन भन्ने होईन, तर २-pm को शुद्धता सुनिश्चित गर्न अन्तर्निर्मित मापन मापन र क्षतिपूर्ति प्रणाली छ जुन एक बराबर हुनेछ। समय ढिलाइ एक दिनको लगभग १172२ms को बारेमा, जुन हप्तामा १ सेकेन्ड भन्दा बढी अधिक। र अभ्यासमा, तिनीहरू प्राय: एक महिनामा मात्र १ वा २ सेकेन्डमा भिन्न हुन्छन्।

बाटो को रूप मा RTC सँग कुराकानी गर्नुहोस् DS3131 प्राप्त हुने मिति मान प्राप्त गर्न, यो द्वारा गरियो I2C बस। र शक्ति को लागी, तपाई DS2.3 को लागी २.5.5 देखि .3231..4.5v को उपयोग गर्न सक्नुहुनेछ, जुन DS5.5 को लागि to. to देखि .1307.vv भन्दा कम छ, त्यसैले यो अधिक उर्जा कुशल हुन सक्छ र ब्याट्री लामो समयसम्म बनाउन सक्दछ।

साथै, तपाईंलाई थाहा हुनुपर्दछ कि यी मोड्युलहरूमा सामान्यतया a हुन्छ EEPROM अतिरिक्त AT24C32 केहि रेकर्डहरू र अघिल्लो मापनहरू भण्डारण गर्न जुन व्यावहारिक हो।

aPLICACIONES

अनुप्रयोगहरूको लागि, मैले पहिले नै केहि उल्लेख गरिसकें, जस्तै अर्डिनोसँग घडी लागू गर्न, प्रणाली सिर्जना गर्न जुन आधारितमा कार्य गर्दछ समय जे भए पनि, उपकरणहरूमा समय राख्नको लागि जस्तै पीसीहरू र धेरै अन्य इलेक्ट्रोनिक उपकरणहरू र उपकरणहरू, जसमा समय हुन्छ।

मा पनि प्रयोग गर्न सकिन्छ परियोजनाहरू प्रकाश, सिंचाई प्रणाली, डाटाग्लर, आदि का लागि टाइमरहरू सिर्जना गर्न। अनुप्रयोगहरू सबै भन्दा धेरै हुन सक्छ ...

एक RTC DS3231 खरीद गर्नुहोस्

मोड्युल DS3131 सस्तो छ, र तपाईं यसलाई केही विशेष इलेक्ट्रोनिक्स स्टोरहरू वा ठूला स्टोरहरूमा पाउन सक्नुहुन्छ जस्तै eBay, AliExpress, Amazon, आदि। यदि तपाईंसँग एकमा रुचि राख्नुहुन्छ भने, यहाँ केहि सिफारिसहरू छन्:

DS3231 Ardino एकीकरण

Arduino IDE को स्क्रीनशट

यदि तपाईं चाहानुहुन्छ भने तपाइँको DS3231 लाई तपाइँको Arduino बोर्डको साथ एकीकृत गर्नुहोस् र "समयबद्ध" प्रोजेक्टहरू सिर्जना गर्न सुरू गर्नुहोस्, तपाईले पहिले उचित जडानहरू बनाउनु पर्छ। यो जडान गर्न सक्षम हुन, यो को रूप मा सरल छ:

  • DS3231 बोर्डको एसएलसी पिन तपाईंको A5 मा जडान हुनुपर्दछ Arduino UNO.
  • DS3231 को SDA Ardino को A4 मा जडान भएको छ।
  • मोड्युलबाट Vcc अरुडिनोबाट 5V मा जान्छ।
  • GND लाई GND।
याद गर्नुहोस् पुस्तकालय स्थापना गर्न आरटीसी DS3231 प्रयोग गर्नका लागि तपाइँको आर्डिनो आईडीई वा कोडले काम गर्दैन ...

अब तपाईसँग प्रणाली जडित छ, अर्को कुरा भनेको लेख्नु हो स्केच स्रोत कोड यसलाई अनुसूची गर्न। तपाईं कोडहरू परिमार्जन गर्न सक्नुहुनेछ र तिनीहरूलाई तपाईंको आवश्यकतामा अनुकूलन गर्न सक्नुहुनेछ, तर तपाईं आरडुइनोमा जडान भएको आरटीसी DS3231 बाट मात्र मिति प्राप्त गरेर सुरू गर्न सक्नुहुनेछ:

#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. डाटाका लागि उत्तरदायी: मिगुएल gelन्गल ग्याटन
  2. डाटाको उद्देश्य: नियन्त्रण स्पाम, टिप्पणी प्रबन्धन।
  3. वैधानिकता: तपाईंको सहमति
  4. डाटाको सञ्चार: डाटा कानुनी बाध्यता बाहेक तेस्रो पक्षलाई सूचित गरिने छैन।
  5. डाटा भण्डारण: डाटाबेस ओसीन्टस नेटवर्क (EU) द्वारा होस्ट गरिएको
  6. अधिकार: कुनै पनि समयमा तपाईं सीमित गर्न सक्नुहुनेछ, पुन: प्राप्ति र तपाईंको जानकारी मेटाउन।