O módulo HC-SR04
O módulo de sensor ultrassônico HC-SR04 é comumente usado em projetos com Arduino
para realização em leituras de distâncias que podem variar entre 2 centímetros e 4 metros, permitindo uma precisão de 3 milímetros.
Baseado no envio e recebimento de sinais ultrassonicos pelos sensores, calcula a distância entre o sensor e o objeto com base no tempo entre o envio (Trigger) e o retorno (Echo) do sinal.
fonte: http://cienciaemserrinha.blogspot.com.br/2016/09/crob-aula-25-sensores-ultrassonico.html
O inicio de transmissão ocorre com um pulso de 10 us, seguido por 8 pulsos de 40 KHz, ode o sensor aguarda o retorno, determinando uma distância por meio de uma equação onde:
Distância = (Tempo Echo * velocidade do som) /2
Conexão com o Arduino
A ligação do Arduino com o módulo sensor ultrassônico é bastante simples: no modulo são encontrados 4 pinos, VCC, Trigger, ECHO e GND.
Abaixo um exemplo de ligação do módulo em um Arduino Uno.
fonte: próprio autor
Código fonte (exemplo)
//Teste Sensor Ultrassonico
//Elaboração: Tony Emerson Marim
//=== http://mecatronizar.blogspot.com.br ===
//
// Baseado no programa original de FILIPEFLOP
//Carrega a biblioteca do sensor ultrassonico
#include <Ultrasonic.h>
//Define os pinos para o trigger e echo
#define pino_trigger 2
#define pino_echo 3
//Inicializa o sensor nos pinos definidos acima
Ultrasonic ultrasonic(pino_trigger, pino_echo);
void setup()
{
Serial.begin(9600);
Serial.println("Lendo dados do sensor...");
}
void loop()
{
//Le as informacoes do sensor, em cm e pol
float cmMsec, inMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
//Exibe informacoes no serial monitor
Serial.print("Distancia em cm: ");
Serial.print(cmMsec);
Serial.print(" - Distancia em milimetros: ");
Serial.println((float)cmMsec*10.0);
Serial.print(" - Distancia em polegadas: ");
Serial.println(inMsec);
delay(1000);
}
No código acima uma leitura de distância em três unidades diferentes centímetro, milímetro e polegada e imprime os valores medidos no monitor serial do Arduino.
Para o funcionamento ideal desse módulo, faz-se necessário declarar no código fonte uma biblioteca Ultrassonic.h, que estarei disponibilizando ao final do projeto.
fonte: próprio autor
Projeto medidor de distâncias
Vamos nesse projeto fazer uso de um sensor ultrassônico para funcionar como uma trena eletrônica fazendo medidas de objetos colocados à sua frente, e mostrando em um display LCD as distâncias medidas.
Os componentes usados para a construção do projeto são:
1 Aruino (estarei usando um Arduino nano nessa demonstração)
1 protoboard
1 módulo sensor HC-SR 04
1 visor LCD 16x2
1 potênciometro 10Kohm
1 transistor 2N2222 (NPN)
2 resistores 10Kohm
1 pushbutton
1 buzzer 5VCC
cabos jumper
fonte: próprio autor
Quando o botão for acionado sinais ultrassônicos são disparados pelo sensor até localizar um objetos e calcular o tempo de retorno exibindo o valor da distância.
Existe no projeto um transistor 2N2222 tipo NPN um resistor e um potenciômetro, ambos com uma resistência de 10Kohms, responsáveis para o funcionamento do display a cada leitura. Um buzzer faz com que o usuário se atente para uma condição onde o dispositivo fica fora do alcance para medição e o retorno de toda leitura vai ser demonstrada em um visor LCD 16X2.
Esquema de ligação
Seguindo o desenho abaixo todos os componentes necessários para o funcionamentos estão expostos como sugestão para o sistema.
fonte: próprio autor
O código fonte
//Medidor com Ultrassonico e LCD
//Elaboração: Tony Emerson Marim
//=== http://mecatronizar.blogspot.com.br ===
// Variáveis do processo
int l = 255;
int PINO_TRIGGER = 9;
int PINO_ECHO = 8;
#define BUTTON 10
#define LUMIN 7
#define PINO_TRIGGER 9
#define PINO_ECHO 8
#define NOTE_A4 440
// Bibliotecas utilizadas
#include <LiquidCrystal.h>
#include <Ultrasonic.h>
// Pinagem utilizada na biblioteca do LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
pinMode(BUTTON, INPUT);
pinMode(PINO_TRIGGER, OUTPUT );
pinMode(PINO_ECHO, INPUT );
pinMode(LUMIN, OUTPUT);
Serial.begin( 115200 );
Serial.println( "Ultrasonic ranging module: ");
// Especificação de coluna e linha na LCD
lcd.begin(16, 2);
}
void loop() {
while(digitalRead(BUTTON) == LOW) { // Estado da leitura enquanto sinal baixo
analogWrite(LUMIN, 0);
lcd.clear();
noTone(6);
}
analogWrite(LUMIN, l);
digitalWrite(PINO_TRIGGER, LOW); // sinal baixo no pino Trigger
digitalWrite(PINO_TRIGGER, HIGH); // envia pulso de 10us no pino
delayMicroseconds( 100 );
digitalWrite(PINO_TRIGGER, LOW);
long duration = pulseIn(PINO_ECHO, HIGH);
long r = 3.4 * duration / 2; // Lógica matemática da distância
float distance = r / 100.00;
lcd.setCursor(0, 0);
lcd.print("tempo: ");
lcd.print(duration);
lcd.print(" us ");
lcd.setCursor(0, 1);
if( duration > 38000 ) {
lcd.println("fora de alcance ");
tone(6, NOTE_A4);
} // condição se duração for maior que 38ms para encontrar um obstáculo
else {
lcd.print("dist: ");
lcd.print(distance); lcd.println(" cm "); noTone(6);
}
delay( 5000 ); // tempo ativo na LCD para leitura dos dados
}
Nesse circuito o sensor ultrassom de pois de enviar uma rajada de pulsos, calcula a distância do objeto e retorna o valor em unidades métricas para ser exibida pela LCD, que também recebe o tempo de retorno do trabalho executado. Caso o objeto esteja fora de alcance do sensor um sinal sonoro é emitido até que se torne possível encontrar o obstáculo.
fonte: prórpio autor
Você pode encontrar para baixar a biblioteca do módulo Ultrasonic nesse LINK.
Caso seja necessário, todos os arquivos para realização do projeto encontra-se nesse LINK.
Gostou? Curta nossa página no Facebook, assine nosso canal e compartilhe nossos vídeos!
Bons Estudos!
Nenhum comentário:
Postar um comentário