Professional Documents
Culture Documents
PIC16F628A
El driver L298N es un driver de alta potencia para el control de motores paso a paso (PAP) bipolares o unipolares de hasta 2A. Este
driver puede soportar hasta 46V con una salida total de corriente de hasta 4A. El siguiente circuito tiene el propósito de ser utilizado
para la prueba de cualquier motor pap unipolar o bipolar de manera rápida, para constatar su funcionamiento. El circuito consta de
4 terminales de salida para la conexión de las bobinas (fases) de los motores PAP, dos terminales para la fuente de alimentación de
5V y dos terminales para la fuente de alimentación de potencia (hasta 46V). En algunas ocasiones puede ser necesario utilizar
dos fuentes independientes (una fuente para el motor y otra fuente de 5V para la lógica interna), ya que el empleo
de una sola fuente (con un regulador de 5V adicional para la obtención de la alimentación de bajo voltaje) puede
producir problemas de funcionamiento debido a las fluctuaciones de voltaje ocasionadas por los motores,
especialmente cuando consumen corrientes elevadas. El driver L298N requiere 8 diodos externos de protección, que pueden
ser los comunes 1N4007 (a menos que se trabaje con un elevado número de pulsos por segundo PPS, por encima de los 400 PPS, en
cuyo caso se requieren diodos especiales de acuerdo a como lo indica la datasheet del driver L298N). Igualmente, es imprescindible
el empleo de los condensadores indicados, los que ayudan a controlar los problemas ocasionados por las variaciones de voltaje propias
de un sistema digital. El driver L298N tiene que estar adecuadamente refrigerado por medio de un disipador de calor de aluminio de
tamaño apropiado.
El PIC 16F628A ha sido programado para que genere una secuencia de 200 pulsos en sentido horario y 200 pulsos en sentido
antihorario, de forma continua. Los pulsos se aplican con un intervalo de 10ms (es decir, 100 PPS). Se indica el código fuente en
lenguaje C y también se ha añadido un enlace de descarga del código ejecutable (.hex) para que el lector pueda probarlo rápidamente.
Esquema eléctrico:
Motor paso a paso bipolar
char i;
#define PAUSA 10 //Pausa de 10ms entre pasos.
void main(){
CMCON=0x07; //Pines RA<3:0> como E/S digital.
PORTA=0x00; //Estado inicial del puerto A.
TRISA=0x00; //Puerto A como salida.
PORTB=0x00; //Estado inicial del puerto B.
TRISB=0x00; //Puerto B como salida.
while(1){
//200 pasos CW
for (i=1;i<=50;i++)
pasosCW();
PORTB=0b0000; //Apagar el motor.
Delay_ms(500); //Pausa de 500ms al final del movimiento.
//Definición de funciones.
void pasosCW(){
PORTB=0b0110;
Delay_ms(PAUSA);
PORTB=0b0101;
Delay_ms(PAUSA);
PORTB=0b1001;
Delay_ms(PAUSA);
PORTB=0b1010;
Delay_ms(PAUSA);
}
void pasosCCW(){
PORTB=0b1001;
Delay_ms(PAUSA);
PORTB=0b0101;
Delay_ms(PAUSA);
PORTB=0b0110;
Delay_ms(PAUSA);
PORTB=0b1010;
Delay_ms(PAUSA);
}