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

Барометр на BMP085

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

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

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



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



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

 

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


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



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


Категория: Проекты | Добавлено: 24.07.2012
Просмотров: 31149 | Комментарии: 149 | Теги: Барометр, согласование уровней, BMP085 | Рейтинг: 4.9/18
Всего комментариев: 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
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]






   EasyEDA:  бесплатный редактор схем

   ✓ Создание схем
   ✓ Возможность симуляции
   ✓ Быстрое создание печатных плат
   ✓ Интуитивно понятный интерфейс

   Нарисуй свою схему прямо сейчас!
   Изготовление печатных плат   https://easyeda.com/order
авторизация
Логин:
Пароль:
Комментарии
Сетевой диммер 220V на микроконтроллере
09.12.2016 - vakulyuk:
Спасибо) Я принцип действия понял, а вот откуда взялась именно цифра 195 не поня...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - exersizze:
pchela5, ну так это в военное, а у нас в мирное время все примерно)) Наше...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - pchela5:
> Полуволна в нашей электросети по времени длится примерно 10 мс

...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - exersizze:
Чтобы понять откуда взялась цифра 195 надо сначала въехать в принцип работы: ког...
Сетевой диммер 220V на микроконтроллере
09.12.2016 - vakulyuk:
А почему минимальный накал при 195? Насколько минимум можно занизить Wt?
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
08.12.2016 - exersizze:
yorx выдалось немного свободного времени, проверил в симуляторе. Проблема...
Логгер температуры 2.0
05.12.2016 - Evgeny6873:
Хотел повторить схему и долго ждал дисплей, два раза заказывал с Китая, пришел. ...
Когда не хватает ног. Часть 2. Сдвиговый регистр 74HC595
01.12.2016 - yorx:
Доброго времени суток, exersizze попробовал Ваш код все равно не работает как на...
Помни об усадке!
30.11.2016 - pchela5:
Автомобильные никакие не лезут?


Лучшие цены на 3D принтеры
успей сделать себе подарок к Новому Году! ;)


Prusa i3

Prusa i3 от 12500 р.



Rostoсk

Rostock от 15000 р.