tecnologia, eletrônica e aleatoriedades
Trabalhando com Sonar + Arduino
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.
| Imprimir artigo | Este artigo foi escrito por DanielAndrade em 26 de novembro de 2009 às 13:16, e está arquivado em arduino, eletrônica, microcontrolador, projetos. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |
há 5 meses atrás
Muito boa, essa explicação… Gostei. Em princípio vou comprar um sonar para fazer umas experiências.
Já agora, tem um link na sua página para o meu antigo blog (ricardodias.wordpress.com)
Entretanto mudei de domínio para:
http://ricardo-dias.com/
Agradecia que actualizasse a sua lista.
há 3 meses atrás
Cara sera que este sensor pode medir um caixa da dagua para saber se ela esta cheia ou vazia?
Ate mais Abracos