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.
Tags:
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
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por