como usar um Sensor de distância ultrassônico HC-SR04 com Arduino
o HC-SR04 é um sensor de distância ultrassônico barato, fácil de usar, com uma gama de 2 a 400 cm. É comumente usado em obstáculos evitando robôs e projetos de automação. Neste tutorial, você vai aprender como o sensor funciona e como usá-lo com Arduino.
incluí 5 exemplos com um diagrama de cablagem e código para que possa começar a experimentar com o seu sensor., Vamos primeiro olhar para um exemplo que não usa uma biblioteca Arduino. Em seguida, vou mostrar como você pode usar a Biblioteca NewPing para criar um código mais compacto.os sensores de distância ultrassônica barata/proximidade são ótimos, mas em alguns projetos, você pode precisar de um sensor à prova de água como o JSN-SR04T ou um sensor de IR que não é influenciado por mudanças de temperatura.,on
AliExpress
Software
Arduino IDE |
Makerguides.,com é um participante no programa Amazon Services LLC Associates, um programa de publicidade de afiliados projetado para fornecer um meio para os sites para ganhar taxas de publicidade através de publicidade e vinculação a produtos em Amazon.com como funciona um sensor de distância ultrassónico?os sensores ultra-sónicos funcionam emitindo ondas sonoras com uma frequência demasiado elevada para um ser humano ouvir. Estas ondas sonoras viajam pelo ar com a velocidade do som, aproximadamente 343 m / s., Se houver um objeto na frente do sensor, as ondas sonoras se refletem de volta e o receptor do sensor ultrassônico as detecta. Medindo quanto tempo passou entre o envio e recepção das ondas sonoras, a distância entre o sensor e o objeto pode ser calculada.
Em 20°C, a velocidade do som é de aproximadamente 343 m/s ou 0.034 cm/s., Digamos que o tempo entre enviar e receber as ondas sonoras é de 2000 microssegundos. Se você multiplicar a velocidade do som pelo tempo em que as ondas de som viajaram, você obtém a distância que as ondas de som viajaram.
distância = velocidade x tempo
mas esse não é o resultado que estamos procurando. A distância entre o sensor e o objeto é na verdade apenas metade dessa distância porque as ondas sonoras viajaram do sensor para o objeto e de volta do objeto para o sensor. Então você precisa dividir o resultado por dois.,
Distância (cm) = Velocidade do som (cm/s) x Tempo (µs) / 2
E, então, para o exemplo, este torna-se:
Distância (cm) = 0.0343 (cm/s) × 2000 (µs) / 2 = 34.3 cm
dependência da Temperatura da velocidade do som
A velocidade do som, na verdade, depende fortemente da temperatura e em muito menor grau da umidade relativa do ar. Wikipedia states that the speed of sound increases with roughly 0.6 m/s per degree Celsius., Para a maioria dos casos, a 20°C, você pode apenas usar 343 m/s, mas se você deseja obter leituras mais precisas, pode-se calcular a velocidade do som com a fórmula a seguir:
V (m/s) = 331.3 + (0,606 a × T)
V = Velocidade do som (m/s)
T = Temperatura do Ar (°C)
Esta fórmula não inclui a umidade desde o seu efeito sobre a velocidade do som é muito pequeno.
abaixo você pode encontrar um tutorial sobre como usar um sensor de temperatura e umidade DHT11 para calibrar a velocidade do som e obter uma leitura de distância mais precisa com o HC-SR04.,
como funciona o HC-SR04
na frente do sensor HC-SR04, você pode encontrar dois cilindros de prata (transdutores ultrassônicos), um é o transmissor das ondas sonoras e o outro é o receptor. Para deixar o sensor gerar uma explosão sônica, você precisa definir o pino de trigonometria alta para pelo menos 10 µs. O sensor então cria uma explosão de 8 ciclos de ultrassom a 40 kHz.esta explosão sônica viaja à velocidade do som e volta e é recebida pelo receptor do sensor. O PIN de eco, em seguida, produz o tempo em que as ondas sonoras viajaram em microssegundos.,
pode usar a função pulseIn()
no código Arduino para ler o comprimento do pulso a partir do Eco pin. Depois disso, você pode usar a fórmula mencionada acima para calcular a distância entre o sensor e o objeto.,ncy
Para mais informações você pode conferir a ficha técnica abaixo:
Fiação – Ligação do HC-SR04 para o Arduino UNO
O diagrama abaixo mostra como ligar o HC-SR04 sensor para o Arduino.,
Os exemplos de código abaixo utilizar o pino digital 2 e 3 para o gatilho e eco pino, respectivamente, mas é claro que você pode alterar para qualquer pino digital que você deseja.,C-SR04 Connections
HC-SR04 | Arduino |
---|---|
VCC | 5 V |
Trig | Pin 2 |
Echo | Pin 3 |
GND | GND |
Example code for HC-SR04 with Arduino
Now that you have wired up the sensor it is time to connect the Arduino to the computer and upload some code., Você pode enviar o seguinte código de exemplo para o seu Arduino usando o Arduino IDE. A seguir, vou explicar-lhe como funciona o código.
como o código funciona
Em primeiro lugar, o gatilho e o eco pin são definidos. I call them trigPin
and EchoPin
. O gatilho é conectado ao digital pin 2 e o eco pin ao digital pin 3 no Arduino.
a declaração #define
é usada para dar um nome a um valor constante., O compilador irá substituir todas as referências a esta constante com o valor definido quando o programa é compilado. Assim, em todos os lugares que você mencionar trigPin
, o compilador irá substituí-lo pelo valor 2 quando o programa for compilado.
// Define Trig and Echo pin:#define trigPin 2#define echoPin 3
Next I defined two variables: duration
and distance
. A duração armazena o tempo entre o envio e a recepção das ondas sonoras. A variável “distância” é utilizada para armazenar a distância calculada.,
// Define variables:long duration;int distance;
In The setup()
, you start by setting the trigPin as an output and the echoPin as an input. Em seguida, inicializa a comunicação em série a uma taxa de baud de 9600. Mais tarde, irá mostrar a distância medida no monitor serial, que pode ser acedida com Ctrl+Shift+M ou ferramentas > Monitor Serial. Certifique-se de que a taxa de baud também é de 9600 no monitor serial.
no loop()
, acciona o sensor ajustando o trinco alto por 10 µs., Note que para obter um sinal limpo, você começa por limpar o trigPin, ajustando-o para baixo por 5 microssegundos.
em seguida, você precisa ler o comprimento do pulso enviado pela echoPin. I use the function pulseIn()
for this. Esta função espera que o pino Vá de baixo para alto, começa a cronometrar, em seguida, espera que o pino para ir baixo e pára o timing.
Depois disso, você pode calcular a distância usando a fórmula mencionada na introdução deste tutorial.finalmente, a distância calculada é impressa no monitor serial.,
exemplo código HC-SR04 com Arduino e NewPing library
a NewPing library escrita por Tim Eckel pode ser usada com muitos sensores de distância ultrassônicos. A versão mais recente desta biblioteca pode ser obtida aqui em bitbucket.org. você pode notar que o código abaixo, que usa a Biblioteca NewPing, é muito mais curto do que o código que usamos antes. Além disso, a NewPing library inclui algumas outras características agradáveis. Ele permite que você defina uma distância máxima para ler, ele não vai ficar por um segundo completo quando nenhum eco é recebido e tem um filtro integrado mediana.,
Você pode instalar a biblioteca indo para Sketch >Include Library> Add .Biblioteca ZIP no Arduino IDE.
a biblioteca inclui alguns exemplos que pode usar, mas terá de os Modificar para corresponder à sua configuração do ‘hardware’. Eu incluí um código de exemplo modificado abaixo que pode ser usado com a mesma configuração de fiação como antes.
Pode também usar distance = sonar.ping_cm()
ou distance = sonar.ping_in()
que devolve a distância medida em centímetros inteiros ou polegadas., Com esta função você não precisa fazer uma medição de duração e calcular a distância.a Biblioteca NewPing também facilita a interface com os sensores ultrassónicos, utilizando apenas 1 pin. Isto pode ser útil se você tiver muito poucos Pinos I/O disponíveis ou se você quiser usar um sensor ultrassônico de 3 pinos como o Ping paralaxe.
para criar uma configuração de 3 pinos (GND, 5V e SIG) você tem que conectar tanto o pino de gatilho quanto o pino de eco ao mesmo pin digital no Arduino., No código, a única coisa que você tem que mudar é a linha 6-7 e definir o mesmo pin para o trigPin e o echoPin. Por exemplo, pin digital 2.
//Define Trig and Echo pin#define trigPin 2#define echoPin 2
How to use ping_median() digital filter
a principal coisa que eu gosto na Biblioteca NewPing é que ela tem um filtro mediano embutido. Este filtro pode melhorar muito a precisão das suas leituras HC-SR04. A função ping_median()
faz muitas medições de duração em uma linha, joga fora as leituras fora do intervalo e, em seguida, médias as restantes., Por padrão, ele vai fazer 5 leituras, mas você pode especificar quantos ele deve tomar. Substituir a linha 19 por linhas inferiores.
int iterations = 5;duration = sonar.ping_median(iterations);
código de exemplo HC-SR04 com I2C LCD e Arduino
para mostrar a distância medida num LCD de 2004 ou 1602 I2C, tudo o que tem a fazer é fazer as seguintes ligações e carregar o código abaixo. O sensor HC-SR04 Está ligado da mesma forma que antes.
I2C LCD Connections
I2C LCD | Arduino |
---|---|
GND | GND |
VCC | 5 V |
SDA | A4 |
SCL | A5 |
If you are not using an Arduino Uno, the SDA and SCL pins can be at a different location., Um Arduino UNO com o layout R3 (1.0 pinout), também tem os cabeçalhos SDA (linha de dados) e SCL (linha de relógio) pin perto do PIN AREF. Confira a tabela abaixo para mais detalhes.,f43445″>
The code uses the LiquidCrystal_I2C library, which you can download here on GitHub., Certifique-se de que você tem esta biblioteca exatamente instalada! Também inclui o fio.biblioteca h, que lhe permite comunicar com dispositivos I2C. Esta biblioteca deve ser pré-instalada com o Arduino IDE.
Se quiser aprender mais sobre como controlar um LCD I2C com o Arduino, pode verificar aqui o tutorial completo.
- Como controlar um caractere I2C LCD com Arduino
Note que eu usei um visor de 20 x 4 LCD. Se você tem um tamanho diferente LCD (16 x 2 também é comum) você precisa mudar a linha 20 para LiquidCrystal_I2C lcd(0x27,16,2);
., Se o seu LCD não tiver o endereço padrão I2C, 0x27, confira o tutorial completo I2C onde eu explico como você pode descobrir qual é o endereço.
Exemplo de código HC-SR04 com sensor de temperatura DHT11 e Arduino
Como mencionado anteriormente, a velocidade do som depende fortemente da temperatura do ar. Se você quiser medir longas distâncias (3-4 m) pode ser uma boa idéia adicionar um DHT11 ou DHT22 temperatura e umidade sensor à sua configuração. Isto permitir-lhe-á calibrar a velocidade do som em tempo real e, assim, aumentar a precisão das suas medições.,
adicionar um sensor DHT11 é realmente simples. O diagrama de cablagem abaixo mostra-lhe quais as ligações que precisa de fazer. Repare que estou a usar um DHT11 com uma prancha de fuga, por isso só preciso de ligar 3 pinos. Certifique-se de verificar o rótulo do sensor, a ordem dos pinos pode ser diferente, dependendo do fabricante. O sensor HC-SR04 Está ligado da mesma forma que antes.
DHT11 Connections
DHT11 | Arduino |
---|---|
VCC (+) | 5 V |
Signal (s) | Pin 4 |
GND (-) | GND |
The code below uses the Adafruit DHT Humidity & Temperature Sensor library which you can download here on GitHub., Esta biblioteca só funciona se você também tiver a biblioteca Adafruit_Sensor instalada, que também está disponível no GitHub. Você também pode baixar as duas bibliotecas clicando nos botões abaixo:
Você pode clicar no botão no canto superior direito do campo de código para copiar o código.
Exemplo de código HC-SR04 com DHT11 e I2C LCD
o código abaixo pode ser usado para combinar todos os 3 exemplos acima., Ele exibe tanto a temperatura, a velocidade do som e a distância medida no LCD.
HC-SR04 Dimensões
abaixo pode encontrar as dimensões do sensor ultra-sónico HC-SR04. Reparei que existem pequenas diferenças entre os fabricantes, por isso recomendo uma verificação dupla com o seu próprio sensor.
HC-SR04 CAD
eu ter criado básica desenhos CAD do HC-SR04 sensor ultra-sônico que você pode fazer o download abaixo.,conclusão neste artigo, mostrei-lhe como funciona o sensor de distância ultrassónico HC-SR04 e como pode usá-lo com Arduino. Espero que tenha achado útil e informativo. Se você fez, por favor, compartilhá-lo com um amigo que também gosta de Eletrônica!
projecto pessoal: há alguns meses construí uma instalação interactiva na parede com alguns amigos. Usámos cerca de 30 sensores de distância ultrassónicos para detectar pessoas a andar em frente à parede. A parede incluiu Luzes e efeitos sonoros que mudaram dependendo de quão longe as pessoas estavam de pé.,
eu gostaria de saber quais os projetos que você planeja a construção (ou já construído) com o HC-SR04 sensor de distância. Se você tiver alguma dúvida, sugestão ou se você acha que as coisas estão faltando neste tutorial, por favor deixe um comentário abaixo.