PWM AVR control velocidad motor 12VCC


Compartir: Share on Facebook10Tweet about this on TwitterShare on Google+0Share on Tumblr1Share on LinkedIn0

PWM AVR control velocidad motor 12VCC

PWM AVR control velocidad motor 12VCC

PWM AVR control velocidad motor 12VCC, se generará una señal PWM AVR para el control de la velocidad de un pequeño motor de 12VCC de corriente continua, las frecuencias adecuadas para el uso de señales PWM en motores de continua se recomienda que sean mayores a los 4Khz, esto se hace con el fin de que no se produzcan ruidos molestos cuando el motor entre en funcionamiento, en realidad la frecuencia a elegir dependerá del uso que se le quiera dar al motor y el ver como responde a las pruebas para diversas frecuencias que se le de a la señal PWM, esto hay que hacerlo con cuidado porque puede ocurrir que algunos motores lleguen a dañarse, por lo que es muy importante revisar la hoja de datos del motor a utilizar por si tiene algún rango de frecuencias recomendado por el fabricante.

En la imagen se tiene el motor de 12VCC del cual se controlará su velocidad mediante PWM AVR control velocidad motor 12VCC, se hará la programación para que la señal PWM generada con el microcontrolador AVR ATmega88 sea de unos 15Khz aproximadamente, el rango audible está entre los 20Hz y los 20Khz, además muchos motores vienen preparados para que filtren el ruido que puede provocar el motor.

Para generar la señal PWM AVR control velocidad motor se utilizará el PWM modo rápido timer1 AVR con una resolución de 9 bits, el ancho de pulso de la señal PWM AVR control velocidad motor será variable, la señal PWM se obtendrá por el pin OC1B del ATmega88 en forma no invertida, se utilizarán dos pulsadores para  controlar la velocidad del motor mediante el  control del ancho de pulso de la señal PWM modo rápido, un pulsador estará conectado al pin PB0 y será para aumentar la velocidad mediante el aumento del ancho de pulso, el otro pulsador estará conectado en el pin PD7 y será para disminuir la velocidad mediante la disminución el ancho de pulso. El ATmega88 estará trabajando a una frecuencia de 8Mhz.

El prescaler elegido para el registro TCNT1 será de 1, la frecuencia de la señal PWM modo rápido para el timer1 se obtiene de la siguiente relación:

Fpwm=FCPU/(prescaler*(máximo+1))

Como la resolución será de 9, entonces el valor máximo al que llegará el  registro TCNT1 será de 511, entonces se tendrá

Fpwm=(8Mhz/(1*512)

de donde Fpwm=15,625KHz que es lo mismo que un periodo de Tpwm=64us, se iniciará el ancho de pulso a un 0% por lo que el registro OCR1B se cargará en un inicio con 0.

OCR1B=0;//Ancho de pulso inicial de 0

Mediante el pulsador conectado al pin PB0 cada vez que este sea pulsado se incrementarán los valores  del registro OCR1B en 5 unidades, de esta manera se aumenta la velocidad del motor, se a elegido 5 para que se aprecien pronto los cambios en el ancho del pulso, puede ser cualquier otro incremento, por precaución se limitará que el valor del registro OCR1B no sea mayor a 511, del pin PB0 se aprovechara su resistencia pull up interna.

Mediante el pulsador conectado al pin PD7 cada vez que este sea pulsado se decrementarán los valores  del registro OCR1B en 5 unidades, de esta manera se disminuye la velocidad del motor, se a elegido 5 para que se aprecien pronto los cambios en el ancho del pulso, puede ser cualquier otro decremento, por precaución se limitará que el valor del registro OCR1B no sea menor a 0, del pin PD7 se aprovechara su resistencia pull up interna.

Se controlará la velocidad del motor mediante incrementos o decrementos en el valor del registro OCR1B dentro del ciclo del programa.

Configuración del registro TCCR1A para el PWM AVR control velocidad motor 12VCC

Como se obtendrá la señal PWM timer1 AVR en forma no invertida por el pin OC1B su bit5 se pondrá a 1 y su bit4 se pondrá a 0, sus bit1 se pondrá a 1 y su bit0 se pondrá a 0 ya que se utilizará el modo PWM rápido con una resolución de 9 bits, sus demás bits se pondrán a 0 ya que no se usarán.

TCCR1A=0b00100010;//PWM por el pin OC1B, no invertido, PWM modo rápido de 9 bits

Configuración del registro TCCR1B para el ejemplo PWM AVR control velocidad motor 12VCC

Su bit4 se pondrá a 0 y su bit3 se pondrá a 1 para utilizar el modo PWM rápido con una resolución de 9 bits, y como se usará un prescaler de 1 la combinación de sus bits 2, 1 y 0 será 001, todos sus demás bits se pondrán a 0 ya que no se usarán.

TCCR1B=0b00001001;//PWM modo rápido resolución de 10 bits, prescaler de 1

El circuito utilizado es el siguiente, se utiliza el transistor BJT 2N2222A ya que el motor necesita una corriente de 80mA, el 2N2222A está trabajando en corte y saturación para controlar la velocidad del  motor de 12VCC, mediante la señal PWM que llega a la base del transistor por medio de la resistencia de 1K que limita la corriente que se absorbe del pin OC1A. El diodo es para proteger el circuito durante el corte, ya que evita que el  cambio en la corriente a través del motor sea instantaneo. En el osciloscopio se puede ver la señal PWM generada en el pin OC1B.

PWM AVR control velocidad motor 12VCC

El código para el PWM AVR control velocidad motor 12VCC, hecho en el ATMEL STUDIO es el siguiente:

A continuación se tienen algunas imágenes de las medidas hechas en el osciloscopio para dos anchos de pulsos que se obtienen en el  pin  OC1B para la señal PWM, lo que se manifiesta en el motor como diferentes velocidades las cuales se controlan por los pulsadores.

PWM AVR control velocidad motor 12VCC imagen1

En esta primera imagen de lo que se mide en el pin OC1B la señal PWM, el ciclo de trabajo es de 8,98%, lo que se manifiesta como una baja velocidad para el motor, se observa que la frecuencia es de 15,9Khz y el periodo es de 63us.

PWM AVR control velocidad motor 12VCC imagen2

En esta segunda imagen en la que se mide en el pin OC1B la señal PWM, el ciclo de trabajo es de 78,3%, lo que se manifiesta como una mayor velocidad para el motor, se observa que la frecuencia es de 15,9Khz y el periodo es de 63us.

En la tercera imagen se ha medido con el osciloscopio entre el colector y el emisor del transistor, cuando la señal está a 0 el transistor conduce y el motor gira, cuando esta a 1(12V) el transistor está apagado y no conduce, las pendientes que se ven son debidas a los tiempos de conmutación del transistor, el pasar de bajo a alto le toma mas tiempo que el pasar de alto a bajo.

PWM AVR control velocidad motor 12VCC imagen3

La siguiente es una imagen del circuito experimental implementadodo en los protoboard.

PWM AVR control velocidad motor 12VCC imagen4

Si he logrado ayudarte, comparte este enlace para poder ayudar a muchas personas mas. Muchas Gracias.

Atte: MrElberni.

Compartir: Share on Facebook10Tweet about this on TwitterShare on Google+0Share on Tumblr1Share on LinkedIn0