Калибровка аналогового входа
- Войдите на сайт для отправки комментариев
Ср, 06/07/2022 - 11:44
Добрый день!
Захотелось поставить датчик давления в систему водопровода. Приобрел на али датчик со следующим описанием
"5 в постоянного тока, выход 0,5-4,5 в, датчик давления, датчик масла и воды, 0-10/бар"
Подключил к node mcu и получил следующий результат:
фактическое давление = показания аналогового входа
0 = 164 ; 1 = 300 ; 2 = 429 ; 3 = 550 ; 4 = 685
Сейчас я решил проблему так (см. код), но наверняка есть более правильный способ?
int aPin = A0;// float aval = 0;// значение на А0 float bar = 0;// преобразованное значение void apin(){ // считывание и преобразование аналогового входа aval = analogRead(aPin); if (aval < 250 ) { bar = aval - 165;} else if (aval > 250 && aval < 350){ bar = aval * 0.0033;} else if (aval > 350 && aval < 500){ bar = aval * 0.0046;} else if (aval > 500 && aval < 600){ bar = aval * 0.0054;} else if (aval > 600 && aval ) { bar = aval * 0.0058;}
Можно завести таблицу в экселе, построить график, включить формулу тренда (многочлен как минимум в 3 члена), и использовать ее для пересчета.
Jhonson, постройте график - тут же линейная зависимость!
тут же линейная зависимость!
Я таким образом выкрутился
Какое значение при 10?
а как это реализовать в коде, могли бы подсказать?
1023 скорее всего
Скорее всего? А измерить? Я чота так подумал, что обычная функция map() тут влетит как к себе домой )))
Подключил к node mcu
Правильно подключил? Надеюсь, в курсе что у голой esp8266 максимальное входное наапряжение АЦП всего 1В? Но благодаря китайцам, которые предусмотрели делитель на входе АЦП, у модулей nodemcu оно составляет 3 В. Ваш же модуль
Мое значение тебе не подойдет, у меня ESP32 + делитель по входу.
Вот этим скетчем калибровочные значения узнаю.
Про датчик кстати могу добавить следующее.
У меня их 6 штук. У всех показания разные, погрешность ~0.25, для моих задач это много.
Для этого и понадобился скетч калибровки.
Потом купил переходник и поверенный манометр, все это дело подключил к компрессору и по манометру откалибровал каждый датчик.
Потом купил переходник и поверенный манометр, все это дело подключил к компрессору и по манометру откалибровал каждый датчик.
это не по фэншую, грузопоршневой манометр нужен )))
Скорее всего? А измерить? Я чота так подумал, что обычная функция map() тут влетит как к себе домой )))
Тут только нужно учесть диапазон значений, в котором предполагается работать. До 4 бар зависимость линейная, а дальше может и загнуться. Если из линейного участка выходить не предполагается, то хоть мапом, хоть заранее этот коэффициентик вычислить.
Кстати, такие вещи обычно в инструкциях/даташитах прописаны. Jhonson, не смотрели?
Скорее всего? А измерить? Я чота так подумал, что обычная функция map() тут влетит как к себе домой )))
Тут только нужно учесть диапазон значений, в котором предполагается работать. До 4 бар зависимость линейная, а дальше может и загнуться. Если из линейного участка выходить не предполагается, то хоть мапом, хоть заранее этот коэффициентик вычислить.
Кстати, такие вещи обычно в инструкциях/даташитах прописаны. Jhonson, не смотрели?
Так я спрашивал про 10, ответ был «наверное». Поэтому я только предположил...