A A A
  • 7 szegmenses LED-es óra
    7 szegmenses LED-es óra
  • Fuse bitek beállítása  PonyProg2000-hez
    Fuse bitek beállítása PonyProg2000-hez

7 szegmenses digitális óra

 

A következőkben egy 7 szegmensen LED kijelzős óra ismertetése következik. A már jól bevált és igen olcsó Attiny2313-as AVR mikrokontrollerrel.

 

A kapcsolás legfontosabb tulajdonságai:

 

  • egyszerű áramkör

  • minimális alkatrész igény

  • ébresztő funkció

  • 4db gomb az óra vezérlésére

  • multiplex vezérlés a kijelzőkhöz

 

Működés:

A kapcsolási rajz az oldal alján található. Javaslom először azt áttanulmányozni. Maga a kapcsolás igen egyszerű. A 7 szegmenses kijelzők közös katódú kijelzők, melyeket a mikrokontroller multiplex vezérléssel működtet. Ennek lényege, hogy a mikrokontroller mindig csak 1 kijelzőt aktivál. Megjelenít rajta egy számot, vár egy kevés ideig, majd jön a következő kijelző. Mivel egy idő pillanatban csak 1 kijelző aktív, így a kijelzők szegmenseit össze lehet kötni egymással és azt, hogy épp melyik kijelző aktív a mikrokontroller választja ki, az által, hogy egy tranzisztoron keresztül a kijelzők katódjait a földre húzza, és ezáltal záródik az áramkör és világítanak a LED-ek.

 

A gombok lekérdezése trükkösen van megoldva. Mivel fizikailag nincs elég lába az Attiny2313-as mikrokontrollernek, így a gombok ugyanarra a lábakra vannak kötve, amely lábak az egyes szegmenseket is vezérlik a kijelzőkön. Nyilván felmerül a kérdés, hogy ha azok a lábak kimenetek, akkor mégis hogyan tudjuk figyelni a gombok állapotát. Nos a válasz nagyon egyszerű: a mikrokontroller képes a program futása közben átkonfigurálni a lábak funkcióját. Így úgy van megírva a program, hogy bizonyos időközönként átkapcsolja a szegmens meghajtó lábakat bemenetté, illetve ezeket a bemenetekre bekapcsolja a mikrokontroller beépített felhúzó ellenállásait. Egyidejűleg az összes tranzisztort zárt állapotba kapcsolja. Ezáltal nem okoz problémát a szegmenseken megjelenő 5V, mivel áram nem képes folyni sehová a lezárt tranzisztorok miatt. A gombokkal ezeket az 5V-ra felhúzott lábakat tudjuk a föld felé lehúzni egy áramkorlátozó ellenálláson keresztül. Az áramkorlátozó ellenállásokat nem szabad lehagyni! Hiszen a gombok akkor is zárt állapotba lehetnek, mikor épp a mikrokontroller a 7 szegmenses LED kijelzőket működteti. Ha ilyenkor csak simán a földre húznánk egy lábat, akkor az ezen a lábon lévő LED kialudna. Az áramkorlátozó ellenálláson keresztül viszont olyan kevés áram folyik a föld felé, hogy semmilyen látható fényerő változást nem okoz.

 

Megépítés:

Az áramkör nem túl bonyolult, így szerintem nem nagyon kell részletezni az összeépítés menetét. A kijelzők közös katódú kijelzők, azaz a LED-ek negatív pontja egy közös lábra van kivezetve. Figyeljünk erre vásárlásnál, mert lehet kapni közös anódú kijelzőket is, ott a LED-ek pozitív lába van közösítve. Ez utóbbival nem működik a kapcsolás. A 4 db tranzisztor bármilyen univerzális legalább 100mA-es NPN tranzisztor lehet. Nem kell ragaszkodni a feltüntetett típusokhoz. A csipogó 5V-os legyen és mivel közvetlenül a mikrokontroller hajtja megy, így lehetőség szerint ne legyen nagyobb áram igénye 20mA -nél. Bár a mikrokontroller lekorlátozza az áramot 20mA-re minden lábán, de igyekezzünk inkább kisebb áram igényű csipogót választani. Megjegyzés: 30mA-es csipogóval is jól működik az áramkör, de ennél nagyobbat ne rakjunk be. A mikrokontroller beégetését segítendő mellékelem a fuse bitek beállítását PonProg2000-hez.

 

Az óra kezelése:

Az órán 4 db gomb van. A kapcsolási rajz szerinti számozás szerint S1, S2, S3, S4.

  • S1-es gomb az órák számának léptetése fölfelé 1-el
  • S2-es gomb a percek számának léptetése fölfelé 1-el
  • S3-as gomb az ébresztés beállítása
  • S4-es az óra beállítása

A gombok működése a következő:

Ahhoz, hogy betudjuk állítani az órát, le kell nyomnunk az S4-es gombot és miközben lenyomva tartjuk az S1 és S2 gombokkal betudjuk állítani az időt. Az ébresztés beállítása is így történik, csak az S3-as gombot kell lenyomni, és lenyomva tartani miközben az S1 és S2 gombokkal betudjuk állítani az ébresztés idejét. Ha az óra ébreszt akkor az S3 vagy S4 gombokkal lehet kikapcsolni az ébresztést. Azt, hogy melyik gomb melyik lábra van kötve a B porton teljesen szabadon megválaszthatjuk a kód elején lévő #define -k között ott van az erre vonatkozó beállítás. Az én saját órámon is máshova vannak kötve a gombok, mivel kényelmesebb volt a közelebbi lábakra kötni.

 

Ha azt akarjuk, hogy egyáltalán ne ébresszen az óra, akkor javaslok egy kapcsolót sorba kötni a csipogóval, így pl. hétvégén nem fog ébreszteni az óra ha átkapcsoljuk ezt a kapcsolót. Figyelem ez nincs berajzolva a kapcsolási rajzra.

 

Továbbfejlesztés:

Az órát én eleve úgy terveztem, hogy másodperc kijelzésű legyen. De mivel nem volt itthon csak 4db kijelző, így a másodpercek kijelzéséről lemondtam. A lehetőség viszont megvan, direkt hagytam 2db lábat szabadon a Port D-n ahova be lehetne kötni azt a 2 tranzisztort amivel a másodperc kijelzőket kéne meghajtani. A programba is bele kell természetesen nyúlni, de minimális munkával átalakítható a kód, hogy működtesse azt a plusz 2 kijelzőt.

 

Sok sikert a megépítéséhez! A program is nagyon egyszerű, kezdők is bátran belenyúlhatnak a kódba.