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).
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.
A PIC mikrokontroller az alaplapon egy foglalatban kapott helyet. Programozáshoz ki kell venni a foglalatból és egy önálló programozóban beprogramozni.
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.
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.
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