Ардуино термометр на основе датчика температуры 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: |