Hoje falarei um pouco sobre o Maxbotix LV-EZ4 Ultrasonic Range Finder, um sensor de proximidade que funciona por UltraSom, e como utilizá-lo com o Arduino.

Um sensor de proximidade pode ser útil em muitos projetos, como por exemplo para fazer alarmes (os carros usam este tipo de sensor para detectar presença), ou então para fazer um Robô que desvia de obstáculos ou qualquer outra coisa que meça distância. Este tipo de sensor funciona melhor do que o Infra-Vermelho na luz do sol, porém não funciona bem em superfícies irregulares, como tecidos e na grama. Tirando isso é um ótimo sensor.

Analizando o DataSheet, podemos saber alguns dados mais técnicos sobre o sensor, como por exemplo que sua distância limite é de 6->256 polegadas (15.24cm -> 6.45m)

Maxbotix:

  • 42kHz Ultrasonic sensor
  • Opera em 2.5-5.5V
  • Utiliza 2mA de corrente para funcionar
  • 20Hz Frequência de leitura
  • RS232 Saída Serial – 9600bps
  • Saída Analógica – 10mV/polegada
  • PWM – 147uS/polegada

Documentação para Download:

Como o sonar funciona:

Sonar é a sigla em inglês de Sound Navigation And Ranging, ou navegação e mapeamento pelo som. Basicamente, o sensor envia uma onda em alta frequência que ao “bater” em um objeto é refletida. Quando a onda volta para o sensor, ele calcula o tempo, e assim a distância. Mais informações na Wikipedia.

Trabalhando com o Arduino:

Creio que a maneira mais fácil de trabalhar com o sensor é utilizando o conversor Analógico-Digital do microcontrolador presente no Arduino. Para tudo funcionar, você deve apenar alimentar o sensor com +5V,GND e a saída analógica em alguma entrada analógica do Arduino, simples assim.

Agora que o hardware esta configurado, vamos entender um pouco mais dos cálculos necessários para saber a distância dos objetos. O sensor “libera” (Vcc/512) / polegadas . Se alimentarmos o circuito com 5 Volts fornecidos pelo arduino, teremos 10mV/polegada. Como o AD (Analógico-Digital) do microcontrolador é de 10 bits, o que significa que uma variação de 0-5V resultaria numa leitura de 0-1024. Logo, devemos usar o Valor-Da-Leitura/2, e para transformar em centímetros, apenas multiplicamos o valor por 2.4 (1 polegada = 2.4 centímetros).

Imagens:

Video:

Aqui vai o código-fonte do programa
Você pode baixar AQUI.

/*

@ Code for interfacing arduino with a Maxbotix LV-EZ4 Ultrasonic Range Finder
@ Code by Daniel Spillere Andrade
@ www.danielandrade.net -=- daniel@danielandrade.net

*/

int blinkLed=13; // Where the led will blink
int sensorPin=0; // Analog Pin In
int sum=0; // Variable to calculate SUM
int avgrange=50; // Quantity of values to average
int sensorValue; // Value for te average
int i,media,d; // Variables
float cm,inch; // Converted to cm

void setup()
{
Serial.begin(9600); // To check what is being read on the Serial Port
}

void loop() {

d=analogRead(sensorPin); // Read the analog value
digitalWrite(blinkLed,HIGH); // Turn on LED
delay(d); // Delay changes with the analogread
digitalWrite(13,LOW); // Turn off LED
delay(d); // Another delay

cm = (d / 2) * 2.4; // Convert the value to centimeters
inch = d/2; // Value in inches

Serial.println(cm); //Print average of all measured values

// This is the code if you want to make an average of the read values

/*

for(i = 0; i < avgrange ; i++) {
sum+=analogRead(sensorPin);
delay(10);
}

media = sum/avgrange;
Serial.println(media); //Print average of all measured values

sum=0;
media=0;

*/

}

Obrigado por ler.
;)