EnergiAlternativa

Page Index Toggle Pages: 1 ... 116 117 [118] 119 120 ... 219 Send TopicPrint
Very Hot Topic (More than 500 Replies) Homemade Inverter (Read 1255704 times)
BellaEli
Ex Member
****


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1755 - 21.04.15 at 14:48:28
Print Post  
Quote:
Ci siamo, ci siamo...se mi abbassi il valore a 20 elementi ottengo un errore bassissimissimo!!!


Ho usato 20 elementi solo per pigrizia !!!

Comunque per soli 54 byte l'errore è troppo grande !!!


Per farti contento, ho provato a rendere dinamiche le due variabili SOGLIA e PICCO_MASSIMO con le seguenti formule:

ICR1 = (320000 / CAMPIONAMENTI_SINUSOIDE) - 1

PICCO_MASSIMO = int (float (ICR1) * 70,0 / 100,0)

Totalmente incomprensibile a chiunque non abbia letto il topic ma funzionano.

Solo che, non bisogna dimenticare che più si diminuiscono i campionamenti più si abbassa la frequenza del PWM e più si aumenta la risoluzione del PWM stesso e viceversa.


Spiegazione:

Tempo_Campionamento (Tc) = Periodo Sinusoide 50 Hz / Numero Campionamenti = 0,02 / 320

Tempo_Ciclo_Clock (Ck) = 1 / Frequenza_Clock = 1 / 16.000.000

ICRI = (Tc / Ck) - 1 = (0,02 / (1 / 16.000.000)) - 1 = 0,02 * 16.000.000 / 320 - 1 = 320.000 / 320 - 1 = 999

Il picco massimo, invece, al momento è settato semplicemente al 70% del valore massimo raggiungibile dal PWM (ovvero ICR1) per gestire il feedback. Su tale valore, eventualmente, ci torniamo successivamente...


Che dici le mettiamo nel Setup o le lasciamo come costanti #define ?
  
Back to top
 
IP Logged
 
NonSoloBolleDiAcqua
Ex Member
*****


--------

Gender: Male
Zodiac sign: Scorpio
Re:Homemade Inverter "modulo DC/AC"
Reply #1756 - 21.04.15 at 14:55:40
Print Post  
Dimmi la verità...vuoi vedere se sto attento...Cheesy
Allora, con 20 elementi ho un errore massimo del 4 per mille (linearizzo rispetto il 20esimo elemento)...questo è il grafico...ho fatto anche due distribuzioni per andare oltre e compensare l'errore (27esimo). Provare per credere:



Un errore espresso in millesimi è decisamente inferiore alla tolleranza del PWM del processore. Se non ti ho convinto...possiamo andare oltre...ma conviene concentrarsi sull'ottimizzare il resto dei vettori.

Cmq con un errore del 5 per mille possiamo spingerci fino al 29esimo elemento del vettore e risparmiamo altri 58 byte. Spiego meglio  a tutti il concetto, nella speranza di essere capito: la pendenza è ottenuta dal 26esimo elemento che vale 330 diviso 25 (che non sono altro che le parti che crea)...quindi il rapporto incrementale vale 13,2 ...cioè sommando ad ogni elemento 13.2 otteniamo i primi 29 elementi della sinusoide, ovviamente viene fatta una operazione di moltiplicazione. Chiaramente ora sto procedendo con i valori, nel codice ci saranno gli indici e tutto sarà indipendente dalla lunghezza del vettore...perchè l'errore non cambia.

Questa è la tabella dei primi 29 elementi del vettore con i valori che si ottengono mediante la retta (o anche con una semplice moltiplicazione) con i relativi errori. Si può trovare , probabilmente una distribuzione ancora più ottimale...mi occorre tempo per implementare la serie...ma il concetto è questo:
se va bene una tolleranza del 5 per mille...si risparmiano altri 58 byte, quindi nel caso specifico invece di 160 elementi se ne utilizzano solo 51 :drunk.gif:!


Questa è la tabella dei 29 elementi:

Accendiamo? Cheesy
Se avete dubbi fate un fischio!
Smiley


Quote:
Che dici le mettiamo nel Setup o le lasciamo come costanti #define ?

ops...cosa sono questi trabocchetti? sei tu il capo progetto!Tongue
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1757 - 21.04.15 at 15:59:38
Print Post  
Madò quanti messaggi!!
comunque dobbiamo decidere quanti elementi usare per il vettore,perche si sta creando molta confusione.. Bolle dice 51 elementi vanno bene, ma Kekko dice che per il nostro metodo (free) meglio abbondare sui 600 elementi  e in conclusione secondo me dobbiamo trovare un punto d'incontro se no non ne veniamo piu a capo...
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1758 - 21.04.15 at 16:34:50
Print Post  
Quote:
CITAZIONE
Ecco la domanda che ti ho fatto l'altro giorno BellaEli (se i timer con prescaler a 1 erano indipendenti) era per questo, dato che l'atmega 2560 a piu timer a 16bit, pensavo se fosse possibile ad esmpio utilizzare timer1 per i pwm (in modalità fast pwm 10bit) e timer3 (sempre a 16bit) con la tua impostazione modalità ICR per richiamare la ISR si avrebbero vantaggi?Magari fare un vettore da 640 elementi (come quello di kekko +/-) con valori da 0 a 1023 (con margine per il feedback).
Quindi sarebbe (20/640)=31,25us; e ICR3 conterebbe (31,25/0,0625)=500 impulsi;
Che ne pensate?


L'idea è corretta, c'è solo una considerazione da fare: se campioni ogni 31,25 uS, il Timer impiegherà 500 impulsi di clock per arrivare a 500, quindi qualsiasi risoluzione di PWM scegli non puoi superare questo valore. Non ha senso utilizzare un PWM a 10 Bit (1024 valori), con 31,25 uS il Timer del PWM non ci arriverebbe mai.


non mi torna una cosa BellaEli, forse mi sono spiegato male. La mia idea è quella di utilizzare 2 timer, quindi il primo timer(timer1) in modalità fast pwm 10 bit per i pwm e il secondo timer(timer3) in modalità fast pwm ICR per gl'interrupt. Se  ICR sarà di 500 impulsi non influirà con timer1 perhe timer3 servirà solo per richiamare gl'interrupt, ma pensandoci bene forse non ha senso utilizzare timer3 in modalità fast pwm ICR,ma pensavo a una soluzione del genere

[code]TCCR1A = 0;                                                                                // Azzeramento registri TCCR1A e TCCR1B
  TCCR1B = 0;                                                                                // per annullamento impostazioni "Init" di Arduino

  TCCR1A
  

= (1 << CS10); // Prescaler a 1

ICR1 = SOGLIA; // Impostazione Soglia a 62 (Attachment deleted)
5 µS (con Fck 16 (Attachment deleted)
0 Mhz e Prescaler 1)

TCCR1A (Attachment deleted)
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
BellaEli
Ex Member
****


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1759 - 21.04.15 at 17:19:06
Print Post  
Quote:
Accendiamo? Se avete dubbi fate un fischio!


Ma fammi capire, tu vorresti ridurre onda_rif a 51 elementi e modificare la funzione GiveMeValSine che dovrebbe effettuare una moltiplicazione per i primi 29 elementi, una lettura diretta dal vettore per i restanti 51 elementi, il tutto per risparmiare solo 58 byte ??? Ancora non mi convinci !!! Cheesy

Quote:
ops...cosa sono questi trabocchetti? sei tu il capo progetto!


Si ma tu sei il mio braccio destro, quindi devi suggerire !!!

Quote:
Bolle dice 51 elementi vanno bene, ma Kekko dice che per il nostro metodo (free) meglio abbondare sui 600 elementi


Ehi aspetta un attimo, va bene arrotondare ma tu esageri !!!

Kekko dice 628, Bolle, al momento, dice 320 !

Il 51 è un valore che si ottiene "zippando" (lasciatemi passare il termine) il vettore per risparmiare memoria !!!

Quote:
non mi torna una cosa BellaEli, forse mi sono spiegato male.


No, no, ti sei spiegato bene, devi solo allargare le vedute.

Un Timer che genera un PWM per conto proprio sarà comunque formato da un contatore che si incrementa al massimo ogni 62,5 nS (quarzo a 16 MHz) e una soglia che andrà da 0 a X.

Ora se tu metti una X che vale 1.000, il contatore impiegherà comunque: 1.000 * 62,5 nS = 62,5 uS per raggiungere il valore 1.000.

Quindi per avere una escursione di 10 bit, ovvero 1024 valori, non puoi avere un periodo per la PWM minore di: 1024 / 62,5 nS = 64 uS !

Ok ???
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1760 - 21.04.15 at 18:06:41
Print Post  
Quote:
Ehi aspetta un attimo, va bene arrotondare ma tu esageri !!!

Kekko dice 628, Bolle, al momento, dice 320 !

Il 51 è un valore che si ottiene "zippando" (lasciatemi passare il termine) il vettore per risparmiare memoria !!!


A ok avevo capito 51 elementi...

Quote:
No, no, ti sei spiegato bene, devi solo allargare le vedute.

Un Timer che genera un PWM per conto proprio sarà comunque formato da un contatore che si incrementa al massimo ogni 62,5 nS (quarzo a 16 MHz) e una soglia che andrà da 0 a X.

Ora se tu metti una X che vale 1.000, il contatore impiegherà comunque: 1.000 * 62,5 nS = 62,5 uS per raggiungere il valore 1.000.

Quindi per avere una escursione di 10 bit, ovvero 1024 valori, non puoi avere un periodo per la PWM minore di: 1024 / 62,5 nS = 64 uS !

Ok ???


ok ok la ISR in ogni caso deve essere in stretta correlazione con il valore del pwm..

Quote:
ma pensavo a una soluzione del genere


comunque pensavo male anche qua!ho provato con arduino mega,ma non funziona, mi funziona solo in modalità CTC!
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
NonSoloBolleDiAcqua
Ex Member
*****


--------

Gender: Male
Zodiac sign: Scorpio
Re:Homemade Inverter "modulo DC/AC"
Reply #1761 - 21.04.15 at 20:00:26
Print Post  
CITAZIONE (BellaEli, 21/04/2015 18:06:41 ) Quote:
Ancora non mi convinci !!! Cheesy

Si tratterebbe di aggiungere una sola linea di codice nella funzione GiveMeValSine :

    if (tic<30) return 330/25 * tic; // Qualcosa del genere...qualcuno vuole provarci a scrivere il codice?


...il resto della funzione e della dichiarazione andrebbero ovviamente cambiate ...ma roba di una manciata di secondi!

Se poi mettiamo tutto sotto #ifdef OTTIMIZZAZIONE_MEMORIA_VARIABILI si può settare oppure lasciare come è ora.

E se invece di 51...si arrivasse a Cinquanta...si, si, come scritto nella mia firma?:lol:

E dai ...e dai...accendiamo?


Code
Select All
Si ma tu sei il mio braccio destro, quindi devi suggerire !!! 




Quote:
Bolle, al momento, dice 320!

In uno dei softwarini che ho fatto, si vede chiaramente che, con una ricostruzione di 160 elementi per semi-sinusoide si è ben oltre ogni più florida aspettativa...inseguire la sinusoide con una precisione maggiore di 62us, per me, non ha nessun senso. Non è per non fiducia ma queste affermazioni andrebbero giustificate in modo tecnico, come ad esempio fare un'analisi dell'errore fra i casi 320 e 628 verificando la 'distorsione' a livello teorico. Si può seguire la falsariga degli ultimi esempi che ho fatto...qualcuno vuole provarci?
  
Back to top
 
IP Logged
 
scinty
Ex Member
****


--------

Gender: Male
Zodiac sign: Aries
Re:Homemade Inverter "modulo DC/AC"
Reply #1762 - 21.04.15 at 20:22:27
Print Post  
Bolle mi sorprende ogni  giorno! quando gli tirerai l'asso a bella eli? è una settimana che ce l'hai in mano ...
  
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)
Back to top
 
IP Logged
 
BellaEli
Ex Member
****


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1763 - 22.04.15 at 03:29:21
Print Post  
Allora Bolle, visto che sembri il mio miglior alievo ( Tongue ) ho apportato 2 modifiche tutte per te:

1. Ho rimosso le #define SOGLIA e PICCO_MASSIMO, ora calcolate nel setup in base al numero di campionamenti scelti. A tal proposito ho inserito una piccola tabellina riepilogativa dei valori ammessi con i relativi dettagli.

2. Ho inserito una nuova #define ONDA_RIF_COMPRESS che sta ad indicare di quanti valori si desidera comprimere il vettore onda_rif, quindi andrà da 0 a 30.

Ho lavorato solo sul codice, che sebbene si compila, deve necessariamente essere testato...

Tuttavia non mi piace la forma che sta prendendo il codice...
Parametrizzandolo troppo si rende indecifrabile...

Faccio fatica io stesso a capire cosa succede in alcuni punti...

La nuova funzione GiveMeValSine secondo me non la capisce nemmeno il micro !!!

Vediamo cosa ne pensi...

Notte !!!#####ALLEGATO-[/IMG][/IMG]?1528[/IMG]
  
Back to top
 
IP Logged
 
NonSoloBolleDiAcqua
Ex Member
*****


--------

Gender: Male
Zodiac sign: Scorpio
Re:Homemade Inverter "modulo DC/AC"
Reply #1764 - 22.04.15 at 04:42:18
Print Post  
CITAZIONE (BellaEli, 22/04/2015 03:29:21 ) Quote:
Vediamo cosa ne pensi...

E' come sempre eccellente, se funzicasse anche sarebbe meraviglioso!!!!

CITAZIONE (BellaEli, 22/04/2015 03:29:21 ) Quote:
Faccio fatica io stesso a capire cosa succede in alcuni punti...

Scrivere o leggere codice è una questione di allenamento mentale, è evidente che sono un professionista del settore... è stato il mio lavoro per anni. Ora sono vecchio e rimbambito, ai bei tempi , quando ero giovane e bello (a dire il vero bello lo sono ancora Tongue), mi muovevo in dei codici (anche non scritti da me) composti da 100/200 mila linee ...ora ho un po preso questa elasticità, considera che riuscivo anche a capire chi avesse scritto parti di sorgente...e ti assicuro che a volte ci lavoravano sopra decine di persone....quindi cosa vuoi che siano una manciata di linee scritte in c?
Se dovessi scrivere il tuo codice lo stravolgerei ma le persone comuni non ci capirebbero più nulla, anche se ai miei occhi sarebbe bellissimo :lol:
Lo scopo del forum è quello di divulgare ma anche quello di far crescere le persone da un punto di vista tecnico...non trovo abbia molto senso far vedere le proprie realizzazioni se poi non si dice altro, per la serie guardate cosa ho fatto, guardate come sono figo :lol:
Ora veniamo a te....hehehehe....si vede lontano un miglio che sei una persona preparata, una delle persone più preparate che sia mai capitata da queste parti...ti mancheranno alcune conoscenze specifiche,che  gli 'esperti' avranno acquisito,ma sarà solo una questione di tempo...hai le capacità per coordinare un progetto complesso come questo e portarlo a termine.

CITAZIONE (scinty, 22/04/2015 04:42:18 ) Quote:
quando gli tirerai l'asso a bella eli? è una settimana che ce l'hai in mano ...

non ho capito ...giuro!Senti ma...posso farti delle domande tecniche spintarelle  sull'inverter che hai realizzato?:rolleyes:

Giorno!!!
  
Back to top
 
IP Logged
 
inverter90
Ex Member
****


--------

Gender: Male
Re:Homemade Inverter "modulo DC/AC"
Reply #1765 - 22.04.15 at 06:40:11
Print Post  
Quote:
GiveMeValSine

Si cosa serve questa istruzione?

BellaEli si a parte GiveMeValSine che non so a cosa servi, il codice sta venendo da dio e al momento grazie al tuo ordine maniacale è molto comprensivo!!

Quote:
Scrivere o leggere codice è una questione di allenamento mentale, è evidente che sono un professionista del settore...


Bolle di dove sei?Mi fai un corso accellerato di C! Cheesy
Altrimenti apriamo una nuova discussione intitolata corso C dilettanti per i non addetti come me!(sarebbe un successo Tongue )
  
Il niente è impossibile finchè non ci provi!!!
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1766 - 22.04.15 at 06:50:49
Print Post  
Quote:
Bolle di dove sei?Mi fai un corso accellerato di C! Cheesy
Altrimenti apriamo una nuova discussione intitolata corso C dilettanti per i non addetti come me!(sarebbe un successo Tongue )

Eccomi come secondo Alievo
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
mismaett
Ex Member
***


--------

Gender: Male
Zodiac sign: Leo
Re:Homemade Inverter "modulo DC/AC"
Reply #1767 - 22.04.15 at 08:00:41
Print Post  
cari amici,

da un anno seguo l'argomento, e ho anche praticamente realizzato un inverter a mosfet con il modulino eg8010 (vedi la prima pagina dei post): funzionava ma troppi mosfet in parallelo scoppiamo prima o poi con carichi elevati, come kekko e elettroshock hanno affermato.

Ora ho  in mano degli igbt tipo quelli da 1200 600 a semikron trifase, e sto ultimando la realizzazione del circuito stampato che utilizzera' dei FOD8333 per driver degli igbt.

nel '86 smanettai con l'AIM65.. chissa' lo ha mai visto.

Non vi seguo molto da vicino, ma continuate in questa maniera


VIVA LA CONOSCENZA CONDIVISA!!!!!!!!

ciao
  
Back to top
 
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1768 - 22.04.15 at 08:13:46
Print Post  
Messa in fase eseguita con successo .
Oggi pom faccio un video  con le luci disco Smiley.

Sembrava una passeggiata ,invece ho trovato non poche difficoltà.
Ho risolto con una interrupt Rising con priorità  più  alta del pwm.
Ogni volta che viene richiamata calcola  la frequenza di rete misurando il tempo trascorso dalla precedente interrupt.
Se la frequenza rientra nelle tolleranze imposte (circa 2Hz) controlla in che passo della sinusoide prodotta ci troviamo.
Se siamo all'inizio  imposto  OCR2A  (uso il doppio timer ) alla frequenza calcolata altrimenti se in anticipo imposto una frequenza di 0.25Hz più  alta oppure se in ritardo 0.25Hz più  bassa.
Il tutto si traduce in poche linee digerite  velocemente dal piccolino Wink.

Gli ho tirato 2Kw con solo 150uF di Condensatori  di livellamento ....
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
ElettroshockNow
Forum Administrator
*****
Offline


yottawatt

Posts: 3920
Location: Roma
Gender: Male
Zodiac sign: Gemini
Re:Homemade Inverter "modulo DC/AC"
Reply #1769 - 22.04.15 at 08:17:25
Print Post  
Ciao Mismaett :clap.gif: ...
Io ho riscontrato il motivo della morte prematura al poco deadtime del EG e dai driver piccolini per pilotare IGBT o multi finali importanti .
  

Il Tempo non lo vede nessuno,il lavoro lo vedono tutti (Mamma)
Impara a rubare con gli occhi (Papà)
Back to top
YouTube  
IP Logged
 
Page Index Toggle Pages: 1 ... 116 117 [118] 119 120 ... 219
Send TopicPrint
 

TOP100-SOLAR Galleria Immagini EnergiAlternativa