Wie ist die Ansteuerung vom Sender, dauersignal oder pwm?
Der Sender ist an einem Normalen Digitalpin angeschlossen (Pin 4) und wird mit folgendem Code angesteuert:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/******************************************************************************
* This function can be used with a panasonic pna4602m ir sensor
* it returns a zero if something is detected by the sensor, and a 1 otherwise
* The function bit bangs a 38.5khZ waveform to an IR led connected to the
* triggerPin for 1 millisecond, and then reads the IR sensor pin to see if
* the reflected IR has been detected
******************************************************************************/
int irRead(int readPin, int triggerPin)
{
int halfPeriod = 13; //one period at 38.5khZ is aproximately 26 microseconds
int cycles = 38; //26 microseconds * 38 is more or less 1 millisecond
int i;
for (i=0; i <=cycles; i++)
{
digitalWrite(triggerPin, HIGH);
delayMicroseconds(halfPeriod);
digitalWrite(triggerPin, LOW);
delayMicroseconds(halfPeriod - 1); // - 1 to make up for digitaWrite overhead
}
return digitalRead(readPin);
}
|
Wie weit ist der Sender und der Empfänger auseinander?
Ca. 4-5cm. (Später wahrscheinlich max. 10cm).
Wie groß ist das Objekt was zwischen beiden kommt?
Ca. 16cm².
Eine Art Abtandsmessung mit IR kommt mir etwas ungewöhnlich vor. Abstandsmessung werden normalerweise über Schall Sender/Empfänger realisiert.
Das ganze soll auch nur eine Lichtschranke werden (ich sehe erst jetzt gerade, dass ich weiter oben (aus versehen) Abstandssensor gesagt habe).
Du hast keinen Zugang zu einem Oszi oder?
Leider nein.
könntest du testweise einfach eine LED(+Vorwiderstand) an den Ausgang deines IR Empfänger hängen um zu prüfen, ob die Verzögerung schon dort auftritt.
Wenn ich die LED einfach zwischen Sensor und Eingangspin hänge brennt sie unabhängig von der Polung gar nicht. Wenn ich den Eingangspin durch einen Minuspol ersetze brennt sie immer (unabhängig davon ob sich ein Objekt zwischen Sensor und IR-LED befindet oder nicht).
Ein Spannungsteiler wird dir bei Digitalsignalen übrigens wenig helfen (verbrät nur zusätzlich Strom).
Mein Physiklehrer erwähnte vor den Ferien den Spannungsteiler als Mittel um diese Verzögerung zu vermeiden. Er erklärte (ich bin mir nicht mehr ganz sicher wie er sich ausgedrückt hatte), dass wenn ein Signal am Eingangspin anläge und dann wieder verschwinde immer noch restliche Elektronen am Pin vorhanden sind. Durch das hinzufügen eines Spannungsteiler könnten diese Elektronen abgeleitet werden (-> keine Verzögerung mehr).
Ich tippe darauf, dass das Auslesen des Serialports dir die Verzögerung verursacht.
Wie ich durch Beobachtung sehen konnte tritt die Verzögerung nur auf wenn ich ein Objekt wieder wegnehme. Daher schließe ich eine Allgemeine Verzögerung aus (Außerdem würde diese doch dann in manchen Fällen keine 5 Sekunden betragen).