LED treppenlicht

Hallo an alle,
Ich bin gerade neu hier und befasse mich gerade mit der Treppenlichtsteuerung für 15 Stufen.
Ich habe die Steuerung wie hier bei YouTube DIY: LED-LAUFLICHT ALS TREPPENBELEUCHTUNG mit Bewegungserkennung am Arduino - YouTube.
nachgebaut inkl dem fading mittels kondensatoren. Doch jetzt habe ich 2 Probleme ich evtl im Sketch geändert werden müssen.

  • Animation funktioniert garnicht es ist nur ein konstantes leichtes gleichmäßiges blinken aller Streifen zu erkennen nur wenn ich die Zeit weit über 700 ms Stelle funktioniert es. Diese ist natürlich viel zu langsam

Hallo Clemens,

du solltest es den potentiellen Helfern hier ein STück leichter machen und deinen Sketch hier posten.
Wenn der Sketch mehr als 9000 Zeichen hat dann als Attachment an ein Posting anhängen.

Im Sketch Tastenkombination Strg-T drücken für automatische Formatierung
dann Rechtsklick mit der Maus und die Option für Forum kopieren auswählen.
Das kopiert den gesamten Sketch in die Zwischenablage mitsamt Steuerbefehlen die den Code in eine Code-Section packen
Dann mit Strg-V in dein Posting einfügen.

Das Fading scheint über Kondensatoren realisiert zu sein. Dann musst du auch noch den Schaltplan dazu posten.
Das ganze Projekt heißt DIY Smarthome. Das "Y" steht für Yourself.
Man kann das folgendermaßen auf den Punkt bringen:
Entweder yourself lernst programmieren und dann kannste es Yourself machen
oder
Oder Yourself umsteigen auf ein Fertigprodukt.

Zeit oder Geld. Oder du fragst beim Erbauer nach @smarthomeyourself.de
vgs

Ich rate Dir wärmstens nicht die gleiche Verdrahtung wie der Autor des Videos zu verwenden. Ein Steckbrett bzw Kabel in die Steckleisten ist keine sichere und 100% vertrauingswürdige und wacklerfreie und zeitstabile Verdratung. Auch nicht wenn alles in einer Aufputzverteilerdose montiert ist.Das muß auf einer Platine gelötet werden!!.

Wieso hat er ein Steckbrett auf ein EthernetShield geklebt?

Abschalten durch den oberen Bewegungsmelder sehe ich gefährlich weil wenn 2 Personen die Treppe hinaufgehen dann steht die 2 Person plötzlich im Dunkeln kurz nachdem der erste oben angekommen ist.

In der Schriftlichen Beschreibung. Da ist nicht mit Magnetfeld am MOSFET. Auch sind die LED keine Induktive LAST. Hätte man eine Induktive Last müsste man die Diode (Freilaufdiode) antiparalell zur Last in Sperrrichtung ( Minuspol der Diode an Pluspol der Versorgungsspannung ) schalten. Zum Glück redet er selbst von Halbwissen. Das beschriebene Glimmen kommt eher von der Durchlaßspannung der DIODE. ICh rate überdies ein langsames Ausschalten des MOSFETS nicht durch ein langsames Absenken der Gatespannung sondern durch PWM zu realisieren. Bei einem MOSFET der eine Spannung schaltet aber von einer anderen Spannung gesteuert wird braucht es einen Widerstand zwischen Gate und Masse um ign sicher zu sperren falls der Arduino spannungsfrei ist. Zum Schutz des Arduino-/Schieberegisterausgangs braucht es einen 100bis 220 Ohm Widerstand zwischen Ausgang und Gate.

Zum Faden:
Ich finde es die falsche Herangehensweise das Faden der LED durch das ansteuern der MOSFET mittels einer langsam ansteigenden/abfallenden Spannung am Gate zu erzeugen. Das weil:
a) bei einer via Software gesteuerten Projekt eine Funktion in Hardware zu realisieren die man leicht via Software machen könnte.
b) den Mosfet lange Zeit im Übergangsbereich zwischen Leitend und Sperrend hält ud so eine ziemlich große Verlustleistung zusammenkommt die den MOSFET zerstören kann.

  • Animation funktioniert garnicht es ist nur ein konstantes leichtes gleichmäßiges blinken aller Streifen zu erkennen nur wenn ich die Zeit weit über 700 ms Stelle funktioniert es. Diese ist natürlich viel zu langsam

Natürlich funktionieren Animationen nicht da die Mosfet hardwaremäßig langsam ein bzw ausschalten. Da kannst Du sie nicht mal schnell schalten.

Mein Vorschlag nimm ein PWM modul zB mit dem PCA9685 und steuere durch dieses im Totem Pole Modus die MOSFET an.

Grüße Uwe

Hallo Uwe,
vielen Dank schonmal für die Info, ich denke es scheint gar nicht so einfach zu sein, ich werde lieber die kondensatoren wieder gegen die Diode tauschen und auf das fading verzichten.
Dann sollten die ledstreifen auch gleich stark leuchten beim ausschaltenund ich könnte die Animation auch realisieren ohne viel zu ändern.
Danke und schöne Grüße
Clemens

Bekomme den Sketch leider nicht hochgeladen

clemensmatze:
Bekomme den Sketch leider nicht hochgeladen

Ich sitze nicht neben Dir und sehe was passiert.
Ferndiagnose kann ich auch nicht.
Grüße Uwe

clemensmatze:
Bekomme den Sketch leider nicht hochgeladen

Hallo
das ist ganz einfach:
Im IDE unter dem Tab BEARBEITEN und FÜR FORUM KOPIEREN den Sketch im Forum Editor einfügen.
Bitte den Sketch vorher formatieren, kommentieren und/oder beschreibende Variablenamen verwenden und unnötige Leerzeilen löschen.

include <SPI.h>
//--------------------------------------
// Configuration Start
//--------------------------------------
// PIR-Data-Pins
#define PIR_TOP_PIN 3
#define PIR_BOTTOM_PIN 4
// All LEDs on Switch
#define ALL_ON_SWITCH_PIN 5
#define RELAIS_PIN 6
// Helligkeitssensor-Pin
int lightPin = 7;
// Schieberegister-Pins
int latchPin = 8;
int dataPin = 11;
int clockPin = 12;
// Allgemeine Einstellungen
//---------------------------------
// Gibt an, ob eine Animation erfolgen soll,
// solange die Treppe aktiv ist. (Während alle Stufen an sind)
boolean activeAnimation = true;
// Gibt ab, ob ein Lichtsensor angeschlossen ist und verwendet werden soll
boolean lightSensorActive = false;
// Gibt an, ob ein Dauer-An Schalter angeschlossen wurde
// Sollte hier ohne Schalter am Pin hier trotzdem true eingestellt sein,
// blinken die LEDs zufällig, da der INPUT-Pin ohne Pull-Down einen Zufallswert liefert!
boolean allOnSwitchActive = false;
// Gibt an, ob ein Relais verwendet werden soll, um das 12V Netzteil für die LEDs abzuschalten,
// wenn die Treppe deaktiviert ist. (Dann benötigt der Arduino zwingend eine unabhängige Stromquelle!)
boolean useRelaisForPowerSupply = false;
// Bewegungsmelder Einstellungen
//---------------------------------
// Gibt an, ob der Lichtsensor bei Bewegung HIGH oder LOW zurück gibt
// Wenn HIGH eine erkannte Bewegung bedeutet, muss der Wert auf true stehen, sonst auf false.
boolean pirSensorSignalInverted = false;
//PIR Timings
// Dauer der Initialisierung
int calibrationTime = 10;
// Wie viele ms nach der letzten erkannten Bewegung
// soll der Bewegungsmelder wieder auf LOW schalten
long unsigned int pirPause = 2000;
// PIR-Sensor-IDs (nur notwendig wenn sensorValueSendToServerActive=true)
long pirTopSensorId = 22637;
long pirBottomSensorId = 22638;
// Hellligkeitssensor Settings *optional
// (nur notwendig wenn lightSensorActive=true)
//-----------------------------------------
// Gibt an, ob der Lichtsensor bei voller Helligkeit den maximal oder minimalwert angibt
// Wenn der maximalwert (HIGH bei digital, 1023 bei analog) volle Helligkeit bedeutet,
// muss der Wert auf false stehen. Gibt der Sensor bei voller Helligkeit 0 zurueck muuss hier true gesetzt werden.
boolean lightSensorSignalInverted = true;
// Gibt an ob der Sensor digital oder analog betrieben wird
boolean lightSensorDigital = true;
// Der maximale Helligkeitswert unter dem die Beleuchtung automatisch aktiviert wird.
// bei analog: 0-1023 / bei digitalen immer 1
int lightValueMax = 300;
// Gibt an, wie viele ms Pause zwischen den Helligkeitsmessungen liegen soll
int lightRefreshTime = 5000;
// Geschwindigkeits-Einstellungen
//---------------------------------
// gibt an, wie lang die Verzögerung zwischen den einzelnen Stufen beim einschalten in ms ist
int switchOnDelayTimeInit = 100;
// gibt an, wie lang die Verzögerung zwischen den einzelnen Stufen beim ausschalten in ms ist
int switchOffDelayTimeInit = 500;
// gibt an, wie lang die Verzögerung zwischen den einzelnen Stufen während der Animation in ms ist
int animationDelayTime = 70;
//Maximale Wartezeit bis zur automatischen
//Abschaltung der LEDs falls der andere
//Bewegungsmelder nicht aktiviert wird.
int maxTimeLightsOn = 30000;
// Dauer in ms, die nach der Bewegungserkennung
// bis zur Abschaltung gewartet werden soll
int waitBeforeSwitchOff = 3000;
// Wartezeit in ms, die nach dem Abschalten der Beleuchtung
// gewartet werden soll, bevor die Sensoren wieder aktiviert werden.
int sleepAfterLightsOff = 5000;
//--------------------------------------
// Configuration End
//--------------------------------------

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter oder gehe in der IDE auf Bearbeiten - Für Forum kopieren und füge es hier ein).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Außerdem formatiere bitte den Code ordentlich (+T in der IDE hilft Dir dabei).

Gruß Tommy

ist leider alles zu groß um es zu senden :frowning:

sketch_jan07a.ino (18.5 KB)

Das ist aber ein völlig anderer Sketch, als der, den Du im Text hattest.
Welcher ist denn nun der richtige?

Gruß Tommy

Moin moin Tommy,
es ist dieser welcher als anhang ist.
Das andere ist der erste Teil davon.
Ich hoffe es geht so :wink:

hier nochmal ein link wie die LEDstreifen beim auschalten reagieren.
Wäre es möglich das die LEDstreifen die noch nicht an der Reihe sind mit dem ausschalten,
konstant ihre Helligkeit halten.

vielen dank für die hilfe an alle :slight_smile:

Sind in dem Video die Kondensatoren noch eingebaut oder nicht.
Wenn bei einem MOSFET die nach Datenblatt richtige Spannung an das Gate angelegt wird dann schaltet er voll durch.
Und dann leuchten die LED voll.

Wie werden denn die LED mit Strom versorgt?
vgs

Ja die kondensatoren habe ich wie im Bild verbaut und als Stromquelle den 12 Volt trafo mit 10 Ampere.
Die Verkabelung habe ich genau so wie im Video vorgenommen.
Danke für die Mühe

Hier nochmal ein Bild

Zweiter Versuch

Hier das Datenblatt für den mofset

Hallo Clemi,

wenn du unterhalb des Texteingabefensters auf "preview" klickst dann bekommt man zusätzlich eine Option manage attachments angezeigt. Da kann man dann Dateien direkt an das Posting anhängen.

Das Schaltungsbild zeigt, das da ein Riesenkondensator parallel zum Gate des MOS-FET eingebaut wurde. Ja das bewirkt eine gewisse Verzögerung des Durchschaltens des MOS-FET. Der MOS-FET hat beim durchschalten jedesmal eine Zeit lang einen hohen Widerstand und dann hat man da ordentlich Verlustleistung die den MOS-FET aufheizt.

Normalerweise werden MOS-FETS entweder voll gesperrt = MOS-FET bleibt kühl wegen es fließt gar kein Strom oder voll durchgeschaltet = MOS-FET bleibt kühl weil minimale Verlustleistung.

Dieser Kondensator ist eine "ich bin zu faul es mit PWM zu programmieren geht schnell"-Lösung.
Vermutlich bekommt man die Helligkeitsschwankungen nur dann weg wenn man den Kondensator wieder rauswirft und PWM programmiert. PWM steht für Pulsweiten-Modulation.

Das "Datenblatt" ist ja echt umständlich erzeugt worden. Auf dem Bildschirm war gar nichts zu lesen
und nachdem ich das Bild über Zwischenablage ins Pixel-Mal-Programm gepostet habe mit Müh und Not.

Einfach nach dem Typ IRLZ34N datasheet googeln und dann von der Fundstelle den Download-Link posten.

Die Gate-Threshold-voltage ist mit 1-2V in der Tat so niedrig dass das auch mit 3,3V microcontrollern gut funktioniert.

So und jetzt sind wir wieder an dem Punkt DIY do it yourself.
Super-einfach-schnell-Lösung Kondensator ausbauen und dann werden die LED halt sofort auf 100% Helligkeit geschaltet
oder yourself ein Stück weit programmieren lernen um ein frei programmierbares ansteigen der Helligkeit mit einzubauen.

Oder yourself etwas fertiges kaufen. Zeit investieren oder Geld investieren
vgs