DS3231: clog agus féilire fíor-ama do do Arduino

DS3231

I roinnt tionscadal is gá cruthúnas a fháil ar an am, an uair, nó an dáta. Bíodh sin mar gheall ar an ngá le feidhmeanna áirithe a chomhlíonadh bunaithe ar am, féilire imeachtaí nó clárúcháin a choinneáil, an t-am a choinneáil i gcóras, nó go simplí clog digiteach a chruthú le Arduino. Le an DS3231 is féidir leat é a fháil, ceann eile de na comhpháirteanna go gcuirimid leis an liosta.

Is é an DS3231 an modúl a bhí á lorg agat, agus anseo gheobhaidh tú gach rud atá uait lena rialú agus taispeánfaidh mé sampla duit freisin ar conas é a chomhtháthú le Arduino le sampla praiticiúil ...

Cad é an DS3231?

DS3231

Ar dtús báire, ba chóir go mbeadh a fhios agat cad a RTC (Clog Fíor-ama), nó clog fíor-ama. Is minic a bhíonn na sceallóga seo i go leor feidhmchlár, i ndáiríre, tá ceann acu ar do mháthairchlár, agus tá sé faoi thiomáint ag a Ceallraí CR2032 freisin. Is é an ceann a choinníonn an t-am agus an chumraíocht sa BIOS / UEFI agus as a dtógann an córas oibriúcháin é agus é ag tosaithe le bheith in am (cé gur féidir anois, leis an Idirlíon, sioncrónú le freastalaithe a úsáid ar mhaithe le cruinneas níos mó, ach seo scéal eile…).

Is é an rud a dhéanann an RTC tomhais ama a fháil, chomh simplí sin. Is é an difríocht ó chineálacha eile uaireadóirí leictreonacha ná go simplí tomhas an t-am, agus déanann sé é sin trí phulsanna comhartha clog a chomhaireamh, agus a mhinicíocht agus a thréimhsí ar an eolas. Chomh maith leis an am, tugann RTC deis duit cuntasaíocht a choinneáil ar laethanta, seachtainí, míonna agus blianta. Is é sin, an dáta iomlán ...

Chun é seo a bheith indéanta, ní mór a Criostail Xtal nó grianchloch a ghníomhóidh mar athshondóir, an ceann a sholáthraíonn an mhinicíocht. Ina theannta sin, teastaíonn ciorcadóireacht leictreonach uait atá in ann an dáta a chomhaireamh agus a stóráil i gcuimhne. Caithfidh an ciorcadóireacht a bheith in ann soicind, nóiméad, uaireanta, laethanta, seachtainí, míonna agus blianta a chomhaireamh.

ESA tá an chuimhne luaineachSin é an fáth go gcaithfidh sé an ceallraí, chun cumhacht leanúnach a bheith aici. Mura bhfuil ceallraí agat nó má ritheann sé as, scriosfar é ... Sin a tharlaíonn do ríomhairí pearsanta nuair a ritheann an ceallraí amach, tugann siad am mícheart. Má chumraíonn tú é agus an ríomhaire ar siúl, coinneofar an t-am, ós rud é go bhfuil an RTC á thiomáint, ach is le linn na bpróiseas a bhíonn sé as nuair a bhíonn an ceallraí sin ag teastáil ...

Maidir le tionscadail DIY, is gnách go n-úsáideann déantúsóirí dhá sceallóg RTC coitianta, is iad sin na DS1307 agus DS3231. Déanann Maxim (Dallas Semiconductor roimhe seo) an dá cheann, agus is é an DS3231 an ceann is cruinne den dá cheann, toisc nach bhfuil na héagsúlachtaí teochta chomh mór agus a dhéanann an chéad cheann. Dá bhrí sin, ní luainíonn sé an oiread sin ag brath ar an teocht, agus coimeádann sé an t-am níos cruinne.

Uaireanta, le difríochtaí teochta suntasacha, d’fhéadfadh an DS1307 a bheith chomh lag le 1 nó 2 nóiméad in aghaidh an lae. Rud do-ghlactha do roinnt iarratas.

Ní hé an DS3231 nach ndéanann athruithe difear dó, ach go bhfuil córais tomhais teochta agus cúitimh ionsuite aige chun cruinneas 2ppm a chinntiú, a bheadh ​​comhionann le a aga moille de thart ar 172ms sa lá, is é sin, beagán níos mó ná 1 soicind sa tseachtain ar a mhéad. Agus go praiticiúil, de ghnáth ní athraíonn siad ach 1 nó 2 shoicind sa mhí.

Maidir leis an mbealach cumarsáid a dhéanamh leis an RTC DS3131 chun na luachanna dáta a fhaigheann sé a fháil, déantar é le Bus I2C. Agus maidir le cumhacht, is féidir leat 2.3 go 5.5v a úsáid don DS3231, atá beagán níos ísle ná an 4.5 go 5.5v don DS1307, ionas gur féidir leis a bheith níos tíosaí ar fhuinneamh agus a dhéanamh go mairfidh an ceallraí níos faide.

Chomh maith leis sin, ba chóir go mbeadh a fhios agat go mbíonn a EEPROM AT24C32 breise roinnt taifead agus tomhais roimhe seo a stóráil, rud atá praiticiúil go leor.

iarratais

Maidir leis na hiarratais, luaigh mé roinnt cheana, mar shampla clog a chur i bhfeidhm le Arduino, chun córas a chruthú a ghníomhaíonn bunaithe ar An t-ám Cibé ar bith, chun an t-am a choinneáil ar threalamh mar ríomhairí pearsanta agus go leor gléasanna agus fearais leictreonacha eile a bhfuil am acu, srl.

Is féidir é a úsáid i tionscadail chun lasc ama a chruthú le haghaidh soilsithe, córais uiscithe, datalogger, srl. Is féidir leis na feidhmchláir a bheith ar an líon is mó ...

Ceannaigh RTC DS3231

An modúl Tá DS3131 saor, agus is féidir leat é a fháil i roinnt siopaí speisialaithe leictreonaice nó i siopaí móra mar eBay, AliExpress, Amazon, srl. Más spéis leat ceann a bheith agat, seo roinnt moltaí:

DS3231 Comhtháthú Arduino

Gabháil scáileáin de Arduino IDE

Más mian leat déan do DS3231 a chomhtháthú le do bhord Arduino agus tionscadail “uainithe” a chruthú, ní mór duit na naisc chuí a dhéanamh ar dtús. Le bheith in ann é a nascadh, tá sé chomh simplí le:

  • Caithfidh bioráin SLC an bhoird DS3231 a bheith ceangailte leis an A5 de do chuid Arduino UNO.
  • Tá SDA den DS3231 ceangailte le A4 de Arduino.
  • Rachaidh Vcc ón modúl go 5V ó Arduino.
  • GND go GND.
Cuimhnigh an leabharlann a shuiteáil chun an RTC DS3231 a úsáid i do Arduino IDE nó ní oibreoidh an cód ...

Anois go bhfuil an córas ceangailte agat, is é an chéad rud eile an cód foinse sceitse a ríomhchlárú. Féadfaidh tú na cóid a mhodhnú agus iad a chur in oiriúint do do riachtanais, ach d’fhéadfá tosú tríd an dáta a fháil ó RTC DS3231 ceangailte le 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
}

Agus d’fhonn an dáta RTC a úsáid go tasc éigin a sceidealú, mar shampla chun soilse a chasadh air nó as, le haghaidh uisciú uathoibríoch, nó chun aláram a fhuaimniú, srl. Cuimhnigh gur féidir leat trasraitheoirí a úsáid chun gairis voltais níos airde a láimhseáil sealaíochta:

#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);
}


Cloíonn ábhar an ailt lenár bprionsabail eitic eagarthóireachta. Chun earráid a thuairisciú cliceáil anseo.

Bí ar an chéad trácht

Fág do thrácht

Ní thabharfar do sheoladh r-phoist a fhoilsiú. Réimsí riachtanacha atá marcáilte le *

*

*

  1. Freagrach as na sonraí: Miguel Ángel Gatón
  2. Cuspóir na sonraí: SPAM a rialú, bainistíocht trácht.
  3. Legitimation: Do thoiliú
  4. Na sonraí a chur in iúl: Ní chuirfear na sonraí in iúl do thríú páirtithe ach amháin trí oibleagáid dhlíthiúil.
  5. Stóráil sonraí: Bunachar sonraí arna óstáil ag Occentus Networks (EU)
  6. Cearta: Tráth ar bith is féidir leat do chuid faisnéise a theorannú, a aisghabháil agus a scriosadh.