Lichtschranke mit Arduino UNO

Themabewertung:
  • 1 Bewertung(en) - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
tesacrep
Administrator
*******

Beiträge: 500
Registriert seit: Dec 2013
Bewertung: 2
#1
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
const int sen = 0; // sensor an analogpin 0
int out = 13; // LED an pin 13 (Zeigt an ob Lichtscharanke betätigt ist)

void setup()
{
   pinMode(out, OUTPUT); // LED als outpup
}
void loop()
{
  int var = analogRead(sen);  // Wert vom Sensor einlesen
  float v = (var / 1023.0) * ref;  //Berechnen
  if (v > 4.70) {    // If schleife
      digitalWrite(out, LOW); // AN
  }
  else {
      digitalWrite(out, HIGH); // AUS
      delay (2000); // Durch eine delay bleibt die LED nach betätigung länger an.
 }
}

Oder als Download:
.ino   Lichtschranke.ino (Größe: 558 Bytes / Downloads: 857)

Bilder:
HINWEIS: Den Strahl des Lasers kann man natürlich sonst nicht sehen.
[Bild: attachment.php?aid=56]
Hier ist der Strahl gestört, bedeutet die LED an Pin 13 Leuchtet.
[Bild: attachment.php?aid=57]
Und hier der Aufbau von oben ohne unterbrechung.
[Bild: attachment.php?aid=58]


Angehängte Dateien Thumbnail(s)
           
(Dieser Beitrag wurde zuletzt bearbeitet: 08.07.2017, 14:20 von Unilein.)
Zitieren
tesacrep
Administrator
*******

Beiträge: 500
Registriert seit: Dec 2013
Bewertung: 2
#2
21.05.2014, 21:01

Ich wurde nach dem Schaltplan gefragt, ich hoffe dieser ist einigermasen ersichtlich:
[Bild: attachment.php?aid=142]


Angehängte Dateien Thumbnail(s)
   
Zitieren
theOnlyExpert
Junior Member
**

Beiträge: 1
Registriert seit: May 2014
Bewertung: 0
#3
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 Wink

Bsp.

Code:
if(analogRead(0) >= 500)
{
     //zustand1
}
else
{
    //zustand2
}

MfG

TheOnlyExpert
Zitieren
tesacrep
Administrator
*******

Beiträge: 500
Registriert seit: Dec 2013
Bewertung: 2
#4
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
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#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 Smile. Ich benötige gerade keine Lichtschranke. Ein paar Laserdioden habe ich aber dennoch herumliegen.

Übrigens ist ein Widerstand, der einen Pin auf Low hält also zwischen Pin und GND ein Pull-Down-Widerstand.
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
tesacrep
Administrator
*******

Beiträge: 500
Registriert seit: Dec 2013
Bewertung: 2
#6
23.05.2014, 09:52

Okay, ich gebe zu dass ich hätte mehr geben können. ConfusedConfused

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
Zitieren
Unilein
Fachgebiet Rauchentwicklung
*******

Beiträge: 728
Registriert seit: Apr 2014
Bewertung: 5
#7
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.
-----

Klopapier beidseitig verwenden und der Erfolg liegt auf der Hand!
Zitieren
tesacrep
Administrator
*******

Beiträge: 500
Registriert seit: Dec 2013
Bewertung: 2
#8
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.
Zitieren
Thomas123
Junior Member
**

Beiträge: 2
Registriert seit: Jun 2014
Bewertung: 0
#9
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 Smile

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!
Zitieren
praktikant1504
Junior Member
**

Beiträge: 1
Registriert seit: May 2014
Bewertung: 0
#10
27.06.2014, 10:32

Es hat funktioniert! Wir sind online mit unserer Smart Postbox: http://siio.de/smarter-briefkasten-stude...iefkasten/
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste