Lekce 19 - Arduino a senzor tlaku BMP085

24.05.2013 21:07

Translate to English

   

 Před několika dny mi dorazil poštou senzor atmosférického tlaku BMP085 od firmy Bosch. Jedná se o již připravený modul o velikosti 20x15mm takže opravdu prcek. Nálézá se na něm 6 vývodů, všechny jsou na modulu popsané a vzhledem k tomu, že modul komunikuje protokolem I2C, stačí pro funkční zapojení pouze 4 vodiče (2 napájení a 2 pro I2C). Modul je napájený napětím 3V, což z Arduina není problém. S tímto modulem si můžeme postavit malou meteostanici i s předpovědí počasí, elektronický měřič nadmořské výšky a pod.

     Pro zprovoznění modulu máme 2 možnosti. Jedna obtížnější - po prozkoumání datasheetu napíšeme zdrojový kód a poté ta lehčí - najdeme již napsanou knihovnu modulu a importujeme ji do programu. Začneme, ale pro pochopení modulu tou težší.     

     Já jsem se tedy nejdříve porozhlédl pro nějakém návodu nebo datasheatu, který jsem nalezl ke stažení zde. Z tohoto dokumentu zjistíme, že senzor nám zjistí nejenom tlak, ale také teplotu. Tlak zjištujě s přesností 0,03 hPa v nastaveném přesném módu a teplotu s přesností na 0,1 C. Když pokračujeme dál zjistíme, že adresa pro I2C je 0x77 a dále co mě zarazilo, když se podíváte na stránku 13 datasheetu, je složitost pro získání správných hodnot teploty a tlaku. Já popíšu zhruba postup jak je k těhto hodnot dosaženo.

  1. Musíme získat tzv. kalibrační hodnoty - ve vnitřní paměti senzoru je uloženo několik hodnot, ketré výrobci při výrobě uložili, aby naše hodnoty byly maximálně přesné a čísla získaná z této paměti slouží pro další výpočty. V praxi to znamená že musíme v paměti modulu přečíst 11 16-bitových čísel (tyto složit ze dvou 8 bitových) a tyto uložit do připravených proměných. To jsme se již učili a postup je obdobný jako u čtení z EEPROM na I2C. 
    Každá hodnota má svoje dvě asdresy pro každou 8 bitovou hodnotu
  2. Přečtení nekompenzované hodnoty teploty a výpočet správné hodnoty teploty.
  3. Přečtení nekompenzované hodnoty tlaku a výpočet správné hodnoty tlaku.

Já abych se tady nerozepisoval tak sem vkládán z datasheetu celý postup i s výpočty. Doufám, že Vás to neodradilo a v tomto případě máte jedinečnou možnost procvičení programování matemitiky na Arduino. Nicméně nechápu, proč vyvojoví pracovníci ve fy. Bosch toto již nenaprogramovali do modulu :-). Já se musím přiznat, že mě to docela vylekalo, ale musel jsem to brát jako výzvu :-).

Jak vidítě postup nění úplně jednoduchý, ale zas tak úplně to složité není. V ukázce programu je to trošku rozděleno do funkcí pro větší přehled. Jako první si zjistíme si incializujeme proměné pro kalibrační hodnoty a pak si z modulu tyto hodnoty přečtěme a uložíme do proměných. Čteme 16 biitové číslo - tzn. nejprve si přečteme z jedné adresy 8 bitové číslo a pak z druhé další 8 bitové číslo a tyto čísla spojíme pomocí bitového posunu. Adresy hodnot najdeme v tabulce výše v textu. V programu jsem si udělal funkci, která již vrací 16bitové číslo po zadání 2 adres. Je to funkce "GetShort". Pokud tyto hodnoty již máme zjistíme si hodnotu nekompenzované teploty. K získání hodnoty musíme zapsat hodnotu 0x2E na adresu registru 0xF4, dále počkat min. 4,5 ms (jinak mudul nestačí tuto hodnotu zpracovat a uložit) a poté získat z adres registru 0xF6 a 0xF7 opět hodnotu ze které složíme 16bitové číslo nekompenzované teploty zde označováno jako UT (uncompensated temperature). Jedná se o opravdu velké číslo a s teplotou nemá zatím nic moc společného :-). Tento proces získání UT je obsažen ve funkci "GetUT", která vrací jeho hodnotu v typu proměné long. Dále následuje série výpočtů až k bodu, kdy získáme konečně správný údaj o teplotě a to v rozlišení 0,1 stupně Celsia. To číslo je vlastně násobeno 10. Správná hodnota je vždy teplota/10. (tzn. že T=224 je 22,4 st. Celsia). Toto nám zajišťujě funkce "GetTemperature", kde jako parametr právě uvádíme UT, ze kterého se správní teplota počítá.

Po získání údajů o teplotě si změříme atmosférický tlak. Postup je podobný. Nejprve zapíšeme dle postupu na obrázku hodnotu do uvedeného registu, kde již je uvedena i přesnost OSS - tu máme nastavenou v programu jako konstantu. (0 až 3), dále chvilku počkáme. Doba závisí na nastavené přesnosti a v programu je již zohledněna. Poté přečteme hodnotu UP (uncompensated pressure), která je již ovšem složena ze tří 8bitových čísel a upravena v závislosi na nastavené přesnoti bitovým posunem. To v programu zajištujě funkce "ReadUP". Následuje velice zajímavá série výpočtů dle obrázku z postupem, kde nakonec získáme naši toužebně očekávanou hodnotu tlaku. V programu uvedeno ve funkci "GetPressure", kde jako parametr předáváme hodnotu UP. Výsledná hodnota je samozřejmě uvedena v Pascalech. Pro převod do kPa (hektoPascalů vydělíme 100). 

Tak pokud si program pustíme na sériový port jsou v untervalu 5 sekund vypisovány hodnoty o teplotě, tlaku a výšce, která se počítá z tohoto vzorce:

Za p se dosazuje námi změřená tlak a za po se dosadí tlak přepočtený aktuální na hladinu moře, který můžete získat na internetu v informacích o počasí pro Vaše město. Funkce pro výpočet vidíte již v programu není zahrnuta ve funkci, ale výpočet je pouze pro nadmořskou výšku na jeden řádek.v baterii

Tak tady je k tomuto funkční program:

Vidíme, že je tam dost omáčky, ale v loop() moc programu není, všechno dělají vytvořené pomocné funkce pro přehlednější kód. Program, ale funguje dobře. Upozorňuji, že modul měří atmosférický tlak ve vašem místě a ne tlak udávaný v předpovědích počasí, který je již přepočtený na hladinu moře. Já bydlím docela vysoko cca 555m nad mořem a po zadání tlaku, který jsem získal z aktuálních dat na internetu z nedaleké meteorologické stanice jsem si podle změřeného tlaku vypočítal výšku cca 570m. Nepatrná odchylka tu je. Vy budete ale modul možná používat jako měřič barometrického tlaku. Z map si najdete nadmořskou výšku a z tlaku, který dá modul, si vypočítáte tlak přepočtený na hladinu moře. 

V programu si také můžete nastavit přesnost od 0 do 3. 0 je samozřejmě s nejmenší přesností, ale výpočet netrvá tak dlouho. Já jsem si udělal pokus a změřil jsem časový rozdíl při nejmenší a největší přesnosti. Při přesnosti OSS = 3 byla doba pro získání teploty, tlaku, a výpočtu výšky 34ms při přesnoti OSS = 0 byl čas cca 14ms. Myslím, že pro naše použití bude taková nepatrná doba nepodstatná. Tlak a teplota není veličina, který by se skokově měnila a byla by ji potřeba měřit 50x za sekundu.

Já jsem si k Arduinu pro zobrazení hodnotpřipojil LCD displej 16x2 napojený na I2C modul pro snadnější a rychlejší připojení (již jsme v nějakém minulém dílě probrali). Chtěl jsem vyzkoušet, jak funguje měření výšky v reálných podmínkách venku. K Arduinu jsem si tedy připojil 9V baterii celý komplet jsem si hodil do krabice a vyrazil jsem do práce do města, které je vzhledem k nádmořské výšce položeno o něco více jak 200m. Fungovalo to bezvadně. Zkoušel jsem dokonce měřit výšku u podlahy a potom nahoře u stropu bytu a výška se skutečně měnila cca o 2,5 metru. 

     Tak a teď ta lehčí metoda pro lenochy. Z tohoto zdroje si stáhneme knihovnu pro BMP085. Po otevření (je to ve formátu *.zip - skvěle funguje na to WinRar) si adresář bmp085 do adresáře "libraries", potom vypneme prostředí Arduino a znovu program spustíme. Již by se měla objevit v nabídce v menu "Sketch->Import Library-> ...." (postup jsme si ukázali v minulých dílech". Tak já hned uvedu nějaký program, který pracuje právě s touto knihovnou:

Já jsem trošku upravil a přeložil příklad uvedený s knihovnou. Jsou tam uvedeny tři možné inicializace senzoru. Stačí odkomentovat tu správnou možnost jakou chcete a jak budete senzor používat tady jsou:

  1. dps.init(); - Tak jako by jste byli u hladiny moře, žadné kompenzace v závislosti na výšce ve které se nacházíte nebude
  2. dps.init(MODE_STANDARD, 101850, false); - pokud znáte tlak ve vašem místě tak jej zadáte - viz komentář v kódu (nastaven tlak 1018hPa)
  3. dps.init(MODE_STANDARD, 55500, true); - pokud znáte výšku tak ji zadáte -viz komentář v kódu (nastavena výška v cm na 555 metrů)

Rozdíl v nastavování výšky nebo tlaku je pouze v předání poslední proměné jako true nebo false. Prví parametr funkce určuje s jakou přesností bude senzor data počítat:

  1. MODE_ULTRA_LOW_POWER    -->   přesnost 0,06hPa
  2. MODE_STANDARD    -->   přesnost 0,05hPa
  3. MODE_HIGHRES     -->   přesnost 0,04hPa
  4. MODE_ULTRA_HIGHRES     -->    přesnost 0,03hPa

Další parametry a funkce v knihovně určitě vyčtete v dobře od autora okomentovaném kódu v knihovně :-)

Nějaké tipy na stránky:

Aktuální informace o tlaku na území České republiky

Zjištění nadmořské výšky z mapy

Atmosférický tlak - Wikipedie

 

Zpět

Diskusní téma: Lekce 19 - Arduino a senzor tlaku BMP085

Datum
Vložil
Titulek

Штабелера

Грузоподъемность: 1000 кг. Высота подъема: 990 мм. Размер платформы: 1010х520 мм. Колеса: 125х50 мм. Гарантия: 12 мес.
Грузоподъемность. Максимальная высота подъема. Минимальная высота подъема. Габариты платформы. Скорость подъема.
Каталог гидравлических подъемных столов Edmolift под заказ.
Низкопрофильные ножничные столы.
Стационарные — устанавливаются и используются в одном месте. Передвижные — могут перемещаться для работы в разных зонах помещений. Низкопрофильные — платформа находится практически на уровне пола, поэтому на нее может заезжать тележка или другая техника. С весами — позволяют взвешивать грузы при выполнении складских работ.
Стол устойчивый, подъёмный механизм обеспечивает плавное движение груза, мобильный. В компании «Адванта-М Сибирь» в Красноярске гидравлический стол вы купите по выгодной цене первого импортера! Оформляйте заявку онлайн, и мы зарезервируем товар на складе!

Datum
Vložil
Titulek

Погрузчики Вилочные

Высота в сложенном виде, мм 210.
Конструкцию стола отличает повышенная устойчивость, плавное регулирование уровня подъема и достаточная мобильность.
Надежность и долговечность подъемных столов Edmolift обеспечиваются высоким качеством материалов и компонентов, а также строгими стандартами производства. Это позволяет использовать эти столы в различных отраслях и условиях эксплуатации, от складов и производственных цехов до торговых и коммерческих объектов.
Арт. 700065.
Плюсы заказа в КАМИ.
Выберите один из товаров, чтобы получить подарок.

Datum
Vložil
Titulek

Тележка Складские

19 000 ? при заказе с промокодом ШЕСТЬ Сделайте заказ сейчас или назовите промокод менеджеру по телефону и получите специальную цену по промокоду ШЕСТЬ.
Цена от 279 000 руб. Грузоподъемность - до 30 тонн Высота подъема - до 12 метров Размеры платформы (мм) - от 1000х800 до 13500х4000 Срок изготовления - от 10 до 35 дней В трехножничных стационарных подъемных столах зачастую устанавливаются дополнительные устройства безопасности, а именно защита от опрокидывания в виде жесткой направляющей; могут иметь несколько автоматических остановок, откидные аппарели; защита груза от разрыва маслопровода ножничного стола. Иногда не следует добиваться чрезмерно малой высоты приямка гидравлического подъемного стола, т.к. при его уменьшении - уменьшается угол расположения гидроцилиндра относительно платформы, и зачастую приводит к значительному увеличению мощности гидравлической станции и удорожанию подъемного стола.
Передвижной подъемный стол OXLIFT EPS80 оснащен двигателем подъема и аккумуляторной батарей. Он значительно облегчает транспортировку и перегрузку тяжелых товаров, узлов и комплектующих. Такое грузоподъемное оборудование пригодится на складе, в цеху, гараже или мастерской.
Доп. скидка 5% на всю технику Smartlift из наличия до 15.04, суммируется с акциями, применяется автоматически (заказ через корзину) или менеджером (заказ по телефону, Email или в форме).
шасси с двумя опорными и двумя поворотными колесами грузовой платформы; ножничного подъемного механизма (подвижные рычаги); гидравлического привода (насос с ножной педалью);
Передвижной подъемный стол OXLIFT EPSD50 оснащен подъемным электродвигателем и 12-вольтной АКБ. Он пригодится на складе, в цеху, гараже или мастерской. С его помощью можно быстро перевозить и перегружать тяжелые товары, узлы и комплектующие.

Datum
Vložil
Titulek

Полосовые Завесы Пвх

Собственный вес: 160 кг.
Мы доставим Ваш заказ по Москве в пределах МКАД совершенно бесплатно, если его стоимость превысит 25 000 рублей. Подробности у менеджеров-консультантов.
Введите промокод ШЕСТЬ в корзине или назовите менеджеру по телефону и получите дополнительную скидку 6% от указанной на сайте цены. Скидка применяется при 100% предоплате счёта. Акция проводится до 31 марта или пока товар есть в наличии.
Арт. 700066.
Стол устойчивый, подъёмный механизм обеспечивает плавное движение груза, мобильный. В компании «Адванта-М Сибирь» в Красноярске гидравлический стол вы купите по выгодной цене первого импортера! Оформляйте заявку онлайн, и мы зарезервируем товар на складе!
Оборудование.

Datum
Vložil
Titulek

Полосова¤ Завеса Пвх

Особенности моделей.
На наш завод, за все время.
Артикул на сайте 52661.
Грузоподъемность, кг 800 Высота подъема, мм 1500 Размер платформы (ДхШ), мм 1200x610.
Грузоподъемность от 200 до 2000 кг Высота подъема от 600 до 1420 мм.
Подъемный стол гидравлический двухножничный.

Datum
Vložil
Titulek

Складских Тележки

Еще -5%
Грузоподъемность: 150 кг.
Арт. 700058.
Доп. скидка 5% на всю технику Smartlift из наличия до 15.04, суммируется с акциями, применяется автоматически (заказ через корзину) или менеджером (заказ по телефону, Email или в форме).
Главное преимущество — способность выдерживать значительные нагрузки и обеспечивать плавное и контролируемое поднятие и опускание грузов. Они имеют простую конструкцию, которая включает гидравлическую систему, основной стол и управляющую панель. Благодаря этому, гидравлические столы обеспечивают безопасность и удобство в работе.
Грузоподъемность, кг 150.

Datum
Vložil
Titulek

Картонный Гильзы

Варианты доставки:
Клиентам доступна:
Как осуществляется доставка?
ПЭВД (полиэтилен высокого давления) ПЭНД (полиэтилен низкого давления)


Datum
Vložil
Titulek

Обновлённые кракен маркет сайт пути и свежие зеркала

<b>Где получать настоящую реальный адрес и как распознать рабочее зеркало > <a href="krakenmagazin.cc">кракен магазин</a></b>

Салют, хотел объявить полезной информацией для тех, кто ищет живые ресурсы.

Рабочее зеркало кракен сегодня одно, а завтра уже другое - как быть? Вот в чём штука: рабочее зеркало кракен сегодня одно, а завтра уже может быть совсем другое. Это как игра в прятки, и кто не готов - остаётся с носом. Каждый день блокировки меняют правила, и сайт меняет адреса, чтобы оставаться на плаву. Это реальность, и с этим надо считаться. Найти актуальное зеркало кракен - задача не из лёгких. Ты заходишь, находишь рабочее зеркало, радуешься, а на следующий день - уже ничего не работает. Заблокировали. И вот тут большинство сдаются, начинают искать очередной фейк. Не надо так. Нужно понять, что смена зеркал - часть игры. Главное - быть всегда на шаг впереди. Как быть? Во-первых, не верить первым ссылкам, которые найдёшь в открытом интернете. Там полно фейков, ловушек, мошенников. Во-вторых, использовать проверенные методы - Tor, VPN, а также проверенные источники. Рабочее зеркало кракен обычно распространяется через личные каналы, сообщества, где люди проверяют ссылки. Да, это неудобно. Но такова цена настоящей безопасности и стабильного доступа. Если хочешь, чтобы всё было как по маслу, готовься к тому, что придётся постоянно обновлять адреса и искать актуальное зеркало кракен. Это не слабость системы - это её защита. Короче, не падай духом, если сегодня рабочее зеркало кракен работает, а завтра нет. Это нормальная ситуация. Надо просто быть готовым и иметь несколько источников. Кто подготовлен, тот всегда в выигрыше. И это реальность, в которой живем мы все.


<p>Сегодня я протестировал несколько адресов, и вот что стабильно работает:</p>

<p>
<a href="krakenmarketplaces.cc">кракен маркетплейс тор</a> — krakenmarketplaces.cc<br>
<a href="krakenmagazin.cc">кракен магазин тор</a> — krakenmagazin.cc
</p>

<p>Пишите, если нужна помощь.<br>
Инфа проверена лично (Псков).</p>

<i>KRN даркнет маркет мессенджер тг </i>

Datum
Vložil
Titulek

Кракен маркет: как всё устроено?

<b>Кракен маркеты — что это такое?</b> > <a href="krakec.cc"> кракен рабочий сайт </a>
<p>Хей, хотел донести информативной информацией для тех, кто ищет реальные ресурсы.</p>
<p>Раньше я как все пытался обходить блокировки разными способами. Но когда впервые попробовал кракен даркнет тор, понял - это реально удобно и надежно. Кракен сайт даркнет через тор работает быстро, без глюков и постоянных падений, просто включаешь браузер и спокойно заходишь, никаких лишних заморочек, никакой суеты. Когда все вокруг ломается или тормозит, кракен даркнет тор просто тихо решает вопрос. Именно поэтому я сделал этот путь своим основным, не надо искать всякие мутные зеркала или ждать новых ссылок - включил тор, ввел адрес, и всё работает, никаких сюрпризов. Мне важно, чтобы всё шло гладко. И этот способ именно такой, проверенный и стабильный, поэтому если хочешь по-настоящему простой и рабочий вариант - кракен даркнет тор именно для этого, рекомендую.
</p>
<p>Сегодня я протестировал несколько форумных ссылок, и вот что стабильно работает:</p>
<p> <a href="krakec.cc"> кракен даркнет маркет </a>
krakec.cc </p>
<p> <a href="krakec.cc"> ссылки форумы кракен </a>
krakec.cc </p>
<p><i>Kraken site даркнет магазин тэлега </i></p>
<p> Спрашивайте, если нужна помощь.<br>
Инфа проверена лично (<b>Псков</b>). </p>

Datum
Vložil
Titulek

Как попасть на Кракен через Tor?

<b>Кракен зеркало для Tor браузера >
<a href="krakev.cc">кракен форум</a></b>

<p>Хей, хотел оставить полезной информацией для тех, кто ищет надежные ресурсы.</p>

<p>Кракен форум зеркало - это твоя секретная база в темном интернете, где всё четко и по делу, в отличие от других площадок, где все болтают, но толку от этого ноль. Кракен темный форум работает как отлаженный механизм, здесь все знают правила игры, нет лишних слов и фейков, каждый участник держит строй и отвечает за свои слова. Если нужно - делятся ценными фишками, а не разводят на пустом. На кракен форуме зеркало всегда актуально, чтобы ты не застрял на старых адресах, и доступ был стабилен, в отличие от остальных, где постоянно ловишь бан и сливы. Кракен темный форум - это настоящая комната переговоров, где решаются важные вопросы, а не просто тусовка. Если хочешь быть в курсе и работать по-настоящему, то это твой выбор, без лишних слов и пустых обещаний.
</p>

<p>Сегодня я протестировал несколько доступов, и вот что стабильно работает:</p>

<p>
<a href="krakev.cc">кракен зеркало</a> — krakev.cc<br>
<a href="krakev.cc">кракен ссылка зеркало</a> — krakev.cc
</p>

<i>Сайт Кракена секретная торговая платформа тэлеграм </i>

<p>Оставляйте комменты, если нужна помощь.<br>
Инфа проверена лично (Москва).</p>

<< 1 | 2 | 3 | 4 | 5 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.