Se sei già registrato           oppure    

Orario: 02/05/2024 14:26:24  

 

Energia Alternativa ed Energia Fai Da Te > Applicazioni E Realizzazioni Pratiche

VISUALIZZA L'ALBUM

Pagine: (167)  < ...  70   71   72   73   74   75   76   77   78   79   [80]   81   82   83   84   85   86   87   88   89   90  ...>    (Ultimo Msg)


Homemade Inverter "modulo DC/AC"
FinePagina

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 07/02/2015 20:47:37

Ciao inverter90,

Mi spiace non essere riuscito ad andare avanti ma tra lavoro e famiglia non ho avuto possibilità...

E purtroppo dovrai pazientare ancora un po', poiché anche domani non ci sarò...

Speriamo lunedì riesco a proseguire...

Però mi piace il gruppo che si è formato, se continuiamo così finiremo per realizzare un bel firmware da mettere a disposizione della community !!!

Sperando che i nostri amici Scinty e Kekko (e se ci sono altri mancora meglio) ci diano le giuste dritte visto che loro hanno affrontato il discorso anche da un punto di vista pratico, oltre che teorico...

Ciao !



---------------
C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 08/02/2015 07:25:56

Tranquillo BellaEli fai con calma, gia il tempo che ci stai dedicando è tanto...Ok a presto alloraFaccine/Smileys_0008.gif



---------------
Il niente è impossibile finchè non ci provi!!!

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 08/02/2015 07:28:02

CITAZIONE (BellaEli, 08/02/2015 07:25:56 ) Discussione.php?55031252&80#MSG1215




Sperando che i nostri amici Scinty e Kekko (e se ci sono altri mancora meglio) ci diano le giuste dritte visto che loro hanno affrontato il discorso anche da un punto di vista pratico, oltre che teorico...



Speriamo di si tutto fa buon brodo...



---------------
Il niente è impossibile finchè non ci provi!!!

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 13/02/2015 00:56:01

Che spettacolo ....

Leggendo I testi di BellaEli mi è tornata la voglia di sperimentare ....e tornare a capire il tre livelli .

Ripropongo lo schema di principio

http://www.energialternativa.info/public/newforum/ForumEA/A/Nuovo%20Inverter_2.jpg

Un solo modulo per avere una pura monofase 220Vac.
Il neutro resta lo stesso della rete e cmq se non connesso alla rete deve essere connesso ad una palina di massa.
Questo per garantire il corretto funzionamento degli interuttori differenziali .

Oggi ho realizzato un piccolissimo dc converter multi uscita per pilotare I 4 driver exb841 optoisolati con il cuore dell'inverter.

I driver di eccezzionale qualità e dal prezzo non proibitivo sono in grado di rilevare autonomamente eventuali corti ,grazie alla misurazione del tempo di entrata in saturazione.
Quindi ancor prima della completa saturazione il driver interviene.

Le protezione finale sarà cmq gestita dal progetto protezione rete descritto nella sezione Arduino.

Ma cosa manca ?

Un robusto step-up .... da 3Kw ... (e qui ho fatto dei test .... facendo I saltI mortali leggendo solo 300mA di assorbimento base ..... ,ma ancora non voglio sbilanciarmi )

e un buon firmware ....

Inizialmente avevo pensato a 4 uscite Pwm ... ,ma è fuori dalle mie capacità creare un programma del genere.
Quindi ho optato in due uscite Pwm che prima di raggiungere I driver passano sulle delle porte AND che avranno il compito di controllare quale dei Mosfet dovranno operare in quell'istante...

Grazie Bella
Elettro

 

scinty

Avatar
GigaWatt


Gruppo:Utente
Messaggi:734

Stato:



Inviato il: 13/02/2015 21:01:48

per alimentare i driver io uso questi e sono eccezzionali!!!
perchè 4 uscite pwm sono un problema? usa un phase shift a 500kHz con due step-up da 400V con nuclei e65 vai anche oltre i 3kW



Immagine Allegata: Immagine.jpg
 
ForumEA/D/Immagine.jpg



---------------
14 pannelli mono da 250Wp 24 pannelli amorfi Sharp da 130Wp banco batterie 48V 225Ah survoltore 5000W homemade inverter 6000VA trifase homemade modalità di interconnessione ibrida Scinty-Kirchoff (nodo DC) secondo inverter di supporto mppt inverter Sunny boy 3000(nodo AC)

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 13/02/2015 22:27:21

CITAZIONE (scinty, 13/02/2015 21:01:48 ) Discussione.php?55031252&80#MSG1219

per alimentare i driver io uso questi e sono eccezzionali!!

Molto belli ,ma ho preferito andare sul classico sg3525 con mezzo ponte .Due spiccioli e già disponibili nel cassetto


CITAZIONE

perchè 4 uscite pwm sono un problema?

Far gestire al micro 4 pwm a 15Khz tenendo in considerazione anche il dead time tra le varie configurazioni era fuori dalla mia portata...
Era... perchè sbattendoci il muso sono riuscito nell'impresa ,ma non mi piace affatto.
Per farmelo piacere dovrei andare su micro più prestante almeno di risorse.....,ma sò purciaro

Ed ho optato in una soluzione semplice ,ma funzionale .
Utilizzo due uscite PWM assegnate allo stesso Timer ,ma in contrapposizione settandole in Phase Correct PWM Mode.
Cosi posso gestire 500 passi di duty e regolare a piacimento il dead time .
Il segnale in fase raggiunge i due igbt superiori del modulo ,mentre invece il pwm invertito i due inferiori...
Gli igbt centrali sono sempre pronti ad operare dipendeti dal segnale pwm ,invece gli esterni operano in funzione se dobbiamo ricreare una semionda positiva o negativa .... semplice no

Tutto questo con un Atmega ... 32 ....328 ...644 ... insomma con tutti .

Il prossimo passo è montare tutto e fare delle prove.

La mia intenzione è non mettere nessun feedback ,ma ricreare un'onda sinusoidale dipendente dalla tensione in ingresso .
Saranno gli step-up a mantenere la tensione costantemente a 320V e anche se non ci riusciranno avrò l'aiuto della rete ..

Sisi il nodo HV è solo tra step-up e rete ... i pannelli sono gestiti lato batterie ....

 

scinty

Avatar
GigaWatt


Gruppo:Utente
Messaggi:734

Stato:



Inviato il: 13/02/2015 22:53:52

mmm... l'alimentazione dei driver è molto importante specie nel mezzoponte tre livelli in quanto tra le uscite devi mantenere la più alta tensione di isolamento possibile, quindi sul trasformatore devi mettere il foglio di schermo a massa tra i vari avvolgimenti sperando che le uscite non si accoppino magneticamente dando disturbi ai driver, da me è stato semplice perchè ne ho messo solo tre per gli igbt superiori accettano in ingresso anche 4,5V senza dare disturbi in uscita, con il modulo FSAM non li uso nemmeno più perchè ha bisogno un alimentazione singola di 15V



---------------
14 pannelli mono da 250Wp 24 pannelli amorfi Sharp da 130Wp banco batterie 48V 225Ah survoltore 5000W homemade inverter 6000VA trifase homemade modalità di interconnessione ibrida Scinty-Kirchoff (nodo DC) secondo inverter di supporto mppt inverter Sunny boy 3000(nodo AC)

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 14/02/2015 13:29:39

Non si finisce mai di imparare

Per la separazione galvanica credo di averla garantita grazie alla fisica distanza degli avvolgimenti sul nucleo sovradimensionato (perdo 20mA ....pazienza per ora )

Ma tengo il prezioso consiglio della schermatura.

Se invece ahimè avviene un accoppiamento magnetico sarò costretto a separare i nuclei .....

Pensavo sull'eventuale accoppiamento .......
Anche se avvenisse produrrebbe una variazione di tensione sull'avvolgimento niente di più.
Calcolando che ogni uscita è cimata da uno zener per oltre 5V dovrei fare sogni tranquilli.

Credi che posso riposare bene ?

 

mismaett
Watt


Gruppo:Utente
Messaggi:60

Stato:



Inviato il: 14/02/2015 16:25:34

elettro,

centra poco lo so, ma i driver sono tutto...

arieccome...

fod8332....mi pare uno ottimo per igbt.

chi lo conosce?

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 16/02/2015 06:46:04

Bene qua si procede con discorsi pesanti raga!!!

Sto ancora praticando con il PID, che ne pensate di queste formule sono giuste?

[spoiler]byte sine256[] =
{
0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,
18,20,21,23,25,27,29,31,33,35,37,39,42,44,46,49,51,54,56,59,
62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,
121,124,127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,
181,184,187,190,192,195,198,200,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,
158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,
96,93,90,87,84,81,78,76,73,70,67,64,62,59,56,54,51,49,46,44,
42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,
7,6,5,5,4,3,2,2,1,1,1,0,0,0,0
};

#define pwmA 9
#define pwmB 10
int PWM_Out;
int pwm;
int valore=4;//valore feedback desiderato
int err; //errore rilevato
int t; //tempo di campionamento
int Kp; // Guadagno proporzionale
int Ki; // Guadagno Integrale
int Kd; // Guadagno Derivata
int P; //PROPORZIONALE
int D; //derivata
int I; //INTEGRALE

void setup()
{
// PWM sui pin 9 e 10 a 31,2KHz
setPwmFrequency(pwmA, 1);
setPwmFrequency(pwmB, 1);

}

void loop()
{
analogWrite(pwmA, PWM_Out);
delayMicroseconds(100);//settare in base agli igbt usati
analogWrite(pwmB, PWM_Out);
delayMicroseconds(100);//settare in base agli igbt usati


}
// lettura partitore su A1
int val = analogRead(A1);//leggi da pin analogico 1
float feedback = val * (5.0 / 1023.0); //converti nella variabile feedback il valore letto su A1

err=valore-feedback;

P=err * Kp;
I=I+(err * t)*Ki;
D=(err-err+(pwm)/t)*Kd;

pwm= pgm_read_byte_near(sine256);

PWM_Out= P+I+D;





}[/spoiler]



---------------
Il niente è impossibile finchè non ci provi!!!

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 16/02/2015 09:27:35

Per le formule non saprei dobbiamo aspettare BellaEli .
Invece per il programma ci sono diverse cose che non mi tornano.

L'array che usi come tabella credo che deve essere PROGMEM per usare l'istruzione pgm_read,almeno che non leggi la tabella variando l'indice dell'array.

Il loop che hai formato con i due analogwrite e delay creano in uscita due onde sfasate ma non in contrapposizione di fase con dead time .

Prova a disegnare come dovrebbero essere comandati i mosfet per capire se sei sulla giusta strada.

Cmq con il mode fast pwm non riuscirai a gestire il dead time.
Per farlo devi passare al pwm phase correct

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 16/02/2015 21:15:55

Ciao ragazzi,

perdonate l'assenza, non vi ho abbandonato, solo maledetti ordinari impegni !!!

x Inverter90:

Hai inquadrato l'implementazione, tuttavia c'è da fare qualche correzione per alcune considerazioni di aspetti non ancora affrontati...

In settimana spero di riuscire a continuare con la miniguida, a presto, Eligio.



---------------
C'è un limite al fai da te ???
Si, ma lo stabiliamo noi !!!

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 17/02/2015 06:55:20

Ciao a tutti...
Si Elettro come configurazione vorrei usare questa

http://www.energialternativa.info/public/newforum/ForumEA/D/PWM_doppio.jpg

Per quanto riguarda il codice voglio ricordare che sto imparando qualcosa grazie a voi, quindi piu di qualche cosa non la so.Ma vediamo se ho capito,per quanto riguarda l'array intendevi questo?(PROGMEM prog_uchar sine256[]);

E per phase correct intendi programmare i timer direttamente dal registro(come mi disse scinty) e usare questa istruzione?(OCR1A = ; OCR1B =; );

(Perdonate le domande stupide, ma sicuramente mi aiuteranno a capire piu cose)

x BellaEli non c'e problema quando avrai tempo una bella miniguida è piu che accettata (anche dalla comunity)..



---------------
Il niente è impossibile finchè non ci provi!!!

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 19/02/2015 21:51:51

CITAZIONE (inverter90, 17/02/2015 06:55:20 ) Discussione.php?55031252&80#MSG1227

Ma vediamo se ho capito,per quanto riguarda l'array intendevi questo?(PROGMEM prog_uchar sine256[]);

E per phase correct intendi programmare i timer direttamente dal registro(come mi disse scinty) e usare questa istruzione?(OCR1A = ; OCR1B =; );



Sisi in entrambe.

Come dice scinty devi operare direttamente sui registri per avere una maggiore risoluzione (il pwm sui pin9 e 10 puoi raggiungere i 1024 step a 15Khz in fast pwm oppure 511 step a 15Khz in pwm phase correct)e per avere un controllo totale del pwm.

Nel secondo caso ad esempio (phase correct) puoi gestire anche il dead time spegnendo in anticipo il canale OC1B in controfase

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 20/02/2015 08:36:40

ok Elettro quindi potrebbe essere qualcosa del genere?

PROGMEM prog_uchar sine256[] =
{
0,0,0,1,1,1,2,2,3,4,5,5,6,7,9,10,11,12,14,15,16,
18,20,21,23,25,27,29,31,33,35,37,39,42,44,46,49,51,54,56,59,
62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,
121,124,127,130,133,136,139,143,146,149,152,155,158,161,164,167,170,173,176,178,
181,184,187,190,192,195,198,200,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,
158,155,152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,
96,93,90,87,84,81,78,76,73,70,67,64,62,59,56,54,51,49,46,44,
42,39,37,35,33,31,29,27,25,23,21,20,18,16,15,14,12,11,10,9,
7,6,5,5,4,3,2,2,1,1,1,0,0,0,0
};
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))

#define PWM_OUT_2 10
#define PWM_OUT_3 9
#define deatTime1 100
#define deadTime2= 100
int PWM_Out;
int pwm;
int valore=4;//valore feedback desiderato
int err; //errore rilevato
int t; //tempo di campionamento
int Kp; // Guadagno proporzionale
int Ki; // Guadagno Integrale
int Kd; // Guadagno Derivata
int P; //PROPORZIONALE
int D; //derivata
int I; //INTEGRALE
const double refclk = 31376.6;

void setup()
{

pinMode(PWM_OUT_2, OUTPUT);
pinMode(PWM_OUT_3, OUTPUT);

setup_timer1();


}

void loop()
{

void setup_timer1(void)
{

sbi (TCCR1B, CS10);
cbi (TCCR1B, CS11);
cbi (TCCR1B, CS12);

cbi (TCCR1A, COM1A0);
sbi (TCCR1A, COM1A1);
cbi (TCCR1A, COM1B0);
sbi (TCCR1A, COM1B1);
sbi (TCCR1A, WGM10);
cbi (TCCR1A, WGM11);
cbi (TCCR1B, WGM12);
cbi (TCCR1B, WGM13);
}

{
// lettura partitore su A1
int val = analogRead(A1);//leggi da pin analogico 1
float feedback = val * (5.0 / 1023.0); //converti nella variabile feedback il valore letto su A1

err=valore-feedback;

P=err * Kp;
I=I+(err * t)*Ki;
D=(err-err+(pwm)/t)*Kd;

pwm= pgm_read_byte_near(sine256);

PWM_Out= P+I+D;


OCR1A = (PWM_Out - deadTime);
OCR1B = (PWM_Out + deadTime);


}



Ma il deadTime come si calcola?Faccine/Smileys_0006.gif



---------------
Il niente è impossibile finchè non ci provi!!!

 
 InizioPagina
 

Pagine: (167)  < ...  70   71   72   73   74   75   76   77   78   79   [80]   81   82   83   84   85   86   87   88   89   90  ...>    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum