Stepper-motor testes simulação não roda!!

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Stepper-motor testes simulação não roda!!

Mensagempor antonio » 01 Jun 2012 04:37

Pessoal tudo bem!!

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!

Imagem

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 );
};
};
}
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor tcpipchip » 01 Jun 2012 12:08

Seja mais baixo nivel.
Diga o que pelo menos esta funcionando...
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor antonio » 01 Jun 2012 14:40

Cara! praticamente não faz nada,ou seja na simulação quando ligo no proteus faz 1/4 de volta e trava!

Fazendo nova simulaçao faz o mesmo,soh isso!!
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor tcpipchip » 02 Jun 2012 18:18

mas aparece 1000,0100,0010, 0001 no portd do uc ?
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor antonio » 03 Jun 2012 09:24

tcpipchip escreveu:mas aparece 1000,0100,0010, 0001 no portd do uc ?


Cara fazendo testes com LEDs no portd do uc ,os leds dah umas piscada e trava!
antonio
Byte
 
Mensagens: 209
Registrado em: 15 Out 2006 12:34

Mensagempor tcpipchip » 03 Jun 2012 17:24

Mexi um pouco no teu software...
Testei aqui e funcionou no PROTEUS e MPLAB e ISHIELD
Abraços
TCPIPCHIP

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 1000
//
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);
for(i = 0; i < 1000; i++)
PulsaMotor( 0 );
}

}
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

cron

x