Hoje, vamos falar de um dos sensores mais utilizados na área Maker: o Sensor Ultrassonico.
No tutorial em questão, vamos utilizar um Sensor Ultrassonico HC-SR04, e um Arduino Nano para aplicarmos a medição de distâncias com a técnica utilizada pelo sensor.
O Sensor Ultrassonico contém um emissor e um receptor de ondas sonoras e seu funcionamento pode ser comparado com a comunicação das baleias. Elas emitem uma onda sonora e aguardam um retorno para saber sua localização e se comunicarem com outras da mesma espécie. No caso do sensor ultrassonico, as ondas são geradas a uma frequência de 40KHz(40.000 Hz). Essa frequência é alta, comparada com a frequência que o ouvido humano consegue detectar, que é entre 20 e 20.000 Hz. A equação responsável pela medição do tempo é: d = (v * t)/2, onde d é a distância entre o HC-SR04 e o obstáculo; v é a velocidade do som (consideramos 340 m/s); e t é o tempo de ida e volta do sinal das ondas do nosso sensor.
A pinagem do Sensor Ultrassonico HC-SR04 segue abaixo:
-
VCC (5v): Alimentação positiva do sensor;
-
GND(0v): Negativo do sensor;
-
Trigger: Gatilho de disparo de pulso de ondas sonoras;
-
Echo: Dispara um pulso com duração de tempo para retorno da onda recebida pelo sensor.
Os componentes que serão utilizados no tutorial em questão são:
* O Arduino Nano pode ser substituído por qualquer outro da família Arduino
Montando o projeto
Vamos aprender a conectar o nosso sensor ao Arduino (e isso é super simples!). A seguir você encontra o esquemático do projeto.
O esquemático do projeto e os códigos fontes estarão em nosso GitHub. Disponível em:
https://github.com/omegacomponenteseletronicos/ultrassonic-sensor
Desenvolvendo o código
Para utilização do sensor, estaremos baixando e adicionando a biblioteca do sensor, disponível em:
Abra a IDE do Arduino, clique em Sketch → Import Library… → Add Library… e selecione o “Ultrassonic.zip”
Após selecionar a biblioteca do sensor, vá em File → Examples → Ultrassonic → UltrassonicDemo
O código exemplo da biblioteca “Ultrassonic.h” será nosso código responsável pela medição da distância entre o sensor e o obstáculo.
#include Ultrassonic.h; #define TRIGGER_PIN 12 #define ECHO_PIN 13 Ultrassonic ultrassonic(TRIGGER_PIN, ECHO_PIN); void setup(){ Serial.begin(9600); } void loop(){ float cmMsec, inMsec; long microsec = ultrassonic.timing(); cmMsec = ultrassonic.convert(microsec, Ultrassonic::CM); inMsec = ultrassonic.convert(microsec, Ultrassonic::IN); Serial.print("MS: "); Serial.print(microsec); Serial.print(", CM: "); Serial.print(cmMsec); Serial.print(", IN: "); Serial.println(inMsec); delay(1000); }
Mergulhando no projeto
Software
Primeiramente incluímos a biblioteca
#include <Ultrassonic.h>
Definimos os pinos trigger e echo
#define TRIGGER_PIN 12 #define ECHO_PIN 13
Instanciamos o objeto da classe da biblioteca do sensor, passando os pinos trigger e echo definidos anteriormente
Ultrassonic ultrassonic(TRIGGER_PIN, ECHO_PIN);
Em nossa função setup() iniciamos o monitor serial da IDE do Arduino
void setup(){ Serial.begin(9600); }
Na função loop(), primeiramente, declaramos as variáveis para armazenar centímetros, polegadas e microssegundos
float cmMsec, inMsec; long microsec = ultrassonic.timing();
Em nossas variáveis de centímetros e polegadas armazenamos a conversão dos microssegundos em centímetros e polegadas, respectivamente, com a função convert();
cmMsec = ultrassonic.convert(microsec, Ultrassonic::CM); inMsec = ultrassonic.convert(microsec, Ultrassonic::IN);
Após isso, basta mostrarmos os valores no monitor serial com as funções Serial.print() e Serial.println(). A função delay(1000) faz a espera de 1 segundo para a próxima leitura do sensor.
Serial.print("MS: "); Serial.print(microsec); Serial.print(", CM: "); Serial.print(cmMsec); Serial.print(", IN: "); Serial.prinln(inMsec); delay(1000);
Hardware
Algumas considerações são importantes quanto ao funcionamento do sensor. O objeto a ser usado como obstáculo é uma delas. Dependendo do tamanho do obstáculo, o sensor pode enfrentar dificuldades na medição devido a onda de retorno não ser suficiente para detecção. O posicionamento do objeto também deve ser levado em conta. Além disso, quando posicionado um objeto entre 2cm e 4cm, o Sensor Ultrassonico apresenta falhas na medição. Essas falhas são comuns e podem variar de acordo com o sensor utilizado.
Conclusão
Esse é um tutorial básico para iniciantes da área, e, por isso utilizamos o próprio exemplo da biblioteca do Sensor Ultrassonico HC-SR04 para fazer a medição de distâncias. Porém, o sensor pode ser usado em diversas aplicações como radar de objetos para um robô se localizar em um ambiente controlado. Qualquer dúvida relacionada ao tutorial e afins podem comentar nesse post ou entrar em contato. 😀
Estou com um projeto e preciso de um sensor em que faça leituras milimétricas de movimento e aproximação, gostaria de saber se com esse sensor ultrassônico HC-SR04 eu poderia colocar ele para funcionar onde assim que fosse detectada a aproximação, o equipamento em questão faria o trabalho, sem a necessidade de um acionamento manual. Grato pela atenção.
Olá, o sensor HC-SR04 tem precisão de 3mm. É possível sim fazer o que você citou, muitos dispensadores automáticos de álcool que foram instalados durante a pandemia, utilizavam o HC-SR04.