Sari la conținut
ELFORUM - Forumul electronistilor

Convertizor SPWM(Sinusoidal Pulse Width Modulation) 12V-220V


Vizitator daniel_zedo

Postări Recomandate

Vizitator flopir

Sincer nici eu nu am priceput exact fenomenul... dar am constat empiric (mai precis silicipi a testat) ca daca se foloseste comanda simultana a tranzistorilor de pe diagonale, semnalul este ditorsionat. Ce e drept, noi nu am comandat traf ci o sarcina rezistiva, printr-un filtru LC. La vremea respectiva mi-am stors ceva creierii dar la insistentele lui silicipi am implementat varianta cu comanda separata pe ramurile puntii H (20Khz+50Hz) si am uitat reprede de prima varianta cand am obtinut rezultate destul de multumitoare.

 

Teoria mea pentru ce se intampla este urmatoarea: presupunand ca o diagonala este blocata, imediat dupa conductia celeilalte tensiunea pe sarcina (inductiva) in loc sa devina zero se inverseaza fiind limitata de U alimentare+caderea de tensiune pe diodele din mosfeti, fapt care duce la ciudatenii la iesire. Daca gresesc poate ma lumineaza si pe mine vreun meserias in analogic.... :sparge:

Link spre comentariu
  • Răspunsuri 280
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • Dr.L

    39

  • nel65

    28

  • Marian

    8

  • Cilibiu

    8

Top autori în acest subiect

Imagini postate

Vizitator pisica matache

Sincer nici eu nu am priceput exact fenomenul... dar am constat empiric (mai precis silicipi a testat) ca daca se foloseste comanda simultana pe diagonale, semnalul este ditorsionat.

Comanda simultana a ambelor diagonale,va sunta sursa,fie 12V,fie 300V.E o stare anormala,ce duce de regula la distrugerea mosfetilor,curentul nemaifiind limitat de sarcina,ci doar de Rds.Eu banuiesc ca asta a fost mai degraba cauza distrugerii mosfeturilor in experimentele lui silicipi si nu filtru de iesire.Daca sarcina era pur rezistiva,chiar si fara filtru,nu vad de ce s-ar fi dus mosfetii.
Link spre comentariu
Vizitator flopir

O punte in care doar o ramura lucreaza la frecventa mare (30kHz sa zicem) cu umplere variabila, iar cealalta comuta pe 50Hz. Daca se doreste refacerea semialternantei pozitive, tranzistorul low de pe 50Hz se deschide iar cel high de pe ramura de frecventa mare face semialternanta incepand cu umplere zero, crescand umplerea aproape de 100% pentru varful sinusoidei si scazand din nou la zero umplere pentru 0V. Alternanta negativa se face de tranzistorul high de pe 50Hz si umplerea variabila a lui low de pe 30kHz. Dar (!), pentru a avea 0V la iesire, cand high de pe 50 este deschis, umplerea de pe 30kHz trebuie maxima. Asta inseamna ca la 0V la iesire are loc o trecere de la umplere minima la una maxima concomitent cu schimbarea conductiei tranzistoarelor de pe 50Hz, moment care trebuie foarte bine gestionat. Avantajul ar fi ca e nevoie de un singur filtru.....

Link spre comentariu
Vizitator smilex

Trebuie sa functioneze in asa fel incat rezultanta (sinus) sa fie in opozitie fata de cealalta ramura. Nu e obligatoriu nici macar sa fie aceiasi frecventa pe ramuri, poate fi 30kHz cu 50kHz. Doar sa se obtina sinusoida in opozitie dupa filtre. Eu as dori sa lucreze simultam pentru a putea cupla magnetic filtrele. Simultan pe diagonala. Dar nu cu driveri separati dupa AO ca e riscant ca timpi. Comanda nu va fi doar pe o diagonala, ci pe ambele, dar in opozitie. Adica, pe ramura, cand sus conduce, jos e blocat, iar cand sus e blocat, jos conduce. Intre ele un deadtime. In acel deadtime autoinductia inverseaza tensiunea si formeaza curentul prin dioda MOS-ului ce urmeaza a primi comanda de deschidere. Acel deadtime este o problema de estimat si rezolvat. As fi vrut sa vad comportamentul 2186, s-ar putea totusi sa nu fie potrivit, mai aprofundez.

Link spre comentariu
Vizitator smilex

Deadtime-ul de care vorbeam nu este necesar in cazul tau. Acolo ar fi necesar pentru tranzitia de pe 50Hz. Pe ramura de 20kHz este in permanenta un buck in functiune (sunt doua) celalalt fiind nefunctional pentru o semialternanta. Revin cu niste grafice cand am timp sa le fac si cu eventuale solutii, ca sa explic asa cum vad eu diferenta dintre cele doua variante, 20kHz+50Hz si 20kHz+20kHz.Nimeni nu contesta simplitatea si flexibilitatea controlerului. Dar trebuie sa intelegi ca pentru cei care nu cunosc cum sa modifice programul, acea flexibilitate nu mai exista. E batut in cuie. Analogic, trebuie doar inteles, fiecare poate adapta apoi solutia conform intereselor. Evident insa, putem abandona calea analogica si sa abordam ce mai ramane pe langa controler, daca asta se doreste. Poate ar fi mai interesant, cred ca doua programe diferite ar acoperii majoritatea nevoilor.

Link spre comentariu
Vizitator pisica matache

Intre ele un deadtime. In acel deadtime autoinductia inverseaza tensiunea si formeaza curentul prin dioda MOS-ului ce urmeaza a primi comanda de deschidere. Acel deadtime este o problema de estimat si rezolvat. As fi vrut sa vad comportamentul 2186, s-ar putea totusi sa nu fie potrivit, mai aprofundez.

Referitor la rezolvarea deadtime....doua comparatoare care sa primeasca pe cate o intrare semnalul sinusoidal de comanda,pe cealalta o tensiune fixa,reglabila.Cand semnalul sinusoidal ajunge aproape de zero,sub valoarea tensiunii reglata pe cealalta intrare,comparatoarele sa blocheze de ex,generatorul de semnal triunghiular.S-ar taia astfel din inceputul si sfarsitul fiecarei semialternante,obtinandu-se un deadtime reglabil.
Link spre comentariu

Programul meu genereaza un deadtime de 500ns intre toate tranzitiile de pe ramurile puntii H - ca informatie pentru meseriasi....

Deoarece ai la dispozitie un tool foarte puternic de generare a ce vrei tu (uC, nu ne-ai zis model si clock, sau nu am vazut eu unde scrie?) si poti genera orice delay , ai putea apela la o solutie complet software, si folosesti 4 porturi out diferite ale uC , care sa comande individual MOS-ii (evident cu totem-pole sau driver dedicat, cum doresti). Obligatoriu delay-urile setate prin interrupt , nu cu wait, nop, etc.Astfel poti impune si functia de ENABLE pe care in schemele anterioare nu am vazut-o, nici in Half nici in Full bridge desenate anterior aici. Fara ea, conductia simultana ocazionala e imposibil de evitat , la sarcini grele, si se lasa cu artificii. H-bridge-ul extern mai poate folosi si o protectie suplimentara cu poarta logica intercalata pe grilele mos-ilor sa nu se deschida simultan, datorita vreunui spike care depaseste capacitatea de sink/source a portului din uC.
Link spre comentariu
Vizitator flopir

Obligatoriu delay-urile setate prin interrupt , nu cu wait, nop, etc.

Daca programul e bine facut, nu vad care e problema de cum e generata pauza. Vorbim aici de un controler la 8 si respectiv 4Mhz, pentru care executia unei instructiuni dureaza 0.5(1)us (f/4). Pentru a implementa un delay de 5-6us e cam greu cu intreruperi (sau poate nu stiu eu :limb: ).

 

Astfel poti impune si functia de ENABLE pe care in schemele anterioare nu am vazut-o, nici in Half nici in Full bridge desenate anterior aici. Fara ea, conductia simultana ocazionala e imposibil de evitat , la sarcini grele, si se lasa cu artificii. H-bridge-ul extern mai poate folosi si o protectie suplimentara cu poarta logica intercalata pe grilele mos-ilor sa nu se deschida simultan, datorita vreunui spike care depaseste capacitatea de sink/source a portului din uC.

Pe ultima schema postata am o intrare care se cheama INV_ON si care se poate folosi pentru protectie. Se poate implementa si alta intrare, folosind o intreupere externa de exemplu, dar cred ca ideea ta de a folosi porti logice pe iesire e mai OK.

 

Nimeni nu contesta simplitatea si flexibilitatea controlerului. Dar trebuie sa intelegi ca pentru cei care nu cunosc cum sa modifice programul, acea flexibilitate nu mai exista. E batut in cuie. Analogic, trebuie doar inteles, fiecare poate adapta apoi solutia conform intereselor. Evident insa, putem abandona calea analogica si sa abordam ce mai ramane pe langa controler, daca asta se doreste. Poate ar fi mai interesant, cred ca doua programe diferite ar acoperii majoritatea nevoilor.

 

NU am pretentia ca ar fi o metoda mai buna decat cea analogica, este doar o alternativa.

Motivul pentru care am postat programul este pentru a fi testat si criticat de cate altii cu mai multa experienta si resurse (in special timp) decat mine. Eventualele modificari propuse sunt dispus sa le fac eu si sa postez aici (in limita posibilitatilor uC-ului si ale mele :nas: ).

Link spre comentariu
Vizitator pisica matache

NU am pretentia ca ar fi o metoda mai buna decat cea analogica, este doar o alternativa.Motivul pentru care am postat programul este pentru a fi testat si criticat de cate altii cu mai multa experienta si resurse (in special timp) decat mine. Eventualele modificari propuse sunt dispus sa le fac eu si sa postez aici (in limita posibilitatilor uC-ului si ale mele :nas: ).

Desi sunt adeptul analogicului,trebuie sa recunosc ca pare mult mai simplu cu microC.Eu cred ca trebuiesc testate ambele variante,fie si numai ca sa putem face o comparatie obiectiva.Desi am ''jurat'' sa nu ma ating de microC,as fi tentat sa testez.Daca exista posibilitatea sa-mi trimiti o astfel de jucarie,gata programata,desigur contra cost,eu sunt dispus sa testez si varianta asta,pe langa cea analogica.
Link spre comentariu
Vizitator flopir

Programarea unui microcontroler este o operatie foarte simpla daca ai un calculator ceva mai vechi cu un port serial. Programatorul este usor de facut si poate programa o intreaga familie de uC. De exemplu eu am unul pentru PIC (facut inca din facultate) si unul pentru Atmega. uC-ul folosit de mine pentru acest proiect (16F84) se pare ca nu se mai fabrica, pentru ca se vinde cu un pret penibil de mare (in jur de 25RON). L-am folosit pentru ca mai avem cateva prin casa. Monentan lucrez la o portare a softului pe o varianta mult mai ieftina (pe undeva la 3-4RON). Inca nu m-am hotarat pe care...

Link spre comentariu
Vizitator smilex

Daca luam varianta de 20kHz+50Hz schema de principiu ar fi asta: post-1-139829528513_thumb.gif Am stabilit 335Vcc necesari in ideea ca se depaseste cu triunghiularul numai 5% din maxima sinusoidei astfel putand reface varful de 320V al 230Vca. Mult mai usor de inteles ar fi daca se imparte pe timpi, in care caz pentru semialternanta pozitiva avem partea stanga iar pentru cea negativa, partea dreapta a schemei: post-1-139829528516_thumb.gif Referinta in stabilirea pozitivului si negativului alternantei am luat-o ca fiind mediana comutatoarelor pe 50Hz (iesirea din dreapta a 230Vca). Dupa cum se vede, pentru alternanta pozitiva (stanga) functioneaza doar MOS-ul sus, din cel jos ramane dioda. Comutatorul C este inchis timp de cele 10ms ale semialternantei. Este un buck clasic. Pentru a reface semialternanta pozitiva se pleaca cu umplere 0%, se atinge 95% pentru maxim si se revine la 0% pentru 0Vca la iesire. Pentru refacerea semialternantei negative (dreapta) se pleaca tot cu 0Vca la iesire dar pentru ca comutatorul D conduce, cei 0V la iesire se fac cu 100% umplere fata de masa. Se micsoreaza umplerea la 5% pentru maximul semialternantei negative, apoi se creste la 100% pentru 0Vca. Deci ciclul complet fata de masa al ramurii de 20kHz este intr-o prima faza inhibarea intrarii B si umplere in A de 0% - 95% - 0% iar apoi inhibare A si umplere in B de 100% - 5% - 100%. Dar intre impulsurile de 20kHz nu e necesar deadtime, e un buck cu umplere de maxim 95% in oricare varianta. Comanda ar fi asa: post-1-139829528518_thumb.gif Abscisa trebuie atinsa de triunghiularul de 20kHz dar nu depasita in ambele semialternante. Daca este depasita, tensiunea sare de la o valoare pozitiva la una negativa prea repede, se lateste sinusoida de 50Hz rezultata si creste valoatea efectiva. Daca nu este atinsa, trecerea prin zero dureaza prea mult iar sinusoida se ingusteaza si scade valoarea efectiva. Ideal ar fi sa o atinga dar sa nu o depaseasca. Varfurile sinusoidei trebuie depasite cu 5%.Daca va uitati la timpi si umpleri, va dat seama ca e dificil de realizat analogic asa ceva, de unde si complexitatea necesara a schemei din link. Dar ce nu vad eu bine este stabilitatea analogica. Se preteaza cu microcontroler. Are avantajul unui singur filtru iar driverul de pe 50Hz nu e necesar sa fie performant. Poate ar necesita un deadtime total pe 20kHz la comutarea pe 50Hz.Eu doream sa abordam analogic alta varianta: post-1-13982952852_thumb.gif Schema e mai simpla. A sa lucreze cu C si B cu D pentru a putea cupla cele doua filtre pe acelasi miez (ar fi perfect). Comanda ar fi asta: post-1-139829528522_thumb.gif Aici insa, 0Vca la iesire se face cu umplere de 50% pe ambele ramuri. Si e necesar un deadtime intre comenzi pe 20kHz. Daca se depaseste cu 5% varful sinusoidei, ar veni 10% pierduti deci 350Vcc pentru 230Vca la iesire. Se mai poate cu 320-330Vcc prin modificarea sinusoidei astfel incat efectivul de 230Vca sa fie atins cu sinusoida un pic turtita. (?) Asta este abordabila analogic, zic eu. Si imi pare mai stabila in timp. Asta doream sa obtin cu schema postata. Problema este ca doream folosirea IRS2186 care are resurse mari, dar nu are deadtime. De obicei, IR-urile cu o intrare au deadtime, dar nu au resurse. Solutiile ar fi doua: 2186 cu filtre de intarziere la intrare, sau IR cu o intrare (+deadtime) si drivere TCA. Dar nu TCA fara deadtime.Deci, analogic sau nu?

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări