Ардуино термометр на основе датчика температуры DS18B20
Один раз мы уже реализовали проект термометра на основе датчика температуры DS18B20. Сегодня мы сделаем термометр на основе этого датчика другим способом, разберемся с DS18B20 и используем несколько дополнительных библиотек.
Мы сделаем LCD-термометр или, как вариант, Serial-термометр (напечатает данные о температуре на последовательном мониторе Arduino IDE) на основе микроконтроллера Ардуино и цифрового датчика DS18B20, макетов, перемычек. Таким образом, вы сможете измерять температуру воздуха, жидкости, например, воды и температуру земли.
Информация о сенсоре DS18B20
DS18B20 - это цифровой температурный датчик с интерфейсом 1-Wire от Maxim IC. На выходе мы получаем информацию в Цельсиях с точностью от 9 до 12 бит, от -55 до 125 (+/- 0,5). Каждый датчик имеет уникальный 64-разрядный серийный номер, что позволяет использовать огромное количество датчиков на одной шине данных.
Термометр через последовательный монитор
Чтобы отобразить данные на последовательном мониторе, подключите датчик DS18B20 к Arduino, используя перемычки и макет, и не забудьте подключить или припаять резистор 4.7k между контактом 2 и 3 датчика.
Затем скачайте, откройте и загрузите файл .ino, который называется - DS18B20_Serial, ниже.
Если все в порядке, вы должны увидеть измеренную температуру на серийном мониторе Arduino IDE.
#include
#include
// Провод данных подключен к контакту 2 на Arduino
#define ONE_WIRE_BUS 2
// Настройка oneWire для связи с любыми устройствами OneWire
// (не только Maxim/Dallas температурные IC)
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
// Старт серийного порта
Serial.begin(9600);
Serial.println("Dallas Temperature IC демо");
// Запуск библиотеки
sensors.begin();
}
void loop(void)
{
// запрашиваем sensor.requestTemperatures() для получения глобальной температуры
// запрос всех устройств на шине
Serial.print(" Запрашиваем температуру...");
sensors.requestTemperatures(); // Отправляем команды для получения температуры
Serial.println("DONE");
Serial.print("Температура: ");
Serial.print(sensors.getTempCByIndex(0)); // Почему "byIndex"?
// У вас может быть несколько IC на одной шине.
// 0 относится к первой IC
delay(1000);
}
Do'stlaringiz bilan baham: |