Ampérové ​​připojení barometru. Barometr s pokročilými funkcemi. Připojení digitálního čidla vlhkosti, teploty

Hraje velikost atmosférického tlaku, rychlost a povaha jeho změn důležitou roli při předpovídání počasí a také značně ovlivňují pohodu lidí náchylných k závislosti na počasí - neduhy spojené s různými povětrnostními jevy. Barometry se používají k měření atmosférického tlaku. Mechanický aneroidní barometr má dvě ručičky. Jeden ukazuje aktuální tlak. Další šipka, kterou lze ručně nastavit do libovolné polohy, umožňuje označit naměřenou hodnotu za účelem zjištění trendu změn atmosférického tlaku v čase. Je nanejvýš žádoucí, aby elektronický barometr ukazoval nejen hodnotu atmosférického tlaku, ale také umožňoval určit, zda dochází ke zvýšení nebo snížení a jak rychle se měřený parametr mění.

Levné meteostanice použití v domácnosti zobrazovat pouze piktogramy s obrázky kapek deště, mraků nebo slunce. Těžko říci, jak tyto ikony souvisí s atmosférickým tlakem a zda tato meteostanice disponuje barometrickým senzorem nebo využívá jiné kreativní metody předpovědi počasí. Pokročilejší meteostanice ukazují aktuální hodnotu tlaku jako číslo a změnu tlaku za posledních několik hodin ve formě hrubého sloupcového grafu, který má především dekorativní funkci. Takové meteostanice jsou výrazně dražší. Na trhu jsou i velmi pokročilé přístroje určené pro námořníky, jachtaře apod., které ukazují jak změny tlaku, tak aktuální hodnotu s vysokou přesností, ale takové přístroje jsou velmi drahé.

Tato publikace pojednává o jednoduchém domácím barometru, který ukazuje velikost a rychlost změny atmosférického tlaku a také teploty vzduchu.

Vzhled zařízení je znázorněn na fotografii.

Výsledky měření se zobrazují na dvouřádkovém displeji syntetizujícím znaky. První řádek zobrazuje výsledek měření aktuálního atmosférického tlaku v mmHg, odchylku aktuální hodnoty tlaku od průměrné hodnoty za toto místo(překročení aktuální hodnoty tlaku nad průměr je považováno za kladné), stejně jako teplota vzduchu ve stupních Celsia. Údaje uvedené v horní řádek, aktualizováno každých 6 sekund. Výstup nových dat je doprovázen blikáním LED umístěné nad indikátorem.

Druhý řádek indikátoru zobrazuje přírůstky tlaku poslední hodina, tři hodiny a deset hodin. Pokud se tlak během zadaného časového období zvýšil, zobrazí se odpovídající přírůstek s plusem, jinak - s mínusem. Údaje na druhém řádku se aktualizují každých 10 minut. Ihned po zapnutí barometru bude druhý řádek prázdný. Číselné hodnoty se tam objeví po 1 hodině, 3 hodinách a 10 hodinách.

Barometr je určen pro provoz v suché, vytápěné místnosti při teplotě 0...40 °C a atmosférickém tlaku 600...825 mm Hg. Umění.

Přesnost měření tlaku a teploty je zcela určena přesností použitého tlakového senzoru Bosch BMP180. Typická chyba měření tlaku je -1hPa, což přibližně odpovídá 0,75 mmHg. Hluková složka při měření tlaku je 0,02 hPa (0,015 mmHg). Typická chyba měření teploty kolem 25°C je +/- 0,5°C. Podrobnější technické charakteristiky snímače BMP180 naleznete v technických specifikacích. popis v aplikaci.

Časové intervaly v toto zařízení počítá programově. Chyba ve vytváření těchto intervalů, měřená autorem, nepřesahuje jednu minutu za 10 hodin.

Schéma barometru je na obrázku.

Hlavním prvkem zařízení je modul Arduino Nano. Autor použil verzi 3 s mikrokontrolér ATmega 328. Paměť modulu in v tomto případě jen třetina je obsazená, takže se dá využít modul Arduino Nano s mikrokontrolérem ATmega 168.

Displej Winstar WH1602L je dvouřádkový se 16 znaky v každém řádku. Jeho základem je řadič HD44780. Rezistor R2 umožňuje upravit kontrast obrazu. Pokud se napětí na pinu 3 (Vo) značně odchyluje od optimálního napětí, pak nebude na displeji vidět vůbec žádný obraz. Tuto okolnost je třeba vzít v úvahu při prvním zapnutí zařízení. Pro autorem použitou instanci displeje bylo optimální napětí na pinu 3 asi 1 V. Rezistor R3 určuje aktuální hodnotu podsvícení LED.

Tlakový senzor BMP180 má kovové pouzdro rozměr 3,6x3,6x1 mm. Jeho závěry jsou kontaktní podložky umístěné ve spodní části pouzdra. Navíc snímač vyžaduje napájení 1,8 - 3,6 V. Úrovně signálů, které si snímač vyměňuje externí zařízení, se také liší od požadovaných. Tyto okolnosti znesnadňují přímé použití BMP180. Naštěstí tento problém snadno řešitelný. K prodeji jsou k dispozici moduly založené na senzorech BMP180, které zahrnují samotné senzory a všechny odpovídající prvky. Tyto moduly jsou desky 10x13mm. Jejich cena je přibližně 1,4 USD. Vzhled modulu je na následující fotografii.

LED HL1 bliká každých 6 sekund, což signalizuje, že na displeji barometru byly zobrazeny nové výsledky. Autor použil zelenou LED o průměru 3mm L-1154GT od Kingbright.
Kondenzátor C1 má docela velká kapacita, což činí zařízení necitlivým vůči krátkodobých neúspěchů výživa. Pokud to není požadováno, pak lze C1 snížit na 500 mikrofaradů.
Dioda D1 vypíná podsvícení indikátoru při výpadku napájení. Zvyšuje čas výdrž baterie barometr z energie uložené v kondenzátoru C1.

Zařízení lze napájet z jakéhokoli zdroje DC (nabíječka mobilní telefon, napájení libovolného gadgetu apod.) s výstupním napětím 8...12 V. Při napětí 9 V odebírá barometr asi 80 mA.

Zařízení je sestaveno na prkénku o rozměrech 85 x 55 mm, které je k displeji připevněno pomocí plexisklové desky.

Snímač BMP180 je umístěn dole - co nejdále od hlavních prvků generujících teplo, kterými jsou rezistor R3 a displej s LED podsvícení. Tělo přístroje je plastová krabička o rozměrech 160x160x25. Ve spodní a horní stěně krabice by měla být vyvrtána řada větracích otvorů.

Skica, kterou je třeba flashnout do paměti modulu Arduino Nano, je prezentována v aplikaci. Autor využil prostředí Arduino IDE 1.8.1. Pro podporu tlakového senzoru musí být nainstalována knihovna Adafruit-BMP085. Odpovídající soubor je součástí přílohy.

Před načtením náčrtu zadejte do řádku 17 místo čísla 740,0, které odpovídá průměrnému tlaku v místě instalace autorského barometru, průměrný tlak v mm. Hg Umění. , odpovídající umístění, kde bude váš barometr nainstalován. Pro první aproximaci lze tento parametr určit vzorcem Рср = 760 - 0,091h, kde h je výška nad hladinou moře v metrech. Nejjednodušší způsob, jak určit výšku, je pomocí pomocí GPS navigátor.

Tento vzorec nebere v úvahu mnoho ovlivňujících faktorů atmosférický tlak a platí pouze pro nadmořské výšky do 500 m Popis metod více přesná definice průměrný tlak přesahuje rámec této publikace. Lze je nalézt v mnoha materiálech o meteorologii, které jsou dostupné na internetu.

Seznam radioprvků

Označení Typ Označení Množství PoznámkaNakupovatMůj poznámkový blok
A1 Modul se snímačem BMP180 1 Do poznámkového bloku
A2 Deska Arduino

Arduino Nano 3.0

1 Do poznámkového bloku
VD1 Usměrňovací dioda

1N4007

1 Do poznámkového bloku
HG1 LCD displejWH1602L1 Winstar Do poznámkového bloku
HL1 LEDL-1154GT1 Kingbright Do poznámkového bloku
C1 Elektrolytický kondenzátor4700 uF x 16 V1

BMP085 je senzor pro sledování barometrického tlaku (kromě toho hlídá i teplotu).

Senzor se používá v mnoha projektech, včetně pomocí Arduina, protože nemá prakticky žádné analogy. Kromě toho je to také levné. První otázka, která vyvstává, je: proč by někdo měřil atmosférický tlak? To má dva důvody. První je kontrola nadmořské výšky. S rostoucí nadmořskou výškou klesá tlak. Velmi vhodné pro pěší turistiku, jako alternativa GPS navigátory. Kromě toho se k předpovědi počasí používá atmosférický tlak.

BMP085 byl kdysi nahrazen snímačem BMP180, který se připojuje k Arduinu a dalším mikrokontrolérům stejným způsobem jako jeho předchůdce, ale je menší a stojí méně.

Technické vlastnosti BMP085

  • Rozsah citlivosti: 300-1100 hPa (9000 m - 500 m nad mořem);
  • Rozlišení: 0,03 hPa / 0,25 m;
  • Provozní teplota-40 až +85°C, přesnost měření teploty +-2°C;
  • Připojení přes i2c;
  • V1 na modulu využívá napájení 3,3 V a logické napájení;
  • V2 na modulu používá 3,3-5V napájení a logické napájení;

Po restartování Arduino IDE můžete spustit první ukázkový náčrt, jehož kód je uveden níže:

#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BMP085_U.h>

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

void setup (void)

Serial.begin(9600);

Serial.println("Test snímače tlaku"); Serial.println("");

/* Inicializovat senzor */

if(!bmp.begin())

/* Pokud se zobrazí zpráva: "Došlo k problému s detekcí BMP085 ...",

Zkontrolujte, zda je snímač správně připojen */

Serial.print("Jejda, nebyl zjištěn žádný BMP085... Zkontrolujte kabeláž nebo I2C ADDR!");

sensors_event_t událost;

bmp.getEvent(&událost);

/* zobrazení výsledků (barometrický tlak se měří v hPa) */

jestliže (událost.tlak)

/* Zobrazení atmosférického tlaku v hPa */

Serial.print("Tlak: "); Sériový.tisk(událost.tlak); Serial.println("hPa");

Otevřete okno sériového monitoru (přenosová rychlost - 9600). Náš náčrt by měl uvádět údaje o tlaku v hPa (hektopascalech). Funkčnost snímače můžete zkontrolovat přitlačením prstu na snímač. Obrázek ukazuje hodnoty tlaku po stisknutí prstem.


Měření nadmořské výšky

Asi víte, že tlak klesá s rostoucí nadmořskou výškou. To znamená, že můžeme vypočítat výšku s vědomím tlaku a teploty. Matematiku opět necháme v zákulisí. Pokud vás zajímají výpočty, můžete si je prohlédnout na této stránce Wikipedie.

V níže uvedeném příkladu dodatečné Knihovna Arduino. Chcete-li vypočítat výšku pomocí snímače BMP085, aktualizujte funkci "void loop()". Nutné změny náčrtky jsou uvedeny v náčrtu níže. V důsledku toho získáte hodnotu teploty na základě úrovně tlaku a hodnoty teploty.

/* vytvořit novou událost pro senzor */

sensors_event_t událost;

bmp.getEvent(&událost);

/* zobrazení výsledků (barometrický tlak v hPa) */

jestliže (událost.tlak)

/* zobrazení atmosférického tlaku v hPa */

Serial.print("Tlak: ");

Serial.print(event.pressure);

Serial.println("hPa");

/* pro výpočet výšky s určitou přesností potřebujete vědět *

* průměrný tlak a okolní teplota

*ve stupních Celsia v době měření*

* pokud tato data nemáte, můžete použít "výchozí hodnotu"

* což se rovná 1013,25 hPa (tato hodnota je definována jako

*SENSORS_PRESSURE_SEALEVELHPA*

* v souboru sensors.h). Ale výsledky nebudou přesné*

* požadované hodnoty najdete na webových stránkách s předpovědí teplot*

* nebo na zdrojích informačních center na velkých letištích*

*například pro Paříž ve Francii můžete zjistit aktuální průměrnou hodnotu tlaku*

* prostřednictvím webové stránky: http://bit.ly/16Au8ol */

/* získat aktuální hodnotu teploty ze snímače BMP085 */

plovoucí teplota;

bmp.getTemperature(&teplota);

Serial.print("Teplota: ");

Serial.print(teplota);

Serial.println("C");

/* převést přijatá data na výšku */

/* aktualizace další řádek, zobrazení aktuálních hodnot*/

float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;

Serial.print("Nadmorska vyska: ");

Serial.print(bmp.pressureToAltitude(seaLevelPressure,

Serial.println("m");

Serial.println("");

Serial.println("Chyba senzoru");

Spustíme skicu a uvidíme vypočtenou nadmořskou výšku.

Přesnost odečtů BMP085 lze výrazně zvýšit zadáním průměrné hodnoty tlaku, která se mění v závislosti na počasí. Každý 1 hPa tlaku, který jsme nebrali v úvahu, vede k chybě 8,5 metru!

Obrázek níže ukazuje hodnoty tlaku z jednoho z nich informační zdroje evropské letiště. Žluť je zvýrazněna hodnota tlaku, kterou můžeme použít k upřesnění výsledků.


Změňme následující řádek v našem náčrtu a zapišme do něj aktuální hodnotu (1009 hPa):

plovák seaLevelPressure = 1009;

V důsledku toho získáme mírně odlišné výsledky:

Tip: při zadávání tlaku nezapomeňte převést použitá data na hPa.

Použití BMP085 (API v1)

Opakujeme ještě jednou: abychom zjistili tlak a nadmořskou výšku, musíme provést nějaké výpočty. Všechny jsou ale již obsaženy v knihovně Adafruit_BMP085 Arduino Library (API v1), kterou lze stáhnout z odkazu.

Po instalaci knihoven je potřeba restartovat Arduino IDE

Po restartu můžete spustit první ukázkový náčrt:

#include <Wire.h>

Adafruit_BMP085 bmp;

Serial.begin(9600);

Serial.println(" *C");

Serial.print("Tlak = ");

Serial.println("Pa");

Serial.println();

Po flashování vašeho Arduina otevřete sériový monitor. Nastavte přenosovou rychlost na 9600. Výstupem náčrtu bude teplota ve stupních Celsia a tlak v pascalech. Pokud přiložíte prst na snímací prvek snímače, teplota a tlak se zvýší:


Měření nadmořské výšky (API v1)

Chcete-li ovládat nadmořskou výšku, jednoduše spusťte náčrt níže:

#include <Wire.h>

#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp;

Serial.begin(9600);

Serial.print("Teplota = ");

Serial.print(bmp.readTemperature());

Serial.println(" *C");

Serial.print("Tlak = ");

Serial.print(bmp.readPressure());

Serial.println("Pa");

// na základě hodnot vypočítá nadmořskou výšku

//"standardní" barometrický tlak rovný 1013,25 milibarů = 101325 Pascal

Serial.print("Nadmorska vyska = ");

Serial.print(bmp.readAltitude());

Serial.println(" metry");

Serial.println();

Spuštěním náčrtu zobrazíte výsledky:


Soudě podle výše uvedených údajů jsme v nadmořské výšce -21,5 metru vzhledem k hladině moře. Ale my víme, že jsme nad mořem! Připomínáme stejný problém jako s pomocí API V2. Musíme počítat s počasím! OK. Řekněme, že najdeme web s dobrým počasím a tlak je 101,964 Pa. Otevřete příklad Příklady->BMP085test v Arduino IDE a upravte řádek, který je zvýrazněn na obrázku níže:


V tomto řádku musíte zadat aktuální údaje o tlaku. Po novém spuštění zjistíte, že údaje se dramaticky změnily a dostali jsme 29,58 metru se znaménkem plus, což je mnohem více podobné pravdě.


Zanechte své komentáře, dotazy a sdílejte osobní zkušenost níže. V diskuzích se často rodí nové nápady a projekty!

Zdravím Vás kolegové!
Protože V zimě většinou není počasí vhodné k létání, takže je tu spousta volného času, který by bylo fajn něčím zaměstnat, aby vám nevyschl mozek z nečinnosti. Nedávno jsem se rozhodl zvládnout předmět zuřivých holivarů a vzrušených debat, konkrétně: mikrokontrolér Atmega328 v implementaci Arduino.
Důrazně vás žádám, abyste nezačínali debatu o samotné Arduině, na internetu je tuna informací o všech jejích výhodách a nevýhodách.
Takže s ohledem na specifika webu o „ chytrá domácnost„Myslím, že to není úplně téma k vyprávění, takže postavíme barometrický výškoměr s třímístným sedmisegmentovým LED displejem založeným na Arduinu.

Další podrobnosti?


Hned řeknu, že nepředstírám, že jsem originální nebo inovativní. podobné projekty online ve velkém. Ale na tomto zdroji nic není podobné hledání Nenašel jsem to, tak jsem se rozhodl to zveřejnit, pro případ, že by to bylo pro někoho užitečné.
Opět jsem kód napsal sám, takže pokud jsou to všechno indické věci, neposuzujte to příliš přísně =) Stále se teprve učím. minule Programoval jsem regulátory ve 4. ročníku na ústavu před více než 10 lety =) Kompetentní a konstruktivní kritika je vítána!
Pokusím se srozumitelně a podrobně vysvětlit, jak sestavit takové zařízení, myslím, zvládne člověk s téměř jakoukoli úrovní výcviku.

Hlavní výhoda tohoto zařízení- jeho cena. I v dnešním životě a směnných kurzech můžete utratit 350 rublů, což obecně nejsou peníze. Budete také potřebovat rovné ruce a schopnost zacházet s páječkou.

Funkce zařízení:
- Měření aktuální výšky a její zobrazení led displej.
- Memorování maximální hodnota nadmořská výška, která nastala od zapnutí napájení.
- Zobrazení maximální výšky stisknutím tlačítka.
- Záznam maximální hodnoty výšky do energeticky nezávislé paměti (EEPROM) regulátoru (uloženo po vypnutí).
- Načtení uložené maximální výšky z EEPROM a její zobrazení na displeji.

Pro nulový bod Za referenci se považuje nadmořská výška, ve které bylo napájení zařízení zapnuto.

Co budete potřebovat (v závorkách klíčová slova pro vyhledávání na všech možných ebayích atd.)
- Mikrokontrolér Arduino v zásadě udělá téměř každý, pokud je kód přizpůsoben, ale vše bylo sestaveno a testováno na základě (Arduino Nano).

- barometrický výškový senzor se sběrnicí I2C (BMP085).

- třímístný sedmisegmentový LED displej se společnou anodou (7-segmentový LED displej).
- dráty, abych to všechno spojil do jednoho celku, použil jsem hotové s konektory, ale to není vůbec potřeba (Dupont Wire).

- tlačítko, kterékoli bez zafixování polohy postačí (Tact Switch Push Button). Například toto:
- rezistor od 1KOhm do 10KOhm.
- tři 100 ohmové odpory.
- páječka se všemi gobulemi a schopností ji používat.
- Software Arduino.

Volitelný:
- vývojová deska pro zapojení displeje.

Pro ty co jsou úplně mimo téma. Než se pokusíte sestavit zařízení a ponořit se do kódu, důrazně doporučuji navštívit a přečíst si několik zdrojů:
Úvod do tématu, jednoduché příklady.
O připojení sedmisegmentového displeje s příklady.
Popis senzoru, příklady, knihovny.
Nezabere to moc času, výrazně to zvýší vaše porozumění =)

Nejprve něco málo o displeji.
Sedmisegmentový LED displej se společnou anodou je sestava LED takto (na obrázku zakroužkované červeně):
Podíváte-li se na schéma blíže, bude zřejmé, že se může rozsvítit vždy pouze jeden z výbojů, tzn. Chcete-li zobrazit třímístné číslo, musíte postupně rozsvítit a zhasnout každou číslici, a to velmi rychle. Čísla tedy budou blikat stůj co stůj, hlavní je, že toto blikání je dostatečně časté a není okem vnímáno jako blikání. To znamená, že Arduino bude fungovat také jako ovladač pro tento displej, v podstatě postupně kreslí čísla, která tvoří číslo rovné aktuální výšce.
Dovolte mi provést rezervaci hned, můžete koupit hotové řešení, s vestavěným ovladačem, ale stojí 5x více a při hledání jsem nenarazil na vhodnou implementaci, protože Strašně jsem chtěl 3bitový, ale stále více 4bitových se prodává.
Mimochodem, vzhledem k tomu, že displej je třímístný, maximální výška, kterou je schopen zobrazit = 999m. V zásadě lze zařízení snadno přizpůsobit pro 4místný displej, ale program bude muset být mírně upraven. Každý, kdo rozumí 3místnému kódu, jej může snadno upravit na 4místný.
Výsledkem bylo, že navzdory problémům, které se objevily se stejným blikáním, se nám podařilo dosáhnout více či méně přijatelných výsledků, více o tom níže, protože Problémy vznikly kvůli snímači výšky.
Další podrobnosti o senzoru.
Senzor je barometrický, tzn. určuje změny nadmořské výšky na základě změn atmosférického tlaku. Senzor ve skutečnosti měří pouze atmosférický tlak. Kód knihovny pro senzor je zodpovědný za výpočet nadmořské výšky jako funkce tlaku. V tomto případě má snímač vestavěný ADC a rozhraní I2C, tzn. udává naměřenou hodnotu již v digitální podobě, což je určitě plus. Pro práci se senzorem je připravena knihovna. Použil jsem první verzi, je méně náročná na zdroje a snáze se integruje do kódu. Funkčnost knihovny umožňuje upravit přesnost měření na stupnici od 0 - nejmenší přesnost do 3 - největší přesnost (viz kód). I když, abych byl upřímný, nevšiml jsem si velkého rozdílu mezi úrovněmi nad 0. Chyba měření je asi 1 metr, což je obecně docela přijatelné. Výsledkem měření je absolutní nadmořská výška při normálním atmosférickém tlaku. Ale tohle je prostě úplně nezajímavé. Na druhou stranu pomocí Arduina a to nejjednodušší matematické operace můžete snadno vypočítat relativní výšku, což bylo provedeno.
Ale byla v tom moucha: dotazování pomocí senzoru standardní funkce dost děje dlouhá doba, a vzhledem k tomu, že Arduino je také sedmisegmentový ovladač displeje, dostali jsme docela vtipné speciální efekty, tzn. při dotazování senzoru se výstup displeje sám zastavil a proto číslo, které bylo v tu chvíli zobrazeno, svítilo o něco déle než ostatní. Výsledkem byl tento typ girlandy ze tří prvků.
Nakonec se nám po hraní se zpožděními a volbě optimální periody dotazování senzoru podařilo dosáhnout téměř úplná absence blikat. Navíc není nutné dotazovat senzor každý cyklus programu, výška se stále mění omezenou rychlostí. Ale blikání první číslice kvůli chybě a příliš častému dotazování snímače nevypadá krásně.
V zásadě, kdybych měl lepší dovednosti, mohl bych přepsat knihovnu senzorů, ale ještě nejsem připraven. A v tomto provedení zcela plní své funkce, zbytek jsou texty.
Výstup čísel byl přepnut na přerušení, eliminováno blikání, aktualizován náčrt.
Na tohle krátká exkurze Pravděpodobně dokončím prvky zařízení a přejdu k montáži.

Schéma zapojení prvků zařízení (klikací):


Předvídání otázek ze série „co, nemohl nakreslit normální diagram? Řeknu, že bych mohl, ale pro nezasvěcené si myslím, že tato možnost bude srozumitelnější, ale pro zasvěcené na tom nezáleží, a tak se diagram čte normálně. Sedmisegmentový pinout jsem našel pouze u čtyřbitové verze, tříbitová se liší pouze absencí 6. nohy.

Co se týče napájení zařízení: Arduino v původní podobě dokáže běžně přežít od 7V do 16V, v extrémních případech od 6V do 20V. Ale vzhledem k tomu, že jsem měl čínský klon, nezkoušel jsem žádné odporné experimenty, ale baterie LiPo 3S funguje bez problémů.
Čidlo je vhodné zabalit tak, aby byl volný přístup vzduchu, ale zároveň bylo vyloučeno přímé proudění vzduchu do otvoru v čidle, např. překrýt pěnovou pryží.
Doporučuji odstranit RX a TX LED z desky Arduino, protože... jsou připojeny paralelně k digitálním kolíkům 0 a 1, proto budou segmenty připojené k těmto kolíkům svítit s menším jasem.

Senzory atmosférického tlaku bmp180, bmp280, bme280 jsou častými hosty v inženýrských projektech. Mohou být použity k předpovědi počasí nebo měření nadmořské výšky. Dnes lze tuto konkrétní řadu nazvat nejoblíbenějšími a nejlevnějšími senzory pro Arduino. V tomto článku popíšeme princip činnosti snímačů, schéma zapojení do různé desky Arduino a uveďte příklady programovacích skic.

Barometr je zařízení, které měří atmosférický tlak. Elektronické barometry se používají v robotice a různé elektronických zařízení. Nejběžnější a cenově dostupné snímače tlaku jsou od BOSH: BMP085, BMP180, BMP280 a další. První dva jsou si velmi podobné, BMP280 je novější a vylepšený snímač.

Tlakové senzory fungují tak, že převádějí tlak na pohyb mechanické části. Snímač tlaku se skládá z převodníku se snímacím prvkem, pouzdra, mechanické prvky(membrány, pružiny) a elektronický obvod.

Senzor BMP280 je navržen speciálně pro aplikace, kde jsou vyžadovány malé rozměry a snížená spotřeba energie. Mezi takové aplikace patří navigační systémy, předpověď počasí, indikace vertikální rychlosti a další. Senzor má vysokou přesnost, dobrou stabilitu a linearitu. Specifikace Senzor BMP280:

  • Rozměry 2 x 2,5 x 0,95 mm.
  • Tlak 300-1100 hPa;
  • Teploty od 0C do 65C;
  • Podpora rozhraní I2C a SPI;
  • Napájecí napětí 1,7V – 3,6V;
  • Průměrný proud 2,7 µA;
  • 3 provozní režimy – režim spánku, režim FORCED (provádění měření, čtení hodnoty, přechod do režimu spánku), Režim NORMAL(převod snímače do cyklického provozu - tedy zařízení samostatně přes nastavit čas probudí se z režimu spánku, provede měření, přečte hodnoty, uloží naměřené hodnoty a vrátí se do režimu spánku).

Snímač BMP180 je levný a snadno se používá dotykový senzor, která měří atmosférický tlak a teplotu. Obvykle se používá k určení nadmořské výšky a v meteorologických stanicích. Zařízení se skládá z piezo-odporového senzoru, teplotního senzoru, ADC, energeticky nezávislá paměť, RAM a mikrokontrolér.

Technické vlastnosti snímače BMP180:

  • Limity měřeného tlaku jsou 225-825 mm Hg. Umění.
  • Napájecí napětí 3,3 – 5V;
  • Proud 0,5 mA;
  • podpora rozhraní I2C;
  • doba odezvy 4,5 ms;
  • Rozměry 15 x 14 mm.

Senzor bme280 obsahuje 3 zařízení - pro měření tlaku, vlhkosti a teploty. Navrženo pro nízkou spotřebu proudu, vysoká spolehlivost a dlouhodobou stabilní práci.

Technické vlastnosti senzoru bme280:

  • Rozměry 2,5 x 2,5 x 0,93 mm;
  • Kovové pouzdro LGA vybavené 8 výstupy;
  • Napájecí napětí 1,7 – 3,6V;
  • Dostupnost rozhraní I2C a SPI;
  • Spotřeba proudu v pohotovostním režimu 0,1 µA.

Pokud porovnáte všechna zařízení mezi sebou, jsou senzory velmi podobné. Oproti předchůdci, kam patří BMP180, více nový senzor BMP280 je znatelně menší. Jeho osmikolíkové miniaturní pouzdro vyžaduje péči při instalaci. Zařízení také podporuje rozhraní I2C a SPI, na rozdíl od svých předchůdců, kteří podporovali pouze I2C. V provozní logice snímače se prakticky nemění, pouze se zlepšila teplotní stabilita a zvýšilo se rozlišení ADC. Senzor BME280, který měří teplotu, vlhkost a tlak, je také podobný BMP280. Rozdíl mezi nimi je ve velikosti pouzdra, jelikož BME280 má senzor vlhkosti, který rozměry mírně zvětšuje. Počet kontaktů a jejich umístění na těle jsou stejné.

Možnosti připojení pro Arduino

Připojení senzoru BMP180 k Arduinu. K připojení budete potřebovat samotný senzor BMP180, desku Arduino UNO, propojovací vodiče. Schéma zapojení je znázorněno na obrázku níže.

Zem z Arduina je potřeba propojit se zemí na senzoru, napětí je 3,3 V, SDA na pin A4, SCL na pin A5. Piny A4 a A5 jsou vybrány na základě jejich podpory pro rozhraní I2C. Samotný senzor pracuje na napětí 3,3 V a Arduino na 5 V, takže na modulu se senzorem je nainstalován stabilizátor napětí.

Připojení BMP 280 k Arduinu. Pinout a pohled shora na desku jsou znázorněny na obrázku.

Samotný modul tlakového senzoru vypadá takto:

Pro připojení k Arduinu je třeba připojit výstupy následovně: připojte zem k Arduinu a na senzoru, VCC - na 3,3 V, SCL / SCK - na analogový pin A5, SDA / SDI - na A4.

Připojení snímače BME280. Umístění kontaktů a pinů snímače BME280 je stejné jako u BMP280.

Protože senzor může pracovat přes I2C a SPI, lze připojení realizovat dvěma způsoby.

Při připojení přes I2C je potřeba propojit piny SDA a SCL.

Při připojení přes SPI je potřeba připojit SCL z modulu a SCK (13. pin na Arduinu), SDO z modulu na pin 12 Arduina, SDA na pin 11, CSB (CS) do libovolného digitální pin, v tomto případě na pin 10 na Arduinu. V obou případech je na Arduinu připojeno napětí 3,3V.

Popis knihovny pro práci se senzorem. Příklad náčrtu

Pro práci se snímačem BMP180 existují různé knihovny, což zjednodušuje práci. Patří mezi ně SFE_BMP180, Adafruit_BMP085. Stejné knihovny jsou vhodné pro práci se snímačem BMP080. Senzor bmp280 používá podobnou knihovnu Adafruit_BMP280.

První zkušební náčrt přiměje snímač číst tlak a teplotu. Kód je vhodný pro snímače BMP180 i BMP280, stačí připojit správnou knihovnu a určit správné kontakty, ke kterým je modul připojen. Nejprve je potřeba propojit všechny knihovny v kódu a inicializovat provoz senzoru. Chcete-li určit tlak, musíte nejprve znát teplotu. K tomu slouží následující prvek kódu.

Status = pressure.startTemperature();// Čtení teplotních dat ze senzoru if(status!=0)( delay(status); // Waiting status = pressure.getTemperature(T); // Ukládání přijatých teplotních dat if( status !=0)( Serial.print("Temperature: "); // Zobrazí slovo "Teplota" Serial.print(T,2); // Zobrazí hodnotu teploty. Serial.println("deg C, "); //Vytiskne symbol Celsia.

Poté potřebujete získat informace o atmosférickém tlaku.

Stav = tlak.startPressure(3); // tlak je načten if(status!=0)( delay(status); // Waiting status = pressure.getPressure(P,T); // tlak je přijat, uložen if(status!=0)( Serial.print ( "Absolutní tlak: " // Zobrazí slova "Atmosférický tlak" Serial.print(P,2) // Zobrazí hodnotu proměnné mBar Serial.print(" mbar, "); print(P*0.7500637554192,2) // zobrazení hodnoty v mmHg (mmHg) Serial.println(" mmHg");) // zobrazení jednotky tlaku "mmHg" " (mm.Hg).

Po načtení náčrtu se v okně sledování portu objeví údaje o teplotě a atmosférickém tlaku.

Senzor BME280 také zobrazuje tlak a teplotu, navíc umí číst hodnoty vlhkosti, což je ve výchozím nastavení vypnuto. V případě potřeby můžete senzor upravit a začít odečítat hodnoty vlhkosti. Rozsah měření od 0 do 100 %. Knihovna, která je potřebná pro práci se senzorem, se nazývá Adafruit_BME280.

Kód je podobný výše popsanému, jsou do něj přidány pouze řádky pro stanovení vlhkosti.

Void printValues() ( Serial.print("Temperature = "); Serial.print(bme.readTemperature()); Serial.println(" C"); //určení teploty, její zobrazení na obrazovce ve stupních Celsia. Serial.print("Tlak = "); ;

Možné chyby připojení a jejich odstranění

Nejčastější chybou jsou chybné údaje o tlaku a teplotě, které se od skutečné hodnoty liší o několik řádů. Důvodem je nejčastěji nesprávné připojení– např. knihovna uvádí, že je potřeba připojit přes I2C, ale čidlo je připojeno přes SPI.

Při použití „čínských“ senzorů se také můžete setkat s nestandardními adresami I2C nebo SPI. V tomto případě se doporučuje naskenovat všechna připojená zařízení pomocí některého z oblíbených náčrtů a zjistit, na jakou adresu váš tlakový senzor reaguje.

Dalším problémem může být nesoulad mezi provozním napětím modulu a základním napětím použitého regulátoru. Chcete-li tedy pracovat s 3,3 V senzorem, budete muset vytvořit dělič napětí nebo použít některý ze stávajících připravených modulů přizpůsobení úrovně. Mimochodem, takové moduly jsou poměrně levné a začátečníkům se doporučuje je používat.

Malé odchylky od skutečné hodnoty mohou být způsobeny kalibrací snímače. Například pro snímač BMP180 jsou všechna data vypočtena a specifikována v náčrtu. Chcete-li získat více přesnou hodnotu nadmořskou výšku, pro tyto souřadnice potřebujete znát aktuální hodnotu tlaku nad mořem.

Závěr

Senzory atmosférického tlaku bmp180, bmp280 nepatří k nejlevnějším typům senzorů, ale v mnoha případech k takovým senzorům prakticky neexistuje alternativa. V projektu meteostanice snímač zaznamenává důležitý parametr– atmosférický tlak, který umožňuje předpovídat počasí. V projektech souvisejících s tvorbou létajících vozidel se barometr používá jako snímač skutečné nadmořské výšky.

Připojení senzorů nepředstavuje žádné potíže, protože používá se standardní připojení i2C nebo SPI. Pro programování můžete použít některý z již připravených.

Nikdy předtím nebylo tak snadné realizovat vášeň pro elektrotechniku, robotiku a automatické odezvové a řídicí systémy.

Pokud dříve existovaly specializované konstruktéry s omezenými sadami funkcí a přísně dané parametry, pak je dnešní rozmanitost stavebnic prostě úžasná: skutečné mikroprocesorové systémy sestavené na koleně mají téměř neomezenou funkčnost. Bohatá představivost, široká elementová základna, velké komunity fanoušků a inženýrů a podpora výrobce jsou hlavní charakteristické rysy takové robotické sady na trhu.

Jeden z nich a nejoblíbenější, přirozeně, je Arduino. Konstruktor pro okamžitou elektronickou montáž automatická zařízení jakýkoli stupeň obtížnosti: vysoká, střední a nízká. Této platformě se jinak říká „fyzické výpočty“ pro její úzkou interakci prostředí. PCB s mikroprocesorem, otevřený programový kód, standardní rozhraní a připojení senzorů k Arduinu jsou součásti jeho popularity.

Systém je deska, která spojuje vše dohromady potřebné komponenty, poskytování celý cyklus rozvoj. Srdcem této desky je mikrokontrolér. Umožňuje ovládání všech periferií. Senzory připojené k systému umožňují systému „komunikovat“ a interagovat s prostředím: analyzovat, označovat, měnit.

Připojení digitálního čidla vlhkosti, teploty

Dva oblíbené senzory - DHT11, DHT22 - jsou určeny pro měření vlhkosti a teploty (budeme mluvit o připojení teplotního senzoru); levné řešení, skvělé pro jednoduché obvody a školení. Termistor, kapacitní senzor - základ DHT11 a DHT22. Interní čip provádí ADC a dává výstupu „číslici“, které bude rozumět každý mikrokontrolér.

DHT11 se liší od DHT22 v rozsahu měření a vzorkovací frekvenci: vlhkost - 20-80% pro DHT11 a 0-100% pro DHT22; teplota - 0 °C až +50 °C pro DHT11 a -40 °C až +125 °C pro DHT22; dotazování - každou sekundu pro DHT11 a jednou za dvě sekundy pro DHT22.

Oba DHT senzory mají standardní 4 piny:

  1. Napájení senzorů.
  2. Datová sběrnice.
  3. Nezapojeno.
  4. Země.

Datové a napájecí kolíky vyžadují 10k ohmový odpor mezi nimi.

Určeno pro DHT senzory knihovna DHT.h(lze vidět v odkazu). Při načítání náčrtu do ovladače by měl monitor portu zobrazovat aktuální hodnoty vlhkosti a teploty. Je snadné zkontrolovat jeho funkčnost - stačí dýchat na senzor a zvednout ho: teplota a vlhkost by se měly změnit.

Je možné zobrazit hodnoty na obrazovce LCD 1602 I2C, pokud jej zařadíte do systému.

Pomocí těchto senzorů můžete stavět automatizovaný systém zalévání půdy venku, ve skleníku a dokonce i na parapetu. Nebo uspořádejte systém pro sušení bobulí - ty se foukají nebo zahřívají v závislosti na obsahu vlhkosti bobulí.

Některá akvaterária také vyžadují speciální vlhkostní podmínky, které lze snadno ovládat pomocí DHT1 a DHT22.

Často je při předpovědi počasí nebo určování nadmořské výšky nutné řešit problém měření tlaku. Zde přicházejí na pomoc elektronické barometry založené na technologii MEMS: tenzometrická nebo piezorezistivní metoda spojená s proměnlivostí odporu zařízení při působení sil deformujících materiál.

Nejoblíbenější snímač BMP085; Kromě barometrického tlaku zaznamenává i teplotu. Byl nahrazen BMP180, který má stejné vlastnosti:

  • Citlivost v rozmezí: 300-1100 hPa (pokud v metrech - 9000 - 500 m nad mořem);
  • Rozlišení: 0,03 hPa nebo 0,25 m;
  • Pracovní teplota snímače -40 +85°C, přesnost měření v uvedeném rozsahu - ±2°C;
  • Připojení přes standard i2c;
  • V1 používá 3,3 V pro napájení a logiku;
  • V2 používá 3,3-5V pro napájení a logiku.

Připojení senzorů k Arduinu je v tomto případě standardní:

Bude potřeba Jednotný ovladač snímače- jeho aktualizovaná verze poskytuje více vysoká přesnost indikace; Navíc umožňuje pracovat s několika různými připojenými tlakovými senzory současně. Musíte také nainstalovat knihovnu Adafrut_Sensor.

Bez tohoto senzoru ani jeden vážný bezpečnostní systém. Infračervený senzor - základní prvek zjišťování přítomnosti teplokrevných živočichů.

Také pomocí PIR senzorů je mimořádně pohodlné ovládat osvětlení v závislosti na přítomnosti osoby v blízkosti. Infračervené nebo pyroelektrické senzory jsou jednoduché vnitřní struktura a levné. Jsou extrémně spolehlivé a málokdy selžou.

Základna senzoru- pyroelektrikum nebo dielektrikum schopné vytvořit pole při změně teploty. Jsou instalovány v párech a nahoře pokryty kopulí se segmenty ve formě běžných čoček nebo Fresnelovy čočky. To umožňuje, aby byly paprsky zaostřeny různé body penetrace.

Při nepřítomnosti těles vyzařujících teplo v místnosti má každý prvek stejnou dávku příchozího záření a tedy stejné napětí na výstupech. Když živý teplokrevník vstoupí do „pozorovací“ zóny senzorů, rovnováha se naruší a objeví se impulsy, které jsou zaznamenány.

HC-SR501- nejběžnější a nejoblíbenější snímač. Má dva zastřihovače proměnné rezistoru: jeden slouží k nastavení citlivosti a velikosti detekovaného objektu, druhý slouží k nastavení doby odezvy (doba generování pulzu po detekci).

Schéma zapojení je standardní a nezpůsobuje žádné potíže.

Přestože mnoho senzorů obsahuje funkci měření teploty, je lepší použít samostatný, specializovaný senzor. Například DS18B20. Jedná se o integrovaný senzor s digitálním sériovým rozhraním.

Jeho přednosti:

  • předběžná tovární kalibrace;
  • chyba menší než 0,5 °C;
  • softwarově definované rozlišení 0,0625°C při 12bitovém rozlišení;
  • extrémně široký rozsah měřených teplot: od -55°C do +125°C;
  • snímač má vestavěný ADC;
  • Na jedné komunikační lince může být zahrnuto několik senzorů.

Tělo TO-92- nejběžnější pro tyto snímače. Existují dvě hlavní schémata připojení teplotního senzoru DS18B20 k mikroprocesoru nebo řadiči:

Pro práci se senzorem je nutné jej inicializovat. Následuje zápis bajtu a čtení bajtu.

Tyto tři operace demonstrují, jak senzor funguje a knihovna OneWire je dokonale podporuje. Nainstalujte knihovnu OneWire. Poté nahrajeme skicu - a softwarové prostředí připraven.

Je možné připojit několik senzorů DS18B20 - v tomto případě musí být zapojeny paralelně. Knihovna OneWire vám umožní číst čtení ze všech najednou. Se simultánním velký počet Při připojování senzorů musíte přidat další odpory 100 nebo 120 Ohmů mezi datový pin senzoru DS18B20 a datovou sběrnici na Arduinu.

Závěry

Připojení senzorů k Arduinu je transformací algoritmického robota řízeného automaticky resp manuální režim, V plné prostředí interakce zařízení a obvodů s okolím. Nezapomeňte - to není všelék na všechny neduhy. A ne konečný high-tech produkt nebo konečná aplikace. Arduino je komplex hardwaru a softwarová řešení který pomůže:

  • hlavní algoritmizační systémy pro začínající inženýry;
  • zvládnout základní designérské dovednosti;
  • naučit se programovat.

Bez ohledu na vaši úroveň výcviku, vaše znalosti, vždy si můžete vybrat úkoly v rámci svých možností. Můžete sestavit jednoduché řešení pro automatizaci jakéhokoli jednoduchého úkolu bez pájení spolu se studentem; Nebo si můžete nastavit globální úkol, který vyžaduje kromě znalostí a logiky také schopnost efektivně a správně pájet a číst výkresy. A aktivní komunity, fóra a znalostní báze na systému Arduino pomohou vyřešit téměř jakýkoli problém.




Nahoru