Почему показания датчика температуры становятся непоследовательными при добавлении к плате дополнительного оборудования?

У меня возникла странная проблема. Мой датчик TMP 36 отлично работает, когда он единственный, подключенный к моей плате Arduino Uno. Измерения напряжения, а значит и температуры, точны и последовательны. Однако, когда я подключаю ЖК-экран к Uno и программа выводит на экран измерения TMP, значения становятся непоследовательными и могут меняться на 10 градусов по Фаренгейту от одного показания к другому. (У меня датчик выполняет измерение каждую секунду.) Этого не происходит, когда ЖК-экран не подключен. Я решил отсоединить отдельные разъемы от экрана и посмотреть, когда измерения снова станут последовательными. Я попробовал это один раз и обнаружил, что заземляющий провод, который идет к соединению 5 на экране, вызывал изменение значения, когда я неоднократно вставлял и вынимал его из заземляющего контакта. Значения TPM менялись, даже когда к ЖК-дисплею не было ничего подключено (он не был включен), кроме заземляющего провода. Я не понимаю, как это возможно, и не знаю, является ли это проблемой оборудования или программного обеспечения.

Я перемонтировал ЖК-экран, начав с проводов датчика, затем провода заземления, а затем два соединения 5 В, одно из которых имело резистор 220 Ом. Я сделал это, пока схема была запитана, и наблюдал за значениями на предмет любых больших изменений. Первое изменение произошло через несколько секунд после того, как я подключил последний провод 5 В. Датчик показывал 80 градусов по Фаренгейту, а затем 85 градусов по Фаренгейту секунду спустя. Затем он упал до 81 на несколько секунд, затем до 87. Значения продолжали меняться, но не так сильно, как в прошлые разы. Кстати, температура в области, где находится Arduino, составляет около 82 градусов по Фаренгейту.

Значения TMP не изменяются более чем на 3 градуса по Фаренгейту, когда ЖК-дисплей не подключен к экрану. Я не понимаю, что может быть причиной этого. У кого-нибудь еще была такая проблема или кто-то знает причину?

Вот макет.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12,11,5,4,3,2);
const int sensorPin = A5;
const float baselineTemp = 20.0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorVal = analogRead(sensorPin);
  Serial.print("Sensor value: ");
  Serial.print(sensorVal);
  float voltage = (sensorVal / 1024.0) * 5.0;
  Serial.print(", volts: ");
  Serial.print(voltage);
  Serial.print(", degrees C: ");
  float temperature = (voltage - .5) * 100;
  Serial.print(temperature);
  Serial.print(", degrees F: ");
  float fahrenheit = (temperature * 1.8 + 32);
  Serial.println(fahrenheit);
  delay(1000);
  lcd.begin(16,2);
  lcd.print(fahrenheit);
  lcd.print(" degrees F");
  float averageTemp;
  if(temperature < baselineTemp) {
    lcd.setCursor(0,1);
    lcd.print("Below room temp");
  }
}

, 👍5

Обсуждение

У вас может быть несколько проблем: электрический шум, просадка питания под нагрузкой в схеме, которая не учитывает это, или, возможно, потребление энергии схемой (большая часть которой будет в конечном итоге в виде тепла), из-за чего сборка нагревается немного выше температуры окружающей среды. На ваш вопрос невозможно ответить без точных данных о вашей установке — схем, номеров деталей, **и физической компоновки**., @Chris Stratton

Можете ли вы попробовать поставить диод (например, светодиод) между ними? Таким образом вы исключите возможность обратной подачи на ЖК-дисплей. Можете ли вы также рассказать нам, какой датчик температуры вы используете? Я делал похожий проект (с DS18B20), но он не вызывал странных показаний ......, @Mero55

Я добавил свой код на всякий случай, хотя я очень сомневаюсь, что он имеет какое-либо отношение к этому. Я также добавлю макет., @MICROexchange6

Макет есть в посте., @MICROexchange6

Вашу «макет» практически невозможно интерпретировать, но попробуйте подключить датчик температуры к источнику питания собственными проводами, чтобы он не делил их с ЖК-дисплеем, и добавьте несколько блокировочных конденсаторов., @Chris Stratton


1 ответ


1

У меня была эта проблема, и я подключил конденсатор 0,1 мкФ параллельно датчику и добился значительного снижения шума (в пределах половины градуса, что на самом деле составляет +- один тик).

,