Lichtschranke mit Arduino UNO
tesacrep Administrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beiträge: 504 Registriert seit: Dec 2013 Bewertung: 2 |
16.01.2014, 23:40
Hallo,
habe eben eine kleine Lichtschranke mit einem Laser und Photowiderstand gebaut. Einfaches Prinzip, einfache Umsetzung. Verwendung: Hatte mir überlegt eine Lichtschranke mit einem Arduino mit Ethernetshield zu bauen, um zu sehen ob Post im Briefkasten ist. Und auch sonst gibt es sicher viele Verwendungsmöglichkeiten. Komponenten: - Lasermodul - Steckbrett - Steckbrücken - Arduino Uno - Photowiderstand - 10K Ohm Widerstand Programierung: Für das lesen des Photowiederstands verwende ich einen Anlogen Eingang des Arduino. Den Rest erledigt eine IF/ELSE Schleife. Code: const float ref = 5.0; // Referenzspannung Oder als Download: ![]() Bilder: HINWEIS: Den Strahl des Lasers kann man natürlich sonst nicht sehen. Hier ist der Strahl gestört, bedeutet die LED an Pin 13 Leuchtet. Und hier der Aufbau von oben ohne unterbrechung.
(Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2017, 14:20 von Unilein.)
|
||
|
tesacrep Administrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beiträge: 504 Registriert seit: Dec 2013 Bewertung: 2 |
21.05.2014, 21:01
Ich wurde nach dem Schaltplan gefragt, ich hoffe dieser ist einigermasen ersichtlich:
|
||
|
theOnlyExpert Junior Member ![]() ![]() Beiträge: 1 Registriert seit: May 2014 Bewertung: 0 |
22.05.2014, 13:22
Naja also der Schaltplan ist nicht wirklich ersichtlich, allerdings sollte man noch anmerken, dass der 10kOhm Widerstand nur ein "PullUp" ist damit am Analogeingang des Arduinos überhaupt ein Wert eingelesen werden kann.
So gesehen is dein Sensor wie folgend beschaltet : 5V |---Pull Up 10k---| > A0 < |---Photoresistor / Phototransistor---| GND Die Werte können dann per analogRead(pin) ausgelesen werden und anschließen über eine if / else - Verzweigung verarbeitet werden ![]() Bsp. Code: if(analogRead(0) >= 500) MfG TheOnlyExpert |
||
|
tesacrep Administrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beiträge: 504 Registriert seit: Dec 2013 Bewertung: 2 |
22.05.2014, 14:46
Hallo erstmal theOnlyExpert,
Ich glaube du hast da was vertauscht: Zitat:5V |---Pull Up 10k---| > A0 < |---Photoresistor / Phototransistor---| GND Denn, das ganze ist so: GND |---Pull Up 10k---| > A0 < |---Photoresistor / Phototransistor---| 5V Zitat:Die Werte können dann per analogRead(pin) ausgelesen werden und anschließen über eine if / else - Verzweigung verarbeitet werden Wink Im obigen beispiel ist es ja auch eine IF/ELSE Verzweigung. Ich lasse nur gerne den wert davor noch in Volt umrechnen, damit komme ich besser zurecht. Mfg, tesacrep |
||
|
Unilein Fachgebiet Rauchentwicklung ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beiträge: 818 Registriert seit: Apr 2014 Bewertung: 5 |
22.05.2014, 16:44
Erstmal herzlich willkommen theOnlyExpert.
Ich muss zugeben, der Schaltplan ist wirklich schwer zu lesen. Du arbeitest doch auch mit Eagle tesacrep, oder nicht? Dort ist ein hübscher Plan ja keine große Sache. Mir persönlich fehlt hier die Orientierung. Wo ist GND und wo ist Vcc? Sei es drum ![]() Übrigens ist ein Widerstand, der einen Pin auf Low hält also zwischen Pin und GND ein Pull-Down-Widerstand.
-----
Sic mundus creatus est. |
||
|
tesacrep Administrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beiträge: 504 Registriert seit: Dec 2013 Bewertung: 2 |
23.05.2014, 09:52
Okay, ich gebe zu dass ich hätte mehr geben können.
![]() ![]() Ja ich benutze eagle, aber ich habe den Schaltplan auf dem Notebook erstellt (auch mit Eagle), aber ich habe keine Farben verwendet. + ist Rund - ist der Strich Ich habe versucht alle zu bezeichnen, aber bei dem + und - sind schlecht zu erkennen, das liegt daran das eagle immer ein kleines + hinzufügt, um zu zeigen wo die Schriftzeichen sind. Das ist natürlich ungünstig, ich werde versuchen das ganze in Zukunft besser dazustellen. Mfg, tesacrep |
||
|
Unilein Fachgebiet Rauchentwicklung ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beiträge: 818 Registriert seit: Apr 2014 Bewertung: 5 |
23.05.2014, 11:17
Du kannst doch die Symbole aus der Bibliothek benutzen. Die sind dort schon vordefiniert. Da musst Du selbst nix zeichnen.
-----
Sic mundus creatus est. |
||
|
tesacrep Administrator ![]() ![]() ![]() ![]() ![]() ![]() ![]() Beiträge: 504 Registriert seit: Dec 2013 Bewertung: 2 |
23.05.2014, 11:29
Ich weiß, das hätte ich machen sollen, aber hatte nicht viel zeit, un bin mit den Linien schneller, vieleicht tu ich ihn die nächsten Tage nochmal Updaten.
|
||
|
Thomas123 Junior Member ![]() ![]() Beiträge: 2 Registriert seit: Jun 2014 Bewertung: 0 |
11.06.2014, 16:50
Hallo,
super Anleitung, das kommt meinem Problem eigentlich recht nahe... Bin neu hier, hoffe jedoch das ihr mir weiterhelfen könnt! Wäre euch sehr dankbar ![]() Ich würde gerne mir einer Reflex-Lichtschranke & Arduino die Zeit eines sich rotierenden Teils messen. D.h. es soll die Zeit gemessen werden, in der das Lichtsignal uzurück geworfen wird. Wie realisiert man diese Zeitmessung im Code bzw. wie weiß der Timer wann er zu starten und zu stoppen hat !? Habe eben schon ein neues thema für mein Problem geöffnet, da hat ich diesen Thread jedoch nocht nicht gefunden... Schono mal danke! |
||
|
praktikant1504 Junior Member ![]() ![]() Beiträge: 1 Registriert seit: May 2014 Bewertung: 0 |
27.06.2014, 10:32
Es hat funktioniert! Wir sind online mit unserer Smart Postbox: http://siio.de/smarter-briefkasten-stude...iefkasten/
|
||
|
|
Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste