AC Dimmer für normal Birnen ohne Wifi

Begonnen von Heimbastler, 30 November 2020, 00:18:06

Vorheriges Thema - Nächstes Thema

Heimbastler

Hi,


wieder ein Dimmer. Ich weiß das es das schon oft gab. Aber hier noch mal zusammengefasst warum Dieser:
RobotDyn AC Dimmer Module
https://robotdyn.com/ac-light-dimmer-module-1-channel-3-3v-5v-logic-ac-50-60hz-220v-110v.html



  • Dimmer verbaut im Schaltschrank
  • Phasenanschnitt ermöglicht Betrieb mit den meisten"normalen dimbaren LED Birnen"  (sollte funktionieren laut meinen Recherchen, 2 Module sind unterwegs, Tests folgen)
  • Betrieb von Dimmer zu Leuchtmittel über 230V
  • Kann hoffentlich ein oder mehrere ,,Birnen" parallel dimmen
  • kostengünstig wenn alles funktioniert (1,2 oder 4 Dimmer / Modul)
  • Es gibt auch fertige Hutschienen Halter
    https://de.aliexpress.com/item/1005001712835760.html
  • Es gibt passend zu dem Triac Dimmer Modul entsprechende Codes um den Phasenanschnitt vernünftig mit den gängigsten uC zu generieren. (AC Frequenz wird über uC Interrupt und hardware Timer synchronisiert damit es nicht zum Flackern und frühzeitigen Tod der Birne kommt)
    https://github.com/RobotDynOfficial/RBDDimmer
  • sollte auch ohne aktiven Router funktionieren


Bitte nicht hier kommentieren wie man das anders machen kann:

  • Bestimmt geht es auch anders mit Funkmodulen oder WLAN. Das möchte ich bewusst vermeiden. Warum mit der Kuh ums Dorf und sinnlos rumfunken wenn Raspberry Pi und Dimmer 1/2m voneinander im Schrank sitzen?
  • Mit "Birnen" meine ich die Dinger die man in eine Fassung dreht. Hier geht es nicht um dimmbare LED Streifen oder spezielle LED Stromtreiber + Einzelgänger LED Elemente. Leider sind nun mal ALLE ,,Birnen" mit guten oder weniger guten Vorschaltgeräten bestückt. Selbst die 12 oder 24V LED Birnen aus dem Camper Bereich haben hier vorschaltgeräte und man bekommt leider nur mäßig Infos zu den Teilen. Ich beziehe mich hier auf die Birnen die man im Baumarkt kaufen kann und als dimmbar gekennzeichnet sind
  • Die völlig überteuerten Lösungen von Philips und Osram und Co. die sowieso alle nur per Funk zu bedienen sind lehne ich hier ab. Die leben schon so ganz gut davon das es keinen Standard zum Dimmen gibt obwohl Sie es besser könnten. Ich kann auch nicht so lange warten bis es vlt. Birnen gibt die einen zusätzlichen Bus hardware mäßig kontaktieren.
  • Mein Plan ist es einen Nano direkt per I2C mit einem Raspberry Pi zu verbinden (Level Shifter leider doch nötig) und dann 4 bis 8 unterschiedliche Lampen von Dimmer-Modulen am Nano zu steuern.
  • ESPHome scheint das schon implementiert zu haben. Hat aber auch mit dem Synchronisieren gekämpft.
    https://esphome.io/components/output/ac_dimmer.html


Mir ist aber noch nicht genau klar wie man eine geeignete DIM Variable hin und her kommuniziert. Mein erster Ansatz ist das Modul RPII2C und eine Firmata passend zu I2C?? Sehe ich das völlig falsch oder hat das Potential?
Eventuell feste DIM Werte um es nicht zu kompliziert zu machen wie beim FS20 Modul:
set <name> <value> [<time>]

where value is one of:
dim06% dim12% dim18% dim25% dim31% dim37% dim43% dim50%
dim56% dim62% dim68% dim75% dim81% dim87% dim93% dim100%

(USB möchte ich vermeiden weil alle Steckerplätze schon belegt sind)


VG
Alex





RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,

derHeimwerker

Moin, Hast du die Dinger schon am Laufen ? Sind die in Deutschland zugelassen?
Gruß TOm

die19

Hey Heimbastler,
da hast Du dir aber ein spannendes Projekt rausgesucht!
Es sieht so aus als ob es da schon unzählige Lösungen gibt, jedoch viele teure und auf Funk basierende...

Zur Zeit arbeite ich mich in das Themas SmartHome ein. Darunter soll unteranderem Licht Dimmer ein Baustein sein, daher werde ich dich aufmerksam "folgen".
Noch kann ich dazu nicht viel Input leisten.

PS: bin auch kein Freund von Funk, wirkt immer so nachgerüstet. quasi wie eine Spielerei  ::)

Heimbastler

Hey Leute...


lang ist es her gewesen. Wollte das natürlich früher bearbeiten aber bin jetzt erst wieder an dem Thema dran. Hier ein Update dazu:

  • Die Dimmer Module machen einen ordentlichen Eindruck. Die Leitungen zum uC sind galvanisch über Optokoppler getrennt. Die 220v AC (Böse Seite) sind markiert. Die entsprechenden Leitungen sind vollverzinnt. der mechanische Aufbau wirkt stabil. Ich kann aber keinen PE-Anschluss finden noch ein GS Prüfsiegel oder Sicherungen. Ich werde später im Schaltschrank mindestens den AC Eingang mit einer 5 oder 10A Sicherung anschliessen.
  • Ich habe 2 Module mit jeweils 2 Dimmer Ports an einen Nano angeschlossen und in einen Kasten verbaut. Obwohl der Kühlkörper nicht warm wurde (egal bei welchem %Wert) sorge ich noch mindestens für Luftlöcher um eine Ventilation zu ermöglichen.
  • Als "Birne" habe ich vorerst eine einfache AC Birne mit 53W im Einsatz. Leider bekomme ich im Lockdown schlecht die dimmbaren LED-Birnen aus dem Baumarkt. Später dazu noch mal eine Info wenn ich die in Betrieb genommen habe.
  • Zwischen Arduino Nano (5V logic Level wie Uno) und Raspberry Pi (3.3V Logic Level) habe ich einen 5v <-> 3.3V Level Shifter eingebaut. Sicher ist sicher im späteren Dauerbetrieb. GND + 5V + SCL + SDA macht zusammen 4 Leitungen. Über die 5V vom rpi versorge ich den Nano. Das läuft direkt über sein Netzteil dann
  • Über den Code von hier konnte ich die Lampe durch Eingabe von Werten zwischen 1 bis 100 über den seriellen Monitor der Arduino IDE dimmen :) https://github.com/RobotDynOfficial/RBDDimmer
  • Ich kann auch über ein Standard I2C bzw. Wire Code aus der IDE (Wire Slave Receiver) empfangene Dezimalwerte von FHEM im seriellen Monitor sehen :). 08 ist die Standard Adresse im Wire Slave Receive Code:
Wire.begin(8);  // join i2c bus with address #8
Dazu gehe ich ins Modul RPIIC und schreibe z.Bsp.
set myI2C writeBlock 08 0A


  • Nun muss ich erst mal den Code des Nano aus den beiden ino's verquicken. Muss ich einen Kollegen mal drüber gucken lassen. Ich habs nicht drauf :(
  • Später plane ich über ein readingsProxy device die I2C Werte zu senden. Benötige ich bestimmt auch Eure Hilfe  :o



Anbei Bilder zum Aufbau

Grüsse,
Alex
RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,

Heimbastler

Hi Leute...


wieder ein Update dazu:
1. Auf dem Arduino Nano Läuft das hier:
#include <Wire.h>
#include <RBDdimmer.h>//

//#define USE_SERIAL  SerialUSB //Serial for boards whith USB serial port
#define USE_SERIAL  Serial#include <RBDdimmer.h>//

//#define USE_SERIAL  SerialUSB //Serial for boards whith USB serial port
#define USE_SERIAL  Serial
#define outputPin  4
#define zerocross  2 // for boards with CHANGEBLE input pins (in my case Nano)


dimmerLamp dimmer(outputPin); //initialase port for dimmer for MEGA, Leonardo, UNO, Arduino M0, Arduino Zero
char DimmerStartValue = 50;
char DimmerValue;

void setup() {
 
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onReceive(receiveEvent); // register event
  USE_SERIAL.begin(9600);           // start serial for output
  dimmer.begin(NORMAL_MODE, ON); //dimmer initialisation: name.begin(MODE, STATE)
  dimmer.setPower(DimmerStartValue);
 
  USE_SERIAL.println("Dimmer Program is starting...");
}

void receiveEvent(int howMany) {
 
  DimmerValue = Wire.read();      // receive byte as a character
  dimmer.setPower(DimmerValue); // setPower(0-100%);
 
  Serial.println(DimmerValue);         // print the integer
}


void loop() {
 
  // nur zum schauen ob es läuft
  //USE_SERIAL.println("Dimmer value %d", DimmerValue);
  USE_SERIAL.print(dimmer.getPower());
  USE_SERIAL.println("%");
  delay(1000);
  // nur zum schauen ob es läuft
 
}



2. In FHEM habe ich ein <readingsProxy> device mit dem Namen <Ardu_dim>
defmod Ardu_dim readingsProxy myI2C:writeByte
attr Ardu_dim room Entwicklung
attr Ardu_dim setFn {($CMD eq "100")?"writeByte 08 64":"writeByte 08 ". sprintf("%.0f",(64/100 * $CMD))}
attr Ardu_dim setList state:slider,0,5,100
attr Ardu_dim webCmd state


Damit kann ich die "Birne" dimmen   :D


Die setFn habe ich aus diesem Tread gestohlen und angepasst:
https://forum.fhem.de/index.php?topic=89444.0

sowohl das funktioniert:
attr Ardu_dim setFn {($CMD eq "100")?"writeByte 08 64":"writeByte 08 ". sprintf("%.0f",(64/100 * $CMD))}

als auch das:
{ if ($CMD eq "100") {
fhem ("set $DEVICE writeByte 08 64");
} elsif ($CMD =~ /^[1-9]\d*$/) {
fhem ("set $DEVICE writeByte 08 " . $CMD);
} else {
fhem ("set $DEVICE writeByte 08 00");
}
return undef
}




Es werden zwar nicht genau die Werte von device <Ardu_dim> 1:1 übergeben weil ich die Umrechnung bestimmt stümperhaft umgesetzt habe (64/100  * $CMD) aber es reicht mir.
Frage: Weiss Jemand wo + wie ich später ein realistisch ansprechendes dimmen abstimmen kann? Über die Formel oder gibt es Attribute oder besser doch im Arduino Code?


Ich mache jetzt erst mal mit dem Arduino Code weiter um alle 4 Ausgänge ansteuern zu können.



VG
Alex
RasPi 3 mit FHEM V5.7 3x18B20 über 1Wire,  CUL868, 4xIT-Schalter, 6xELRO-Schalter, 6xReed-Kontakte, 2xMAX-Fensterkontakt, 3xMAX-Thermostate, 2xMAX-Wandthermostate
PID20, RPI_GPIO, HCW, Alarm, Pushover, GPIO4, MAX, ECMD,IT, AT,