Se sei già registrato           oppure    

Orario: 28/03/2024 12:21:14  

 

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

VISUALIZZA L'ALBUM

Pagine: (167)  < ...  100   101   102   103   104   105   106   107   108   109   [110]   111   112   113   114   115   116   117   118   119   120  ...>    (Ultimo Msg)


Homemade Inverter "modulo DC/AC"
FinePagina

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 15/04/2015 13:07:41


CITAZIONE

200x160 e comprende


E' davvero piccolo... Solo che non mi hai detto la potenza !!!

Ma i finali ? Sono a parte ? E il filtro ? Pure ?

CITAZIONE
l'onda in uscita senza retroazione risulta sempre distorta


Azz... Vuoi dire che sul Pin del PWM l'Onda è perfetta e all'uscita del ponte è distorta ?

Giusto per prepararmi a ciò che dovrò affrontare, posteresti una foto dell'onda in uscita ?

CITAZIONE
Riesce alla grande, ma non bisogna usare Arduino, va usato il micro della Atmel nudo e crudo


E cosa cambia rispetto ad Arduino ?

Se si settano opportunamente i registri (come ad esempio ho fatto nel mio codice per il Timer 1) perchè non si riesce ad ottenere lo stesso risultato ?

Al massimo potrebbe dare fastidio il Bootloader di Arduino (che in fase finale del progetto potrebbe essere rimosso), ma la board cosa c'entra ?

CITAZIONE
Se vuoi scendiamo nel dettaglio.


Dipende: voglio dire che se anticipare alcuni dettagli ci aiuta ad andare avanti, ci fa capire come vanno affrontate alcune questioni vai pure, se per il momento non hanno nulla a che fare con quello su cui stiamo lavorando adesso aspetta...

Magari dai solo qualche accenno...

CITAZIONE
Il problema non sussiste, per diversi motivi che scrivo di seguito.


Su ciò che mi passa l'Enel non posso farci niente, su ciò che dovrà uscire dal mio Inverter Si !

Il tuo ragionamento è corretto, semplice, funzionale che arriva subito ai risultati ma ... lasciami sognare di essere migliore di Enel non solo nel costo ma anche nella qualità !!!

Vorrei sperimentare la strada dell'onda "costruita a tavolino" poi, se proprio non si riesce, valutiamo le altre possibilità.

Ciao



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

 

kekko.alchemi

Avatar
GigaWatt


Gruppo:Utente
Messaggi:5226

Stato:



Inviato il: 15/04/2015 15:55:54

Quello che dici è corretto, ma c'è un "MA"
Nel codice che stai/stiamo realizzando non esiste l'inseguimento della forma d'onda. Voglio dire, se viene collegato un motore con regolatore (sincrono controllato con triac tipo la lavatrice), la forma d'onda che esce dall'inverter si deformerà in maniera molto ma molto peggiore di come si deformerebbe quella dell'Enel. Ora se nel codice si prevede un inseguimento della distorsione, con inseguimento e ripristino, allora hai perfettamente ragione a non voler usare gli indici prodotti dalla rete. Ma siccome nel codice non è implementata (per ora) questa funzione, ovvero una volta prodotta a livello logico la sinusoide la si lascia libera di distorcere come vuole, risulta praticamente inutile il voler usare indici prodotti a tavolino che tanto non daranno comunque una sinusoide pura in caso di distorsione da parte dei carichi. Per questo dico, tanto vale usare gli indici forniti dalla rete.

Per quanto rigurada Arduino, confesso che lo conosco poco, ma per quel poco che so, non è possibile agire direttamente sui registri, a meno di non usare più la "logica" Arduino, ma sfruttare solamente l'Hardware che a questo punto è un micro nudo e crudo. Nel senso che da quel poco che ho visto, non posso mettere delle funzioni all'interno dell'interrupt dell'ADC, di OCR1A, e non usare affatto il loop. Bisogna chiamare queste funzioni nel loop generale, e quindi le prestazioni potenziali risultano pesantemente compromesse. Ripeto posso sbagliarmi, perchè in genere pic e atmel li programmo direttamente io, settando registri e tutto il resto.
Se così non fosse però, riusciresti a campionare con ADC anche con Arduino.

Kekko



---------------
L'universo è dominato dagli estremi, l'infinitamente grande e l'infinitamente piccolo.
Ma l'equilibrio è ciò che plasma la materia di cui siamo fatti.
by kekko

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 15/04/2015 18:51:22

ADC e Arduino ....
Forse è la parte che mi piace di meno della board
Se si usa il comando analogread () non si va' da nessuna parte.
Il motivo è semplice.
Una volta chiamato il comando Arduino attende il completamento della conversione (circa 100microS) prima di proseguire ,ma consente interrupt di priorità più alta .

Strade per migliorarlo ?
Prima di tutto si abbassa il prescaler dell'ADC a 64 (128 di default) riducendo il tempo di conversione a 50nS .
Se non sufficiente si può osare ancora ed eventualmente scendere di risoluzione da 10bit a 8bit. .....
Non ho mai provato ,ma sotto i 20nS la vedo impossibile.

Come dicevo durante la conversione o meglio durante la chiamata del comando analogread Arduino è bloccato per un certo tempo che equivale a circa 14 cicli.
I 14 cicli possono essere recuperati lavorando con l'interrupt ADC pura senza l'uso del comando fornito dal wiring.

Se con l'analogread leggere un ingresso è solo un solo comando ,con l'interrupt è un po' più complesso ,ma si può fare anche con Arduino.

-Nel setup si setta prescaler e risoluzione.
-Nel codice prima della conversione si setta il multiplex per selezionare l'ingresso fisico da leggere.
-Si fa ' partire la conversione.

A questo punto il codice prosegue e in contemporanea per i successivi 14 cicli avviene la conversione.

Alla fine di essa viene alzato un flag che avvisa la fine della conversione.

In questo modo andiamo a leggere quando ci è comodi ,altrimenti alla flag ci possiamo legare un interrupt che verrà richiamata appena finisce la conversione.

Tante strade ...

Onda deformata ... forse ho trovato una soluzione ... con il deadtime... Si abbassa la tensione dovute alle cadute ,ma la forma resta intatta.
È tutta questione di integrale ....
http://www.energialternativa.info/public/newforum/ForumEA/E/20150415_124250.jpg

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 15/04/2015 19:04:48

LA potenza dello stadio finale dovrebbe gestire circa 10Kw .
Dipende tutto dall'induttanza e dai finali ..il resto rimane invariato perché sovradimensionato.

Cmq devo mettere il feedback sulla tensione (mi basta il picco dell'ultima onda) perché non mi piace l'abbassarsi della tensione.
Senza carico 230V ..1kw 215V ..2Kw 205V ....poi mi son fermato perché non ero in sincro e i magnetotermici non gradivano i picchi dei condensatori Ahahahahah
Domani sincro e gli tiro il collo fino ai 3Kw della rete.....

 

scinty

Avatar
GigaWatt


Gruppo:Utente
Messaggi:734

Stato:



Inviato il: 15/04/2015 20:19:22

l'onda è un po tosata e apparentemente ripida ma magari ti serve solo qualche volt di bus in più, non hai messo snubber tra collettori ed emettitori però già è un bel risultato, te lo dico sempre che sei un fenomeno...



---------------
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)

 

scinty

Avatar
GigaWatt


Gruppo:Utente
Messaggi:734

Stato:



Inviato il: 15/04/2015 20:32:56


CITAZIONE

Su ciò che mi passa l'Enel non posso farci niente, su ciò che dovrà uscire dal mio Inverter Si !

ma ... lasciami sognare di essere migliore di Enel non solo nel costo ma anche nella qualità !!!


su questo presto ti renderai conto che non è un sogno ma una realtà non inarrivabile, considera che ogni tanto monitoro la tensione e frequenza di rete e riscontro che la frequenza è molto stabile raramente si smuove mentre la tensione oscilla spesso tra i 230V e i 265V a volte 180V! con l'inerter ho 230V costanti a batterie cariche 220 in inverno con le batterie scariche quando il nodo si appoggia alla rete raddrizzata e livettata



---------------
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)

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 15/04/2015 20:35:30


CITAZIONE

Prima di tutto si abbassa il prescaler dell'ADC a 64 (128 di default) riducendo il tempo di conversione a 50nS


50 nS ??? Vuoi dire che l'ADC può campionare a 20 MHz ??? Ma davvero è così veloce ???

CITAZIONE
Non ho mai provato ,ma sotto i 20nS la vedo impossibile.


Stiamo a 50 MHz !!! Ma siamo pazzi ?!?!?!?

CITAZIONE
LA potenza dello stadio finale dovrebbe gestire circa 10Kw. Dipende tutto dall'induttanza e dai finali


Aspetta cosa intendi per stadio finale ??? Che hai montato degli IGBT capaci di pilotare 10 KW ?!?

Comunque tutto fantastico !!!


Tornando a noi, per non rimanere troppo indietro, ho aggiornato il codice includendo le varie modifiche proposte da Bolle e già che c'ero ho effettuato un'altra importante modifica: ho creato due matrici separate, una per la semionda superiore, l'altra per quella inferiore.

Come supponevo, utilizzando troppi #define, il codice inizia a diventare di difficile lettura...

I vettori separati per semionda ci serviranno per quando arriveremo al feedback dove dobbiamo ragionare separatamente.

Tuttavia è sorto un'altro problema: compilato, il codice, utilizza l' 88 % della ram a disposizione del micro (2 kb) e questa non è una buona cosa...

Dobbiamo trovare qualche soluzione ma ora sono troppo stanco per pensare...

Bolle ho implementato i tuoi suggerimenti ma li ho un po' stravolti: ho inserito una sola define che rappresenta il numero dei campionamenti totali (320) e ho settato tutti i riferimenti su questa nuova variabile: mi è sembrato più leggibile.

Inoltre ho eliminato la define AROUND, implementandola direttamente nella formula, così come la funzione init() trasferita nel setup (che altro non è che l'init del c).

Ho eliminato anche la define INI_SEG_SIN che va a 0: qualora occorresse la implementiamo, non mi sembra il caso di rendere difficoltosa la lettura del codice se non serve...

Per ora è tutto, ci aggiorniamo presto, Eligio.

Scarica allegato

Inverter.ino ( Numero download: 235 )



Modificato da BellaEli - 15/04/2015, 20:38:54


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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 15/04/2015 20:43:36

Pardon ...MicroS non nS ..

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 15/04/2015 20:45:07


CITAZIONE

Pardon ...MicroS non nS ..


Aaaah... ora si...



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 15/04/2015 20:47:36

perché non esiste il simbolo Micro sui cell ....

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 15/04/2015 20:59:55

CITAZIONE (scinty, 15/04/2015 20:47:36 ) Discussione.php?55031252&110#MSG1689

l'onda è un po tosata e apparentemente ripida ma magari ti serve solo qualche volt di bus in più, non hai messo snubber tra collettori ed emettitori però già è un bel risultato,l.

Ahahahahah non ti sfugge niente.
L'onda che vedi era un test per alzare la tensione RMS visto il bus al minimo.
Se genero una sinusoide pura e mantengo lo stesso deadtime anche agli estremi ,mi trovo con una 200V in uscita .
Quindi ho ridotto agli estemi il deadtime guadagnando Vrms ,ma perdendo il controllo della forma.
In pratica fino alle cime la forma è sempre invariata e indipendente dal carico ,invece le cime diventano quadre senza carico e tonteggianti con il carico.
Come posso sincronizzo bene (ogni tanto Arduino prende un segnale sincro spurgo che non riesco a vedere neanche con l'oscilloscopio ,ma credo di risolvere con un piccolo condensatore come suggerito da kekko) e metto sotto carico massimo.

A quel punto cerco di migliorare il filtro per limitare le cadute (maledetta induttanza ...la odio) e registro la tensione minima sotto carico massimo.

Sarà il valore che manterro anche senza carico ,così elimino il fastidioso (solo con lampade ad incascescenza) abbassamento di tensione.

 

scinty

Avatar
GigaWatt


Gruppo:Utente
Messaggi:734

Stato:



Inviato il: 15/04/2015 21:16:20

peccato che sei lontano ti farei provare il mio filtro!



---------------
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: 15/04/2015 21:17:44

CITAZIONE (scinty, 15/04/2015 21:16:20 ) Discussione.php?55031252&110#MSG1696

peccato che sei lontano ti farei provare il mio filtro!

,ogni tanto gli do' uno sguardo

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 15/04/2015 21:43:08

CITAZIONE (ElettroshockNow, 15/04/2015 21:17:44 ) Discussione.php?55031252&110#MSG1694

perché non esiste il simbolo Micro sui cell ....

si può slengare con us viene letto microsecondo...



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 16/04/2015 00:39:25


CITAZIONE

su questo presto ti renderai conto che non è un sogno ma una realtà non inarrivabile


Ottima notizia... Speriamo di riuscirci !!!

Elettro ma il codice scritto fino a questo punto può funzionare sul tuo inverter o ci sono problemi con i Pin ?

E poi mi spieghi perché hai il problema del Dead-Time ? Nel mio codice sembra non esserci, nel tuo in quale situazione si presenta ?


Tornando a noi vediamo di fare due conti:

I vettori sono degli int, quindi 2 byte.

Attualmente abbiamo:
- 1 vettore di riferimento da 160 elementi: 320 byte;
- 1 Matrice 160x2, ovvero 2 vettori da 160 elementi per la semionda positiva: 640 byte;
- 1 Matrice 160x2, ovvero 2 vettori da 160 elementi per la semionda negativa: 640 byte;
In totale 1.600 byte su 2048 solo di vettori !!!

Decisamente troppi, vediamo dove possiamo economizzare...

Come prima punto dobbiamo considerare che, trattandosi di un sistema "mono-task", possiamo ricalcolare un vettore per volta, o quello relativo alla semionda positiva o a quella negativa, mai contemporaneamente.

Quindi, modificando opportunamente il codice, anziché utilizzare due matrici 160x2, una per la semionda positiva e una per quella negativa, possiamo utilizzare una sola matrice matrice 160x3 dove 2 righe sono quelle utilizzate indifferentemente dalla semionda positiva e negativa e l'altra riga rappresenta quella di appoggio per il ricalcolo.

Naturalmente potrà capitare che ogni semionda leggerà, a seconda dei casi (in funzione del numero di ricalcoli eseguiti), i valori dalla riga 0, 1 o 2 in base ad opportuni Flag.

In questo modi risparmiamo i primi 320 byte !

Altra complicazione per il codice che ci permette di risparmiare ulteriore spazio e ci farà risparmiare tempo per il calcolo è la seguente:

scegliendo opportunamente il valore di ICR1 per far si che il numero di campionamenti sia un numero pari possiamo dimezzare la lunghezza del vettore.

Nel nostro caso, l'intera sinusoide è formata da 320 elementi, 160 per la semionda superiore e 160 per quella inferiore.

In realtà, i 160 elementi della semionda superiore sono ulteriormente divisibili in 2 poichè i valori che vanno dalla colonna 0 alla colonna 79 sono identici ai valori che vanno dalla colonna 81 alla 159, solo in ordine invertito !

Cioè il primo quarto di sinusoide è speculare (ma identico come valori) al secondo quarto !

Inoltre, nel ricalcolo del vettore, ci troveremo a calcolare solo 80 elementi rispetto ai precedenti 160, dimezzando i tempi di ricalcolo !!!

Se utilizziamo questo approccio possiamo risparmiare:

- 1 vettore di riferimento da 80 elementi: 160 byte;
- 1 Matrice 80x3, ovvero 3 vettori da 80 elementi per la semionda positiva: 480 byte;

In totale solo 640 byte rispetto ai precedenti 1600 !!!

L'idea mi sembra buona, sarà un impiccio implementarla ma è fattibile.

Quello che invece no so, e chiedo l'aiuto di chi ha già sperimentato, è la seguente cosa:

può capitare che con carichi particolari sono costretto a correggere il primo quarto di onda in maniera totalmente differente dal secondo quarto ? Se si, in quali situazioni ?

Complessivamente che ne pensate ?



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

 
 InizioPagina
 

Pagine: (167)  < ...  100   101   102   103   104   105   106   107   108   109   [110]   111   112   113   114   115   116   117   118   119   120  ...>    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum