You are on page 1of 5

14/10/13

Control de motores a pasos con el ATmega AVR en C

MXN

Su pedido est VACIO. Buscar


BUSCAR

HeTPro

Registro

Tienda

Tutoriales

Cursos

Contacto

Servicios

Siguenos!!

CONTROL DE MOTORES A PASOS CON EL ATMEGA AVR EN C


Escrito por Rolando Ramirez Mircoles 06 de Marzo de 2013 18:26

CONTROL DE MOTOR A PASOS EN PASO SIMPLE Y PASO COMPLETO Introduccin:

Los motores a pasos tienen cuatro bobinas y avanzan o retroceden solo un pequeo ngulo de giro o ngulo de paso, por cada combinacin de vo aplicado en las bobinas. Para mantener la marcha del motor es necesario cambiar peridicamente la combinacin de voltajes en sus terminales.

Categoras
Componentes de Montaje Superficial (1) Motores (17) Programadores (11) Microcontroladores (14) Paquetes (7) Cables & Conectores (32) Robtica (13) Circuitos Integrados (7) Optoelectrnica (16) Herramientas (16) Prototipado (3) Sensores (15) Cristales (5) Interfaz & RF / ZigBee (14) Arduino y compatibles (4) Servicios HeTPro (107) category_path (1)

Con 4 bobinas un motor a pasos puede tener hasta 8 terminales, dos por cada bobina. Las terminales se pueden unir interna o externamente dando dos tipos de motores, Unipolares y los Bipolares.

Los motores a pasos bipolares cada bobina debe ser polarizada en ambas direcciones. Esto es equivalente a hacer girar un motor DC en ambas direcc para esto se requiere un circuito llamado Puente H.

Los motores a pasos unipolares son ms fciles de controlar por el hardware requerido. En estos motores las bobinas se polarizan en una sola direcci que basta un switch o transistor por cada bobina para energizarla. Para controlar este tipo de motores las bobinas deben ser polarizadas secuencialm acuerdo con la direccin que se quiera girar.

En los motores a pasos unipolares las bobinas no deben ser polarizadas las 4 bobinas al mismo tiempo por que generara un campo magntico simtri rotor no sabra a donde girar. A partir de esto se deduce que existen hasta tres modos de hacer girar un motor a pasos unipolar; Paso simple, Paso Medio paso.

Paso completo: Es cuando las bobinas se polarizan de dos en dos. En la siguiente tabla se muestra la secuencia en que se energizan las bobinas para girar el rotor hacia un sentido, para que gire en sentido contrario solo hay que invertir el orden de polarizacin de las bobinas. Tabla 1. Secuencia de polarizacin las bobinas de paso completo. L1 1 1 0 0 L2 0 1 1 0 L3 0 0 1 1 L4 1 0 0 1 Hex 0x09 0x0C 0x06 0x03

Medio paso: Es cuando las bobinas se polarizan de a una y de a dos intercaladamente. En la siguiente tabla se muestra la secuencia de polarizacin d bobinas en modo medio paso. Tabla 2. Secuencia de polarizacin las bobinas de medio paso. L1 1 1 1 1 0 L2 0 1 1 1 1 1 0 0 L3 0 0 0 1 1 1 1 1 L4 1 1 0 0 0 1 1 1 Hex 0x09 0x0D 0x0C 0x0E 0x06 0x07 0x03 0x0B

Login
Usuario

0 0 1

Paso simple: Es cuando las bobinas se polarizan de una en una. En la siguiente tabla se muestra la secuencia de polarizacin de las bobinas en paso s Contrasea Tabla 3. Secuencia de polarizacin las bobinas de paso simple. L1 0 Recordarme 0 L2 0 0 L3 0 1 L4 1 0 Hex 0x01 0x02

hetpro-store.com/index.php?option=com_content&view=article&id= 24

1/5

14/10/13

Recordarme
INGRESAR

0 0 1

0 1 0

Control de motores a pasos con el ATmega AVR en C


1 0 0 0 0 0 0x02 0x04 0x08

Perdi su contrasea? Olvid su usuario? Todava no est registrado? Registrarse

Lista de materiales (Puedes encontrarlos en la tienda virtual HeTPro http://www.hetpro-store.com) Programador USBasp V3.0 Microcontrolador ATMEGA8535 Tarjeta controladora de motores Motor Shield L298 Motor a pasos Push- botton Fuente de 5V Potencimetro de 10K

Who's Online
Tenemos 19 invitados conectado

Diagrama Esquemtico

Imagenes A continuacion se muestran imagenes funcionando de la tarjeta controladora de motores L298

hetpro-store.com/index.php?option=com_content&view=article&id= 24

2/5

14/10/13

Control de motores a pasos con el ATmega AVR en C

hetpro-store.com/index.php?option=com_content&view=article&id= 24

3/5

14/10/13

Control de motores a pasos con el ATmega AVR en C

A continuacin tenemos el programa en lenguaje C, fue desarrollado en AVR Studio y compilado con WinAVR. Este cdigo se utiliz para controlar la de giro y velocidad del motor a pasos, la velocidad es controlada con un potencimetro el cual es ledo por el ADC7 del microcontrolador ATMEGA85 mediante los valores del ADC se da el tiempo de retardo en los bits de salida del puerto en el que se conecta a la tarjeta controladora de motores. Los botones sirven para seleccionar el tipo de paso y la direccin de giro del motor, como se puede ver en la seccin del cdigo tenemos las simple y paso completo para diferentes combinaciones de los primeros 2 bits del puerto C. Programa en C #include avr/io.h //Librera necesaria para las entradas y salidas #include util/delay.h //Librera para usar los retardos de tiempo #include avr/interrupt.h // Interrupciones #define Clock 8000000 //Configuracin-ADC... void InicializarADC (void); void IniciarConversionADC(void); unsigned int ConversionADC; unsigned int Ret; int main(void) { DDRA = 0x0F; PORTA =0x01; DDRD = 0x00; sei(); InicializarADC(); IniciarConversionADC(); for(;;); ISR(ADC_vect) { volatile unsigned char ConversionADCL=ADCL; volatile unsigned char ConversionADCH=ADCH; ConversionADC=(ConversionADCH*256)+ConversionADCL; Ret= ConversionADC; // Secuencia de Polarizacin de las bobinas en Modo Paso Simple if(PIND == 0x00) //Giro a la Derecha { PORTA = 0x01; _delay_ms(Ret); PORTA = 0x02; _delay_ms(Ret); PORTA = 0x04; _delay_ms(Ret); PORTA = 0x08; _delay_ms(Ret); } else if(PIND == 0x01) //Giro a la Izquierda { PORTA = 0x08; _delay_ms(Ret); PORTA = 0x04; //Se declara el Puerto A como salida //Se pone un 1 en Puerto A //Se declara el puerto D como entrada //Interrupcin Global //Inicializa el ADC //Inicia conversin del ADC //Ciclo FOR infinito } //Vector de Interrupcin del ADC // Inicializacin ADC // Iniciar conversin ADC //Variable sin signo // Variable sin signo para los Retardos //Frecuencia de trabajo del Microcontrolador

hetpro-store.com/index.php?option=com_content&view=article&id= 24

4/5

14/10/13

Control de motores a pasos con el ATmega AVR en C


PORTA = 0x04; _delay_ms(Ret); PORTA = 0x02; _delay_ms(Ret); PORTA = 0x01; _delay_ms(Ret); } // Secuencia de Polarizacin de las bobinas en Modo Paso Completo else if(PIND == 0x02) //Giro a la derecha { PORTA = 0x09; _delay_ms(Ret); PORTA = 0x0C; _delay_ms(Ret); PORTA = 0x06; _delay_ms(Ret); PORTA = 0x03; _delay_ms(Ret); } else if(PIND == 0x03) //Giro a la Izquierda { PORTA = 0x03; _delay_ms(Ret); PORTA = 0x06; _delay_ms(Ret); PORTA = 0x0C; _delay_ms(Ret); PORTA = 0x09; _delay_ms(Ret); } IniciarConversionADC (); } // Configuracin-ADC... void InicializarADC (void)

{ ADCSRA|=(1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); // Habilitar ADC, interrupcin y prescalador(4) ADMUX|=(0<<REFS1)|(1<<REFS0)|(0<<MUX4)|(0<<MUX3)|(1<<MUX2)|(1<<MUX1)|(1<<MUX0); //Configuracion de ADC7 y AVCC con capaci externo en pin AREF } void IniciarConversionADC (void) { ADCSRA|= (1<<ADSC); // Iniciar conversin }
ltima actualizacin el Viernes 12 de Julio de 2013 04:58

HeTPro

Registro

Tienda

Tutoriales

Cursos

Contacto

Servicios designed by Website Templates.bz - professional Virtuemart Templates

All rights reserved. 2013.

hetpro-store.com/index.php?option=com_content&view=article&id= 24

5/5

You might also like