Sadržaj:
Video: Wort-Uhr: 5 koraka
2025 Autor: John Day | [email protected]. Zadnja izmjena: 2025-01-13 06:57
Zdravo zajedno!
Ovo će biti moje prvo uputstvo, a ako imate bilo kakvih ideja kako to poboljšati ili olakšati razumijevanje, ne ustručavajte se kontaktirati me!
Pa, na prvu, ovakav "sat" nije moja ideja! Vidio sam puno interneta i mogu se naručiti za samo nekoliko dolara u različitim web trgovinama. Ali nisam htio kupiti jedan, želio sam napraviti svoj vlastiti da naučim i shvatim kako funkcionira.
Jednom riječju za "ne-njemačke" članove … Žao mi je zbog činjenice da je ovo samo "German Wort Uhr". Možda se lako može prevesti u engleski ili bilo koji drugi jezik, ali kako sam ja njemački, napravio sam to na svom jeziku. Ako vam je potrebna podrška za vaš jezik, obratite mi se i ja ću vam pokušati pomoći.
Pa počnimo…
Korak 1: Shema
Shema je jasna i ako je slika loša za čitanje, postoji i PDF datoteka.
Počnimo u donjem lijevom kutu. Postoji jednostavno napajanje koje koristi LM7805 za generiranje stabilnog 5V izlaza za PIC, registre pomaka (74HC164) i čip u stvarnom vremenu DS3231. Sve LED diode se također napajaju iz ovog dijela. D22 na desnom kraju služi samo za označavanje napajanja i može se lako ostaviti odvojeno ako se ne želi.
Možete koristiti bilo koje istosmjerno napajanje za sat sa manje od 40 V, ali tada trebate odabrati odgovarajuću vrijednost za C7. Trebao bi imati napon najmanje dvostruko veći od ulaznog napona i zapamtite da stvarate toplinu u LM7805 pa biste trebali nastojati da ulazni napon bude što niži jer je sve ostalo samo gubljenje energije. Najbolje odgovara nešto između 9V i 12V DC.
Ne brinite o polaritetu vašeg izvora napajanja … P-kanalni MOSFET (Q1) djeluje kao zaštita od lažnog polariteta i sat jednostavno neće raditi i neće se oštetiti. To možete provjeriti na "napajanju" LED D22 ako je montiran.
Na desnoj strani sheme nalaze se serijski paralelno registri izlaza. Odlučio sam ih koristiti jer nisam želio koristiti veliki PIC sa puno I/O-portova. Htio sam koristiti manji, a još sam imao 16F1829 kod kuće pa je izbor već bio jasan. Podatke (IN_1, IN_2 i IN_3) pruža PIC (pogledajte odjeljak koda ispod) i REGISTER_CLK. Radi jednostavnosti u kodu i rasporedu PCB -a, koristio sam dva od 74HC164 za sate, a posljednji za "logiku".
U gornjem lijevom kutu je PIC i svi potrebni dijelovi. Koristio sam interni sat pa oszillator nije potreban. Samo tri otpornika za SCL, SDA i MCLR. Zbog činjenice da sam koristio 32kHz kao pokazatelj "tačnih sekundi", nema potrebe za prilično stabilnom i tačnom frekvencijom za PIC.
U sredini se nalazi DS3231 sa minimalnim brojem vanjskih dijelova. U stvari, koristio sam samo SDA i SCL ulaze za komunikaciju preko I²C i izlaz od 32 kHZ kao eksternu referentnu vrijednost sata za Tajmer 1 PIC16F1829. Za ovaj izlaz podatkovna tablica kaže da je potreban vanjski pull-up otpornik. Ostale izlaze koje nisam koristio u ovom projektu i ostavio sam ih nepovezanim.
Takođe u sredini, LED diode … Kao što možete pročitati na shemi, koristio sam plave LED diode (one sa prozirnim kućištem) i vrijednost otpornika od 1 k Ohma. Ako namjeravate sami izvesti ovaj projekt, trebali biste odabrati vrijednosti ovih otpornika prema boji i vrsti LED dioda koje odaberete. Takođe imajte na umu gdje želite postaviti sat. Moj jedan stoji u mojoj spavaćoj sobi pa nisam htio da LED diode budu previše svijetle i odabrao sam veću vrijednost za otpornike. Isprobajte ploču s LED -ima i vrijednostima otpornika prije nego ih postavite na tiskanu ploču.
Korak 2: Raspored
Nakon završetka sheme, vrijeme je za usmjeravanje PCB -a. Za to sam koristio KiCAD (takođe za shemu). Nema se puno za reći, samo usmjerite linije.
Budući da sam kućište sata sam odštampao, bilo je vrlo važno gdje se nalaze LED diode na gornjem sloju. Stavio sam samo LED diode i otpornike na gornji sloj, jer sam naručio PCB djelomično montiran (svi SMD dijelovi) i zato što je kompanija koju sam odabrao za to samo dijelove stavljala s jedne strane, a ne dvostrano.
Možete vidjeti mjesto na dvije trodimenzionalne slike koje sam napravio od KiCAD-a.
Ako ste zainteresirani … Moguće je izvesti KiCAD PCB u Eagle, a zatim je vrlo lako izgraditi kućište jer imate referencu s PCB -a.
Korak 3: "Logika" "Wort-Uhr"
Najveći dio ovog projekta bio je kod za PIC …
Prvo smo pronašli "logiku" govornog vremena na njemačkom i preveli ga u kod.
Nažalost, nije bilo moguće direktno učitati Excel datoteku, ali nadam se da je izvoz PDF -a za vas dovoljno čitljiv. Ako ne, kontaktirajte me i poslat ću vam originalnu Excel datoteku. U PDF -u možete vidjeti kako postavljam logiku za svoj sat. Možete vidjeti kako sam prošao različite vremenske korake i kakav je pravopis. Izračun unutar koda (uglavnom if-else izrazi) može se izvesti iz informacija na desnoj strani tablice. Jedan dio je za minute, a drugi za sate.
Kao što vidite, ovo nije magija i može se lako kodirati u C. "Najluđa" tačka unutar logike je kako rukovati satom, kao što možete vidjeti u datoteci da se samo na početku sata prikazuje stvarni sat. U njemačkom (možda bi ovo mogla biti samo bavarska specifičnost) "sljedeći sat" koristi se prilično rano.
Za kodiranje sam koristio MPLABX kao svoj IDE po izboru.
Korak 4: Isječci koda
Neću ovdje objavljivati svoj kôd, ali ako namjeravate napisati svoj kôd, dat ću vam neke savjete o čemu sam "sapleo" tokom razvoja …
Prvo popunjavanje "registra":
Ako prečesto prenosite nove podatke u registre i u prekratkim ciklusima, napravio sam iskustvo, LED diode su počele treperiti. Tako sam napravio neke "zastavice za blokiranje", da se samo svaki minut napravi novi "izračun" govornog vremena i izvrši ažuriranje registra.
Kod za popunjavanje registara je na gornjoj slici. Kao što vidite, ja paralelno popunjavam sva 3 registra pa mi trebaju 3 pina PIC -a za podatke i 1 pin za CLK. 74HC164 preuzima nove podatke o prijelazu na CLK liniji od 0 do 1.
Ostatak koda uglavnom ovisi o PIC-u, logici "govornog vremena" i rukovanju komunikacijom i gumbima. Komunikaciju uglavnom pruža Microchip MPLABX jer sam koristio MSSP modul.
Dobra ideja je čitanje podatkovne tablice DS3231 jer su podaci pohranjeni unutra kao BCD pa ćete možda morati to "transformirati" u svom kodu. Pa što se mene tiče, ja sam tip koji "uči radeći" i NARAVNO nisam pročitao tehnički list … Koštalo me je mnogo živaca i sati.
Kao što ste mogli primijetiti, postoje dva načina da se "prati vrijeme" sa ovom implementacijom.
- Možete očitati stvarno vrijeme izvan DS3231
- Možete "brojati sekunde" u samom PIC -u i s vremena na vrijeme samo sinkronizirati vrijeme s DS3231
Na vama je i oba načina su praktična i direktna. Koristio sam prvu opciju i samo sinhronizovano vreme pri podešavanju vremena pomoću dugmadi (vreme pisanja u DS3231) ili svaka 24 sata (vreme čitanja iz DS3231), jer sam hteo da implementiram više logike. Skrećem sat i noću (23:00 do 05:00) pa je to po meni bilo malo lakše.
Korak 5: Stanovanje
Na kraju, ali ne i najmanje važno, vrijeme je da kratko pogledamo kućište.
Kao što sam gore spomenuo, kućište sam napravio sam (koristeći Eagle) i odštampao ih na svom 3D štampaču tako da sam morao da gledam u položaj različitih LED dioda.
U privitku možete pronaći STL datoteke ako ih želite koristiti.
Nadam se da će vam ovo uputstvo pomoći pri izgradnji vlastitog "Wort-Uhr". Ako ima još "otvorenih pitanja", ne ustručavajte se kontaktirati me. Najbolji način da prokomentirate u nastavku, jer možda niste jedini koji ima određeno pitanje.