Šta je binarni sat. Jednostavan binarni sat na mikrokontroleru

U želji da sastavim binarni sat, nikada nisam našao prihvatljiv gotov dizajn na netu. Većina satova imala je ozbiljan nedostatak - kada je napajanje isključeno, podešavanja vremena su zalutala. Srećom, malo pre toga sam počeo da učim C jezik i AVR mikrokontrolere. Stoga je odlučeno da se stečeno znanje učvrsti praktičnim iskustvom, a istovremeno izmisli točak. Također volim zelene LED diode koje trepere.



Šema



RTC

Problem čuvanja trenutnih postavki savršeno je riješen satom realnog vremena (RTC). Moj izbor je pao na DS1307 čip.

Prema proizvođaču, kada je napajanje isključeno, može zadržati vrijeme i datum 10 godina, trošeći energiju jedne CR2032 litijumske baterije. Odnosno, sat nastavlja da otkucava, zadržavajući prihvatljivu tačnost. Vrijeme ne zaluta, ponovo upalimo sat, dobijamo realnom vremenu na brojčaniku, a ne vrijeme u trenutku isključivanja. Mikrokolo komunicira sa mikrokontrolerom preko "kvadratne sabirnice" I 2 C, izvještavajući tačno vreme i preuzimanja novih vrijednosti.

Srce uređaja

Izbor Mega32a mikrokontrolera diktirali su sljedeći faktori:
Dovoljno portova da izbjegnem korištenje dinamičke indikacije, što mi se ne sviđa, prvenstveno zato što je neugodno za oko (treptanje sa visoka frekvencija u svakom slučaju neprirodno). Upoznao sam je igrajući se sa PIC mikrokontrolerima na jeziku Proton PICBasic, i ako je moguće ne koristiti dinamičku indikaciju, radije bih to učinio.
Relativno niska cijena od 130 rubalja (Mega16a, na primjer, košta isto), a s popustom je općenito 104 rublje.
Jasno QPF-44 pakovanje, sa pogodnim pinoutom


Port "A" prikazuje sekunde, port "B" - minute i port "C" - sate. Vrlo je zgodno da možete dodijeliti vrijednosti vremena primljene od DS1307 portovima bez ikakvih promjena. Tasteri su povezani na port "D" (pinovi 3 - 7), pinovi 0 i 1 rade kao linija sata (SCL) i linija serijskih podataka (SDA), respektivno. RTC čip je postavljen tako da emituje impulse na frekvenciji od 1 herca na svojoj sedmoj nozi. Ova noga je spojena na 3. pin priključka "D". Sam ovaj port je konfigurisan kao ulaz, a za svaki slučaj, interni pull-up su uključeni u power plus, duplirani SMD otpornicima sa spoljašnje strane. Takve radnje u potpunosti štite od bilo kakvih iznenađenja.

LED diode


Odabrao sam LED diode u mat kućištu sa niskim sjajem. Isprva su testirane svijetle diode u prozirnom kućištu, ali čak i pri struji od 3 mA svijetle su previše jako i neravnomjerno, što je opet izazvalo nelagodu. S padom napona na diodi od 2 volta, naponom napajanja od 5 volti i otpornikom od 1 kΩ, vrijednost struje koja teče kroz diodu bit će (5 - 2) / 1000 = 3 mA. Ova vrijednost je odabrana empirijski, a svjetlina sjaja je odlična za slabo osvijetljenu sobu. Ako planirate postaviti sat ispod prave linije sunčeva svetlost, onda treba smanjiti vrijednost otpornika, do 200 oma, za svjetliji sjaj (hvala cap).

Dugmad

Na posebnoj ploči s dugmadima je osiguran (štitit će nas od slučajnog udarca u glavu), u obliku još jednog Bt6 dugmeta. Vrijeme se može urediti tako da ga prvo držite.

Soft

Kod je napisan u okruženju CodeVisionAvr.
Program počinje činjenicom da konfigurišemo periferne uređaje mikrokontrolera.
Konfiguriranje portova (A, B, C - izlaz, D - ulaz)
Za svaki slučaj, predviđena je pauza od 300 ms kako bi DS1307 imao vremena da "dođe k svijesti"
Inicijalizacija "square bus"
Konfiguriramo RTC čip tako da svake sekunde proizvodi pravokutni impuls na SQW / OUT pinu
Provjerite da li je CLR dugme pritisnuto. Ako da, onda resetirajte sve vrijednosti na 0
Omogući globalne prekide
Da, nekoliko riječi o njima. Koristimo eksterne prekide INT0 na PD2 na padu, tj. svake sekunde program će ići do rukovaoca prekida, u kojem čitamo vrijednosti vremena sa DS1307 i prikazujemo ih na LED indikatorima.
Ulazimo u beskrajnu petlju, gdje ispitujemo dugmad
Ako se pritisne dugme, dodajte (oduzmite) sat (minutu) i pošaljite novu vrednost putem I2C
Usput provjeravamo da li se nove vremenske vrijednosti uklapaju u raspon od 24 sata i 60 minuta.

Štampana ploča

Ploča je izrađena po Great Space Laser-Iron tehnologiji na jednostranom tekstuolitu. U izradi gornje ploče korišten je običan papir (neuspješan eksperiment).


Postoji mnogo varijacija ove tehnologije. Po meni je ovaj najbolji:
1. Izrezali smo komad tekstolita prave veličine.
2. Skidamo kožu s vrhova, oslobađajući se štetnih neravnina.
3. Podmažite buduću dasku prahom za čišćenje ili pastom za zube i istrljajte je tvrdom stranom sunđera do sjaja.
4. Naš komad umočimo na nekoliko desetina sekundi u slabu otopinu toplog željeznog klorida, dok se ne pojavi jednolična, mat, tamno-smeđa površina. Kada se izvuče iz otopine, tekućina treba potpuno navlažiti površinu.
5. Isperite kaku, lagano osušite, ne dodirujući površinu prstima ili bilo čim drugim masnim. Odmah stavite na čist papir sa bakrenim premazom kako biste izbjegli prašinu ili dlake.
6. Štampamo sliku u ogledalu na tankom (!) sjajnom papiru, možete je izrezati iz časopisa, na primjer. Crtež ne diramo rukama. Pažljivo izrežite, položite uzorak.
7. Nanesite na pripremljeni komad tekstolita, peglajte kroz 1-2 sloja čistog papira, peglu postavite na maksimalnu temperaturu. 10 sekundi bi trebalo biti dovoljno, jer ako pretjerate, staze će se izravnati i preliti jedna u drugu. Toner treba u potpunosti da prianja za bakar.
8. Potopite pod tekuću toplu vodu, možete ostaviti u vodi 10 minuta. Lagano otkinite, ostružite papir. Stari mi pomaže Četkica za zube. Uklonite preostale komade papira iglom. Toner ostaje na tekstuolitu.
9. Zagrijemo jaku otopinu željeznog klorida u vodenoj kupelji, bacimo tamo našu dasku i prskamo nekoliko minuta (prema van't Hoffovom pravilu, s povećanjem temperature za 10 stepeni, brzina reakcije se povećava za 2 puta Bakar nestaje pred našim očima.Možete i ne grijte, ali će trebati duže čekati.
10. Čim nestane sav nepotreban bakar, isključite plin, izvucite (na primjer, pincetom) ploču, pokušajte oprati šporet i prste od željeznog hlorida. Isperite ga sa ploče tekućom vodom.
11. Uzmite aceton (sredstvo za skidanje laka za nokte) i obrišite toner. Možete ga pokušati ostrugati brusnim papirom ili sunđerom.
12. Bušimo rupe.
13. Ludim. Ja koristim LTI kao fluks, a savjetujem vam, međutim, nakon kalajisanja i lemljenja, ovaj flus se mora isprati (istim acetonom, a po mogućnosti mješavinom alkohol-benzin 1:1), jer LTIshka ima određenu provodljivost.
Svi radovi se moraju izvoditi u ventiliranom prostoru, u procesu
oslobađa se mnogo štetnih isparenja.


Ploče su međusobno povezane PBS i PLD konektorima. Prvi su spojeni na gornju ploču pomoću tanke montažne žice, može se izdvojiti, na primjer, iz starog LPT kabela ili adaptera.


Drugi su zalemljeni na donju ploču, a pinovi koji vode do tastature su savijeni (vidi sliku).

PCB-ovi u SprintLayout5.0 formatu su uključeni. Ima par grešaka na fotografijama, ali su već ispravljene u priloženim fajlovima.

firmver mikrokontrolera

Za ovaj slučaj sastavljen je USBasp programator, što se može vidjeti na gornjoj fotografiji. Sasvim lijepa stvar, laka za korištenje i uvijek je možete nositi sa sobom u džepu (nadam se da to niko neće uraditi). Za mega32 firmware, morat ćete instalirati “Slow SCK” kratkospojnik.
Osigurači:
Nizak osigurač = 0xC4
Visoki osigurač = 0xD9
Naš mikrokontroler je taktiran od internog RC oscilatora sa frekvencijom od 8 MHz. Morao sam da onemogućim JTAG interfejs na PortC, inače neke LED diode ne bi svetlele.
Ploča ima ISP10 konektor za brzo flešovanje/debagovanje.

prednji panel

Izrađen od aluminijumske ploče širine 40 mm i debljine 1,5 mm. Ima 18 izbušenih rupa prečnika 5 mm i 4 rupe prečnika 3 mm za pričvršćivanje nosača.


Prvo je šablon odštampan i zalijepljen na ploču. Zatim su izbušene pilot rupe bušilicom od 1,5 mm, nakon čega su glavne rupe izbušene bušilicama potrebnih promjera.


Na kraju je ploča savijena, brušena finim brusnim papirom i polirana GOI pastom.
Šablon je priložen priloženim datotekama kao izgled datoteke 5.0

Crvena LED dioda u gornjem lijevom uglu

Ponavlja impulse koje generiše DS1307 na 7. kraku, tj. treperi svake sekunde. Mali p-kanalni MOSFET tranzistor radi u ključnom modu, otvarajući se i zatvarajući u vremenu s impulsima. U početku sam htio napraviti pozadinsko osvjetljenje (kao Ambilight), za koje je napravljen CMOS inverter na komplementarnom paru tranzistora (da budemo sigurni). Ali to mi se nije svidjelo. Za jednu LED diodu dovoljan je jedan tranzistor, čak možete koristiti i pnp tip bc857. Koristio sam irlml6402 ili irlml6302 neupakovani mosfet.

Fajlovi

Izvori, hex fajl, štampane ploče, šeme, proteus šeme i osigurači su uključeni na ovoj slici kao arhiva. Nemam povjerenja u skladišta datoteka, još nemam vlastiti server, pa će po mom amaterskom mišljenju Habr biti najpouzdanije mjesto za pohranu. Korisnici Windowsa mogu doći do datoteka otvaranjem sačuvane slike pomoću WinRar-a.
Da, ovo je slika.

Video

Zaključak

Možete koristiti bilo koji izvor napajanja koji može isporučiti 5 volti pri struji od 70 mA. USB port je dobar za ovo. Glavna stvar je da je snaga "čista" i da ne prelazi 5 volti. Napajanjem sata iz DC-DC konvertera sa mc34063 čipa sa nivoom buke od ~ 50 mV, primetio sam propuste prilikom podešavanja vremena. Sada se uređaj napaja prekidačem koji visi u blizini. Ispušta tačno 5 volti. Što se dobro tiče, još uvijek morate napraviti neprobojnu diodu i neku vrstu linearnog stabilizatora za 3,3 - 5 volti.
Nedostatak funkcija budilnika i prikaza datuma u satu je sasvim opravdan: oba su prisutna u telefonu, što znači da ih niko najvjerovatnije neće koristiti u binarnom satu (hvala ujaku Ockhamu na ovom zaključku).

Ideja o korištenju binarnog sistema za predstavljanje vremena pojavila se s pojavom elektronskih računara. Pojedinačne kopije domaćih binarnih satova često su kreirali entuzijasti elektronike. Međutim, binarni satovi su se rijetko koristili zbog nedostatka fabričke proizvodnje i velike težine.

Britanska kompanija Anelace je 2008. godine prvi put objavila binarni ručni sat sa LED ekranom. Ovaj događaj naišao je na buran odjek među mladima. Danas binarne satove proizvode ne samo proizvođači računarske opreme, već i tvornice nakita.

Kako odabrati

Postoje modeli binarnih satova sa različitim brojem „brojčanika“. Na nekima možete zamijeniti diodno pozadinsko osvjetljenje. Binarni satovi se mogu podijeliti u dvije široke kategorije: osvijetljeni pojasom i svijetleći indikator ključa. U prvom, morate zbrojiti stepene dvojke, u drugom, morate pretvoriti binarni broj u decimalni. Prva metoda je poželjnija za ljude koji žele privući pažnju, druga - za programere i ljude koji žele znati vrijeme što je prije moguće. Radi lakšeg korišćenja, možete kupiti binarne satove sa potpisanim diodama (1, 2, 4, 8, itd.).

Gdje bih mogao kupiti

Postoji mnogo isplativih aplikacija za kupovinu binarnih satova u online trgovinama. Na specijaliziranim trgovačkim uslugama možete preuzeti ekskluzivne modele različitih materijala. eBay je najprometnije tržište e-trgovine na svijetu. Na eBay web stranici, u odjeljku "Dodatna oprema", postoje hiljade opcija za binarne satove. Da biste ih platili, trebat će vam PayPal e-valuta.

Kako koristiti

Da biste koristili binarni sat u svakodnevnom životu, morate brzo prevesti brojeve i dodati ih jedan drugom. Pročitajte upute za svoj sat, navedite koji red dioda je odgovoran za sat, a koji za minut. Ako nema uputa, pokušajte to odrediti eksperimentalno - skala minuta će se mijenjati brže od sata. Ukupno vrijeme sastoji se od satne i minutne skale. Recimo da su prva i peta dioda upaljene na satnoj skali, a treća i četvrta dioda su na skali minuta. To je da satna skala prikazuje 2 na nultu potenciju i 2 na četvrtu, odnosno 1 + 16 = 17 sati. Zbir minuta: 2 na kvadrat plus 2 na kub: 12 minuta. Dakle, binarni sat pokazuje 17:12.

Prednosti binarnih satova

Binarni satovi imaju pozitivan učinak na matematičke sposobnosti - jer svaki put kada trebate znati vrijeme, morat ćete izvršiti jednostavne aritmetičke operacije. Oni također doprinose razvoju sposobnosti programiranja - na kraju krajeva, zadatak kodiranja binarnih brojeva u potpunosti se odnosi na.

Privlače pažnju, mnogi ljudi će se diviti vašim "aritmetičkim sposobnostima". Osim toga, binarni sat predstavlja dizajn, nosi tehnološki "stil budućnosti". Zidni (stolni) binarni sat može postati dio vašeg interijera.

Ovaj neobičan džepni sat može biti originalan poklon. Indikator vremena u njima je izgrađen na samo šest pojedinačnih LED dioda. Tajna je u tome što broj sati i broj minuta trenutnog vremena oni prikazuju u obliku binarnih brojeva i tek kada se pritisnu odgovarajuća dugmad, ostatak mikrokontrolera sata "spava" i indikator je isključen. , što naglo smanjuje struju koja se troši iz litijumske baterije.

Da bismo razumeli šta je binarni sistem brojeva, pokrenimo računar koji je dostupan operativni sistem Windows program"Kalkulator". Jer u razne verzije sistemi, ovi programi se razlikuju, ovde ćemo razmotriti onaj koji je uključen u Windows XP. Nakon pokretanja programa, pronađite u njegovom prozoru i kliknite na dugme na ekranu "Prikaz", zatim izaberite "Inženjering" u padajućoj listi . Nakon toga, prijašnjim jednostavnim funkcijama kalkulatora bit će dodane mnoge druge funkcije, što će vam omogućiti izvođenje složenih proračuna. Prekidač sistema brojeva će se pojaviti lijevo ispod indikatora: "Hex" (heksadecimalni), "Dec" (decimalni), "Oct" (oktalni) i "Bin" (binarni). Odmah nakon pokretanja programa nalazi se u poziciji "Dec". To znači da će svi početni podaci za proračune i njihovi rezultati biti prikazani u decimalnom brojevnom sistemu koji nam je poznat.

Na primjer, birajte broj 58 pritiskom na odgovarajuće numeričke tipke. Ako sada prebacimo prekidač u poziciju "Bin" klikom na odgovarajući natpis, tada će se u prozoru rezultata brojevi 58 promijeniti u 111010. To je isti broj predstavljen u binarnom brojevnom sistemu. Da biste to provjerili, možete koristiti tablicu koja objašnjava princip formiranja binarnih i decimalnih brojeva. Binarne cifre, za razliku od decimalnih, mogu imati samo dvije vrijednosti - 0 i 1. Težine binarnih cifara se povećavaju s desna na lijevo dva puta, a ne 10 puta, kao u decimalnom sistemu.

Binarni sistem se široko koristi u digitalnim uređajima, jer vam omogućava da se snađete sa jednostavnim logičkih elemenata, razlikuju samo dvije vrijednosti - 0 i 1. Danas mnoge kompanije proizvode takve satove. Da biste to potvrdili, dovoljno je pretražiti internet za frazom "Binary clock".

Ali za radio-amatera je mnogo zanimljivije ne kupiti, već napraviti binarni sat vlastitim rukama. U predloženom dizajnu postoje samo tri kontrolna dugmeta: uključivanje indikacije trenutnog sata, minuta i ispravljanje vremena - tačna postavka trenutka kada sat počinje. Sat je zaštićen od kvarova uzrokovanih slučajnim pritiskom na dugme za korekciju. Izgrađeni su na široko poznatim i često korištenim elementima radio-amatera.

Šema sata je prikazana na sl. 1. Odbrojavanje vodi i prikazuje ga na LED diodama mikrokontrolera DD1. Njegova taktna frekvencija od 32768 Hz je stabilizovana niskofrekventnim ZQ1 "clock" kvarcnim rezonatorom. Uređaj napaja G1 litijumska ćelija napona od 3 V. Kao što znate, takve ćelije karakteriše minimalno samopražnjenje i sposobnost rada na niskim temperaturama. Kondenzator C1 potiskuje visokofrekventne impulse. Zbog niske taktne frekvencije, mikrokontroler troši malu struju, što omogućava rad sa satom dugo vremena bez promjene baterije.

LED diode HL1-HL7 su povezane na izlaze mikrokontrolera RA0-RA4, RB5, RB6 preko ograničavajućih otpornika R1-R7. Šest od njih (HL2 - HL7) prikazuje vrijeme, mogu prikazati brojeve od 0 (sve isključeno) do 63 (sve uključeno). Ovo vam omogućava da naizmjence prikažete broj sati od 0 do 23 i minuta od 0 do 59. Težine bitova kojima odgovaraju prikazane su pored LED dioda.

Uključite prikaz sati, odnosno minuta, pomoću tipki SB1 i SB2, povezanih na ulaze RB0 i RB1 mikrokontrolera. Pošto se indikacija uključuje samo nekoliko sekundi, tokom kojih se dugme drži pritisnuto, energija baterije se troši štedljivo, služi dugo vrijeme. Dugme SB3 spojeno na RB7 ulaz mikrokontrolera koristi se za korekciju vremena. To treba učiniti tek početkom sljedećeg sata, pošto se brojači minuta i sekundi resetuju tokom procesa podešavanja.

LED HL1 kada se pritisne dugme SB1 ili SB2 treperi svake sekunde. Služi kao indikator aktivnosti uređaja i omogućava vam da potvrdite da radi na nula sati ili minuta. Da nije bilo, bilo bi neprijatna situacija kada, kada se pritisne dugme, nijedna LED lampica ne daje "znakove života".

Pin 4 mikrokontrolera, koji obično služi kao ulaz za njegovo postavljanje u početno stanje MCLR, u ovom slučaju je konfigurisan kao običan digitalni ulaz RA5. Početno podešavanje pri uključivanju vrši interno mikrokontroler. Da bi se eliminisale nasumične smetnje, RA5 ulaz je povezan na zajedničku žicu. Preostale linije porta A softver konfiguriše kao izlaze.

Konfiguriše linije RB0, RB1, RB7 porta B kao ulaze i povezuje interne otpornike na njih, održavajući visok logički nivo na ovim ulazima (kada se tasteri otpuste). Preostale linije porta B su konfigurisane kao izlazi. Na kraju postupka inicijalizacije, program uključuje svaku LED diodu zauzvrat na sekundu. Ovo vam omogućava da procenite ispravnost instalacije i da se uverite da program radi.

Vrijeme odbrojavanja u mikrokontroleru DD1 je ugrađeno u tajmer T1. Program ga postavlja tako da generiše zahtjev za prekid svake sekunde. Generira se rutina za rukovanje prekidima ram memorija mikrokontroler vrijednost trenutnog vremena - sekunde, minute i sate.

Rukovalac prekida pri svakom pozivu takođe proverava logičke nivoe na ulazima RB0, RB1 i RB7, u zavisnosti od stanja tastera SB1-SB3. Na niskim nivoima na ulazima RB0 ili RB1, uključuje se indikacija sati ili minuta. Sa niskim nivoom na ulazu RB7, što ukazuje na pritisnut taster SB3, i istovremeno niskim nivoom na jednom od ulaza RB0 ili RB1, vreme se podešava. Ovo se radi kako bi se smanjila vjerovatnoća kvara sata kao rezultat slučajnog pritiskanja tipke SB3.

Program mikrokontrolera je mali i nekompliciran. Bez ikakvih promjena, može raditi i u PIC16F628A i PIC16F628 mikrokontrolerima. Izvorni tekst programa, priložen uz članak, opremljen je detaljnim komentarima koji vam omogućavaju da razumijete algoritam rada, pa čak i poboljšate program. Na primjer, unesite indikaciju sekundi ili način rada štoperice. Da biste to učinili, nije potrebno mijenjati krug sata, jer možete organizirati uključivanje ovih funkcija istovremenim pritiskom na tipke SB1 i SB2.

Podešavanje vremena se vrši pomoću dugmeta SB3. Kada se izvrši, vrijednosti minuta i sekundi se vraćaju na nulu. Ako su minute bile manje od 30, broj sati se ne mijenja, u suprotnom se povećava za jedan. Ako se dugme SB3 drži pritisnuto, svake sekunde će se broju sati dodati jedinica. Ovo može biti potrebno pri početnom postavljanju trenutnog vremena nakon uključivanja napajanja, kao i pri prelasku s ljetnog na zimsko računanje vremena i obrnuto.

Da biste naznačili sekunde u programu, morate pronaći mjesto gdje se obrađuje stanje dugmadi i tamo dodati izlaz koji označava vrijednost pohranjenu u registru brojača sekundi. Da biste ušli u način rada štoperice, morat ćete koristiti dodatni registar. Kada se pritisnu dva dugmeta, njegov sadržaj bi trebao biti uvećan za jedno svake sekunde i prikazan. Modifikovani programski tekst treba prevesti u MPLAB okruženje, a rezultujuću HEX datoteku treba učitati u memoriju mikrokontrolera.

Sat je sastavljen na fragment matične ploče, kao što je prikazano na sl. 2. Montirani otpornici (površinska montaža). poleđina naknade. FYL-3014SRC LED diode se mogu zamijeniti drugim. Da biste provjerili prikladnost LED-a, povežite ga na izvor napona od 3 V kroz otpornik od 390 oma i procijenite svjetlinu sjaja.

Kondenzatori, otpornici, dugmad - bilo koji mali. Poželjno je da dugme SB3 bude sa skraćenim potisnikom. Njegov kraj ne treba da se izdiže iznad površine kućišta sata, pa čak i da bude uvučen tako da se može pritisnuti samo šiljatim predmetom. Takvo konstruktivno rješenje služi kao dodatna zaštita od slučajnog pritiskanja gumba.