Šis Arduino bāzētais reālā laika pulkstenis ir digitālais pulkstenis reālā laika attēlošanai, izmantojot RTC IC DS1307, kas darbojas uz I2C protokola. Reālā laika pulkstenis nozīmē, ka tas darbojas pat pēc strāvas padeves pārtraukuma. Kad barošana tiek pievienota atkārtoti, tā parāda reālo laiku, neskatoties uz laiku un ilgumu, kāds tas bija izslēgtā stāvoklī. Šajā Arduino modinātāja projektā esam izmantojuši 16x2 LCD moduli, lai parādītu laiku formātā "stunda, minūte, sekundes, datums, mēnesis un gads". Pievienota arī trauksmes opcija, un mēs varam iestatīt trauksmes laiku. Kad trauksmes laiks ir saglabāts arduino iekšējā EEPROM, tas tiek saglabāts pat pēc atiestatīšanas vai elektrības padeves pārtraukuma. Reāllaika pulksteņi parasti tiek izmantoti mūsu datoros, mājās, birojos un elektronikas ierīcēs, lai tos atjauninātu ar reāllaiku.
I2C protokols ir metode divu vai vairāku ierīču, izmantojot divus vadus, savienošanai ar vienu sistēmu, un tāpēc šo protokolu sauc arī par divu vadu protokolu. To var izmantot, lai sazinātos ar 127 ierīcēm ar vienu ierīci vai procesoru. Lielākā daļa I2C ierīču darbojas ar 100Khz frekvenci.
Datu rakstīšanas pamatsistēmas vergam darbības (vergu saņemšanas režīms)
- Nosūta vergam START nosacījumu.
- Nosūta verga adresi vergam.
- Nosūtīt rakstīšanas bitu (0) vergam.
- Saņemts ACK bits no verga
- Nosūta vārdus adrese vergam.
- Saņemts ACK bits no verga
- Nosūta datus vergam.
- Saņemts ACK bits no verga.
- Un pēdējais nosūta STOP nosacījumu vergam.
Darbības datu nolasīšanai no verga līdz galvenajam (vergu pārraides režīms)
- Nosūta vergam START nosacījumu.
- Nosūta verga adresi vergam.
- Nosūtīt lasāmajam bitam (1) vergu.
- Saņemts ACK bits no verga
- Saņemti dati no verga
- Saņemts ACK bits no verga.
- Nosūta STOP nosacījumu vergam.
Lai izveidotu šo RTC DS1307 IC balstīto digitālo pulksteni, mēs šeit izmantojām Arduino Pro Mini, bet jūs varat izmantot arī jebkuru citu Arduino modeli, piemēram, Arduino Uno vai Arduino Nano. Kopā ar Arduino dēli, DS1307 RTC IC, mēs esam izmantojuši 16x2 LCD moduli, lai parādītu laiku un datumu, kristāla oscialatoru, 7805 sprieguma regulatoru, skaņas signālu un dažus tranzistorus un rezistorus.
Shēmas shēma un apraksts
Šajā Arduino bāzētajā digitālā pulksteņa ķēdē mēs esam izmantojuši trīs galvenos komponentus, kas ir IC DS1307, Arduino Pro Mini Board un 16x2 LCD modulis.
Šeit arduino tiek izmantots, lai nolasītu laiku no ds1307 un parādītu to uz 16x2 LCD. DS1307 nosūta laiku / datumu, izmantojot 2 rindas, arduino. Trauksmes indikācijai tiek izmantots arī skaņas signāls, kas pīkst, kad trauksme tiek aktivizēta. Lai saprastu šī reālā laika pulksteņa darbību, zemāk ir parādīta blokshēma.
Kā redzat ķēdes shēmā, DS1307 mikroshēmas tapas SDA un SCL ir savienotas arduino tapām SDA un SCL ar pievilkšanas rezistoru, kas datu un pulksteņa līnijās tur noklusējuma vērtību HIGH. 32.768KHz kristāla oscilatoru ir saistīta ar DS1307 čipu ģenerēšanai precīzu 1 sekunžu aizture, un 3 voltu akumulators ir arī saistīts ar pin 3 rd (BAT) un DS1307 kas notur laiku darboties pēc elektroenerģijas neveiksmes. 16x2 LCD ir savienots ar arduino 4 bitu režīmā. Vadības adata RS, RW un En ir tieši savienota ar aradino tapām 2, GND un 3. Un datu tapa D0-D7 ir savienota ar arduino 4, 5, 6, 7. Caur NPN BC547 tranzistoru, kura pamatnē ir 1 k rezistors, skaļrunis ir savienots ar arduino tapas numuru 13.
Trīs pogas, proti, iestatīts, INC un Next, tiek izmantotas, lai iestatītu trauksmi arduino piespraudei 12, 11 un 10 aktīvā zemā režīmā. Nospiežot iestatīt, aktivizējas trauksmes iestatīšanas režīms, un tagad mums ir jāiestata trauksme, izmantojot pogu INC, un poga Tālāk tiek izmantota, lai pārietu uz ciparu. Pilnīga šī reālā laika pulksteņa iestatīšana ar trauksmi ir parādīta zemāk esošajā attēlā. Jūs varat arī pārbaudīt detalizētu apmācību par digitālo modinātāju ar AVR mikrokontrolleru.
Programmas apraksts
Lai ieprogrammētu šo reālā laika pulksteni, esam izmantojuši dažas bibliotēkas, lai iegūtu laiku / datumu no DS1307 un parādītu LCD, kas ir norādīts zemāk:
RTC, LCD un ieejas izejas inicializēšana tiek veikta iestatīšanas ciklā.
Pārējās lietas, piemēram, lasīšanas laiks, trauksmes iestatīšana tiek veikta tukšās cilnes sadaļā.