6.2.2018

foto Petr Bravenec

Petr Bravenec
+420 777 566 384
petr.bravenec@hobrasoft.cz

Chystáme nástupce úspěšné desky 4×232 pro BeagleBone Black. První série už je ve výrobě, na stole mám první fungující prototyp. Od původní desky 4×232 se nová deska liší v mnoha ohledech:

  • Napájecí napětí od 7 do 25 V.
  • 2× analogový vstup 4-20mA nebo 0-10V (softwarové přepínání).
  • 2× digitální vstup nebo výstup.
  • 2× výstup – přepínací relé.
  • 1W sběrnice pro připojení teploměrů DS1820.
  • 2× RS232, pouze RX/TX signály, zvýšené výstupní napětí.
  • Hodiny reálného času – hodiny běží, i když je zařízení vypnuté.
  • Určeno pro vestavbu do krabičky na DIN lištu.

Použití A/D převodníku

Na novou desku jsem se těšil. Pro bastlíře je deska s AD převodníky a sběrnicí pro DS18B20 rozhodně zajímavější, než deska se sériovými porty. AD převodník v BeagleBone Black se používá skutečně velmi jednoduše. Po nainstalovaní firmware je výstup z převodníků dostupný v podobě obyčejného textového souboru. Pro demonstraci jsem k desce připojil nabitý NiMh článek a nechal jej vybíjet do odporu 5 ohmů. Každou vteřinu jsem přitom měřil napětí na článku.

K měření jsem použil jednoduchý skript:

#!/bin/bash

ADC1=/sys/bus/iio/devices/iio:device0/in_voltage1_raw
while true
    do
    TIME=$(date +%s)
    VOLTAGE=$(cat $ADC1 | awk '{print($1*2.4414);}')
    echo $TIME $VOLTAGE >> vybijeni-1.data
    sleep 1
    done

Konstanta 2,4414 je zde rozlišení jednoho bitu převodníku. Převodník je dvanáctibitový, měřené napětí je deset voltů.

Hotová data jsem zpracoval dalším jednoduchým skriptem: zprůměroval jsem změřené hodnoty po minutách a přepočetl dobu vybíjení na hodiny. Abych se nezdržoval programováním v shellu, použil jsem pro veškeré výpočty databázi Sqlite:

#!/bin/bash

rm -f data.sqlite3
cat vybijeni-1.data |
    awk 'BEGIN{printf("create table data(time integer, value real); begin;\n");}
        {printf("insert into data (time, value) values (%s, %s);\n", $1, $2);}
        END{printf("commit;\n");}' |
sqlite3 data.sqlite3
sqlite3 data.sqlite3 <<! |
select (time*1.0)/60.0 as time, value
    from (
        select time/60 as time, avg(value) as value
            from (select time-(select min(time) from data) as time, value
                    from data) x
            group by time/60
        ) y;
!
sed 's/|/ /;' >> data-1.csv

Data jsem pak převedl do grafické podoby pomocí Gnuplot:

set grid
plot "data-1.csv" using 1:2 with lines title 'Voltage [mV]'

V grafu je zobrazené měření pěti různých článků.

Závěr

BeagleBone Black je úžasná deska pro výrobu podobně jednoduchých zařízení. BeagleBone má na své palubě množství hotových periférií, pro jejichž využití stačí často velice jednoduchý interface. V případě AD převodníků si mnohdy vystačíte s pouhými dvěma rezistory pro odporový dělič. Naše deska je však o cosi složitější, což je dané požadavkem přepínat mezi dvěma různými rozsahy měření.

 
 
Hobrasoft s.r.o. | Kontakt