Pessoal nunca trabalhei com stepper-motor,tenho aqui um e estou tentando fazer ele rodar com um PIC 16F877A com o ULN2003A,mais atè agora sem sucesso pelo menos no Proteus onde estou fazendo testes!
O codigo eh o que vem no livro Renato Silva que tirei da internet, mudifacando o codigo por vezes mas segue se funcionar seràh que o pessoal pode dar uma olhada no codigo pra ver onde està errando??
Estou usando o PIC 16F877A em vez do original 16F628A do livro!!
desde jà agradeço
O circuito no proteus!

e o cadigo!
- Código: Selecionar todos
#include <16F877A.h>
#FUSES NOWDT //Watch Dog Timer
#FUSES XT //oscilador cristal <= 4mhz
#FUSES NOPUT //Power Up Timer
#FUSES NOPROTECT //sem proteção para leitura da eprom
#FUSES BROWNOUT //Resetar quando detectar brownout
#FUSES NOLVP //prog. baixa voltagem desabilitado
#FUSES NOCPD //sem travar o chip
#use delay(clock=4000000)
//
#use fast_io(d)
#define tempo 40
//
int passo[] = {0b10000000, //0x80
0b01000000, //0x40
0b00100000, //0x20
0b00010000 }; //0x10
int posicao;
//
void PulsaMotor( int direcao) {
if( direcao != 0) posicao ++ ;
output_d( passo[ posicao & 0x03 ]);
delay_ms( tempo );
}
void main(void)
{
int16 i; //define variável para contagem de passos
set_tris_d( 0x00 ); //define a direção do portB
while( TRUE ){ //loop permenente
//executa 1000 vezes para a esquerda
for(i = 0; i < 1000; i++) {
PulsaMotor(1);
};
executa 1000 vezes para a direita
PulsaMotor( 0 );
};
};
}