Fórum témák

» Több friss téma
Cikkek » Bináris óra PIC 16F690 és DS1307 RealTimeClock IC-vel I2C kommunikációval frissítve a kapcsolási rajzzal
Bináris óra PIC 16F690 és DS1307 RealTimeClock IC-vel I2C kommunikációval frissítve a kapcsolási rajzzal
Szerző: gombipeti, idő: Aug 31, 2012, Olvasva: 18740, Oldal olvasási idő: kb. 2 perc
Lapozás: OK   3 / 4

 Az óra működése a következő:

A 16F690-es PIC belső RC órajelét használom, így nem kell ahhoz is egy külső kvarcot forrasztani. Az első óra verzió a belső órajelből számolta a másodperces impulzusokat. Kiindulásnak ez jó is volt, csak 1 óra alatt kb 8s-ot késett. Ezután kapott egy külső 4MHz-es, kvarcot, de ezt sem találtam végleges megoldásnak.

Végül a Dallas cég DS1307 Real Time Clock IC-je (RTC) mellett döntöttem, amivel I2C-n keresztül kommunikál a PIC. A RTC-hoz egy 32768 Hz-es órakvarcot kellett illeszteni. A karórák azért pontosak, mert a kézen kb, állandó a kvarc hőmérséklete és ez nagyban meghatározza a pontosságot. Ha az óránk szobában lesz szintén állandó hőmérsékleten, akkor éves szinten max. pár sec eltérés fog összejönni, szóval elég pontosnak tekinthető.

A kijelző multiplex módon van meghajtva: az egymás fölött elhelyezett LED-ek katódja össze van kötve, és működés közben a PIC engedélyezi az első oszlopot (óra tízes), majd kiküldi a sorinformációt, amit tranzisztorok kapcsolnak a LED-ekre. Itt van a programban egy várakozás, hogy a LED-ek világítsanak egy darabig, majd lekapcsoljuk az első oszlopot, töröljük a sorinformáció, engedélyezzük a második oszlopot, kiküldjük a sorinfót, és így tovább.

Az anódok színek szerint sorban vannak összekötve és a 3db LM317-el felépített külön beállított RGB feszültségekre csatlakoznak (piros, zöld, kék), soronként és színenként 1-1 tranzisztorhoz. Tehát összesen kellett 4 sor*3szín=12db pnp tranzisztor.Ezzel a három színnel valamennyi szín előállítható, beleértve a fehéret is.

Az R, G illetve B feszültségeket 3 db potenciométerrel tudjuk beállítani. Ezáltal egy színt különböző fényerővel is be tudunk állítani. A panel tartalmaz 3db jumpert is. Ezt azért tettem rá, hogy későbbi fejlesztés során esetleg a potméterek helyett szoftveres pwm-el hajtva megoldható, hogy pl naponta automatikusan más színe legyen az órának. 

A pontos idő beállítása egy rotary encoderrel történik: megnyomjuk a gombot, ekkor belép beállító üzemmódba, és automatikusan 12:00-t mutat. Ezután az encodert tekergetve a perceket tudjuk csökkenteni illetve növelni, ami természetesen váltja az órákat is. Ha beállítottuk a kívánt időt, akkor egy hosszú gombnyomással tudjuk elmenteni az értéket. Áramszünet esetén az 1F-dos kondenzátor biztosítja az energiát. Ilyenkor csak a RTC kap tápot és számolja tovább az időt, viszont a kommunikáció le van tiltva. Ha aztán újra lesz 5V, elindul a PIC és elkezdi kérdezgetni a RTC-t a pontos időről és intézi a kijelzést. Van a tápellátásban egy fordított polaritás ellen védő dióda is.

A panel 2oldalas lett, a mátrix kötés miatt, kellettek átkötések, ezeket ellenálláslábakkal oldottam meg. A panel CNC marógépen készült.

Ha kérdés van, írjatok nyugodtan a topikjába! A cikk végén ott van a nyák terv is, meg az ASM is.


A cikk még nem ért véget, lapozz!
Következő: »»   3 / 4
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem