Moin zusammen,
ich habe folgenden Plan:
Ich will die Beleuchtung in meiner Einfahrt (ca. 3m Breit) neu machen mit einem Led streifen welcher an geht wenn ein Auto die Auffahrt hochkommt oder wenn man sie herunter fährt. Also brauche ich Sensoren welche messen ob ein Auto kommt/geht. Nach kurzer Recherche ich auf optische Lichtschranken gestoßen die mir im ersten Moment sinnvoll und ausreichend erscheinen
Jetzt ist die Frage ob ich bei dem Sensor im angehängten Foto das Signal mit einen Arduino auslesen kann und somit ein Relais welches das Licht schaltet ansteuern kann ?
Der Sensor ist ein Preiswertes Modell von Aliexpress was aber für mein Vorhaben denke ich mal ausreicht. Mein Wissen reicht nur leider nicht aus um zu verstehen was der Sensor misst bzw. wie er die Signale ausgibt.
Achja und ich hatte schon öfters
die Begriffe : NPN NC, NPN NO, PNP NO, PNP NC
gelesen kann mir die jemand erklären ich finde im Internet nicht wirklich eine Erklärung.
Erst mal die Abkürzungen:
Normalzustand (gilt auch für Schalter/Taster)
NC = normal closed (also ohne Betätigung/Ansteuerung geschlossen/durchgesteuert)
NO = normal open (also ohne Betätigung/Ansteuerung offen/nicht durchgesteuert)
Die Transistoren:
NPN schalten nach GND durch (auch bei N-Kanal-MOSFET)
PNP schalten nach +VCC des Gerätes durch (auch bei P-Kanal-MOSFET)
Diese Ausgangsschaltungen brauchen für den nicht durchgesteuerten Zustand einen Widerstand, der das andere Potential sicher stellt, also
NPN - einen PullUp Widerstand nach +Vcc des Microcontrollers
PNP - einen PullDown Widerstand nach GND
Für Dich am Besten ist NPN NO, d.h. der zieht den Eingang Deines Microcontrollers nach GND. Du kannst den internen PullUp benutzen. Außerdem bist Du unabhängig von der Betriebsspannung des Sensors.
Ich hoffe, das war nicht zuviel auf einmal.
Gruß Tommy
Edit: Als Reflektor würde ich retro-reflective nutzen.
Hallo Tommy vielen dank für die ausführliche gute Antwort. Dennoch reicht mein technisches Verständnis nicht ganz aus um alles zu verstehen.
Du hast gesagt die NPN Version wäre für mich am besten. Was bedeutet es wenn das NPN nach GND durchschaltet wird und brauche ich dieses P kanal mosfet ?
Woher weiß ich welchen Pull Down widerstand ich brauche ?
Ist es möglich ein Kabel des Sensors einfach an den Arduino anzuschließen ? kann der da einfach so dann ein Signal entziffern oder brauche ich da noch mehr ? bzw. wie müsste ich das dann anschließen ?
Sorry habe mich beim Schrieben vertan. Könntest du das vielleicht nochmal für doofe erklären ? ich hab die Basics des arduino verstanden aber da hört es dann auch schon auf.
Da die Versorgungsspannung des Sensors zwischen 10V und 30V sein soll ist der Fall PNP zu vermeiden.
Der NPN ( egal ob NO oder NC) zieht den Ausgang auf Masse wenn ein Objekt in den Strahlengang kommt (NO) bzw der Strahlengang nicht (mehr) unterbrochen ist (NC).
Da hast Du mal ein LOW signal.
Für das HIGH Signal mußt Du sorgen. Du kannst Die internen Pullupwiderstände aktivieren oder besser einen Widerstand zwischen Ausgang Sensor und Versorgungsspannung Arduino (meist 5V) schalten. Dafür würde ich einen 1kOhm Widerstand wählen, damit das ganze etwas Störunempfindlicher (als mit den hochohmigeren internen Puuluwiderstand) ist.
ich glaube es ist einfacher wenn ich erkläre wie ich es machen würde und dann dürft ihr mir gerne sagen ob das so funktioniert oder nicht.
Dieser Lasersensor (ich habe den NPN NO als retro-reflective bestellt, so wie Tommy es mir empfohlen hat), der hat ja 3 Kabel ( +VCC, GND und Signal denke ich mal ?) also +VCC und GND könnte ich ja dann vom Arduino ziehen weil ich den eh über VIN mit 12V betreiben wollte, geht das ?, der muss dann wie Tommy sagte mit einen Pull Up Widerstand (1kOhm Widerstand ?? ) nach +VCC angeschlossen werden ? Und das Signal Kabel kann ich dann an einen Digital Pin am Arduino anschließen ? Dann kann ich mir die Werte im seriellen Monitor wahrscheinlich anzeigen ?
bisschen viele Fragen auf einmal aber deswegen bin ich ja hier
Wenn ich ganz falsch bin bitte korrigieren, man merkt wahrscheinlich das ich nicht der hellste auf dem Gebiet bin
12V am Arduino, da kannst Du an 5V kaum noch etwas betreiben, weil dann der Spannungsregler wegen Überhitzung abschaltet. Besser 8-9V oder gleich mit 5V an 5V speisen.
Wieder falsch gelesen. Der muss mit einem PullUp genutzt werden. Nimm erst mal den internen mit INPUT_PULLUP, wenn die Leitung nicht zu lang ist.
Da hast Du dann ein LOW-Signal, wenn die Lichtschranke unterbrochen wird. Das musst Du auswerten.
Das halte ich für falsch und zerstörerisch für den Arduino. Der PullUp-Widerstand muss zwischen Dateneingang und Vcc des Arduino, also 5V oder 3,3V je nach Arduino.
Nach 12V würde die 12V an den Eingang des Arduino legen und diesen zerstören!
Sagte ich doch, "nicht dass es Missverständnisse gibt". Da habe auch ich mich unklar ausgedrückt: Vcc der Laserlichtschranke ist 12V.
Vcc des Arduino ist 5V bzw. evtl 3.3V
Der Pullup-Widerstand kommt zwischen das Vcc des Arduino und den Signalpin.
Evtl. reicht sogar pinMode(signal, INPUT_PULLUP); ohne den gefährlichen Widerstand.
Hallo nochmal!
Die Lichtschranke ist inzwischen angekommen aber wie erwartet kriege ich es nicht hin. Ich habe mal Fotos von einem Testaufbau gemacht der nur ein High/Low Signal anzeigen soll. Das Multimeter ist an +12v der Lichtschranke und am Signal Kabel der Lichtschranke angeschlossen. Die Lichtschranke siehe foto hat 3 kabel (Braun = + 10-30v, Blau= Masse und Schwarz = Signal)
Das Multimeter zeigt mir ein High/low signal an, wenn ich meine hand vor den Laser halte/wegnehme . Im Seriellen Monitor wird mir aber dauerhaft High angezeigt. Pullup wie empfohlen an.
Meine Vermutung ist jetzt, weil das Multimeter nicht bis ganz auf Null geht, dass eine Rest Spannung anliegt und deswegen der Serielle Monitor kein Low Signal anzeigt???