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:
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:
- Arduino R3 Uno
- Dccele Dccduino (clone do Arduino Uno)
- Cabo macho-macho 10cm
- Protoboard 400 furos
- Protoboard 830 furos
- Sensor de ultrasom HC-SR04
Obrigado a todos e até o próximo post!