Сегодня мы при помощи аналогового вольтметра и платы Arduino сделаем термометр. Но прежде всего, нам понадобится заставить вольтметр показывать температуру, а не напряжение. Измерение температуры происходит цифровым датчиком DS18B20, а затем отображается на вольтметре. Причина, по которой для проекта был выбран именно аналоговый циферблат, - это личные предпочтения. На мой взгляд, они придают проектам интересный винтажный вид.
При создании данного проекта мы получим полезные знания и опыт по добавлению аналоговых частей в любой проект, а также как использовать функциональность PWM в Arduino.
DS18B20 – это довольно точный цифровой термометр, который измеряет температуру в диапазоне от -10 ° C до + 85 ° C, а также включает в себя функции сигнализации. Стоит отметить, что датчик очень прост в использовании, что также можно отнести к достоинствам.
Нам подойдет любой недорогой аналоговый вольтметр постоянного тока. Наш экземпляр имеет диапазон от 0 до 5 В. Использовать его очень просто. Достаточно подключить его к источнику питания, и он отображает напряжение. А с цифрового выхода на плате мы можем вывести любое напряжение от 0 до 5 В при помощи PWM и тем самым контролировать показания вольтметра по желанию. Данный функционал позволяет построить любой измерительный прибор при помощи простого вольтметра.
Для начала разберемся с тем, как управлять вольтметром при помощи Arduino. «+» вольтметра мы соединяем с цифровым выходом «9», а «-» с «GND». Поскольку Arduino не имеет Digital To Analog преобразователя, нам придется использовать функционал PWM для того, чтобы записать аналоговое значение с цифрового выхода Arduino. PWM поддерживают контакты платы, радом с которыми есть значок «~».
Чтобы отправить то или иное значение вольтметру, используется команда «analogWrite» к которой добавляется значение от 0 до 255. При 0 вольтметр будет показывать 0 В, а при 255 – 5 В. К примеру, если нам нужно, чтобы вольтметр показал 2,5 В, нам необходимо ввести команду «analogWrite (9,128)». После этих нехитрых манипуляций мы можем управлять вольтметром по желанию.
Теперь преобразовываем вольтметр в термометр. Для этого нам необходимо подключить датчик DS18B20 к плате. «-» мы подключаем к «GND», «+» к «5V», а сигнальный вывод к «2». Вот и все.
Осталось только подготовить шкалу для термометра. Ее можно нарисовать самому на свой вкус и вставить в вольтметр. Или использовать готовую, если вы не любите работу в фоторедакторах.
Теперь необходимо загрузить код и наш термометр полностью готов к работе. Если коснуться датчика, температура моментально изменится.
Давайте посмотрим на код проекта, чтобы понять, как он работает.
Для компиляции нам необходима библиотека DallasTemperature.
Код очень прост.
#include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 2 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); int MIN_TEMP = 16; int MAX_TEMP = 28; void setup() { pinMode(9,OUTPUT); Serial.begin(9600);sensors.begin(); } void loop() { float temperature = getTemperature(); int voltage = temperatureToPWM(temperature); analogWrite(9,voltage); delay(500); } float getTemperature(){ float temperature =0; sensors.requestTemperatures(); // Send the command to get temperatures temperature = sensors.getTempCByIndex(0); Serial.println(temperature); return temperature; } int temperatureToPWM(float temperature){ float temp=0; float voltage = 0; temp = temperature*10; voltage = map(temp,MIN_TEMP*10,MAX_TEMP*10,0,250); return voltage; }
Температура считывается с датчика и преобразуется в значение PWM от 0 до 255. Значение максимальной и минимальной температуры, которые будет отображать термометр, можно изменить путем корректировки значений глобальных переменных MIN_TEMP и MAX_TEMP.
На этом все. Наш термометр полностью готов к работе.
Статья является авторским переводом с сайта instructables.com.
Данная статья является собственностью Amperkot.ru. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.
Комментарии