PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SHARP GP2D150A Abstandsmesser bleibt immer auf High - HILFE!



r2d2matze
15.10.2005, 19:24
Ich möchte einen Sharp GP2D150A Sensor auf einem durch einen Atmega8 gesteuerten Fahrzeug benutzen, um das Fahrzeug nicht gegen eine Wand fahren zu lassen.
Den Ausgang des Sensors habe ich an einen Port am Atmega8 angeschlossen, die Versorgungsspannung des Sensor ist getrennt von der des Atmega8.
Wenn ich sich nun dem Sensor etwas auf 15cm nähert, so schaltet dieser wie geplant auf High. Jedoch bleibt er dann dort und schaltet nicht mehr zurück auf Low!
Wie kann das sein? Was mache ich falsch?
Danke im Voraus für eine Antwort.

Fritzli
15.10.2005, 21:30
Hallo


edoch bleibt er dann dort und schaltet nicht mehr zurück auf Low!
Was heisst das genau?

Laut Datenblatt (Fig. 3) ist der Ausgang High, solange etwas näher als ca. 15cm (+/- 2.5cm) ist.

Gruess
Fritzli

r2d2matze
16.10.2005, 08:33
Ja, natürlich. Aber wenn nichts mehr in der Nähe von 15cm ist, sollte er doch wieder zurück auf Low gehen oder nicht? Und das tut er aus irgendeinem Grund eben nicht.
Wie kann ich das ändern?

Fritzli
16.10.2005, 10:34
Hallo

Was passiert z.B. wenn Du, während der Ausgang hängt, die LED abdeckts (Finger sollte genügen, Metall wäre am besten).

Aus welchem Material ist das "Ziel"?

Was hängt am Ausgang des Sensors?

Gruess
Fritzli

r2d2matze
16.10.2005, 15:32
Wenn ich den Finger davor halte, passiert nichts, wenn er hängt. Das "Ziel" ist meinetwegen eine Wand und der Ausgang hängt direkt an einem Port des Atmega8.
Zwischendurch hat es auch schon manchmal geklappt, dass er zurück auf Low geht, aber meistens bleibt er auf High.

Ich glaube, der Port vom Mikrocontroller bleibt danach immer auf High und nicht der Ausgang des Sensors? Könnte das sein? Wenn ja, sollte ich den Port und damit auch den Ausgang des Sensors vielleicht über einen 10k Widerstand auch noch an Masse anschließen, damit er wieder auf Low geht?

PicNick
16.10.2005, 15:48
Mit den getrennten Versorgungsspannungen ist das so'n Ding. grad der ADC ist heikel auf Überspannung.
Probier' das Ganze nochmal mit EINER Versorgung. Das spart Kummer und lange Nächte

Fritzli
16.10.2005, 15:49
Häng mal den Sensor vom uC ab und direkt an ein Messgerät. Was passiert dann?

Gruess
Fritzli

r2d2matze
16.10.2005, 15:50
Habe Antwort von eben nochmal bearbeitet, bitte oben nochmal gucken...

avatar
16.10.2005, 15:50
die Versorgungsspannung des Sensor ist getrennt von der des Atmega8.Die Masse vom Sensor und vom Atmel muss schon verbunden sein. Der Sensor hat einen Open-Collector-Ausgang. An die Verbindungsleitung zwischen Sensor und Atmel solltest du noch einen Pull-Up-Widerstand anschließen, wie im Datenblatt angegeben.

Der betreffende Port muss als "Input" konfiguriert werden.

r2d2matze
16.10.2005, 15:53
Die Massen sind schon verbunden. Was meinst du mit Pull-Up-Widerstand dazwischen? Ich dachte eher an einen Widerstand, über den das Ganze zwischendurch auf Masse gezogen wird.

avatar
16.10.2005, 15:56
Der Ausgang vom Sensor muss über einen Widerstand (zirka 10K) an VCC gelegt werden. Der betreffende Port am Atmel muss per Software als "Input" konfiguriert sein.

r2d2matze
16.10.2005, 15:59
Als Input ist er eingestellt. Aber dann wäre der Ausgang des Sensor ja immer auf High! Und er könnte nicht mehr auf Low schalten oder?

avatar
16.10.2005, 16:06
Wenn der Ausgangstransistor vom Sensor durchgeschaltet ist, fließt ein Strom durch den Pull-Up Widerstand und die Ausgangsspannung ist LOW.

Wenn der Ausgangstransistor sperrt, zieht der Pull-Up die Spannung am Ausgang auf High-Pegel.

r2d2matze
16.10.2005, 21:15
Okay, ich werd es morgen mal ausprobieren, dann sag ich bescheid, ob es geklappt hat. Vielen Dank bis dahin.

r2d2matze
17.10.2005, 15:35
Ich habe den Ausgang einmal über den Pin des Atmega mit Pull-Up auf Vcc gesetzt und einmal mit einem Pull-Up auf Vcc des Sensors. Beides behebt den Fehler allerdings nicht.
Der Atmega hat eine Versorgungsspannung von etwa 3,5V, der Sensor von 5V. Kann das das Problem sein?

avatar
17.10.2005, 15:57
Der Sensor erzeugt kein HIGH oder LOW-Signal sondern hat am Ausgang nur einen NPN-Transistor, der nach bei LOW nach Masse durchschaltet. Der Kollektor von diesem Transistor ist unbeschaltet und (als Ausgangspin) aus dem Sensor heraus geführt.

Bei getrennten (und noch dazu unterschiedlichen) Betriebsspannungen musst du den Pull-Up Widerstand (zirka 5K ... 10K) an die Betriebsspannung vom ATMEL (nicht vom Sensor) anschließen.

r2d2matze
17.10.2005, 16:34
Okay, bloß der Atmel sollte ja eigentlich selber einen Pull-Up am Eingangs-Pin, an dem der Sensor angeschlossen ist, erzeugen können laut Datenblatt. Dann probier ich es mal mit einem extra eingelöteten Widerstand aus.

r2d2matze
17.10.2005, 17:11
Auch das funktioniert nicht. Langsam bin ich ratlos...
Am besten von allen Versuche ging es immer noch, als der Ausgang des Sensor direkt am Atmel angeschlossen wurde, und dieser einen eigenen Pull-Up erzeugt hat. Doch auch so funktioniert es nicht richtig.

avatar
17.10.2005, 20:15
Auch das funktioniert nicht. Langsam bin ich ratlos...
Am besten von allen Versuche ging es immer noch, als der Ausgang des Sensor direkt am Atmel angeschlossen wurde, und dieser einen eigenen Pull-Up erzeugt hat. Doch auch so funktioniert es nicht richtig.Hmm :-k

Hast du mal die Betriebsspannung vom Sensor nachgemessen? Am besten mit einem Oszilloskop. Wenn sie mit einer Störspannung überlagert ist, hilft vielleicht ein Kondensator. Am besten ist immer ein Elko und ein Keramikkondensator parallel. Die Betriebsspannung vom Sensor sollte nicht mehr als 0,25V vom Sollwert (5V) abweichen.

Evtl. ist auch der Eingangsport vom Atmel beim herumprobieren irgendwann mal überlastet worden und defekt. Hast du es schon mal an einem anderen Port probiert?

r2d2matze
17.10.2005, 20:23
Ich benutze einen Festspannungsregler, um den Sensor mit 5V zu versorgen. An diesem ist auch ein Kondensator geschaltet, von daher sollte die Spannung eigentlich störungsfrei sein.
An einem anderen Port funktioniert der Sensor ebenfalls nicht. :cry:

avatar
18.10.2005, 09:56
An einem anderen Port funktioniert der Sensor ebenfalls nicht. :cry:Hoffentlich ist er nicht kaputt #-o

Hast du mal den Sensor für sich allein, nur mit Pull-Up-Widerstand und Messgerät (ohne Prozessor) getestet? Objekte, die ganz dicht am Sensor sind kann er übrigens nicht erkennen. Es ist schon ein gewisser Mindestabstand erforderlich. Wenn du die flache Hand z.B. im Abstand von etwa 5...10 cm vor den Sensor hälts und wieder weg nimmst, müsste der Ausgang jeweils umschalten.

https://www.roboternetz.de/phpBB2/files/sharp.gif
Laut dieser Grafik kann der Sensor Objekte in einem Abstand von etwa 0,5 cm bis 15 cm erkennen. Der Abstand zwischen Sensor und Objekt ist auf der X-Achse in cm aufgetragen. Am linken Rand sieht man den schmalen Bereich (0 ... 0,5 cm) in dem der Sensor blind ist.

r2d2matze
18.10.2005, 18:46
Wie gesagt, der Sensor reagiert ja, er schaltet bloß nicht mehr auf Low, wenn er bereits auf High war.
Ich werde den Ausgang des Sensors nochmal ohne Schaltung sondern nur am Pull-Up überprüfen, das ist eine gute Idee. Mal sehen was dabei heraus springt...

r2d2matze
19.10.2005, 12:56
Okay, ich habe den Fehler gefunden. Der Sensor funktioniert richtig, und auch wenn man keinen externen Pull-Up sondern nur den internen vom Eingang des Atmega8 verwendet.
Der Fehler scheint in der Programmierung gelegen zu haben, zumindest geht es im Moment.
Trotzdem vielen Dank! Du hast mir ne Menge Denkanstöße gegeben.
Ich hoffe, ich kriege es jetzt gebacken.
Danke!