Ir ao conteúdo
  • Cadastre-se

Controle de servo motor utilizando pic


rafaelfjardim

Posts recomendados

Olá pessoal. Preciso de uma ajudinha de vocês. Eu e mais 2 amigos estamos fazendo um projeto de eletrônica para a faculdade, porém estamos com problemas para implementar um braço mecânico utilizando o pic16f73 e 3 servo motores. O código que fizemos foi esse:


{

signed int16 x = 0;
signed int16 y = 0;
signed int16 z = 0;

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);


while (true) //sempre será verdadeiro
{

if ( input(pin_a0) ) //motor 1 para direita

{

while (x<500)
{

if(!input(pin_a0))
break;

output_high(pin_b1);
delay_us( 1500 + x );
output_low(pin_b1);
delay_ms(10);

x++;

}

}

if ( input (pin_a1) ) //motor 1 para esquerda
{

while (x!=0)
{

if(!input(pin_a1))
break;

output_high(pin_b1);
delay_us( 1500 + x);
output_low(pin_b1);
delay_ms (10);

x--;

}

}



if ( input(pin_a2)) //motor 2 para direita

{

while (y<500)
{

if(!input(pin_a2))
break;

output_high(pin_b2);
delay_us( 1500 + y );
output_low(pin_b2);
delay_ms(10);

y++;

}
}


if ( input(pin_a3)) //motor 2 para esquerda

{

while (y!=0)
{

if(!input(pin_a3))
break;

output_high(pin_b2);
delay_us( 1500 + y );
output_low(pin_b2);
delay_ms(10);

y--;

}
}

if ( input(pin_c0)) //motor 3 para direita

{

while (z<500)
{

if(!input(pin_c0))
break;

output_high(pin_b3);
delay_us( 1500 + z );
output_low(pin_b3);
delay_ms(10);

z++;

}

}

if ( input(pin_c1)) //motor 3 para esquerda

{

while (z!=0)
{

if(!input(pin_c1))
break;

output_high(pin_b3);
delay_us( 1500 + z );
output_low(pin_b3);
delay_ms(10);

z--;

}

}

}

}
void main()

E esse é o hardware que estamos utilizando:

HARDWARE

Nessa imagem estamos utilizando o pic16f877a pois no isis não temos o pic16f73 na database, porém a ideia de controle continua a mesma.

O problema de todo esse projeto é ele não funcionar após gravado o .hex no pic. Substituindo o servo por um led verificamos que há uma saída de sinal onde seria a saída de controle do servo, porém o servo não se move.

O que estamos fazendo de errado?

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...