Se sei già registrato           oppure    

Orario: 27/05/2024 06:20:32  

 

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

VISUALIZZA L'ALBUM

Pagine: (167)  < ...  112   113   114   115   116   117   118   119   120   121   [122]   123   124   125   126   127   128   129   130   131   132  ...>    (Ultimo Msg)


Homemade Inverter "modulo DC/AC"
FinePagina

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 26/04/2015 17:21:50

Ma il TCNT raggiunto il valore massimo torna indietro .
I sostanza se il TCNT è inferiore a OCR1A in uscita ho 1 ,oppure se superiore a OCR1B il canale B è a 1.
Il cambio può avvenire sia sopra che sotto gli estemi degli OCR ,ma mai tra o due OCR.

Quindi la If dovrebbe essere diversa ,ma raramente non veritiera ,quindi mi sembra proprio una bella soluzione.

Cmq domani voglio mettere un While(1) in un interrupt alto ,voglio confermare che non si blocca niente .

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 26/04/2015 18:02:57

Essendo un Phase Correct, nell 'IF dovrai gestire TCNT1 sia in salita che in discesa...

Pensavo che potresti completare l'if con un else del genere:

if ...
else {
while (TCNT1 - S[pos] - deadtime < 0)
{}
// quando è finito il while possiamo procedere normalmente
}

In questo caso l'attesa sarà al massimo deadtime uS !

Naturalmente devi gestire TCNT1 in salita e discesa...

Che dici ?



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 26/04/2015 18:09:39

Si mi piace.
Ma se faccio :
While ( TCNT1 > OCR1A && TCNT1 < OCR1B ) { }
OCR1A = nuovo calore ;
OCR1B = nuovo valore ;

Però manca qualcosa ...
Si potrebbe generare incrocio con i nuovi valori ?

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 26/04/2015 19:37:49


CITAZIONE

Però manca qualcosa ...


Considera che sto col cell, sto solo ragionando concettualmente, per il codice ho bisogno del PC...

In ogni caso, dovrebbe essere più qualcosa del genere:

while (TCNT1 > S[pos] - deadtime && TCNT1 < S[pos] + deadtime) {}

Procedo...

Giusto ?



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 26/04/2015 19:59:55

Sisi è meglio come fai te usando il valore del pwm successivo ,grazie .

Quello che manca è la situazione degli OCR attivi.

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 26/04/2015 20:29:50

Trovato ....
Il While deve restare vero se il TCNT è compreso tra il valore più basso tra OCR1A e S[pos]-deadtime e il valore massimo tra OCR1B e S [pos) + deadtime .

Così si ha la certezza del non incrocio.

Per me hai trovato il motivo ...GRAZIEEEEEEE
Infatti torna tutto.
I piccoli incroci avvenivano nelle variazioni dove la finestra nella quale si possono far danni è più ampia... invece scomparivano (o quasi a questo punto) quando non avvenivano variazioni.

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 26/04/2015 21:16:07

Musica...questa si che è musica



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 26/04/2015 21:31:39

CITAZIONE (NonSoloBolleDiAcqua, 26/04/2015 21:16:07 ) Discussione.php?55031252&122#MSG1874

Musica...questa si che è musica

Dai dai ..codice codice...... Che io rubo

 

kekko.alchemi

Avatar
GigaWatt


Gruppo:Utente
Messaggi:5226

Stato:



Inviato il: 27/04/2015 00:56:18

CITAZIONE (NonSoloBolleDiAcqua, 26/04/2015 21:31:39 ) Discussione.php?55031252&121#MSG1863


quindi sei sceso con valori del vettore bidimensionale e 200 e la forma d'onda ancora 'tiene'...hai verificato il limite inferiore?


Ma quindi alla fine cosa ha deciso il capo progetto? Perchè se usate il pwm "sistema Elettro" (che non piaceva per il più basso rendimento) vanno bene pochi valori, se usate il "sistema Free", 200 valori totali sono decisamente pochi! La sinusoide verrà un trapezio con carichi induttivi... A questo punto credo che non siano molto chiare le differenze, forse sarebbe il caso di scendere nel dettaglio, perchè è una cosa non del tutto semplice.
Io continuo a dire che il giusto compromesso è proprio il sistema del grande Elettro! Ma aggiungo che con il sistema a bassa tensione con trasfo di uscita il rendimento cala, e cala sempre di più man mano che si riduce il deadtime. Penso sia ovvio poi, che con il sistema a bassa tensione (anche utilizzando il pwm forzato) il feedback è d'obbligo! Non si può "tralasciare" come nell'ottima soluzione di Elettro.

CITAZIONE (BellaEli, 26/04/2015 21:31:39 ) Discussione.php?55031252&121#MSG1859

CITAZIONE (kekko.alchemi, 25/04/2015 21:50:37 ) Discussione.php?55031252&120#MSG1847

Posso aggiungere una cosa, senza scoraggiare nessuno?


Nooooooo !!! Stai zitto !!!


Non so se riuscirò a stare zitto!! Tutto questo casino che si risolve con quattro pezzetti di silicio, e con prestazioni di granlunga superiori. Perchè complicarsi la vita?
Se vuoi coinvolgermi, devi sapere che sono fatto così, a volte seguo una strada, per poi capire che sopra di me c'è un autostrada, quindi prendo la rampa e ovviamente salgo sopra... stravolgendo quindi tutto quanto (è inutile mettere la quinta su una strada sterrata)

Devo poi fare i complimenti a tutti quanti!! E' proprio bello vedere uno spirito di collaborazione così intenso! Amici che si aiutano a vicenda per il raggiungimento di unico obiettivo! Grazie Forum, grazie EA!! E grazie a tutti voi!

Sono sicuro che in modo o nell'altro si raggiungerà l'obiettivo! Kekko.



Modificato da kekko.alchemi - 27/04/2015, 01:18:33


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

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 27/04/2015 01:40:19

x Elettro:

finalmente sono davanti a un PC, vediamo di fare un'analisi più dettagliata...

Prima di andare avanti faccio una piccola deduzione logica:

Poichè utilizzi un'alimentazione con "0" centrale e un semiponte, suppongo che il tuo vettore S[] (tralasciando il margine per il feedback) abbia i seguenti valori:

Indice 0 -> valore 255
Indice 50 -> valore 511
Indice 100 -> valore 255
Indice 150 -> valore 0
Ipotetico indice 200 (In realtà riparte da 0) -> 255

Fatta questa premessa, andiamo avanti:


CITAZIONE (ElettroshockNow, 26/04/2015 21:31:39 ) Discussione.php?55031252&122#MSG1873


Il While deve restare vero se il TCNT è compreso tra il valore più basso tra OCR1A e S[pos]-deadtime e il valore massimo tra OCR1B e S [pos) + deadtime.


Dunque ci sono quattro possibili casi in cui ti puoi trovare.

Per semplificare l'analisi lavoriamo solo sulla semionda positiva, quindi avremo:

1) Prima metà della semionda, i valori del PWM verranno incrementati ad ogni ISR, TCNT1 sta salendo verso 511;

2) Prima metà della semionda, i valori del PWM verranno incrementati ad ogni ISR, TCNT1 sta scendendo verso 0;

3) Seconda metà della semionda, i valori del PWM verranno decrementati ad ogni ISR, TCNT1 sta salendo verso 511;

4) Seconda metà della semionda, i valori del PWM verranno decrementati ad ogni ISR, TCNT1 sta scendendo verso 0.


Analizziamoli uno alla volta:

Caso 1:

http://www.energialternativa.info/public/newforum/ForumEA/E/Caso_1.png



Studiando un po' i disegni e facendo un po' di prove "a mente", si deduce che il cambio nella banda gialla deve essere evitato.

Caso 2:

http://www.energialternativa.info/public/newforum/ForumEA/E/Caso_2_1.png



In questo caso la banda gialla è più estesa, e va esattamente da OCR1A a S[pos] + deadtime

Per i casi 3 e 4 sono stanco, ma dovrebbe essere corretta la tua intuizione.

Quindi la forumla corretta definitiva è:

while ((TCNT1 > min(OCR1A, S[pos] - deadtime)) && (TCNT1 < max(OCR1B, S[pos] + deadtime))) {1}

Sono contento che abbiamo trovato l'inghippo !!!

Avanzo un piacere...


CITAZIONE (kekko.alchemi, 27/04/2015 00:56:18 ) Discussione.php?55031252&122#MSG1876

Ma quindi alla fine cosa ha deciso il capo progetto?


Per ora siamo rimasti con il sistema free e relativo feedback.

Tuttavia, strada facendo, potremmo sembre cambiare idea !!!


CITAZIONE (kekko.alchemi, 27/04/2015 00:56:18 ) Discussione.php?55031252&122#MSG1876

...se usate il "sistema Free", 200 valori totali sono decisamente pochi! La sinusoide verrà un trapezio con carichi induttivi... A questo punto credo che non siano molto chiare le differenze, forse sarebbe il caso di scendere nel dettaglio, perchè è una cosa non del tutto semplice.


Attualmente stiamo lavorando con 320 campioni totali (intera sinusoide).

Sarei davvero felice se scendessi nel dettaglio per spiegarmi le differenze, così inizio a prepararmi a cosa mi aspetta...


CITAZIONE (kekko.alchemi, 27/04/2015 00:56:18 ) Discussione.php?55031252&122#MSG1876

Penso sia ovvio poi, che con il sistema a bassa tensione (anche utilizzando il pwm forzato) il feedback è d'obbligo!


Certo, certo, il feedback, essendo una parte complessa, la sposto più avanti: generalmente faccio così nella vita, prima le cose facili, quelle difficili alla fine !


CITAZIONE (kekko.alchemi, 27/04/2015 00:56:18 ) Discussione.php?55031252&122#MSG1876

Se vuoi coinvolgermi, devi sapere che sono fatto così...


Beh è normale che leggi questo topic come osservatore, tu il tuo inverter lo hai già completato, sei stato praticamente il socio (di Elettro) che ha aperto questo topic, non sei stimolato come lo saresti su un progetto nuovo !!!

Tuttavia, per me, l'importante è che ci sostieni con qualche prezioso consiglio dettato dalle tue conoscenze, dalle tue esperienze, dalle tue intuizioni cosa che del resto fai in ogni post !


CITAZIONE (kekko.alchemi, 27/04/2015 00:56:18 ) Discussione.php?55031252&122#MSG1876

E' proprio bello vedere uno spirito di collaborazione così intenso!


Quoto ogni parola !!!



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 27/04/2015 13:14:42

http://www.energialternativa.info/public/newforum/ForumEA/E/Scrapbook_1430133029764.png
Ummm .. un buco nell'acqua.
I registri vengono aggiornati ,ma presi in considerazione dopo il TOP ..
Giusto?

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 27/04/2015 22:44:44

Perché dici un buco nell'acqua ? Per la tabella o hai ancora incroci ?

Superficialmente ho dato un'occhiata al datasheet ma non mi è ancora chiaro il significato di quel "TOP".

Che problema si verifica ? Tu cosa pensi ?

Kekko conosci il significato di quel TOP ?



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

 

farstar1965

Avatar
KiloWatt


Gruppo:Utente
Messaggi:293

Stato:



Inviato il: 28/04/2015 08:46:07

Nella mia profonda ignoranza mi stavo leggendo questo.
Nel mentre lo posto magari (sicuramente) ci capite di più.
Probabilmente conoscete già.

LINK


Grazie. Marco.



---------------
Più impari più ti rendi conto di quanto sei ignorante.

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 28/04/2015 10:22:10

Ciao Elettro,

ho ripensato al tuo dubbio e ricontrollato il datasheet:

non mi sono ancora chiari alcuni meccanismi ma ipotizzando che il registro OCR1A e B siano bufferati vorrà dire che quando tu scrivi:

OCR1A = 100

tale valore non verrà scritto direttamente nel registro OCR1A, ma in un buffer temporaneo e solo quando il contatore TCNT1 raggiunge il valore 511 il valore 100 dal buffer verrà trasferito nel registro OCR1A.

Ora suppongo che il tuo (lecito) dubbio è il seguente:

se la logica adottata dal micro fosse quella appena descritta non dovrei avere in nessun caso incroci !

Ma adottando il ciclo while (...) il problema si risolve oppure no ?

Resto in attesa...



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 28/04/2015 10:41:36

Sisi l'ho provato ora solo a scopo di curiosità ed oltre a piccole variazione di forma non ha alcun effetto sui piccoli incroci.

Problema non presente se non faccio ricalcolare la sinusoide.

Cmq sono arrivato alla conclusione che alcuni volt di differenza durante il funzionamento ibrido ed alimentato solo da rete sono accettabili.

In fin dei conti se le batterie son scariche son scariche ....
e per quanto posso migliorare l'inverter non potrò mai raggiungere un relè.

Quindi torno sui miei passi e abbandono il feedback ... più in là ci tornerò altrimenti ora mi sto' fossilizzando su un problema bypassabile ....

Per il discorso TOP .. io ho interpretato il datasheet come te ,quindi problemi di incrocio non possono esistere.
Quindi quei extra consumi che ho reputato incroci ,possono essere in realtà valori errati di OCR che non riesco a scovare ....
Il motivo ... Bo! !!

Altra info per chi userà il sincro.
Ho provato interrupt con bassa priorità (Timer0 con input esterno e analog compare ) e con entrambi non si ottengono buoni risultati.
Quindi son tornato all'INT ad alta priorità ,ma ho aggiunto una riga che conta gli eventuali errori di sincro e nel caso fossero superiori a 3 disattiva l'interrupt.

Ciao ,grazie e scusate per il fuori onda ....

Continuo a seguirvi e prometto di metter su un inverter più piccolo per i test del vostro firmware

 
 InizioPagina
 

Pagine: (167)  < ...  112   113   114   115   116   117   118   119   120   121   [122]   123   124   125   126   127   128   129   130   131   132  ...>    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum