Onda Triangolare da PWM per microcontrollore
Moderatori:
carloc,
g.schgor,
BrunoValente,
IsidoroKZ
17 messaggi
• Pagina 2 di 2 • 1, 2
0
voti
Per PWM a 255 livelli intendi che l'ampiezza dell'onda PWM è codificata ad 8bit?
-

Roswell1947
89 1 3 8 - Stabilizzato

- Messaggi: 438
- Iscritto il: 10 feb 2020, 16:39
0
voti
No, intendo che il duty cycle può variare su 8 bit, cioè è discretizzato in 255 valori.
Il duty cycle (D) può variare fra 0 e 1, ma questo per un microcontrollore non ha senso, per cui l’intervallo 0-1 viene discretizzato in un numero a 8 bit, 16 bit, 32 bit ecc...
In un microcontrollore il PWM viene implementato con un contatore e un comparatore di uguaglianza, che resetta il contatore (in modo sincrono) quando si ha un “compare match”, cioè in pratica quando il contatore raggiunge il valore impostato sul comparatore. (poi in realtà viene portato fuori il bit “<“ del comparatore, per avere l’uscita negata e quindi il vero PWM, ma questo è un dettaglio).
Se imposti 0 sul comparatore avrai un bit che è zero sempre, perché il contatore sarà sempre in reset.
Se imposti per esempio 2A (su 8 bit) avrai un D=2A/FF cioè D=16.5% circa. Se imposti FF avrai D=100%, cioè il contatore resterà sempre ad uno.
E’ facendo variare D con un interrupt periodico che generi la tua onda triangolare.
Il duty cycle (D) può variare fra 0 e 1, ma questo per un microcontrollore non ha senso, per cui l’intervallo 0-1 viene discretizzato in un numero a 8 bit, 16 bit, 32 bit ecc...
In un microcontrollore il PWM viene implementato con un contatore e un comparatore di uguaglianza, che resetta il contatore (in modo sincrono) quando si ha un “compare match”, cioè in pratica quando il contatore raggiunge il valore impostato sul comparatore. (poi in realtà viene portato fuori il bit “<“ del comparatore, per avere l’uscita negata e quindi il vero PWM, ma questo è un dettaglio).
Se imposti 0 sul comparatore avrai un bit che è zero sempre, perché il contatore sarà sempre in reset.
Se imposti per esempio 2A (su 8 bit) avrai un D=2A/FF cioè D=16.5% circa. Se imposti FF avrai D=100%, cioè il contatore resterà sempre ad uno.
E’ facendo variare D con un interrupt periodico che generi la tua onda triangolare.
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12207
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
2
voti
Prova a guardare anche questa immagine:
dalla quale puoi vedere come viene fuori un PWM per una sinusoide.
A destra hai anche come deve essere progettata la banda passante del filtro (lì progettano un passa basso, anche se io tendo quasi sempre a progettare un passa banda per essere più chiuso rispetto al rumore).
Per l’onda triangolare il filtro è più complesso perché non hai un unico contributo armonico (la sinusoide) ma una banda, per cui diventa importante l’ondulazione in banda e la ampiezza di banda stessa. In ogni caso per l’onda triangolare non puoi evitare che la coda spettrale vada a finire sulla banda del PWM, per cui succederà che, anche se il tutto è ben progettato, avrai le armoniche più elevate della tua onda triangolare che finiranno in banda attenuata. Nel dominio del tempo questo di traduce ad avere gli “spigoli” superiore ed inferiore stondati, cosa che potrebbe non piacerti.
Il modo per ridurre il tutto è quello di aumentare la frequenza del PWM, che però ha molti svantaggi, in primis l’impegno di calcolo richiesto al microcontrollore.
Presa da questa fonte.
Diversamente da così non saprei spiegartelo, devi studiare il datasheet e la teoria del PWM.
EDIT: scorrendo il sito dal quale ho preso l’immagine c’è una foto fatta all’oscilloscopio di come viene fuori l’onda triangolare. Avevo ottenuto risultati simili. Per me che sono nato in epoca analogica e ho fatto il mio primo oscillatore onda quadra/triangolare con due operazionali quell’affare mi sembrava tutto tranne che un’onda triangolare
Questa è un’onda triangolare:
dalla quale puoi vedere come viene fuori un PWM per una sinusoide.
A destra hai anche come deve essere progettata la banda passante del filtro (lì progettano un passa basso, anche se io tendo quasi sempre a progettare un passa banda per essere più chiuso rispetto al rumore).
Per l’onda triangolare il filtro è più complesso perché non hai un unico contributo armonico (la sinusoide) ma una banda, per cui diventa importante l’ondulazione in banda e la ampiezza di banda stessa. In ogni caso per l’onda triangolare non puoi evitare che la coda spettrale vada a finire sulla banda del PWM, per cui succederà che, anche se il tutto è ben progettato, avrai le armoniche più elevate della tua onda triangolare che finiranno in banda attenuata. Nel dominio del tempo questo di traduce ad avere gli “spigoli” superiore ed inferiore stondati, cosa che potrebbe non piacerti.
Il modo per ridurre il tutto è quello di aumentare la frequenza del PWM, che però ha molti svantaggi, in primis l’impegno di calcolo richiesto al microcontrollore.
Presa da questa fonte.
Diversamente da così non saprei spiegartelo, devi studiare il datasheet e la teoria del PWM.
EDIT: scorrendo il sito dal quale ho preso l’immagine c’è una foto fatta all’oscilloscopio di come viene fuori l’onda triangolare. Avevo ottenuto risultati simili. Per me che sono nato in epoca analogica e ho fatto il mio primo oscillatore onda quadra/triangolare con due operazionali quell’affare mi sembrava tutto tranne che un’onda triangolare
Questa è un’onda triangolare:
-

PietroBaima
90,7k 7 12 13 - G.Master EY

- Messaggi: 12207
- Iscritto il: 12 ago 2012, 1:20
- Località: Londra
1
voti
PietroBaima ha scritto:Esistono dei Programmable Gain Amplifier integrati controllabili in SPI o in IIC.
Mi permetto di aggiungere che ci sono anche dei microcontrollori con gli amplificatori operazionali e PGA integrati.
Per esempio gli STM32G4come spiegato nell' application note AN5306 ( Operational Amplifier (OPAMP) usage in STM32G4 Series ) offrono questa interessante possibilità.
Ovviamente deve essere accuratamente valutato se le caratteristiche dell'OPAMP sono idonee all'applicazione.
Ingegneria : alternativa intelligente alla droga.
-

dimaios
30,2k 7 10 12 - G.Master EY

- Messaggi: 3381
- Iscritto il: 24 ago 2010, 14:12
- Località: Behind the scenes
0
voti
Ma io in un microcontrollore oltre ad impostare il D (duty cicle) posso anche impostare il periodo T=Ton+Toff del segnale PWM?
-

Roswell1947
89 1 3 8 - Stabilizzato

- Messaggi: 438
- Iscritto il: 10 feb 2020, 16:39
17 messaggi
• Pagina 2 di 2 • 1, 2
Chi c’è in linea
Visitano il forum: Google Adsense [Bot], Majestic-12 [Bot] e 69 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)
pigreco]=π
