Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Suoni con PWM

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto UtenteDirtyDeeds, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ, Foto Utentecarloc

0
voti

[1] Suoni con PWM

Messaggioda Foto UtenteStefDrums » 24 lug 2013, 20:28

Ciao a tutti,
come da titolo ho la necessità di generare dei suoni con un PIC. Magari (ma non necessariamente) riprodurre un piccolo file audio (di pochi secondi) e pensavo di sfruttare il modulo PWM.
Ho preso fatto alcune ricerche in rete e ho trovato alcune soluzioni "adattabili", solo che non riesco a capire bene quali sono le differenze tra le tre soluzioni.


Vi riporto qui il primo schema: è usato per riprodurre dei file WAV con un PIC che "lavora" a 32 MHz



Quello maggiormente usato è un semplice passa basso a singolo polo:



La microchip riporta inoltre in una AN uno schema con due passa-basso in uscita:


1- Quale soluzione mi conviene adottare tra l'utilizzo del MOS e i filtri passa basso?

2- Ho inoltre un dubbio riguardo il LPF: come è possibile sentire un suono con una frequenza del PWM a circa 100 kHz (dato che il PIC lavorerà a 16 MHz, il PWM non riuscirà a lavorare a frequenze troppo basse). So che il
LPF taglia le alte frequenze, ma l'attenuazione alla frequenza del PWM non è molto alta?

3- I poli del LPF li devo "posizionare" alla fine della banda audio (20 kHz) oppure devo in qualche modo calcolarli in relazione alla frequenza del PWM?

NB: ovviamente nel caso del LPF utilizzerei eventualmente un Op-Amp prima della cassa.

Grazie a tutti!
Avatar utente
Foto UtenteStefDrums
241 1 6 9
Stabilizzato
Stabilizzato
 
Messaggi: 347
Iscritto il: 20 feb 2013, 14:15

0
voti

[2] Re: Suoni con PWM

Messaggioda Foto UtenteStefDrums » 25 lug 2013, 17:54

UP!

aggiungo: devo capire bene come fare coi suoni, perché non ho nessuna libreria "già scritta"
Avatar utente
Foto UtenteStefDrums
241 1 6 9
Stabilizzato
Stabilizzato
 
Messaggi: 347
Iscritto il: 20 feb 2013, 14:15

2
voti

[3] Re: Suoni con PWM

Messaggioda Foto Utentec1b8 » 25 lug 2013, 18:06

Io adotterei la soluzione 3, con 2 passa-basso per intenderci.
La frequenza del PWM deve essere la più alta possibile, ed i filtri devono essere calcolati in modo da eliminare il più possibile della frequenza del PWM con i poli posizionati alla frequenza massima che desideri ottenere in uscita.
I suoni vengono generati variando il durty cycle del PWM non la sua fequenza.
La frequenza del PWM determina però la risoluzione del DC stesso e quindi la risoluzione in bit del suono che generi.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[4] Re: Suoni con PWM

Messaggioda Foto UtenteStefDrums » 25 lug 2013, 20:00

ok. probabilmente userò un passa-basso attivo.
Non ho capito come fa a variare la frequeza di uscita in base al duty. se l'onda quadra è a (per esempio) 100 kHz, e metto un filtro a 20 kHz, che frequenze "passano" dopo il filtro?
Avatar utente
Foto UtenteStefDrums
241 1 6 9
Stabilizzato
Stabilizzato
 
Messaggi: 347
Iscritto il: 20 feb 2013, 14:15

3
voti

[5] Re: Suoni con PWM

Messaggioda Foto Utentec1b8 » 25 lug 2013, 22:35

Dopo il filtro passano tutte le frequenze inferiori a 20kHz :mrgreen:
Perdonami la battuta.
Brevemente, spero senza commettere troppi errori, il "trucco" consiste nello sfruttare il valore medio di un segnale ad onda quadra come lo è il PWM.
Il valore medio del segnale è proporzionale al duty, essendo il valore di picco del segnale sempre uguale.
Potremmo banalizzare dicendo che una PWM con valore di picco 5V genera:
- 0,5 V di valore medio per duty 10%
- 2,5V di valore medio per duty 50%
- 4,5 V di valore medio per duty 90%
Sfruttando questa caratteristica del segnale ad onda quadra, basta variare il duty per generare valori di tensione in uscita qualsiasi (compresi tra 0 e Vmax del segnale ad onda quadra).
Variando opportunamente il duty posso genrare segnali sinusoidali, a dente di sega, triangolari ecc.
Questi segnali però risultano disturbati dalla frequenza del segnale ad onda quadra, ossia dalla frequenza del PWM. Questa frequenza e tutte le sue ormoniche devono essere eliminate, ecco il motivo del filtro passa-basso.
Maggiore è la frequenza del PWM, più lontana è dal segnale che si desidera generare, più facile è eliminarla.
Nei PIC però maggiore è la frequenza del PWM minore è la risoluzione del duty, se alzi troppo la frequenza del PWM ed ottieni una risoluzione del duty di 4 bit (esempio volutamente "sfigato") potrai ottenere al massimo 16 valori medi in uscita e quindi le tue sinusoide, denti di sega o altro avranno una qualità scadente.

Spero di non aver fatto troppa confusione e errori.

EDIT: Per variare la frequnza in uscita non si deve far altro che variare continuamente il duty in funzione della frequenza e della forma del segnale che si vuole ottenere.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[6] Re: Suoni con PWM

Messaggioda Foto UtenteStefDrums » 26 lug 2013, 12:28

ah, ecco! io pensavo invece che, dato che l'onda quadra ha una componente a freq=0 e una a freq idealmente infinita, fosse in un certo senso filtrata quest'ultima.

ma allora dato che dovrei comunque continuamente variare il Duty, quando riproduco un suono dovrò "tenere occupato" PIC lo stesso per variare il duty. non sarebbe più pratico e più preciso usare un DAC (in genere molti PIC ne hanno uno all'interno)

stavo cercando un sistema "comodo" per fargli emettere un tono ma ho paura di impegnarlo troppo.
ne conosci qualcuno?
Avatar utente
Foto UtenteStefDrums
241 1 6 9
Stabilizzato
Stabilizzato
 
Messaggi: 347
Iscritto il: 20 feb 2013, 14:15

2
voti

[7] Re: Suoni con PWM

Messaggioda Foto Utentec1b8 » 26 lug 2013, 12:42

Utilizzare un DAC o variare il duty impegna allo stesso modo il PIC, infatti in entrambi i casi si tratta di scrivere un byte in un registro.
Diverso è se vuoi riprodurre un tono mono-frequenza.
Provo a spiegarmi meglio.
Una soluzione più semplice e meno impegnativa per il PIC potrebbe essere quella di produrre un segnale ad onda quadra della frequenza che vuoi (soluzione 1 della tua richiesta iniziale). A parte verificare a quali frequenze massime/minime puoi arrivare, si tratta di modificare un paio di registri ogni volta che devi cambiare frequenza.
Questa soluzione però ti consente di generare una sola frequenza alla volta (ci sono tutte le armoniche dell'onda quadra generata, ok, ma la frequenza principale è una).
Una soluzione così può andar bene per cicalini che generarno una nota alla volta, piccole pianole elettriche giocattolo, o altri giochini simili.
Ma se vuoi generare contemporaneamente 2 note, ad esempio ciò che otteresti premendo 2 tasti di una tastiera musicale contemporaneamente, o per riprodurre un brano o una voce preregistrata, devi essere in grado di generare più frequenze contemporaneamente. Non hai quindi altro sistema che campionare il segnale da riprodurre con un ADC e riconvertirlo con una DAC.
Il PWM con duty variabile è un DAC molto semplificato.
In questo caso il tuo PIC dovrà cambiare valore al DAC o al duty alla stessa frequenza usata per campionare il segnale in ingresso.

In definitiva: ti serve un segnale semplice mono-nota, o un segnale complesso?
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[8] Re: Suoni con PWM

Messaggioda Foto UtenteStefDrums » 26 lug 2013, 13:55

ciao!
grazie per la risposta. guarda, a me basterebbe anche semplicemente riprodurre singole note (alla fine mi serve riprodurre un suono come sveglia).

in questo modo devo cambiare la frequenza del PWM, giusto?
solo che il mio PIC andrà a 16 mHz, e non credo che, ache con tutti i post-scaler "al massimo", ruiscirei a avere frequenze basse (5-15 kHz)
Avatar utente
Foto UtenteStefDrums
241 1 6 9
Stabilizzato
Stabilizzato
 
Messaggi: 347
Iscritto il: 20 feb 2013, 14:15

1
voti

[9] Re: Suoni con PWM

Messaggioda Foto Utentec1b8 » 26 lug 2013, 14:06

In questo caso ti basta variare la frequenza del PWM.
Non so quale PIC intendi utilizzare, se si tratta di un 16F o 18F, con una clock a 16MHz, dovresti poter arrivare a circa 1kHz come frequenza minima, non ci sono problemi con la massima.
Fabio
Avatar utente
Foto Utentec1b8
3.595 3 8 13
G.Master EY
G.Master EY
 
Messaggi: 1770
Iscritto il: 15 gen 2009, 15:23

0
voti

[10] Re: Suoni con PWM

Messaggioda Foto UtenteStefDrums » 27 lug 2013, 14:15

ciao,
ho fatto 2 conti, all'incirca la frequenza minima a cui posso emettere l'onda quadra con un clock 16 MHz è 927 Hz. per me però è un po' alta, forse potrei abbassare la frequenza di clock a 6 MHz, spero solo che il PIC riesca a stare dietro a tutto il resto (un DAC e un RTC collegati con SPI, e l'interfaccia USB)

se solo si potesse usare un timer 16 bit per il PWM !
Avatar utente
Foto UtenteStefDrums
241 1 6 9
Stabilizzato
Stabilizzato
 
Messaggi: 347
Iscritto il: 20 feb 2013, 14:15

Prossimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti