Termostat pentru attiny2313 și ds18b20

În acest articol voi vorbi despre asamblarea unui termostat digital, care ar măsura temperatura și va menține temperatura la un anumit nivel predeterminat. Cineva de la serviciu mi-a aruncat sarcina de a asambla un termostat pentru a controla și a menține în limitele stabilite temperatura apei calde, care este alimentată în spațiile casnice. Atunci vom decide!
Deodată sa decis să se asambleze un dispozitiv digital. Acum a apărut întrebarea care tip de senzor termic să se aplice? Deoarece temperatura este controlată în rezervor, în care încălzitorul și precizia speciala aici nu este necesară, iar temperatura nu este mare, acesta este abandonat imediat termocuple și rezistive în primul rând, destul de scump acestea necesită complicate de intrare a dispozitivului (termocuplu - compensare termo-ED a capetelor reci, pentru rezistenta termica - compensarea rezistentei liniei de conectare). Apoi mi-am amintit de senzorii digitali de temperatură din Dallas (acum MAXIM). Odată am lucrat mult timp cu senzorul DS1821. DS1821 poate funcționa în modul termometru sau în modul termostat. În primul dintre aceste moduri, DS1821 asigură o măsurare a temperaturii în intervalul -55 ... + 125 ° C cu o rezoluție de 1 ° C. Cel mai atractiv este faptul că un astfel de termometru calibrat în fabrică deja garantată de precizia + 1 ° C în intervalul 0 .. + 85 ° C și + 2 ° C în toată gama de temperaturi de funcționare. Pe ea am realizat termostate simple cu o limită superioară și inferioară de funcționare. Dar, în această situație, am nevoie de un dispozitiv ușor de reglabil pentru o valoare diferită a intervalelor de temperatură. Și acest senzor trebuie reprogramat pentru o gamă diferită. Oricum, voi scrie un articol despre acest senzor, este destul de interesant! Acest senzor poate fi, de asemenea, facut sa functioneze ca un termometru, dar alegerea mea a cazut pe una mai noua din aceasta familie DS18B20.

Termostat pentru attiny2313 și ds18b20

DS18B20 - termometru digital cu rezoluție programabilă de 9 până la 12 biți, care pot fi stocate în memoria EEPROM pribora.DS18B20 comunică bus 1-Wire, și astfel, poate fi un singur dispozitiv pe linie, iar lucrul în grup. Toate procesele din magistrală sunt controlate de un microprocesor central.
Intervalul de măsurare este de la -55 ° C la + 125 ° C și o precizie de 0,5 ° C în intervalul de la -10 ° C la + 85 ° C. În plus, DS18B20 poate fi alimentat de o tensiune de linie de date ("parazit power"), în absența unei surse de tensiune externa.
Fiecare DS18B20 are un cod serial unic pe 64 de biți care vă permite să comunicați cu o varietate de senzori DS18B20 montați pe o singură magistrală. Acest principiu permite ca un microprocesor să fie utilizat pentru a controla un număr de senzori DS18B20 distribuite pe o suprafață mare. Domeniu de funcționare a senzorului și precizia mea
chiar foarte aranjat și pentru viitor este posibil ca senzorul să-l livreze este necesar, aici totul este simplu. Pentru schimbul de date, termometrul DS18B20 utilizează un protocol 1-Wire (protocol cu ​​un singur fir). Acesta este un protocol de comunicații seriale bidirecționale bidirecționale cu viteză redusă, care utilizează doar un singur cablu de semnal. Firește, de asemenea, este nevoie de un fir de retur (pământ). Există mai multe tipuri de semnale, anumite protocol 1-Wire - reset puls, puls prezență, scrie 0, scrie 1, lectură și de lectură 0 1 Toate aceste semnale cu excepția prezenței pulsului, sunt formate pe dispozitivul master bus - MASTERom. În cazul nostru este un microcontroler. Principiul formării semnalului este același în toate cazurile. În starea inițială, o magistrală cu fir cu rezistor este trasă până la puterea plus. Dispozitivul gazdă „nu“ timp definit 1-Wire bus la zero, apoi „da drumul“ de ea și, dacă este necesar, „ascultă“ slave răspuns (SLAVE) dispozitiv. În cazul nostru, sclavul este un termometru DS18B20.
Diagramă bloc DS18B20 (DS18S20, DS1820)

Termostat pentru attiny2313 și ds18b20

Schemă de conectare cu sursă de alimentare externă a senzorului

Este posibil să conectați mai mulți senzori în paralel.
Schema de conectare a encoderului DS18B20 în modul fals
Termostat pentru attiny2313 și ds18b20

Pinul Vdd este conectat la GND, iar magistrala 1-Wire este conectată suplimentar la sursa de alimentare prin FET.
Când traductorul DS18B20 efectuează conversia temperaturii sau copiază datele de la memoria RAM la memoria EEPROM, consumă un curent de până la 1,5 mA. Acest curent poate cauza o cădere de tensiune inacceptabilă pe magistrala 1-Wire. Pentru a evita acest lucru, o magistrală de 1 fir este conectată la sursa de alimentare pe durata acestor operațiuni. Pentru aceasta este nevoie de un tranzistor cu efect de câmp. Puteți face acest lucru fără un tranzistor, dar, de exemplu, atunci când cablul de conectare este lung, pot apărea defecțiuni și munca nu va fi stabilă.
Senzorul este selectat, acum vă puteți gândi la schema aparatului pentru colectarea datelor de la senzor, indicație și control al sarcinii.
Schemele de termostate de pe Internet sunt multe, așa că nu am inventat roata, dar am luat circuitul de aici

Termostat pentru attiny2313 și ds18b20

E mai mare
Schema este destul de simplă, nimic inutil, indicat și controlat convenabil.
Schema modificată ușor. În loc de un releu care comută sarcina plasat pe optocuplor de asamblare MOC3041 și triacul T122-25, care va include un încălzitor.
Apăsați butoanele "+" și "-" pentru a seta pragul de temperatură mai scăzut. În modul de schimbare, "t" este afișat înaintea temperaturii.
Termostat pentru attiny2313 și ds18b20

Dacă ambele butoane sunt apăsate simultan, termostatul intră în modul de setare dt (temperatura delta). Implicit este 1, adică Dacă setăm temperatura la 30 de grade cu butoanele "+" și "-", temperatura va fi menținută între 30 și 31 de grade. Dacă dt este setat la 2, atunci temperatura va fi menținută între 30 și 32 de grade.
Termostat pentru attiny2313 și ds18b20

Dacă nu apăsați nici un buton timp de 5 secunde, afișajul revine la afișajul temperaturii măsurate.
În modul de măsurare a temperaturii, indicatorul afișează temperatura măsurată curent, iar în primul segment simbolul "L" indică sarcina activată. De exemplu:
- temperatura setata la 30 de grade, delta 1 grad, temperatura masurata 27.0 grade. Se va afișa indicatorul
Termostat pentru attiny2313 și ds18b20

- setarea temperaturii 30 grade, delta 1 grad, temperatura măsurată 32,0 grade. Se va afișa indicatorul
Termostat pentru attiny2313 și ds18b20

De asemenea, acest termostat poate fi folosit pentru un frigider, numai ieșirea la servomotor ar trebui să fie luată de la ieșirea de la 6 microcontroler.
Deoarece termostatul vă permite să setați temperatura la 125 de grade, dar acest lucru nu este necesar pentru mine, și care ar putea dori să poklatsat butoane pentru naklatsaet intiresa și temperatura apei de 90 de grade, sa decis să limiteze intervalul de la 0 la 60 de grade. Pentru a face acest lucru, pe același site există un proiect în CodeVisionAVR, deschideți-l, în fișierul kbd.c găsim următorul cod
dacă (T_LoadOn> 450)
T_LoadOn -;
RefreshDisplay ();
>
Aceasta este limita inferioară a temperaturii setate. Fișierul thermostat_led.c are explicații privind forma reprezentării temperaturii
// temperatura este reprezentată pentru comoditate după cum urmează:
// - până la 1000 = negative
// - 1000 = 0
// - mai mult de 1000 = pozitiv
// - 0,1 ° C = 1
// ---------------------------------
// - 55 ° C = 450
// - 25 ° C = 750
//10.1°C = 899
// 0 ° C = 1000
//10.1°C = 1101
// 25 ° C = 1250
// 85 ° C = 1850
// 125 ° C = 2250
Ie 450 este -55 grade (1000-550 = 450), și am nevoie de 0 grade. Apoi, 0 grade va fi 1000.
Schimbarea codului
dacă (T_LoadOn> 1000)
T_LoadOn -;
RefreshDisplay ();
>
Acum, să ne uităm la limita superioară
dacă (T_LoadOn <(2250 — DeltaT))
T_LoadOn ++;
RefreshDisplay ();
>
Aici numărul 2250 este limita superioară de temperatură de 125 de grade (1000 + 1250 = 2250), și am nevoie la 60 de grade, apoi 1000 + 600 = 1600
Modificați codul și obțineți
dacă (T_LoadOn <(1600 — DeltaT))
T_LoadOn ++;
RefreshDisplay ();
>
Apoi, faceți clic pe butonul CodeVisionAVR pentru a realiza proiectul și a lua fișierul finit pentru firmware. Este atât de simplu. Termostatul este asamblat pe o placă cu circuite imprimate. Indicatorii pentru indicarea dinamică la acel moment nu au fost găsiți, erau disponibili numai pentru statica duală. A fost necesar să se pună sub ei o batistă separată pentru ei, pe aceeași placă sunt rezistoarele de limitare a curentului (SMD)
Termostat pentru attiny2313 și ds18b20

Termostat pentru attiny2313 și ds18b20

Acesta este întregul termostat în sine. Totul a fost plasat pe baza unui material izolator. Unitatea de alimentare a folosit un impuls gata de la punctul de acces Wi-Fi. Toate acestea vor fi instalate într-un panou electric. Triacul sta singur pe un mic radiator.
Termostat pentru attiny2313 și ds18b20

Termostat pentru attiny2313 și ds18b20

Termostat pentru attiny2313 și ds18b20

Acesta este întregul design. În lucrare sa arătat fiabil, nu au existat eșecuri.
fișiere
Firmware pentru indicatori cu anod comun
Firmware pentru indicatori cu catod comun
sursă
Fișa tehnică pentru DS18B20

Da, nu funcționează rău.
PS. cum pot adăuga o fotografie?

Termostat pentru attiny2313 și ds18b20

introduceți o legătură directă cu fotografia

Termostat pentru attiny2313 și ds18b20

I pentru cazan, proiectat un dispozitiv similar.

Spune-mi ce fel de programator a fost cusut și care prog?
ce fusi sa punem?

Termostat pentru attiny2313 și ds18b20

Iată siguranțele:

Termostat pentru attiny2313 și ds18b20

A cusut programatorul STK200 / 300 în programul CodeVision AVR

Ouu.tupanul fyuzy not vyshavil.pospesil.teve a afișat acum o eroare de comunicare.
cant și nici kranty zapisat.MK șterge sau poate restaura într-un fel (șterge și bliț din nou) .și dacă nuanțele kakieto în crearea de programe încă mai trebuie să părăsească toate proshivki.ili mine umolchaniyu.U astfel încât frecvența ATTiny2313 de 4 MHz, tipul program.Kanda. STK200 + \ 300, LPT1 378h, întârziere 1, stăncuța în valoare de ATmega169.

Termostat pentru attiny2313 și ds18b20

Articole similare