Boa tarde pessoal, 

Fiz um projeto básico para uma placa com sensores IR seguirem o movimento. Bem, desenvolvi a placa e a montei em uma pan/tilt e consegui os resultados que eu queria.

Mas estou suspeito a eficiência da interface de programação, pois acredito que possa deixar os processos mais rápidos do que já estão.

Eis o vídeo da minha placa seguidora de movimento na pan/tilt


https://www.youtube.com/watch?v=jeU8o2ozeI0

Se leram a descrição do vídeo no YouTube notaram que eu falei que o servo do eixo horizontal queimou a placa, então o religuei como simples motor CC com caixa de redução até chegar um novo servo. Digo isso para não estranharem o código C#.

Código em C# 

--------------------------------------------------------------------------------------------------------------------------------------------

#include <Servo.h>
#define Leitura 200  // Leitura do sensor - calibrei todos os sensores a terem o mesmo valor, por isso apenas um valor como base

int Sensor_Hor_Esq = A0; // Sensor IR horizontal Esquerdo
int Sensor_Hor_Dir = A1; // Sensor IR horizontal Direito
int Sensor_Ver_Sup = A2; // Sensor IR Vertiacal Superior
int Sensor_Ver_Inf = A3; // Sensor IR Vertical Inferior
int moverV = 2300;  // Define posição inicial servo

int pino_motor_Hor_A = 6;
int pino_motor_Hor_B = 5;

Servo servo_Ver; // Objeto para controlar servo Horizontal

void setup()
{
Serial.begin(9600);
servo_Ver.attach(10);
pinMode(pino_motor_Hor_A, OUTPUT);
pinMode(pino_motor_Hor_B, OUTPUT);
servo_Ver.writeMicroseconds(moverV);
}

void loop()
{
// Serial.println(" Sensor Horizontal | Sensor Vertical |");
// Serial.println(" | |");
// Serial.print("Esquerda: ");
// Serial.print(analogRead(Sensor_Hor_Esq));
// Serial.print(" |Superior: ");
// Serial.print(analogRead(Sensor_Ver_Sup));
// Serial.println(" |");
// Serial.print("Direita: ");
// Serial.print(analogRead(Sensor_Hor_Dir));
// Serial.print(" |Inferior: ");
// Serial.print(analogRead(Sensor_Ver_Inf));
// Serial.println(" |");
// Serial.println(" ");
// Serial.println(" ");
// Serial.println("--------------------------------------------------------------------------");
// Serial.println(" ");
// Serial.println(" ");



if(analogRead(Sensor_Hor_Esq) < Leitura && analogRead(Sensor_Hor_Dir) > Leitura)
{
digitalWrite(pino_motor_Hor_A, HIGH);
digitalWrite(pino_motor_Hor_B, LOW);

delay(1);

digitalWrite(pino_motor_Hor_A, LOW);
digitalWrite(pino_motor_Hor_B, LOW);

}
else if(analogRead(Sensor_Hor_Esq) > Leitura && analogRead(Sensor_Hor_Dir) < Leitura)
{
digitalWrite(pino_motor_Hor_A, LOW);
digitalWrite(pino_motor_Hor_B, HIGH);


delay(1);

digitalWrite(pino_motor_Hor_A, LOW);
digitalWrite(pino_motor_Hor_B, LOW);

}
if(analogRead(Sensor_Ver_Sup) < Leitura && analogRead(Sensor_Ver_Inf) > Leitura && moverV > 1500) // 1500 movimento minimo limitado pela pan/tilt
{
moverV -=1;
servo_Ver.writeMicroseconds(moverV);
delayMicroseconds(100);


}
else if(analogRead(Sensor_Ver_Sup) > Leitura && analogRead(Sensor_Ver_Inf) < Leitura && moverV < 2300)  // 2300 movimento máximo na pan/tilt
{
moverV +=1;
servo_Ver.writeMicroseconds(moverV);
delayMicroseconds(100);

}


}

------------------------------------------------------------------------------------------------------------------------------------------

Alguém vê a possibilidade de conseguir melhorar a velocidade dos processos ?? principalmente a respeito do do movimento Vertical, que esta usando um servo motor. Pois o horizontal esta o mais breve possível usando motores CC, não tendo como diminuir.

--------------------------------------------------------------------------------------------------------------------------------------------

Editado - Acrescentando esquema elétrico da placa mediante a pedido.

--------------------------------------------------------------------------------------------------------------------------------------------

Este é o esquema ilustrado da placa, com detalhes da montagem e valores dos componentes.

Veja que os componentes foram dispostos conforme a montagem original da placa, isso para facilitar caso alguém venha querer fazer a montagem da mesma em uma placa protótipo.

E aqui uma foto da placa vista de frente, para se ter uma ideia.

(foto com meu celular já meio antigo, desculpe a qualidade.)

Qualquer outra informação, basta perguntar.

Exibições: 2511

Responder esta

Respostas a este tópico

Se der algum ADM pode colocar o meu vídeo postado como miniatura no post, e nao como apenas link como esta. Pois na edição do tópico esta opção não estava funcionando.

Raphael

Muito bom seu projeto, seria possivel me falar que sensor usou, sei que é IR, mas poderia dar mais detalhes?

Muito obrigado

Sérgio Sgarbi

O sensor  é o TIL32 para emissor e TIL38 para receptor(fototransistor).

Sao bons sensores se analisar seu custo/preço, mas os mesmos recebem muita influencia de luz externa, principalmente o Sol. Por isso tem algumas aplicações que eles podem não ser recomendados.

Tópico Atualizado a pedido de dados.

Muito obrigado Raphael

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço