Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

19/03/2011 #1


Problema para manejar paso a paso un motor a pasos
Saludos

Nuevamente recurro a ustedes en busca de un poco de sabiduria, bueno estoy realizando un proyecto en el cual debo de controlar 4 motores a pasos unipolares o bipolares, no importa mucho, ya eh podido realizar la secuencia de un motor a pasos q gire cada 45° , pero quisiera
saber como puedo aumentarle la resolucion (En la simulacion en proteus) es decir moverlo
1.8° cada vez que le llegue un caracter por el puerto serial, quisiera que me ayudaran un poco en el codigo, lo estoy realizando en ccs estoy utilizando un pic16f877 y unos drivers l293.
Anexo imagenes y el codigo que estoy utilizando:

#include<16f877a.h>
#fuses XT,NOPROTECT,NOWDT,PUT
#use delay (clock=4000000)
#use fast_io(b)
#use fast_io(d)
#byte portb=0x06
#byte portd=0x08
#use RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_C6,RCV=PI N_C7)
#define MAXPASOS 8

void ControlMotoresPasos(void);
/* grados a mover 45°,90°,135°,180°
225°,270°,315°,360° */
unsigned int const secuencia[MAXPASOS]= {0b00001001,0b00001000,0b00001010,0b00000010,
0b00000110,0b00000100,0b00000101,0b00000001};
void main()
{
set_tris_a(0xff);
set_tris_b(0x00);
set_tris_d(0x00);
set_tris_e(0b11101111); //Configuramos el puerto D como I/O y el puerto E como entrada
portb=0;
portd=0;
disable_interrupts(GLOBAL);
ControlMotoresPasos();
}
void ControlMotoresPasos(void)
{
char caracter_recibido;
int i;
while(TRUE)
{
if(kbhit())
{
caracter_recibido=getc();
if(caracter_recibido=='1')
{
for(i=0; i<MAXPASOS; i++) //Realiza la secuencia Modificar
{
portb=secuencia[i];
delay_ms(30);
}
}
}
}
}

Agradeceria si me ayudaran con este problema, ya que lo q realmente me interesa es poderlo mover 1.8° cada ves que llegue un caracter=1 este es apenas un prototipo rapido del programa falta agregarle muchas cosas pero primero quiero resolver este dilema.
20/03/2011 #2

Avatar de Unikfriend

Hi yeaa,
las specs del motor dicen que cada paso es 1.8°?
si el programa tal cual, avanza 45° con 8 pasos cada paso seria de 5.65°.
20/03/2011 #3


No dice nada proteus sobre las caracteristicas de los servomotores, pero yo eh visto simulaciones
en las cuales lo van moviendo poco a poco y quisiera saber como lograrlo tambien en la vida real existen motores a pasos de 200 pasos, el problema es q no se manejarlos, debe de haber algun algoritmo para manejarlos paso a paso

jajajaj me ekivoque en el post anterior puse servomotores, pero son motores a pasos
20/03/2011 #4


Seria mas facil de resolver si lo mandas en mismo archivo ISIS con su codigo en un rar o zip para verlo si que consuma mucho tiempo. Si ya lo tienes echo.
Así las personas que te ayudan no tenga que darse el trabajo de armar el circuito y configurar todo.
20/03/2011 #5


Tienes razon, aqui anexo un zip con el codigo, y la simulacion ya esta todo armado simplemente para probar, si tienen alguna idea de como acerlo se los agradeceria
Archivos Adjuntos
Tipo de Archivo: zip pic de motores a pasos.zip (51,2 KB (Kilobytes), 55 visitas)
22/03/2011 #6


Cada secuencia da medio paso. El isis el motor esta configurado que cada paso gire 90 grados asi que lo cambias a 1.8.
Entonces para que gire un paso debe pasar dos secuencias; la modificación seria algo así.

void ControlMotoresPasos(void)
{
char caracter_recibido;
int i,p=0;
while(TRUE)
{
if(kbhit())
{
caracter_recibido=getc();
if(caracter_recibido=='1')
{
for(i=0; i<2; i++,p++)
{
if(p>7)
p=0;
portb=secuencia[p];
delay_ms(30);
}
}
}
}
}

Solo en esta función ice la modificación.
22/03/2011 #7


muchas gracias cristian_elect por fin entendi el manejo de los motores a pasos, el programa que pusiste funciona a la perfeccion
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.