• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Как прочитать данные с датчика напряжения?

hzuszun30

New member
Вот такой датчик: Купить датчик напряжения 0-25В
Хочу подключить его nodemcu (получить значение напряжения на цифровом входе), но нигде не нашел примера на луа, как это сделать. Насколько я понял, там используется 1-wire.
Может есть где-то готовый модуль? Или пример для чего-то аналогичного?
 

Izzm

New member
По виду, и описанию, это простой делитель напряжени. Но не указан диапазон выходных значений. Если они в пределах 0-1v(для голых модулей esp), и 0-3.3v (для NodeMCU и еже с ними)
То сигнальным выводом он подключаетеся к ADC esp. И с ADC считывается значение.
 

Юрий Ботов

Moderator
Команда форума
Да. Это обычный делитель. Там же даже код есть из которого все абсолютно понятно - подключается действительно на adc. Ищите "esp8266 lua adc" и обрящете. Если лениво, даю подсказку: "print(adc.read(0))"
 

Izzm

New member
Но скорее всего у него на выходе 0-5v. И если это так, то напрямую к ADC подключать не стоит. Потребуется ещё один делитель.
 

Юрий Ботов

Moderator
Команда форума
О, совсем проглядел. Можно просто подать напряжение и на цифровой вход, и на ADC. И этот модуль просто лишний.
Если бы моей целью было бы окончательно запутать ТС - я бы наверно ответил также.

Для ТС: модуль модулем, во первых надо решить что хочешь мерить. В каком диапазоне напряжений. Переменное или постоянное напряжение. Во вторых надо понять сколько напряжений одновременно. Учитывая, что это esp8266 (то есть wifi) надо решиться какая допустима погрешность измерений. Если нужно поточнее - надо будет выключать wifi на время измерения, если высокая точность не нужна - можно и не выключать. Если нужна очень высокая точность то нужна внешняя плата с внешним adc(ацп) и скорее всего она будет стоить как несколько nodemcu. Еще нужно понимать внутреннее сопротивление того на чем мерить напряжение. Если оно больше единиц кОм - придется дополнительно городить пересчет с учетом падения напряжения на внутреннем сопротивлении источника: по моему опыту внутреннее сопротивление по входу adc не так велико как хотелось бы: x00 кОм где x {1,2}, может мне просто не повезло... У хороших adc это сопротивление - мегаомы. И только после того как определишься с главным надо выбирать то или иное техническое решение. Кстати... wifi то точно нужен? Или "модуль все равно есть пусть будет"?
 
  • Like
Реакции: Izzm

hzuszun30

New member
Если бы моей целью было бы окончательно запутать ТС - я бы наверно ответил также.

Для ТС: модуль модулем, во первых надо решить что хочешь мерить. В каком диапазоне напряжений. Переменное или постоянное напряжение. Во вторых надо понять сколько напряжений одновременно. Учитывая, что это esp8266 (то есть wifi) надо решиться какая допустима погрешность измерений. Если нужно поточнее - надо будет выключать wifi на время измерения, если высокая точность не нужна - можно и не выключать. Если нужна очень высокая точность то нужна внешняя плата с внешним adc(ацп) и скорее всего она будет стоить как несколько nodemcu. Еще нужно понимать внутреннее сопротивление того на чем мерить напряжение. Если оно больше единиц кОм - придется дополнительно городить пересчет с учетом падения напряжения на внутреннем сопротивлении источника: по моему опыту внутреннее сопротивление по входу adc не так велико как хотелось бы: x00 кОм где x {1,2}, может мне просто не повезло... У хороших adc это сопротивление - мегаомы. И только после того как определишься с главным надо выбирать то или иное техническое решение. Кстати... wifi то точно нужен? Или "модуль все равно есть пусть будет"?
Да, вай-фай конечно нужен, полученные данные должны отправляться.
Очень большая точность не нужна. Я думал с помощью данной штуки наиболее простым способом получить несколько портов adc для аналоговых датчиков. Но видимо не правильно понял предназначение этого модуля. Теперь вообще непонятно - зачем он нужен?

Видимо, придется гуглить про более сложный вариант с чем-то вроде CD74HC4067. Просто я немного далек от этого, с паяльником дружу плохо, с кодом тоже. Но все-равно интересно сделать что-то самостоятельно.
 
Последнее редактирование:

Юрий Ботов

Moderator
Команда форума
Этот модуль собственно и создан чтобы "отсылать". То что его можно немного программировать это "приятный бонус" не более того. Если несколько adc и их надо отсылать, вариантов два:
- esp8266 с внешним adc (подключенным по i2c например)
- arduino( atmega какая нибудь) или stm32f103 как основной контроллер c встроенными adc, а esp просто "чтобы отослать"
 

hzuszun30

New member
Если несколько adc и их надо отсылать, вариантов два:
- esp8266 с внешним adc (подключенным по i2c например)
А какой посоветуете? Вот такой, например, только что попробовал, даже работает. Но показания от 4-х датчиков очень уж скачут. При этом, при изменении значения на одном датчике, меняются показания на остальных. Может быть питания не хватает? Запитал все это от 3.3 самого модуля nodemcu. Т.е. и сами датчики, и adc. Вобщем-то, мне не важно значение напряжения как таковое, мне нужна лишь динамика изменений и оттарирую я потом другими средствами. Но вот стабильность бы получше - это да.

Я просто ищу с минимумом пайки. Т.е. такой вариант, как отдельная микросхема, а к ней куча всего для обвязки - не рассматриваю ввиду своего рукожопства.
- arduino( atmega какая нибудь) или stm32f103 как основной контроллер c встроенными adc, а esp просто "чтобы отослать"
Наверное сложно будет? Не могли бы привести живой рабочий пример?
 

hzuszun30

New member
Не знаю какая у вас схема подключения. Обычно ставят параллельно входу небольшое сопротивление. Все зависит от конкретики.
Да какая тут особая конкретика... Без изысков - обычный аналоговый датчик (вот такой, к примеру), AO датчика на AIN платы ADC. Питание общее.
 

hzuszun30

New member
Это один, а на остальные входы АЦП? Если другие входы не используются то их лучше замкнуть на корпус или хотя бы поставить параллельно сопротивление, например 1ком.
Они все аналогичные (ну чуть-чуть отличаются, просто купил немного разных для теста).
Висит три таких датчика, на один вход ничего не подключено (и перемычка убрана)
Насчет сопротивления - спасибо, попробую.
 

Юрий Ботов

Moderator
Команда форума
К сожалению, мне это ни о чем не говорит.
На этот вход подается напряжение относительно которого меряются все остальные. Если оно "танцует" показания всех каналов будет "танцевать" пропорционально. Что с ним делать? Стабилизировать как то... Емкостями, стабилитронами... смотря по плате. Я же разводку на плате не вижу отсюда.
 

hzuszun30

New member
Вобщем, свободный вход подвесил на штатный встроенный датчик (термистор) и все более или менее стабильно стало. В смысле поставил штатную перемычку обратно.

Память где-то утекает слегка, но это уже мелочи - просто поставил рестарт раз в час.

Еще оказалось, что питания 3.3 все-так мало. При отладке и питании от USB компа все было хорошо, но при 3.3 почему-то уходит в ребут через какое-то время. В итоге подключил питание через USB от блоки питания - все стало ОК.

В целом очень платой доволен. В минимальные сроки, без каких-либо значительных навыков как в схемотехнике, так и в программировании, решил задачу -
- подключение нескольких аналоговых и цифровых датчиков,
- передачу данных на сервер в интернете для обработки,
- встроил http-сервер с выводом показаний и управлением
- зуммер для локального оповещения

Heap держится на уровне 10500-11500, при каких-то моментах начинает утекать. Зафиксированный минимум, при котором проходила отправка на сервер - 4152. После этого варианты - либо на какое-то время все подвисало и передача не шла, либо heap сам увеличивался. Может быть какой collectgarbage срабатывал, не знаю... Иногда видно было, что помогал node.restart.

Всем спасибо за помощь.
 
Сверху Снизу