PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Analoger Sensor am RPi



pinsel120866
21.01.2013, 10:54
Hallo,

ich habe leider überhaupt keine Ahnung, wie ich einen (analogen) Sharp-IR-Sensor an den (digitalen) GPIO des Pi's anschliessen kann.

Hat jemand eine Idee dazu?

Kampi
21.01.2013, 11:09
Hey,

wie wäre es mit einem externen ADC (z.B. über I²C).
Ich habe gestern sowas mit einem PSoC µC realisiert (noch nicht komplett fertig geschrieben, weil der CapSense noch etwas zickt):

http://kampis-elektroecke.de/?page_id=2802

Das Schema kannst du dann natürlich auf einen 0815 I²C ADC übertragen. Der Vorteil des PSoCs ist halt noch, dass ich nebenbei noch einen DAC und PWM habe.

pinsel120866
21.01.2013, 11:16
Hallo Kampi,

geht leider nicht, ich habe beim Pinselbot noch den Pin7 frei (GPIO4) und den wollte ich im Input-Mode verwenden. Wenn ich das Analoge Signal mit z.B. einem Kondensator "glätten" könnte, wäre mir schon geholfen.

lorcan
21.01.2013, 11:26
Was hast du denn ueberhaupt vor?
Willst du den ganzen Wertebereich erfassen oder nur bei einem Schwellwert schalten?
Und um welchen Sensor handelt es sich genau?

pinsel120866
21.01.2013, 11:33
Ich habe mir diese Platine bestellt um die Liniensensoren nutzen zu können:
http://www.generationrobots.com/pob-line-sensor-robots-pob-technology,us,4,Pob-Line-Sensor.cfm

Zusätzlich ist ein Sharp drauf, den ich verwenden möchte. Der Bot verfolgt eine Linie, wenn ein Hindernis im Weg steht wird es von Sharp erkannt und der Bot bleibt stehen.

Kampi
21.01.2013, 11:35
Das heißt es würde reichen wenn du einen Schwellenwert für z.B. 20cm) definierst?
Dann kannst du das doch einfach mit einem Komparator machen und den Pin nach einem High-Pegel abfragen.

pinsel120866
21.01.2013, 11:48
Komparator? Damit habe ich noch keine Erfahrung. Der Komparator schaltet bei einer gewissen Spannung durch, oder?

Kampi
21.01.2013, 12:00
Ein OPV als Komparator geschaltet verstärkt die Differenzspannung an beiden Eingängen.
Wenn die eine größer ist als die andere, verstärkt er die Differenz. Durch die hohe Verstärkung führt der Ausgang dann meistens Vcc.

http://www.elektronik-kompendium.de/sites/slt/0311261.htm

Das heißt an dem einen Pin kommt die Spannung die du als Schaltschwelle definiert hast und sobald der Sensor über diese Spannung kommt, liegt am Ausgang Vcc an.

pinsel120866
21.01.2013, 13:02
Ich habe dieses Bildchen gegoogelt. Rechts schliesse ich die Signalleitung des Sensors an, und links geht es weiter zum GPIO - richtig?

Kampi
21.01.2013, 13:43
Der - Eingang vom OPV wird mit dem analogen Ausgang des Sensors verbunden.
Der Ausgang vom OPV (rechts) wird mit dem GPIO des Pis verbunden.
Den Spannungsteiler dimensionierst du so, dass an dem Widerstand zwischen dem + Eingang und GND die Spannung abfällt, die der Sensor bei einer bestimmten Distanz ausgibt (z.B. 1V für eine Distanz von 20cm. Wenn du dann willst das der OPV bei etwa 1V schalten soll muss an dem Widerstand 1V abfallen).

pinsel120866
21.01.2013, 14:11
OK, danke. Welches OPV ist das kleinste, das ich benützen kann - bzw. welches empfiehlst du mir?

Nein stop - geht das LM741? Welche Pins werden verwendet?

Kampi
21.01.2013, 15:12
Für so einfache Anwendungen kannst du jeden OPV verwenden.
Ansonsten siehst du die Pinbelegung ja in dem Bild ;)
Pin 2 und 3 sind die Eingänge und 6 der Ausgang.

pinsel120866
16.02.2013, 17:07
Hi Kampi,

kannst du mir einen Schaltplan machen, wie ich den Sensor und den Komparator aufbauen muss?

Wäre nett, danke

pinsel120866
17.02.2013, 09:42
Ich habe nun eine Skizze angefertigt. Bitte um Kontrolle, ob das so passt.

Danke.

In der Skizze ist ein kleiner Fehler: Der Ausgang des Komperators ist NICHT Pin8, sondern Pin 6!

Kampi
17.02.2013, 10:17
Hey,

hab es gestern schon gelesen, war aber zu kaputt um vernünftig nachdenken zu können.
Aber wenn du den OPV mit einer Spannung von 3,3V betreibst ist die Skizze so in Ordnung (von der Funktion her).
Die nächste Frage ist, wie groß ist die maximale Ausgangsspannung vom Sharp-Sensor?

pinsel120866
17.02.2013, 11:00
danke kampi,

ich habe als maximale ausgangspannung des sharp sensors 3,1volt gemessen, daher meine überlegung den opv mit 3,3 volt zu betreiben. wenn ich das richtig verstanden habe, liegen am port 8 des opv beim durchschalten auch 3,3 volt an, richtig? zur regelung der vergleichspannung verwende ich einen poti.

Kampi
17.02.2013, 11:10
Ja genau. Ohne Rückkopplung wird die Differenzspannung mit dem natürlichen Verstärkungsfaktor verstärkt. Die Grenze wird dabei durch die Betriebsspannung bestimmt.

pinsel120866
17.02.2013, 11:26
prima, dann muss ich nur noch warten bis der ovp mit der post aus china eintrudelt. wegen des chin. neujahrsfestes hat das teil schon verspätung.

ePyx
17.02.2013, 12:54
Statt des Komperators solltest du lieber einen Schmidt-Trigger verwenden. Der Aufwand ist nicht viel größer, aber deine Schaltung kann nicht oszillieren. Nebenbei kannst du dann eine untere und eine obere Schwelle definieren.

pinsel120866
17.02.2013, 15:52
aha, und wie sieht die schaltung dann aus?

ePyx
17.02.2013, 16:16
Es lebe Google oder ? http://de.wikipedia.org/wiki/Schmitt-Trigger

pinsel120866
17.02.2013, 16:40
ok, danke. werde ich mir mal ansehen.

BMS
17.02.2013, 17:39
Hallo,
Bitte tu dir einen Gefallen und verwende nicht den Steinzeit-OpAmp 741. Bei der niedrigen Betriebsspannung und dem sehr beschränkten Ein- und Ausgangsspannungsbereich des 741 wird es hier definitiv Probleme geben :-k
Es gibt bessere OpAmps/Komparatoren, die auch nicht viel mehr kosten (LM(V)358, LM393, TS912, LMC6482, MCP6002) ;)
Grüße, Bernhard

pinsel120866
07.03.2013, 19:02
Hallo,

nun habe ich die Schaltung aufgebaut. Wenn ich ohne GPIO die Schaltung mit einer LED teste, funktioniert sie:
http://www.youtube.com/watch?v=bv1BKcY9Q24&list=UU8vzzeCkyH4y59agxNUSUew&index=1

Wenn ich allerdings Pin6 des Komparators an den GPIO anschliesse und mit folgendem Programm teste, ist das Port immer high (TRUE)

import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)

GPIO.setup(5,GPIO.IN)

while True:

print GPIO.input(5)

time.sleep(1)
Was stimmt nicht? Bitte um Hilfe.

Kampi
07.03.2013, 20:39
Hey,

hast du vielleicht den I²C aktiviert?
Probier mal einen ganz normalen GPIO ohne Nebenfunktion wie den GPIO 17 (Pin 11).

Edit:
Das Raspberry verfügt an den I²C Pins über Pull-Up Widerstände. Daher ist der Pin immer High.

pinsel120866
07.03.2013, 21:02
hi kampi,

also pullup wiederstände. kann ich die i2c pins nun nicht verwenden? oder gibt es einen weg?

Kampi
07.03.2013, 21:12
Du könntest den Komparator invertieren...dann schaltet er nach GND und das kannst du dann erkennen.
Aber warum willst du den I²C für sowas banales "verschwenden". Ich persönlich würde mir den frei halten, falls ich noch GPIOs oder Sensoren benötige.

pinsel120866
08.03.2013, 07:23
Und wie invertiere ich den Komparator? I2C muss ich leider verwenden, weil alle andernen GPIO Pins bereits belegt sind.

ePyx
08.03.2013, 07:59
NPN Transistor könnte man nehmen. oder einen Inverter (TTL oder CMOS) würde auch gehen.

pinsel120866
09.03.2013, 15:25
Danke für eure Tipps! Ich habe nun den Sharp Abstandssenor am GPIO Pin 26 angeschlossen und es funktioniert einwandfrei:
http://www.youtube.com/watch?v=FUu941Vz4rI

Kampi
09.03.2013, 18:10
Yeah,

klasse :)
Sieht richtig gut aus.