| Ваш IP: 3.235.29.190 | Online(40) - гости: 23, боты: 17 | Загрузка сервера: 0.62 ::::::::::::

Терморегулятор DS18B20 + TM1637 + энкодер ky-040 (Arduino)

На рисунке показана схема простого и очень удобного в использовании терморегулятора, в качестве датчика используется DS18B20, а управление регулятором осуществляется при помощи энкодера ky-040.

Интегральный датчик температуры DS18B20 имеет диапазон измерения температуры от -55 до + 125 °C, показания температуры выводятся на четырех разрядный семисегментный индикатор на базе драйвера TM1637 (модуль TM1637), вращая ручку энкодера можно изменять температуру регулирования, так же используется гистерезис в 0,5 °C, которой можно изменить в скетче.

В режиме измерения температуры на индикаторе будут показания температуры, для изменения температуры регулирования достаточно начать вращать ручку энкодера, при этом будет высвечиваться показания температуры регулирования, если не вращать ручку энкодера в течении 2 секунд, снова появятся показания температуры. Для сохранения в энергонезависимую память температуры регулирования необходимо нажать кнопку энкодера, при сохранении данных на индикаторе появится надпись «S_rG».

Если Вы используете в качестве датчика температуры модуль DS18B20, то резистор R2 из схемы необходимо исключить. Цифровой выход 13 используется для управления нагрузкой.

#include <OneWire.h>
#include <TM1637Display.h>
#include <EEPROM.h>//#include <EEPROMex.h>
#include <DallasTemperature.h>
#include <Encoder.h>
#include <MsTimer2.h>
 
TM1637Display display(2, 3);// CLK,DIO
Encoder myEnc(5, 4);// CLK, DT
OneWire oneWire(A1);// вход датчика 18b20
DallasTemperature t(&oneWire);
 
int oldPosition  = -999,newPosition,rom,k;
unsigned long time;
byte minus_reg,reg;
float gis = 0.5;// гистерезис
uint8_t data[]{0,0,0,0};
uint8_t data1[]{0x6d,0x08,0x50,0x3d};
 
void setup(){
  t.begin(); 
  t.setResolution(11);//11 бит 
  pinMode(10,INPUT);  // кнопка энкодера
  pinMode(13,OUTPUT); // выход для управления нагрузкой
  rom = EEPROM.read(0); 
  minus_reg = EEPROM.read(1);
  if(minus_reg==1){rom=rom-2*rom;}
  display.setBrightness(0);// яркость TM1637 0-7
  MsTimer2::set(3, to_Timer);MsTimer2::start();
}
 
void loop(){
 
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    time=millis();
    reg=1;
  }
  else if(millis()-time>2000){
    t.requestTemperatures();
    time=millis();
    reg=0;
  }
 
  if(digitalRead(10)==LOW){
    EEPROM.update(0,abs(newPosition));
    EEPROM.update(1,minus_reg);
    display.setSegments(data1); 
    delay(1000);
  }
 
  if(newPosition<0){minus_reg=1;}
  else{minus_reg=0;}
  if(newPosition<-55){newPosition=-55;}
  if(newPosition>125){newPosition=125;}
 
  if(reg==1){k=newPosition;}
  else{k = t.getTempCByIndex(0);}
  if(reg==1){data[0]=0x50;}
  else{data[0] = 0x78;}// r / t
  if(k > 99){data[1] = display.encodeDigit((k/100)%10);}
  else{data[1] = 0x00;}
  if(k < 0){k=abs(k);data[1] = 0x40;}
  data[2] =  display.encodeDigit((k/10)%10);
  data[3] =  display.encodeDigit((k%10)%10);
  display.setSegments(data);
 
   if(newPosition >= t.getTempCByIndex(0) + gis){digitalWrite(13,HIGH);}
   if(newPosition <= t.getTempCByIndex(0) - gis){digitalWrite(13,LOW);}
}
 
void to_Timer(){newPosition = myEnc.read()/4+rom;}

DallasTemperature.h

OneWire.h

Encoder.h

TM1637Display.h

MsTimer2.zip

Комментарии

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Пяти полосной регулятор тембра на транзисторах

    Пяти полосной регулятор тембра на транзисторах

    Регулирование тембра происходит путем изменения уровня сигнала на выходах пяти полосовых фильтров, на-строенных на частоты 160 Гц, 340 Гц, 1,5 кГц, 4 кГц и 5,7 кГц. Входной сигнал усиливается первой ступенью на транзисторе Т1 и далее через полосовые фильтры поступает на вход второй ступени на полевом транзисторе Т2 по схеме …Подробнее...
  • Автоматические устройства для зарядки аккумуляторов

    Описываемое уст-во предназначено для зарядки аккумуляторов емкостью до 100А*ч. Как известно, при зарядке аккумуляторов большим током снижает их емкость и срок службы, а при зарядки малым током затрачивается очень много времени. так же при зарядке аккумуляторов иногда их перезаряжают, при большем заряде аккумулятора в отличии от номинального (путем длительной зарядки) …Подробнее...
  • Генератор мелодий на CIC-285x-CIC-287x

    Показанные ниже схемы можно использовать в различных радиолюбительских конструкциях: звонках, будильниках, сигнализациях и др. Генератор мелодий на CIC-285x-CIC-287x имеет минимум элементов прост в настройке и сборке. У микросхем есть несколько режимов работы: 1 — непрерывная работа рисунок №1, 2 — включаются только при управляющем сигнале рисунок №2, 3 — играют …Подробнее...
  • Микшер на TA7137

    Микшер на TA7137

    На ИМС TA7137 можно собрать простой  и не дорогой микшер, ИМС TA7137 представляет собой предусилитель низкой частоты. Технические характеристики TA7137: Напряжение питания: номинальное 5 В, максимальное  15 В; Коэффициент усиления  69 дБ; Встроенный узел управления АРУ; Среднеквадратичное напряжение шума, приведенное ко входу 1 мкВ; Коэффициент нелинейных искажений (Vout = 0,2 В)  0,1%; Диапазон …Подробнее...
  • TDA8551 — маломощный усилитель с регулятором громкости

    TDA8551 — маломощный усилитель с регулятором громкости

    ИМС TDA8551 это маломощный усилитель звуковой частоты с кнопочным регулятором громкости. Регулятор громкости имеет 64 шага (1,25 дБ) и позволяет регулировать громкость от -60 дБ до + 20 дБ. Так же поддерживаются режимы STANDBY и MUTE. Характеристики усилителя на TDA8551: Напряжение питания от 2,7 В до 5,5 В Рекомендуемое напряжение …Подробнее...