​Аналоговой термометр на базе Arduino

20 марта 2017

Сегодня мы при помощи аналогового вольтметра и платы Arduino сделаем термометр. Но прежде всего, нам понадобится заставить вольтметр показывать температуру, а не напряжение. Измерение температуры происходит цифровым датчиком DS18B20, а затем отображается на вольтметре. Причина, по которой для проекта был выбран именно аналоговый циферблат, - это личные предпочтения. На мой взгляд, они придают проектам интересный винтажный вид.


При создании данного проекта мы получим полезные знания и опыт по добавлению аналоговых частей в любой проект, а также как использовать функциональность PWM в Arduino.

Материалы

Температурный сенсор DS18B20

DS18B20 – это довольно точный цифровой термометр, который измеряет температуру в диапазоне от -10 ° C до + 85 ° C, а также включает в себя функции сигнализации. Стоит отметить, что датчик очень прост в использовании, что также можно отнести к достоинствам.

Аналоговый вольтметр

Нам подойдет любой недорогой аналоговый вольтметр постоянного тока. Наш экземпляр имеет диапазон от 0 до 5 В. Использовать его очень просто. Достаточно подключить его к источнику питания, и он отображает напряжение. А с цифрового выхода на плате мы можем вывести любое напряжение от 0 до 5 В при помощи PWM и тем самым контролировать показания вольтметра по желанию. Данный функционал позволяет построить любой измерительный прибор при помощи простого вольтметра.

Как управлять вольтметром с помощью Arduino

Для начала разберемся с тем, как управлять вольтметром при помощи 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. При перепечатке данного материала активная ссылка на первоисточник, не закрытая для индексации поисковыми системами, обязательна.


Поделиться: