Quote:ok BellaEli io farei un array da 250 campioni con valori duty da 0 a 500 cosi abbiamo la possibilità di implementare il feedback, ma confermami anche tu se secondo te può andar bene, perche non sono sicuro di ciò che sto dicendo
Se per il PWM a 8 bit (0...255) parlavamo di un valore di picco di 200, con PWM a 9 bit (0...512) devi pensare a un picco di 400 per avere il giusto margine.
Stasera, in ufficio, ho preparato un foglio Excel dove è possibile settare il numero di campioni e l'escursione desiderata e lui ti tira fuori tutti i valori da inserire nell'Array, naturalmente accompagnato dal relativo grafico, dovevo sistemare le etichette, domani vedo di pubblicarlo così sarai autonomo.
Per quanto riguarda l'Array, in teoria ti basterebbe anche solo 1/4 di onda, poi i valori si ripetono.
Se per esempio l'Array fosse formato da 20 elementi, con incrementi di 1 unità , avremo:
0 -> 0
1 -> 1
...
5 -> 5
...
10 -> 10
11 -> 9
...
15 -> 5
...
20 -> 0
per la semionda positiva, e identici valori per quella negativa.
In realtà , avendo i primi 10 valori potresti costruire l'onda intera scorrendo il vettore una volta verso il basso e la successiva verso l'alto.
Tuttavia tale decisione è da valutare all'atto della stesura del codice, mettendo sul piatto della bilancia la velocità di esecuzione, la complessità di implementazione, il risparmio di memoria, etc.
In ogni caso, fare due vettori mi sembra superfluo, se hai bisogno di valori che partono da 511 quando il vettore sta a 0, basta una semplice sottrazione:
PWM negato = 511 - ValoreArray
e i valori andranno da 511 a 11, proprio come serve a te.
Infine c'è un aspetto che devi tener presente se vuoi far funzionare il tuo codice: svilupparlo per gradi !
Voglio dire che al momento non puoi già pensare al feedback, al dead time, al display, alle protezioni, alla messa in fase con l'Enel, al datalogger, al WebServer, al....
Iniziamo a scrivere un codice che genera una sinusoide e poi proviamo ad implementare le migliorie... Ok ???
Ora vado, a presto !!!