terça-feira, 3 de setembro de 2019

Arduino e medição de distância com base em sensor ultrassônico

Ultrasonic são ferramentas sensores ótimos para medir a distância sem contato real e usados ​​em vários locais, como medição do nível da água, medição da distância etc. Essa é uma maneira eficiente de medir com precisão pequenas distâncias. Neste projeto, usamos um Sensor Ultrasonic para determinar a distância de um obstáculo do sensor. Princípio básico da medição de distância por ultrassom baseia-se no ECHO. Quando as ondas sonoras são transmitidas no ambiente, as ondas retornam à origem como ECHO após atingir o obstáculo. Portanto, precisamos apenas calcular o tempo de viagem de ambos os sons, o tempo de saída e o tempo de retorno à origem depois de bater no obstáculo. Como a velocidade do som é conhecida por nós, após algum cálculo, podemos calcular a  distância.  

Ultrasonic Sensor HC-SR04


Componentes Utilizados

  1. Arduino Pro Mini
  2. Módulo sensor Ultrasonic
  3. 16x2 LCD
  4. Escala
  5. Protoboard
  6. Bateria de 9 volts
  7. Fios de conexão

Módulo Sensor Ultrasonic

O sensor ultrassônico HC-SR04 é usado aqui para medir a distância no intervalo de 2cm a 400cm com precisão de 3mm. O módulo sensor consiste em transmissor ultrassônico, receptor e circuito de controle. O princípio de funcionamento do sensor ultrassônico é o seguinte:
  1. O sinal de alto nível é enviado por 10us usando o Trigger.
  2. O módulo envia oito sinais de 40 KHz automaticamente e, em seguida, detecta se o pulso é recebido ou não.
  3. Se o sinal é recebido, é através de alto nível. O tempo de alta duração é o intervalo de tempo entre o envio e o recebimento do sinal.
Distância=(Tempo x Velocidade do som no ar (340 m/s))/2
Ultrasonic Sensor HC- SR04
Diagrama de tempo
O módulo trabalha no fenômeno natural do ECHO do som. Um pulso é enviado por cerca de 10us para acionar o módulo. Após o qual o módulo envia automaticamente 8 ciclos de sinal de ultra-som de 40 KHz e verifica seu eco. O sinal após bater com um obstáculo retorna e é capturado pelo receptor. Assim, a distância do obstáculo ao sensor é simplesmente calculada pela fórmula dada como
           Distância=(tempo x velocidade)/2.
Aqui, dividimos o produto da velocidade e do tempo por 2, porque o tempo é o tempo total necessário para alcançar o obstáculo e retornar. Assim, o tempo para alcançar os obstáculos é apenas metade do tempo total gasto.
Ultrasonic sensor timing diagram

Diagrama de circuito e explicação

Arduino Distance Measurement Circuit Diagram
O diagrama de circuitos do  arduino e sensor ultrassônico é mostrado acima para medir a distância. Nas conexões de circuito, o módulo do sensor ultrassônico "s" dispara”e "eco"; os pinos são conectados diretamente aos pinos 18 (A4) e 19 (A5) do arduino. Um LCD 16x2 é conectado ao arduino no modo de 4 bits. O pino de controle RS, RW e En são conectados diretamente aos pinos 2, GND e 3. do arduino. E o pino de dados D4-D7 está conectado aos 4, 5, 6 e 7 do arduino.

Antes de tudo, precisamos acionar o módulo do sensor ultrassônico para transmitir o sinal usando o arduino e, em seguida, aguardar o recebimento do ECHO. O Arduino lê o tempo entre o disparo e o ECHO recebido. Sabemos que a velocidade do som é de cerca de 340m/s. para que possamos calcular a distância usando a fórmula fornecida:
Distância=(tempo de viagem/2)*velocidade do som
Onde a velocidade do som em torno de 340m por segundo.
Um LCD de 16x2 é usado para exibir a distância.

Código ultra-sônico para medição de distância do Arduino

No código, lemos o tempo usando pulseIn (pin). Em seguida, execute os cálculos e o resultado exibido no LCD 16x2 usando as funções apropriadas.
Distance measurement program
 
Código: 
#include <LiquidCrystal.h>
 
#define trigger 18
#define echo 19
 
LiquidCrystal lcd(2,3,4,5,6,7);
 
float time=0,distance=0;
 
void setup()
{
 lcd.begin(16,2);
 pinMode(trigger,OUTPUT);
 pinMode(echo,INPUT);
 lcd.print(" Ultra sonic");
 lcd.setCursor(0,1);
 lcd.print("Distance Meter");
 delay(2000);
 lcd.clear();
 lcd.print(" Circuit Digest");
 delay(2000);
}
 
void loop()
{
 lcd.clear();
 digitalWrite(trigger,LOW);
 delayMicroseconds(2);
 digitalWrite(trigger,HIGH);
 delayMicroseconds(10);
 digitalWrite(trigger,LOW);
 delayMicroseconds(2);
 time=pulseIn(echo,HIGH);
 distance=time*340/20000;
 lcd.clear();
 lcd.print("Distance:");
 lcd.print(distance);
 lcd.print("cm");
 lcd.setCursor(0,1);
 lcd.print("Distance:");
 lcd.print(distance/100);
 lcd.print("m");
 delay(1000);
}

Nenhum comentário:

Postar um comentário

Peço que use somente caixa baixa, não todo escrito em letra grande.