Single Board Computer hatékony beágyazása egyedi hardverekbe
A fejlesztők napjainkban gyakran szembesülnek azzal, hogy a vevői specifikációk komoly követelményeket támasztanak a kifejlesztendő eszközökkel szemben. Ilyen követelmények lehetnek a multimédiás képességek, komplex eszköz-ember kapcsolat, fájlrendszerek és nagyobb méretű adatok, adatbázisok valós idejű kezelése, kapcsolódás különböző titkosított hálózatokra.
Ezek mellett további követelmény szokott lenni a fejlesztés és a gyártás költségének alacsony szinten tartása. Ilyen esetekben optimális megoldást lehet elérni egy SBC (single board computer) alkalmazásával. A legismertebb SBC család a RaspberryPI, de az iparban sok más alternatívát is használnak (pl. KARO, NI Single Board RIO, TORADEX).
SBC-k alkalmazása és a vegetatív rendszerek szükségessége
Az SBC-k olyan modul formátumú de nagy teljesítményű számítógépek amelyek a lehető legkisebbre lettek tervezve, mindamellett, hogy minden a cpu számára fontos komponenst tartalmaznak (megfelelő méretű memória, háttértár, lokális tápegységek, IO csatlakozók, nagy sebességű csatlakozások, esetlegesen wireless kapcsolat).
Ezen “polcos termékek” alkalmazásával a fejlesztő megspórolhat egy nagyon komoly áramkör fejlesztést, operációs rendszer portolást és a gyártás szervezésével járó kockázatokat is. Gyakorlatilag az SBC köré csak egy feladat specifikus mother board-ot kell terveznie, amely lehetővé teszi az SBC megfelelő működését és implementálja a megfelelő funkciókat a lehető legegyszerűbb módon. Így a konkrét munka az SBC kiválasztásán túl, az SBC-t fogadó motherboard (amely jóval alacsonyabb komplexitású) tervezésére és a letölthető operációs rendszeren futó alkalmazás megírására egyszerűsödik.
Ezen modulok ugyan minden a processzor számára fontos komponenst tartalmaznak, de a flexibilitás érdekében valójában csak azokat. Így a megfelelő táplálás és szükséges periféria készlet a már említett motherboard-on kerül kialakításra. Egy ilyen lehetséges rendszer blokkvázlatát az 1. ábra mutatja.
- ábra: Block Scheme
Az SBC táplálását és működtetését az ábrán jelölt legalsó réteg végzi amit vegetatív rendszernek szoktunk hívni. Ez rendszer a modern elektronikus eszközökben általánosan megtalálható, illetve saját tervezésű kártyáinkon is rendszeresen alkalmazzuk.
A vegetatív rendszer nem vesz részt a fő funkcionalitásban, jelenléte az esetek nagy részében észrevehetetlen. A háttérben viszont végrehajtja és felügyeli például a be és kikapcsolási folyamatok helyes lefutását. Ezen kommunikáció során derül ki az is, hogy az operációs rendszer sikeresen beboot-olt vagy a kikapcsolási folyamat végbement-e. Ezen folyamatok megszakítása szerencsétlenebb esetben a processzor háttértárán található fájlok vagy fájlrendszer sérüléséhez így az eszköz szerviz általi javításához vezethetnek. Watchdog funkció segítségével elősegíti az operációs rendszer és az alkalmazás megfelelő futtatását és fagyás esetén újraindítja a processzort.
Táp menedzsment
Az OS állapotának monitorozásán túl a vegetatív rendszer kezeli a tápforrásokat, biztosítja a megfelelő és folyamatos energiaellátást. A tápfeszültség management különösen az akkumulátorral táplált eszközöknél összetett feladatát, amely túlmutat a pillanatnyi töltöttségi szint nyomon követésén. A jelenleg széles körben elterjedt Li-ion akkumulátorokat például nem szabad bizonyos hőmérséklet tartományon túl tölteni vagy kisütni, korlátozni kell a töltőáram és kisütés maximális mértékét, védeni a mélykisülési állapottól. A vegetatív rendszer szolgáltat adatot az akkumulátor pack modell alapú állapotának követéséért is, alapot biztosítva az olyan komplex számítást igénylő adatokhoz, mint a hátralévő üzemidő.
Egy hordozható (portable) eszköz vegetatív rendszerének részletesebb blokkvázlatát a 2. ábra mutatja.
- ábra: Detailed Scheme
A rendszer lelkét rendszerint egy alacsony teljesítményű és fogyasztású 8 bites mikrokontroller alkotja és az ezen futó szoftver hivatott elvégezni az alábbi feladatokat:
Az SBC állapotának monitorozása. Ez a már említett módon egy periodikus kommunikációt jelent az SBC és a vegetatív vezérlő között. Ezen a kapcsolaton keresztül “cserélődik” ki a két szereplő között minden fontos információ (töltés, hőmérsékletek, parancsok, státuszok, vészjelzések), és ezáltal valósul meg a watchdog funkció is.
Ki és bekapcsolási folyamat végrehajtása, a user parancs észlelése a szokásos nyomógombon vagy a felhasználói grafikus felületen keresztül. A parancs végrehajtásakor figyelembe kell venni az aktuális állapotot, valamint azt, hogy a folyamatban lévő procedúra nem megszakítható.
A tápforrás és az akkumulátor állapotának monitorozása. Mivel az akkumulátor pillanatnyi állapota függ a hőmérséklettől, a terheléstől az életkortól és a töltési kisütési ciklusok számától, így a töltöttség pontos mértékét nem lehet pontosan meghatározni a kapocsfeszültségből. Erre a célra kifejezetten alkalmas az alacsony fogyasztású folyamatosan az akkumulátor kapcsain lévő fuel gauge nevű komponens, ami a megfelelő periodicitással méri az akkumulátor kapocsfeszültségét, valamint a rajta folyó áram nagyságát és irányát.
A mérés mellett a historikus adatok tárolását is ez a komponens valósítja meg. Ezzel az eszközzel megtámogatva a vegetatív rendszeren futó matematikai modell alkalmas lesz a töltöttség nagy pontosságú becslésére. További fontos teendő az akkumulátor töltésének vezérlése. A töltőáram beállításánál figyelembe kell venni a külső forrás (USB port vagy töltő) terhelhetőségét, és az akkumulátor hőmérsékletét.
Ki/bekapcsolás funkció
A vegetatív rendszer hardvere is megvalósít pár fontosabb funkciót. A ki és bekapcsoló gomb állapotát egy ON/OFF controller nevű speciális áramkör figyeli. Ez egy rendkívül alacsony fogyasztású áramkör amely folyton el van látva energiával az akkumulátorból.
Ez az áramkör érzékelvén a gomb megnyomását, elindítja a vegetatív rendszer energiaellátását, és ezzel működésbe hozza a vegetatív kontrollert is. Amennyiben a vegetatív kontroller megfelelően hosszúnak, tehát tudatosnak érzékeli a parancsot, a HOLD jel segítségével nyugtázza a bekapcsolt állapotot az ON/OFF controller számára.
Watchdog funkció
Az akkumulátorok megfelelő töltéséről és védelméről a balancer gondoskodik. Mivel minden akkucella különböző, és különböző módon öregszik, így a cellák töltöttsége a ciklusok számának növekedésével asszimetrikussá válik. Lesz amelyik előbb feltöltődik, így az a teljes töltési ciklus alatt túl is töltődhet.
Ez a komponens a töltési folyamatban előrébb tartó cellát bypass-olja, illetve részlegesen kisüti, így biztosítván azt, hogy a töltési ciklus végeztével mindegyik cella közel ugyan abban az állapotban legyen. Ugyanez a komponens hivatott gondoskodni a cellák túltöltődés, túláram és mélykisülés elleni védelméről is. Amennyiben bármelyik probléma fennáll, a védelem szakítja a cella áramkörét, és így megszünteti a töltő vagy kisütő áramot.
Amennyiben a külső és belső energiaforrás is rendelkezésre áll, tehát a belső akkumulátor és a külső USB töltő is elérhető egyazon időben, akkor közülük a power OR-ing komponens választ az előre meghatározott prioritástól függően.
Mivel a külső energiaforrást a felhasználó szabadon és aszinkron módon minden figyelmeztetés nélkül leválaszthatja az eszközről, így elvárás, hogy ennek az eseménynek az észrevétele és az átváltás az akkumulátorra minél hamarabb és szünetmentesen megtörténjen.
A vegetatív rendszer több különböző tápegységet is tartalmaz. Ezek specifikációja ráadásul az akku cellák számával is jelentősen változhat.
Egycellás akkumulátor esetében az ON/OFF kontrollert direktben rá lehet kötni az akkumulátorra, viszont a vegetatív rendszer és az SBC táplálásáról ilyen esetben buck-boost konverterek gondoskodnak, mivel a szükséges 3.3V-os feszültségeket a cella kapocsfeszültségének a lehető legszélesebb tartományában (4.2V-2.8V) elő kell tudni állítani.
Amennyiben az akkumulátor több sorosan kapcsolt cellát tartalmaz a buck-boost tulajdonság elhagyható.
A szerző által használt komponensek:
Akkumulátor védő (battery protection IC): BQ29700DSET
Akkumulátor töltöttség mérő (fuel gauge IC): MAX17048G+T10
I2C buszon programozható töltő és power or-ing vezérlő (programmable Li-ion charger and power path controller): BQ25601DRTWR
ON/OFF vezérlő (ON/OFF controller): STM6600DA55DM6F
Buck-Boost tápegység: TPS63001DRCT
Szerző:
Bogár István,
Chief Hardware Architect