IR Entfernungssensor Sharp GP2D12

Veröffentlicht von

Schon an Roboter Donald hatte ich einen Entfernungssensor Sharp GP2D12 verbaut. Ein Infrarotsensor der in einem Bereich von 10-80cm eine nicht lineare Spannung liefert. Diese kann über den in den AVRs verbauten AD Wandler recht einfach eingelesen werden.

So bekommt man, je nach Entfernung, einen digitalen Wert zwischen 0 und 1023. Bei Donald habe ich mit diesen Wert gearbeitet, schöner wäre natürlich die Umrechnung in cm.

Da die Werte nicht linear sind ist dazu noch ein wenig Mathematik nötig. Auch hier hilft natürlich wieder das Web, auf der Seite acroname.com oder auch kreatives-chaos.com ist es sehr gut erklärt. Kurz gesagt und für meinen Sensor:

R = (6787 / (V – 3)) – 3

 

Hier noch das passende Programm für einen Arduino. Einlesen des Signals über den Analogen Eingang 3 und Ausgabe auf dem LCD bzw via Bluetooth/serielle Schnittstelle auf dem PC.

// SharpRangeTest
#include <LCD4Bit_mod.h>
LCD4Bit_mod lcd = LCD4Bit_mod(2);
int val;
int distance;
{
Serial.begin(115200);
lcd.init();
lcd.clear();
lcd.printIn("sharp Range Test");
}
void loop()
{
val = analogRead(3);
distance = (6787 / (val - 3)) - 3;
Serial.print("Range: ");
Serial.print(distance, DEC);
Serial.println(" cm  ");
lcd.cursorTo(2,0);
char buf[6];
itoa (distance,buf,10);
lcd.printIn("Range: ");
lcd.printIn(buf);
lcd.printIn(" cm ");
delay(1000);
}

 

 

 

 

 

 

 

 

 

Kommentar verfassen