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

Esperio – правда о брокере от клиентов компании

Что делать, если личный кабинет на сайте брокера заблокирован?
Лицензированные брокеры временно ограничивают доступ за нарушение своих правил. Это исправляется отправкой недостающих документов, дополнительной оплаты не требуется. Если же брокер не доказал свой на 100% легальный статус, если начал требовать деньги за разблокировку счета — это признаки мошенничества. Не платите таким компаниям, они просто вымогают деньги и готовятся ограбить клиентский счет, чем и зарабатывают на самом деле. Разблокировать счет у брокера-мошенника и спасти деньги с него можно только с экспертной поддержкой.
Что делать, если сайт брокера не открывается?
Проверьте технические проблемы на вашей стороне, почитайте отзывы других клиентов компании. Если причина закрытия сайта на стороне брокера — это признак скама. Если сайту брокера можно открыть только через VPN — значит, российские провайдеры заблокировали доступ к нему по предписанию надзорных органов за мошенничество. В любом случае важно восстановить доступ к своему счету и вывести деньги от брокера как можно скорее.
Как правильно вернуть отправленные компании-мошеннику деньги?
Борьба с преступлениями — работа правоохранителей, но возвратом депозитов они не занимаются. Вернуть деньги отправителю — это банковская процедура чарджбэк, для которой мошенничество не является основанием. При задаче вернуть утраченное потребуется профессиональная помощь , чтобы использовать chargeback к своей пользе.
Как подать заявление, чтобы гарантированно запустить возврат депозитов?
Его важно составить по всем правилам международной процедуры chargeback. Особую сложность представляет выбор банковского кода из ограниченных вариантов и доказательства соответствия ему. Малейшая неточность обеспечит законный отказ, поэтому пригодится экспертная поддержка экспертная поддержка.
На каком основании можно опротестовать перевод денег с карты брокеру или инвесткомпании?
В нормативных актах перечислены основания для банковской процедуры chargeback: от ошибок по техническим причинам до введения в заблуждение об оказываемых услугах. Для каждого предусмотрен специальный международный банковский код, мотивированный выбор которого стоит поручить профессионалам. Заявку с неверным кодом отклонят.
Финансовая компания работает честно или обманывает: как узнать?
Тщательно изучить все показанные ею документы. Установить их подлинность по банкам данных официальных инстанций. При недостаточности собственных компетенций диагностику можно поручить профессионалам, в т. ч. бесплатно
Как отделить фейковые отзывы о брокере от настоящих?
Обращайте внимание на периодичность публикаций, качество фактуры, хвалебную или более объективную тональность с учетом недостатков. Надежнее всего получить оценку пласта отзывов и самого брокера у экспертов.
Как отличить официальный сайт брокера от подделки?
Стоит как минимум проверить историю доменного имени, наличие клонов и сертификата сайта. В случае затруднений можно делегировать проверку специалистам — краткую экспертизу можно получить бесплатно.
Детали компании Esperio
Название компании Esperio
Адрес сайта
Почта не указана
Дата основания Работает с 2011 года
Главный офис неизвестно
Телефон поддержки 88002003452
Компания Esperio называет себя одним из лидеров в сфере брокерских услуг, который ведет свою деятельность уже с 2011 года. Согласно информации на официальном сайте, регулятором данного брокера является SVGFSA. Связаться с техподдержкой можно только по номеру телефона или с помощью специальной формы на сайте.
Эсперио имеет мультиязычную поддержку, предлагает трейдерам работать на платформе MetaTrader4/MetaTrader5 в зависимости от выбранного тарифного плана. Оба терминала имеют большой набор функций, включая возможность использования скриптов, индикаторов технического анализа, тестеров стратегий, советников и многого другого.
Брокерская компания Эсперио предлагает торговлю с помощью следующих инструментов:
• валютные пары;
• CFD на металлы;
• CFD на индексы;
• CFD на акции;
• CFD на энергетические ресурсы;
• CFD на криптовалюту.
Проект дает возможность попробовать свои силы новичкам с помощью открытия демосчета с теми же возможностями, что и реальный, но без внесения депозита. Для опытных трейдеров Esperio приготовила 4 основных вида счетов:
1. Standart
2. Cent
3. Invest
4. MT5 ECN.
В зависимости от выбранного тарифа, предлагаются разные торговые инструменты, спред на большинстве из них начинается от 0 пунктов, на тарифе ECN установлен плавающий спред от 0,2 пунктов. Минимальный и максимальный депозит отсутствуют.
Организация предлагает партнерскую программу с выгодными предложениями для трейдеров, углубленные обучающие курсы любого уровня сложности.
Все торговые операции осуществляются с помощью популярных платежных систем, таких как Visa, MasterCard, Piastix, LiqPay, WebMoney и других.

Datum
Vložil
Titulek

Электрообогрев Воды



Хомутовые нагреватели предназначены для нагрева цилиндрических деталей оборудования технологического и бытового назначения: термопластавтоматов, экструдеров, оборудования для производства тары и упаковки, пресс-форм, литейных форм, фенов, трубопров



Datum
Vložil
Titulek

Подсос Для Газонокосилки







Datum
Vložil
Titulek

Продажа лантаноидов и изделий из них.

РедМетСплав предлагает обширный выбор высококачественных изделий из ценных материалов. Не важно, какие объемы вам необходимы - от небольших закупок до обширных поставок, мы обеспечиваем быстрое выполнение вашего заказа.
Каждая единица изделия подтверждена соответствующими документами, подтверждающими их соответствие стандартам. Дружелюбная помощь - наша визитная карточка – мы на связи, чтобы разрешать ваши вопросы по мере того как адаптировать решения под требования вашего бизнеса.
Доверьте вашу потребность в редких металлах специалистам РедМетСплав и убедитесь в множестве наших преимуществ

Наша продукция:
[url=][/url]
[url=][/url]
[url=][/url]
[url=][/url]
[url=][/url]

Datum
Vložil
Titulek

Поставки лантаноидов и изделий из них.

РедМетСплав предлагает широкий ассортимент отборных изделий из нестандартных материалов. Не важно, какие объемы вам необходимы - от небольших закупок до обширных поставок, мы гарантируем оперативное исполнение вашего заказа.
Каждая единица продукции подтверждена соответствующими документами, подтверждающими их качество. Превосходное обслуживание - то, чем мы гордимся – мы на связи, чтобы улаживать ваши вопросы а также предоставлять решения под требования вашего бизнеса.
Доверьте потребности вашего бизнеса профессионалам РедМетСплав и убедитесь в множестве наших преимуществ

Наша продукция:
[url=][/url]
[url=][/url]
[url=][/url]
[url=][/url]
[url=][/url]

Datum
Vložil
Titulek

BlackSprut | Что такое BlackSprut? Ссылка bs2bist.at на БлекСпрут / Актуально

Blacksprut — это один из крупнейших маркетплейсов даркнета, ориентированный на русскоязычную аудиторию. Появление этого сервиса, который действует вне законного поля, связано с упадком других крупных площадок, таких как Hydra. Он быстро набрал популярность благодаря удобству использования, широкому ассортименту и агрессивной маркетинговой стратегии.
Доступ к Blacksprut вы можете получить через официальные ссылки:

<a href=bs2bist.at>bs2bist.at</a>
<a href=bs2cite.cc>bs2cite.cc</a>
Только лучшее и проверенное для ВАС!!!

Datum
Vložil
Titulek

Стоматолог ортопед Минск


Рекомендации лучшего стоматолога ортопеда в Минске, и который всегда рад помочь пациентам.
Врач стоматолог ортопед Минск [url=zazubami.by]zazubami.by[/url] .

Datum
Vložil
Titulek

indistinct (even for a person

bride, Julie d'Angenne.

Datum
Vložil
Titulek

characteristic for each

handwritten synonym

Datum
Vložil
Titulek

заказать дизайн проект

Выполнение дизайн проекта интерьера квартиры, дома, офиса, ресторана, кафе, магазина в Санкт-Петербурге и других городах России. Разработка проектов в стиле джапанди. Разработка строительной документации с выбором сантехники, а также ремонт под ключ квартир
[url= balka.studio/dizajnerskij-remont-kvartiry/] дизайнерский ремонт квартиры [/url]
[url= balka.studio/2024/02/07/otdelka-doma-vnutri/] отделка дома внутри [/url]
[url= balka.studio/2024/02/12/zakazat-dizain-proect/] заказать дизайн проект [/url]


интерьер офиса

1 | 2 | 3 | 4 | 5 >>

Vyhledávání

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