Roswell1947 ha scritto:Ok..ma se io desidero una certa onda triangolare avente un certo periodo Tx ed ampiezza X come scelgo la temporizzazione del timer sapendo che si ha a disposizione un certo segnale PWM di durata T , duty cicle D ed ampiezza A?
L’ampiezza è l’ultimo dei tuoi problemi, perché la puoi attenuare-amplificare in analogico una volta generata, a meno che tu non voglia anche l’ampiezza controllabile dal micro, in questo caso hai due strade: se è moderatamente variabile puoi diminuire o aumentare il valore massimo della modulante PWM, se invece vuoi ampie variazioni devi utilizzare un amplificatore analogico programmabile e controllarlo tramite il micro.
Esistono dei Programmable Gain Amplifier integrati controllabili in SPI o in IIC.
Comunque cominciamo dalle cose semplici. Supponiamo che l’ampiezza sia fissa e che quindi non sia un problema e concentriamoci sulla frequenza dell’onda triangolare.
Se decidi di farla in PWM (cosa che ti sconsiglio) avrai due frequenze:
1. quella del PWM, il cui tuo unico cruccio è quello di sceglierla in un range compreso fra (limite inferiore) almeno 10/20 volte tanto la massima frequenza dell’onda triangolare che vuoi generare (e questo dipende dalla bontà del filtro a valle) e (limite superiore) possibilità del microcontrollore (non vuoi né strozzarlo né utilizzare tutta la potenza di calcolo per il PWM) e EMC.
2. quella del contatore che genera la rampa in salita e in discesa: questa è la frequenza di interrupt periodico che ti dicevo qualche post fa. Se il PWM è, per esempio, a 255 livelli, ogni interrupt conterà quanto 1/255 del periodo (dente di sega) o 1/2 di 1/255 del periodo (onda triangolare). Da qui puoi calcolare quanto dura il periodo e quindi la frequenza dell’onda triangolare.
Mi rendo però conto che tu non abbia ben chiaro cosa sia una modulazione PWM, quindi io mi studierei un po’ di teoria, prima di pensare alla sua implementazione pratica.
Comunque, ti ripeto, secondo me una modulazione PWM non è il modo migliore di generare un’onda triangolare con un micro.