Повеќеканален термостат на arduino uno. Вентилатор користејќи Arduino, што зависи од температурата. Компоненти на PID контролер

Шематскиот дијаграм на домашен четириканален термостат со температурен приказ, изграден врз основа на Arduino UNO, LM325 и со дисплеј 1602A, ви овозможува да контролирате четири одделни товари.

Овде опишуваме надградена верзија на уредот, кој покрај пасивното мерење и означување на температурата, може да контролира и четири грејачи со цел да се одржи поставената температура на четири различни места, каде што во првата верзија беше можно само мерење на температурата.

Работата на четириканален термометар и неговата програма се детално опишани во претходната статија (L.1), така што овде ќе зборуваме само за промени за спроведување на работата на четириканален термостат.

Шематски дијаграм

Шематскиот дијаграм е прикажан на Сл. 1.

Ориз. 1. Шематски дијаграм на термостат на Arduino UNO, LM325 со 1602A дисплеј.

За разлика од првото коло (L.1), овде има четири транзисторски прекинувачи натоварени на намотките на релето K1-K4, кои контролираат четири различни уреди за греење (H1-H4). Контролните команди за овие клучеви доаѓаат од четири дигитални порти D9-D12 на плочката ARDUINO UNO.

Програма

Програмата е прикажана во Табела 1.

Табела 1.

Првата разлика е во тоа што се обезбедени порти за контрола на грејачите. Ова се портите D9-D12, тие се наведени овде:

pinMode (12, OUTPUT);

pinMode (11, OUTPUT);

pinMode (10, OUTPUT);

pinMode (9, OUTPUT);

Можете да изберете други бесплатни дигитални порти; по поврзувањето на индикаторот, остануваат уште D8 и D13. Но, авторот ги избра овие: D9, D10, D11, D12. Втората разлика е во тоа што функцијата ако споредувач се користи за контрола на грејачите. Во редови:

ако (темп< -15)digitalWrite(12, HIGH);

if(temp > -15)digitalWrite(12, LOW);

ако (темпи< 1)digitalWrite(11, HIGH);

ако (темпи > 1)дигитално Запишете (11, НИСКО);

ако (темп2< 20)digitalWrite(10, HIGH);

if(temp2 > 20)digitalWrite(10, LOW);

ако (темп3< 10)digitalWrite(9, HIGH);

if(temp3 > 10)digitalWrite(9, LOW);

Овие линии покажуваат на која температура, кое логично ниво треба да биде на соодветната порта. На пример, ако температурата на првиот сензор (T1) е под -15°C, ќе има логична на портата D12. Кога температурата на вториот сензор (T2) е под 1°C, ќе има логична на портата D11.

Кога температурата на третиот сензор (TZ) е под 20°C, ќе има логична на портата D10. Кога температурата на четвртиот сензор (T4) е под 10°C, ќе има логична на портата D9. Се разбира, можете да поставите сосема различни температури - сите што се потребни за специфичната примена на овој уред.

Покрај тоа, веќе во готовиот уред, тие можат лесно да се менуваат доколку е потребно. За да го направите ова, треба да поврзете персонален компјутер на USB-портата на плочата ARDUINO UNO и да вчитате програма со други податоци за температурните прагови. Во принцип, за ова можете да обезбедите USB конектор на телото на готовиот уред.

Вообичаено, во „типичен“ термостат постои јамка за хистереза, односно коло што создава разлика помеѓу температурата на која се вклучува грејачот и температурата на која се исклучува. Ова е неопходно за грејачот да не се вклучува/исклучува многу често. Ова е особено важно ако грејачот се контролира со електромагнетно реле.

Бидејќи контактите на релето не се дизајнирани за овој начин на работа и може брзо да не изгорат поради искри. Но, хистерезата воведува грешка во работата на термостатот. Овде беше одлучено да не се создава хистереза, туку да се осигура дека контактите на релето не се префрлаат премногу често, едноставно забавете ја работата на уредот. За да го направите ова во линијата:

Времето на прикажување е зголемено на три секунди. Како резултат на тоа, мерењата се повторуваат со период од три секунди, и во секој случај, релето не може да се префрли повеќе од еднаш на секои три секунди.

Детали

Секое електромагнетно реле K1-K4 може да се користи со намотки од 12V и контакти доволно моќни за контрола на специфичните грејачи.

Излезни фази може да се направат со користење на други кола, на пример, со користење на опто-мистори. Во овој случај, LED диодите на оптосимиторите или таканаречените „релеи во цврста состојба“ се поврзани со соодветните порти на плочата ARDUINO UNO преку отпорници со ограничување на струјата.

Karavkin V. RK-08-17.

Литература: 1. Karavkin V. - Четириканален термометар на ARDUINO UNO, RK-06-17.

Главната задача на контролорот на фрижидерот е да ја одржува поставената температура во комората. Температурниот регулатор ќе го направи тоа со промена на електричната енергија на модулот Peltier.

Во претходната лекција развивме регулатор на моќност. Врската помеѓу регулаторите за напојување и температура изгледа вака.

  • Температурниот регулатор ја прима измерената температура, ја споредува со поставената температура и ја пресметува поставената вредност на моќноста за контролерот за моќност.
  • Регулаторот за напојување генерира PWM што одговара на наведената моќност.

Регулаторот за напојување го изградивме според законот за интегрална регулација. За да ја стабилизираме температурата, ќе користиме покомплексен контролен алгоритам - пропорционален-интегрален-дериват (PID) контролер.

PID контролер.

Во претходната лекција детално зборував за . Тој ги истакна неговите предности и недостатоци.

Регулаторот кој работи на овој принцип има висока точност. Останатите критериуми за квалитетот на регулацијата - брзина и стабилност - не се на ниво.

За да се постигнат високи перформанси за сите критериуми, неопходно е да се користи регулатор кој комбинира различни регулаторни закони.

Контролерот со пропорционален-интегрален дериват (PID) е токму таков уред. Тој генерира излезен сигнал кој е збир од три компоненти со различни преносни карактеристики. Благодарение на ова, PID контролерот обезбедува висок квалитетрегулатива и ви овозможува да го оптимизирате управувањето според поединечни критериуми.

Следниве се вклучени во генерирањето на излезниот сигнал на PID контролерот:

  • Пропорционална компонента- вредноста е пропорционална на грешката на несовпаѓање (разликата помеѓу наведените и реалните вредности на контролираниот параметар).
  • Интегрирачка компонента– интеграл за грешка на несовпаѓање.
  • Диференцирачка компонента– извод на грешката на несовпаѓање.

Математичката форма на пишување на законот за PID контролер е:

o(t) = P + I + D = K p e(t) + K i ∫e(t)dt + K d de(t)/dt

  • o(t) – излезен сигнал;
  • P – пропорционална компонента;
  • I – интегрирана компонента;
  • Г – диференцирачка компонента;
  • Kp, Ki, Kd – коефициенти на пропорционални, интегрирани, диференцирачки врски;
  • e(t) – грешка во несовпаѓање.

Во шематски облик, PID контролерот може да биде претставен на следниов начин.

Блок-дијаграмот на PID напонскиот регулатор U изгледа вака.

  • Измерениот напон Ureal(t) се одзема од дадениот Uset.
  • Резултирачката грешка на несовпаѓање e(t) се внесува во пропорционалните, интегрирани и диференцирачки врски.
  • Како резултат на збирот на компонентите се добива контролно дејство o(t), кое се применува на контролниот елемент.

При имплементирање на PID контролер во софтвер, пресметките на излезниот сигнал се случуваат во редовни интервали. Оние. Контролорот е дискретен во времето. Затоа, понатаму ќе користам изрази: претходна состојба на сигналот, претходна вредност итн. Зборуваме за состојбата на системот во претходната точка на земање примероци.

Компоненти на PID контролер.

Повторно. Излезниот сигнал на PID контролерот е збир од три компоненти:

  • пропорционална;
  • интегрирање;
  • диференцирање.

Пропорционална компонента.

P(t) = K p * e(t)

Нема меморија, т.е. вредноста на излезниот сигнал не зависи од претходната состојба на системот. Едноставно следната грешка, помножена со фактор, се пренесува на излезот. Излезниот сигнал го компензира отстапувањето на контролираниот параметар. Колку е поголема грешката на несовпаѓање, толку е поголем сигналот. Ако грешката е 0, излезниот сигнал е исто така 0.

Пропорционалната компонента не е во состојба целосно да ја компензира грешката. Ова може да се види од формулата. Излезниот сигнал е Kp повеќе од грешката. Ако грешката на несовпаѓање е 0, тогаш излезниот сигнал на контролорот е 0. И тогаш нема со што да се компензира.

Затоа, во пропорционалните контролери секогаш постои таканаречена статичка грешка. Може да се намали со зголемување на коефициентот Kp, но тоа може да доведе до намалување на стабилноста на системот, па дури и до самоосцилации.

Недостатоците на пропорционалните контролери вклучуваат:

  • присуство на статичка регулациона грешка;
  • ниска стабилност со зголемување на коефициентот.

Постои значителна предност:

  • Регулација на голема брзина. Одговорот на пропорционален контролер на следната грешка е ограничен само со времето на земање примероци на системот.

Регулаторите кои работат само според пропорционалниот закон ретко се користат.

Главната задача на пропорционалната компонента во PID контролерот е да ги зголеми перформансите.

Интегрирачка компонента.

I(t) = K i ∫e(t)dt

Пропорционално на интегралот на грешката на несовпаѓање. Земајќи ја предвид временската дискретност на контролорот, можеме да го напишеме ова:

I(t) = I(t -1) + K i * e(t)

  • I(t-1) – вредност на I во претходната точка на земање примероци.

Грешката на несовпаѓање се множи со коефициент и се додава на претходната вредност на врската за интегрирање. Оние. излезниот сигнал се акумулира цело време и го зголемува неговото влијание врз објектот со текот на времето. Така, грешката на несовпаѓање целосно се компензира дури и за малите вредности на грешката и коефициентот Ки. Во стабилна состојба, излезниот сигнал на контролорот е целосно обезбеден од интегрираната компонента.

Недостатоците на интегралниот регулатор вклучуваат:

  • ниски перформанси;
  • просечна стабилност.

Достоинство:

  • Способност целосно да се компензира грешката во несовпаѓање при која било добивка.

Во пракса, често се користат интегрирани контролери (само интегрирана компонента) и пропорционално интегрирани контролери (интегративни и пропорционални компоненти).

Главната задача на интегрираната врска во PID контролерот е да ја компензира статичката грешка и да обезбеди висока точност на контролата.

Диференцирачка компонента.

D(t) = K d de(t)/dt

Пропорционално на стапката на промена на следната грешка. Еден вид индикатор за забрзување на грешката на несовпаѓање. Диференцирачката компонента предвидува отстапувања на контролираниот параметар во иднина и се спротивставува на ова отстапување. Како по правило, компензира за доцнење на влијанието на регулаторот врз објектот и ја зголемува стабилноста на системот.

Земајќи ја предвид временската дискретност на контролорот, диференцирачката компонента може да се пресмета на следниов начин:

D(t) = K d * (e(t) - e(t -1))

Покажува колку вредноста на грешката за несовпаѓање се променила во текот на една временска единица на дискретноста на контролорот.

Не постојат регулатори кои се состојат од единствена диференцирачка врска.

Главната задача на диференцирачката врска во PID контролерот е да ја зголеми стабилноста.

Поставување на PID контролер.

Квалитетот на контролата на PID контролерите во голема мера зависи од тоа колку оптимално се избрани коефициентите. Коефициентите на PID контролерот се одредуваат во пракса во систем со реален објект со селекција. Постојат различни методи за поставување. Ќе зборувам само за општи принципи.

Квалитетот на регулацијата се оценува според минливиот одговор на регулаторот. Оние. според графикот на промените на контролираниот параметар со текот на времето.

На традиционалните точки од секвенцата за подесување на PID контролерот, би додал дека, пред сè, потребно е да се одлучи кои критериуми за квалитет на контролата се претпочитани.

Во претходната лекција, при дизајнирање на регулатор за моќност, првенствено бевме заинтересирани за точноста и стабилноста. Па дури и вештачки ги намаливме перформансите. Некои регулатори работат во услови на значителен шум и поважна им е стабилноста, додека други бараат високи перформанси дури и на сметка на точноста. Критериумите за оптимизација може да варираат. Општо земено, PID контролерите се конфигурирани да гарантираат дека сите критериуми за квалитет на контролата се на високо ниво.

Компонентите на PID контролерот се конфигурирани посебно.

  • Интегрирачките и диференцирачките врски се исклучуваат и се избира коефициентот на пропорционална врска. Ако контролорот е пропорционално интегриран (нема диференцирачка врска), тогаш се постигнува целосно отсуство на осцилации во минливиот одговор. Кога го поставувате контролерот на голема брзина, може да останат осцилации. Диференцирачката врска ќе се обиде да ги компензира.
  • Врската за разликување е поврзана. Неговиот коефициент има за цел да ги елиминира флуктуациите во контролниот параметар. Ако ова не успее, тогаш намалете го пропорционалниот коефициент.
  • Поради врската за интегрирање, преостанатата грешка на несовпаѓање е отстранета.

Подесувањето на PID контролерот има итеративен карактер. Оние. поени за избор на коефициенти може да се повторуваат многу пати додека не се постигне прифатлив резултат.

Поради нивните високи перформанси и разновидност, PID контролерите се широко користени во системите за индустриска автоматизација.

Во следната лекција ќе развиеме PID контролер за температура.

Тој ќе го сподели со вас своето искуство за создавање на паметен контролер за ротација на вентилаторот, користејќи термички сензор, LCD дисплеј и, се разбира, Arduino.

Пред неколку месеци прочитав голем број написи за Arduino и станав многу заинтересиран за овој уред, а наскоро решив да го купам. Треба да се напомене дека јас сум далеку од микроелектроника, па ми се допадна плочата првенствено поради нејзината релативна леснотија на користење. Посетувајќи се со LED диоди и системите „Hello world“, сакав да направам нешто практично, а во исто време да се запознаам повеќе со можностите на Arduino. Имајќи го предвид невообичаено топлото лето во 2010 година, се појави идејата да се состави поладен контролер за брзина во зависност од температурата со сите поврзани карактеристики прикажани на LCD-екранот. Се надевам дека оваа шема или нејзините варијации ќе бидат корисни за некого, па решив да ги објавам моите скици.

За оваа шема ќе ни требаат:

  • Всушност самата табла Ардуиноили слично;
  • Даска за лебза склопување на компоненти на колото;
  • Екран WH1601A-NGG-CT со вклучен отпорник за отсекување 20 kOhmили слично;
  • Отпорници - 220 Ом, 10 kOhm, 4,7 kOhm;
  • Биполарен транзистор SS8050Dили слично;
  • Дигитален сензор за температура DS18B20;
  • Диода 1N4148или еквивалентно;
  • Вентилатораксијален три-жица (12V), на пример - компјутер;
  • Џек конектор исхрана 2,1/5,5 мм.

Кулерот на компјутерот има три жици, од кои две - црвена (+12V) и црна (GND) се користат за напојување, а третата (жолта) е поврзана со тахометар изграден на елемент на Хол. За жал, 5V од плочата очигледно не ни се доволни, но 6 Arduino дигитални излези можат да работат во PWM режим (на самата плоча се означени со бели квадрати или буквите PWM), за да можеме да го регулираме снабдувањето со сигнал од плочата до релето, кое ќе биде одговорно за промената на напонот доставен до вентилаторот.

Ќе добиеме информации за вртежи од третата жица од тахометарот, користејќи изменет метод заснован на имплементацијата прекинува, што за повеќето Arduinos може да дојде до дигитални пинови 2 (прекин 0) и 3 (прекин 1). Инаку, Arduino Mega има 4 дополнителни пинови со можност за примање прекини.

Сега треба да поставите позиција дигитален сензор за температура, чии податоци ќе ги користиме за регулирање на напонот доставен на дигиталниот излез со PWM, а со тоа и за „отворање“ на напонскиот канал на вентилаторот. Далас сензорите имаат своја Arduino библиотека - DallasTemperature, која подоцна ќе ја поврземе во скицата. Библиотеката мора да се отпакува во директориумот arduino-0018/libraries/.

Последното нешто што останува е поврзете LCD екран, каде што ќе ги прикажеме сите моментални информации за температурата и брзината на вентилаторот. Бидејќи го користев екранот WH1601A за изградбата, може да има познати проблеми со прикажувањето на линиите. За да ги елиминираме, ќе ја користиме библиотеката LiquidCrystalRus, која исто така мора да се отпакува во директориумот arduino-0018/libraries/.

//Поврзете ја библиотеката за сензорот за температура#вклучи //Поврзете ја библиотеката за LCD екран#вклучи #define PowerPin 9 // пин за контрола на моќноста на вентилаторот#define HallSensor 2 // пин за сензор за брзина на вентилаторот (прекин)#define TempPin 7 // пин за сензор за температура LiquidCrystalRus lcd(12, 11, 10, 6, 5, 4, 3); //Поврзете го сензорот за температура на LCD Dallas; int NbTopsFan, Calc, fadeValue; //целобројни променливи за пресметкиплови темперамент; //реална променлива за температура за складирање typedef struct( // Воведување нов тип на променливи за навивачите char fantype; непотпишан int fandiv; )fanspec; //Низа променливи од нов тип fanspec fanspace=((0,1),(1,2),(2,8)); //Променлива одговорна за избор на тип на сензор за вентилатор (1 – униполарен Хол сензор, 2 – биполарен Хол сензор)вентилатор char = 2; //Оваа функција ќе се повикува секогаш кога ќе прекинеме void rpm() (NbTopsFan++;) // Функција за пресметување на применетиот напон на дигитален пин со PWM void temp() ( fadeValue = min(int(temper*7),255); // Помножете ја температурата со коефициентот, // земете цел број од производот } // Затоа што максималната вредност на PWM е 255, тогаш нема смисла да снабдувате повеќе - земете минимум двапразнина поставување() (tempSensor.begin(TempPin); //Вклучете го сензорот за температура lcd.begin(16, 2); //Поставете ги карактеристиките на LCD екранот lcd.setDRAMModel(LCD_DRAM_WH1601); //И тип на дисплеј pinMode (HallSensor, INPUT ); // Конфигурирај пин да прима прекиниприкачиИнтерруп(0, вртежи во минута, RISING); //Го врзуваме прекинот број 0 за нашата функција и тој ќе се пресметува секогаш кога ќе се промени сигналот) празнина јамка() ( темперамент = tempSensor.getTemperature(); // Добијте ја температурата temp(); // Пресметајте го испорачаниот напон на PWM analogWrite (PowerPin, fadeValue); // Нахрани го NbTopsFan = 0; // Ресетирајте ја променливата што ги содржи вртежите на нуладоцнење (1000); //Почекајте 1 секунда Calc = ((NbTopsFan * 60)/fanspace.fandiv); //Пресметајте ја вредноста на вртежи во минута за 60 секунди поделена со мултипликаторот на вентилаторот lcd.print (Calc, DEC); //Излезете ја пресметаната вредност во децимална форма lcd.print(" rpm - " ); lcd.print (темперамент); //Излезна температура lcd.home(); )

Читајќи го првиот дел од насловот, веројатно многумина од вас помислија - уште еден термостат на долготрпеливиот Arduino. И... Вистина е - да, ова е уште еден термостат за друг котел, друга куќа, но ова е само делумно точно - во написот не сакам да се концентрирам на самиот уред - навистина ги има во многу (статии ). Се разбира, ќе го опишам термостатот, но би сакал да зборувам повеќе за тоа како го поврзав самиот микроконтролер со котелот. Затоа, за оние кои се заинтересирани, ве молиме...

Како сето тоа започна

Како прво, сакам да кажам дека воопшто не сум програмер и никогаш порано не сум се занимавал со вистински микроконтролер. Моето прво познанство со AVR MK (и со МК воопшто) беше уште во средно училиште, кога сакав да знам како всушност функционира оваа мистериозна работа. Прочитав неколку статии и оттогаш имам само фрагменти во моето сеќавање што може да се опишат со само два збора - DDR и PORT - и тука заврши моето знаење. Потоа имаше универзитет, 5-та година - „Програмирање на микроконтролери“ каде сите се запознавме со MSC51 во виртуелна средина. Веќе имаше прекини, тајмери ​​и се останато. Па, со оваа количина на знаење дојдов до проблемот. Да завршиме со оваа автобиографска белешка и да преминеме на поинтересниот дел.

Значи, всушност, каде започна создавањето на термостатот - откако инсталирав автономен систем за греење со гасен котел, јас, како и многумина, наидов на вообичаените проблеми - температурата во куќата беше многу зависна од времето надвор - мраз - тоа е ладно во станот, треба да ја зголемите температурата на течноста за ладење во батериите, стана потопло - напротив. Ваквите ора со тамбура не ми одговараа многу, бидејќи ... прилагодувањето на котелот беше комплицирано од фактот што беше поставен зад врата, а вратата беше потпрена со микробранова печка, на која лежеше куп ѓубре. Па, ја разбирате идејата - игла во јајце, јајце во патка итн.

Овој проблем беше решен многу едноставно - со сензор OTC (Outside Temperature Compensation), кој е поврзан со котелот и му овозможува автоматски да ја прилагодува температурата на течноста за ладење во зависност од надворешната температура. Се чинеше дека проблемот е решен, но читањето на упатството за сервисирање на котелот (Ferolli Domiproject C24D) брзо ги прегази моите надежи - поврзувањето на надворешен сензор за температура не е предвидено во овој модел. Сите? Сите. И сега, веројатно, можевме да го завршиме, но летото, при невреме со грмотевици, контролната табла сè уште изгорува во котелот на начин што сè уште ми е нејасен, а додека разговарам со сервисерот (таблата беше подоцна поправен), прашав дали е можно да се поврзе преку шалтер со мојот бојлер? Тој одговори дека се поврзуваат со помош на надворешни термостати. Ова ми остана во меморијата, но навистина не се концентрирав на тоа додека не дојде студеното време, а потоа сè уште беше истиот проблем.

Прелистувајќи ги истите упатства за сервисирање, но со цел да видам како е поврзан термостатот, забележав дека „регулаторот OpenTherm“ е поврзан на истите терминали. Тогаш сфатив - ова е ТОА! Пребарувањето на Google за „OpenTherm Arduino“ повторно ме разочара - ништо особено разумно. Имаше монитор за пораки, но тоа не е тоа - немам што да слушам - ми треба само термостат.

Ајде прво да изградиме нешто едноставно на Arduino. ВО поглавје 12ние веќе измисливме термостати користејќи чисто аналогни компоненти. Сега да видиме како можеме да ја вклучиме дигиталната технологија во овој корисен бизнис.

Веќе споменавме (види поглавје 18), дека AVR контролерите вклучуваат 10-битен повеќеканален ADC. На таблите Arduino, неговите пинови се специјално означени како аналогни влезови (со буквата Асо броеви од нула до пет). Имајте предвид дека може да се користат и како обични дигитални со броеви од 14 до 18, а ние ќе ги користиме во овој капацитет. Ќе користиме еден од овие влезови за мерење на температурата и ќе ја контролираме врската со оптоварување од еден од дигиталните излези.

Севкупно ќе ни требаат:

□ Arduino Uno плочка (која друга ќе направи);

Имам термистор како сензор за температура. Погоден, на пример, постоечки

□ „Amperke“ В57164‑К 103‑J со номинален отпор од 10 kOhm на 25 °C - неговите карактеристики се дадени во поглавје 13како илустрација за својствата на термисторите;

□ променлив отпорник 10 kOhm, постојан отпорник 620 Ом;

□ извршно реле – електромагнетно (нужно со засилувачки транзисторски прекинувач, видете подолу) или во цврста состојба.

Модули базирани на 5-волтни електромагнетни релеи, специјално прилагодени за контрола од излезите на Arduino, се достапни за продажба. Самите електромагнетни релеи бараат прилично голема контролна струја (и колку е помоќно релето, толку е помоќно; само релеите со трска со најниска моќност можат да работат директно од логиката), затоа сите такви модули за реле мора да имаат прекинувач за засилувач на транзистор. На пример, Amperka продава таков модул базиран на релето HLS8L‑DC5V‑S‑C. Ако не сте задоволни со електромагнетно реле и се стремите кон екстремна едноставност на колото, тогаш можете да барате релеи со цврста состојба - на пример, CX240D5R од Crydom или слични со работен напон од 3-15 V се соодветни. Нивната контролна струја е околу 15 mA на 5 волти на влезот, што е прифатливо за AVR, бидејќи нивниот контролен влез може директно да се поврзе со дигиталниот излез на Arduino. Точно, на напон од 220 волти, CX240D5R не може да префрли товар со моќност поголема од еден киловат, но за оваа задача не ни треба повеќе.

Колото на термостатот на Arduino Uno е прикажано на сл. 21.2.

Ориз. 21.2. Дијаграмот на термостатот е вклучен Arduino Uno

На дијаграмот, намотката на релето K1 (со нормално отворени контакти) е конвенционално поврзана директно со дигиталниот излез на Arduino - се претпоставува дека ова е или претходно споменатото реле со цврста состојба со потребните карактеристики, или едноставно контролниот влез на завршена плоча за модул за реле. За да се следи состојбата на колото, ЛЕР се активира истовремено со грејачот. Програмата на термостатот во согласност со оваа шема е исклучително едноставна:

Вредностите на отпорниците се прилагодени на наведениот термистор B57164‑K со номинален отпор од 10 kOhm на 25 °C (103‑J). Во согласност со програмата, релето ќе работи во близина на излезната вредност на ADC од 500. Ова е приближно средината на 10-битниот опсег (целата скала е 1024 градации), т.е., оваа вредност ќе се утврди кога горниот и долниот отпорите се приближно еднакви во однос на влезот AO (напонот на овој влез тогаш ќе биде приближно 2,5 волти).

Ве молиме имајте предвид дека двете функции аконе завршувај со вообичаеното друго. За да се спречи брборење, во програмата е воведена хистереза: релето се вклучува кога вредноста на кодот ќе надмине 510 и се исклучува кога ќе падне на 490. Во меѓувреме, ќе ја задржи претходната состојба. Дваесет единици код (што е во поглавје 12се јавивме мртва зона) одговараат на приближно 10 миливолти, т.е. хистерезата на температура во опсег од 30-40 степени ќе биде малку помала од една десетина од степенот (проверете сами со помош на Табела 13.1 од поглавје 13).

Поставувањето на температурата на одговор со помош на отпорник R2 со овие параметри е можно во опсег од приближно 22 до 96 °C. Се разбира, во пракса не е потребен толку широк опсег на прилагодување, па затоа е препорачливо да се намали вредноста на R2. Вредноста на R1 е избрана така што R1 и номиналната вредност на R2 се собираат на отпорот на термисторот при пониската вредност од саканиот температурен опсег (во согласност со Табела 13.1). За попрецизно вклопување, можете да ги калибрирате и менувате вредностите на прагот во програмата со мерење на утврдената температура со редовен термометар.

Ако користите други сензори во ова коло, не заборавајте за знакот на температурниот коефициент. Обична диода или транзистор во диодна врска (како во кола од поглавје 13) исто така имаат негативен наклон на карактеристиката, затоа за нив во програмата ќе треба само да ги промените нумеричките вредности на прагот на одговор. Но, полупроводнички сензори како TMP35 (види. поглавје 13) или едноставно термометри за отпорност на метал (како во дизајнот направен од поглавје 17) имаат позитивен температурен коефициент, така што условите за работа ќе треба да се променат. И не само промена на „повеќе“ во „помалку“ и обратно, туку и промена на односот на праговите за хистереза ​​- во новата ситуација, грејачот ќе мора да се вклучи ако вредноста е помала од помалиот праг и да се сврти исклучено ако е повеќе од поголемиот.


Врв