Salidas PWM

ANTECEDENTES

En este tema se supone que entiendes los principios de la salida digital. Si no, lee acerca de ellos aquí.

Una señal de ancho de pulso modulación (PWM) es una especie de una salida digital, que tiene una cierta estructura en su comportamiento temporal. Específicamente, la señal tiene un periodo fijo. Cada vez que se inicia un período, la señal pasa de baja a alta. Entonces se mantiene alta durante un tiempo determinado, llamado el ancho de pulso, después de lo cual se convierte en baja de nuevo para el resto del período. El ancho de pulso puede cambiar con el tiempo, pero el período se mantiene igual. La siguiente figura presenta una forma de onda típica de una señal PWM.

pwm

La relación entre el ancho de pulso y el período se denomina " ciclo de trabajo " y normalmente se presenta en por ciento . En el ejemplo anterior , los primeros cinco períodos tienen un ciclo de trabajo del 50 % y el último período de cinco tener un ciclo de trabajo de 10 % . También, es muy común hablar de la frecuencia en lugar del período . La frecuencia es simplemente el número de períodos por segundo , por lo que la traducción entre el período y la frecuencia es muy simple . Si las unidades del eje X en el ejemplo anterior son microsegundos , podemos ver que el período es 100us , por tanto, la frecuencia es de 10 kHz o 10.000 ciclos por segundo .

En términos generales , las señales PWM tienen dos usos distintos. La primera de ellas consiste en simular o aproximar una salida analógica. La forma en que funciona es que si tenemos en cuenta el voltaje medio de una señal PWM de 0 V / 3,3 V , será ( ciclo de trabajo) * 3.3V . Por ejemplo , si el ciclo de trabajo es 10 % , la tensión de salida promedio será de 0.33 . Si tuviéramos que conducir un LED con una señal PWM ciclo de trabajo del 10 % , sería el 10 % del tiempo y fuera de 90 % de las veces . Si la conmutación es suficiente (es decir, la frecuencia es lo suficientemente alto) rápido , no nos dimos cuenta un abrir y cerrar , y se pueden conseguir una impresión de un LED que brilla tenuemente en el 10 % de su potencia . El hecho sorprendente es que hay muchos otros dispositivos en los que el ciclo de trabajo PWM 10 % a 3,3 V produciría el mismo resultado 0.33 como constante. En particular , los motores no suelen distinguir entre los dos, y para muchos tipos de motores , esto significa que una señal PWM ciclo de trabajo del 25 % hará que se convierten en el 25% de su máxima velocidad !
Sólo una nota , no conectes los motores directamente a los pines IOIO , necesita un tipo de circuito llamado controlador en el medio. Por ejemplo el MOTOR SHIELD MIOIO.Pero puedes experimentar con seguridad PWM con un LED conectado a través de una resistencia de 220ohm .

El segundo uso de señales PWM es para codificar la información . El dispositivo que recibe la señal PWM puede medir la anchura de los impulsos y se comportará de forma diferente para diferentes anchos de pulso . El ejemplo más notable es un motor servo (el tipo a menudo visto en los juguetes RC ) . Los servos de esperan una señal de control PWM con una frecuencia de 100 Hz o 50Hz ( un peíodo de 10 ms o 20ms) . Ellos decodifican esta señal mediante la medición de la anchura del pulso y ajustan su ángulo de rotación en consecuencia. Típicamente , una anchura de pulso de 1 ms tomará el brazo del servo a un extremo , un pulso de 2 ms para el otro extremo, un pulso de 1,5 ms para el centro , etc. Controlar los servos con  IOIO no es un problema para conectar la señal de PWM directamente al cable de control del motor - el servo no consume una gran cantidad de corriente de este cable , a diferencia de un motor de corriente continua. Sin embargo si que tendrás que alimentarlo con alguna de las salidas de alimentación, generalmente de 5v.

La tarjeta MIOIO soporta la generación de hasta 9 señales PWM simultáneas. No todos los pines puede servir como salida PWM, sino sólo los pines que pueden funcionar como salidas "periféricos". Puedes encontrar los pines compatibles en ala tabla que hay aquí  en la columna con el símbolo "PPSi".  El LED 'status' de la tarjeta también se puede utilizar con PWM. Sólo ten en cuenta de que está conectado de tal manera que la baja la convierte en ALTO y la convierte de, por lo que la conducción con un ciclo de trabajo de PWM 75% será realmente encenderlo a una intensidad de 25%.

COMO USARLO

Para utilizar los pines MIOIO como salidas PWM se realiza a través de la interfaz PwmOutput. Una instancia de esta interfaz se corresponde con un pin físico en la tarjeta, configurado para trabajar en modo de salida PWM así como un módulo de PWM de los 9 que están disponibles. Para usarPwmOutput  se realiza llamando a una de las sobrecargas de IOIO.openPwmOutput(). La forma más simple es:

PwmOutput pwm = ioio.openPwmOutput(pinNum, freq);

Esto abre el número de pin pinNum de salida PWM, en el modo normal (es decir, no-drenaje abierto), funcionando a una frecuencia de Hz freq . Se requiere que en el momento de la llamada, este pin no se utilize para ninguna otra cosa, y que haya al menos un módulo de PWM libre. Con el fin de abrir un pin de salida PWM en modo de drenaje abierto (por ejemplo, para generar una señal PWM de 5V, como se comenta aquí), para usarlo se puede utilizar:

PwmOutput pwm = ioio.openPwmOutput(new DigitalOutput.Spec(pinNum, Mode.OPEN_DRAIN), freq);

Una vez que se obtiene una instancia de PwmOutput , el ciclo de trabajo puede ser controlado usando:

pwm.setDutyCycle(dc);

donde  dc es un número de punto flotante entre 0 y 1. Este es normalmente el método conveniente cuando se utiliza la señal PWM para simular una salida analógica.

Alternativamente, se puede controlar el ancho de pulso directamente (por ejemplo, para controlar un servo):

pwm.setPulseWidth(pw);

donde  pw es el ancho de pulso en microsegundos. Es decir, un servo tomaría aquí un número entre 1000-2000, que es de 1 ms-2 ms a fin de utilizar su recorrido completo.

Cuando haya terminado de usar el pin, usa:

pwm.close();

con el fin de devolver el pin a un estado "flotante" y, posiblemente, ser capaz de volver a abrirlo en el mismo o en un modo diferente, así como conexión del módulo PWM. La instancia PwmOutput se vuelve inútil después de esta llamada - no es posible hacer nada con ella.

Deja un comentario

Tu dirección de correo electrónico no será publicada.