| Ваш IP: 54.221.9.6 | Online(11) - гости: 6, боты: 5 | Загрузка сервера: 1.51 ::::::::::::

Датчик температуры на 1N4148 (Arduino)

 

Кремниевый диод в прямом включении — это практически линейный температурный датчик, падение напряжения на кремниевом диоде линейно зависит от температуры, причем температурный коэффициент практически одинаков для любых типов диодов и составляет около −2 мВ/°С (т. е. с ростом температуры напряжение уменьшается).

Диапазон измерения температуры при помощи кремниевого диода может находится в пределах от -30 до 120 ºС.

Схема датчика температуры достаточно проста, на понадобится плата Arduino Nano (UNO), индикатор для вывода информации и кремниевый диод 1N4148.

Микроконтроллер ATmega в Arduino имеет внутренние подтягивающие резисторы (резисторы, подключенные к питанию внутри микросхемы), которыми можно управлять. В скетче активируется этот режим и диод питается от напряжения 5 В через внутренний подтягивающий резистор 20 кОм, одновременно на этом же аналоговом входе измеряем прямое напряжение диода, которое будет немного меняться от температуры.

Так как  диоды имеют разброс в параметрах, то необходима калибровка. Для этого необходимо иметь точные данные о температуре, для этого может понадобится точный градусник, чтобы замерить температуру окружающей среды или лед с талой водой для калибровки по 0 гр. Цельсия. Можно также произвести калибровку по температуре кипящей воды.

В моем случае я поступил просто, измерив окружающую температуру ртутным лабораторным градусником (погрешность 0,1ºС), я указал ее в скетче (первоначально необходимо загрузить скетч, а потом калибровать), а так же указал цифровое значение напряжения при этой температуре (см.монитор порта).  Дополнительно (что было необязательно) диод был погружен в лед с талой водой и показания температуры были около нуля градусов.

Тестируя несколько диодов 1N4148, я убедился, что значения температуры отличались от калиброванного диода не более чем на 0,5 ºС, но все диоды были с одной партии, поэтому возможно мои калибровочные числа Вам не подойдут.

#include <LiquidCrystal.h>            
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7

int n = 30;// кол-во измерений для среднего значения 
int t; // 0,022 мВ на 1 гр.Цельсия или 2 ед.значения А5 на 1 гр.Цельсия)
const float t0 = 26.0; // калибровка
const float t0_analog = 545; /* По показаниям эталонного градусника
задайте свое значение температуры t0, далее посмотрите значение
t0_analog в мониторе порта и укажите его */
float t_sum,t_iz,t_iz_analog,t_analog;

void setup() {
  analogReference(INTERNAL);// опорное 1,1 В 
  lcd.begin(16, 2);// LCD 16X2
  pinMode(A5, INPUT_PULLUP);
  Serial.begin(9600); 
}

void loop() {  
 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("temp = ");
  lcd.print(t_iz,1);
  lcd.print(" C ");
  Serial.println(t_analog,0);
  t_sum = 0;
  for (int i = 0; i < n; i++) {
    t = analogRead(A5);// 545 при 26 гр
    t_sum = t_sum + t; 
    delay(33);// общее время измерения 999 мс
  }

  t_analog = t_sum / n;// среднее значение
  t_iz_analog = (t_analog-t0_analog) / 2;// отклонение гр.Цельсия от t0
  t_iz = t0 - t_iz_analog;// вычисление температуры
}

На основе датчика температуры, можно собрать простой терморегулятор, схема которого показана на рисунке:

Кнопками регулировки можно установить необходимую температуру, как только температура датчика превысит температуру регулировки на цифровом выходе 13 появится лог. ноль. Так же в код добавлен гистерезис в 0,2 градуса.

#include <LiquidCrystal.h>            
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);// RS,E,D4,D5,D6,D7

int n = 30;// кол-во измерений для среднего значения 
int t; // 0,022 мВ на 1 гр.Цельсия или 2 ед.значения А5 на 1 гр.Цельсия)
const float t0 = 26.0; // калибровка
const float t0_analog = 545; /* По показаниям эталонного градусника
задайте свое значение температуры t0, далее посмотрите значение
t0_analog в мониторе порта и укажите его */
float t_sum,t_iz,t_iz_analog,t_analog;
int kn,t_reg = 25;
const float g = 0.2;// гистерезис

void setup() {
  analogReference(INTERNAL);// опорное 1,1 В 
  lcd.begin(16, 2);// LCD 16X2
  pinMode(A5,INPUT_PULLUP);
  pinMode(5,INPUT_PULLUP);
  pinMode(4,INPUT_PULLUP);
  pinMode(13,OUTPUT);
  Serial.begin(9600); 
}

void loop() {  
 
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("temp = ");
  lcd.print(t_iz,1);
  lcd.print(" C ");
  Serial.println(t_analog,0);
    
  if(digitalRead(5) == 0){t_reg++;}
  if(digitalRead(4) == 0){t_reg--;}
  if(t_reg <= -30){t_reg = -30;}
  if(t_reg >= 120){t_reg = 120;}
  lcd.setCursor(0,1);
  lcd.print("reg = ");
  lcd.print(t_reg);
  lcd.print(" C ");
  
  if(t_reg >= t_iz + g){digitalWrite(13,HIGH);}
  if(t_reg <= t_iz - g){digitalWrite(13,LOW);}
  if(digitalRead(13) == HIGH){lcd.setCursor(14,1);lcd.print("*");}
  else{lcd.setCursor(14,1);lcd.print(" ");}
 
  t_sum = 0;
  for (int i = 0; i < n; i++) {
    t = analogRead(A5);// 545 при 26 гр
    t_sum = t_sum + t; 
    delay(33);// общее время измерения 999 мс
  }

  t_analog = t_sum / n;// среднее значение
  t_iz_analog = (t_analog-t0_analog) / 2;// отклонение гр.Цельсия от t0
  t_iz = t0 - t_iz_analog;// вычисление температуры
}

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

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

  • Трехканальный УМЗЧ на TA8218

    Трехканальный УМЗЧ на TA8218

    Микросхема TA8218 используется в основном в аудио бытовой технике. Усилитель на TA8218 имеет функции MUTE с независимым управлением основных двух и канала surround. Так же микросхема снабжена защитой от перенапряжения, имеет тепловую защиту и защиту от КЗ выходов на корпус. Назначение выводов микросхемы TA8218 отрицательная обратная связь 2 Вход 2 …Подробнее...
  • УНЧ на TDA1519

    УНЧ на TDA1519

    Напряжение питания 6…17,5В Максимальный потребляемый ток 4 А Выходная мощность при Uп=14,4В КНИ=0,5%: Rн=2Oм 6Вт Rн=4Ом 5Вт При Uп=14,4В КНИ=10%: Rн=2Oм 11Вт Rн=4Ом 8,5Вт Ток покоя 80мАПодробнее...
  • Источник питания 0…13.8В 10А

    На рисунке показана схема источника питания  с выходным напряжением от 0 до 13,8 (16В) с максимальным током нагрузки в 10А. В схеме используется микросхема LM723 и три транзистора, два из которых силовые — 2N3055.      Регулировка выходного напряжения осуществляется потенциометром VR1 (1К).Транзисторы VT1 VT2 должны быть установлены на радиаторы, …Подробнее...
  • MAX5035 простой DC-DC преобразователь 1А

    MAX5035 простой DC-DC преобразователь 1А

    MAX5035 простой в использовании, высокоэффективный, высоковольтный понижающий DC-DC преобразователь (ШИМ 125 кГц), имеет широкий диапазон питающего напряжения от 7,5 В до 76 В и малый ток потребления до 270 мкА (дежурный режим до 10 мкА). Диапазон выходного напряжения фиксирован — MAX5035А — 3,3В, MAX5035B — 5В, MAX5035С — 12В и не фиксирован для MAX5035D/E. Максимальный …Подробнее...
  • Усилитель с модуляцией-демодуляцией сигнала

    Усилитель с модуляцией-демодуляцией сигнала

    Усилитель с модуляцией-демодуляцией сигнала (МДМ) используются в случаях, когда требуется получить наименьшее значение дрейфа нуля выходного напряжения. От усилителей с непосредственными связями они отличаются тем, что в них входной постоянный сигнал преобразуется в переменный с помощью модулятора, который усиливается усилителем переменного тока, а затем с помощью демодулятора преобразуется в постоянный …Подробнее...