uk en-us

Категория ГЛАВНАЯ  

Регулятор температуры


2015-11-10 00:00:00

Регулятор температуры
18.11.2013, 19:09
Терморегуляторы Сейчас одни из самых распространенных  устройств домашней автоматики. Практически каждый известный производитель предлагает выбор из нескольких моделей подобных приборов. Отличаются они функциональными возможностями и ценой, но призваны исполнять одну функцию – управление температурой какого-либо объекта. Несмотря на распространенность термоконтроллеров, находятся любители, предпочитающие собирать их самостоятельно.


Основу любого современного терморегулятора составляет элемент под названием микроконтроллер. Не следует путать его с одноименными вариантами ПЛК. Современный микроконтроллер это отдельная микросхема, в которой реализована большая часть классической микропроцессорной системы и некоторые из устройств связи с объектом. Для реализации полноценной системы, достаточно предусмотреть преобразователи уровней сигналов, элементы питания и написать управляющую программу. В чем-то все это напоминает внедрение ПЛК, за исключением того, что работы проводятся на уровне отдельных элементов микроэлектроники.


Схема регулятора температуры.


Программирование микроконтроллеров осуществляется либо на ассемблере, либо на языке высокого уровня, чаще всего C. При этом требуются солидные знания, как в области программирования, так и в области внутреннего устройства и работы микропроцессорных систем. Зато результат можно получить именно тот, который необходим. Плюс цена оборудования не включая цену разработки будет минимальной. Например, описываемая далее конструкция содержит элементы общей стоимостью порядка 15$. И это не предел. При желании и массовом производстве стоимость может быть еще ниже. Но вернемся к регулятору температуры.  Классическая схема любого современного прибора состоит из четырех частей:
    ДатчикУправляющий микроконтроллерЭлементы индикации и управленияВыходное устройство
Самым серьезным отличием любительских конструкций от применяемых в промышленности, можно считать тип датчика температуры. В индустриальном оборудовании обычно используются термометры сопротивления или термопары. Но эти сенсоры требуют солидной схемы преобразования сигналов и АЦП. Повторить их в любительских условиях не так сложно, но несколько дорого. Данные датчики работают в диапазоне температур от -55 до 125 градусов Цельсия и оснащены встроенным АЦП и одним из последовательных интерфейсов обмена. Для подключения подобных сенсоров к микроконтроллеру не требуется никаких дополнительных элементов разве что нескольких сопротивлений и конденсаторов, что сильно упрощает задачу построения термоконтроллера. Также цена на подобные датчики находится в районе 2-3$. Если пренебречь не самой высокой точностью и разрешением по температуре, то можно создать обычный регулятор температуры. Кстати изредка встречаются устройства, использующие полупроводниковые датчики и в промышленных применениях. Но наиболее часто эти сенсоры можно встретить в бытовой технике, ПК и других подобных приборах. Выбор управляющего микроконтроллера целиком лежит на разработчике. Это может быть простая и дешевая модель, либо более мощный вариант, используемый также в промышленных контроллерах. Главным критерием здесь является необходимый алгоритм работы и сервисные функции прибора. Не секрет, что современные индустриальные регуляторы обладают большими возможностями настройки под конкретный процесс. Все это можно реализовать и самостоятельно.


Внешний видПринципиальная схема регулятора построена с использованием относительно простого микроконтроллера PIC16F676 И цифрового датчика температуры MCP9800, выпускаемых американской фирмой Microchip. Все микросхемы применены в стандартном варианте включения. Для индикации температуры использован трехсимвольный светодиодный дисплей. Задание температуры может быть выполнено с помощью трех кнопок. Конструкция предполагает два варианта выходных элементов – либо стандартное реле, либо оптопара управления симистором. Выбор нужного варианта производится на этапе сборки. Самой сложной операцией при изготовлении устройства будет прошивка микроконтроллера управляющей программой. Она потребует наличия специального программатора. К счастью, сегодня, найти подобное оборудование не представляет большой сложности. Сама программа реализует позиционное управление температурой. Уставку можно задать в диапазоне от 0 до 99 градусов. Конечно, приведенное устройство больше подходит для бытовых применений.  Тем не менее, оно повторяет основные возможности современных регуляторов температуры. Несколько усложнив конструкцию, путем применения более мощного микроконтроллера и промышленного датчика, фактически можно получить полный аналог индустриальных систем. 
Программа терморегулятора
Program ThermoReg;var i, dig:byte;    dig1,dig2,dig3:byte;    mm, ss, rm, rs, s1,s2:byte;    set_mm, set_ss:byte;    button_cnt1,button_cnt2,button_cnt3:byte;    rezim:byte;    Temp, Temp_set:word;    Soft_I2C_Scl     : sbit at RA1_bit;    Soft_I2C_Sda     : sbit at RA0_bit;    Soft_I2C_Scl_Direction : sbit at TRISA1_bit;    Soft_I2C_Sda_Direction : sbit at TRISA0_bit;procedure Read_T;   begin    clrwdt;    Soft_I2C_Start;    Soft_I2C_Write0x90;    Soft_I2C_Write0x00;    Soft_I2C_Start;    Soft_I2C_Write0x91;    rm := Soft_I2C_Read1;    rs := Soft_I2C_Read0;    Soft_I2C_Stop;  end;procedure Delay1;   begin     clrwdt;     Delay_ms300;     clrwdt;  end;function m1num1: byte: byte;    var i:byte;tmp:word;beginclrwdt;  tmp:=0;  for i:=0 to num1 do  begin    tmp:=tmp+625;  end;  result:= tmp div 1000;end;function masknum: byte: byte; beginclrwdt;  case num of    //bfgacpde     0 : result:= %11011011;     1 : result:= %10001000;     2 : result:= %10110011;     3 : result:= %10111010;     4 : result:= %11101000;     5 : result:= %01111010;     6 : result:= %01111011;     7 : result:= %10011000;     8 : result:= %11111011;     9 : result:= %11111010;    10 : result:= %11111010;   end;end;procedure Digit_Regdigit:byte;  begin  clrwdt;  if dig=2 and dig2>2 then digit:=digit+4;  for i:=1 to 8 do    begin      clearbitPortC,0;      if testbitdigit,0 then setbitPortC,0;      SetbitportC,1;      ClearbitportC,1;      digit:=digit shr 1;    end;end;procedure interrupt;  begin  clrwdt;  dig:=dig+1;  if dig>3 then dig:=1;  case dig of    1: begin      clearbitportc,3;      Digit_Regdig3;      setbitportc,5;      if testbitportc,2 then        begin          if button_cnt1<200 then            begin              button_cnt1:=button_cnt1+1;              if button_cnt1>=198 then                begin                  rezim:= rezim xor 1;                  if rezim=0 then                    begin                      EEPROM_Write0x02,set_ss;                      EEPROM_Write0x03,set_mm;                    end;                end;            end;        end        else button_cnt1:=0;    end;    2: begin      clearbitportc,5;      Digit_Regdig2;      setbitportc,4;     if rezim>0 and testbitportc,2=1 then        begin          button_cnt2:=button_cnt2+1;          if button_cnt2=25 then set_ss:=set_ss+10;          if button_cnt2>120 then button_cnt2:=10;        end        else button_cnt2:=0;    end;    3: begin      clearbitportc,4;      Digit_Regdig1;      setbitportc,3;     if rezim>0 and testbitportc,2=1 then        begin          button_cnt3:=button_cnt3+1;          if button_cnt3=25 then set_ss:=set_ss-10;          if button_cnt3>120 then button_cnt3:=10;        end        else button_cnt3:=0;    end;  end;  INTCON := %10100000;                      end;function te1d1,d2:byte:word;begin  result:=d1 shl 4+d2 shr 4;end;begin  OPTION_REG  := %00000100;  ansel       :=0;  cmcon       :=7;  INTCON      :=  $A0;  TRISA       :=    %00000000;  TRISC       :=    %00000100;  PORTA       :=    0;  PORTC       :=    0;  Setbitportc,0;  dig:=1;  rezim:=0;  button_cnt1:=0;  button_cnt2:=0;  button_cnt3:=0;  Delay1;  set_ss:=EEPROM_Read0x02;  set_mm:=EEPROM_Read0x03;  clrwdt;    Soft_I2C_Init;    Soft_I2C_Start;    Soft_I2C_Write0x90;    Soft_I2C_Write0x01;    Soft_I2C_Write%01100000;    Soft_I2C_Stop;  clrwdt;  while 1 do    begin     s1:=s1+1;     if set_ss>200 then  begin set_ss:=90; set_mm:=set_mm-1; end;     if set_mm>200 then begin set_ss:=0; end;     if set_mm>99 then set_mm:=0;     if set_ss>90 then begin set_ss:=0; set_mm:=set_mm+1; end;     if rezim>0 then       begin         if testbits1,0=1 then           begin             dig1:=maskset_ss div 10;             dig2:=maskset_mm mod 10;             dig3:=maskset_mm div 10;           end           else                 begin              dig1:=2;              dig2:=2;              dig3:=2;            end;       end       else       begin         delay1;         delay1;         clearbitintcon, gie;         Read_T;         setbitintcon, gie;         s2:=m1rs shr 4;         dig1:=masks2;         dig2:=maskrm mod 10;         dig3:=maskrm div 10;         Temp:=te1rm, rs;         Temp_set:=te1set_mm, set_ss;         if Temp<temp_set-2 then setbitporta,2;         if Temp>temp_set+2 then clearbitporta,2;       end;       delay1;    end;end.
Скачать архив.

Сайт проекта Здесь.  



Похожие статьи

 Устройства чтения СИМ карт
 Миниатюрный радиопередатчик с питанием от батареи для карманных часов
 Реле времени ВЛ 64
 Мелодичный квартирный звонок
 


Сайт является частным собранием материалов и представляет собой любительский информационно-образовательный ресурс. Вся информация получена из открытых источников. Администрация не претендует на авторство использованных материалов. Все права принадлежат их правообладателям