sábado, 15 de outubro de 2016

Medidor de distâncias (Arduino + LCD)

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.


Para o funcionamento do visor segue um tutorial simples da ligação de um visor LCD no arduino (tutorial) onde está disponível também informações sobre a biblioteca necessária para seu funcionamento.

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

No vídeo abaixo é possível assistir uma demonstração do circuito em funcionamento.


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