Medindo distâncias com o sensor de ultrasom

Olá a todos,

nesse post demonstraremos como utilizamos  sensor de ultrasom HC-SR04 para medir distâncias. Esse sensor calcula o tempo que as ondas de ultrasom que ele mesmo emite demoram para retornar. O retorno dessas ondas é chamado de eco. Como a velocidade da onda de ultrasom é conhecida, o sensor mutiplica o tempo que o eco levou para retornar por essa velocidade para calcular a distância.

O sensor deve ser alimentado com 5V, portanto podemos utilizar o pino de 5V do Arduino. A distância de operação do sensor vai de menos de um 1cm para aproximadamente 4 metros.

Iniciaremos montando o circuito. Primeiro ligue o pino Vcc do sensor no 5V do Arduino ou de outra placa que esteja utilizando. Em seguida conecte o pino Gnd ao terra da placa. Por fim conecte os pinos Echo e Trig a dois pinos digitais do Arduino. A imagem abaixo mostra o circuito montado:

Circuito com o sensro de ultrasom
Circuito com o sensro de ultrasom

O próximo passo é escrevermos o código. O primeiro passo é declararmos as variáveis que serão utilizadas no código: uma para o pino do Arduino onde conectamos o pino trig do sensor, outra para o pino da placa onde foi conectado o pino echo do sensor e outras três variáveis para a o tempo do eco, distância em cm e em polegadas:

int trigPin = 11;
int echoPin = 12;
long duration, cm, inches;

O próximo passo é configurarmos os pinos da placa como saída e a porta serial, onde escrevemos a distância medida pelo sensor:

void setup() {

Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}

O passo final é utilizarmos o sensor na função loop. O uso do sensor é bem simples: primeiro devemos mandar um pulso alto de 10 microsegundos no pino trig o sensor e em seguida esperar por outros 10 microsegundos. Após essa espera o sensor deve ter calculado a distância, que será medida no pino da placa que está conectada ao pino Echo do sensor. Obtenha esse valor com a função pulseIn.

digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

O passo final é calcular a distância em cm ou polegadas. Para obter a distância em cm divida o valor obtido por 2 e depois por 29.1. Já para obter o valor em polegadas divida o valor original por 2 e depois por 74.

duration = pulseIn(echoPin, HIGH);

cm = (duration/2) / 29.1;
inches = (duration/2) / 74;

Após esse cálculo o valor poderá ser utilizado, no caso desse post apenas enviamos para a porta serial, mas você poderá utilizar esse valor para evitar batidas com outros objetos, acionar ou desligar algum dispositov ou tomar alguma outra decisão decisão.

void loop() {

digitalWrite(trigPin, LOW);
delayMicroseconds(5);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

cm = (duration/2) / 29.1;
inches = (duration/2) / 74;

Serial.print(inches);
Serial.println(” in “);
Serial.print(cm);
Serial.println(” cm “);

delay(250);
}

Onde encontrar:

Obrigado a todos e até o próximo post!

Deixe um comentário

O seu endereço de e-mail não será publicado.