мой датчик температуры LM35 дает странные показания,

temperature lm35

Плата: esp32

Я знаю, что моя проводка правильная, поскольку я получаю данные от датчика, но эти данные немного странные.

При 22 градусах Цельсия я получаю 140, хотя если я вычислю напряжение (* 0,473372), это все равно не сработает.

Число 0,473372... получается при напряжении 4,7В/1024*1000/10

Мой код:

 Serial.print("temp: ");
 float temp = (analogRead(A13) * 0.473372781065088);
 Serial.println(temp);
 delay(2000);

Есть ответы?

, 👍0

Обсуждение

Каково напряжение на аналоговом входе, когда вы получаете это показание? Объясните, почему вы умножаете на 0,473. Покажите свои схемы. Я думаю, что LM35 нужны развязывающие конденсаторы (если я правильно помню). Вы их опустили? Добавьте информацию в свой вопрос, а не в комментарии., @Transistor

Ваше «преобразование» значения АЦП в температуру выглядит слишком простым. Вам необходимо преобразовать значение АЦП в вольты, после чего по напряжению можно рассчитать температуру. Это простое упражнение, и быстрый поиск в Google выдает примеры (с пояснениями) использования LM35 с ESP32., @JRE

Что говорит JRE: помните, что 0 = 0 В, но 1023 = VCC (если вы не выбрали другое опорное напряжение)., @Bimpelrekkie

*analogRead value * (напряжение на датчике / 1024 * 1000 / 10)* Я думаю, так и должно быть: Actual Voltage = AnalogRead_value * (опорное напряжение АЦП / 1023), см.: https://www.arduino.cc/en/ Учебное пособие/Чтение аналогового напряжения, @Bimpelrekkie

[Я имею в виду вот так.](http://www.esp32learning.com/code/esp32-and-lm35-temperature-sensor.php), @JRE

Вы пишете ответ с подробным описанием того, что было не так и как вы это исправили (для людей в будущем, у которых возникнет такая же проблема), ждете установленный период, а затем принимаете его как правильный ответ., @Majenko

Кстати: esp32 работает при напряжении 3,3 В. Итак, если у вас действительно напряжение 4,7 В на аналоговых входах, вы не соответствуете техническим требованиям!, @Sim Son

@SimSon, что ты имеешь в виду?, @user216002

Нормализация напряжения с помощью 4,7 В/1024 * 1000/10 заставляет меня поверить, что вы измерили/подали напряжение 4,7 В. Это слишком много для esp, максимально допустимое напряжение составляет 3,6 В, поскольку esp32 должен работать при напряжении 3,3 В., @Sim Son

хм, я не знаю, в документации к датчику сказано, что ему нужно 4,4 В, поэтому я просто подключил его с помощью vin-контакта., @user216002

но у меня не выводится напряжение 4,4, так что думаю, все в порядке, @user216002


2 ответа


Лучший ответ:

0

ок, проблема в том, что я использовал неправильное преобразование напряжения, просто используйте:

RawValue = analogRead("your analog input pin");
Voltage = (RawValue / 2048.0) * 3300;
Serial.println(Voltage);

это должно напечатать температуру в celcious

,

-1

попробуйте этот, я работал с lm35, используя этот код и схему. я сделал это с arduino uno, но вы можете попробовать с esp32

,

мне не нужен датчик для измерения минусового уменьшения, поэтому я использую другую настройку, @user216002