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

Hardvertervezés a ProDSP-nél

Hardvertervezés a ProDSP-nél

A Prodsp 15 éves történetét végigkísérik az egyedi hardver- és szoftverfejlesztési feladatok.

Bővebben ...
Ismerkedés a Toradex modulokkal - egy  izgalmas fejlesztés, számtalan előnnyel

Ismerkedés a Toradex modulokkal - egy izgalmas fejlesztés, számtalan előnnyel

2021 tavaszán egyik ügyfelünk azzal keresett meg minket, hogy készítsünk egy olyan platformot, ami alkalmas egy infrakamerás alkalmazás kifejlesztésére.

Bővebben ...
Single Board Computer hatékony beágyazása egyedi hardverekbe

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.

Bővebben ...