I15 - Como usar o sensor ultrassônico HC-SR04 com Arduino sem o auxílio de biblioteca

Intermediário - Projeto 15

Usando o sensor ultrassônico HC-SR04 com Arduino sem biblioteca

Objetivo

Utilizar o o sensor ultrassônico HC-SR04 junto com o Arduino para medir distâncias entre o sensor e um objeto qualquer. Para o melhor entendimento dos princípios do funcionamento do HC-SR04, não vamos usar neste projeto qualquer tipo de biblioteca, podendo assim, demonstrarmos todas as etapas de atuação do sensor.

Obs.: É bom lembrar que existem bibliotecas disponíveis para simplificar a programação com este sensor. Falaremos destas bibliotecas nos próximos projetos.

Definições

Sensor de Distância Ultrassônico HC-SR04 possui função de medição sem contato entre 2 cm e 4 metros, com precisão de aproximadamente 3mm. O módulo é composto por transmissor ultrassônico, receptor e circuito de controle:

  • Transmissor Ultrassônico – Emite as ondas ultrassônicas que serão refletidas pelos obstáculos;
  • Um receptor – Identifica o eco do sinal emitido pelo transmissor;
  • Circuito de controle – Controla o conjunto transmissor/receptor, calcula o tempo entre a emissão e recepção do sinal;

Ondas ultrassônicas: São ondas mecânicas de alta frequência, acima de 20.000 Hz, que se propaga na velocidade do som. Neste caso, o som não pode ser ouvido pelos seres humanos. O ultrassom é muito utilizado para exames clínicos, sensores, sonares, etc. O módulo HC-SR04 emite ondas com frequência de 40.000 Hz.

Princípio de funcionamento do HC-SR04: O funcionamento do HC-SR04 se baseia no envio de sinais ultrassônicos pelo transmissor do sensor, que aguarda o retorno (echo) do sinal, e com base no tempo entre envio e retorno, calcula a distância entre o sensor e o objeto detectado no circuito de controle:

Etapas de funcionamento do HC-SR04

1. O Arduino envia um pulso de trigger (gatilho) de pelo menos 10us em nível alto (HIGH);

2. Ao receber o sinal de trigger enviado pelo Arduino, o transmissor ultrassônico envia 8 pulsos de 40khz e aguarda o retorno;

3. Se algum sinal de retorno for identificado pelo receptor, o sensor gera um sinal de nível alto (HIGH), cujo o tempo de duração é igual ao tempo total entre a emissão e a recepção do sinal ultrassônico.

3.1. Esse sinal de nível alto é enviado para o Arduino através do pino de entrada echo do módulo.

3.2. Durante o tempo de emissão e recebimento do sinal ultrassônico, o pino echo ficará em nível alto. 

3.3. Para capturar o tempo de duração em microssegundos do pulso em nível alto (HIGH) no pino echo usamos a função pulseIn() - leia referência Arduino.

4. Com base nesse tempo de entre o envio e o retorno do sinal ultrassônico podemos calcular a distância entre o sensor e objeto, utilizando a equação: Distância = (Tempo echo em nível alto * velocidade do som) /2

4.1. Como vimos anteriormente, o tempo echo em nível alto é o tempo que o sinal ultrassônico leva para ir e voltar até o sensor. Portanto, a distância percorrida pela onda sonora é o dobro da distância entre o sensor e o objeto.

4.2. Ao utilizarmos a função pulseIn() para determinarmos o tempo em nível alto, obteremos como resposta o valor em microssegundos. Portanto, vamos utilizar na equação acima o tempo em microssegundos e a velocidade do som em metros/microssegundo.

Observação: A velocidade do som é de aproximadamente 340,29 m/seg = 0.00034029 m/µs (metros por microssegundo).

Aplicação

Para fins didáticos e projetos onde o HC-SR04 pode ser utilizado para fazer leituras de distâncias entre o sensor e um objeto, acionar alarmes, detectar objetos e corrigir continuamente a trajetória de um robô ao detectar um obstáculo, por exemplo, entre outras aplicações em robótica.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard

Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 400 pontos

Jumpers Kit cabos ligação macho / macho 1  
Módulo Sensor Ultrassônico HC-SR04

Sensor Ultrassônico HC-SR04

1  

- Tensão de Alimentação 5V DC
- Corrente consumida 15mA
- Frequência de operação 40kHz
- Distância (min) 2cm / (max) 4m
- Precisão 3mm
- Ângulo de medição 15graus
- Sinal de entrada [Trigger] Pulso TTL (5V) de 10us
- Sinal de saída [Echo] Pulso TTL (5V) proporcional à distânia detectada

(datasheet)

Arduino UNO Arduino UNO 1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. O Arduino deve estar totalmente desconectado da fonte de energia enquanto você monta o circuito.

 

Atenção

1. A montagem do módulo HC-SR04 deve seguir a configuração abaixo:

  • Vcc  –  Deve ser conectado a um pino 5V do Arduino.
  • Trig  –  Deve ser conectado a um pino digital configurado como saída. Utilizamos o pino 8 do Arduino.
  • Echo – Deve ser conectado a um pino digital configurado como entrada. Utilizamos o pino 9 do Arduino.
  • Gnd  – Deve ser conectado a um pino GND do Arduino.

2. A montagem do nosso projeto foi realizada em um protoboard de 400 pontos:

Código do Projeto (Sketch)

1. Faça o download e abra o arquivo projetoI15.ino no IDE do ArduinoDOWNLOAD - projetoI15.ino

2. Se preferir, copie e cole o código abaixo no IDE do Arduino.

/*******************************************************************************
*
*    I15 - Usando sensor ultrassônico sem biblioteca
*    Autor: Angelo Luis Ferreira
*    28/02/2022
*    http://squids.com.br/arduino
*
*******************************************************************************/
int pinTrig = 8; // pino usado para disparar os pulsos do sensor
int pinEcho = 9; // pino usado para ler a saida do sensor
float tempoEcho = 0;
// Obs. Velocidade do som = 340,29 m/s = 0.00034029 m/us
const float velocidadeSom = 0.00034029; // em metros por microsegundo

void setup(){
  // Configura pinos Trig e Echo
  pinMode(pinTrig, OUTPUT); // configura pino TRIG como saída
  pinMode(pinEcho, INPUT); // configura pino ECHO como entrada

  // Inicializa pino Trig em nível baixo
  digitalWrite(pinTrig, LOW);
  
  // Inicializa a porta serial
  Serial.begin(9600);
}

void loop(){ 
  gatilhoSensor(); // envia pulso trigger (gatilho) para disparar o sensor  
  tempoEcho = pulseIn(pinEcho, HIGH); // mede o tempo de duração do sinal no pino de leitura em us
  // exibe no monitor serial
  Serial.print("Distancia em metros: ");
  Serial.println(calculaDistancia(tempoEcho), 4);
  Serial.print("Distancia em centimetros: ");
  Serial.println(calculaDistancia(tempoEcho)*100);
  Serial.println("------------------------------------");
  
  delay(2000); // aguarda dois segundos
}

// Funçao para enviar o pulso de trigger
void  gatilhoSensor(){
  // Para fazer o HC-SR04 enviar um pulso ultrassonico, nos temos
  // que enviar para o pino de trigger um sinal de nivel alto
  // com pelo menos 10us de duraçao
  digitalWrite(pinTrig, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTrig, LOW);
}

// Função para calcular a distancia em metros
float calculaDistancia(float tempoMicrossegundos){
  return((tempoMicrossegundos*velocidadeSom)/2); // velocidade do som em m/microssegundo
}

Como o projeto deve funcionar

1. Ao iniciar o programa já começa a medir a distância do sensor até o obstáculo mais próximo.

2. Para visualizar as leituras da distância, abra o monitor serial do Arduino. Obs.: São realizadas leituras a cada 2 segundos.

3. Movendo o obstáculo ou o sensor, a distância entre ambos irá variar também.

4. Para verificar se as distâncias estão corretas, você pode utilizar uma régua para chegar as medidas, lembrando que a precisão da medida com o sensor é de 3mm.

4.1. Alinhe a régua na mesma posição da borda do sensor.

4.2. Coloque um objeto em um ponto da régua e faça a leitura no monitor serial. A distância exibida deverá ser o valor aproximado medido pela régua. Obs.: A leitura do sensor ultrassônico pode ser realizada entre 2cm e 4 metros.

Usando o plotter serial do Arduino (Sketch)

1. Faça o download e abra o arquivo projetoI15a.ino no IDE do Arduino: DOWNLOAD - projetoI15a.ino

2. Se preferir, copie e cole o código abaixo no IDE do Arduino.

/*******************************************************************************
*
*    I15 - Usando sensor ultrassônico sem biblioteca (plotter serial)
*    Autor: Angelo Luis Ferreira
*    28/02/2022
*    http://squids.com.br/arduino
*
*******************************************************************************/
int pinTrig = 8; // pino usado para disparar os pulsos do sensor
int pinEcho = 9; // pino usado para ler a saida do sensor
float tempoEcho = 0;
// Obs. Velocidade do som = 340,29 m/s = 0.00034029 m/us
const float velocidadeSom = 0.00034029; // em metros por microsegundo

void setup(){
  // Configura pinos Trig e Echo
  pinMode(pinTrig, OUTPUT); // configura pino TRIG como saída
  pinMode(pinEcho, INPUT); // configura pino ECHO como entrada

  // Inicializa pino Trig em nível baixo
  digitalWrite(pinTrig, LOW);
  
  // Inicializa a porta serial
  Serial.begin(9600);
}

void loop(){ 
  gatilhoSensor(); // envia pulso trigger (gatilho) para disparar o sensor  
  tempoEcho = pulseIn(pinEcho, HIGH); // mede o tempo de duração do sinal no pino de leitura em us
  // exibe no serial plotter
  Serial.println(calculaDistancia(tempoEcho)*100);
  
  delay(100); // leitura a cada 100us
}

// Funçao para enviar o pulso de trigger
void  gatilhoSensor(){
  // Para fazer o HC-SR04 enviar um pulso ultrassonico, nos temos
  // que enviar para o pino de trigger um sinal de nivel alto
  // com pelo menos 10us de duraçao
  digitalWrite(pinTrig, HIGH);
  delayMicroseconds(10);
  digitalWrite(pinTrig, LOW);
}


// Função para calcular a distancia em metros
float calculaDistancia(float tempoMicrossegundos){
  return((tempoMicrossegundos*velocidadeSom)/2); // velocidade do som em m/microssegundo
}

Como o projeto deve funcionar

1. Ao iniciar o programa já começa a medir a distância do sensor até o obstáculo mais próximo.

2. Para visualizar as leituras da distância, abra o plotter serial do Arduino.

3. São realizadas leituras a cada 100 microssegundos.

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores