[DÚVIDA] problemas com servos motores - vídeo em anexo.

Boa noite a todos, meu TCC está quase finalizado, porém tem apresentado problemas com os servos. Estou alimentando os servos com uma fonte independente da fonte do arduino, entretanto seus GND's estão conectados. O servo vertical estão operando perfeitamente, mas o servo horizontal não está, como mostra o vídeo.

 A fonte do arduino e dos servos são de 5V cada, com 2000mAh.

O sistema para seguir os servos funciona por meio de 4 ldr's (primeira imagem). O movimento dos servos é baseado na luminosidade recebida pelos LDR's. Os LDR's são distribuidos simetricamente (segunda imagem), de modo que os LDRs são distribuidos como a figura a seguir.

O terceiro arquivo é um vídeo que mostra o servo "louco".

como resolver esse problema?

Esse é o código.

ldr = analogRead(A0); //Faz a leitura analógica do LDR 1
ldr_1 = analogRead(A1); //Faz a leitura analógica do LDR 2
ldr_2 = analogRead(A2); //Faz a leitura analógica do LDR 3
ldr_3 = analogRead(A3); //Faz a leitura analógica do LDR 4

vms = (ldr + ldr_1) / 2; //Valor médio superior
vmi = (ldr_2 + ldr_3) / 2; //Valor médio inferior
vme = (ldr + ldr_2) / 2; //Valor médio esquerda
vmd = (ldr_1 + ldr_3) / 2; //Valor médio direita

dvert = vms - vmi; //Verifica a diferença entre ldr superior e inferior
dhoriz = vme - vmd; //Verifica a diferença entre o ldr da esquerda e direita

if (vms > vmi) { //Verifica condição vertical 01
servov = ++servov;
if (servov > 160) { //Angulo vertical limite superior
servov = 160;
}
} //Fim da confição vertical 01
else if (vms < vmi) { //Verifica condição vertical 02
servov = --servov;
if (servov < 10) { //Angulo vertical limite inferior
servov = 10;
}
}
else {
} //Nada acontece

vertical.write(servov); //Escreve a posição vertical

if (vme > vmd) { //Verifica condição horizontal 01
servoh = ++servoh;
if (servoh < 160) { //Angulo horizontal limite inferior
servoh = 160;
}
} //Fim da confição horizontal 01
else if (vme < vmd) { //Verifica condição horizontal 02
servoh = --servoh;
if (servoh > 20) { //Angulo horizontal limite superior
servoh = 20;
}
}
else {
} //Nada acontece

horizontal.write(servoh); //Escreve a posição horizontal

Exibições: 77

Anexos

Responder esta

Respostas a este tópico

Boa tarde JFS,

Recomendações:
1. Remova seu sketch da área de texto do seu tópico;
2. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
3. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada linha e facilita a ajuda.
4. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
    com o seu sketch.

RV

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2018   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço