Главная » Статьи » Проекты

Барометр на BMP085

 Небольшой проектик с использованием датчика давления BMP085. В прошлый раз было знакомство с этим датчиком и получение от него первых результатов. Но значение давления было получено в Паскалях, что расходится с привычным для нас показаниями атмосферного давления, измеряемые миллиметрами ртутного столба.  Поэтому выкинул из кода все лишние преобразования (температуры и высоты) и, освободив немного памяти, доделал вывод давления в привычных для нас единицах измерения.

 Суть преобразования давления из Паскалей в мм. ртутного столба сводится к умножению результата на коэффициент 0.0075 (из отношения нормального атмосферного давления 101 325 Па = 760 мм.рт. ст.) 

 Немного по схеме подключения - тут все просто. Для вывода показаний давления использован 2-х строчный ЖК с контроллером HD44780. Чтобы не попалить датчик BMP085 при подключении к 5-и вольтовой схеме необходимо согласовывать уровни датчика и микроконтроллера, для этого  я использовал свой модуль на полевых транзисторах (см. модуль согласования логический уровней) Заодно удалось проверить как работает этот модуль с I2C, оказалось отлично справляется с возложенной обязанностью - можно использовать эту схему уже в конечных разработках. 



 Для проверки работоспособности всей схемы собрал ее на макетке, результат всего этого ниже.



 Значение измеренного давления (абсолютной ее величины) выводится в миллиметрах ртутного столба. 

 

 Скачать прошивку и исходники


UPD: с подачи товарища Sany2 добавил в сей барометр вывод температуры, худшие ожидания не оправдались - памяти в Atmega8 хватило слихвой :)



 Ссылка на исходники и прошивку


Категория: Проекты | Добавлено: 24.07.2012
Просмотров: 49183 | Комментарии: 149 | Теги: барометр, согласование уровней, BMP085 | Рейтинг: 4.8/21
Всего комментариев: 1491 2 3 4 5 »
149 racerunner   (16.09.2016 19:16) [Материал]
Добрый день или ночь)) всем. Собрал вот такой барометр на BMP_085. Прошивал прошивкой, приведенной в статье.
Все работает и показывает вроде как правду, но давление достаточно сильно зависит от температуры.
Тут выкладывали исправленную прошивку(или исходник), но по ссылке этого файла уже нет.
Может кто поделится исправленной прошивкой (исходником), где корректно работает компенсация по температуре?

148 Dmitriy   (14.01.2016 22:04) [Материал]
Да, только зачем ? Можно сделать так: переменная увеличивается до определенного значения нужного вам, потом делается очистка экрана и переменной присваивается значение ноль. Изменяя величину этой переменной можно изменять время, через которое будет происходить очистка экрана. Можно сделать иначе, писать пробелы после значения, вот и все :)

147 vector78   (14.01.2016 21:15) [Материал]
Ну, тогда всё ясно. Я же проверял так - взял снега с улицы, ds18b20 изолировал контакты и в снег, датчик BMP180 в пакетик и туда же. Вот при такой скорости в 255 циклов за 4 минуты последний ноль и не успевал подчищаться. Спасибо очередной раз за совет. А этот процесс ускорить можно как нибудь?

146 Dmitriy   (14.01.2016 17:49) [Материал]
Там все отображается корректно, просто нужно было немного подождать :) Вот этот фрагмент Incr Cikl
If Cikl = 10 Then
Cls
Else
End If
Отвечает за очистку дисплея. Когда переменная Cikl достигает значения 10 экран очищается, а потому, как Dim Cikl As Byte, это происходит один раз за 255 циклов. По времени я не помню сколько примерно один раз в четыре минуты.

145 vector78   (14.01.2016 10:39) [Материал]
Итак, проведя серию экспериментов, выяснилось - показания температуры при изменении разрядности показаний с 2 на 1 остаётся последняя цифра. Добавил команду Cls перед выводом показаний на дисплей. Стало показывать корректно, но начали мигать надписи. Посоветуйте, что можно сделать? Перевел буквы на русские и поменял значки:
Deflcdchar 0 , 11 , 11 , 8 , 8 , 28 , 8 , 9 , 6 ' значек t и градус
Deflcdchar 1 , 32 , 32 , 32 , 6 , 10 , 10 , 31 , 17 ' буква Д
Deflcdchar 2 , 32 , 32 , 32 , 18 , 18 , 30 , 2 , 28 ' буква у
Deflcdchar 3 , 32 , 32 , 31 , 21 , 4 , 4 , 4 , 32 ' буква Т
Deflcdchar 4 , 32 , 32 , 17 , 27 , 21 , 17 , 17 , 32 ' ,буква М
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 32 , 24 , 24 ' точка

Cls 'добавил команду для очистки знаков при меняющемся разряде показаний

Locate 1 , 1
Lcd "P"
Locate 1 , 2
Lcd "a"
Locate 1 , 3
Lcd Chr(3)
Locate 1 , 4
Lcd Chr(4)
Locate 1 , 5
Lcd Chr(5)
Locate 1 , 7
Lcd Luftdruck ; " mm"
Locate 2 , 2
Lcd Chr(1)
Locate 2 , 1
Lcd Chr(0)
Locate 2 , 3
Lcd " " ; Temperatur ; " C"
Locate 2 , 12
Lcd Sign ; Tds1
Locate 2 , 16
Lcd "C"
Locate 2 , 10
Lcd Chr(0)
Locate 2 , 11
Lcd Chr(2)

Waitms 100
Loop
End
Фрагмент кода рабочий, проверялся на собранном устройстве указанном в 143 посте. Возможно в чём-то ошибся, но я только учусь. Спасибо.

144 Dmitriy   (11.01.2016 16:39) [Материал]
Я рад, что у вас получилось :) ножка сброса подключается к плюс пяти вольтам через десять кило ом. Для полной радости можно еще конденсатор на землю повесить ноль один микрофарад.

143 vector78   (11.01.2016 16:01) [Материал]
Большое спасибо Dmitriy! Это просто моя невнимательность. Заработало устройство! Сбрасываю на обменник архив (http://my-files.ru/jhl59o), там исправленный исходник, плата в .lay, и фотоотчёт. Может кому понравится такой вариант исполнения. И ещё вопрос по поводу подключения RESET - куда его подключать и зачем? Я подключаю только программатор к этой ножке на время прошивки, и всё. Спасибо!

142 Dmitriy   (11.01.2016 12:55) [Материал]
Вектор, я не нашел на вашей плате подключение ресет микроконтроллера, резистор на плюс пять вольт, может в этом проблема ? И ошибка в конфигурации портов для подключения дисплея. У вас в исходнике подключены потры D4 D5 , а на плате дисплей припаян к портам C4 C5 . Измените подключение в исходнике и все ) 27 и 28 нога микросхемы.

141 vector78   (11.01.2016 09:24) [Материал]
Да, сам датчик нельзя питать от 5 вольт, но он на платке с линейным стабилизатором (ссылка http://we.easyelectronics.ru/part/datchik-davleniya-bmp180-lineynyy-stabilizator-serii-xc6206-662k.html) Я пробовал запитывать датчик давления и от 5 вольт, и от 3.3. Всё равно на дисплее верхний ряд квадратиков. Шил и AVR910 и 5 проводков. На обменник сброшу архивчик (http://my-files.ru/cwy44j), там плата .lay, фотка спаяной платы, и подправленый исходник (что предоставил Dmitriy) под мою платку. Прошу помощи! Почему может не работать? Предыдущий на BMP085 заработал, а в этом варианте на BMP180 порты в исходнике поменял и не заводится. Осцилографом на кварце мерял - генерация есть. Если в плате всё нормально, то пусть будет для всеобщего пользования. Спасибо.

+1   Спам
140 Dmitriy   (07.01.2016 10:19) [Материал]
Питание этого датчика нельзя осуществлять от 5 Вольт.http://www.avislab.com/blog/wp-content/uploads/2013/12/BMP180.pdf Если вы подключили его к 5 Вольтам, то высока вероятность, что ему наступил кирдык :( Обязательно использовать согласующее устройство, которое нам любезно предоставил автор, на полевиках, легко и дешево. Фьюзы выставлены на работу от внешнего резонатора с помощью вот этого http://fusecalc.mirmk.ru/

139 vector78   (06.01.2016 11:42) [Материал]
Dmitriy, вот ссылка на подправленный под мою плату код. Шью в баском-авр, кодевижн но ничего не отображается кроме квадратиков верхней строчки дисплея. Питание BMP180 подключал к 5 вольтам, так как там есть свой стабилизатор. Менял дисплеи. Что там не так? Подскажите фьюзы. Такие как на BMP085? Ссылка на код - http://my-files.ru/u7tnlr

138 Dmitriy   (31.12.2015 18:51) [Материал]
Да, только здесь.Это же и есть изначальная конфигурация портов.

137 vector78   (31.12.2015 18:32) [Материал]
Dmitriy я про исходник, именно программную часть. Ранее я повторил данную схему на BMP085. Но из Китая пришли датчики BMP180, а так как готовая плата с согласованием уровней уже есть, то меня интересует - можно ли в программе прошивки поменять порты контроллера на датчики для удобства дальнейшей доработки платы под дополнительный датчик. Вот фрагмент кода про который я спрашивал:
'конфигурация I2C
Config Scl = Portd.6
Config Sda = Portd.7

Config 1wire = Portd.5
Здесь только меняется или ещё где по исходнику? Спасибо.

136 Dmitriy   (30.12.2015 21:56) [Материал]
Немного не понял вопрос, как поменять ? просто припаять не к тем ножкам ? конечно, в этом случае нужно изменить конфигурацию в исходнике. Я так подключил потому, что на плате так было удобно :) Файл платы к сожалению не сохранился, делал один экземпляр, просто в качестве пробы.

135 vector78   (30.12.2015 16:09) [Материал]
Подскажите пожалуйста по исходнику из 132 поста. ВМР 180 подключены к 6 и 7 порту, а DS18B20 к 5 ? Можно ли поменять порты подключения датчика давления и температуры в конфигурации I2C. В исходнике ещё нужно будет что-то менять? Заранее спасибо. Всех с наступающим Новым годом !!!!!

134 abomin   (26.10.2015 08:15) [Материал]
Спасибо, получилось!
Dim E333 As Word
E333 = druck
Lcd "Pa=" ; E333 ; " mm"
Надо с типами данных разобраться... А то похожие мысли были, но пробовал через "string" - получалась куча знаков после запятой... ))
Ещё думал во Fusing вместо "####.##" делать "####" - ошибка при компиляции...
Без теории, с наскока - не получается...

133 abomin   (25.10.2015 21:53) [Материал]
Собрал на макетке на Atmega8A и китайском модуле BMP180, без преобразователя уровней, только линии SDA/SCL подтянул резисторами 10К к 5 вольтам. В тексте частоту 16000000 поменял на 8000000, заработало без кварца! Спасибо всем форумчанам и, особенно, Автору!
Есть вопрос: как изменить исходник, чтобы давление выводилось без запятой и десятичных знаков? Т.е., только целая часть (740мм вместо 740,55мм).

+1   Спам
132 Dmitriy   (23.05.2015 08:46) [Материал]
Собрал окончательный вариант, с двумя зонами контроля температуры внутри помещения BMP 180 снаружи DS18B20 коррекция давления от Т имеется, памяти в Меге8 оказалось достаточно. Если кто то захочет повторить, использована Мега в TQFP, подключение индикатора смотреть в исходнике, подтяжка 4,7К на внешний датчик, хотя думаю все и так понятно. Огромное спасибо автору за этот сайт, я даже не ожидал от себя, что начну немного понимать, как работают микроконтроллеры smile https://drive.google.com/file....sharing

131 Dmitriy   (02.04.2015 18:43) [Материал]
Александр, это я что то тупанул, конечно 180.Понял, буду делать. Отец на старости лет решил заняться рыбалкой и заявил, что ему срочно нужен барометр:) после того, как увидел у меня вот это http://avrproject.ru/publ/logger_temperatury_2_0/1-1-0-134 Заказал несколько штук вот здесь http://www.ebay.com/itm/200915895472?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT Продавец проверенный, уже покупал у него.

130 sany2   (01.04.2015 22:47) [Материал]
Dmitriy,а что это за датчик?Что-то гугл его не знает-может 180?180 работает точно

129 Dmitriy   (01.04.2015 21:32) [Материал]
Подскажите. граждане хорошие, можно ли вместо BMP 085 использовать BMP 140 ?

128 Петр   (22.01.2015 00:43) [Материал]
Можно посмотреть размер bin-файла, который будет равен размеру прошивки.

127 sany2   (22.01.2015 00:02) [Материал]
А попробуйте заархивировать хекс-и о чудо-12кб превращается в 4кб.А если серьёзно-при компиляции программа показывает сколько памяти израсходовано в мк.

126 promotor   (21.01.2015 21:17) [Материал]
Подскажите пожалуйста, как определить объем скомпилированной программы. Если смотреть на hex в проводнике, то там получается больше 20 К. Но это никак не может уместиться в меге8. Тем не менее умещается.

125 Петр   (20.01.2015 13:04) [Материал]
Кстати, еще вчера комплект из 5 датчиков стоил 1.61$, а сегодня уже 8.05$. Возможно продавец по ошибке продавал 5 штук по цене одной! А может только один датчик продавал, а покупающие считали что получат 5.

124 sany2   (20.01.2015 00:16) [Материал]
Подозрительно дёшево.А там фиг его знает.Я на такой же цене единственный раз и обламался

123 Петр   (20.01.2015 00:08) [Материал]
Вот 33 цента за штуку с бесплатной доставкой.

http://ru.aliexpress.com/item/5Pcs-New-Digital-Barometric-Pressure-Sensor-Board-Module-Replace-BMP085-BMP180/2047097138.html

122 sany2   (19.01.2015 23:59) [Материал]
BMP085 китайский-года полтора(может побольше) 24х7 пашет.По своей вине (тьфу-тьфу)ещё не один датчик не сдох.Поверьте-заказывал много-221 посылка.Из них брак-одна(и то по началу погнался за дешёвкой у непроверенного продавца ).Три пропали по пути.Две из них выслали повторно.И одна затерянная тоже дошла.Напрямую ни разу ни кидали.Это на ибей.На али покупал мало-раз 10,все ок.Сейчас в основном у трёх-четырёх провереных покупаю(редко у других)

121 promotor   (19.01.2015 23:33) [Материал]
Я не нашел на али BMP180 за 30 центов. Есть за 102 рубля за штуку с доставкой за 300 руб. Но самое интересное, что срок доставки до 50 дней. И неизвестно, что доставят. Может брак от боша в мусорке подобрали.

120 Петр   (19.01.2015 21:39) [Материал]
На али можно купить ВМР180 по 30 центов за штуку с бесплатной доставкой!

1-30 31-60 61-90 91-120 121-149
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






авторизация
Логин:
Пароль: