Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Высотомер на PIC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
Pathfinder7
Всем доброго дня!
Нужна помощь в разработке высотомера на PIC.
Есть в наличии pic16f877a и датчик давления mpxh6115a.
Диапазон измерения датчика от 15 до 115 кПа., на выходе от 0,2 до 4,7 в., чувствительность 0,045 в./кПа
Из барометрической формулы Р=101,325ехр(-0,00012h) получается что на один метр приходится примерно 0,01216 кПа.
И выходит что изменение на давления на метр, на выходе датчика изменится значение на 0,0005472 в.
На борту PIC имеется 10 битный АЦП. Хватит ли разрядности имеющегося АЦП или нужно использовать 16 битный АЦП?
Danis
Цитата(Pathfinder7 @ Jul 17 2012, 21:09) *
Всем доброго дня!
Нужна помощь в разработке высотомера на PIC.
Есть в наличии pic16f877a и датчик давления mpxh6115a.
Диапазон измерения датчика от 15 до 115 кПа., на выходе от 0,2 до 4,7 в., чувствительность 0,045 в./кПа
Из барометрической формулы Р=101,325ехр(-0,00012h) получается что на один метр приходится примерно 0,01216 кПа.
И выходит что изменение на давления на метр, на выходе датчика изменится значение на 0,0005472 в.
На борту PIC имеется 10 битный АЦП. Хватит ли разрядности имеющегося АЦП или нужно использовать 16 битный АЦП?


Тут и 8-ми разрядного может хватить, вопрос в том, насколько точен Ваш датчик и какая дискретность результата нужна?
P.S. 16-ти разрядный АЦП не имеет смысла использовать при грубых условиях измерения.
Pathfinder7
нужно получить точность измерения в один метр...
Microwatt
Цитата(Pathfinder7 @ Jul 17 2012, 21:32) *
Точность в 1 метр

Простите меня за грубость. Не принимайте всерьез, но просто не могу удержаться. Бывает чепуха относительная и чепуха абсолютная.
1 метр по барометрическому давлению - пример чепухи абсолютной. Поставьте на подоконник бытовой барометр и понаблюдайте сутки. Неужели подоконник метров на 50 или более за день подпрыгивает?
Из-за слепой веры в барометр разбился не один десяток самолетов.
По-нормальному и 8 разрядов АЦП достаточно для высотомера, точнее он все равно высоту по давлению не определит.
Часто встречающаяся трудность у программистов - не видят разницы меж точностью и разрешающей способностью измерителя.
Основы метрологии полистать нужно.
Даже если Вы каким-то чудом на своем ПИКе обработаете 5 мкВ, достоверность этих показаний - никакая. Для кой-какой достоверности Вам нужен на земле сравнительный, опорный датчик на известной высоте в подполетной точке.
И то, давление будет от погоды меняться. Оно и на берегу моря меняется.
Pathfinder7
Измерения будут проводится в какой то один момент времени опираясь на данные температуры и давление над уровнем моря от погодных станций в определенной местности.
Ruslan1
Цитата(Pathfinder7 @ Jul 17 2012, 22:24) *
Измерения будут проводится в какой то один момент времени опираясь на данные температуры и давление над уровнем моря от погодных станций в определенной местности.

Может, с gps модуля снимать готовую величину? хотя, я про точность не знаю.

PS Ну вот почему именно 1 метр? а жили бы в xxx, захотели бы 1 фут? (но это так, про любовь к круглым числам в ТЗ)
Pathfinder7
Хорошо, если отойти от давления и высоты. Как реализовать соединение данного датчика с pic16f877a ?
Microwatt
Цитата(Pathfinder7 @ Jul 17 2012, 22:59) *
Хорошо, если отойти от давления и высоты. Как реализовать соединение данного датчика с pic16f877a ?

Как? Проводами, наверное... Только пропустить через нормирующий усилитель, чтобы ноль шкалы выставить. Согласовать шкалу датчика со шкалой АЦП.
_Артём_
Цитата(Ruslan1 @ Jul 17 2012, 22:43) *
Может, с gps модуля снимать готовую величину? хотя, я про точность не знаю.

±десяток-другой метров (зависит от типа приёмника). Это если дешево делать, за 10-20 $.
Pathfinder7
Цитата(Microwatt @ Jul 18 2012, 00:39) *
Как? Проводами, наверное... Только пропустить через нормирующий усилитель, чтобы ноль шкалы выставить. Согласовать шкалу датчика со шкалой АЦП.

Это понятно, что проводами...
Как преобразовать от 0,2 до 4,7 в. с шагом в 0,045 в. имеющимся 10 битным АЦП pic16f877a ?
Разрешения 10 битного АЦП не хватает, что бы увидеть изменение в 0,045 в.
SKov
Цитата(Pathfinder7 @ Jul 18 2012, 10:08) *
Это понятно, что проводами...
Как преобразовать от 0,2 до 4,7 в. с шагом в 0,045 в. имеющимся 10 битным АЦП pic16f877a ?
Разрешения 10 битного АЦП не хватает, что бы увидеть изменение в 0,045 в.

5 милливольт - обычное разрешение "пикового" АЦП. В качестве опоры берете землю и +5V питание.
В этот диапазон как раз укладывается ваш барометр. Теперь делим 5 вольт на 1024 и получаем
5 милливольт - цена деления в вашем приборе на базе данного ПИКа.
Т.е. разрешающая способность порядка 10 метров вам вполне доступна.
Microwatt
Цитата(Pathfinder7 @ Jul 18 2012, 09:08) *
Это понятно, что проводами...
Как преобразовать от 0,2 до 4,7 в. с шагом в 0,045 в. имеющимся 10 битным АЦП pic16f877a ?
Разрешения 10 битного АЦП не хватает, что бы увидеть изменение в 0,045 в.

Ну как преобразовать...
Вы упростите себе задачу Считайте что датчик выдает не от 0.2 до 4.7 вольта, а то минус 3 до плюс 15. Как бы Вы решали задачу в таком случае?
Сведете минус три - плюс 15 к диапазону 0-5 вольт (диапазон АЦП) тогда свести 0.2-4.7вольта - заурядная проблема.
масштабирующий усилитель. Y=кх+b.
controller_m30
Так вроде ж есть готовые модули барометров...
Прямо вот сейчас юзаю барометр на датчике давления BOSH BMP085.
Точность измерения 1 единица = 5 см высоты. Для улучшения точности использовал усреднение последних 32 показаний.

Например датчик выдаёт 98355 Pa находясь на столе.
Перемещаю датчик на пол (-50см) - показания 98365 Pa (+10 Pa)
Перемещаю на стол - снова 98355 Pa
Поднимаю над столом на 50см - показания 98345 Pa (-10 Pa)
Снова на стол - снова 98355 Pa. Повторяемость показаний хорошая.
Датчик стоит в Украине 90 грн (в Космодроме например). Интерфейс I2C. Питание 1.8-3.6v. Ток потребления 12 мка.

Датчик использует при расчёте давления также и температуру самого датчика (в нём измеряется и t и давление). Для температуры выдаёт 16 битное значение, и для давления - 19 битное значение.

Но! В течение дня давление изменяется на, примерно, 150 Pa (т.е. примерно на 7.5 метров). Конкретно сегодня утром было 98380 Pa, а сейчас вечером 98230 Pa. В мм/рт.столба это будет 737.9мм, и 736.8мм соответственно. Тут видно, что показания гидрометцентра для такой цели не очень годятся, т.к. разница давлений в 1.1мм/рт.столба = 165 Pa = 8,2 метра высоты. По гидрометцентру мерить может и не получиться.

Ночью давление больше, а днём меньше. Ещё давление существенно изменяется при перемене погоды (циклоны и антициклоны - разность давлений между ними как перепад сразу за несколько дней).
Чтоб использовать датчик как высотомер, нужно знать давление на уровне земли в данный конкретный момент. Т.к. показания изменяются даже при перемене ветра, или заслонении солнышка тучкой. Так что датчиков наверное надо 2. Один на земле, а другим меряем высоту (высчитывая разность между первым и вторым датчиком).
MaslovVG
Цитата(controller_m30 @ Jul 18 2012, 18:54) *
Так что датчиков наверное надо 2. Один на земле, а другим меряем высоту (высчитывая разность между первым и вторым датчиком).

Для точного измерения ещё больше. Поскольку температура также сильно меняется с высотой и может как понижатся (чаще) так и повышатся.
controller_m30
Цитата(MaslovVG @ Jul 18 2012, 19:03) *
Для точного измерения ещё больше. Поскольку температура также сильно меняется с высотой и может как понижатся (чаще) так и повышатся.
Если датчиком автора - то да, надо несколько датчиков, и разных.
В BMP085 температура учитывается при расчёте. Например мой барометр показывает 98380 Pa и температуру 26.3 градуса. Я берусь рукой за датчик, и температура начинает расти: 27, 28, 29...34, 35 градусов. Но давление как было 98380 Pa - так и осталось. Т.е. датчик вносит поправку на изменение температуры.
А для простого датчика давления нужно мостить датчик температуры, чтоб корректировать погрешность из-за расширения (сужения) материала корпуса, мембраны, проводов...
MaslovVG
Цитата(controller_m30 @ Jul 18 2012, 20:15) *
Если датчиком автора - то да, надо несколько датчиков, и разных.
В BMP085 температура учитывается при расчёте. Например мой барометр показывает 98380 Pa и температуру 26.3 градуса. Я берусь рукой за датчик, и температура начинает расти: 27, 28, 29...34, 35 градусов. Но давление как было 98380 Pa - так и осталось. Т.е. датчик вносит поправку на изменение температуры.
А для простого датчика давления нужно мостить датчик температуры, чтоб корректировать погрешность из-за расширения (сужения) материала корпуса, мембраны, проводов...

Я не о том. С изменением температуры изменяеся функция давление от высоты. и разность давлений на двух точек по вертикали зависит не только от высоты но от распределения температуры.
controller_m30
Цитата(MaslovVG @ Jul 18 2012, 19:29) *
Я не о том. С изменением температуры изменяеся функция давление от высоты. и разность давлений на двух точек по вертикали зависит не только от высоты но от распределения температуры.
Ну если одни датчик находится возле земли, и температура воздуха там 24 градуса, а второй датчик на 10 метров выше и температура воздуха = 28 градусов, то эта температура воздуха передастся и датчикам и будет учтена при расчёте давления.
Вроде бы так... laughing.gif

Может схема температурной компенсации в датчике MPX и справится - это только проверка покажет.
Если нужен именно MPX датчик, то я бы всё равно предложил BMP085 как эталон, и по нему сравнивать точность и повторяемость показаний датчика MPX.
У меня только один BMP085, но в нете люди покупали по несколько датчиков BMP сразу - и несколько датчиков, находясь в комнате на одном уровне показывали одинаковые значения температуры и давления. Это из-за того, что на заводе в каждый датчик внесены поправочные коэффициенты с учётом его собственных характеристик. И эти коэффициенты используются при расчёте. Всего 11 коэффициентов - в каждом датчике свои.

А как будет работать аналоговая схема компенсации температуры в MPX - это я не знаю laughing.gif это сравнивать надо.
ILYAUL
B главное , что вся математика для BOSH уже написана. Но чем же мне так нравятся немцы , что при абсолютно равных входных условиях и одних и тех же формулах расчёта , они могут в двух разных DS получить разное давление. И перенести ошибки из одного в другой. Так , что берите BMP180 - он ещё "круче"
controller_m30
Я чего предлагаю BMP как эталон... Ведь эталон всё равно нужен.
Данные с метеостанции придут ведь не в показаниях ADC Pic-контроллера - а в эталонных единицах: мм/рт.столба или паскалях.
Значит и датчик MPX нужно не только подключить и очень точно прочитать - а и скорректировать эти показания так чтоб они соответствовали принятым единицам измерения. Иначе данные метеостанции просто не нужны laughing.gif
В общем нужно чтоб под рукой был эталон. С этим эталоном и датчиком MPX нужно сделать много измерений на разной высоте и температуре, вычислить поправочные коэффициенты для этого конкретного датчика - и внести эти коэффициенты в Pic-контроллер. При замене датчика нужно снова с эталоном делать замеры и рассчитывать коэффициенты заново.

Хотя можно сразу применить BMP и не мучиться biggrin.gif - т.к. он уже приведён к общепринятым единицам измерения, и по отзывам вроде как довольно точный

Цитата(ILYAUL @ Jul 18 2012, 20:17) *
B главное , что вся математика для BOSH уже написана. Но чем же мне так нравятся немцы , что при абсолютно равных входных условиях и одних и тех же формулах расчёта , они могут в двух разных DS получить разное давление. И перенести ошибки из одного в другой. Так , что берите BMP180 - он ещё "круче"
Ага, у меня есть два DataSheet для BMP085 - и в них разные результаты вычислений по одним и тем же формулам biggrin.gif
Но там просто невнимательность приводившего пример - в версии 1.0 была ошибка, а в версии 1.2 пример скорректирован правильно.

Посмотрел цену на BMP180 - он даже дешевле на 25 грн чем BMP085. А математика та-же. И даже пример расчёта взяли тот-же неправильный из DS rev1.0 biggrin.gif Ну это поправимо rolleyes.gif
Pathfinder7
Да, маловаты в размерах эти BMP. Будут трудности с пайкой, паяльной станции у меня нет. wacko.gif
Где их можно купить?

Нашел вот еще от Freescale: MPL3115A2 (выход I2C, датчик температуры, точность 0,3 метра)
стоит от 1,5 $
http://www.freescale.com/webapp/sps/site/p...?code=MPL3115A2
SeregaB
Цитата(Pathfinder7 @ Jul 18 2012, 23:27) *
Да, маловаты в размерах эти BMP. Будут трудности с пайкой, паяльной станции у меня нет. wacko.gif
Где их можно купить?

Я покупал здесь.
Цитата(Pathfinder7 @ Jul 18 2012, 23:27) *
Нашел вот еще от Freescale: MPL3115A2 (выход I2C, датчик температуры, точность 0,3 метра)
стоит от 1,5 $
http://www.freescale.com/webapp/sps/site/p...?code=MPL3115A2

Тебе же выше написАли - не путай точность и разрешалку.
Less than 1 foot / 0.3 m resolution

Рекомендую почитать
http://ru.wikipedia.org/wiki/Барометрическая_формула
http://ru.wikipedia.org/wiki/Барометрическое_нивелирование

Еще мне понравился LPS331
controller_m30
Цитата(Pathfinder7 @ Jul 18 2012, 22:27) *
Да, маловаты в размерах эти BMP. Будут трудности с пайкой, паяльной станции у меня нет. wacko.gif

Если на плате только один SMD компонент (не важно этот датчик или любой другой) - то его можно смело паять на сплав Розе или Вуда. Чтоб демонтировать - достаточно будет положить на утюг, или подержать над печкой, или даже в кипятке biggrin.gif . Вполне себе нормальный вариант, когда нет станции.
Кроме того, если паять легкоплавким припоем - то датчик целее будет.

А ещё кто-то паял этот датчик, перевернув площадками к верху - и кинув на плату 8 проводков.
В общем было бы желание, а выход всегда найдётся rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.