Cuprins:

Invertor de grilă: 10 pași (cu imagini)
Invertor de grilă: 10 pași (cu imagini)
Anonim
Image
Image
Invertor cu cravată
Invertor cu cravată
Invertor cu cravată
Invertor cu cravată

Acesta este un proiect plin de carne, așa că închideți-vă!

Invertoarele cu cravată vă permit să împingeți puterea într-o priză de rețea, care este o abilitate minunată. Mi se pare interesant electronica de putere și sistemele de control implicate în proiectarea lor, așa că am construit-o pe a mea. Acest raport împărtășește ceea ce am învățat și documentează cum am făcut lucrurile. Aș fi interesat de orice comentarii pe care le-ați avut (în afară de cele referitoare la faptul că nu vă încurcați cu electricitatea de la rețea).

Toate conceptele sunt scalabile, dar această configurare a avut o putere maximă de 40 de wați înainte ca inductoarele filtrului să înceapă să se satureze. Curentul de ieșire a fost sinusoidal cu THD <5%.

Vedeți software-ul pe GitHub

Provizii

  • Am folosit placa de dezvoltare STM32F407. Funcționează la 168MHz și are 3 ADC-uri încorporate capabile de rezoluție de 12 biți la peste 2.4MSPS (milioane de eșantioane pe secundă) fiecare. Este o nebunie!
  • Am folosit placa de dezvoltare DRV8301. Acesta găzduiește un H-Bridge 60v împreună cu driverele de poartă necesare, șunturile de curent și amplificatoarele de șunt de curent. Super dragut!
  • Am folosit un transformator toroidal 230-25v cu 2 robinete de ieșire. Acest lucru a însemnat că nu a trebuit să produc direct tensiunea de rețea, dar am putut lucra cu tensiuni de vârf de 40 volți. Mult mai sigur!
  • Am conectat o încărcare de inductoare și condensatoare împreună pentru a obține valorile L și C dorite pentru filtru.
  • Un osciloscop și o sondă diferențială sunt esențiale pentru un proiect ca acesta. Am un Picoscop

Pasul 1: Ce este puterea rețelei?

Ce este puterea rețelei?
Ce este puterea rețelei?
Ce este puterea rețelei?
Ce este puterea rețelei?

Ceea ce obțineți la o priză (în Marea Britanie) este un semnal sinusoidal 50Hz 230v RMS cu o impedanță foarte mică. Câteva lucruri de spus despre asta:

50Hz - Frecvența rețelei este foarte precis menținută la 50Hz. Acesta variază ușor, dar 90% din timp este între 49,9-50,1Hz. Vezi aici. Vă puteți imagina toți enormii generatori din centralele electrice în sus și în jos, învârtindu-se la unison. Se rotesc sincron producând pentru noi un semnal sinusoidal de 50Hz. Inerția lor de rotație masivă combinată necesită timp pentru a încetini sau a accelera.

În teorie, dacă o grămadă de sarcini a fost atașată la rețea, ar începe să încetinească generatoarele din țară. Cu toate acestea, ca răspuns, băieții din biroul de control al rețelei naționale ar solicita centralelor electrice să-și alimenteze cazanele, să pornească căldura și să forțeze acele generatoare să țină pasul cu cererea. Astfel, cererea și oferta sunt într-un dans continuu unul cu celălalt.

Încă un lucru de spus despre semnalul de 50Hz. Deși variază foarte puțin aproximativ 50Hz, băieții de sus se asigură că frecvența medie pe parcursul zilei este exact de 50Hz. Deci, dacă rețeaua este la 49,95 Hz timp de 10 minute, se vor asigura că rulează la 50,05 Hz mai târziu pentru a aduce numărul exact de cicluri la 50Hz x 60 secunde x 60 minute x 24 ore = 4, 320, 000 / zi. Ei fac acest lucru precis folosind Timpul Atomic Internațional. Prin urmare, aparatele de uz casnic, de birou și industriale pot utiliza frecvența rețelei pentru a menține timpul. Acest lucru se realizează în mod obișnuit cu temporizatoarele mecanice cu soclu, de exemplu.

230v - Aceasta este tensiunea RMS (Root Mean Square) a semnalului de 50Hz. Semnalul real se deplasează până la un vârf de 325v. Acest lucru este important de știut, deoarece dacă construiți un invertor, trebuie să produceți tensiuni atât de mari, dacă veți obține curent care să curgă în prize.

În realitate, tensiunile observate la o priză din casa dvs. sunt destul de variabile. Acest lucru se datorează căderii de tensiune a rezistenței la fire, conectori, siguranțe, transformatoare etc. Există rezistență peste tot. Dacă porniți un duș electric care trage 11 kilowați (adică ~ 50Amp), chiar și 0,2 ohmi de rezistență vă vor scădea cu 10 volți. Este posibil să vedeți acest lucru ca luminile care se estompează atât de ușor. Motoarele mari, precum cele din hoovers, atrag curenți uriași în timp ce motorul se ridică la viteză. Așadar, veți vedea adesea o ușoară pâlpâire a luminilor atunci când le aprindeți.

Ideea mea este că tensiunea de rețea este mult mai variabilă. Aici, în Marea Britanie, ar trebui să fie 230v cu o toleranță de +10% / - 6%. Vă puteți aștepta să vedeți schimbări și fluctuații bruște pe măsură ce încărcările mari din apropiere pornesc / se opresc. Gândiți-vă la uscătoare, fierbătoare, cuptoare, cupe etc.

Sinusoidal - Semnalul ar trebui să fie o undă sinusoidală curată, dar în realitate unele aparate neliniare își absorb puterea din anumite puncte din ciclul undei sinusoidale. Aceasta introduce distorsiuni și de aceea semnalul nu este o undă sinusoidală perfectă. Încărcările neliniare includ de obicei surse de alimentare pentru computer, lumini fluorescente, încărcătoare, televizoare etc.

Distorsiunea armonică totală (THD) cuantifică acest lucru în forma de undă. Există reglementări pentru cât de curată trebuie să fie ieșirea unui invertor. Dacă nu reușește să producă un semnal suficient de curat, atunci nu va fi aprobat pentru vânzare. Acest lucru este important deoarece conținutul armonic din rețea reduce eficiența unor dispozitive conectate la acesta (în special armoniile impare). Cred că THD maxim admisibil este de 8%

Impedanță scăzută - Atunci când vă gândiți la un invertor cu rețea de rețea, acest lucru va fi important de luat în considerare. Există tot felul de sarcini atașate la rețea, inclusiv sarcini inductive, rezistive și ocazional capacitive. Deci impedanța este necunoscută și schimbătoare. Rezistența este foarte mică, adică dacă conectați o sarcină de curent mare, tensiunea nu va scădea deloc.

Pasul 2: Cum să împingeți puterea în rețea

Cum să împingem puterea în rețea
Cum să împingem puterea în rețea

Pentru a împinge puterea în rețea, trebuie să sintetizăm un semnal care se potrivește exact cu frecvența și faza rețelei, dar cu o tensiune ușor mai mare.

Datorită rezistenței reduse a rețelei, este dificil să se știe exact cu cât este mai mare să creeze tensiunea respectivă. Și, pe măsură ce tensiunea RMS fluctuează, trebuie să ne asigurăm că fluctuăm odată cu aceasta. Nu va funcționa doar producerea unui semnal de tensiune fix de 50Hz puțin mai mare decât tensiunea de rețea!

PI Controlul curentului de ieșire

Avem nevoie de o buclă de control prin care măsurăm curentul instantaneu pe care îl împingem în rețea și ajustăm automat tensiunea de ieșire pentru a conduce curentul dorit. Acest lucru ne va transforma efectiv ieșirea într-o sursă de curent (mai degrabă decât într-o sursă de tensiune) care este mai potrivită pentru a conduce impedanțe scăzute. Putem realiza acest lucru folosind o buclă de control PI (Proportional Integral):

Buclele de control PI sunt fantastice! Există 3 părți:

  • Valoarea măsurată - curentul pe care îl introducem în rețea
  • Punctul de referință - Curentul pe care dorim să-l împingem în rețea
  • Ieșirea - tensiunea semnalului de generat

De fiecare dată când apelăm algoritmul PID, trecem cea mai recentă măsurare curentă și punctul de referință dorit. Se va returna un număr arbitrar (proporțional cu tensiunea de ieșire de generat).

Algoritmul nostru de control PID ne permite să alegem curentul de ieșire dorit la un moment dat. Pentru a produce un curent de ieșire sinusoidală de 50Hz, trebuie să ne schimbăm continuu curentul solicitat într-un mod sinusoidal.

Algoritmul PID este numit la fiecare 100us (echivalentul a 200 de ori pe ciclu 50Hz). De fiecare dată când este apelat, este capabil să facă ajustări directe la tensiunea de ieșire și, prin urmare, să regleze indirect curentul de ieșire. Ca rezultat, producem o ieșire de curent în trepte similară cu cea afișată în imagine cu fiecare pas care are loc la fiecare 100us. Aceasta oferă suficientă rezoluție.

Control de alimentatie

Putem reduce masiv volumul de lucru al controlerului PI adăugând și un controler feedforward. Asta e ușor! Știm tensiunea de ieșire aproximativă pe care va trebui să o generăm (la fel ca tensiunea instantanee a rețelei). Controlerul PI poate fi lăsat apoi să adauge mica tensiune suplimentară necesară pentru a conduce un curent de ieșire.

De la sine controlerul de avans avansează tensiunea de ieșire a invertorului cu tensiunea rețelei. Nici un curent nu ar trebui să curgă dacă ne potrivim suficient de bine. Prin urmare, controlul avansului efectuează 99% din controlul de ieșire.

Datorită rezistenței reduse a rețelei, orice diferență între tensiunea de ieșire FF și tensiunea rețelei ar duce la un curent mare. Prin urmare, am adăugat o rezistență tampon de 1 ohm între invertor și rețea. Acest lucru introduce pierderi, dar acestea sunt destul de mici în marea schemă.

Pasul 3: Producerea tensiunii de ieșire utilizând PWM

Producerea tensiunii de ieșire utilizând PWM
Producerea tensiunii de ieșire utilizând PWM
Producerea tensiunii de ieșire utilizând PWM
Producerea tensiunii de ieșire utilizând PWM
Producerea tensiunii de ieșire utilizând PWM
Producerea tensiunii de ieșire utilizând PWM

Deși controlăm indirect curentul de ieșire, este o tensiune de ieșire pe care o generăm la un moment dat. Folosim PWM (Pulse Width Modulation) pentru a produce tensiunea de ieșire. Semnalele PWM pot fi ușor produse de microcontrolere și pot fi amplificate cu ajutorul unui H-Bridge. Sunt forme de undă simple, caracterizate prin 2 parametri, frecvența F și ciclul de funcționare D.

O formă de undă PWM comută între 2 tensiuni, în cazul nostru 0v și Vsupply

  • Cu D = 1.0 forma de undă PWM este pur și simplu DC la Vsupply
  • Cu D = 0,5, obținem o undă pătrată cu o tensiune medie de 0,5 x V aprovizionare, (adică D x V aprovizionare)
  • Cu D = 0,1, obținem o formă de undă pulsată cu o perioadă medie de 0,1 x V aprovizionare
  • Cu D = 0,0, ieșirea este o linie plană (DC la 0v)

Tensiunea medie este esențială. Cu un filtru low-pass putem elimina orice, în afară de componenta medie DC. Deci, variind ciclul de funcționare PWM D, suntem capabili să facem orice tensiune continuă dorită. Dulce!

Angajarea unui pod H

Un H-Bridge este format din 4 elemente de comutare. Acestea pot fi BJT, MOSFET sau IGBT. Pentru a produce prima jumătate (0 - 180 de grade) a undei sinusoidale, stabilim faza B scăzută prin oprirea Q3 și Q4 pornită (adică aplicarea PWM cu D = 0). Apoi efectuăm PWMing-ul nostru în faza A. Pentru a doua jumătate, unde VAB este negativ, stabilim Faza A scăzută și aplicăm PWM-ul nostru în faza B. Acest lucru este cunoscut sub numele de comutare bipolară.

MOSFET-urile din podul H trebuie să fie conduse de un driver de poartă. Acesta este un subiect propriu, dar un cip simplu poate avea grijă de el. Placa de dezvoltare DRV8301 găzduiește convenabil H-Bridge, drivere de poartă și șunturi curente pentru noi, făcând acest proiect mult mai ușor.

Pasul 4: Măsurarea curentului

Măsurarea curentului
Măsurarea curentului
Măsurarea curentului
Măsurarea curentului
Măsurarea curentului
Măsurarea curentului

Fiecare picior al H-Bridge are un rezistor de șunt și un amplificator diferențial. Shunturile noastre sunt de 0,01 ohmi și amplificatoarele noastre sunt setate pentru un câștig de 40. Prin urmare, 1 Amp dezvoltă 10mV pe șunt, care este ulterior amplificat la 400mV.

Ieșirile de la amplificatoarele de șunt sunt citite de ADC-urile de 12 biți de pe STM32F407 care rulează în modul de conversie continuă. ADC-urile sunt setate să probeze fiecare șunt la 110 KPS și controlerul DMA scrie automat conversiile într-un buffer circular de 11 cuvinte în RAM. Când se dorește o măsurare curentă, apelăm o funcție care returnează valoarea mediană a acestui tampon de 11 cuvinte.

Întrucât solicităm măsurători actuale la fiecare iterație PID (la 10KHz), dar completăm tampoanele ADC de 11 cuvinte la o rată de 110KHz, ar trebui să obținem date complet noi la fiecare iterație PID. Motivul pentru care se folosește un filtru median se datorează faptului că comutarea PWM poate introduce vârfuri în mix și filtrele mediane eradică foarte eficient probele ADC false.

Un punct important de făcut aici: ce picior al podului H îl folosim pentru măsurători curente? Ei bine, depinde de piciorul în care suntem în prezent PWMing și care este doar menținut jos. Piciorul ținut jos este cel din care dorim să ne măsurăm curentul, deoarece curentul curge întotdeauna prin rezistența de șunt de pe acea parte. În comparație, partea este PWMed, când MOSFET-ul din partea înaltă este pornit și partea din jos este oprit, nu curge curent prin șuntul din partea inferioară. Deci, schimbăm pe care picior măsurăm curentul pe baza polarității de ieșire a invertorului. Puteți vedea acest lucru clar în imagine, arătând ieșirea de la unul dintre amplificatoarele de șunt pe o perioadă. Evident, vrem să facem lecturi în timpul unui pic.

Pentru a ajuta la depanarea citirilor noastre actuale. Am configurat convertorul digital-analog pe STM32F407. Am scris citirile curente pe care le obțineam și am extins rezultatul. Puteți vedea acest lucru în imaginea finală, albastru este tensiunea pe rezistorul tampon de ieșire (adică curentul de ieșire / 1,1 ohmi), iar semnalul roșu este ieșirea noastră DAC.

Pasul 5: Filtrarea ieșirii

Filtrarea ieșirii
Filtrarea ieșirii
Filtrarea ieșirii
Filtrarea ieșirii

Filtrul de ieșire este o parte cheie a designului. Avem nevoie de aceste caracteristici:

  1. Blocați toate comutările de înaltă frecvență, dar treceți un semnal de 50Hz
  2. Pierderi mici
  3. Să nu rezoneze!
  4. Pentru a face față curenților și tensiunilor implicate

Transformarea fourier a unui semnal PWM de frecvență F, Ciclul de funcționare D, între 0 - V aprovizionare volți este: (D x V aprovizionare) + Undele sinusoidale la frecvența fundamentală F și armoniile ulterioare

Este genial! Înseamnă că dacă trecem semnalul nostru PWM printr-un filtru trece jos care blochează fundamentalul PWM și tot ce este mai sus. Tocmai am rămas cu termenul de tensiune continuă. Prin variația ciclului de funcționare, putem produce cu ușurință orice tensiune pe care o dorim între 0 - V aprovizionare, după cum sa explicat.

Pe baza caracteristicilor dorite menționate mai sus, putem proiecta filtrul de ieșire. Avem nevoie de un filtru low-pass realizat cu rezistență minimă pentru a evita pierderile. Prin urmare, folosim doar inductoare și condensatoare. Dacă alegem o frecvență de rezonanță între 1 - 2KHz, vom evita rezonanța, deoarece nu injectăm niciun semnal în apropierea acestei frecvențe. Iată designul filtrului nostru. Ne luăm ieșirea ca tensiune pe C1.

Alegând L1 = L2 = 440uH, C1 = 8.4uF calculăm o frecvență rezonantă de 1.85KHz. Acestea sunt și valori realiste ale componentelor.

Este vital să ne asigurăm că inductanții noștri nu încep să se sature la curenții pe care îi așteptăm. Inductoarele pe care le-am folosit au un curent de saturație de 3A. Acesta va fi factorul limitativ al puterii de ieșire a circuitului nostru. De asemenea, este important să se ia în considerare tensiunea nominală a condensatorului. Folosesc ceramică de 450v, care este foarte exagerată în acest caz!

Graficul bode (pentru valori L / C ușor diferite) a fost generat folosind LTspice. Ne arată atenuarea cauzată de diferite frecvențe de intrare. Putem vedea clar frecvența de rezonanță la 1,8 KHz. Arată că un semnal de 50Hz este aproape în totalitate neadulterat, în timp ce vă pot spune că un semnal de 45 KHz este atenuat de 54dB!

Așadar, să alegem frecvența purtătorului PWM pentru a fi ~ 45KHz. Alegând frecvențe purtătoare PWM mai mari, frecvența filtrului poate fi crescută. Este bine, deoarece micșorează valorile L și C. Asta înseamnă componente mai mici și mai ieftine. Dezavantajul este că frecvențele de comutare PWM mai mari introduc pierderi mai mari în comutatoarele tranzistorului.

Pasul 6: Sincronizarea fazei și frecvenței

Sincronizarea fazei și frecvenței
Sincronizarea fazei și frecvenței
Sincronizarea fazei și frecvenței
Sincronizarea fazei și frecvenței
Sincronizarea fazei și frecvenței
Sincronizarea fazei și frecvenței

Sincronizarea cu faza și frecvența rețelei este ceea ce face un invertor de rețea. Folosim o implementare digitală a unui PLL (Phase Locked Loop) pentru a realiza o urmărire precisă a fazei semnalului de rețea. Facem acest lucru prin:

  1. Eșantionarea tensiunii de rețea
  2. Producem un semnal sinusoidal local de 50Hz
  3. Comparând faza dintre semnalul nostru local și semnalul de rețea
  4. Reglarea frecvenței semnalului local până când diferența de fază dintre cele 2 semnale este zero

1) Eșantionarea tensiunii de rețea

Configurăm un al treilea canal ADC pentru a citi tensiunea de linie. Acest lucru îl obținem prin divizarea tensiunii unui robinet de transformator așa cum se arată. Aceasta oferă o tensiune la scară care variază aproximativ 1,65v, care reprezintă exact tensiunea rețelei.

2) Producerea unui semnal sinusoidal local de 50Hz Este ușor să producem propria noastră undă sinusoidală locală de 50Hz. Stocăm un tabel de căutare cu 256 de valori sinusoidale. Valoarea noastră sinusoidală simulată se obține cu ușurință utilizând un indice de căutare care se rotește incremental prin tabel.

Pentru a obține un semnal de 50Hz, trebuie să ne creștem indexul exact la rata corectă. Anume 256 x 50Hz = 12, 800 / s. Facem acest lucru folosind timer9 tactat la 168MHz. Așteptând 168MHz / 12800 = 13125 bifuri de ceas, vom crește indicele la rata corectă.

3) Compararea fazei dintre semnalul nostru local și semnalul de rețea Aceasta este partea rece! Dacă integrați produsul cos (wt) x sin (wt) pe o perioadă, rezultatul este zero. Dacă diferența de fază este altceva decât 90 de grade, veți obține un număr diferit de zero. Matematic:

Integral [Asin (t) x Bsin (t + φ)] = Ccos (φ)

Asta-i grozav! Ne permite să comparăm semnalul de rețea, sin (ωt) cu semnalul nostru local, sin (⍵t + φ) și să obținem o valoare.

Există totuși o problemă care trebuie soluționată: dacă dorim ca semnalele noastre să rămână în fază, trebuie să ne ajustăm frecvența locală pentru a menține termenul Ccos (φ) maxim. Acest lucru nu va funcționa foarte bine și vom avea o urmărire de fază slabă. Acest lucru se datorează faptului că d / dφ de ɑcos (φ) este 0 la φ = 0. Aceasta înseamnă că termenul Ccos (φ) nu va varia foarte mult cu modificările de fază. Are sens?

Ar fi mult mai bine să schimbați faza semnalul de rețea eșantionat cu 90 de grade, astfel încât să devină cos (ωt + φ). Apoi avem acest lucru:

Integral [Asin (t) Bcos (t + φ)] = Csin (φ)

Introducerea unei schimbări de fază de 90 de grade este ușoară, doar introducem probele noastre de tensiune ADC de rețea într-un capăt al unui tampon și le scoatem un număr de probe mai târziu, corespunzând unei schimbări de fază de 90 de grade. Deoarece frecvența rețelei variază cu greu de la 50Hz, o tehnică simplă de întârziere funcționează strălucit.

Acum înmulțim semnalul nostru de rețea cu 90 de grade deplasat cu semnalul nostru local și păstrăm o integrală de rulare a produsului în ultima perioadă (adică în ultimele 256 de valori).

Rezultatul pe care îl știm va fi zero dacă cele 2 semnale sunt menținute cu precizie la 90 de grade. Acest lucru este fantastic, deoarece anulează schimbarea de fază pe care tocmai l-am aplicat semnalului de rețea. Doar pentru a clarifica, în loc să maximizăm termenul integral, încercăm să îl menținem zero și ne schimbăm semnalul de rețea. Schimbările de fază de 90 de grade introduse de aceste 2 modificări se anulează reciproc.

Deci, dacă Integral_Result <0 știm că trebuie să ne mărim frecvența oscilatorului local pentru a-l readuce în fază cu rețeaua electrică și invers.

4) Reglarea frecvenței semnalului local Acest bit este ușor. Pur și simplu ajustăm perioada dintre creșterea prin index. Limităm cât de repede putem corecta diferența de fază, filtrând în esență orice lucru fals. Facem acest lucru folosind un controler PI cu un termen I foarte mic.

Si asta e. Am blocat oscilatorul nostru cu undă sinusoidală locală (care setează valoarea de referință a curentului de ieșire) pentru a fi în fază cu tensiunea de rețea. Am implementat un algoritm PLL și funcționează ca un vis!

Creșterea frecvenței oscilatorului nostru local reduce, de asemenea, defazarea pusă pe semnalul de rețea. Deoarece constrângem ajustarea frecvenței la +/- 131 căpușe (+/- ~ 1%), vom afecta defazajul cu cel mult +/- 1 °. Acest lucru nu va conta deloc în timp ce fazele se sincronizează.

Teoretic, dacă frecvența rețelei deviază cu mai mult de 0,5Hz, am pierde blocarea fazelor. Acest lucru se datorează constrângerii noastre de mai sus cu privire la cât de mult ne putem regla frecvența oscilatorului local. Cu toate acestea, acest lucru nu se va întâmpla decât dacă grila este pe punctul de a eșua. Protecția noastră anti-insulă va începe oricum în acest moment.

Efectuăm o detecție de trecere zero la pornire pentru a încerca tot posibilul la pornirea semnalelor în fază de la offset.

Pasul 7: Anti-insulare

Anti-insulare
Anti-insulare

Wikipedia are un articol minunat despre tehnicile de insulare și anti-insulare. De asemenea, implică faptul că oamenii șuieră și bat mai mult decât este necesar atunci când vine vorba de acest subiect. „Oh, nu-ți poți construi propriul invertor cu cravată, vei ucide pe cineva etc. etc.”

După cum se explică mai bine în articolul de pe Wikipedia, folosim câteva măsuri de siguranță care oferă împreună o protecție adecvată (în opinia mea):

  1. Sub / supratensiune
  2. Frecvență sub / peste

Putem detecta aceste situații analizând pur și simplu eșantionarea tensiunii noastre la rețea. Dacă ceva iese din bătăi, dezactivați podul H și așteptați ca lucrurile să revină la normal.

Recomandat: