ich hab an mein Arduino Mega einen Sharp-GP2D12-Infrarotsensor angeschlossen und will die Entfernung (ca.30cm) zu einem Objekt ermitteln.
Den gemessene Wert hab ich dann laut Arduino-Playgound umgerechnet. Arduino Playground - ReadGp2d12Range
Weiterhin hab ich den Wert versucht in Volt auszugeben.
float volt = (read_gp2d12_range(A2)*5.0)/1023;
Laut Datenblatt reicht die Spannung von 0,3V-3.0V je nach Entfernung des Objektes.
Nach Ausgabe auf dem seriellen Monitor:
Wert: 19.81
Volt: 0.10
Range: 18
Problem. Weder Volt noch Range stimmen.
Woran kann das liegen.
Und die Werte des Sensors schwanken sehr stark. Steuerleitung ist mit einem Pull-Dowwiderstand versehen.
Hier der wichtige Teil aus dem Code.
Hier ein Bild vom Versuchsaufbau und ein Video für den Überblick.
while(1){
float volt = (read_gp2d12_range(A2)*5.0)/1023;
int range = read_gp2d12_range(A2);
lcd.clear();
lcd.print(" N E S W");
lcd.setCursor(0,1);
lcd.print(volt);
lcd.setCursor(8,1);
lcd.print(range);
Serial.print("Wert: ");
Serial.println(read_gp2d12_range(A2));
Serial.print("Volt: ");
Serial.println(volt);
Serial.print("Range: ");
Serial.println(range);
Serial.println(" ");
delay(500);
}
Die Werte passen doch zusammen, nach deinem Sketch ?
aus dem Playground sehe ich, dass
return (6787.0 /((float)tmp - 3.0)) - 4.0;
gerechnet wird.
Wenn da 18 .. 20 rauskommt, war der Rohwert beim analogRead wohl ca 285 .. 300, was etwa 1.5V entspricht.
Du darfst keine LED direkt ohne Vorwiderstand in die Pins des Arduino stecken. Du reskierst, daß der Arduino, und/oder die LED kaputtgeht. Außerdem geht die Versorgungsspannung in die knie und die analoge Messung wird falsch sein weil die 5V nicht mehr 5V sein werden.
Dein weiterer Fehler ist daß "read_gp2d12_range(A2)" die Entfernung in cm zurückgiebt und nicht die ADC des A/D Converters.
read_gp2d12_range
Function that reads a value from GP2D12 infrared distance sensor and returns a value in centimeters.
Darum ergibt die Umrechnung float volt = (read_gp2d12_range(A2)*5.0)/1023; nichts sinnvolles.
Auch der Pulldown-Widerstand am Ausgang des GP2D12 ist falsch.
Erstmal vielen Dank für die schnelle Antwort.
Das die Funktion "cm" zurückgibt hab ich irgendwie gekonnt überlesen.
Dann ist natürlich klar warum da keine vernünftige Spannung rauskommt.
Die Umrechnung hab ich entfernt.
Die LED an PIN 13 auch (hab irgendwo gelesen das Mega hat an PIN 13 ein Vorwiderstand hat, aber ich hab im Schaltplan nachgeguckt und da ist keiner, also schnell weg damit)
Den Pull-Down-Widerstand hab ich auch wieder entfernt. Den hatte ich eingebaut weil der Sensor wenn kein Objekt erkannt wird, sehr stark in der Ausgabe schwangt.
Vielleicht hat da noch jemand ein Tipp wie man das in Griff bekommt.
So jetzt hab ich die Range in "cm" der Abstand stimmt trotzdem nicht.
Zwar sinkt der Abstand kontinuierlich aber die absoluten Werte des Maßbandes und des Sensors stimmen nicht überein.
Also zunächst einmal würde ich gern die Schwangungen abstellen wenn kein Objekt vor dem Sensor ist.
Oder muss ich den Leerlauf mit ner Schleife abfangen, da mir ja der Messbereich des Sensors bekannt ist (10-80cm).
Die Werte sehen dann ungefair so aus:
und als nächste das Problem des korrekten Abstandes.
Ein Objekt ist 50 cm vom Sensor entfernt.
Die Werte des Sensors sind relativ stabil nur stimmt der Abstand nicht.
Bei range müsste ja demzufolge irgendwas um die 50 stehen.