Sonar Arduino Tutorial

|




Na posse de um sonar e de um arduino teve início o estudo sobre sonar.

 Quem ja viu um morcego ou ouviu falar de como ele localiza no meio sabe que um som emitodo pelo animal retorna e seu cérebro cria uma imagem das coisas: árvore, frutas, mariposa.


Como o som tem uma velocidade constante(condições ideais) 340,29 m / s é possivel saber a distância dos objetos calculando o tempo que o som gasta para ir e retornar. Como
  1.                   d(distância) = V(velocidade)/t(tempo)
Temos ainda que dividir (d) por 2 obtendo a distância do objeto até o sonar.
 Bem... na net ja é possível encontrar um sketch(código) pronto, so fazer o uploud no arduino, depois:
  • Ligar o GND  do sonar no GND do arduino, 
  • Fazer o mesmo com o 5V, 
  • Ligar o pino 7(do programa em questão) no OUT do sonar. 
O modelo de sonar que usei tem um outro pino: IN, este é um ON/OFF do sonar, mas não é preciso usa-lo, basta fingir que ele nao existe e tudo vai dar certo, espero!






Código:


/* Ping))) Sensor
   
    This sketch reads a PING))) ultrasonic rangefinder and returns the
    distance to the closest object in range. To do this, it sends a pulse
    to the sensor to initiate a reading, then listens for a pulse 
    to return.  The length of the returning pulse is proportional to 
    the distance of the object from the sensor.
      
    The circuit:
  * +V connection of the PING))) attached to +5V
  * GND connection of the PING))) attached to ground
  * SIG connection of the PING))) attached to digital pin 7
   http://www.arduino.cc/en/Tutorial/Ping
    
    created 3 Nov 2008
    by David A. Mellis
    modified 30 Jun 2009
    by Tom Igoe
 */
// this constant won't change.  It's the pin number
 // of the sensor's output:
 const int pingPin = 7;
void setup() {
   // initialize serial communication:
   Serial.begin(9600);
 }
void loop()
 {
   // establish variables for duration of the ping, 
   // and the distance result in inches and centimeters:
   long duration, inches, cm;
// The PING))) is triggered by a HIGH pulse of 2 or more microseconds.
   // Give a short LOW pulse beforehand to ensure a clean HIGH pulse:
   pinMode(pingPin, OUTPUT);
   digitalWrite(pingPin, LOW);
   delayMicroseconds(2);
   digitalWrite(pingPin, HIGH);
   delayMicroseconds(5);
   digitalWrite(pingPin, LOW);
// The same pin is used to read the signal from the PING))): a HIGH
   // pulse whose duration is the time (in microseconds) from the sending
   // of the ping to the reception of its echo off of an object.
   pinMode(pingPin, INPUT);
   duration = pulseIn(pingPin, HIGH);
// convert the time into a distance
   inches = microsecondsToInches(duration);
   cm = microsecondsToCentimeters(duration);
Serial.print(inches);
   Serial.print("in, ");
   Serial.print(cm);
   Serial.print("cm");
   Serial.println();
delay(100);
 }
long microsecondsToInches(long microseconds)
 {
   // According to Parallax's datasheet for the PING))), there are
   // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per
   // second).  This gives the distance travelled by the ping, outbound
   // and return, so we divide by 2 to get the distance of the obstacle.
   // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf
   return microseconds / 74 / 2;
 }
long microsecondsToCentimeters(long microseconds)
 {
   // The speed of sound is 340 m/s or 29 microseconds per centimeter.
   // The ping travels out and back, so to find the distance of the
   // object we take half of the distance travelled.
   return microseconds / 29 / 2;
}


Após upar clicar no icone Serialmonitor e os dados serão mostrados na tela preta:





Conteudo relacinado para estudo-download:

Entendendo  a programação:

Fonte de imagens e codigo:

http://www.faunacps.cnpm.embrapa.br/mamifero/sonar.html

http://arduino.cc/en/Tutorial/Ping?from=Tutorial.UltrasoundSensor

http://www.vabsco.com/bardhp/proj/octa/main.html

      2 comentários:

      Arcanjo disse...

      Olá, primeiramente, parabéns pelo post. Estou procurando um sensor para utilizar com o arduíno duemilanove, pretendo comprar no brasil, conhece algum site que tenha preço acessível? (Procuro por um sensor que tenha um range de 5~15cm)

      Obrigado.

      Gamesh_ disse...

      O brasilrobotics também vende produtos. Entre em contato pelo meu msn: gamesh_@hotmail.com


      A minha pagina de produtos: http://www.quebarato.com.br/gamesh/anuncios

       

      ©2010 Brasil Robotics | by Gamesh_