Autor Tema: motor a pasos con pic  (Leído 1875 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado lalodesant

  • PIC10
  • *
  • Mensajes: 5
motor a pasos con pic
« en: 16 de Junio de 2012, 02:11:07 »
hola estoy haciendo una pequeña practica en pic c compiler con el 18f4550 en el sistema minimo y con el uln2803. el problema es el siguiente ya me da los diferentes tipos de paso asi que en un solo paso yo elegi el normal , tiene qque aumentar o disminuir la velocidad del motor con un push boton, lo hice con el dip y si me salio. pero lo que kiere el profe es que si le picas un push aumente la velocidad osea menos tiempo en el cambio de bobina y si le picas el otro mas lento osea mas timpo en el cambio. yo pense con una variable de tiempo pero no se como hacerlo ayudaaaaaaaaaaa

#include <18F4550.h> //
#fuses hs,nolvp,nowdt,noprotect
#use delay (clock=20000000) //Declaración del cristal que se ocupa para la operación.
//Habilitar puerto
#byte portb=0XF81
#byte portd=0XF83


//Dirección de la memoria donde se localiza el Puerto b.
//Habilitacion de puertos como entrada o salida
inicializar(){
set_tris_d(0x01); //Configurar el puerto d como entrada
set_tris_b(0x00); //Configurar el puerto b como salida
output_b(0); //Limpio el puerto B de cualquier basura
}
int velocidad;
//Programa principal
void main()
{
inicializar();
while(true)
{
velocidad_ms=(1000)
if(portd ==1){
velocidad_ms=(200)
}
else if(portd==2){
velocidad_ms=(-200)
}
portb=0x0C;
Delay_ms(velocidad);

portb=0x06;
Delay_ms(velocidad);

portb=0x03;
Delay_ms(velocidad);

portb=0x09;
Delay_ms(velocidad);


}
}

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: motor a pasos con pic
« Respuesta #1 en: 16 de Junio de 2012, 13:35:53 »
lo que te puedo corregir a simple vista es que estas usando una variable no declarada "velocidad_ms".

tambien tu variable velocidad la estas declarando con un entero, lo que significa que solo puede tomar valores de -128 a 127. si quieres un rango mas grande debes usar un int1.

otro error es que la funcion delay_ms no recibe como argumento numeros negativos. solo tendrias que alternar entre 100 y 400 por ejemplo.

espero te ayuden los comentarios
"Nada es imposible, no si puedes imaginarlo"