Ir ao conteúdo
  • Cadastre-se

Problemas para acionar Motor de Passo - PIC16F628A


vitor_dangelo

Posts recomendados

Olá!

Estou fazendo um pequeno circuito para acionar um motor de passo utilizando o microcontrolador PIC16F628A.

O motor que estou utilizando é um motor Unipolar.

Modelo: 23BB-H252P Para mais informações pode-se consultar o manual: https://docs.google.com/open?id=1pxUBhIdIdxeg04nygiqiXfL_Hwbkdf1NoIZtMrPsHWASA36qpe4uqy5ugZ-E Página 28.

Ao acionar o motor usando o código abaixo ele dá apenas um "soco" para direita e depois outro pra esquerda. Ainda não consegui fazer ele dar uma volta completa. O motor dá apenas estes pequenos passos (socos).

#include <16F628A.h>
#FUSES NOWDT //No Watch Dog Timer
#FUSES XT //Crystal osc <= 4mhz for PCM/PCH , 3mhz to 10 mhz for PCD
#FUSES PUT //Power Up Timer
#FUSES NOPROTECT //Code not protected from reading
#FUSES NOBROWNOUT //No brownout reset
#FUSES MCLR //Master Clear pin enabled
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection
#FUSES RESERVED //Used to set the reserved FUSE bits
#use delay(clock=4000000)

void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

while(true)

{

Output_high(pin_b0);
Output_high(pin_b1);
Output_low(pin_b2);
Output_low(pin_b3);
delay_ms(300);

Output_low(pin_b0);
Output_high(pin_b1);
Output_high(pin_b2);
Output_low(pin_b3);
delay_ms(300);

Output_low(pin_b0);
Output_low(pin_b1);
Output_high(pin_b2);
Output_high(pin_b3);
delay_ms(300);

Output_high(pin_b0);
Output_low(pin_b1);
Output_low(pin_b2);
Output_high(pin_b3);
delay_ms(300);
}

}

th_Selection_007.png th_Selection_001-1.png th_IMG_20121226_203829_zpsccda29b0.jpg th_IMG_20121226_203816_zps25573303.jpg th_Selection_003.png

O circuito simulado no Proteus funciona perfeitamente, na prática ocorre o problema dito acima.

Ficarei muito grato com quem puder me ajudar.

Obrigado!

Link para o comentário
Compartilhar em outros sites

Olhando para o codigo não vejo nenhum erro, embora que normalmente não uso esse tipo movimento.

#bit  M1_A=portd.0
#bit M1_B=portd.1
#bit M1_C=portd.2
#bit M1_D=portd.3

.......
.......
M1_A=1; delay_ms(100); M1_A=0;
M1_B=1; delay_ms(100); M1_B=0;
M1_C=1; delay_ms(100); M1_C=0;
M1_D=1; delay_ms(100); M1_D=0;
M1_A=1;

Aí está um trecho do ultimo codigo com motor de passo que fiz.

Link para o comentário
Compartilhar em outros sites

é totalmente importante usar os diodos para drenar a força contro eletromotriz que aparece quando a bobina é desenergizada o seu projeto esta com esses diodos??? falo porque achei que não tinha importancia e o projeto nunca dava certo quando por desencargo de conciencia coloque esses diodos o projeto funcionou na hora

abrçs

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...