Forum: Mikrocontroller und Digitale Elektronik Annäherungssensor


von mr.chip (Gast)


Lesenswert?

Hallo

Ich möchte meinen Roboter noch mit 2 Annäherungssensoren ausstatten.
Diese werden nach vorne-links und vorne-rechts schauend angebracht und
sollen ein Hindernis auf einige wenige Zentimeter erkennen können. Eine
exakte Entfernungsmessung benötige ich nicht.

Ich denke an folgendes Konzept für die Sensoren: Ein Fototransistor
misst ständig die Helligkeit (über ADC an AVR). Nun werden in kurzen
Abständen von einer IR-Diode Lichtimpulse ausgesendet. Registriert der
Transistor in dieser Zeit eine höhere Helligkeit, so kann davon
ausgegangen werden, dass viel Licht reflektiert wurde. Es befindet sich
also ein Hindernis in der Nähe.

Soweit, so gut. An einem kleinen Roboter an der parallelen
Schnittstelle meines PC hat das schon einigermassen funktioniert.

Da wären aber noch so ein paar Probleme: Wenn der Roboter in einem sehr
flachen Winkel auf das Hindernis auftrifft, dann werden die Lichtpulse
nur sehr schwach reflektiert. Die Beschaffenheit des Hindernisses
beeinfluss die Reflexion ebenfalls. Zudem ist der
Helligkeitsunterschied zwischen ein und ausgeschalteter IR-LED bei
unterschiedlichen Lichtverhältnissen nicht immer gleich.

Was haltet ihr von meinem Konzept? Wie könnte man den Sensor allenfalls
verbessern?

Gruss

Michael

von Christoph Kessler (Gast)


Lesenswert?

Von Sharp gibt es Näherungssensoren fertig zu kaufen.
Es gibt das Prinzip, den Einfallswinkel als Abstandskriterium
auszuwerten. Ausserdem gibts Ultraschall-Sensoren
Eine Lichtschranke mit Wechsellicht ist unempfindlicher gegen
Fremdlicht

von rayelec (Gast)


Lesenswert?

Hallo Michael
Die Profis machen das so:
http://www.baumerelectric.com/de/90.html

Die Steigerung davon ist, dass man als Empfänger eine CCD-Zeile
verwendet. Damit kann dann die Entfernung in eien beschränkten Bereich
sehr(!) genau gemessen werden. (Ich habe mal 5 Jahre bei dieser Firma
gearbeitet und war als Ing. an der Entwicklung dieser Sensoren
mitbeteiligt)

Gruss
rayelec

von mr.chip (Gast)


Lesenswert?

Eigentlich möchte ich mich schon eher auf einen Eigenbau-Sensor
verlassen, solange das mit wenigen Teilen hinreichend machbar ist. Man
lernt halt einfach mehr. Oder denkt ihr, das macht keinen Sinn, weil zu
wenig zuverlässig/genau?

von rayelec (Gast)


Lesenswert?

Das Prinzip ist einfach! Mindestens die Hintergrundausblendertechnik
kannst du auch selber basteln. Die Sensoren die Ich kenne laufen mit
gepulstem Licht (LED oder Laser) bei etwa 4kHz. Für den Empfänger
brauchst du eine drehbare Linse (zum einstellen der Ansprechentfernung)
und die Fotodioden müssen sehr nahe beieinander liegen, damit du einen
nahtlosen Übergang von Vordergrund auf hintergrund hast. Du brauchst
nicht bei Baumer (oder Sick, Wenglor, IFM etc.) einen Sensor zu kaufen.
Vor allem die Messenden sind sowieso preislich jenseits aller
Hobbybudgets.

Gruss
rayelec

von mr.chip (Gast)


Lesenswert?

Hallo

Ich bin jetzt ein am experimentieren, habe aber auch schon bessere
Resultate erzielt...

Drei Fragen:

1. Lohnt es sich, das Signal des Fototransistors noch über einen
Transistor zu verstärken und dann auf den ADC zu nehmen?

2. Wie viel Strom verträgt eine IR-Diode? Ich arbeite mit 5 Volt, bei
einem früheren Projekt habe ich lediglich 150 Ohm vorgehängt. Ich weiss
leider nicht genau, was es für eine Diode ist, doch sie scheint ziemlich
"normal, konventionell, durchschnittlich, 08-15, gewöhnlich".

3. Gibt es irgend eine Strategie, um die ungefähre Wellenlänge, auf der
Fototransistor und IR-Diode arbeiten, herauszufinden? Und vorallem, ob
die Wellenlängen zueinander passen oder ob die beiden völlig aneinander
vorbeireden.

Gruss

Michael

von Rahul (Gast)


Lesenswert?

zu 1.: vielleicht solltest du mal eine Kennlinie (oder mehrere) des
Transistors aufnehmen, indem du die Spannung mit einem (guten)
Multimeter bei verschiedenen Messabständen, IRLED-Strömen etc. misst.
Natürlich sollte man immer nur ein Parameter variieren [zwei
Fremdwörter hintereinander...]. Blosses Gerate wird zu keinem Ergebnis
führen.

zu 2.: Sowas findet man im allgemeinen in Datenblättern...Die üblichen
Verdächtigen unter den Elektronik-Versendern (C*, Angelika etc) haben
meist bei Ihren Produkten auch ein Datenblatt zum jeweiligen Bauteil.
Da kann man dann zumindest die grobe Richtung der Belastbarkeit
herausfinden.

zu 3.: herausfinden, um welche Bauteile es sich handelt, und dann die
entsprechenden Grafik/Parameter im Datenblatt angucken.

von Eckhard (Gast)


Lesenswert?

Hallo,

Die IR-LEDs können meist auch nicht viel mehr als die üblichen 20 mA
ab. Der rick ist das die LEDs gepulst werden. Dann kann man je nach
Pulsdauer und LED bis zu 1A da durchjagen und hat dann eine
entsprechend höhere Helligkeit bzw Reichweite.


Eckhard

von mr.chip (Gast)


Lesenswert?

Hallo

Ich habe mir den Sensor gestern mal gebastelt, funktioniert ganz ok.

IR-Diode und Fototransistor sind beide auf der gegenüberliegenden Seite
eines Dünnen Sperrholzplättchens angebracht. Die Diode wird über einen
Transistor gesteuert, der Vorwiderstand beträgt 150 Ohm. Später, wenn
es 2 Dioden sein werden, werde ich auf 75 Ohm verringern. Der
Fototransistor bildet mit einem 10 kOhm Widerstand einen
Spannungsteiler, wobei die Spannung über dem 10 kOhm Widerstand
gemessen wird.

Jetzt eine Frage: Wie schliesse ich das schon wieder an den ADC an? 10
kOhm zwischen PCx und GND und Fototransistor zwischen PCx und Vcc,
sollte doch gehen? Bisher habe ich es nur mit dem PC gemessen ;-)
Der ADC misst ja die Spannung gegen Masse im Verhältnis zu Vref (wobei
ich die 5 Volt von Vcc verwenden werde).

Gruss

Michael

von trollizei (Gast)


Lesenswert?

Hallo

Noch eine kleine Frage: Wie lange dauert eigentlich die Reaktionszeit
der IR Diode und danach des Fototransistors wenn man gepulstes Licht
aussendet? Reicht da eine Millisekunde?

Gruss

Michael

von mr.chip (Gast)


Lesenswert?

Hallo

Jetzt kommts aber dick: Der Sensor funktioniert, die Software
eigentlich auch. Aber: Da die Servos natürlich am selben Akku hängen,
verursachen sie ein erhebliches Spannungsruckeln. Der Sensor reagiert
auf minime Spannungsunterschiede am Fototransistor zwischen
IR-beleuchteter und nicht beleuchteter Umgebung. Er kommt aber durch
die Servos ziemlich aus dem Konzept... Wie könnte ich das lösen?
Kondensator zwischen Vcc und GND an jedem Servo? Was für ein Typ?
Welche Kapazität?

Gruss

Michael

von Florian (Gast)


Lesenswert?

Getrennte VCC und GND für Servo und Sensoren. Dicke Cs ... vlt ein
Tiefpass

von mr.chip (Gast)


Lesenswert?

Hmm...wie mach ich das getrennt? Ich hab ja auf dem Roboter nur einen
Akku und kann leider nicht noch ein zweites Atomkraftwerk mitfahren
lassen. ;-)

Wie sieht ein prinzipieller Schaltplan für das Trennen von GND und VCC
aus?

von Karl H. (kbuchegg)


Lesenswert?

Du hast 2 Spannungsversorgungskreise:
Einer versorgt den µC, der andere die Motoren und Servos.
Erst am Akku (und nur dort) mündet der eine Kreis
in den anderen.

von mr.chip (Gast)


Lesenswert?

Hallo

Elektrisch sind die Kreise ja dann irgendwie auch nicht besonders
getrennt. Reicht es, wenn ich zwischen Vcc1/GND1 noch einen Kondensator
(0.1uF?) parallelschalte und dasselbe mit VCC2/GND2? Oder sind da noch
andere Trennungen, z.B. durch Dioden notwendig?

Von solchen Dingen habe ich noch echt wenig Ahnung ;-)

Könnte es auch reichen, nach jedem Impuls an die Servos einige
Millisekunden mit der Messung zu warten, bis sich die Spannung wieder
stabilisiert hat - oder dauert das länger?

Oder die Stromversorgung der Sensoren anstatt direkt über Vcc über
einen I/O-Port des AVR zu übernehmen? (Widerstand des Sensors:
Mindestens 10 kOhm:
GND nach ADC-Input (Port C0): 10 k Ohm,
ADC-Input nach Vcc: Fototransistor

Gruss

Michael

von Florian (Gast)


Lesenswert?

Ich bin mir nicht ganz sicher, aber die Impulse und das messen zeitlich
zu trennen dürfte die einfachste Lösung sein. Einfach zwischen 2
Impulsen Messen.

Das Verbinden an nur einem Punkt verbessert die Situation beträchtlich,
das ist nicht zu unterschätzen.

Über IO-PORT des AVR ist keine gute idee, da ist ziemlich viel rauschen
druff.

von mr.chip (Gast)


Lesenswert?

> Das Verbinden an nur einem Punkt verbessert die Situation
beträchtlich,
das ist nicht zu unterschätzen.

Hat das damit zu tun, dass eine längere Leitungsstrecke auch eine
gewisse Kapazität hat und somit wie ein Kondensator die Schwankungen
etwas kompensieren kann? Da kommt mir noch so die Idee, vielleicht auch
noch einen Kondensator in Reihe zu Schalten, um die Kapazität zu
erhöhen. Könnte das funktionieren? Welcher Kapazitätsbereich würde
überhaupt Sinn machen?

von Florian (Gast)


Lesenswert?

Dadurch beeinflussen sich die Leitungen nicht so stark.
Kondensator in serie kann nciht gehen.

von Rahul (Gast)


Lesenswert?

Leitungen sind wohl eher Induktivitäten...
Die Versorgung des Sensors kannst du also durch eine Induktivität in
Reihe der Leitung und einem Kondensator parallel zum Sensor
stabilisieren (nennt sich auch "Siebglied").

von mr.chip (Gast)


Lesenswert?

> Leitungen sind wohl eher Induktivitäten...

Induktivitäten...moooment...Spulen? Brauche ich a etwas Wildes, oder
könnte man das auch mit Hausmitteln herstellen? z.B. etwas Draht
wickeln?

> und einem Kondensator parallel zum Sensor

Dies sollte die schnelle Reaktion des Sensors nicht beeinflussen,
oder?


Könnte man alternativ auch die Spannung der Servos stabilisieren - das
wäre in meinem Fall einfacher zu lösen. z.B. Kondensator zwischen GND
und VCC nahe am Servogehäuse.

von Rahul (Gast)


Lesenswert?

Naja, Leitungen sind auf "lange Sicht" Tiefpässe.
Mit welcher Spannung betreibst du denn deinen Sensor? Und mit welcher
die Servos?
Man könnte die Sensor-Versorgung auch mit einer Diode entkoppeln und
einen "dicke" Kondensator dahinterhängen. Dieser Kondesator muß
einfach nur soviel Kapazität haben, dass er
Versorgungsspannungseinbrüche überbrückt; die Sensor Schaltung also
nichts vom Zusammenbruch (für eine gewisse Zeit) mitbekommt.
Problem dabei ist der Spannungsabfall über der Diode...
Da könnte man bei 6V Versorgung eine Schottky-Diode nehmen (UF~0,3V).

von mr.chip (Gast)


Lesenswert?

Beides läuft auf 4.8 V eines 4-Zellen-Akkus.

Eigentlich könnte man die Entkoppelung aber auch auf der Seite der
Servos machen, dann wäre nämlich die ganze Steuerschaltung ruhig und
zufrieden.

z.B.

Vcc --- Diode > --- Vcc (Servo)
                |
             Kondensator (Welche Kapazität?)
                |
GND --- < Diode --- GND (Servo)

von Rahul (Gast)


Lesenswert?

... und die Leistungsfähigkeit der Servos geht in den Keller.
Übrigens brauchst du nur die Diode in der Vcc-Leitung.
Wenn du der GND-Leitung auch noch eine spendierst, steigt das
GND-Potential der Servos um die Diodenspannung an.
GND ist das Bezugsptential für die Steuerimpulse.
Ausserdem kann der Kondensator für die Sensorik wesentlich kleiner
ausfallen, als für die Servos, da dort ein geringerer Strom fliesst.
In der Regel ist es dem Controller auch möglich, bei kleineren
Spannungen (<3V; L-Version) zu arbeiten; Servos brauchen schon etwas
mehr Spannung. Es ist auch üblich, bei grossen Modellen, die
Akku-Zellen-Zahl auf 5 (6V) zu erhöhen. Einerseits bricht die
Akku-Spannung dann nicht so stark über die Zeit zusammen
(Entladezeitraum), andererseits arbeiten die Servos kraftvoller und
schneller.

von mr.chip (Gast)


Lesenswert?

Achso ist das. Dann werde ich wohl, wenn das möglich ist, gleich die
ganze Regelschaltung, inklusive uC von den Servos abtrennen.

Bliebe noch die Frage nach der Diode... Das grösste Problem dürfte der
Spannungsabfall sein, da ich mit 4.8 V ja keine grosse Reserve mehr
habe. Könnte man eigentlich auch einen durchgeschalteten Transistor
verwenden? Der lässt ja den Strom auch nur von Kollektor nach Emitter
fliessen.

Achja, und wie sollte ich den Kondensator in etwa dimensionieren? Hier
habe ich wirklich keinen Schimmer. Einige uF? nF-Bereich? pF-Bereich?
Kleine Vermutung: 0.1 uF, diesen Wert verwende ich aktuell zwischen Vcc
und GND.

von Rahul (Gast)


Lesenswert?

eher 100-1000µF (oder mehr) je nach Belastung...
0,1µF (oder auch 100nF) benutzt man meist als "Bunker-Kondensator"
für ICs.
Guck dir doch mal die Definition der elektrischen Kapazität an.

von Karl H. (kbuchegg)


Lesenswert?

Auch ein Transistor besteht intern aus Dioden.

Dimensionierung des C. Das ist schwer zu sagen.
Probier mal ein bischen rum. Es koennte auch sein,
dass du 2 C's einsetzen solltest. Grosse C's (10 µF und
aufwaerts) um die groben Loecher zu stopfen. Die haben
aber den Nachteil, dass sie nicht so flink auf kleine
Spikes in der Versorgungsspannung reagieren. Daher noch
irgendwas bei 100 nF dazu.

von mr.chip (Gast)


Lesenswert?

> Auch ein Transistor besteht intern aus Dioden.

Genau deshalb meine ich ja. Soviel mir bisher aufgefallen ist, hat er
aber in durchgeschaltetem Zustand eine sehr kleine Kollektor-Emitter
Spannung. Der Spannungsabfahl durch die Diode wäre also minim. Oder
täusche ich mich da irgendwie?

von Karl H. (kbuchegg)


Lesenswert?

Wenn ein (normaler bipolar) Transistor durchschaltet, hast Du
im Prinzip 2 Dioden in der Durchschaltstrecke.

Nimm ne Schottky-Diode. Da kriegst du so ziemlich den kleinsten
Spannungsabfall den du kriegen kannst.

von Rahul (Gast)


Lesenswert?

Probier's halt aus.
Allerdings hängt die Uce auch vom fliessenden Strom ab. Ohne einen
Steuerstrom kommst du auch nicht aus, der widerum durch einen
Widerstand begrenzt werden muß (mehr Bauteile).
Bei Verwendung einer Diode (und vielleichz einer Akkuzelle mehr),
sparst du dir das Gezappel.

von mr.chip (Gast)


Lesenswert?

Mann Leute....mit den Cs die ich jetzt zwischen GND und Vcc gewurstelt
habe, fliegen andere um die Welt... Aber immerhin funktioniert es.  Ein
satter 470 uF Elko richtet die Sache.

von mr.chip (Gast)


Lesenswert?

Hallo

Könnte es sein, das der AVR jetzt zu wenig Spannung bekommt? Es gibt
nämlich ein gewisser Hinweis, dass er sich genau alle 5 Sekunden
resettet. (Kurzes Stocken der Servos)

Zur Erinnerung: Ich verwende einen 4.8 V Akku aus 4 Zellen, die
Steuerschaltung ist noch über eine Schottkydiode von Störungen durch
die Servos abgekoppelt.

Gruss

Michael

von mr.chip (Gast)


Lesenswert?

Hallo

Der Roboter hat soeben seinen ersten Testlauf mit den Sensoren
geschafft! Die Sensoren funktionieren sehr gut - lediglich mit
silbernen Mülleimern, Plüschtieren, Modellautos und gewissen schmalen
Objekten hat der Roboter noch etwas Mühe. ;-) Die Software ist aber
auch noch wenig ausgereift. Schade nur, dass alles nur auf dem
Steckbrett läuft - die (Streifenraster-)Platine habe ich irgendwie
versaut.

Ich möchte mich nochmals bei allen bedanken, die mir bei der
Entwicklung der Sensoren geholfen haben! Wenn sich jemand für die
Schaltung und deren Ansteuerung interessiert kann er sich gerne
melden.

Gruss

Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.