PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino Problem Lichtschranke verschalten


ceed
2017-12-11, 18:41:46
Hey ho,

ich versuche an meinen Arduino eine Lichtschranke anzuschliesen (http://www.hyzt.com/manager/upimg/hy860F.pdf).


hab es so verschaltet
https://picload.org/view/drpwwgoi/desktop3.jpg.html

Am Eingang an meinem Arduino lese ich aber so immer 1024 ab egal ob ich was einschiebe oder nicht... auch wenn ich auf der rechten Seite + und - vertausche :/
Was ist falsch? Hab leider wenig Ahnung von Etechnik was über Plus und Minus hinaus geht :freak:

Das untere dunkle Kabel geht zum Analog Eingang Arduino

Mosher
2017-12-11, 20:22:36
So wie ich das sehe, musst du das dunkle Kabel zum Arduino mit dem gelben 5V rechts vertauschen.

Bzw. so:
https://abload.de/img/lichtsrsj6.jpg

Ich kann leider nicht alles erkennen, da mich die Perspektive teils verwirrt.
Und natürlich kann es auch sein, dass die Firmware nicht funktioniert, falsche Referenz für den ADC etc.

Achso, und die Schaltung funktioniert so, dass sie dir ca. 1024 liefert, wenn die Schranke unterbrochen ist und ~0 (zumindest signifikant weniger als 1024), wenn sie offen ist.

Oid
2017-12-11, 21:37:56
Skizziere doch einfach mal deinen Schaltplan, dann tut man sich leichter bei der Hilfestellung.

ceed
2017-12-11, 23:34:12
Skizziere doch einfach mal deinen Schaltplan, dann tut man sich leichter bei der Hilfestellung.

Hab es jetzt so verschaltet wie Mosher gesagt hat und es funktioniert tatsächlich !!! Danke ! bzw. hab ich 400 Ohm Widerstand genommen als Vorwiderstand für die Diode. (und ist auch anders rum- also wenn Schranke offen messe ich was, bei geschlossener Schranke messe ich Null)
Was ich nicht verstehe: Woher weiß ich wie viel Widerstand ich vorschalten muss? Hab das mehr oder weniger durch ausprobieren raus bekommen- da kann ich es aber doch auch kaputt machen? Aus den Datenblatt entnehme ich was von 1,4 Volt für die Schranke- aber kann da keinen Widerstand raus lesen mit dem ich da rechnen könnte?
Und was genau misst der analoge Eingang eigentlich? Die Spannung? Kann man das durch anlegen von zu viel Volt kaputt machen?

Oid
2017-12-11, 23:43:10
Mit dem Widerstand stellt man den Strom durch die Diode ein. Der Strom muss so groß sein, dass der Detektor schaltet. Der Widerstand kann zu klein sein, dann geht die Diode kaputt. Oder er kann zu groß sein, dann reicht das emittierte Licht nicht, damit der Detektor schaltet.
Der analoge Eingang misst die Spannung, ja. Und man kann den auch mit zu viel Spannung kaputt machen. Aber so lange die Spannung am Eingang nicht größer ist, als die Versorgungsspannung (5V) des Arduino, kann eigentlich nichts passieren. In der von Mosher skizzierten Schaltung kann die Spannung am Eingang ja eh schon mal nicht größer als 5V werden.

Spasstiger
2017-12-12, 00:27:08
Die IR-LED wird typischerweise mit 20 mA Stromstärke betrieben, spezifiziert ist sie für max. 50 mA.
D.h. der typische Vorwiderstand liegt bei rund 250 Ohm (5 Volt / 250 Ohm = 20 mA), minimal sollten 100 Ohm eingesetzt werden. Arg, hatte den Spannungsabfall über die LED unterschlagen. Korrekte Rechnung siehe Mosher unter mir.

Der Phototransistor lässt laut Datenblatt im ON-Zustand bei typisch beschalteter IR-LED und 5 Volt Kollektor-Emitter-Spannung zwischen 0,4 mA und 2,4 mA durch. Mit dem Vorwiderstand von 10 kOhm wird der Strom durch den Phototransistor auf max. 0,5 mA begrenzt.

Der analoge Eingang vom Arduino misst die Spannung, wobei die anliegende Spannung nicht höher als die Betriebsspannung (z.B. 5 Volt) sein sollte. Welcher Digitalwert sich zu einem bestimmten Analogwert ergibt, hängt zudem von der zuführbaren Referenzspannung ab. Die interne Referenzspannung liegt z.B. bei 1,1 Volt, größere Spannungswert nehmen automatisch den maximalen Digitalwert (1024?) an. Bei 0 Volt kommt ein Digitalwert von 0 raus. So lese ich das zumindest aus dem Datenblatt des Atmel-Controllers raus, auf dem der Arduino basiert.

Wenn der Phototransistor von der IR-LED beleuchtet wird, lässt der Phototransistor durch und der Arduino sieht im Wesentlichen den Spannungsabfall über den Phototransistor, der dann ja in Sättigung geht (laut Datenblatt max. 0,4 Volt). Es stellt sich ein Digitalwert kleiner als der max. Digitalwert ein.
Wenn der Phototransistor nicht beleuchtet wird und sperrt, dann sieht der Arduino die 5 Volt über den 10 kOhm Widerstand. Es stellt sich der maximale Digitalwert ein.
@ceed: Wenn die Digitalwerte sich bei dir genau umgekehrt verhalten, dann wird eventuell invertiert. Hab selbst fast keine Erfahrungswerte mit dem Arduino. Rein physikalisch kommt auf jeden Fall die größere Spannung bei geschlossener Schranke an. Der Analog-Eingang sollte sehr hochohmig sein und die anliegende Spannung nicht beeinflussen.

Mosher
2017-12-12, 06:18:20
Hab es jetzt so verschaltet wie Mosher gesagt hat und es funktioniert tatsächlich !!! Danke ! bzw. hab ich 400 Ohm Widerstand genommen als Vorwiderstand für die Diode. (und ist auch anders rum- also wenn Schranke offen messe ich was, bei geschlossener Schranke messe ich Null)
Was ich nicht verstehe: Woher weiß ich wie viel Widerstand ich vorschalten muss? Hab das mehr oder weniger durch ausprobieren raus bekommen- da kann ich es aber doch auch kaputt machen? Aus den Datenblatt entnehme ich was von 1,4 Volt für die Schranke- aber kann da keinen Widerstand raus lesen mit dem ich da rechnen könnte?
Und was genau misst der analoge Eingang eigentlich? Die Spannung? Kann man das durch anlegen von zu viel Volt kaputt machen?

Hi Ceed. Schön, dass es funktioniert und gern geschehen :)

Der Widerstand für die Diode berechnet sich folgendermaßen

(5V - 1.4V) / I, wobei 5V deine Versorgungsspannung sind, 1.4V die Durchlassspannung aus dem Datenblatt und I der Strom, auf den du begrenzen willst (grob gesagt: Der Strom, der fließen soll).
Bei sagen wir mal 20mA landest du bei 3.6V / 20mA = 180Ohm


Der Strom durch die Diode wiederum bestimmt den Strom, der durch C und E (3 und 4) des Transistors fließen kann, siehe Datenblatt.
Darüber machen wir uns jetzt aber zunächst keine all zu großen Gedanken.

Obwohl du am Ende etwas analoges misst, denken wir jetzt einfach mal digital: a) "Transistor schaltet" oder eben b) "Transistor schaltet nicht".

Fall a) kann man auch als "zwischen 3 und 4 kann ungehindert Strom fließen" und Fall b) "zwischen 3 und 4 kann kein Strom fließen" betrachten.

Aus R = U / I könnte man jetzt auch ableiten: a) zwischen 3 und 4 ist R = 0, b) zwischen 3 und 4 ist R = ∞

(Ja, steinigt mich, aber ich versuche halt hier ein möglichst einfaches Modell zu bemühen)

Jetzt kommt "der Clou":
Deine Leitung zum ADC liegt zwischen 5V und Minus, jeweils mit dem 10kOhm bzw. eben die Strecke 3->4 dazwischen.

Daraus entsteht so eine Art "Tauziehen" (man spricht nicht umsonst von "Pullup" bzw. "Pulldown") zwischen den beiden Anschlüsen. 5V versucht die Leitung auf 5V zu ziehen, Miuns auf 0V. Dabei gibt es keinen eindeutigen Gewinner (=digital), sondern einen Zwischenwert (=analog), d.h. auf deiner ADC-Leitung kommt "irgendwas zwischen 5V und 0V raus".

Das hängt vom Verhältnis der Widerstände ab. Wie gesagt, in unserem Modell ist an 5V immer 10kOhm, an 0V 0Ohm oder ∞Ohm.

Da 0 Ohm <<<< 10k Ohm und ∞ Ohm >>>> 10k Ohm, kommt am Ende dann doch was "fast" digitales raus, nämlich fast 5V oder etwas mehr als 0V.
Zwischenwerte können durch gezieltes steuern des Lichteinfalls auf den Transistor (zB mit einer Regelschleife mit Hilfe eines Operationsverstärkers und einer variablen Referenz) erreicht werden, ist aber im Anwendungsfall der Lichtschranke eher nicht vorgesehen. IdR willst du ja nur "an" oder "aus" messen und hast halt eine gewisse Toleranz.

Jetzt zu den 1024. Anscheinend hat dein Arduino einen 10 bit ADC, d.h. er kann Zahlen von 0 - 1023 darstellen. "Normalerweise" kannst du damit positive analoge Spannungswerte von 0V - XV digital in Zahlen von 0-1023 darstellen.

Bei welcher Spannung X dein ADC dann 1023 anzeigt, bestimmt die Referenz, oder "full scale range", je nachdem wie es im Datenblatt angegeben ist.

Wenn es so ist, wie Spasstiger gesagt hat, dann zeigt dein ADC schon bei 1.1V 1023 an, was in deinem Fall bedeuten würde, dass der ADC auch noch bei mäßigem Lichteinfall 1023 anzeigt. Erst wenn du die Pappe dann ganz wegnimmst, hast du deutlich niedrigere Werte.

Das Verhalten lässt ich zB dadurch steuern, dass du die 5V links auf einen anderen Wert herunterteilst oder in der Fiwmware (sofern möglich) eine andere Referenz für "full scale" einstellst.

Da kenne ich mich jetzt zu schlecht mit den Arduinos aus und wie bequem es einem die Bibliotheken machen.

<<-- Eher so der "5000 Seiten Datenblatt µC Typ" (sorry, musste sein)

P.s.: Wenn du öfter an solchen Schaltungen bastelst und etwas neugierig bist, kann ich dir zum Kauf eines günstigen Multimeters raten, zB die roten von UNI-T.
Damit kannst du solche Sachen dann einfach mal nachmessen, was meiner Erfahrung nach oft zum Verständnis beiträgt.

Oft hilft auch eine Simulation mit zB LTSPICE, dazu muss man sich aber schon etwas besser auskennen und wissen, wie man bestimmte Bauteile auch als Ersatzschaltung darstellen kann etc.

ceed
2017-12-20, 18:29:54
P.s.: Wenn du öfter an solchen Schaltungen bastelst und etwas neugierig bist, kann ich dir zum Kauf eines günstigen Multimeters raten, zB die roten von UNI-T.
Damit kannst du solche Sachen dann einfach mal nachmessen, was meiner Erfahrung nach oft zum Verständnis beiträgt.


Wurde aufgrund er Empfehlung gekauft und ist im Einsatz :biggrin:

Eine Frage habe ich aber noch: Man misst ja die Höhe eines Potentials bei so einer Lichtschranke- wenn nun meine Spannungsquelle für den Arduino abfällt (weil z.B. eine Batterie die schwächer wird als Spannungsquelle dient) ändert das doch dann den Schaltpunkt meiner Lichtschranke, oder? Ich würde die Lichtschranke gern zur Objekterkennung einsetzen, aber brauche eine richtig gute Wiederholgenauigkeit (Hysterese ist Wurst). Hab damit getestet und kam auf einige tausendstel!! (in das Spannfutter eine Fräßmaschine ein Blech gesteckt und dann in die Lichtschranke gefahren, immer wieder)- das wäre mehr als Ausreichend für meine Zwecke- habe nur Angst, dass wenn die Spannung schwankt auch der Schaltpunkt der Lichtschranke sich verändert... :/ ?

noid
2017-12-20, 18:37:06
Deswegen misst man für solche Fälle auch die Versorgungsspannung und korrigiert dann den Messwert entsprechend.

ceed
2017-12-21, 00:51:11
Deswegen misst man für solche Fälle auch die Versorgungsspannung und korrigiert dann den Messwert entsprechend.

Kann man sich das schenken wenn man es ans Stromnetz hängt? Das wäre ja schon aufwändig..

Mosher
2017-12-22, 07:07:21
Wenn du das Stromnetz (zB Steckernetzteil für USB) verwendest, ist zumindest deine Versorgungsspannung "konstant" - viele dieser USB-Wanzen sind sehr dreckig umgesetzt, einer der schlimmsten Kandidaten war übrigens der iPhone-Lader. Spitzen mit 36V über 2ms sind nicht nett. Aber das nur am Rande.


Kommt es dir auch auf stabile Werte am ADC an, sollte man ihm eine ordentliche Referenz spendieren.
In einfacher Form ist das eine Z-Diode, es gibt aber auch aktive Referenz Ics. Wie gesagt, für diese Anwendung, die ja trotz alledem eher digital verwendet wird, halte ich das eher nicht für nötig.