La modulación por ancho de pulsos de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (una sinusoide o una cuadrada, por ejemplo), ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga.
El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período. Expresado matemáticamente:
Bien suficiente de teoría para poder comprender como funciona esto y sobre todo para darnos una idea de sus aplicaciones practicas pasemos a una explicación aun mas sencilla.
Hay ocasiones en que deseamos tener un control analógico donde la variación que se controla sea gradual, similar a un control de volumen por ejemplo y el principal objetivo es precisamente ese, que el control sea gradual y no pase de estar en apagado a estar a tope, cuando se esta trabajando con microcontroladores ya sea un PIC, un ATMEL o Arduino, nosotros contamos con salidas que pueden tener únicamente 2 valores correspondientes a 0 y 1 lógico en valores respectivos de voltaje ausente y presente, es entonces cuando requerimos de la técnica de PWM que en esencia consiste únicamente en cambiar rápidamente de 1 a 0 durante su ejecución y cuyo control consiste en indicar cuanto tiempo se estará en 1 y cuanto tiempo se estará en 0 para calcular esto se tiene la sencilla formula donde es el tiempo que la función estará a 1 (voltaje) y T es el periodo de la función es decir un intervalo finito de tiempo de una señal, por ejemplo podríamos decir que nuestro periodo T es de de 1000ms y que nuestro es de 200ms tendríamos que D=200ms/1000ms con un resultado D=.2 es decir se tendría un ciclo de trabajo de 20% por lo que si tenemos un motor en el pin de salida este estará 200ms en 5v y 800ms en 0v por consecuente el motor giraría a 20% de su velocidad máxima, como podemos ver esto resulta en algo sencillo donde solo tendríamos que variar el valor de para cambiar el porcentaje de la velocidad de nuestro motor.
Bien ahora el codigo del programa y no hay mejor aprendizaje que la practica asi que a montarlo y probemoslo.
//**************************//
// PWM ARDUINO SIMPLE //
//**************************//
int motor=3; //Declara Pin del motor
void setup()
{
Serial.begin(9600); //Inicia la comunicacion serial
}
void loop() // la funcion loop se ejectua infinitamente mientras el microcontrolador tenga energia
{
if (Serial.available()){ // comprobamos si se recibio alguna instruccion por el puerto serial
char a = Serial.read(); // la variable "a" sera donde guardemos el dato recibido por el puerto serie
if (a>='0' && a<='9'){ //comprobamos que el valor este entre los comandos validos
int velocidad = map(a,'0','9',0,255); //Escalamos el valor ingresado a rango de PWM
analogWrite(motor,velocidad); //Asignamos el valor al pwm del motor
Serial.print("El motor esta gira a velocidad: "); // imprimimos un mensaje en el monitor serial y la velocidad actual
Serial.println(a);
}
}
}
Espero les aya sido de utilidad.
No hay comentarios:
Publicar un comentario