Formula algoritmului Bresenham pentru controlul încălzitorului. Controler de control al sobei electrice de bucătărie

Pentru a controla sarcinile inerțiale, se folosesc adesea regulatoare de putere cu tiristoare, care funcționează pe principiul alimentării sarcinii cu mai multe semicicluri de tensiune de rețea, urmate de o pauză. Avantajul acestor regulatoare este că momentele de comutare ale tiristoarelor coincid cu momentele în care tensiunea rețelei trece de zero, astfel încât nivelul de interferență radio este redus brusc. În plus, un astfel de regulator, spre deosebire de un regulator controlat în fază, nu conține elemente de prag analogice, ceea ce mărește stabilitatea de funcționare și simplifică configurația. Deoarece comutarea sarcinii are loc numai atunci când tensiunea rețelei trece de zero, porțiunea minimă de energie furnizată sarcinii este egală cu energia consumată de sarcină într-o jumătate de ciclu. Prin urmare, pentru a reduce pasul de control al puterii, este necesar să se prelungească secvența repetată a semiciclurilor. De exemplu, pentru a obține o etapă de 10%, este necesară o lungime a secvenței repetate de 10 semicicluri.

În fig. 1 (A) arată secvența de impulsuri pe electrodul de control al tiristorului pentru o sarcină de putere de 30%. După cum puteți vedea, tiristorul este deschis în primele trei semicicluri și închis în următoarele șapte. Această secvență se repetă apoi. Frecvența de comutare a unui astfel de regulator pentru orice putere mai mică de 100% este egală cu 1/10 din frecvența semiciclului. Ar fi mult mai logic să se distribuie semiciclurile în timpul cărora tiristorul este deschis uniform pe întreaga secvență. În cazul general, problema distribuției uniforme a oricărui număr de impulsuri N într-o secvență de lungime M (pentru N mai mică sau egală cu M) este rezolvată de algoritmul Bresenham, care este de obicei folosit în grafica raster pentru a construi segmente înclinate. . Acest algoritm este implementat folosind aritmetica cu numere întregi, ceea ce simplifică foarte mult programarea acestuia. În fig. Figura 1 (B) arată secvența pentru aceeași putere de 30%, dar folosind algoritmul Bresenham. În acest din urmă caz, frecvența de comutare este de trei ori mai mare. Trebuie remarcat faptul că câștigul este mai vizibil cu pași mici de ajustare a puterii. De exemplu, în cazul unui pas de 1% pentru aceeași putere de 30%, câștigul va fi de 30 de ori.


Fig.2. Circuit regulator de putere

Baza regulatorului de putere (vezi Fig. 2) este microcontrolerul U1 tip AT89C2051 de la companie. Pentru alimentarea circuitului regulator, se folosește un transformator de putere mică T1, care, împreună cu utilizarea optotiristoarelor, asigură izolarea galvanică de rețea. Acest lucru face ca dispozitivul să fie mai sigur din punct de vedere electric. O altă proprietate utilă a regulatorului este că poate fi utilizat cu sarcini proiectate pentru diferite tensiuni de funcționare. Pentru a face acest lucru, este suficient să aplicați tensiunea necesară la intrarea tiristorului de la un transformator suplimentar. De exemplu, regulatorul poate fi folosit pentru a alimenta un fier de lipit de joasă tensiune. Este necesar doar ca tensiunea și curentul să nu depășească maximul admisibil pentru tiristoarele utilizate. Reglarea puterii de sarcină se realizează folosind butoanele SB1 și SB2. O apăsare scurtă a unuia dintre butoane schimbă puterea cu un pas. Când țineți apăsat butonul, are loc o schimbare monotonă a puterii. Apăsarea simultană a două butoane oprește sarcina dacă a fost pornită anterior sau pornește puterea maximă dacă sarcina a fost oprită. Pentru a indica puterea în sarcină, sunt utilizate indicatoare LED cu șapte segmente HG1 - HG3. Pentru a reduce numărul de elemente, se utilizează afișajul dinamic, care este implementat în software. Comparatorul analogic încorporat în microcontroler se leagă la tensiunea rețelei. Intrările sale prin limitatoarele R17, R18, VD1, VD2 primesc tensiune alternativă de la înfășurarea secundară a transformatorului de putere. Rolul unui limitator pentru polaritatea negativă este îndeplinit de diodele punții redresoare. Comparatorul restabilește semnul tensiunii de rețea. Comutatoarele comparatorului apar atunci când tensiunea rețelei trece de zero. Ieșirea comparatorului este interogată de software și, de îndată ce este detectată o schimbare a stării sale, un nivel de control este emis către ieșirea de control a tiristoarelor (portul microcontrolerului INT0) pentru a porni tiristoarele. Dacă semiciclul curent trebuie sărit, atunci nivelul de control nu este emis. Apoi indicatorul HG3 se aprinde timp de 4 ms. În acest moment, apăsările butoanelor sunt verificate și, dacă este necesar, valoarea curentă a puterii este modificată. Apoi tensiunea de control este îndepărtată de la tiristoare, iar indicatoarele HG1 și HG2 se aprind timp de 4 ms. După aceasta, este de așteptat o nouă schimbare a stării comparatorului în 4 ms. Dacă nu are loc nicio modificare, sistemul începe în continuare ciclul fără a fi legat de rețea. Numai în acest caz tiristoarele nu se deschid. Acest lucru se face astfel încât indicația să funcționeze în mod normal chiar și fără impulsuri care să se potrivească cu frecvența rețelei.

Acest algoritm de operare impune însă unele restricții asupra frecvenței rețelei: trebuie să aibă o abatere de la 50 Hz de cel mult 20%. În practică, abaterea frecvenței rețelei este mult mai mică. Semnalul de la portul INT0 ajunge la un comutator format din tranzistoarele VT3 și VT4, care este folosit pentru a controla LED-urile optotiristoarelor. Când semnalul RESET al microcontrolerului este activ, un nivel logic este prezent pe port. Prin urmare, zero este selectat ca nivel activ. Pentru a comuta sarcina, se folosesc două optotiristoare, conectate spate la spate. LED-urile optotiristoarelor sunt conectate în serie. Curentul LED-ului este setat de rezistența R16 și este de aproximativ 100 mA. Regulatorul poate funcționa în două moduri cu trepte diferite de reglare a puterii. Modul de operare este selectat folosind jumperul JP1. Starea acestui jumper este interogată imediat după resetarea microcontrolerului. În modul 1, treapta de ajustare a puterii este de 1%. În acest caz, indicatorul afișează numere de la 0 (0%) la 100 (100%). În modul 2, treapta de ajustare a puterii este de 10%. În acest caz, indicatorul afișează numere de la 0 (0%) la 10 (100%). Alegerea numărului de gradații 10 în modul 2 se datorează faptului că în unele cazuri (de exemplu, controlul unei sobe electrice) nu este necesar un mic pas de reglare a puterii. Dacă regulatorul este destinat să fie utilizat numai în modul 2, atunci indicatorul HG1 și rezistențele R8, R9 nu pot fi instalate. În general, regulatorul vă permite să setați în mod arbitrar numărul de niveluri de putere pentru fiecare mod. Pentru a face acest lucru, trebuie să introduceți valoarea dorită a gradațiilor pentru modul 1 în codul programului la adresa 0005H și la adresa 000BH pentru modul 2. Trebuie doar să vă amintiți că numărul maxim de gradații în modul 1 nu ar trebui să mai fie. de 127, iar în modul 2 - nu mai mult de 99 deoarece afișarea sutelor nu este posibilă în acest mod.

Cu un curent de sarcină de până la 2 A, optotiristoarele pot fi utilizate fără radiatoare. La curenți de sarcină mai mari, optotiristoarele trebuie instalate pe radiatoare cu o suprafață de 50 - 80 cm2. Când se utilizează un regulator cu o tensiune mai mică de 50 V, optotiristoarele pot fi de orice clasă de tensiune. Când se lucrează cu tensiune de rețea, clasa optotiristoarelor trebuie să fie de cel puțin 6. Ca putere poate fi utilizat orice transformator de putere mică cu o tensiune secundară de 8 - 10 V (AC) și un curent de sarcină admisibil de cel puțin 200 mA. transformator. Diodele VD3 - VD6 pot fi înlocuite cu diode KD208, KD209 sau punte redresoare KTs405 cu orice literă. Cipul stabilizator U2 tip 7805 (analog domestic KR142EN5A, KR1180EN5) nu necesită radiator. Tranzistoare VT1 - VT3 - orice p-n-p de putere redusă. Tranzistorul VT4 poate fi înlocuit cu tranzistoarele KT815, KT817 cu orice literă. Diode VD1, VD2 - orice siliciu de putere redusă, de exemplu KD521, KD522. Butoanele SB1 și SB2 - orice mici fără blocare, de exemplu PKN-159. Indicatoare HG1 - HG3 - orice șapte segmente cu un anod comun. Este de dorit doar ca acestea să aibă suficientă luminozitate. Condensatori C3, C4, C6 - orice electrolitic. Restul condensatorilor sunt ceramici. Rezistorul R16 este MLT-0,5, restul sunt MLT-0,125. Este și mai convenabil să utilizați rezistențe SMD, de exemplu, P1-12. Cipul U1 este instalat pe soclu. Dacă regulatorul este asamblat din piese reparabile și microcontrolerul este programat fără erori, atunci regulatorul nu are nevoie de ajustare. Este recomandabil doar să verificați corectitudinea conexiunii la frecvența rețelei. Pentru a face acest lucru, trebuie să sincronizați osciloscopul cu tensiunea de la rețea și să vă asigurați că impulsurile de scanare a afișajului (la pinii RXD și TXD ai microcontrolerului) sunt sincrone cu rețeaua și au dublă frecvența rețelei. Dacă, la conectarea unei sarcini, sincronizarea este întreruptă din cauza interferenței, este necesar să conectați un condensator cu o capacitate de 1 - 4,7 nf între intrările comparatorului (pinii 12, 13 ai microcontrolerului).

Puteți descărca software-ul: fișierul pwr100.bin (366 de octeți) conține firmware-ul ROM, fișierul pwr100.asm (7.106 de octeți) conține textul sursă. Bibliotecile necesare pentru traducere folosind TASM 2.76 se află în arhiva lib.zip (2.575 octeți).

Cu un pas de control al puterii de 1%, instabilitatea tensiunii rețelei este principala sursă de eroare de setare a puterii. Dacă sarcina nu este conectată galvanic la rețea, atunci este ușor să măsurați valoarea medie a tensiunii aplicate sarcinii și să utilizați un circuit de feedback pentru a o menține constant. Acest principiu este implementat în al doilea regulator. Schema bloc a dispozitivului este prezentată în Fig. 3.


Fig.3. Diagrama bloc a dispozitivului

Pentru a funcționa în modul de control automat, se folosesc două modulatoare Bresenham Br. Maud. 1 și Br. Maud. 2, care sunt implementate în software. La intrarea modulatorului Br. Maud. 1 este primit codul de alimentare necesar, care este setat cu ajutorul butoanelor de control. La ieșirea acestui modulator se formează o secvență de impulsuri care, după filtrarea prin filtrul trece-jos 1, este alimentată la una dintre intrările comparatorului. Tensiunea scoasă din sarcină este furnizată la a doua intrare a comparatorului prin filtrul trece-jos LPF 2. De la ieșirea comparatorului, un semnal de eroare de un bit este trimis la intrarea microcontrolerului, unde este filtrat digital. Deoarece filtrul digital DF funcționează sincron cu modulatoarele, se asigură suprimarea efectivă a ondulației la frecvența de repetiție a secvențelor de impulsuri de ieșire și la armonicile acestei frecvențe. De la ieșirea filtrului digital, un semnal de eroare de 8 biți este trimis către regulatorul de integrare IR. Pentru a îmbunătăți acuratețea, controlerul de integrare funcționează pe o grilă de 16 biți. Cei 8 biți inferiori ai codului de ieșire al controlerului sunt trimiși la intrarea modulatorului Br. Maud. 2, la ieșirea căreia se formează o secvență de impulsuri, furnizată pentru a controla tiristoarele.

Schema schematică a celui de-al doilea regulator este prezentată în Fig. 4.


Fig.4. Schema schematică a celui de-al doilea regulator

Acest regulator este foarte asemănător ca circuit cu cel descris mai sus, așa că este logic să ne oprim doar asupra diferențelor sale. Deoarece porturile I/O disponibile ale microcontrolerului nu erau suficiente, a trebuit să renunțăm la utilizarea comparatorului încorporat. Regulatorul folosește un comparator dublu U2 tip LM393. Prima jumătate a comparatorului este utilizată pentru a se lega la tensiunea de rețea. Datorită caracteristicilor LM393, a fost necesar să se adauge rezistența R27 la circuitul de legare, care, împreună cu R14, R15, formează un divizor de tensiune care reduce tensiunea negativă la intrările comparatorului. Unda pătrată a frecvenței rețelei de la ieșirea comparatorului este furnizată la intrarea microcontrolerului INT0. A doua jumătate a comparatorului este utilizată în bucla de feedback. Un semnal de eroare de un bit este trimis la intrarea microcontrolerului T1. La intrările comparatorului sunt instalate filtre trece-jos formate din elementele R16, C7 și R17, C8. Semnalul de la ieșirea modulatorului (pinul T0 al microcontrolerului) este furnizat la intrarea filtrului trece-jos prin divizorul R18, R19. Divizorul este necesar deoarece comparatorul nu poate funcționa cu tensiuni de intrare apropiate de tensiunea de alimentare. După divizor, impulsurile au o amplitudine de aproximativ 3,5 V. Stabilitatea amplitudinii este determinată de stabilitatea tensiunii de alimentare de +5 V, care este folosită ca referință. Tensiunea scoasă din sarcină este furnizată la intrarea altui filtru trece-jos, tot printr-un divizor format din rezistențele R20, R21. Acest divizor este selectat în așa fel încât la tensiunea nominală de rețea și puterea de sarcină de 100%, tensiunea la ieșirea filtrului trece-jos este de 3,5 V. Semnalul de la ieșirea microcontrolerului INT1 este trimis printr-un comutator tranzistor pentru a controla tiristoarele. Optotiristoarele V1 și V2, împreună cu ansamblul de diode VD11, formează un redresor controlat, care alimentează sarcina.

Butoanele de control sunt incluse diferit pentru a salva porturile microcontrolerului. Există un decalaj în ciclul de funcționare al regulatorului atunci când indicatoarele sunt oprite. În acest moment, a fost posibilă scanarea butoanelor folosind liniile acestor indicatori. Astfel, cele trei butoane folosesc suplimentar o singură linie: aceasta este linia de întoarcere P3.7. Al treilea buton a fost necesar pentru a controla modul „AUTO”. Imediat după pornire, regulatorul este în modul manual, adică. corespunde funcțional controlerului descris mai sus. Pentru a activa modul de control automat, trebuie să apăsați simultan butoanele „AUTO” și „SUS”. LED-ul „AUTO” se aprinde. În acest mod, regulatorul menține automat puterea setată. Dacă acum apăsați și mențineți apăsat butonul „AUTO”, atunci pe indicatoare puteți vedea starea curentă a regulatorului (procentul de putere de ieșire care se modifică atunci când tensiunea rețelei fluctuează, astfel încât puterea să rămână neschimbată). Dacă tensiunea de la rețea a scăzut atât de mult încât nu mai este posibilă menținerea puterii, LED-ul „AUTO” începe să clipească. Puteți dezactiva modul de control automat apăsând simultan butoanele „AUTO” și „JOS”.

Când curentul de sarcină este mai mare de 2 A, optotiristoarele trebuie instalate pe un radiator. Bazele optotiristoarelor sunt conectate la anozi, astfel încât în ​​acest circuit dispozitivele pot fi montate pe un radiator comun, care este conectat la firul comun al dispozitivului. Ca VD11, este recomandabil să folosiți un ansamblu de diode Schottky (sau două diode Schottky separate, de exemplu KD2998). Ca ultimă soluție, puteți utiliza diode convenționale care permit curentul de sarcină necesar. Rezultate bune pot fi obținute cu KD2997, KD2999, KD213. Comparatorul LM393 este produs de software-ul Integral sub denumirea IL393. De asemenea, puteți utiliza două comparatoare separate, de exemplu LM311 (aka KR554CA3). În loc de tranzistorul KP505A (fabricat de uzina Tranzistor, Minsk), puteți utiliza tranzistorul bipolar KT815, KT817 prin adăugarea unui rezistor de 1 Kom în serie la circuitul colector VT3. Cerințele pentru alte părți sunt aceleași ca și pentru regulatorul descris mai sus. Pentru a configura regulatorul, trebuie să conectați o sarcină la acesta și să aplicați tensiunea nominală de rețea (de exemplu, folosind LATR). Apoi trebuie să setați puterea maximă (100%). Folosind rezistența de reglare R21, este necesar să se realizeze o diferență de tensiune la intrările 5 și 6 ale comparatorului U2B aproape de zero. După aceasta, trebuie să reduceți puterea la 90% și să activați modul „AUTO”. Prin reglarea R21, este necesar să se realizeze o coincidență (cu o precizie de ±1 unitate) a puterii instalate și a citirilor indicatorului în modul de control al stării regulatorului (cu butonul „AUTO” apăsat).

Puteți descărca software-ul: fișierul pwr100a.bin (554 octeți) conține firmware-ul ROM, fișierul pwr100a.asm (10.083 octeți) conține textul sursă. Bibliotecile necesare pentru traducere folosind TASM 2.76 se află în arhiva lib.zip (2.575 octeți).

Lista radioelementelor

Desemnare Tip Denumire Cantitate NotăMagazinBlocnotesul meu
Opțiunea 1.
U1 MK AVR pe 8 biți

AT89C2051

1 La blocnotes
U3 Regulator liniar

LM7805

1 La blocnotes
VT1-VT3 Tranzistor bipolar

KT3107V

3 La blocnotes
VT4 Tranzistor bipolar

KT972A

1 La blocnotes
V1, V2 Optocupler tiristorTO125-12,5-62 La blocnotes
VD1, VD2 Dioda redresoare

1N4148

2 La blocnotes
VD3-VD6 Dioda redresoare

FR157

4 La blocnotes
C1, C2 Condensator33 pF2 La blocnotes
C3 1 µF1 La blocnotes
C4 Condensator electrolitic33 uF1 La blocnotes
C5 Condensator0,1 uF1 La blocnotes
C6 Condensator electrolitic1000 µF 25 V1 La blocnotes
R1-R9 Rezistor

200 ohmi

9 La blocnotes
R10, R11 Rezistor

4,7 kOhm

2 La blocnotes
R12-R15, R17, R18 Rezistor

10 kOhm

6 La blocnotes
R16 Rezistor

51 ohmi

1 0,5 W La blocnotes
ZQ1 Rezonator cu cuarț12 MHz1 La blocnotes
SB1, SB2 Buton 2 La blocnotes
JP1 Săritor 1 La blocnotes
HG1-HG3 Indicator cu LEDELC36143 La blocnotes
T1 Transformator5 W 9-12 volți1 La blocnotes
S1 Intrerupator 1 La blocnotes
FU1 Siguranță0,315 A1 La blocnotes
Opțiunea 2.
U1 MK AVR pe 8 biți

AT89C2051

1 La blocnotes
U2 Comparator

LM393

1 La blocnotes
U3 Regulator liniar

LM7805

1 La blocnotes
VT1-VT3 Tranzistor bipolar

KT3107V

3 La blocnotes
VT4 tranzistorKP505A1 La blocnotes
V1, V2 Optocupler tiristorTO125-12,5-62 La blocnotes
VD1-VD5 Dioda redresoare

1N4148

5 La blocnotes
VD6 Dioda electro luminiscenta 1 La blocnotes
VD7-VD10 Dioda redresoare

FR157

4 La blocnotes
VD11 Dioda Schottky

MBR3045CT

1 La blocnotes
C1, C2 Condensator33 pF2

Introducere În producție (în sistemele de control automate) și în viața de zi cu zi, este adesea necesar să se controleze puterea furnizată sarcinii. În mod obișnuit, sarcina funcționează pe curent alternativ. Prin urmare, sarcina este ceva mai complicată în comparație cu reglarea puterii unei sarcini care funcționează la o tensiune constantă. Când sarcina funcționează la o tensiune constantă, se folosește modularea lățimii impulsului (PWM) și, prin modificarea ciclului de lucru, puterea furnizată sarcinii se modifică, de asemenea, în consecință. Dacă utilizați controlul PWM pentru a regla puterea într-o rețea de curent alternativ, comutatorul prin care reglați semnalul (de exemplu, un triac) se va deschide și va trece părți ale sinusoidului cu putere diferită în sarcină. Baza elementului și ansamblul regulatorului Fig. 1. Schema circuitului electric al regulatorului Pentru implementarea acestui proiect s-au folosit: Pinboard pe un microcontroler AVR ATmega16, Philips BT138 12A triac, punte de diode DB105, optosimistor MOC3022, optocupler PC817, rezistenta 220 Ohm - 10 kOhm, potentiometru 10 kOhm. Conexiunea elementelor este prezentată în Fig. 1. Principiul de funcționare al dispozitivului Acest regulator este proiectat să funcționeze cu o sarcină activă conectată la o rețea de 220 V. Un optocupler este utilizat pentru a determina începutul fiecărei semi-undă. Astfel, la ieșirea detectorului de zero primim impulsuri pozitive scurte în momentul în care tensiunea din rețea trece prin 0. Semnalul de la detectorul de zero este conectat la intrarea externă de întrerupere a MK pentru a determina începutul unui nou semi-undă și deschideți triacul pentru timpul necesar sau pentru un anumit număr de semicicluri. Pentru a debloca triacul, tensiunea este aplicată electrodului său de control prin optosimistor față de catodul convențional. Metoda fază Cu metoda fază, schimbând valoarea întârzierii temporizatorului folosind microcontrolerul ADC (în cazul nostru, un potențiometru), modificăm în consecință întârzierea de deschidere a triacului după începerea semi-undă. Cu cât întârzierea este mai mare, cu atât partea mai mică a semi-undă va fi transmisă la sarcină și, în consecință, obținem mai puțină putere și invers. Cunoscând frecvența de ceas a microcontrolerului, se calculează întârzierea. La o frecvență a tensiunii de rețea de 50 Hz, timpul de jumătate de ciclu va fi de 0,01 secunde. Adică, dacă triacul este deschis după 0,003 secunde, aproximativ 2/3 din semi-undă va fi ratată, iar puterea va fi de 70%. Dacă triacul este deschis fără întârziere, atunci întreaga jumătate de undă va fi trecută, iar puterea de ieșire va fi de 100%. Programul a fost implementat folosind metoda controlului sarcinii de fază. Programarea a fost efectuată în C++ în mediul CodeVisionAVR. Citirile de la osciloscop pe sarcină sunt prezentate în Figura 2. Figura 2. Reglarea puterii folosind metoda fazei Calculul întârzierii pentru deschiderea unui triac Deoarece funcția de tensiune nu este liniară, adică aria de sub sinusoid în același interval de timp va fi diferită și, în consecință, puterea va fi diferită. Prin urmare, întârzierea a fost calculată ținând cont de neliniaritatea tensiunii. Figura 3 prezintă unda sinusoidală a rețelei și intervalele de întârziere calculate în tabelul 1. Sunt afișate primele cinci din o sută (procentual) de valori de întârziere. Fig.3. Ajustare prin metoda fazei Tabelul 1 Calculul întârzierilor pentru deschiderea unui triac Numărul punctului de semiundă Timp în microsecunde Punct sinusoidal 0 0 0 1 638 0,199 2 903 0,279 3 1108 0,341 4 1282 0,391 50 Metoda Bresen 0,391 . metoda de control al puterii bazată pe principiul alimentării pentru a încărca mai multe semicicluri ale tensiunii de rețea urmate de o pauză (Fig. 4). Momentele de comutare ale triacului coincid cu momentele în care tensiunea rețelei trece de zero, astfel încât nivelul interferenței radio este redus brusc. Utilizarea unui microcontroler a făcut posibilă utilizarea algoritmului Bresenham pentru distribuția uniformă a impulsurilor. Cu toate acestea, există o frecvență de comutare redusă a curentului în sarcină în comparație cu controlul de fază. Preferat pentru controlul sarcinilor de mare putere (de la 1 kW). Programul a fost implementat și, la fel ca în metoda fază, numărul de semicicluri ratate a fost modificat folosind ADC. Gama de transmisie a fost aleasă de la fiecare jumătate de undă la transmisia de la o jumătate de undă la zece. Figura 4 prezintă imagini de osciloscop ale implementării controlerului folosind metoda Bresenham. Fig.4. Controlul puterii folosind metoda Bresenham Concluzie Regulatorul este universal, ceea ce face posibilă utilizarea acestuia atât în ​​viața de zi cu zi, cât și în industrie. Prezența controlului microcontrolerului vă permite să reconfigurați rapid sistemul, ceea ce face ca dispozitivul să fie flexibil. Doi algoritmi de control vor permite controlerului să fie utilizat în game largi de putere.

Am învățat cum să afișam simboluri și linii pe un afișaj TFT, iar în acest tutorial vom învăța să desenăm forme geometrice. Nu există atât de multe forme geometrice care pot fi utile la crearea unei interfețe grafice; principalele sunt un dreptunghi și un cerc; acestea sunt cele pe care vom învăța să le desenăm, în două versiuni, umbrite și nu umbrite. Voi spune imediat că articolul va descrie în detaliu algoritmii pentru desenarea doar a unor forme geometrice, care ar trebui să fie suficiente pentru a înțelege principiile generale ale construirii unei imagini raster. Să începem cu cea mai simplă formă - un dreptunghi umplut.
Din articolul anterior ne amintim că dacă specificați coordonatele unui punct, apoi pur și simplu trimiteți culoarea, atunci SSD1289 însuși va picta punctele conform algoritmului selectat în timpul inițializării. Dar în acest caz există o caracteristică, controlerul trece la următoarea linie numai când ajunge la sfârșitul liniei curente.
Următoarele registre ne vor ajuta să desenăm un dreptunghi umplut.

Folosind aceste registre, putem seta începutul și sfârșitul zonei în care vom scrie, apoi într-o buclă, vom trimite culoarea de numărul necesar de ori, iar controlerul va face totul singur, conform algoritmului specificat în timpul initializare. Dar acum o va face treceți la linia următoare când ajunge la sfârșitul zonei pe care am specificat-o.
Pentru a înregistra limitele zonei de-a lungul X, este destinat un registru R44 și pentru a scrie limite de-a lungul Y - două registre R45 și R46. Să formulăm cele descrise mai sus sub forma unei funcții; pentru comoditate, codul care este responsabil pentru selectarea zonei de lucru va fi plasat într-o funcție separată Set_Work_Area().
void Set_Work_Area(uint16_t y1, uint16_t x1, uint16_t x2, uint16_t y2) ( Lcd_Write_Reg(0x0044,((x2)<< 8) | x1)); Lcd_Write_Reg(0x0045,y1); Lcd_Write_Reg(0x0046,y2); Set_Cursor(x1, y1); } /////////////////////////////////////// void Draw_Area(uint16_t left, uint16_t top, uint16_t right, uint16_t bottom, uint16_t color) { register uint16_t x,y; Set_Work_Area(left, top, right, bottom); for(y=top; y<=bottom; y++) { for(x=left; x<=right; x++) { Lcd_Write_Data(color); } } Set_Work_Area(0, 0, 319, 239); }


Acum că am învățat cum să desenăm un dreptunghi umplut, să încercăm să desenăm unul neumplut. Dar pentru a face acest lucru, trebuie mai întâi să învățăm cum să trasăm linii. Cu cunoștințele pe care le avem deja, putem desena cu ușurință o linie orizontală sau verticală, dar nu o linie în unghi față de orizont. Pentru a construi o linie situată la un unghi față de orizont, vom folosi algoritmul raster Bresenham, sau mai degrabă, modificarea acestuia. Cert este că inițial algoritmul conține operații de divizare și virgulă mobilă, pe care am dori să le evităm atunci când scriem firmware pentru un microcontroler. Puteți citi cum să faceți acest lucru pe Wikipedia.

Pe scurt, principiul de funcționare al algoritmului Bresenham este următorul: luăm un segment cu coordonatele inițiale x și y. În buclă adăugăm unul la x în direcția sfârșitului segmentului, iar la fiecare pas calculăm eroarea - distanța dintre coordonata reală din acest loc și cea mai apropiată celulă a grilei. Dacă eroarea nu depășește jumătate din înălțimea celulei, atunci o pictăm peste.



În imaginea de mai sus, galbenul arată linia înainte de rasterizare, verde și roșu arată distanța până la centrele celor mai apropiate celule.
Și aici este codul pentru trasarea liniei.
void Draw_Line (mărimea uint8_t, uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t culoare) ( int deltaX = abs(x2 - x1); int deltaY = abs(y2 - y1); int semnX = x1< x2 ? 1: -1; int signY = y1 < y2 ? 1: -1; int error = deltaX - deltaY; for (;;) { Draw_Point(size,x1,y1,color); if(x1 == x2 && y1 == y2) break; int error2 = error * 2; if(error2 >-deltaY) ( eroare -= deltaY; x1 += semnX; ) if(error2< deltaX) { error += deltaX; y1 += signY; } } }
Pentru a desena un dreptunghi, avem nevoie de 4 linii; pentru comoditate, vom separa desenul liniilor orizontale și verticale în funcții separate,
void Draw_Horizont_Line(uint8_t size,uint16_t x1,uint16_t y1,uint16_t y2,uint16_t color) ( Draw_Line(dimensiune, x1, y1, x1, y2, color); ) /////////////// //////////////// void Draw_Vertical_Line(uint8_t size,uint16_t x1,uint16_t x2,uint16_t y1,uint16_t color) ( Draw_Line(size, x1, y1, x2, y1, color); ) ////////////////////////////// void Draw_Reactangle (dimensiunea uint8_t, uint16_t stânga, uint16_t sus, uint16_t dreapta, uint16_t jos, uint16_t culoare) ( Draw_Horizont_Line (mărime, sus, stânga, dreapta, culoare); Draw_Horizont_Line (dimensiune, jos, stânga, dreapta, culoare); Draw_Vertical_Line (dimensiune, sus, jos, stânga, culoare); Draw_Vertical_Line (dimensiune, sus, jos , dreapta, culoare);)


Și pentru a desena un triunghi ai nevoie doar de 3 linii)))
void Draw_Triangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint16_t x3, uint16_t y3, uint8_t size, uint16_t color) ( Draw_Line(size, x1, y1, color(size, x1, y1, color(size, y_2, x2, draw y_2, color); , x3, y3, culoare); Draw_Line (dimensiune, x3, y3, x1, y1, culoare); )


Folosind algoritmul Bresenham, puteți construi și un cerc. La fiecare pas al algoritmului se iau în considerare trei puncte și se găsește cel mai potrivit comparând distanța de la centrul cercului la punctul selectat cu raza cercului.
void Draw_Circle (uint8_t size,uint16_t x0,uint16_t y0,uint16_t radius,uint16_t color) ( int x = 0; int y = rază; int delta = 2 - 2 * rază; int eroare = 0; while(y >= 0) ( Draw_Point(mărime,x0 + x, y0 + y,culoare); Draw_Point(mărime,x0 + x, y0 - y,culoare); Draw_Point(mărime,x0 - x, y0 + y,culoare); Draw_Point(mărime, x0 - x, y0 - y,culoare); eroare = 2 * (delta + y) - 1; dacă (delta< 0 && error <= 0) { ++x; delta += 2 * x + 1; continue; } error = 2 * (delta - x) - 1; if(delta >0 && eroare > 0) ( --y; delta += 1 - 2 * y; continua; ) ++x; delta += 2 * (x - y); --y; ) )


Spre sfârșitul scrierii articolului, am găsit o funcție care desenează cercuri pline și neumplute, argumentul de umplere este responsabil pentru acest lucru.
void Draw_Circle1(unsigned int x,unsigned int y,car radius,char umple, char size, unsigned int culoare) ( int a_,b_,P; a_ = 0; b_ = rază; P = 1 - rază; while (a_)<= b_) { if(fill == 1) { Draw_Area(y-a_,x-b_,y+a_,x+b_,color); Draw_Area(y-b_,x-a_,y+b_,x+a_,color); } else { Draw_Point(size, a_+x, b_+y, color); Draw_Point(size, b_+x, a_+y, color); Draw_Point(size, x-a_, b_+y, color); Draw_Point(size, x-b_, a_+y, color); Draw_Point(size, b_+x, y-a_, color); Draw_Point(size, a_+x, y-b_, color); Draw_Point(size, x-a_, y-b_, color); Draw_Point(size, x-b_, y-a_, color); } if (P < 0) { P = (P + 3) + (2* a_); a_ ++; } else { P = (P + 5) + (2* (a_ - b_)); a_ ++; b_ --; } } } ////////////////////////////////////


Poate că asta este tot ce am vrut să vă spun despre desenarea formelor geometrice, iar în acest articol vom afla cum funcționează un ecran tactil rezistiv.
Link către codul scris pentru articole despre SSD1289, .
Proiect pentru Atmega16în Atmel Studio 6.2 în arhivă (descărcări: 167)

Datorită ideii și participării lui Yuri Zinchenko (ZenitSoft), a fost dezvoltat și construit un dispozitiv care reglează puterea unui aragaz electric de bucătărie, omitând perioade. A fost luată ca bază (vezi și blocul de linkuri din subsol). Versiunea dezvoltată funcționează în prezent pentru el și este destul de mulțumit de performanța ei.

După fabricarea primei versiuni a dispozitivului, s-au observat defecțiuni izolate în timpul funcționării și reglarea relativ dificilă a detectorului de trecere cu zero a tensiunii rețelei din cauza unei defazări la primirea unui impuls de tranziție.

În noua versiune, circuitul și programul au fost reproiectate astfel încât să fie posibilă obținerea unei detecție exactă a zero cu cea mai mare prioritate de întrerupere. A fost adăugat și un mod de control al puterii de fază.

Caracteristicile tehnice ale controlerului electric al aragazului

Regulatorul triac vă permite să reglați puterea în sarcina activă de la zero la 100% în pași de 1%. Cantitatea de putere reglabilă este determinată de tipul de tiristor și de proprietățile radiatorului de răcire.
Pentru încălzire rapidă, puterea este furnizată 100% pentru un timp specificat, de la zero la 9 minute
Există un cronometru pentru timpul de încălzire, de la zero la 999 de minute.
Este posibil să alegeți o metodă de control prin sărind perioade sau controlând durata unui semiciclu (metoda fază). Vă permite să schimbați metodele de control în timpul funcționării.
Amintirea tuturor setărilor în cazul deconectării planificate sau accidentale a dispozitivului de la rețea.
Dimensiuni aparat 125×70 x 62 mm.

Scurtă descriere a modurilor de control

Omite perioade

Omiterea perioadelor vă permite să rezolvați problema compatibilității electromagnetice, deoarece triacul este pornit în momentul în care tensiunea rețelei trece prin zero.

Se știe că puterea de ieșire a unui dispozitiv care funcționează pe tensiune alternativă poate fi ajustată prin trecerea nu toate perioadele tensiunii rețelei în acesta. Dacă luăm o rețea cu o frecvență de 50 Hz, atunci trec 100 de perioade în 2 s, ceea ce înseamnă că dacă sărim, să zicem, 10 perioade în 2 s, vom obține 10% din putere, iar precizia de control va fi 1%. În același timp, este foarte de dorit ca perioadele să nu vină în loturi, ci să fie distribuite uniform.
Acest lucru se realizează folosind algoritmul Bresenham, care distribuie un anumit procent de putere uniform în timp. Mai mult, acest lucru se realizează prin utilizarea doar a aritmeticii întregi în program, fără împărțire și înmulțire, ceea ce simplifică și accelerează semnificativ calculele. Calculele și controlul folosind algoritmul Bresenham încep imediat după sosirea unei întreruperi externe.
Modul de ignorare a perioadei este aplicabil pentru controlul sarcinilor rezistive, dar nu este aplicabil pentru dispozitivele de iluminat, deoarece face ca lămpile incandescente să clipească.

Reglarea fazelor

O metodă alternativă de control al puterii este metoda controlului de fază
Controlul de fază poate fi utilizat pentru a varia puterea furnizată sarcinii printr-un triac. Esența metodei este de a debloca triacul la fiecare jumătate de ciclu de curent alternativ cu o întârziere constantă față de punctul de trecere cu zero. Astfel, o „felie” este tăiată din fiecare jumătate de ciclu. Aceasta va fi așa-numita modulare a lățimii impulsului, care vă permite să controlați curentul în (sau, mai puțin frecvent, tensiunea pe) sarcină cu eficiență maximă.

Avantajul acestei metode este că frecvența de ondulare la sarcină rămâne egală cu cea de rețea. Acest lucru este important pentru controlul dispozitivelor de iluminat, deoarece reducerea frecvenței poate afecta aspectul pâlpâirii, vizibile pentru ochi. Dar atunci când se reglează folosind această metodă, apare trăsătura caracteristică a caracteristicilor de reglare inegale.


Rezolvarea directă a acestei ecuații necesită găsirea rădăcinilor ecuației pătratice și calcularea arcului cosinus al rădăcinii rezultate. Aceasta este o sarcină destul de dificilă pentru un microcontroler, atât din punct de vedere al timpului, cât și al resurselor. Prin urmare, s-a dovedit a fi mult mai simplu să se folosească metoda de aproximare liniară pe bucăți, fără o pierdere semnificativă de precizie, așa cum se poate observa clar din grafic.


Axa x indică valoarea puterii instalate în procente, iar axa y indică unghiul de deschidere al triacului în valori Π/100. Graficul albastru este calculat folosind formule, iar cel maro este creat folosind o aproximare. După cum se poate observa din figură, discrepanțele dintre valorile reale și cele calculate sunt foarte nesemnificative.
O caracteristică neplăcută a metodei de fază este zgomotul care poate apărea din cauza comutării bruște a triacului, așa că este recomandabil să folosiți filtre la intrare.

Pentru ambele metode de control al puterii, este necesar să se știe când tensiunea rețelei trece de zero și, prin urmare, ciclul principal al programului este de a monitoriza trecerea tensiunii de rețea prin zero și de a o alimenta la intrarea externă de întrerupere a microcontrolerului, așa cum intrarea cu cea mai mare prioritate.

Diagrama și descrierea părții de putere a regulatorului de putere


Unitatea de alimentare produce o tensiune de +5V, generează impulsuri de trecere cu zero pentru rețea și conține un circuit de control al sarcinii folosind un triac.
Detector de trecere cu zero de tensiune de linie preluat din revista Radio Pilot. Emite impulsuri de tranziție la intervale de 10 ms.
Condensatorul C6 este încărcat la 25 volți - nivelul limitator al diodei zener D12. Curentul de intrare este limitat de rezistența R2. Când tensiunea de intrare rectificată scade sub tensiunea pe condensatorul C6, tranzistorul Q3 se deschide și generează un impuls care durează câteva sute de microsecunde. Optocuplerul U2 ascutește marginile și face pulsul de ieșire mai dreptunghiular.

Circuit sursă de +5 volți descris în detaliu în revista „Radio” nr. 11 pentru 2007, p. 30, în articolul „Rafinarea memoriei telefonului mobil”. S-a adăugat stabilizator la 78L05 pentru a reduce zgomotul și pentru a oferi o stabilizare suplimentară.
Funcționarea circuitului: Tensiunea de rețea prin rezistorul R1, care acționează ca o siguranță, este alimentată la un redresor în punte pe diodele D1 - D4 și netezită de condensatorul C1. Stabilizarea tensiunii de ieșire se realizează printr-o metodă indirectă. Pentru a face acest lucru, tensiunea de la a doua înfășurare a transformatorului este rectificată de dioda D5, netezită de condensatorul C2 și furnizată prin dioda zener D6 la baza tranzistorului. Pentru a proteja sursa în momentul conectării la rețea, precum și în timpul fluctuațiilor bruște de tensiune în rețea, pe elementele Q1, R7 este instalată protecția curentului Q2 la un nivel de 60...70 mA.

Conexiune triac realizat conform circuitului din fișa de date pentru un optosimistor MOC3052.
Când a fost proiectată unitatea de alimentare, s-a presupus că va fi folosită numai în modul skip-cycle, deci nu există filtre în circuit pentru a proteja împotriva interferențelor. Pentru a funcționa în modul control de fază, este indicat să le adăugați, cel puțin un simplu filtru LC în fața triacului.

Diagrama părții de control a regulatorului de putere


NB! Diagrama schematică arată incorect valorile rezistențelor R2 - R6. Valoarea corectă este de 680 ohmi.
Se folosește un indicator cu catod comun.


Circuitul unității de control s-a dovedit a fi destul de simplu. Trei butoane de control, un indicator cu 3 cifre și două LED-uri vă permit să controlați și să monitorizați toate funcțiile dispozitivului.
Plăcile bloc sunt conectate printr-un cablu cu 4 fire.

Software

Programul este scris în limbaj C pentru compilatorul mikroC for PIC. Comentariile aflate în program contribuie la înțelegerea activității acestuia.
Pentru a controla modurile de operare Se aplică controlul cu un singur buton cu numărarea numărului de apăsări. Algoritmul și o parte a codului sunt preluate din.
Butonul poate fi apăsat scurt (de mai multe ori), lung sau în diferite combinații de apăsări. Cât de mult putem „lipi” în două secunde - este totul al nostru. În continuare, va începe procedura de analiză a datelor colectate și totul va fi pus în ordine.
Nu mai este nevoie să se ocupe de discuții, deoarece întârzierile temporare sunt organizate automat. Vezi articolul pentru detalii.

Programul folosește întreruperi prin intrarea externă INT, prin temporizator 1 și temporizator 2.
Intrarea INT primește impulsuri de la detectorul de trecere cu zero cu o perioadă de 10 ms. Impulsurile cu o astfel de perioadă sunt folosite pentru a obține reglarea fazei, iar pentru a controla sărirea perioadelor este necesară o perioadă de 20 ms, care se obține programatic prin sărirea unuia dintre impulsuri. Algoritmul lui Bresenham se încadrează bine în programul de întrerupere extern.
De la cronometrul TMR1 primim impulsuri de 5 ms, care sunt folosite pentru indicarea dinamică, operarea butonului „Selectare” și contorizarea timpului sistemului.
Temporizatorul TMR0 este setat la aproximativ 100 µs și este utilizat numai în modul de control al fazei.

memorie EEPROM folosit pentru a salva toate modurile în timpul unei întreruperi de curent sau a unei pierderi bruște. Scrierea în memorie are loc după dispariția impulsurilor de întrerupere externe. Datele sunt restaurate din memorie atunci când controlerul este conectat la rețea. Utilizarea EEPROM în acest fel reduce dramatic numărul de operațiuni de scriere și timpul necesar.

Asamblarea și proiectarea dispozitivului

Dispozitivul este asamblat pe două plăci conectate prin rafturi.


Radiatorul pentru triac trebuie să aibă o suprafață suficientă pentru a disipa căldura.


Transformatorul și unele piese pentru alimentarea de +5 volți sunt folosite de la un încărcător de telefon vechi. Optosimistorul U1 poate fi înlocuit cu un analog, dar trebuie remarcat că trebuie să fie fără detector de zero. Plăcile sunt conectate între ele printr-un cablu cu 4 fire. Placa de circuit imprimat pentru unitatea de control nu a fost creată, ci a fost preluată din versiunea anterioară. Părțile inutile au fost îndepărtate din acesta și s-au făcut modificările necesare. Atât plăcile, cât și priza pentru pornirea sarcinii sunt închise într-o carcasă din metal și plastic.

Prima pornire și verificarea funcționării

Având în vedere că partea de putere a dispozitivului este conectată galvanic la rețea, este indicat să fiți cu maximă precauție sau să folosiți un transformator de izolare atunci când îl porniți pentru prima dată și verificați semnalele.
1. Porniți partea de alimentare a dispozitivului.
2. Verificați tensiunea sursei de +5 volți la ieșirea cipului 78L05.
3. Verificați prezența impulsurilor de trecere cu zero - ar trebui să existe impulsuri cu o perioadă de 10 ms.
4. Conectați placa cu un cablu, conectați o lampă incandescentă de 15 - 100 W ca sarcină și conectați-o la rețea. Când este pornită, lampa se va aprinde la intensitate maximă și se va aprinde și LED-ul roșu. După ceva timp, LED-ul roșu se stinge și lampa începe să clipească în funcție de puterea setată. Dacă treceți în modul fază, lampa se va aprinde fără să clipească, iar luminozitatea se va modifica în funcție de puterea setată. LED-ul galben PWM reproduce aproape complet modul de strălucire al lămpii.
5. Verificați regulatorul în toate modurile de funcționare, conform instrucțiunilor de operare a dispozitivului.

Controlul dispozitivului

Modul de control al puterii - o apăsare scurtă a butonului „Selectați”. Indicatorul afișează valoarea puterii ca procent.
Modul Sleep timer - două apăsări scurte ale butonului „Selectați”. Indicatorul afișează timpul rămas până la oprirea încălzirii în minute. În acest mod, timpul se numără invers în minute. Puteți seta ora de oprire a temporizatorului în minute de la 0 la 999. Punctul din ultima cifră clipește dacă numărătoarea inversă este în curs.
Modul de setare a timpului de încălzire rapidă este de trei apăsări scurte ale butonului „Selectare”. Indicatorul afișează ora la care este furnizată puterea de încălzire 100% în minute și secunde. În acest caz, punctul din prima cifră nu clipește.
Modul de schimbare a opțiunii de ajustare cu omiterea unei perioade sau faze este o apăsare lungă a butonului. Indicatorul afișează modul PUL - sărirea unei perioade sau F - modul fază.

În orice mod, puteți modifica valorile folosind butoanele „+” și „-”. Apăsând scurt butonul - adăugare sau micșorare, apăsat - căutare rapidă. În acest caz, puteți folosi butonul „Selectare” pentru a comuta în orice mod și pentru a vizualiza parametrii oricărui mod, dacă nu apăsați butoanele „+” și „-”.

Dacă este nevoie să reveniți la setările inițiale, acest lucru se poate face ținând apăsat butonul „Selectați” timp de aproximativ o secundă când porniți dispozitivul în rețea.

Algoritmul lui Bresenham este unul dintre cei mai vechi algoritmi din grafica computerizată. S-ar părea, cum se poate aplica algoritmul pentru construirea liniilor raster atunci când se creează un cuptor de lipit acasă? Se dovedește că este posibil și cu rezultate foarte decente. Privind în viitor, voi spune că acest algoritm se alimentează foarte bine într-un microcontroler de 8 biți de putere redusă. Dar mai întâi lucrurile.

algoritmul lui Bresenham este un algoritm care determină ce puncte dintr-un raster bidimensional trebuie să fie umbrite pentru a obține o aproximare apropiată a unei linii drepte între două puncte date. Esența algoritmului este aceea pentru fiecare coloană X(vezi imaginea) determinați ce linie Y cel mai aproape de linie și desenați un punct.

Acum să vedem cum ne va ajuta un astfel de algoritm atunci când controlăm elementele de încălzire într-un cuptor electric.

Elementul de încălzire este alimentat de la tensiunea de rețea 220V/50Hz. Să aruncăm o privire la grafic.


Când o astfel de tensiune este aplicată în forma sa pură la intrarea încălzitorului electric, vom primi 100% putere de încălzire la ieșire. E simplu.



Ce se întâmplă dacă aplicați doar o jumătate de undă pozitivă a tensiunii de rețea la intrarea elementului de încălzire? Așa este, obținem 50% putere de încălzire.



Dacă aplicăm fiecare a treia jumătate de val, obținem 33% putere.

Ca exemplu, să luăm o gradare de 10% a puterii de ieșire și o perioadă de timp de 100 ms, care este echivalent cu 10 semi-unde ale tensiunii de rețea. Să desenăm o grilă de 10x10 și să ne imaginăm că axa Y aceasta este axa valorilor puterii de ieșire. Să trasăm o linie dreaptă de la 0 la valoarea puterii necesare.

Îți urmărești dependența?
Prin creșterea perioadei de timp la 1 secundă, puteți obține o gradare a puterii de ieșire de 1%. Rezultatul va fi o grilă de 100x100 cu toate consecințele.

Și acum pentru lucrurile bune:
Algoritmul Bresenham poate fi construit într-o buclă astfel încât la fiecare pas de-a lungul axei Xține doar evidența valorii erorii, ceea ce înseamnă - distanța verticală dintre valoarea curentă yși valoarea exactă y pentru curent X. Ori de câte ori creștem X, creștem valoarea erorii cu valoarea pantei. Dacă eroarea a depășit 0,5, linia a devenit mai aproape de următoarea y, așa că creștem y cu unul (citiți - sărim o jumătate de undă de tensiune), reducând simultan valoarea erorii cu 1.

Această abordare poate fi ușor redusă la o formă ciclică adunare intregi(mai multe despre asta mai târziu, când descriem algoritmul de operare al MK în articolul următor), ceea ce este un plus clar pentru microcontrolere.

Intenționat nu v-am împovărat cu formule. Algoritmul este elementar, ușor de Google. Vreau doar să arăt posibilitatea ei de aplicare în proiectarea circuitelor. Pentru a controla sarcina, va fi utilizată o diagramă de conectare tipică pentru un optocuplor triac MOC3063 cu un detector de zero.

Există o serie de avantaje ale acestei abordări.

  • Interferențe minime în rețea din cauza comutării frecvente a unei sarcini mari; pornirea/oprirea va avea loc în momentele în care tensiunea trece de zero.
  • Un algoritm foarte simplu - toate calculele sunt reduse la lucrul cu numere întregi, ceea ce este bun pentru un microcontroler.
  • Nu este nevoie să îngrădiți detectorul de trecere cu zero tensiune (bună ziua MOC3063). Chiar dacă MK pur și simplu smuciază cu piciorul pe cronometru, deschizând optocuplerul, eroarea nu va fi critică.

Va urma.