Arduino: GP2D12 Distance Measuring Sensor

Mit dem Entfernungssensor GP2D12 von Sharp lässt sich relativ sicher der Abstand zu Hindernissen ermitteln – zumindest im Bereich zwischen 10 und 80 Zentimeter. Der Anschluss des Sensors an den Arduino ist denkbar einfach – die Datenleitung wird mit einem der analogen Eingänge (in diesem Fall Pin 0) verbunden.

Etwas komplizierter ist es, die Messergebnisse in einen lesbaren Wert (z.B. Zentimeter) umzuwandeln. Der Werte des Sensors sind nicht linear, sondern sie müssen interpretiert werden. Ein brauchbarer Ansatz dafür stammt von Javier Valencia und ist an dieser Stelle dokumentiert.

Hier ein kleiner Sketch, mit dem ich die Werte vom Entfernungsmesser in lesbarer Form auf die serielle Schnittstelle ausgebe:

— schnipp —

/*
 * Read values from GP2D12 infrared distance sensor; convert readings to centimeters
 *
 * Version: 0.1 2011.01.05
 * Weblinks:
 *   http://www.hobby-werkstatt-blog.de/
 *   http://www.arduino.cc/playground/Main/ReadGp2d12Range
 */

int pinGp2D12=0;

/*
 * This sensor should be used with a refresh rate of 36ms or greater.
 * Inspired by: Javier Valencia, http://www.arduino.cc/playground/Main/ReadGp2d12Range
 */

float read_gp2d12()
{ int val = analogRead(pinGp2D12);
  if (val < 3) return -1; // invalid value
  float ret = (6787.0 /((float)val - 3.0)) - 4.0;
  if(ret > 80.0)
  return(80.0);
  else
  if(ret < 9.6) return(0.0);
  else return(ret);
} 

void setup()
{ pinMode(pinGp2D12, INPUT); // initialize the digital pin as an output
  Serial.begin(9600);
}

void loop()
{ Serial.println( read_gp2d12());
  delay(1000);
}

— schnapp —

Siehe auch:

Weblinks:


Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>