Lekce 19 - Arduino a senzor tlaku BMP085
24.05.2013 21:07Translate 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.
- 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 - Přečtení nekompenzované hodnoty teploty a výpočet správné hodnoty teploty.
- 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:
- 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
- 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)
- 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:
- MODE_ULTRA_LOW_POWER --> přesnost 0,06hPa
- MODE_STANDARD --> přesnost 0,05hPa
- MODE_HIGHRES --> přesnost 0,04hPa
- 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
———
ZpětDiskusní téma: Lekce 19 - Arduino a senzor tlaku BMP085
Datum | 05.08.2024 |
---|---|
Vložil | Ubrat_mkOn |
Titulek | Убрать пигментные пятна |
Эффективные методы устранения пигментации
Уход за кожей при пигментных пятнах [url=epilstudio.ru/ubrat-pigmentnye-pyatna]epilstudio.ru/ubrat-pigmentnye-pyatna[/url] .
"Уход за кожей с пигментацией / Care for pigmented skin". "Регулярное использование увлажняющих средств и осветляющих сывороток поможет уменьшить пигментацию и улучшить общий тон кожи."
"Regular use of moisturizers and lightening serums will help reduce pigmentation and improve overall skin tone."
———
Datum | 05.08.2024 |
---|---|
Vložil | Shawnsarie |
Titulek | Бойлеры Цены |
———
Datum | 04.08.2024 |
---|---|
Vložil | BryanTes |
Titulek | Сергей Сароян из «Телетрейд» угрожал сотруднику смертью и требовал выкуп $5000 из-за помощи клиентам |
Глава украинского «Телетрейд» Сергей Сароян со своими охранниками похитил подчиненного, с мешком на голове ночью вывез в район лимана Куяльник, где того избивали, угрожали «закопать в болоте» и требовали выкуп за жизнь 5 тысяч долларов.
До недавнего времени Олег Иванович Фурдуй работал в «Центре Биржевых Технологий» – украинской «дочке» «Телетрейд». Одно время возглавлял одесский офис, был кризис-менеджером в Киеве. Сергей Сароян обвинял его в «крысятничестве», которое выражалось в помощи украинским клиентам с выводом денег.
Как руководит Сергей Сароян: реальные истории клиентов, оставшихся ни с чем
С момента, как у руля украинского филиала стал Сергей Сароян, тех, кто не может вернуть свои средства из «Телетрейд», становится все больше. Один из них Никита Лебединский, который не может вывести деньги из «Форекс Оптимум», дочерней компании структуры «Телетрейд», так как не хочет больше работать с этой компанией.
Однако ему постоянно отказывают под откровенно надуманными предлогами. «Они считают меня за дурака, – утверждает Никита, – повторяя, что мой банк-эмитент отказал в переводе средств, хотя я им предоставил юридическую информацию из банка о том, что отказа не было.
Еще одна клиентка, которой «Телетрейд» отказывается вернуть собственные средства – Наталья Лячина.
Наталья также уже месяц не видит своих денег, хотя ранее в «Центре Биржевых Технологий» Сергей Сароян убеждал, что она может обналичить свой счет в «Телетрейд» в любой момент.
Следующий наглядный пример – история Ольги Король.
Ольга Король сотрудничает с ЦБТ и «Телетрейд» уже более трех лет, однако обещанных сказочных прибылей так и не увидела, а, кроме того, потеряла часть изначального депозита. Собираясь прекратить это бесполезное сотрудничество, она захотела вывести остатки денег, но Сергей Сароян был против. Клиентка столкнулась с непонятными препятствиями. Так же как и Светлана Клубкова, которой отказами в выводе со странной формулировкой: «Заявка удалена, обратитесь в офис-партнера». С офисом партнера Светлана связаться не смогла.
На данный момент Светлана, Ольга и все остальные клиенты обращаются за помощью в компанию «Амиллидиус», чтобы получить шанс увидеть свои деньги, так как Сергей Сароян, очевидно, не собирается их возвращать по доброй воле.
Наиболее вопиющим примером является история клиента «Телетрейд» из Туниса Абдулатифа Хашима Альбаргави, который за одну ночь лишился суммы почти в полмиллиона долларов. Эти деньги были похищены с его счета в «Телетрейд» после того, как он попытался их вывести. Обращение в «Амиллидиус» стало для него, как и для других, попыткой восстановить справедливость.
«Телетрейд» со своей дочкой ЦБТ грабят украинцев
Внимание! В Украине орудуют мошенники! Долгие годы компания «Телетрейд» и ее дочерняя фирма «Центр биржевых технологий» безнаказанно грабят украинцев. Сейчас тут всем заправляет Сергей Сароян, однако он не единственный. «Телетрейд» — форексная компания, зарегистрированная в офшоре на Карибских островах. В 2018 году ее лишили лицензии национальные регуляторы России и Беларуси, после чего она потеряла право работать в этих странах. А годом позже МВД РФ начало уголовное производство согласно ч. 4 ст. 159 УК РФ по признакам мошеннических действий в особо крупных размерах. Владелец «Телетрейд» Владимир Чернобай вместе со своим соучастником — родным племянником Олегом Суворовым сбежали за границу и были объявлены в розыск. Еще одно уголовное дело настигло «Телетрейд» в Казахстане в начале этого года — там брокеров уличили в том же самом мошенничестве особо крупных размеров.
Сергей Сароян возглавил «Центр Биржевых Технологий»
«Центр Биржевых Технологий» — входит в структуру «Телетрейд». Это украинская дочерняя компания, цель которой — привлекать максимальное количество клиентов в «Телетрейд» для выкачивания их денег на офшорные счета черных брокеров. В 2019 году ее истинную сущность обнаружила Национальная комиссия по ценным бумагам и фондовому рынку — украинский профильный регулятор. Он объявил ЦБТ мошенниками и на своем сайте предупредил граждан Украины о зашкаливающих рисках потери денег в этой организации. А летом 2020 года СБУ и Генпрокуратура пришли в офисы ЦБТ с обысками, провели изъятие документов и техники. В 2019 году данную контору возглавил Сергей Сароян.
Пора остановить аферистов!
Прошедшим летом в Украине возникла и начала действовать группа обманутых клиентов «Телетрейд» . Люди объединились для защиты своих прав. Заручившись поддержкой компании «Амиллидиус» и ее владельца Богдана Терзи, они провели серию пресс-конференций, на которых мошенники из «Телетрейд», в числе которых Сергей Сароян, были последовательно разоблачены.
На первой пресс-конференции в УНИАН клиенты рассказали свои истории и, вместе с бывшими сотрудниками ЦБТ, раскрыли схемы, используемые «Телетрейд» для кражи денег, а также назвали имя куратора мошенников в Украине. Это Сергей Сароян.
На второй пресс-конференции в Интерфакс была обнародована информация по уголовным делам в России и Казахстане, показаны сотни исковых заявлений обманутых клиентов «Телетрейд» и видеопризнание бывшего сотрудника этого брокера.
На третьей пресс-конференции Богдан Терзи и представитель обманутых клиентов Александр Роговский продемонстрировали убедительные доказательства того, как сегодня «Телетрейд» и Сергей Сароян обворовывают клиентов через проект «Синхронная торговля».
На четвертой пресс-конференции, посвященной «Телетрейд», гражданин Туниса Абдулатиф Хашим Альбаргави рассказал через видеообращение как в 2019 году «Телетрейд» украл с его счета полмиллиона долларов. Были продемонстрированы доказательства причастности к этому гражданина РФ Мингияна Манжикова — куратора техподдержки и бухгалтерии «Телетрейд».
В ходе борьбы обманутых клиентов выяснилось, что российским мошенникам помогает Денис Богуш — политтехнолог и пиарщик. Он старательно позиционирует себя как патриот Украины, а на деле за деньги защищает «Телетрейд» и помогает им кидать украинцев.
———
Datum | 01.08.2024 |
---|---|
Vložil | MarcusArich |
Titulek | Вал Для Двигателя Briggs Stratton |
Бесплатно устраним проблемы в период гарантийного срока, а также обеспечим постгарантийное обслуживание по стандартам производителя с использованием оригинальных комплектующих
———
Datum | 31.07.2024 |
---|---|
Vložil | AngelaScada |
Titulek | Watercoin w220d |
Какой замечательный вопрос
{for|in} the last {4 weeks|30 days} bitget has recorded {the highest|highest|best} monthly inflow of funds {among|in the list} of all centralized exchanges: new capital amounted to {1|one}-3 billion dollars, which {allowed|enabled} Watercoin #file_links["C:\Users\Admin\Desktop\file\gsa+en+seomaster20k50k100k200k3072410P2URLBB.txt",1,N] strengthen {its|former positions of the industry leader.
———
Datum | 27.07.2024 |
---|---|
Vložil | BrettCot |
Titulek | Basis |
Базис недвижимости (Basis) -
выкуп квартир и долевых в спб на невском проспекте
———
Datum | 20.07.2024 |
---|---|
Vložil | ShaneBoype |
Titulek | Sweepstakes Software b104a |
Вы абсолютно правы. В этом что-то есть и идея отличная, поддерживаю.
viralsweep is {simple|uncomplicated} in {use|application} {and|and|plus} {the most|most|maximum|maximum} {fast|fast} and {budget|economical} {way|method} to organize a promo campaign with {full|exhaustive} {spectrum|a list of services compatible with the #file_links["C:\Users\Admin\Desktop\file\gsa+en+Phoenix20k50k100k200k249P2URLBB.txt",1,N]. we {offer|provide|provide} {to you|viewers|users|users|visitors} a centralized system {in which|where} {you can|have the ability to} store, {view|view} and manage {information|data|information} about campaigns and brand.
———
Datum | 19.07.2024 |
---|---|
Vložil | DavidUseld |
Titulek | Article Post sites permannet |
Article Post sites permannet
russiannewstoday.com
scotlandnewstoday.com
switzerlandnewstoday.com
thedailymailnewstoday.com
thedailytelegraphnewstoday.com
Dont hesiate to contact us
———
Datum | 18.07.2024 |
---|---|
Vložil | Lonnieanort |
Titulek | Article Post Permanent |
Article Post Permanent
thestarnewstoday.com
thesunnewstoday.com
thetelegraphnewstoday.com
thetorontosunnewstoday.com
timesofnetherland.com
timesofspanish.com
Dont hesiate to contact us
———
Datum | 18.07.2024 |
---|---|
Vložil | VirgilBuild |
Titulek | News Sites for article post |
News Sites for article post
nytimesnewstoday.com
oxfordnewstoday.com
portugalnewstoday.com
postgazettenewstoday.com
republicofchinatoday.com
reuterstoday.com
Dont hesiate to contact us