da
Candy » 1 lug 2011, 8:59
Sono molto di corsa, se non capisci chiedi ancora:
- devi preparare una tabella, di valori precalcolati, almeno da 0 fino a pi (radianti). Valori già scalati per il tipo di convertitore che usi. ovvero, partendo da 0 fino a 1, se usi un convertitore a 10 bit, corrisponderà ad una serie di valori da 0 fino a 1024. Ogni passo tabella corrisponderà ad una frazione multipla della divisione che hai dato al periodo di onda. Ipotizza di voler fare una onda sinosoidale con 100 divisioni, ti basta una tabella di 25 valori, appunto da 0 radianti, fino a pi radianti; poi puoi usare i valori complementari, (avanti / indietro della tabella, ela semionda è fatta.)
Questa tabella edita al PIC di calcolare la funzione seno, che è un processo lunghissimo e lento.
Con un potenziomentro esterno, modificherai il tempo di scansione tabella, ed ecco che la sinusoide in uscita sarà a frequenza variabile.
Ovviamente il valore risultante dalla tabella, andrà trasferito al PWM.
Poi, ancora meglio: invece di mettere molti condensatori esterni al PIC, difficili anche da commutare, il valore risultante dalla tabella, prima di darlo alla PWM, lo fai passare per una funzione di filtro. Ti scrivi una funzioni che discretizzi una rete RC, e che sia parametrizzabile, in questo modo: il risultato di tabella lo dai alla funzione, la funzione lo filtra, e la parametrizzi in relazione alla scala di frequenze che vuoi generare, quindi, il risultato della funzione, (una sinusoide già buona), la dai un pasto al PWM.
All'esterno del PIC dovrai solo piàù mettere un filtro RC calcolato per la frequenza del PWM, che ti consiglio alzare al massimo possibile.
Tieni conto che la frequenza del PWM ha i suoi limiti, ed una sinusoide discreta la ottieni solo a frequenza molto più bassa di quella del PWM, almeno 20 volte / 30 volte di meno.
Chjiedo scusa a tutti, ma mi aspettano.