Arduino com Servo Motor e Sensor HC-SR04

Projeto com Arduino e o sensor de distância HC-SR04 em conjunto com Servo Motor

Este projeto demonstra a utilização de sensores e motores com o Arduino através de uma aplicação interessante que pode ser exibida na feira de ciências do seu colégio. Pode ser útil também em aplicações de robótica, como robôs autônomos e outras infinidades de ideias.

Descrição

Vamos acoplar um sensor de distância a um servo motor. O servo vai ficar girando em uma faixa de 180 graus. O sensor vai mensurar as distâncias dos objetos ao seu redor e depois, no final do rastreamento, vai apontar para o objeto que está mais próximo.

Se você não conhece os dispositivos que citamos, sugiro que consulte os tutoriais na seção de referências.

Vídeo do Projeto em ação

Para entender melhor o propósito do projeto, veja uma demonstração em vídeo:

Componentes necessários

  • Arduino – Qualquer Arduino compatível. Atente apenas para a tensão de operação que deve ser  5V, de preferência.
  • Um Servo Motor 180 graus
  • Sensor de distância HC-SR04
  • Fios jumper

O ideal é fixar os componentes em uma base para evitar solavancos.

Esquema de ligação

Arduiono, Servo Motor e HC-SR04
Arduiono, Servo Motor e HC-SR04

Bibliotecas necessárias

  • A biblioteca para o Servo já vem com a instalação da IDE do Arduino.
  • A biblioteca que usei para controlar o sensor de distância HC-SR04 pode ser instalada pelo próprio gerenciador de bibliotecas do Arduino ou pelo GITHUB:
    https://github.com/ErickSimoes/Ultrasonic

Sketch

/*

Projeto com Servo Motor e Sensor de Distância
O sensor irá rastrear o local num ângulo de 180 graus e identificar o objeto que está mais próximo
Janeiro de 2021, José Cintra
www.josecintra.com/blog

*/

#include “Servo.h” // Essa biblioteca é nativa da plataforma
#include <Ultrasonic.h> // Instalável pelo gerenciador de bibliotecas (Autor: Erik Simões)

// Configuração do sensor de distância com timeout de 40 ms
int trigger = 13;
int echo = 12;
Ultrasonic ultrasonico(trigger, echo, 40000UL);

// Configuração do Servo
Servo meuServo;

void setup() {
// Inicializar o Servo
meuServo.attach(9);
meuServo.write(0);
delay(100);
}

void loop() {

int menorDistancia;
int distancia;
int angulo;
int meuAngulo;

meuAngulo = 0;
meuServo.write(0);
delay(50);
menorDistancia = 400; // Precisão do sensor vai até 400 cm

// Inicia varredura em 180 graus de 5 em 5
for (angulo = 0; angulo <= 180; angulo += 5) {

// Posiciona o servo em cada ângulo
meuServo.write(angulo);

// Ler a distância
distancia = ultrasonico.read();

// Verificar a menor distância, desprezando leituras inválidas
if ((distancia > 0) && (distancia < 400) && (distancia < menorDistancia)) {
menorDistancia = distancia;
meuAngulo = angulo;
}

delay(100); //Pausa para a próxima leitura
}
delay(1000);

for (angulo = 180; angulo >= meuAngulo; angulo -= 5) {
meuServo.write(angulo);
delay(50);
}
}

Observações

  1. O ideal é ligar o servo motor em uma fonte de tensão externa;
  2. Existem diversos tipos de servo motores. Esté que usei é o micro servo de 180 graus;
  3. Sempre verifique as tensões entre a placa micorcontroladora e os dispositivos;
  4. Este é apenas um esboço de ideia de um projeto para feira de ciências. Ele pode ser incrementado, adicionando um buzzer e outras funcionalidades. No exemplo do vídeo, eu usei uma base de acrílico para fixar os componentes, mas você pode usar qualquer outro material. Pode usar fita dupla face para a fixação, por exemplo.
  5. Neste exemplo o servo motor percorre a faixa de 180 graus de 5 em 5. Isso pode ser facilmente modificado de acordo com a necessidade

Referências

 

 


 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *