14.2.2018

foto Petr Bravenec

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

Dostalo se mi do rukou velmi levné čidlo pro měření atmosférického tlaku. Čidlo se dá koupit například na Banggood - hledejte BMP280.

Za cenu několika desetikorun má čidlo vynikající vlastnosti:

  • Připojení přes sběrnici I2C nebo SPI.
  • Driver zabudovaný přímo v linuxovém jádru.
  • Absolutní přesnost ±1 hPa.
  • Relativní přesnost ±0,12 hPa.
  • Napájení 3,3 V.
  • Spotřeba 2,7 μA.

Relativní přesnost dovoluje rozeznat spolehlivě gradient tlaku při změně výšky o jeden metr. Čidlo je proto možné použít například pro výškoměr v RC modelech.

Připojení

Čidlo lze připojit jak pomocí sběrnice I2C, tak pomocí SPI. Pokud se připojuje čidlo k BeagleBone, je výhodnější využít sběrnici I2C. Na našich deskách jsou k této sběrnici připojené EEPROM paměti rozšiřujících desek a hodiny reálného času. Připojení dalšího čidla na I2C sběrnici díky tomu neobsadí další vývody procesoru.

Na nabídku rozšiřujících desek se můžete podívat v sekci hardware.

Čidlo jsem k rozšiřující desce úplně normálně přiletoval. Pro první experimenty doporučuji použít raději univerzální desku nebo jednoduchou drátovou montáž přes propojovací vodiče s konektory na koncích.

SensorBeagleBone
VCCP9.3
GNDP9.1
SCLP9.19
SDAP9.20

Instalace

Pomocí utility i2cdetect najděte své čidlo. Já jsem nalezl čidlo na adrese 0x76:

root@beaglebone:~# i2cdetect -y -r 2
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- UU UU UU UU -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- UU
70: -- -- -- -- -- -- UU --
root@beaglebone:~#

Na adresách 0x54, 0x55, 0x56 a 0x57 jsou umístěné EEPROM rozšiřujících desek. Na adrese 0x6f jsou umístěně hodiny reálného času na rozšiřující desce. Konečně na adrese 0x76 je umístěné tlakové čidlo.

Informujte linuxový kernel, jak má zacházet se zařízením na I2C sběrnici:

root@beaglebone:~# echo bmp280 0x76 > /sys/class/i2c-adapter/i2c-2/new_device

Kernel automaticky natáhne potřebný modul a zpřístupní čidlo. Hodnotu tlaku můžete přečíst ze souboru v adresáři /sys:

root@beaglebone:~# cat /sys/bus/i2c/devices/i2c-2/2-0076/iio\:device0/in_pressure_input
96.608011718

Tlak je dle všeho udávaný v kPa.

Ve stejném adresáři najdete i údaje o teplotě a lze zde i nastavit frekvenci měření. Naše čidlo je umístěné v kaceláři, údaje o teplotě proto nelze použít. Místo toho jsou použité hodnoty ze dvou různých teploměrů umístěných na východním a západním okně budovy. Použita je vždy nižší hodnota teploty.

Aktuální naměřené hodnoty

Čas měření
Naměřený tlak Pa
Tlak přepočtený na hladinu moře Pa
Teplota °C

Přepočet atmosférického tlaku na hladinu moře

Výstupem z čidla je absolutní hodnota atmosférického tlaku v místě měření. Aby bylo možné porovnávat měření tlaku v různých lokacích, přepočítává se naměřená hodnota tlaku a teploty na hladinu moře:

P 0 = P 1- 0,0065h t+0,0065h+273,15 -5.258

Pro správné zobrazení rovnice použijte webový prohlížeč s podporou MathML, například Firefox.

Porovnání s jinými čidly a údaji

Čidlo je umístěné v Rožnově pod Radhoštěm. V okolí je umístěno několik dalších čidel:

První dvě uvedená čidla pochází od stejného výrobce. Naměřený absolutní tlak u těchto dvou čidel odpovídá hodnotě naměřené v kanceláři Hobrasoft, tlak přepočtený na hladinu moře se však výrazně liší. Třetí čidlo v Zašové (zhruba 10 km daleko) udává přepočtenou hodnotu srovnatelnou s naším čidlem.

Přepočtená hodnota tlaku našeho čidla odpovídá s tolerancí do jednoho hPa i s údaji z meteorologických modelů Aladin nebo Klara.

Rovnice uvedená výše, stejně tak různé kalkulačky dostupné na internetu, udávají hodnotu pro první dvě čidla tvrdošíjně jinou. Přepočet u prvních dvou čidel jsem se proto rozhodl raději ignorovat.

Závěr

Pokud byste chtěli vestavět uvedené tlakové čidlo například do RC modelu, bylo by vhodnější sáhnout po jednočipovém mikrodriveru. Konstrukce s procesorem ARM Cortex-M0, uvedeným čidlem a s EEPROM pamětí pro uložení dat váží i s napájecí baterií pár gramů. Vývoj takového zařízení by vám však zabral velké množství času.

Linux a BeagleBone je pro obsluhu zařízení, jako je tlakové čidlo BMP280, užasný nástroj. Velikou spoustu různých driverů už Linux obsahuje, takže často stačí pouze připojit zařízení na sběrnici a Linux vám je zprostředkuje v podobě vhodné i pro aplikačního programátora.

Hobrasoft s.r.o. | Kontakt