Enviat per: Matias | 4 Agost 2010

PWM

Donat que la plataforma de visió de CMUCam3 no disposa de sortida d’audio directe, em toca generar la senyal d’audio fent ús del PWM.
El PWM (Pulse Width Modulation), com el seu nom indica, és la tècnica de modular l’ample del puls (que direm duty cicle) per tal de donar més o menys potència a la senyal de sortida.

PWM

Posem que tenim un PWM amb duty cicle al 50% en un voltatge de 5V, la senyal resultant serà un senyal constant de 2,5V.

El PWM esta implementat en la plataforma, dissenyat amb la intenció de controlar servos per controlar robots, ja que funciona amb la mateixa corrent d’entrada (només té una font adicional per si de cas volem més voltatge) i utilitza el timer del processador per funcionar. Però el podem utilitzar per generar so? Com? L’objectiu és aconseguir un sinus, que és el to pur d’un so.

Hi ha dos alternatives, amb els seus avantatges i inconvenients:

  • Electrònica: Si aconseguim generar un PWM a una frequència d’uns 440 Hz, que és senzill, ja tindriem la nota “LA”, però al ser una senyal quadrada, tenim el problema de que se sent molt malament, els pics de la senyal fa que hi hagi molta interferència i que se sentin cops en el so. La manera d’arreglar això seria posant un petit circuit RC que absorbís lentament la càrrega del pols, per generar una corba en comptes d’una senyal cuadrada, però només aconseguim una forma de “dent de tauró” per dir-ho així, puja fent corba lentament, però baixa fent corba ràpidament, cosa que també genera el cop en el so, i encara no sona del tot net.
  • Software: Per software es pot aconseguir controlar la forma del senyal de sortida a la perfecció, modificant el duty cicle en el moment adequat i fer-ho incrementalment com si es tractés d’una integració, es dona poc duty cicle si es vol pujar poc, i es dona molt duty si es vol pujar de cop. El problema d’aquest mètode és la resolució. Si volem generar així el senyal de 440Hz per exemple, necessitem X divisions a cada periode del senyal per poder controlar el PWM. Quan més gran sigui X, més fina sortirà la senyal del sinus, és evident que amb X=2 no fariem res, potser sortirà d’uns X=100 mínim, així que hauriem d’aconseguir fer anar el PWM a 44KHz.

Així doncs, de moment optaré per la segona solució, controlar-ho per software però s’haurà de tenir una resolució del PWM a 44Khz com a mínim, hauré de mirar fins a on ens permet arribar el clock del processador.

Advertisements

Deixa un comentari

Fill in your details below or click an icon to log in:

WordPress.com Logo

Esteu comentant fent servir el compte WordPress.com. Log Out / Canvia )

Twitter picture

Esteu comentant fent servir el compte Twitter. Log Out / Canvia )

Facebook photo

Esteu comentant fent servir el compte Facebook. Log Out / Canvia )

Google+ photo

Esteu comentant fent servir el compte Google+. Log Out / Canvia )

Connecting to %s

Categories

%d bloggers like this: