
In dem Raum, in dem das Kind spielt, habe ich eine zusätzliche Beleuchtung in Form eines LED-Streifens installiert. Anfangs hatte ich geplant, die Helligkeit des Bandes zu steuern. Dies ist praktisch, um die Nachtbeleuchtung einzustellen. Ich hatte bereits einen 220-V-Z-Wave-Dimmer, daher war es billiger, einen dimmbaren 12-V-Transformator für 1000r zu kaufen als einen speziellen Fibaro-RGBW-Controller für 5500r.
Diese Lösung funktioniert, aber es gibt Nachteile:
- Dimmverzögerung
- Sie können keine sehr niedrige Helligkeit einstellen.
Nach einem Jahr entschied ich mich, meinen Z-Wave LED-Controller, jedoch mit einem Encoder und einem Dimmergehäuse, für den Einbau in eine Steckdose herzustellen.
Der Schaltplan des Geräts ist elementar: Ein Encoder mit 3 Pins ist direkt mit Z-Uno verbunden: Pin A, Pin B und Taste. Mosfet wird mit dem PWM-Pin verbunden.

Materialien und Preise:
Die Z-Wave Z-Uno-Karte ist in der Arduino-Umgebung programmiert. Die Skizze zur Verarbeitung der Signale vom Encoder und zur Steuerung des Mosfets enthält nur 143 Codezeilen mit Kommentaren. Eine Skizze funktioniert wie folgt:
Alle 128 μs prüfen wir durch Unterbrechung des Timers, in welche Richtung das Rad gedreht wird, und schützen uns durch eine 4-fache Zustandsprüfung vor dem Abprallen. Überprüfen Sie in der Lupe, ob die Taste bei jedem Drücken gedrückt wird, schalten Sie das Band aus oder schalten Sie die vorherige Helligkeitsstufe ein. Die Helligkeit kann sowohl über den Encoder als auch über ein Telefon oder einen anderen Z-Wave-Schalter eingestellt werden.
LED-Steuercode für Rotationsdimmer#define PUSH_BUTTON 23 #define ENCODER_CHA_PIN 19 #define ENCODER_CHB_PIN 20 #define LEV_SHIFT 8 #define ENCODER_DEBONCE 4 #define STATE_IDLE 0xFF #define STATE_SKIP 0xFE ZUNO_SETUP_ISR_GPTIMER(gpt_handler); ZUNO_SETUP_CHANNELS(ZUNO_SWITCH_MULTILEVEL(getter, setter)); byte level = 0; byte last_reported_level = 0; byte g_state = STATE_IDLE; byte g_pins = 0; byte g_debounce_time = 0; byte last_push_button_state = HIGH; byte stored_level = 0; dword last_level_changed_time = 0; // Runs every 128 μs void gpt_handler() { byte pins = 0; pins = !digitalRead(ENCODER_CHA_PIN); if(!digitalRead(ENCODER_CHB_PIN)) pins |= 2; if(g_pins == pins) { // Is the state stable? g_debounce_time++; if(g_debounce_time>ENCODER_DEBONCE) { if(g_state == STATE_IDLE) { g_state = pins; } else if(g_state == STATE_SKIP) { if(pins == 0) g_state = 0; } else { if((g_state == 0 && pins == 1) || (g_state == 1 && pins == 3) || (g_state == 3 && pins == 2) || (g_state == 2 && pins == 0) ) { if (level < 39) { level++; } else if ((level + LEV_SHIFT) <= 255) { level += LEV_SHIFT; } else if ((level + LEV_SHIFT) > 255){ level = 255; } } else if((g_state == 0 && pins == 2) || (g_state == 2 && pins == 3) || (g_state == 3 && pins == 1) || (g_state == 1 && pins == 0) ) { if (level <= 39 && level !=0) { level--; } else if (level >= LEV_SHIFT) { level -= LEV_SHIFT; } else if (level < 0) { level = 0; } } if(g_state != pins) g_state = STATE_SKIP; } g_debounce_time = 0; } } else { g_debounce_time = 0; } g_pins = pins; } void setup() { Serial.begin(); pinMode(PUSH_BUTTON, INPUT_PULLUP); pinMode(ENCODER_CHA_PIN, INPUT); pinMode(ENCODER_CHB_PIN, INPUT_PULLUP); zunoGPTInit(ZUNO_GPT_SCALE1024|ZUNO_GPT_CYCLIC); // 32 MHz/1024 = 31.25 kHz (tick is 32 μs) zunoGPTSet(4); // 32 μs * 4 = 128 μs zunoGPTEnable(1); } void loop() { // Do we need to report the level? if(last_reported_level != level) { if (level > 0) { stored_level = level; } last_reported_level = level; analogWrite(PWM1, level); last_level_changed_time = millis(); Serial.print("Level: "); Serial.println(level); } // Button handler byte current_push_button_state = digitalRead(PUSH_BUTTON); if (current_push_button_state != last_push_button_state) { last_push_button_state = current_push_button_state; // if button pressed if (last_push_button_state == LOW) { // if LED turned ON, turn OFF if (level > 0) { analogWrite(PWM1, 0); level = 0; } // Restore last level else { analogWrite(PWM1, stored_level); level = stored_level; } } } // Send report if 2 seconds level not changed if (last_level_changed_time && millis() > last_level_changed_time + 2000) { last_level_changed_time = 0; zunoSendReport(1); } } void setter(byte value) { if (value > 99) { value = 99; } level = (long)value * 255 / 99; analogWrite(PWM1, level); } byte getter(void) { return last_reported_level * 99 / 255; }
Um die Helligkeit des Bandes mit dem Dimmer zu ändern, den ich früher verwendet habe, mussten Sie die Taste nach oben oder unten halten. Dies ist nicht sehr praktisch und es ist schwierig, die gewünschte Helligkeit einzustellen. Und der Dimmer sieht aus wie ein gewöhnlicher Schalter und nicht wie ein klassischer Dimmer mit einem Rad, an das viele gewöhnt sind.

Für den neuen Z-Wave LED-Controller habe ich das Dimmergehäuse modifiziert - ich habe ein Loch für den Encoder gebohrt und die Rahmenhalterung leicht geändert, um den Rahmen von einem anderen Schalter zu verwenden. Treten Sie nicht für das Design aus improvisierten Materialien. Sie können das fertige Gehäuse eines herkömmlichen Dimmers verwenden, um ästhetisch ansprechend auszusehen.

LUT entscheidet! Für die Herstellung einer einzelnen Instanz der Platine ist es besser als LUTA. Ich kenne die Technologie nicht, deshalb habe ich 2 Platinen hergestellt, die perfekt in den Fall des alten Dimmers passen. Unten befindet sich Z-Uno, ein Mosfet und ein Block zum Verbinden von Strom und Band. Der Mosfet ist für Spannungen bis 30 V ausgelegt, sodass das Band ohne Heizkörper als 12 V oder 24 V verwendet werden kann. Der Strom sollte 5 A nicht überschreiten.

Nur der Encoder befindet sich oben.

Nachdem wir ein Sandwich von den Platinen angeschlossen und in das Gehäuse gelegt haben, erhalten wir einen Z-Wave LED-Controller.

Derzeit ist der Z-Wave LED-Controller nicht in der Buchse installiert und liegt auf einem TV-Ständer. Für einige Zeit werde ich die Arbeit testen.

Aber jetzt hat der Komfort der Steuerung des LED-Streifens stark zugenommen. Wenn Sie über ein Rad oder einen Nachttischschalter steuern, ändert sich die Helligkeit sofort. In Z-Wave liegt die Dimmskala im Bereich von 0 bis 99, mit dem Rad können Sie die Helligkeitsstufe von 0 bis 255 auswählen. Wenn Sie 1 Teilung nach 0 drehen, leuchten die LEDs ein wenig auf, wecken nachts niemanden, helfen aber, nicht auf ein vergessenes zu treten LEGO Würfel auf dem Boden.
Es dauerte 15 Uhr, um das Gerät herzustellen, 1 Abend Firmware schreiben, 1 Abend LUT, 1 Abend mit einer Datei arbeiten.
AKTUALISIERT 21.01.2008
Es gibt verschiedene Ideen für die Fertigstellung des Designs, ich würde gerne Kommentare erhalten.
Idee 1. Auf alik werde ich einen fertigen schönen Dimmer mit einer Glasscheibe bestellen und die Füllung ersetzen, ich kann damit umgehen.
Idee 2. Verwenden Sie eine Drehung mit einem Display, das der Klimaregelung in einem Auto ähnelt. Die aktuelle Helligkeitsstufe wird angezeigt. Das Problem ist, dass ich die Wendung mit einem Display nicht getrennt von der Klimaregelung finden kann.
AKTUALISIERT 23.01.2008
In der Montageplatte montierte Schneider Electric Odace (80 r in der Elektroinstallation) eine LED-Steuerschaltung.

Der Odace-Rahmen 90 p ist (was nicht auf dem Foto zu sehen ist), aber der Twist wird nicht separat verkauft, aber ich hatte ihn auf Lager. Es ist kein zusätzliches Gehäuse geplant, das Gerät ist vollständig fertig.
