PIC-es vezérlőmodul (Labortápegység II.-höz)

 

A PIC-es vezérlőmodul neve igazából "PIC-es panelmérő III." is lehetne, mert hozzá hasonlóan méri a labortáp kimeneti feszültségét, kimenő áramát, teljesítményét, ellenállását és még kvázi 'analóg' vonalkijelzése is van. Viszont sokkal-sokkal több annál, mert nem csak mérni tud hanem kompletten vezérli az egész labortápot.

4x20-as LCD-jén kijelzi a mért és beállított feszültséget, áramot, a mértből számított teljesítményt és ellenállást, a hűtőborda hőfokát és a legalsó sorban vonalkijelzéssel mutatja a táp kimenő áramát. A kimenetet kapcsoló nyomógombot leszámítva az egész vezérlőmodul egy rotációs enkóderrel kezelhető: rövid gombnyomásra váltani lehet hogy a feszültséget vagy az áramot szeretnénk állítani, tekerésre pedig az értéket változtathatjuk. Ha benyomjuk az enkódert és úgy tekerjük, akkor nagy léptékkel állíthatóak az értékek. Hosszú gombnyomásra a főmenübe léphetünk be, akkor minden nyalánkságot beállíthatunk az LCD kontrasztjától kezdve a táp maximális kimenő feszültségén és áramán át a hővédelem be és kikapcsolási hőmérsékletéig, de akár önkalibrációt is indíthatunk vagy rendszerdiagnosztikát futtathatunk.

A hardvert úgy készítem fel hogy később alkalmas legyen PC-vel való USB-s kapcsolatra, illetve lesz egy kommunikációs port (USART) amin keresztül két PIC-es vezérlőmodul összekapcsolható lesz és az egyik (amelyiken LCD van) vezérli majd a másikat és így 1db 4x20-as LCD-n látható lesz összesen 8db érték (beállított és mért feszültség és áram az egyik tápon és a másikon).

Ugyan megkapta a PIC-es panelmérő méréshatár-váltó rutinját, de picit egyszerűsítve lett. Mostmár nem választható a méréshatárváltás, de nem kell aggódni mert a vezérlőmodulba már nem kell reed-relé. A vezérlőmodult maximum 50V és 10A-re tervezem. A beállítás a 12 bites (igazából 13 bites) D/A-nak köszönhetően 10mV-onként és 10mA-onként történhet.

 

A PIC-es vezérlőmodulról itt látható az első két videó:

 

 

 

 


2011. 01. 23.:

Mostmár beállítható a menüből a maximális feszültség és áram amit EEPROM-ban el is tárol a PIC. A főképernyőn nem engedi a program hogy a beállított értékeken túl vagy nulla alá tekerjük valamelyik jellemzőt. Még arra az apróságra is figyeltem hogy mi van akkor ha a menüben mondjuk az Umax-ot a jelenleg épp aktuálisan beállított kimenő feszültségnél kisebb értékre állítjuk. Ez esetben a beállított feszültség kívül rekedhet a "legális" tartományon. Ezt úgy oldottam meg hogy ez esetben a beállított érték egyenlő lesz a maximális értékkel.

Továbbá átírtam a vonalkijelzésért felelős szubrutint ami mostmár "intelligens" lett, mert mostmár mindig a menüben beállított maximális áram a végkitérése.

Egy elég idegesítő bugot is megszüntettem egy apró módosítással, ugyanis eddig a főképernyőn nagy tekerés után az enkóder felengedésekor 10-ből kb 7-szer egy gombnyomást is érzékelt a PIC aminek hatására átváltott a nyilacska a másik jellemzőre. Ez az előző videón látszik is amúgy. No ez mostmár nincs.

 

 

Kitaláltam egy másfajta vonal-kijelzési módot. Hogy kinek melyik tetszik arra itt, az oldal jobb oldalán lehet szavazni! Azt hagyom benne a programban amelyikre többen szavaznak. 

 

 


 

2011. 03. 07.:

Az utóbbi pár hétben rengeteget haladtem előre a vezérlőmodullal. Viszont ezek most olyan dolgok voltak amikről nem tudok képeket vagy látányos videókat mutatni.

  1. Rájöttem, hogy az ellenállás-kiszámító algoritmusomban van egy bug, ami miatt nem mindig számolja ki normálisan az ellenállást. Ennek okára rájöttem és kijavítottam. Sajnos ugyan ez a rutin dolgozik a PIC-es panelmérőkben is, ezért majd azokba is applikálnom kell a javított szubrutint.
  2. Egy teljesen új panelra megépítettem a PIC-es vezérlőmodult, amelyben már PIC18F4523-at használok DIL40-es tokban. Ezen a panelon már az analóg részek is rajta vannak így azokat is ki tudtam próbálni. Működik, de kicsit mintha ugrálna. Erre rá kell majd néznem...
  3. Korábban azt írtam hogy a PIC-es vezérlőmodulnak csak fix méréshatárai lesznek. Meggondoltam magam!  :-)  Olyannyira, hogy ezen az újonnan épített hardveren már meg is van valósítva a méréshatár-váltás. Az első PIC-es panelmérővel ellentétben viszont itt nem REED-relével, mechanikus úton történik a váltás hanem elektronikus úton. Ezt a PIC több analóg bemenetének felhasználásával oldottam meg. Van egy AN bemenet a felső méréshatárnak és egy az alsónak. A felsőre tízszer akkora feszültséget kap a PIC mint az alsóra, aztán ő eldönti hogy épp melyik lábáról vesz mintákat.  :-P  Ezáltal piszok gyors lett a méréshatár-váltás!
  4. Különböző okok miatt elvetettem azt az elképzelést hogy kettős labortáp esetén a két PIC-es vezérlőmodul kommunikáljon egymással például együttfutás miatt. Illetve arról is le kellett mondani hogy a labortáp USB-n keresztül a számítógéppel vezérelhető legyen. Ennek több nyomós oka is van, például hogy kevés az I/O láb, és hogy a PIC program és adatmemóriája már így is lassan kezd tele lenni. Pedig még egy csomó dolgot le se programoztam (nem is tudom mi lenne ha nem assembly-ben programoznék...). A PC-vel való kapcsolat ellen szól továbbá a galanikus leválasztás problémája is.
  5. Végre sikerült megteremtenem a hardveres feltételeit annak hogy a vezérlőmodul 12V-os hűtőventilátort működtetni tudjon.
  6. Egy elég nehéz funkciónak, a rendszerdiagnosztikának és kalibrációnak a nagy részét leprogramoztam. Sajnos ennek élesben való teszteléséhez viszont a labortápegység analóg áramkörére is szükségem lenne, ami viszont még mindig nincs kész. Mindegy, amennyire csak lehetett, debuggoltam nélküle.
  7. Kitaláltam hogy a rendszerdiagnosztika futtatásának külön képernyője lesz ahol diagnosztikai adatokat fog megjeleníteni, illetve a teszteken való megbukás esetén hibakódokat ír ki az LCD-re. Ezekhez pedig majd írni fogok szöveges leírást hogy milyen hibakód esetén mi a problémája a labortápnak és a hibát hol kell keresni. Ez megkönnyíti majd az utánépítőknek az esetleges hibák okainak kiderítését és megoldását.
  8. A rendszerdiagnosztikához és kalibrációhoz szükséges hardveres feltételeket is kitaláltam és nagyjából már applikáltam is őket a labortápegység II áramkörébe. A lényege az lesz hogy diagnosztika futtatásakor a PIC egy relé segítségével leválasztja a labortáp kimenetét a kimeneti banándugóról hogy nehogy az esetleg ráakasztott fogyasztót a diagnosztika során tönkre tegye (vagy épp a fogyasztó szóljon bele a diagnosztikába, ezáltal álhibát okozva). Ez a relé ha már ott van akkor egyben arra is szolgál hogy a labortáp káros be és kikapcsolási tranziensei ne jussanak el a kimeneti banándugókig, védve ezzel is a fogyasztót. Harmadik előnye ennek a relének az, hogy nem csak elektronikus (kimenő fesz nullába állítása), hanem általa galvanikus lekapcsolás is megvalósítható.
  9. A vezérlőmodul bekapcsoláskor és/vagy a menübe lépéskor PIN-kódot kérhet. Ezzel megakadályozható hogy illetéktelen emberke használni tudja a labortápot, vagy hogy a menüben mindenfélét elállítgasson. Ez természetesen csak egy opcionális lehetőség, ami a menüben ki-be kapcsolható.
  10. A Lomexben vettem egy sokkal-sokkal jobb minőségű rotációs enkódert. Az előző a tekerőgombos tekergetésektől egyrészt nem igazán akart működni, másrészt lenyomáskor a tengelyét ért oldalirányú erőtől  tönkre is ment elég hamar. Ehhez az új enkóderhez viszont át kellett variálnom az enkóder-kezelő rutinokat.
  11. Az MCP4922-re írtam pár nagyon jó rutint. Egyben végre sikerült is működésre bírnom magát a D/A átalakítót a valóságban is. Elméletileg mostmár a vezérlőmodul ténylegesen képes a labortápot irányítani, de ennek teszteléséhez ismételten egy működő analóg labortáp áramkör kellene amit még mindig nem fejeztem be sajnos.
  12. Kitaláltam hogy nem foglal sokkal több helyet, ezért két referenciaforrást terveztem rá a nyákra. Egy TL431-et és egy REF198GP-t. Az utánépítő aztán majd dönthet hogy melyiket ülteti be a panelba. Ha olcsón meg akarja úszni és nem fontos neki a nagyon nagy precizitás akkor TL431-et forraszt a panelra, ha viszont sokkal nagyobb precizitásra vágyik és borzasztóan alacsony hőfokfüggést szeretne akkor tízszer annyi pénzért (kb 800Ft) REF198GP-t.