Датчик температуры MKR1000 и DS18B20
Я новичок в Arduino и электронике в целом, и я не могу заставить свой MKR1000 считывать правильные данные с датчика температуры DS18B20.
Вот руководство, которому я следовал.
Проблема в том, что я всегда получаю одни и те же показания датчика: -127,00
.
Должен отметить, что я попробовал два разных датчика и получил одинаковые показания.
От датчика GND идет непосредственно к GND на плате, а между проводами данных и питания установлен резистор сопротивлением 4,7 кОм.
По данным производителя датчика, выходные провода: желтый (VCC), красный (DATA), черный (GND).
Линия данных подключена к контакту ~2
на MKR1000.
/********************************************************************/
// Сначала подключаем библиотеки
#include <OneWire.h>
#include <DallasTemperature.h>
/********************************************************************/
// Провод данных подключен к контакту 2 на Arduino
#define ONE_WIRE_BUS 2
/********************************************************************/
// Настраиваем экземпляр oneWire для связи с любыми устройствами OneWire
// (не только температурные микросхемы Maxim/Dallas)
OneWire oneWire(ONE_WIRE_BUS);
/********************************************************************/
// Передаем ссылку oneWire на Dallas Temporary.
DallasTemperature sensors(&oneWire);
/********************************************************************/
void setup(void)
{
// запускаем последовательный порт
Serial.begin(9600);
Serial.println("Dallas Temperature IC Control Library Demo");
// Запускаем библиотеку
sensors.begin();
}
void loop(void)
{
// вызов Sensors.requestTemperatures() для выдачи глобальной температуры
// запрос ко всем устройствам на шине
/********************************************************************/
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures(); // Отправляем команду для получения показаний температуры
Serial.println("DONE");
/********************************************************************/
Serial.print("Temperature is: ");
Serial.print(sensors.getTempCByIndex(0)); // Почему «поиндексу»?
// На одной шине может быть более одного DS18B20.
// 0 относится к первой микросхеме на проводе
delay(1000);
}
Есть идеи, что я делаю не так?
@MrUpsidown, 👍0
Обсуждение1 ответ
Лучший ответ:
Похоже, у вас неправильно подключено. Схема действительно помогла бы, но похоже, что 5 В поступает непосредственно в линию данных датчиков (желтый провод), а на макетной плате он подключен к оранжевому проводу + 5 В. Провод питания вашего датчика температуры (красный провод) проходит через резистор 4,7 кОм, что, вероятно, тоже не то, что вам нужно.
По данным производителя датчика: Выходные провода: желтый (VCC), красный (DATA), черный (GND)., @MrUpsidown
Возможно, в их документации опечатка. Я нашел похожие датчики на Ebay: Выходной провод: красный (VCC), желтый (DATA), черный (GND)., @Jeff Wahaus
Схему, которую я пытаюсь достичь, можно найти по ссылке, которую я разместил ранее: https://create.arduino.cc/projecthub/TheGadgetBoy/ds18b20-digital-temperature-sensor-and-arduino-9cc806#toc-step-4 --build-simple-circuit-3, @MrUpsidown
МОЙ БОГ! Ладно... ты был прав, им удалось ошибиться в своих схемах! Красный — это VCC, а желтый — ДАННЫЕ! Я думал о многих возможных причинах, но не об этой... ;) Спасибо за вашу помощь., @MrUpsidown
Единственное, что хуже отсутствия документации, — это ошибочная документация., @Jeff Wahaus
- Датчик температуры не выдает правильных значений
- Arduino MKR1000 и DHT11 не дают правильного вывода для температуры и влажности
- DS18B20 работает ненадежно.
- DS18B20 дает высокие показания. Как заставить его вернуть правильную температуру?
- Проблема с датчиком температуры и влажности DHT11
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- Сокращение времени считывания показаний датчиков температуры DS18B20.
- Установка значения float до двух знаков после запятой
Помимо фотографий, есть ли у вас схема для загрузки? Это было бы полезнее, чем смотреть на кучу проводов, чтобы понять, что происходит., @MichaelT
Спасибо @MichaelT. На этот вопрос уже был дан ответ. Производитель датчиков испортил свою документацию, поэтому у меня была возможность получить доступ к данным, и наоборот., @MrUpsidown