- ¿Qué es un motor de CC?
- Componentes requeridos
- Diagrama de circuito
- Programación de Atmega16 para control de motores DC
Los motores de CC son los motores más utilizados. Estos motores se pueden encontrar en casi todas partes, desde pequeños proyectos hasta robótica avanzada. Anteriormente interconectamos DC Motor con muchos otros microcontroladores como Arduino, Raspberry pi y lo usamos en muchos proyectos robóticos. Hoy aprendemos a controlar el motor de CC con el microcontrolador AVR Atmega16. Pero antes de seguir adelante, sepamos más sobre el motor de CC.
¿Qué es un motor de CC?
El motor DC es un dispositivo que transforma la energía eléctrica en energía mecánica. Específicamente, un motor de CC utiliza corriente CC para convertir energía eléctrica en energía mecánica. El principio básico del motor es la interacción entre el campo magnético y la corriente para producir una fuerza dentro del motor que ayuda al motor a girar. Entonces, cuando la corriente eléctrica pasa a través de una bobina en un campo magnético, se genera una fuerza magnética que produce un par que da como resultado el movimiento del motor. La dirección del motor se controla invirtiendo la corriente. Además, su velocidad se puede variar variando el voltaje suministrado. Dado que los microcontroladores tienen pines PWM, se puede usar para controlar la velocidad del motor.
En este tutorial, se demostrará el funcionamiento del motor de CC con Atmega16. El controlador del motor L293D se utilizará para invertir la dirección de la corriente y, por lo tanto, la dirección del movimiento. El controlador de motor L293D usa una configuración de circuito H-Bridge que emite la corriente requerida al motor. Se utilizan dos botones para seleccionar la dirección del motor. Uno de los pulsadores se usa para seleccionar la rotación en sentido horario y el otro se usa para seleccionar la operación anti-reloj del motor DC.
Componentes requeridos
- Motor de CC (5 V)
- Controlador de motor L293D
- Microcontrolador Atmega16 IC
- Oscilador de cristal de 16Mhz
- Dos condensadores de 100nF
- Dos condensadores de 22pF
- Presionar el botón
- Cables de puente
- Tablero de circuitos
- USBASP v2.0
- Led (cualquier color)
Diagrama de circuito
Programación de Atmega16 para control de motores DC
Aquí el Atmega16 se programa usando USBASP y Atmel Studio7.0. Si no sabe cómo programar Atmega16 usando USBASP, visite el enlace. El programa completo se proporciona al final del proyecto, simplemente cargue el programa en Atmega16 y use los dos botones pulsadores para girar el motor de CC en sentido horario y antihorario.El motor de CC se interconecta mediante el controlador de motor L293D. El motor de CC girará en dos direcciones cuando se presione el botón respectivo. El botón de un pulsador se utilizará para rotar el motor de CC en sentido horario y el otro botón se utilizará para rotar el motor de CC en sentido antihorario. En primer lugar, defina la frecuencia de la CPU del microcontrolador e incluya todas las bibliotecas necesarias.
#define F_CPU 16000000UL #include #include
Luego, use una variable para realizar un seguimiento del estado del botón pulsado. Esta variable se utilizará para definir la dirección del motor.
int i;
Seleccione el modo de entrada / salida de GPIO usando el registro de dirección de datos. Inicialmente, haga que la salida del pin del motor sea tan baja para evitar el arranque del motor sin presionar el botón.
DDRA = 03; PORTA & = ~ (1 << 1); PORTA & = ~ (1 << 0);
Verificar si el 1er pulsador está conectado al PORTA4 de Atmega16 y almacenar el estado del pulsador en variable.
si (! bit_is_clear (PINA, 4)) { i = 1; PORTA & = ~ (1 << 1); _delay_ms (1000); }
De igual forma verifique si se presiona el 2º pulsador conectado al PORTA5 de Atmega16 y guarde el estado del pulsador en variable.
más si (! bit_is_clear (PINA, 5)) { i = 2; PORTA & = ~ (1 << 0); _delay_ms (1000); }
Si el estado del primer botón es verdadero, gire el motor de CC en el sentido de las agujas del reloj y si el estado del segundo botón es verdadero, gire el motor de CC en el sentido contrario a las agujas del reloj.
si (i == 1) { PORTA - = (1 << 0); PORTA & = ~ (1 << 1); } más si (i == 2) { PORTA - = (1 << 1); PORTA & = ~ (1 << 0); }
Puede conectar los pines del motor a cualquier pin GPIO dependiendo del GPIO utilizado. También es importante utilizar Motor Driver IC para disminuir la carga en el microcontrolador, ya que los microcontroladores no son capaces de proporcionar la corriente necesaria para hacer funcionar motores de CC. Para obtener más detalles y otros proyectos basados en motores de CC, visite el enlace correspondiente.
El código completo y el video de demostración se muestran a continuación.