Jump to content

Flopi

Members
  • Content Count

    53
  • Joined

  • Last visited

  • Days Won

    3

Flopi last won the day on November 19 2016

Flopi had the most liked content!

Community Reputation

4 Neutral

About Flopi

  • Rank
    Membru

Profile Fields

  • City
    Ploiesti
  1. Pe arduino nu am lucrat... eu m-am jucat cu uC-uri Atmel in C si asm folosind CVAVR. Trebuie sa fie ceva prin documentatia arduino dar nu am timp de sa ma apuc (si) de asta.Vad ca ai scri codul in C, daca gasesti cum se definesc intreruperile pentru arduino sau pentru compilatorul pe care il folosesti, te pot ajuta...
  2. Pentru a creste viteza (substantial) recomand ca citirea analogica si calculul legat de MPPT sa le faci folosind intreruperi (de exemplu poti initia conversia ADC printr-o intrerupere de ceas, succesiv pe fiecare canal, iar calculul sa il faci in intreruperea ADC...). In programul principal te poti ocupa relaxat de afisare, de comanda PWM, etc.
  3. Daca vrei sa faci limitare puls cu puls ai putea sa folosesti un traf de curent cu doua primare, unul pentru fiecare ramura, cu sensuri contrare. Taful de curent va functiona tot in regim push-pull, deci iti trebuie redresare dublu alternanta la iesirea lui. Nu am experienta cu invertoare comerciale dar cred ca ar merge...
  4. Nu prea inteleg calculul tau... oricum 12V ar trebui sa fie 13.8V - cat are un acumulator cu Pb proaspat luat de la incarcat (asta daca nu vrei sa il conectezi la masina cu motorul pornit unde ai 14.5V). Frecventa driverului de 25Khz e cam mica si rezulta un Ton max =1/F=40us (presupun factor de umplere 100%). Pentru un miez cu 2.5cmp, 12V, 25Khz si 2 spire rezulta B=0.96T... Deci nu stiu cum ai calculat... Tabelele fabricantilor sunt foarte utile pentru alegerea lui B. In ele sunt stabilite desitatile campului in functie de frecventa astfel incat pierderile in cupru sa fie comparabile cu pierderile in miez. Pentru un miez necunoscut e ok sa alegi 0.24T iar la frecventa poti sa mergi fara frica pana pe la 40-50Khz (eu am facut unul pe un tor de la chinezii la 80Khz). Singurul risc ar fi pierderile in miez, care cresc cu frecventa, dar nu cred ca e cazul... Deci pentru miezul tau cu 2.5cmp, la 13.8V si 40Khz(driver) ar rezulta cam 6 spire (pt. B=0.23T).
  5. E vorba despre alegerea densitatii maxime a campului magnetic (B) impreuna cu estimarea corecta a tensiunii maxime la care va fi alimentat si a T_on_max, in calculul numarului de spire: N=U*Tmax/(S*B). Saturatia miezului e data de atingerea densitatii maxime a campului magnetic suportata de miez (in jur de 0.35T pentru ferita). Dimensiunea miezului nu conteaza atat cat incape bobinajul si poate disipa pierderile.
  6. Saturarea nu apare la forward din cauza ca trafurile nu sunt indentice. Atat cat este bine calculat numarul de spire si sunt luate marje generoase nu ar trebui sa apara probleme. Micile diferente se transforma in caldura (pierderi) - se va incalzi unul mai mult decat celalalt. Majoritatea invertoarelor folosesc trafuri cu primarele in paralel (cu mosfeti si condensatoare pentru fiecare dar comanda comuna). Cele mai multe nu au bobina de iesire. Inductanta de scapari e destul... Iti spun din experienta ca e mai bine asa.
  7. Nu e vorba despre protectia datelor, asta se poate realiza activand un fusebit. Bootloader-ul este un soft care practic pune uC-ul sa se autoprogrameze folosind un canal de comunicatii implementat (USB, COM, ETHERNET, etc.). De asemena poate ajuta la debug-ul unui program. Bootloaderul ruleaza doar in uC si de obicei vine cu platforma de dezvoltare (ex. Arduino). Dupa teste, programul se pune direct in controler folosind un programator extern, asta pentru ca bootloaderul ocupa si el memorie si introduce unele intarzieri in pornirea softului propriuzis.
  8. Masurarea analogica nu pune probleme. Se poate face in afara intreruperii. Provocarea este la ajustarea prin calcule a timpilor din tabel, mai ales ca nu poti sa reduci timpii astia sub durata intreruperii, iar calculele lungesc intreruperea.. deci iata problema... Nu zic ca nu se poate, dar trebuie facut un compromis intre calitatea semnalului, numarul de trepte de reglaja a amplitudinii, viteza buclei etc. Cu alte cuvinte multe experimente si simulari... Cam toate uC din gama 16F sunt cam lente pentru aplicatia asta, desi cred ca se poate... dar fara bucla de control. Cel de la ST, sugerat de tine, nu il cunosc dar pare destul de puternic. Totusi, sugestia mea ar fi sa mergi pe unul care are un sistem PWM mai avansat. Eu am experimentat cu 18F14k22. E tot ieftin si are un PWM destul de ok. Pentru treburi serioase merita sa incerci un dsPIC, de exemplu 30F1010/2020 - cu asta poti sa faci ce reactie vrei... In matlab nu folosesc un toolbox anume. Am scris efectiv un program (destul de stufos) care face calculele. Puteam sa il scriu la fel de bine si in C, dar sunt foarte multe facilitati "la gata" in matlab si in plus am ceva experienta cu el din facultate. Refacerea semnalului prin filtrare am facut-o tot cu matlab-ul (analitic) - acelasi program care genereaza timpii simuleaza si refacerea semnalului.
  9. Asta asa e. Eu nu am incercat cu IGBT pana acum dar mosfetii (IRFP460) stau la mine reci si la 200W. Vezi sa nu fie de la fusebitul CKOPT...
  10. @nel65 Asta e fisierul atmega8_sin_12M_20K_94_1u-DT_NETESTAT.hex.zip NU am testat nimic asa ca NU baga 5KW din prima.... @cristi7521 Pot sa iti dau tabelul (cu putina maiestrie il poti extrage singur din hex) dar nu cred ca te ajuta prea mult. In tabel intarzierile sunt date in numarul de perioade de tact la 12Mhz. Relevant ar fi tabel cu intarzieri in us sau ceva asemanator. Daca esti interesat, am sa modific programul sa iti generez un tabel personalizat. Am nevoie de frecventa SINPWM pe care ti-o propui si eventual cum vrei sa implementezi asta (si pe ce). Daca nu exista interes aici poti sa o faci pe privat... dar poate mai sunt si altii interesati... Referitor la PWM-ul controlerului, sunt mai multe motive. Unul l-am descris intr-un post anterior... sinusul ar trebui generat in trepte (intervale in care PWM-ul are aceilasi factor de umplere). De aici probleme cu armonici nedorite, etc. Un alt motiv este faptul ca aceste controlere nu suporta iesiri (PWM) complementare cu dead time. Asa ca am ales sa generez manual toate 4 iesirile, iar factorul de umplere se modifica la fiecare impuls. Pentru a intelege foarte bine mecanismul de refacere prin filtrare a semnalului util, ai nevoie de ceva notiuni de teoria semnaleor (sau ce denumire o avea acum prin facultati)...
  11. La ultima varianta, cea de 12Mhz, dead time-ul este undeva in jur de 600ns. Eu zic ca e suficient pentru orice IGBT, dar daca vrei il modific...
  12. Esantioane nu e corect spus (mai degraba impulsuri). Metoda e descrisa destul de detaliat pe net. Sinusoida (o semiperioada) se intersecteaza cu un semnal dinte de fierastrau . Frecventa acestuia este egala cu frecventa dorita pentru semnalul SIN-PWM. De aici rezulta duratele impulsurilor on, respectiv off pentru semnal. Calcularea valorilor o fac cu o implementare proprie in matlab. Astea se trec intr-un tabel si se folosesc in programul din controler pentru generarea intarzierilor (eu merg pe intreruperea TMR0... dar nu e relevant). NU folosesc functiile PWM ale controlerului, generarea se face puls cu puls. Pentru iesire generez pe o latura a puntii H impulsuri complementare cu dead time (pentru asta folosesc NOP-uri) si pe cealalta impulsuri de 50 Hz (tot cu dead time). Cam asta e in linii mari... Implementarea asta (pe uC-uri ATMEL/PIC slabute) nu e pentru incepatori in ale uC-urilor si in ale programarii. Trebuie sa cunoasteti si sa intelegeti destul de profund arhitectura microcontrolerului deoarece timpii sunt critici. Eu am folosit un mix de C si asm. Ofer cu placere sprijin pentru entuziasti, in limita timpului disponibil, dar NU am sa ofer niciodata surse... SUCCES !
  13. Eu zic sa analizezi mai bine treaba cu driverul... Traful in cazul asta nu se prea aplica iar driverul discret e o provocare (mai ales partea flotanta). Cat despre "cumulul de valori medii" sunt de acord cu tine. Totul tine de cerintele pe care le impui invertorului. Daca se pune accent pe distorsiuni armonice mici si eficienta maxima, atunci nu ai ce cauta cu trepte (rare), Explicatia, in mare, este ca treptele introduc o armonica la f=50hz * nr. de trepte, care cu cat e mai aproape de 50 Hz e mai greu de filtrat (si ineficient economic). Primul meu proiect de invertor sinus a fost cu PIC16F84, in vreo 80 trepte Ulterior, cautand o solutie cat mai ieftina si eficienta am ajuns la Attiny si atmega8. Aici am implementat un SINPWM pe 3 nivele .(vezi https://www.wpi.edu/Pubs/E-project/Available/E-project-042711-190851/unrestricted/PWM_Techniques_final.pdf) Cele mai avansate invertoare folosest DSP-uri in care este implementata o bucla PID ( sau mai multe ) pentru a compara in timp real iesirea cu un semnal sinusoidal de referinta. (http://ww1.microchip.com/downloads/en/AppNotes/01279B.pdf)
  14. @andreigradu - nu stiu cum ai obtinut oscilograma aia... in poze nu vad nici o punte H, driver, etc. In softul asta variatia PWM se face discret ( de la puls la puls) si nu in trepte (https://en.wikipedia.org/wiki/Pulse-width_modulation) Am programat mai multe versiuni, pentru frecvente diferite, de dragul stiintei si pentru ca la un moment dat nu aveam quart de o anumita frecventa...
  15. E vorba de CKOPT la Atmega8 - trebuie activat. Conform datasheetului acesta creste amplitudinea oscilatorului si cupleaza condensatori interni pentru quart. Trebuie folosit pentru frecvente mai mari de 8Mhz si pentru medii zgomotoase (ca un invertor ...). Valoarea quartului ESTE CRITICA. Am programat variante pentru 12 si 20Mhz. Nel65 - poti sa postezi si ultima varianta pe 12Mhz daca ai verificat-o si e ok.
×
×
  • Create New...

Important Information

We use cookies and related technologies to improve your experience on this website to give you personalized content and ads, and to analyze the traffic and audience of your website. Before continuing to browse www.tehnium-azi.ro, please agree to: Terms of Use.