ich wollte meiner Mutter eine Freude machen und ihr eine automatische Treppenbeleuchtung mit Bewegungserkennung schenken. Soweit hat das alles auch mit größeren und kleineren Hindernissen funktioniert. Allerdings stehe ich jetzt am Ende vor einem Rätsel bei dem ich eure Hilfe benötige.
Die Treppe hat dafür an jeder Stufe einen LED Streifen (WS2812) und hat einen Abstandssensor (Sharp GP2Y0A02YKOF 20-150cm), welcher die Beleuchtung auslösen soll. Diese geht dann nach einer gewissen Zeit wieder aus. Allerdings ist es so, dass nach einiger Zeit ohne Auslösung die ersten LEDs einzelne Stufen farbig leuchten. Dabei ist sowohl die Anzahl der LEDs, die Stufe als auch die Farbe "zufällig". Dieses Phänomen lässt sich auch durch das Ein- bzw. Ausschalten einer Neonröhre im Haus erzwingen.
Verwendete Hardware:
Elegoo Mega R3
10x LED-Streifen WS2812 mit jeweils 56 LEDs pro Streifen
Schaltplan:
Ich habe die Anzahl der LEDs reduziert und den zweiten Sensor ausgespart. Zudem wusste ich nicht wie der Abstandssensor aussehen müsste, daher habe ich ein IR-Sensor eingezeichnet. Da ich sowas noch nie erstellt habe, hoffe ich, dass dies in Summe so in Ordnung ist.
Vereinfachter Code: (Ich habe abereher das Gefühl, dass das Problem nicht aus dem Code kommt)
#include <FastLED.h>
// Wie viele LEDs gibt es?
#define LEDs_pro_Stufe 56
#define Anz_Stufen 2
CRGB leds[Anz_Stufen][LEDs_pro_Stufe];
//Allgemeine Parameter
#define Leuchtdauer 600
#define MaxHelligkeit 40 // Maximale Leuchtkraft wird beim Wert 255 erreicht
#define DistGrenzeUnten 190
int distUnten;
void setup()
{
Serial.begin(9600);
// Lege die Outputpins am Arduino fest.
FastLED.addLeds<NEOPIXEL, 40>(leds[ 0], LEDs_pro_Stufe);
FastLED.addLeds<NEOPIXEL, 41>(leds[ 1], LEDs_pro_Stufe);
}
void loop() {
distUnten = 0;
for(int idx = 0; idx < 10; idx++){
distUnten += analogRead(0);
}
distUnten /= 10;
if(distUnten > DistGrenzeUnten){
LEDChange(); //Erleuchten Hoch
}
delay(100);
}
void LEDChange() {
// Schleife für die Zustände. Im 1. Durchlauf wird die Treppe erleuchtet und im 2. Durchlauf wieder abgedunkelt
for (int schalter = 0; schalter < 2; schalter++)
{
// Schleife über die einzelnen Stufen
for (int stufe = 0; stufe < Anz_Stufen - 1; stufe++)
{
// Schleife über die LEDs der Stufe
for (int aktLed = 0; aktLed < LEDs_pro_Stufe; aktLed++)
{
if (schalter == 0){
leds[stufe][aktLed] = CRGB::Gold;
}
else{
leds[stufe][aktLed] = CRGB::Black;
}
leds[stufe][aktLed].fadeLightBy(MaxHelligkeit);
}
//Führe den neuen Zustand der LEDs aus
FastLED.show();
}
//Nachdem alles leuchtet, warte hier etwas bis das abdunkeln beginnt
if (schalter == 0) delay(Leuchtdauer / 10);
}
}
Hat hier jemand einen Vorschlag, was ich falsch gemacht habe oder was ich ausprobieren kann?
Kann ich vielleicht irgendwas ausmessen um den Fehler einzugrenzen?
Muss noch irgendwo ein Kondensator oder Wiederstand rein?
Schreib doch mal, was für einen Sensor du genau verwendest, bitte Link posten.
Ich vermute, deine Leitung zwischen Sensor und Controller ist zu lang und du fängst dir Störungen ein. Oder du nimmst den falschen Pin am Controller.
Ich verwende 2x den Sensor GP2Y0A02YKOF von Sharp (https://global.sharp/products/device/lineup/data/pdf/datasheet/gp2y0a02yk_e.pdf). Einer von den beiden ist tatsächlich relativ weit von dem Board entfernt - ich würde um die 5m schätzen. Allerdings wüsste ich nicht, wie ich die Distanz verringern soll, da die Positionen recht fix sind.
Aber um Missverständnisse zu vermeiden: Im Fehlverhalten leuchten nur einzelne LEDs. Es ist also nicht so, dass der Sensor durch eine Schwankung auslösen würde und die ganze Treppe leuchtet. Sprich der Code zum beleuchten der Treppe wird nicht ausgeführt.
Ok, das deutet auf Spannungsproblemen an den Leds hin.
Da entstehen vermutlich Spannungsschwankungen oder Einbrüche an den Leds.
Das kannst du prüfen oder verhindern, wenn du Elkos (1000yF) jeweils an die Anschlüsse der leds lötest.
Zum Sketch, ich sehe nicht, wo die Sensoren abgefragt werden.
Vielen vielen Dank! Dann werde ich mir die Woche mal Elkos holen und das ausporbieren.
Ich melde mich dann mit dem Ergebnis.
Den Sonsor frage ich 10x ab um addiere die Ergebnisse. Daher teile ich den Wert dann wieder durch 10 um einen Mittelwert zu erhalten, welcher möglichst Schwankungsarm ist.
Das könnte man auch per Hardware Tiefpass erledigen.
Macht aber keinen Unterschied bei deinem Problem.
Ja, ich sehe bei dir auch EM Einsteuungen.
Gerade die Neonröhren schnattern gerne in Verstärker und ihre Radios. Über die Luft und auch über Kabel.
Abhilfe?
Abgeschirmte Leitungen, vielleicht.
Und die genannten Stützkondensatoren.
evtl die weit verbreiteten Ferrit Kerne. Die gibts zum Kabel durchschieben, und auch als Klapp Kerne. Beispiel: Klapp-Ferritkern-Sortiment
Das ist ein Zeichen, daß die Schaltung störanfällig ist.
Loge mal die Sensorwerte mit der Seriellen Schnittstelle.
Wie dick sind die Kabel zwischen Netzteil und LED-Streifen.
Hast Du an der 230V Seite einen Netzfilter?
5V an Vin des Mega ist definitiv zu wenig. Vin braucht mindestens 7V. Du kannst 5V am 5V Pin anschließen. (Dann mußt Du aber zum Hochladen des Sketches einem USB Kabel verwenden wo die 5V Ader unterbrochen wurde.
GND mit Erde verbinden; Abgeschirmte Kabel für Signalverbindung Sensor verwenden.
Dein Wort in Gottes Ohr.
Bekommst Du mit dem geposteten Sketch das Problem?
Ist das noch ein alte Neonröhren-Starter für alte Neonröhren. ??
oder
Sind da schon Moderne LED-Neonröhren mit speziellen Modul drin.
Vielleicht liegt es auch am Starter (wenn alte Röhren). Hatte ein Freund von mir damals ein ähnliches Problem. Den Starter ausgetauschtt, und der Stress war weg. Allerdings hat die ALTE Neonröhre vorher geflackt wie doll bis sie endlich lief.
Die Datenblätter der WS281x nennen eine maximale Distanz (Kabellänge) von 5 bis 10m zwischen den Controllern.
Das gilt für Audio-signale und Brummschleifen (mehrere GND in verschiedenen Kabeln)
Wenn man die Abschirmung als GND Leitung für einen Sensor verwendet funktioniert das auch.
Grüße Uwe
Es ist kein fortlaufender Datenstrom. Wenn die WS2812b ihre Daten erhalten hat, leuchten ihre LEDs (RGB) solange in ihrer Helligkeit, bis neue Daten kommen.
Ein Reset erfolgt somit automatisch beim erneuten senden der Daten.
Das Problem besteht bei der Störung der Daten. Wenn da falsche ‘Bits‘ interpretiert werden, kommen komische Farben und Muster zustande.
Wenn die ersten Pixel flackernd leuchten, obwohl sie eigentlich dunkel sein sollten, kommt das oft davon, das die Datenleitung irgendwelche ‘Bits‘ empfängt, die gar nicht gesendet werden. Daher der Tipp mit der Schirmmung, um die Störung durch Funk zu minimieren.
Nicht ausgeschlossen ist, dass das China Netzteil den Elektrosmog herstellt, und sogar über die Versorgung verteilt.
Kann sein, aber ich halte immer noch den Starter der Neonröhre für den Schuldigen. Die alten Teile sind URALT-Technik. Heutzutage bekommt modernste Elektronik die Kriese wenn es zu "Netzhusten" kommt.
Musste deshalb in der Firma die wichtigsten PC alle mit USV ausstatten weil unser Versorger schon mal die Lampen flackern lies.
Dies kannst du im Eingangspost nachlesen.
Klar, dass diese Störungen auch das Problem auslösen, aber nicht nur dadurch.
Somit sind auch andere Maßnahmen nötig, wie z.B. die genannten Abschirmungen usw.
Ok, und würdest du dann den Motor soweit entstören, dass die hier besagten Leds nicht mehr beeinflusst werden ?
Genau und dazu gehören erstmal die genannten Dinge, die eine Beeinflussung verhindern, ohne dass Leuchtstoffröhren oder Staubsauger o.ä. eingeschaltet werden. Da diese ja nur on Top eine Beeinflussung erzeugen.
Hier war ja seit gestern noch richtig was los
Deswegen vorab nochmals ein dickes Dankeschön für euren ganzen Input!
Ich komme zwar leider frühestens Freitag dazu eure Tipps und Ratschläge umzusetzen, aber ich versuche schon mal auf alles hier einzugehen.
@combie: Über den Begriff Ferritkern bin ich bei meiner Suche auch schon mal gestolpert und bin da auf Anhieb nicht wirklich schlau draus geworden. Weder auf welche Kenngrößen man da ggf. achten muss, noch um welche Kabel ich das Teil packe. Aber dann setze ich mich nochmal dran und lese mich da ein. Jetzt weiß ich ja immerhin, dass ich es nicht "unnötig" lese.
@uwefed: Es müssten 1,5mm² Kabel sein. Kann das aber ehrlich gesagt nicht mehr mit Sicherheit sagen, da ich die vor über einem Jahr gekauft habe.
Ein Netzfilter? Das sagt mir nichts und ein kurzer Blick mit Google lässt mich ein recht deutliches "Nein" vermuten.
Das umstecken von Vin auf 5V wird dann meine erste Tat. Zum Hochladen eines neuen Sketches entferne ich ohnehin immer die Kabel zur Stromversorgung des Boards. Hatte ganz am Anfang mal gelesen, dass der Zeitgleiche Anschluss des USB-Kabel den ganzen Spaß grillen könnte.
Ja, auch mit dem Sketch bekomme ich die Probleme. Das aÁusdünnen des Codes und weitere Testläufe waren mein erster Ansatz, als ich noch nicht wusste, dass ich den Fehler mit der Neonröhre auch reproduzieren kann.
@pucki007: Muss ich ehrlich gesagt grade raten, da ich mich da auch nicht auskenne. Ich würde aber vermuten, dass es ein alter Starter ist.
@agmue: Das regelmäßige Senden an die LEDs, dass diese in schwarz "leuchten" sollen, ist aktuell die Übergangslösung. Allerdings fand ich das an sich sehr unbefriedigend. Hab das ganze Projekt für mich auch als Chance gesehen etwas über die Materie zu lernen. Ich war und bin halt nur erschrocken, wie viel es zu lernen gibt und wie wenig ich bisher weiß