Датчик температуры не выдает правильных значений
В моем текущем проекте я считываю температуру с помощью датчика, у которого всего два провода.
Для считывания значений датчиков я использовал приведенную ниже схему, которую я нашел на сайте Arduino Project Hub.
В своем проекте я использую приведенную ниже программу Arduino.
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into pin 2 on the Arduino
#define ONE_WIRE_BUS 2
// Setup a oneWire instance to communicate with any OneWire devices
// (not just Maxim/Dallas temperature ICs)
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
void setup(void)
{
// start serial port
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Start up the library
sensors.begin();
}
void loop(void)
{
// call sensors.requestTemperatures() to issue a global temperature
// request to all devices on the bus
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");
Serial.print("Temperature is: ");
Serial.print(sensors.getTempCByIndex(0)); // Why "byIndex"?
// You can have more than one IC on the same bus.
// 0 refers to the first IC on the wire
delay(1000);
}
После всего этого я получаю этот вывод на последовательный монитор.
На каком этапе я поступаю неправильно?
@karanrp, 👍1
Обсуждение1 ответ
Значение -127 для ваших показаний температуры на самом деле является кодом ошибки для DEVICE_DISCONNECTED_C
.
В примере кода библиотеки они помещают if, который проверяет наличие этого кода ошибки перед печатью температуры:
if(tempC != DEVICE_DISCONNECTED_C)
{
Serial.print("Temperature for the device 1 (index 0) is: ");
Serial.println(tempC);
}
Поскольку у вашего датчика всего 2 провода, согласно Википедии, вам нужен конденсатор для питания датчика:
Одной из отличительных особенностей шины является возможность использования только двух проводов — передачи данных и заземления. Для достижения этой цели 1-проводные устройства включают конденсатор емкостью 800 пФ для хранения заряда и питания устройства в периоды, когда линия передачи данных активна.
Надеюсь, это должно решить ваши проблемы.
- Колебания показаний датчика температуры LM35 (+- 5°C) с Arduino UNO
- Сопряжение LM35 и MQ2 с Arduino
- Изменение выходного сигнала в зависимости от температуры LM35 с использованием Arduino и LINX LabVIEW
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- Данные DHT11 из Arduino UNO в Firebase через ESP8266
- BMP280 возвращает 0
- Неверные показания PT100 и MAX31865
- Почему показания датчика температуры становятся непоследовательными при добавлении к плате дополнительного оборудования?
Не могли бы вы внести изменения в "схему", чтобы показать свою связь? Как вы на самом деле соединяете 2 провода? (Ваша текущая схема имеет 3 соединения между датчиком и Arduino, а датчик на вашем рисунке имеет только 2 провода.) Знаете ли вы о том, что хотите использовать "режим питания паразита"? В этом случае вы должны обеспечить сильное подтягивание для времени преобразования температуры. Взгляните на https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf страница 11, абзац "Преобразовать T [44h]"..., @smajli
Каким типом или названием модели является ваш датчик температуры? Похоже, вы пытаетесь подключить аналоговый датчик. Но вы используете схему подключения и код для цифрового датчика., @AltAir
Какую модель датчика температуры вы используете? Если вы используете датчик температуры lm35, Serial.print(sensors.getTempCByIndex(0)/9,31); вам нужно добавить /9.31 к вашему коду, датчики не измеряют температуру напрямую, датчики просто имеют переменный резистор внутри, значение резистора изменяется по температуре после изменения напряжения arduino просто измеряет напряжение, значение напряжения делим на 9.31 этот результат дает температуру типа Цельсия. Кроме того, вы должны отключить резистор 4,7 К, это излишне., @Buturlin
О, в самом деле. karanrp: Я предположил, что вы используете DS18B20. Сначала проверьте свой датчик., @smajli
По - моему, это похоже на дешевую термопару от цифрового термометра. Для его запуска нужен специальный чип., @Majenko