Kis Irányító?

Mi is az a Kis Irányító?

DCC minicenter minipic A Ezt a kis eszközt nevezhetnénk az angol-amerikai divat szerint "YAM"-nak (Yet Another Mouse) is, vagyis "Még egy egér". A mikrokontrolleres elektronika kb. azt a feladatot látja el, mint egy kis képességū DCC egér. Max. 1A erősségű DCC jelet ad a sínre, ezzel egyidőben egy járművet tud irányítani. Persze több mozdony is lehet a sínen, amennyiben az összes áramfelvétel 1A alatt marad. Az irányító csak rövid DCC címeket tud kiadni és 127 sebességfokozatot szolgáltat. Sem programozni, sem pedig dekódereket kiolvasni nem tud. Valójában kevesebbet tud, mint egy gyári DCC-egér. Mi szükség volt akkor az elkészítésére?

A modellek bejáratása, a dekóder programozás során merült fel az a probléma, hogy sem egy DCC egér, sem egy komolyabb irányító használata közben nem tudjuk pontosan, éppen milyen értékű sebességjelet ad ki az irányító. Nehéz így összehasonlítani két modell sebességét, a sebesség-karakterisztikákat. Tapasztaltam olyan jelenséget is, hogy a sebesség változtatása közben a modell megugrott vagy éppen hirtelen megtorpant. Ilyenkor sohasem volt világos, hogy a jelenséget a modell és dekódere, vagy az irányító okozta. Végülis a gyári egerekbe sem feltétlenül a legjobb minőségű potenciométereket építik be és nem kizárt, hogy a processzor programozása enged ki a sínre olykor hibás DCC jelet, akárcsak egy-egy pillanatra.

Ezért készült a saját egér. Ennek pontosan ismerem a programját, hiszen én írtam. A rajta lévő kijelző pedig mindig mutatja a kimenő DCC sebesség-fokozatot. A használhatóság fokozására kapcsolni tudja a homloklámpákat (F0) és ki tud adni egy rövid hangjelet is (F2).

Tervezési megfontolások

A tervezés során az alapelv az volt, hogy az egész ne kerüljön semmibe! Mikrokontrollernek a PIC16F88-at választottam, amiből volt egy pár a fiókomban. Ugyanígy kijelzők, kapcsolók és a tápellátás alkatrészei. A DCC-jelet kiadó L293B híd-meghajtó áramkör még a Minibox készítéséből maradt meg. Történetesen volt a készletemben egy jó minőségű potenciométer is. Valójában ha nem lett volna mindez a fiókomban, az egész áramkört ki lehetett volna hozni pár ezer forintból.

A PIC16F88 mikrokontroller meghatározta a lehetőségeket is. A 18 lábú IC 16 ki- vagy bemenettel rendelkezik. A belső óragenerátort használja, így ahhoz nem kell lábat biztosítani. A 7-szegmenses kijelzők 7 lábhoz csatlakoznak, a 8. láb vezérli azt, hogy éppen melyik helyiérték világítson. A legfelső helyiérték kijelzője vagy "1"-et mutat, vagy sötét, hiszen a legnagyobb sebesség érték 127, ez egy további kimenethez csatlakozik. A DCC jelek két kimenetet foglalnak el. A sebesség potenciométere egy analóg bemenetre van kötve. Így összesen négy bemenet marad a kapcsolók számára. Ezekből egy a kiválasztott cím betöltését végzi el, egy a jármű mozgásirányát vezérli, összesen kettő marad a DCC funkciók kapcsolására.

A három helyiérékű kijelző tizes számrendszerben mutatja a sebesség értéket. Mivel a 7 kijelző-szegmens fogyasztása már nem elhanyagolható, ha pl. a 8-as számot kell megjeleníteni, a közös kivezetést nem a processzor, hanem tranzisztorok táplálják

Az egyszerű szerkezet nem rendelkezik programozott rövidzárlat-védelemmel. A híd-meghajtó L293B áramkör tartalmaz egy beépített túláram-védelmet, ez általános esetben elegendő. Ha zárlat lép fel, a kimenő DCC-jelre csatlakozó LED kialszik. Ekkor a felhasználónak kell a kimenetet áramtalanítani. (ennek a menetéről később lesz szó)

Akit érdekel, azok számára feltettem a honlapra kapcsolási rajzot is.

Az irányítóhoz nem készült NyÁK-lemez, VERO forrasztott huzalozó készlettel , furatrácsos protó kártyára készült. Alumínium lemezből egy kis dobozt is készítettem hozzá. A tápfeszültség szűrő-kondenzátora már nem fért el a dobozban, az egy kis, kerek nyíláson át kandikál ki.

Építés

A megépítés előtt több prototípus is készült, valamennyi proto kártyára. A működtető programhoz nem használtam semmilyen mintát, teljesen saját fejlesztés. Alapvetően a DCC szabvány leírásain alapul. Az első kísérletek arra irányultak, hogy a processzor a DCC jelek időzítésének megfelelő kimenetet hozzon létre. Elsőnek a sebesség-jeleket, majd fokozatosan a funkció jeleket is sikerült előállítani. A kísérletek során természetesen szükség volt egy oszcilloszkópra is. Erre már meg lehetett a végleges elektronikát építeni és a programot fokozatosan a véglegesre ki lehetett egészíteni.

A PIC mikrokontroller az alaplapon egy foglalatban kapott helyet. Programozáshoz ki kell venni a foglalatból és egy önálló programozóban beprogramozni.

Az irányító kezelése

Az irányító a bekapcsolás után a 3-as címre küldi ki az adatcsomagokat. Ez azt jelenti, hogy a 3-as címmel rendelkező mozdonyok (erre a címre programozzá be a gyárban a dekódereket) rögtön el is indulnak, ha a sebességszabályozót eltekerjük.

Más címeket először be kell adni. Ehhez a sebességet a címnek megfelelő értékre kell állítani - ezt a kijelzőn látni lehet - Majd meg kell nyomni a "Load address" gombot. (A DCC szabványnak megfelelően 0-ás címet nem lehet beállítani, azt az irányító el sem fogadja.) Vigyázat! Ekkor a megadott című mozdony rögtön el is indul, a címének megfelelő sebességgel! Ez persze nem probléma még magasabb címéknél sem, egyszerűen vissza kell forgatni a gombot 0-ra. Ezután a mozdony működőképes, az irányt az iránykapcsolóval, a homlokfényt a lámpa kapcsolójával lehet állítani. A másik gomb egy F2-es funkció-jelet ad ki a sínre, amire a legtöbb hangos mozdony egy "rövid hangjelet" bocsát ki.

Amennyiben rövidzárlat lép fel, amit a kezelő a LED kialvásáról vesz észre, vagy kisiklás miatt azonnal meg kell állítani a vonatot, a "hangjel" (Sound) és a "cím töltés" (Load address) gomb egyidejű megnyomása áramtalanítja a pályát. (Érdemes a "Sound" gombot egy picivel korábban megnyomni, mert ha a "Load addres" gombot nyomjuk meg előbb, esetleg betölti az éppen aktuális sebességet új címnek) Az áramtalanítás ideje alatt a kijelző folyamatosan villog. A hiba elhárítása után úgy lehet újra elindítani az irányítót, hogy a sebesség gombot 0-ra forgatjuk és itt megnyomjuk a "Load address" gombot. Ekkor az irányító újra megkezni a DCC csomagok kiadását a korábbi címre.

A címek váltása egy kicsit trükkös. Ha ugyanis üzem közben elforgatjuk a sebesség-gombot az új címnek megfelelően és megnyomjuk a "Load address" gombot, akkor beáll az új cím, vezérelhető lesz az új mozdony, de a régi címen lévő mozdony folytatja a mozgását az új mozdony címének megfelelő sebességgel, hiszen ez volt az utolsó parancs, amit kapott! Erre az a megoldás, hogy a mozdonynak 1-es sebességet adunk - ettől a mozdony megáll, mert a DCC szabvány szerint mind a 0-ás, mind pedig az 1-es sebességfokozat a jármű megállását jelenti. Ekkor benyomjuk a "Load address" gombot, amitől nem történik semmi, amennyiben - és ez nagyon valószínű - nincs 1-es című mozdony a pályán. Az 1-es címmel elforgatjuk a sebesség-gombot az új mozdony címéig és benyomjuk a "Load address" gombot. Ekkor, mint korábban is, a mozdony rögtön megindul a címének megfelelő sebességgel, a sebesség-gomb visszatekerésével meg lehet állítani.

Az irányító programja

A mikrokontroller programja, a "firmware" JALv2 nyelven íródott. Használja a PIC belső óráját és időzítő áramköreit.

A két belső időzítő a beállított idő leteltével megszakítást (interrupt) kér. Az első időzítő (TIMER_0) a DCC jelek időzítését végzi. Amennyiben a DCC kimeneten "1"-es értéket kell kiadni, az időzítőt 56µs-ra kell beprogramozni, amennyiben "0"-t akarunk kiküldeni, az időzítő 112µs után küldi ki a megszakítást. Ezt mindig megismétli a DCC jel negatív feléhez is. A TIMER_0 kiszolgáló programja teljes egészében a megszakítás-kezelő rutinban fut le.

A másik időzítő (TIMER_1) a kijelző értékeinek a kiadását végzi. Ez jóval lassabb, több ms értékre van beállítva, mindig ugyanarra. A megszakításának a kiszolgálása nem a kezelő rutinban történik, ott csak egy szemafórt (flag) állít a program.

A mikrokontroller fő programja a kezdeti beállítások (inicializálás) után egy végtelen hurokban fut. Ebben az idő túlnyomó részében nem csinál semmit. Amikor a második időzítő beállítja a szemafórt, akkor átváltja a kijelző helyiérték kiadását és lekérdezi a sebesség-potenciométer, valamint a kapcsolók és gombok értéket. Ezeknek megfelelően beállítja a DCC értékeket, kiszámolja az ellenőrző számot (checksum) és mindezt beírja a DCC szavak tárolójába. Az első időzítő megszakítás-kezelője innét olvassa ki a DCC értékeket, amelyek bitjeinek megfelelően állítja be az időzítő értékeit.

A "Load address" gomb megnyomása során mindössze annyi történik, hogy a sebesség értéke beíródik a DCC címbe, természetesen binárisan, még a kijező számára elvégzett decimális átalakítás előtt.

A "Hangjel" (F2) és a "Load address" gombok egyidejű megnyomása után a program tovább fut az eddigi módján, viszont a két DCC kimenet nem ellentétes értéket kap, hanem ugyanazt. Ez a sínben 0V feszültség formájában jelenik meg. Ez az állapot addig marad fent, amíg 0-ás sebesség érték mellett meg nem nyomjuk a "Load address" gombot. Ekkor a program visszatér az ellentétes DCC értékek kiadásához.

Itt lehet a programot megtekinteni. A program GPL-3 licensz alatt áll, tehát szabadon fel lehet használni, de aki módosítja, az köteles a módosított változatot is GPL-3 licensz alatt megjelentetni.

Továbbfejlesztések

Az irányítót rendszeresen használom a próbapálya üzemeltetésénél. Sokkal könnyebb üzembe helyezni, mint bármely másik DCC vezérlőt, hiszen csak rá kell csatlakoztatni a pályára, ráadni a tápfeszültséget és beforgatni a kívánt címre. Általában több mozdonyt is eltűr a pályán sőt, jó szórakozás egyszerre két mozdonyt - akár egymással szemben is - irányítani vele. Ugyanis címváltás a két aktív mozdony között eltart egy kis ideig, előre gondolni kell rá. Ha nem történik meg, az összeütközést csak a "Hangjel" és a "Load address" gombok egyidejű megnyomásával, az áramtalanítással lehet elkerülni.

Az egyetlen komoly átalakításra azért került sor, mert a korai kijelző fénye igen gyenge volt. Erősebb lámpa alatt alig lehetett látni. Ezért új, 7-szegmenses kijelző került az irányítóba korszerű, nagy fényerejű LED-ekkel. Ezek viszont nem közös katódos kivitelűek voltak, mint a korábbiak, hanem közös anódosak. Ezért a meghajtó NPN tranzisztorokat ki kellett cserélni PNP kivitelűre és a programot át kellett írni fordított jel-polarításra.



Vissza a Elektronikai Projektek Oldalra

Vissza a Modellezés Kezdő Oldalra

Ez az oldal 2019 április 9.-én lett utóljára megváltoztatva

© Erő János