Небольшой проектик с использованием датчика давления BMP085. В прошлый раз было знакомство с этим датчиком и получение от него первых результатов. Но значение давления было получено в Паскалях, что расходится с привычным для нас показаниями атмосферного давления, измеряемые миллиметрами ртутного столба. Поэтому выкинул из кода все лишние преобразования (температуры и высоты) и, освободив немного памяти, доделал вывод давления в привычных для нас единицах измерения.
Суть преобразования давления из Паскалей в мм. ртутного столба сводится к умножению результата на коэффициент 0.0075 (из отношения нормального атмосферного давления 101 325 Па = 760 мм.рт. ст.)
Немного по схеме подключения - тут все просто. Для вывода показаний давления использован 2-х строчный ЖК с контроллером HD44780. Чтобы не попалить датчик BMP085 при подключении к 5-и вольтовой схеме необходимо согласовывать уровни датчика и микроконтроллера, для этого я использовал свой модуль на полевых транзисторах (см. модуль согласования логический уровней) Заодно удалось проверить как работает этот модуль с I2C, оказалось отлично справляется с возложенной обязанностью - можно использовать эту схему уже в конечных разработках.
Для проверки работоспособности всей схемы собрал ее на макетке, результат всего этого ниже.
Значение измеренного давления (абсолютной ее величины) выводится в миллиметрах ртутного столба.
Добрый день или ночь)) всем. Собрал вот такой барометр на BMP_085. Прошивал прошивкой, приведенной в статье. Все работает и показывает вроде как правду, но давление достаточно сильно зависит от температуры. Тут выкладывали исправленную прошивку(или исходник), но по ссылке этого файла уже нет. Может кто поделится исправленной прошивкой (исходником), где корректно работает компенсация по температуре?
Да, только зачем ? Можно сделать так: переменная увеличивается до определенного значения нужного вам, потом делается очистка экрана и переменной присваивается значение ноль. Изменяя величину этой переменной можно изменять время, через которое будет происходить очистка экрана. Можно сделать иначе, писать пробелы после значения, вот и все :)
Ну, тогда всё ясно. Я же проверял так - взял снега с улицы, ds18b20 изолировал контакты и в снег, датчик BMP180 в пакетик и туда же. Вот при такой скорости в 255 циклов за 4 минуты последний ноль и не успевал подчищаться. Спасибо очередной раз за совет. А этот процесс ускорить можно как нибудь?
Там все отображается корректно, просто нужно было немного подождать :) Вот этот фрагмент Incr Cikl If Cikl = 10 Then Cls Else End If Отвечает за очистку дисплея. Когда переменная Cikl достигает значения 10 экран очищается, а потому, как Dim Cikl As Byte, это происходит один раз за 255 циклов. По времени я не помню сколько примерно один раз в четыре минуты.
Waitms 100 Loop End Фрагмент кода рабочий, проверялся на собранном устройстве указанном в 143 посте. Возможно в чём-то ошибся, но я только учусь. Спасибо.
Я рад, что у вас получилось :) ножка сброса подключается к плюс пяти вольтам через десять кило ом. Для полной радости можно еще конденсатор на землю повесить ноль один микрофарад.
Большое спасибо Dmitriy! Это просто моя невнимательность. Заработало устройство! Сбрасываю на обменник архив (http://my-files.ru/jhl59o), там исправленный исходник, плата в .lay, и фотоотчёт. Может кому понравится такой вариант исполнения. И ещё вопрос по поводу подключения RESET - куда его подключать и зачем? Я подключаю только программатор к этой ножке на время прошивки, и всё. Спасибо!
Вектор, я не нашел на вашей плате подключение ресет микроконтроллера, резистор на плюс пять вольт, может в этом проблема ? И ошибка в конфигурации портов для подключения дисплея. У вас в исходнике подключены потры D4 D5 , а на плате дисплей припаян к портам C4 C5 . Измените подключение в исходнике и все ) 27 и 28 нога микросхемы.
Да, сам датчик нельзя питать от 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 порты в исходнике поменял и не заводится. Осцилографом на кварце мерял - генерация есть. Если в плате всё нормально, то пусть будет для всеобщего пользования. Спасибо.
Питание этого датчика нельзя осуществлять от 5 Вольт.http://www.avislab.com/blog/wp-content/uploads/2013/12/BMP180.pdf Если вы подключили его к 5 Вольтам, то высока вероятность, что ему наступил кирдык :( Обязательно использовать согласующее устройство, которое нам любезно предоставил автор, на полевиках, легко и дешево. Фьюзы выставлены на работу от внешнего резонатора с помощью вот этого http://fusecalc.mirmk.ru/
Dmitriy, вот ссылка на подправленный под мою плату код. Шью в баском-авр, кодевижн но ничего не отображается кроме квадратиков верхней строчки дисплея. Питание BMP180 подключал к 5 вольтам, так как там есть свой стабилизатор. Менял дисплеи. Что там не так? Подскажите фьюзы. Такие как на BMP085? Ссылка на код - http://my-files.ru/u7tnlr
Dmitriy я про исходник, именно программную часть. Ранее я повторил данную схему на BMP085. Но из Китая пришли датчики BMP180, а так как готовая плата с согласованием уровней уже есть, то меня интересует - можно ли в программе прошивки поменять порты контроллера на датчики для удобства дальнейшей доработки платы под дополнительный датчик. Вот фрагмент кода про который я спрашивал: 'конфигурация I2C Config Scl = Portd.6 Config Sda = Portd.7
Config 1wire = Portd.5 Здесь только меняется или ещё где по исходнику? Спасибо.
Немного не понял вопрос, как поменять ? просто припаять не к тем ножкам ? конечно, в этом случае нужно изменить конфигурацию в исходнике. Я так подключил потому, что на плате так было удобно :) Файл платы к сожалению не сохранился, делал один экземпляр, просто в качестве пробы.
Подскажите пожалуйста по исходнику из 132 поста. ВМР 180 подключены к 6 и 7 порту, а DS18B20 к 5 ? Можно ли поменять порты подключения датчика давления и температуры в конфигурации I2C. В исходнике ещё нужно будет что-то менять? Заранее спасибо. Всех с наступающим Новым годом !!!!!
Спасибо, получилось! Dim E333 As Word E333 = druck Lcd "Pa=" ; E333 ; " mm" Надо с типами данных разобраться... А то похожие мысли были, но пробовал через "string" - получалась куча знаков после запятой... )) Ещё думал во Fusing вместо "####.##" делать "####" - ошибка при компиляции... Без теории, с наскока - не получается...
Собрал на макетке на Atmega8A и китайском модуле BMP180, без преобразователя уровней, только линии SDA/SCL подтянул резисторами 10К к 5 вольтам. В тексте частоту 16000000 поменял на 8000000, заработало без кварца! Спасибо всем форумчанам и, особенно, Автору! Есть вопрос: как изменить исходник, чтобы давление выводилось без запятой и десятичных знаков? Т.е., только целая часть (740мм вместо 740,55мм).
Собрал окончательный вариант, с двумя зонами контроля температуры внутри помещения BMP 180 снаружи DS18B20 коррекция давления от Т имеется, памяти в Меге8 оказалось достаточно. Если кто то захочет повторить, использована Мега в TQFP, подключение индикатора смотреть в исходнике, подтяжка 4,7К на внешний датчик, хотя думаю все и так понятно. Огромное спасибо автору за этот сайт, я даже не ожидал от себя, что начну немного понимать, как работают микроконтроллеры https://drive.google.com/file....sharing
Александр, это я что то тупанул, конечно 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 Продавец проверенный, уже покупал у него.
А попробуйте заархивировать хекс-и о чудо-12кб превращается в 4кб.А если серьёзно-при компиляции программа показывает сколько памяти израсходовано в мк.
Подскажите пожалуйста, как определить объем скомпилированной программы. Если смотреть на hex в проводнике, то там получается больше 20 К. Но это никак не может уместиться в меге8. Тем не менее умещается.
Кстати, еще вчера комплект из 5 датчиков стоил 1.61$, а сегодня уже 8.05$. Возможно продавец по ошибке продавал 5 штук по цене одной! А может только один датчик продавал, а покупающие считали что получат 5.
BMP085 китайский-года полтора(может побольше) 24х7 пашет.По своей вине (тьфу-тьфу)ещё не один датчик не сдох.Поверьте-заказывал много-221 посылка.Из них брак-одна(и то по началу погнался за дешёвкой у непроверенного продавца ).Три пропали по пути.Две из них выслали повторно.И одна затерянная тоже дошла.Напрямую ни разу ни кидали.Это на ибей.На али покупал мало-раз 10,все ок.Сейчас в основном у трёх-четырёх провереных покупаю(редко у других)
Я не нашел на али BMP180 за 30 центов. Есть за 102 рубля за штуку с доставкой за 300 руб. Но самое интересное, что срок доставки до 50 дней. И неизвестно, что доставят. Может брак от боша в мусорке подобрали.