Dalším problémem je, že všude je udáván tlak přepočtený na hladinu moře, proto můj tlakoměr naměřil 980 Pa namísto obligátních 101 kPa. Pro měření jsme si opět napsal jednoduchý skriptík. K Turrisu je testovací destička připojena prostřednictvím rozšiřujícího konektoru, kde je mimo napájení vyvedena také sběrnice I2C. Adresa zařízení je v tomto případě 0x77.
Destička barometru je připojena prostřednictvím I2C k našemu Turrisu.
Nejprve spustíme konverzi teploty, poté naměřenou hodnotu vyčteme z adresy 0xF6 a nyní se už konečně dostaneme k vlastnímu měření tlaku. Aktuálně využívám nejpřesnější a tedy i nejdelší variantu měření, kterou spustíme zápisem hodnoty 0xF4 do registru na adrese 0xF4. Výsledná hodnota je tříbajtová, začíná na adrese 0xF6 a končí na 0xF8. Tato hodnota však nepředstavuje přímo tlak v pascalech, ještě je nutné ji dle kalibračních hodnot přepočíst na absolutní tlak.
#/bin/ash
rozhrani=1
adresa=0x77
echo "Teplota;P2;P1;P0"
while true; do
i2cset -y $rozhrani $adresa 0xF4 0x2E # spustíme měření teploty
sleep 1
T=`i2cget -y $rozhrani
$adresa 0xF6 w` # vyšteme aktuální
teplotu
i2cset -y $rozhrani $adresa 0xF4 0xF4 # spustíme měření tlaku (nejdelší ale nejvyšší
přesnost)
sleep 1
P0=`i2cget -y $rozhrani
$adresa 0xF6`
P1=`i2cget -y $rozhrani
$adresa 0xF7`
P2=`i2cget -y $rozhrani
$adresa 0xF8`
echo -e "$T;$P0;$P1;$P2"
sleep 60 # minutku počkáme
done
Dále uvádím výpočet koeficientů z kalibrace senzoru:
c3 = 160.0 * pow(2.0,-15) * AC3;
c4 = pow(10.0,-3) * pow(2.0,-15) * AC4;
b1 = pow(160.0,2) * pow(2.0,-30) * VB1;
c5 = (pow(2.0,-15) / 160) * AC5;
c6 = AC6;
mc = (pow(2.0,11) / pow(160.0,2)) * MC;
md = MD / 160.0;
x0 = AC1;
x1 = 160.0 * pow(2.0,-13) * AC2;
x2 = pow(160.0,2) * pow(2.0,-25) * VB2;
y0 = c4 * pow(2.0,15);
y1 = c4 * c3;
y2 = c4 * b1;
p0 = (3791.0 - 8.0) / 1600.0;
p1 = 1.0 - 7357.0 * pow(2.0,-20);
p2 = 3038.0 * 100.0 * pow(2.0,-36);
A jak si otestovat, zda měříme správně? Následující graf představuje necelý den měření, tvar křivky jsem porovnával s údaji z meteostanic nadšencův okolí. Na všech křivkách je patrné minimu které se ještě prohloubí a je následováno nárůstem nad počáteční hodnotu.
Pro přepočet tlaku na tlak v nulové nadmořské výšce je třeba použít následující vzorec (P je absolutní tj naměřený tlak a p0 je tlak na hladině moře).
Pro přepočet tlaku na tlak v nulové nadmořské výšce je třeba použít následující vzorec (P je absolutní tj naměřený tlak a p0 je tlak na hladině moře).
http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Pressure/BMP180.pdf - Katalogový list BMP180
Žádné komentáře:
Okomentovat