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.

single board1
1. ábra: Block Scheme
  1. á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.

single board2
 2. ábra: Detailed Scheme
  1.  á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

Blog

A krimpelt kapcsolatok megbízhatóságának ellenőrzése húzóerő mérő segítségével

A modern autóipari rendszerekben a vezetékek és a krimpelt érintkezők közötti kapcsolat minősége kritikus fontosságú.

Bővebben …

Gyártósori mérőrendszerek validációja

Az iparban többféle eljárás terjedt el, mi a következőkben a statisztikai úton történő validációs módszereket mutatjuk be.

Bővebben …

A biztonságos gépgyártás alapjai

Szabványok alkalmazásának jelentősége - esettanulmánnyal

Bővebben …