Se sei già registrato           oppure    

Orario: 08/05/2024 02:07:13  

 

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

VISUALIZZA L'ALBUM

Pagine: (167)  < ...  88   89   90   91   92   93   94   95   96   97   [98]   99   100   101   102   103   104   105   106   107   108  ...>    (Ultimo Msg)


Homemade Inverter "modulo DC/AC"
FinePagina

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 31/03/2015 14:48:03

CITAZIONE (BellaEli, 31/03/2015 14:42:52 ) Discussione.php?55031252&97#MSG1495

Ho dei dubbi solo sull' else indice++


Nono perfetto ...mia colpa .
Io di solito incremento e poi controllo ,pardon

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 31/03/2015 15:06:57

Un'alternativa potrebbe essere campionare a 62,5 µS (320 Campioni per sinusoide), con valori di PWM che andrebbero da 0 a 1.000 e una frequenza PWM di 16 kHz.

Che dici ? Meglio 40 µS con PWM 25 kHz o 62,5 e 16 kHz ?

O devo cercare una via di mezzo ?

Con il metodo implementato nel codice posso scegliere qualsiasi valore...



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 31/03/2015 15:19:37

Io andrei a 16Khz ... mi piace pure come numero

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 31/03/2015 15:37:11


CITAZIONE

Poichè io voglio ottenere un campionamento di 40 µS, quanti cicli da 62.5 nS occorrono per arrivare a 40 µS ?


Ok quindi ICR1 è l'equivalente di OCRxA in modalità CTC, compara il numero di ICR1 con TCNT1 e quando sono identici scatta l'interrupt..

un'altro mezzo punto mi è oscuro,ad esempio phase correct9 bit massimo valore è 511, fast pwm 9bit 511, invece il fast pwm che stai utilazzando qual'e il massimo valore?



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

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 31/03/2015 19:08:47


CITAZIONE

Ok quindi ICR1 è l'equivalente di OCRxA in modalità CTC, compara il numero di ICR1 con TCNT1 e quando sono identici scatta l'interrupt..


Esatto...

CITAZIONE
un'altro mezzo punto mi è oscuro,ad esempio phase correct9 bit massimo valore è 511, fast pwm 9bit 511, invece il fast pwm che stai utilazzando qual'e il massimo valore?


ICR1 è a 16 Bit, quindi il massimo è: 65.535 !



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 31/03/2015 21:15:18

65.535?aspetta mi sto impallando scusa le troppe domande deficienti che pongo, ma se non sono sicuro inutile andare avanti; ricapitolando, quindi per avere un duty al 100% sulle uscite ocr1x sarà 65.535? E a 1000 a che percentuale duty siamo?



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

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 31/03/2015 21:24:33


CITAZIONE

65.535?aspetta mi sto impallando scusa le troppe domande deficienti che pongo, ma se non sono sicuro inutile andare avanti; ricapitolando, quindi per avere un duty al 100% sulle uscite ocr1x sarà 65.535? E a 1000 a che percentuale duty siamo?


Nono sei fuori strada...

Il valore del Timer1 (TCNT1) conterà da 0 a ICR1 (1.000)

A ICR1 (1.000) genera l'overflow e chiama la ISR, resettando TCNT1 a "0".

ICR1 lo puoi impostare tra 2 e 65.535.

OCR1x lo puoi impostare tra 0 e ICR1 (1.000 nel nostro caso).

Impostando OCR1A a 500 con ICR1 a 1.000 avrai un DutyCycle al 50%.

Impostando OCR1A a 1.000 con ICR1 a 65.535 avrai un DutyCycle pari a:

65.535 : 100% = 1000 : X%

X = 100*1000/65.535 = 1,53% circa

Ok ?



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 31/03/2015 21:42:07

ok ok stavo facendo confusione perche mi stavo basando sulle altre modalità a valori fissi dimenticando che FastPWM ISR decidiamo noi frequenza e duty, quindi se noi ad esempio impostiamo un valore ISR 2000 il duty su OCR1X sarà da 0 a 2000 quindi 1000 sarà 50%..



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

 

BellaEli

Avatar
GigaWatt


Gruppo:MODERATORE
Messaggi:3286

Stato:



Inviato il: 01/04/2015 00:00:10

Allora ragazzi,

ora che abbiamo una base di partenza possiamo iniziare ad aggiungere i vari pezzi di codice per ampliare le funzionalità del nostro firmware...

Prima di proseguire, riepiloghiamo i dati di partenza:

- Onda campionata ogni 62,5 µS con 320 campioni per sinusoide (16.000 campioni al Secondo);

- Frequenza di uscita di 50,00 Hz, regolabile linearmente in un range compreso tra 45,00 e 55,00 Hz circa, con una risoluzione di circa 0,05 Hz;

- Frequenza PWM centrale di 16.000 Hz, che varia, in funzione della frequenza dei 50 Hz, da circa 14,40 kHz a circa 17,60 kHz;

- Risoluzione PWM di 1.000 valori (variabili in funzione dei 50 Hz da 910 a 1.110);

- Algoritmo DeadTime-Free (DeadTime nel passaggio per lo 0 > 30 µS);

- Uscite PWM (2 Pin) e segnali di abilitazione (altri 2 Pin, onda quadra a 50 Hz).

Mi sembra un ottimo inizio...

Ho un piccolo dubbio: come mai siamo rimasti solo in 3 a scrivere su questo topic ?
Possibile che l'argomento non interessa a nessuno ?

Per il momento sto lavorando alla variazione della frequenza in uscita, appena pronto posterò il codice.

Per ogni suggerimento, critica, spiegazione, come sempre sono a disposizione !!!

Se continuiamo così faremo la scheda EAL001 (Energia ALternativa 001) !!!

A presto, Eligio.



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

 

ElettroshockNow

Avatar
GigaWatt


Gruppo:Utente
Messaggi:4656

Stato:



Inviato il: 01/04/2015 00:32:43

Le 107000 visite dicono che questa discussione è interessante

La schedina è un bel obiettivo , alla nostra portata.

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 01/04/2015 06:48:50


CITAZIONE

Se continuiamo così faremo la scheda EAL001 (Energia ALternativa 001) !!!


Mi PIACE!!!!!

CITAZIONE
- Onda campionata ogni 62,5 µS con 320 campioni per sinusoide (16.000 campioni al Secondo);

- Frequenza di uscita di 50,00 Hz, regolabile linearmente in un range compreso tra 45,00 e 55,00 Hz circa, con una risoluzione di circa 0,05 Hz;

- Frequenza PWM centrale di 16.000 Hz, che varia, in funzione della frequenza dei 50 Hz, da circa 14,40 kHz a circa 17,60 kHz;

- Risoluzione PWM di 1.000 valori (variabili in funzione dei 50 Hz da 910 a 1.110);

- Algoritmo DeadTime-Free (DeadTime nel passaggio per lo 0 > 30 µS);

- Uscite PWM (2 Pin) e segnali di abilitazione (altri 2 Pin, onda quadra a 50 Hz).


Caspita se ci riusciamo è veremente figo!!! Ma secondo voi è abbastanza stabile atmega328 per subire tutte queste sofferenze?

CITAZIONE
- Algoritmo DeadTime-Free


Ps. questa frase mi da energia....



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

 

farstar1965

Avatar
KiloWatt


Gruppo:Utente
Messaggi:293

Stato:



Inviato il: 01/04/2015 07:47:32

Questa discussione non è interessante, è interessantissima !
Mi raccomando continuate così.
Per capacità e poco tempo per studiare sono costretto a seguirvi solamente è inutile che intervenga, sporcherei solo il tread, ma seguo questa discussione dal primo post e ultimamente controllo piu volte al giorno se ci sono novita.
Siete fantastici andate avanti così che oltre a scrivere cose interessanti siete anche belli da leggere.
Questo è il mio contributo se vi venisse qualche dubbio in merito all'interesse per il tread.

Grazie, Marco



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

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 01/04/2015 07:58:50

CITAZIONE (BellaEli, 01/04/2015 07:47:32 ) Discussione.php?55031252&98#MSG1504


Ho un piccolo dubbio: come mai siamo rimasti solo in 3 a scrivere su questo topic ?

Si legge...ma non è detto che si scriva!



---------------
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: 01/04/2015 13:17:32

Grazie a tutti mi fa piacere non siamo i soli... Pazzi !!!

Allora approfitto per chiedere qualche suggerimento...

Vediamo se riesco a spiegare...

Ipotizziamo che Timer conta da 0 a 1.000 e che a OCRx è settato a 500.

Fino a 500 il Pin di uscita è 5 V, a 501 va a 0 V.

Ora, per variare la frequenza (da 45 a 55 Hz) vario il valore 1.000, e ipotizziamo che lo imposto a 900

Tuttavia tale variazione non deve influenzare la % del DutyCycle che deve rimanere al 50%.

Quindi bisogna diminuire il valore 500 e portarlo a 450.

Tuttavia il valore 500 non è fisso ma varia ad ogni campionamento e tale valore corrisponde al contenuto del vettore.

Quindi devo trovare un coefficiente che mi mantenga costante il rapporto. Come lo trovo ?

k = 900 / 1.000 = 0.9

infatti moltiplicando

500 * k = 500 * 0.9 = 450

Fin qui tutto bene

Ma ora sorgono i problemi a cui non ho ancora trovato una soluzione...

Sappiamo che l'Atmega non dispone di una ALU per calcoli in virgola mobile, quindi il calcoletto sopra all'apparenza semplice impiega troppo tempo per essere inserito nella ISR.

Come risovere ?

Nell'impostazione di OCR1A abbiamo:

OCR1A = ICR1 - onda[Indice];

che dovrebbe diventare:

OCR1A = ICR1 - (onda[Indice] * k);

Ma onda è un intero, quindi dovrebbe essere prima trasformato in float, quindi:

OCR1A = ICR1 - float((onda[Indice]) * k);

Ma il risultato di "float((onda[Indice]) * k" deve essere di nuovo trasformato in int, quindi:

OCR1A = ICR1 - int(float((onda[Indice]) * k));

Così è corretto ma impiega troppo tempo...

Idee ? Suggerimenti ?

Mi vengono in mente idee troppo complicate, meglio vedere se si riesce a trovare una soluzione + sempplice...



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

 

inverter90

Avatar
MegaWatt


Gruppo:Utente
Messaggi:323

Stato:



Inviato il: 01/04/2015 15:31:33

Qualcosa del genere è le stesso? 500*9=4500 4500/10=450



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

 
 InizioPagina
 

Pagine: (167)  < ...  88   89   90   91   92   93   94   95   96   97   [98]   99   100   101   102   103   104   105   106   107   108  ...>    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum