Go Down

Topic: Sharp Sensoren bauen mist! (Read 857 times) previous topic - next topic

MindCode

Jul 13, 2012, 07:27 pm Last Edit: Jul 13, 2012, 07:30 pm by MindCode Reason: 1
Hallo,
an meinem Roboter habe ich jetzt zwei GP2Y0A21YK0F Sharp Sensoren.
Sie sind nebeneinander im Abstand von 7 cm Senkrecht (Beide Linsen übereinander)
vorne anbgeracht.

Wieso bekomme ich manchmal absolute Fehlmessungen?
Die Sensoren melden machmal oder manchmal sogar
ziemlich oft (fast permanent) einen geringen Abstand obwohl sich nichts
in der Nähe befindet. Ich bin langsam völlig überfragt...


Hier der Code

Code: [Select]

if (cntMode == 2)
  {
    optSens1 = analogRead(2);

    if (optSens1 > 400)
    {
      tone(signal,1000,50);
      block = 1;
      blocked(1);
    }

    optSens2 = analogRead(7);

    if (optSens2 > 400)
    {
      tone(signal,1000,50);
      block = 1;
      blocked(2);
    }

    if (block == 0)
      forward(0, 40);

  }

Megaionstorm

Werden die Sensoren über einen eigenen Spannungsregler mit Strom versorgt, z.B. L7805, oder über den Arduino ?
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

MindCode

#2
Jul 13, 2012, 07:54 pm Last Edit: Jul 13, 2012, 08:16 pm by MindCode Reason: 1
Über Arduino, beide an +5v

EDIT: Auch ein einzelner Sharp, macht manchmal fehlmessungen,
total willkürlich!

Megaionstorm

Versorge mal beide Sensoren über eine separate 5V Stromversorgung, überprüfe dann ob sich was geändert hat !

Welchen Arduino benutzt Du ?
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

MindCode

Einen Arduino Mega 2560.
Werde das mit der externen Spannungsversorgung mal eben probieren!

Megaionstorm

Ich benutze für meine Sensoren immer diese Routine:
Code: [Select]
int IRpin = 1; // IR-Signalleitung des GP2Y0A21YK0F an ANALOG 1

void setup() {
  pinMode (IRpin,INPUT);                         
  Serial.begin(9600);
  delay(100); // Warten auf Infrarotsensor bis bereit !
}

void loop() {
  float x = analogRead(IRpin);
  float distance = 5100/(x-30);
  if (distance<=80)
  {
  Serial.print(distance);
  Serial.print("cm");
  }
  else Serial.print("Ausserhalb der Reichweite !");
  Serial.println();
  delay(250); // Messungen dürfen nur im Abstand von 50 ms erfolgen !
}
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

MindCode

Kann es sein dass die Shaprs GENAU 5v brauchen, damit sie überhaupt funktionieren?

Allerdings ist mir jetzt etwas aufgefallen da ich gerade per PC die Werte mitlogge:

- Wenn etwas Relativ nah ist, c.a bis zu 1 Meter, bleiben die Werte im berreich von 100-200
- Wenn aber etwas viel weiter weg ist... ab 2 Meter dann steigen die Werte plötzlich
auf über 300 manchmal in gewissen Poisitonen sogar dauerhaft über 400!

Wie kann das alles sein?

Megaionstorm

Bei mehr als 80cm liefert der Sensor keine vernüftigen Werte, deshalb:
Code: [Select]
[  if (distance<=80)
  {
  Serial.print(distance);
  Serial.print("cm");
  }
  else Serial.print("Ausserhalb der Reichweite !");
/code]
Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

MindCode

#8
Jul 13, 2012, 09:15 pm Last Edit: Jul 13, 2012, 11:01 pm by MindCode Reason: 1
Oh man -.-
Wer viel misst, misst viel mist!
Danke!

MindCode

#9
Jul 14, 2012, 01:51 am Last Edit: Jul 14, 2012, 02:34 am by MindCode Reason: 1
So funktioniert das!
Ausserdem hätte man einfach auch ins Datenblatt sehen müssen.
Dort wird ein 10uF Kondensator empfohlen. Das hat
gleich die Fehlmessungen drastisch Reduziert!

http://www.youtube.com/watch?v=xLuikqEcASc

Man beachte am Schluss das Rad :D
Die beste Programmierung bringt nichts,
wenn die Mechanik versagt, haha!

Megaionstorm

Mein Arduino Projekte Blog:
http://ardu-megatank.blogspot.de/

Go Up