středa 21. října 2015

Power Consumption aneb měření spotřeby BLE modulu

Po nějaké době se vracím k BLE modulu od Cypressu a to proto, že chci změřit průměrnou spotřebu proudu při tzv. advertisingu neboli hledání připojitelných zařízení.

Pro zopakování, existují tři typy zařízení s Bluetooth technologií: Bluetooth, Bluetooth Smart a Bluetooth Smart Ready
Bluetooth - klasické zařízení ve verzi nižší než 4.Bluetooth Smart - sensory na baterii (krokoměry, měření srdečního tepu, BlueGEO)Bluetooth Smart Ready - nejvyšší třída zařízení, které komunikuje se všemi druhy Bluetooth (mobilní telefon, tablet, chytré televize)
Pokud by byla spotřeba konstantní, stačilo by připojit ampermetr a změřit ji. Module ale používám v ztv. Deep Sleep režimu, kdy spí a každých 100 ms se probudí a umožní připojení k BLE zařízení.
Možnosti jsou dvě, použít vhodný (tzv. SHUNT) rezistor a pomocí měření úbytku napětí na něm sledovat graf osciloskopu a ten vyhodnotit.

Takže pro měření pulsní spotřeby je nutné použít něco lepšího než jen ampermetr.
Výsledek (hlavně měření spotřeby BLE modulu) může vypadat např. takto:




BLE modul se SHUNT rezistorem 

Nebo, použít něco lepšího, máte-li po ruce.
Já mám k dispozici:

DC Power Supply Portable Device Battery/ Charger Simulator 2308 od Keithley

Což je skvělý přístroj, pokud potřebujete měřit pulsní spotřebu nebo simulovat chování baterie (umožňuje např. nastavit vnitřní odpor v rozmezí 0 až 1 ohm po setině) a výsledek stejného měření jako předchozí vypadá následovně:



BLE modul měření na battery simulátoru

Jak je vidět, měření proudu je mnohem přesnější a detailnější.
Takže po připojení osciloskopu, konkrétně jsem použil MSO2024B od Textronixu.

Po nastavení a zachycení potřebných pulsů následovalo uložení na Flash disk a přestávka na kafe. Osciloskop ukládal cca 1.2 milionu hodnot asi 10 minut.

Po uložení do CSV (Comma Separated Values) následoval pokus o zpracování v Excelu :) Ten byl ale slepou kolejí, neboť Excel zvládá zpracovat 32 000 hodnot a pokud je jich více, musí se rozdělovat do bloků a i přesto s tím měl problémy, aby vykreslil graf.

Ukázka zpracovaných dat vypadal následovně:
Vzpomenul jsem na program Gnuplot a data zpracoval v něm.


Z grafu lze vidět jednotlivé úkony při vysílání (více info od výrobce). Vysílání trvá cca 4.5 ms a opakuje se každých 100 ms. Maximální proud (po přepočtu z poměru mezi napětí je 17 mA).

Následovalo určení plochy (v grafu fialovou barvou), aby se dala spočítat spotřeba. Příkazy pro Gnuplot jsou uvedeny na konci.

Možnosti byly dvě, určit funkci a spočítat plošný integrál nebo si spočítat střední hodnotu a odchylku zanedbat. Jakožto technik se vydávám druhou cestou... a dělám si poznámky na papír:





Takže mám něco jako na obrázku vlevo nahoře a po použití Gnuplotu dostávám hodnoty, díky kterým spočtu plochu pod křivkou, která je 36 % z plochy dané časem 4.5 ms a výškou pulsu 21.1 V.

Jelikož je vysílá jen 4.5 ms, tak dalších 95.5 ms modul spí je úplně vypnutý (téměř úplně). Takže po přepočtu dostávám průměrnou spotřebu 288.4 uA

Srovnávám se sejmutou charakteristikou z oscila od výrobce:


Jeho tabulkovou hodnotou z datasheetu:




A hodnotou spočtenou z Excel formuláře, který výrobce nabízí ke stažení:



Hodnoty mnou změřené a vypočtené jsou celkem podobné.

Moje: 288 uA
Výrobce tabulková hodnota: 262 uA
Výrobce Excel makro: 265 uA


Pozn: Nakonec bylo ve vyvíjené aplikaci potřeba vysílání jen každou vteřinu a spotřeba se dostala na 28 uA (logicky, když je čas deset krát delší) a to je krásné :).
________________________________________________________________________________




Gnuplot - ovládání

Program lze ovládat pomocí jednotlivých polože z menu nebo příkazy psát přímo na řádek (bodobně jako Matlab.



Otevřeme si soubor s daty a pomocí příkazů:

set title 'Power consumption'                                   // název grafu
set xlabel 'time(s)'                                                    // název X osy
set ylabel 'voltage(V)'                                              // název Y osy
set yrange [-1:25]                                                    // nastavení Y osy

set xrange [0:0.01]                                                  // nastavení X osy
set grid ytics mytic                                                 // zapnutí gridu v Y ose
set mytics 5                                                            // počet děličů gridu v Y ose - rozdělí části na 5 dílů
set grid xtics mxtic                                                // zapnutí gridu v X ose
set mxtics 10                                                         // počet děličů gridu v X ose - rozdělí části na 10 dílů
set grid lt 1 lw 1 lc rgb "#880000"                       //nastavení barvy a typu gridu
plot 'test2.csv' using 1:2 with lines, 'test2.csv' using 1:3 with lines            //vykreslí grafy pro Y1 a Y2

Statistika - dělá statistiku pro každý sloupec dat

plot "graf1.txt" using 1:2 with boxes                     //graf s boxičkami
stats "graf1.txt"                                                      //statistika



Žádné komentáře:

Okomentovat