Willkommen im Loxone Community Forum. Um alle Funktionen nutzen und sehen zu können, registriere dich bitte zuerst. Dies gilt auch für das herunterladen von Dateien.
Ich habe mir nun erst mal die Zeit genommen um ordentliche Schaltpläne des 24K Dimmers zu erstellen, das macht die Firmwareentwicklung doch um einiges einfacher.
Habe zwar keinerlei Erfahrung mit Github ( bisher nur SVN verwendet ) werde die Arbeit an dem Projekt nun jedoch dort veröffentlichen.
Die frisch erstellten Schaltpläne vom Mainboard und vom CPU Board sind nun dort schon mal als PDF verfügbar:
ich habe momentan die 4Channel Platinen im Einsatz ist halt ohne Gehäuse ein bisserl blöd. Einzelne 4CHannel im HS Gehäuse werden mir zu breit
wie konfiguriert ihr diese Teile? beim 12er 4x3 RGB oder lassen die sich auch als 3x4 RGBW ansprechen - wenn nur eine Startadresse eingestellt wird sollte das ja auch mit RGBW funktionieren oder mache ich da einen Denkfehler?
@ledchab: Ja, das ist richtig. Das gilt übrigens für alle DMX Dimmer. Du kannst Die Kanäle beliebig aufteilen. Ab der eingestellten DMX Startadresse hast Du 12 Kanäle. Du könntest die Kanäle auch in RGB, W, W, RGBW, RGB aufteilen. Bei den Aktoren in LoxConfig trägst Du einfach die passende Startadresse ein und wählst den richtigen Typ aus.
Miniserver v14.5.12.7, 2x Ext., 2x Relay Ext., 2x Dimmer Ext., DMX Ext., 1-Wire Ext., Gira KNX Tastsensor 3 Komfort, Gira KNX Präsenzmelder, Fenster- und Türkontakte, Loxone Regen- und Windsensor, Gira Dual Q Rauchmelder vernetzt, 1x Relais-Modul Loxberry: SmartMeter, MS Backup, CamConnect, Weather4Lox Lüftung: Helios KWL EC 370W ET mit Modbus TCP - via Pico-C Heizung: Stiebel Eltron WPF 5 cool (Sole-Wasser WP) mit ISG, FB-Heizung mit 18 Kreisen, Erdsonde - via modbus/TCP Node-RED: IKEA Tradfri
Ich habe mir nun erst mal die Zeit genommen um ordentliche Schaltpläne des 24K Dimmers zu erstellen, das macht die Firmwareentwicklung doch um einiges einfacher.
Habe zwar keinerlei Erfahrung mit Github ( bisher nur SVN verwendet ) werde die Arbeit an dem Projekt nun jedoch dort veröffentlichen.
Die frisch erstellten Schaltpläne vom Mainboard und vom CPU Board sind nun dort schon mal als PDF verfügbar:
Statusmeldung: (mit Infos für alle technisch interessierte)
Ich komme mit der Software weiter, wenn auch nicht so schnell wie angenommen. Die Hardwareverschaltung des Hauptprozessors macht mir das ganze nicht gerade einfach.
Das Problem ist das straffe Timing.
DMX ansich hat eine kleine Besonderheit, man muss nicht nur den seriellen Datenstrom über den RX Pin entsprechend auswerte, sondern gleichzeitig auch alle Pegellängen auf der RX Leitung relativ genau messen.
Üblicherweise (wenn ich z.B. eine Hardware dafür selbst designen würde) würde man das RX Signal (DMX) nicht nur auf den Prozessorpin führen auf welchem der Serielport des Chips liegt, sondern auch noch auf eine oder zwei weitere Pins mit Capture Timer Einheit, womit man dann die Pegelzeiten genau und schnell per Hardwareunterstützung messen kann.
Leider ist das bei der Dimmer Hardware nicht gemacht worden (wohl aus Kostengründen, da hätte man sich ein etwas anderes System einfallen lassen müssen)
Die Folge sind nun, das ich die Pegelzeiten welche ich beurteilen muss und welche zwischen 8us ( 8 millionstel Sekunde) und 1s sind und dabei die schnellste Folge von Wechseln bei 4us liegen ! ohne spezielle Hardwareunterstützung messen muss.
Um das überhaupt hin zu bekommen, musste zumindest eine "pinchange" Interrupt verwenden, welcher also nebenher zum normalen seriellen Empfang läuft und eben gegebenfalls bei jedem einzelnen Bit (Wechsel auf der Leitung) einen Interrupt auslöst. (blödster Fall 10 Interrupts innerhalb eines empfangenen Bytes, bei z.b. Wert 0x55 mit Bitmuster 01010101 + Starbit + Stopbits)
Die Herausforderung war und ist nun die Interrupt Routine so schnell hin zu bekommen, das die mit Aufruf und Rücksprung unter ca. 2,5us bleibt.
Ursprünglich wollte ich mir das Leben ja einfach machen und Library Funktionen verwenden, das ging nun leider gerade bei den Interrupt Routinen gar nicht. Mit Librarys war die Interrupt Routine fast 10us lang. Da sieht man mal wie zeit-uneffektiv Librarys sein können und wie schnell man sein kann wenn man Register direkt anspricht :-) Alles in allem wird das vom Timing her gesehen, zumindest in den Interrupt Routinen, alles recht trickreich.
Ich muss dort nun schon auf Assembler Ebene Instructions zählen. :-(
Wenn das zeitkritische jedoch dann alles im Interrupt läuft, kann man im Hautprogramm relativ entspannt programmieren, auch wenn der Prozessor vor lauter Interrupts dort nur noch zu einem Bruchteil etwas ausführen können wird. Es sollte aber reichen. :-)
Eventuell werde ich die zeitkritischen Routinen jedoch in ein vorkompiliertes Binärfile packen müssen damit z.b. eine Änderung der Compilerversion oder irgendwelcher Einstellungen nicht das Timing "zerschießen" können, mal sehen.
Gerade das messen ist ja auch wirklich schwierig, da alleine schon das bedienen einer Portleitung im Interrupt, zum Timing debugen am Oszi, das Timing selbst schon zu stark beeinflussen.
Man könnte das ganze sicher auch etwas lockerer sehen und die Auswertung der Timings vereinfachen. Das einfachste wäre es statt die Pegelzeiten zu messen um den Start eines DMX Frames zu finden, einfach auf den Break Zustand der seriell Hardware (uart) zu prüfen.
Das würde sich dann aber nicht an die DMX Standards halten und somit Gefahr laufen, daß es Inkompatibilitäen gibt. (wer weis schon am welchem Master man in Zukunft den Dimmer betrieben möchte, muss ja nicht ewig eine Loxone DMX Extension sein :-) )
Auch bin ich für solche halbherzige Methoden nicht wirklich zu begeistern.
Ansonsten kann ich schon per sprintf auf das Display schreiben (alles was halt auf 7 Segment darstellbar ist) und auch die 8 PWMs laufen schon (bis 4KHz konfigurierbar).
Wenn das mit dem DMX Timing also fertig ist, gehts erst mal mit der "Prozessor - Prozessor Komunikation" weiter. Da muss ich mir was schönes einfallen lassen, damit man effektiver mehr Daten zu den Slave Prozessoren bekommt.
Ich möchte nämlich nicht wie bei der original Firmware die DMX Daten zu den einzelnen Prozessoren schicken, sondern die hoch aufgelösten und schon vorbereitet PWM Daten.
Die Slave Prozessoren sollen wirklich nur noch PWM generieren sonst nichts, sämtliches Daten bearbeiten wie Kurven, Limits .... soll wenn möglich alles im Hauptprozessor stattfinden.
Im übrigen:
Wer vor hat irgendwann die Firmware auf die Prozessoren zu bekommen, wird sich im einen entsprechenden Programmieradapter kaufen müssen. Ich verwende zwar (weil in der Firma eh vorhanden war) einen Rlink Adapter, habe mir nun aber auch testweise mal einen ST-Link China Kopie Adapter bei Amazon geshopt (ca. 7€), geht genausso gut.
Auch wird man noch en paar Pins brauchen (4er Pinleiste RM 2,54 einreihig), da auf er Prozessorplatine des Dimmers jeweils nur Lötlöcher in der Platine vorgesehen jedoch keine Pins bestückt sind.
Man muss die Pins auch nicht unbedingt einlöten, für wenige male Programmieren (oder nur einmal) würde es auch reichen die Pins auf die Kabel des Programieradapters zu steckne und diese dann verkantet in die Löcher zu halten, während der Programiervorgang abläuft.
So genug geschwafelt, Gute Nacht
Zuletzt geändert von Labmaster; 03.12.2017, 05:14.
Neuer Status:
Die Basisfunktionen sind nun alle Implementiert und laufen jetzt durchweg in den Interrupts.
(Ich musste noch teils ganz schön zeitoptimieren. Es gibt nun nur noch wenige Funktionen mit Parameter Übergaben, die meisten Daten sind nun global, das hat gerade mit den vielen unterschiedlichen Interrupts noch mal einiges an Zeitvorteil gebracht)
Die Master CPU empfängt DMX, steuert die eigenen PWM Ausgänge an, gibt Daten zu den beiden Slave CPU's weiter (welche sich Ihrerseits um Ihre PWMs kümmern) , die Master CPU fragt die Tasten ab, treibt das LED Display und macht nebenbei noch die ganze Berechnung der Gammakurven, sowie eine Dynamikbegrenzung welches eine flacker und flimmerfreier dimmen erlaubt, auch bei bescheidenen DMX Fadings :-)
Als PWM Frequenz kan man wählen zwischen 250Hz, 500Hz, 1KHz, sowie 2000KHz.
Die Infos für DMX Startkanal, PWM Frequenz, sowie welche Dimmkurve verwendet werden soll, kommen dauch schon aus dem EEprom.
Die harte Arbeit ist somit erledigt, auf dieser Basis kann man nun ganz bequem in der Mainloop, die Einstellmenüs, sowie die die Datenaufbereitung für unterschiedlichste Konfigurationen programmieren.
Für mich vorgesehen hätte ich mal folgendes.
Mode12/24 Normal:
Es wird ein Startkanal vorgegeben, ab diesem werden einfach 12 bzw. 24 Kanäle auf die Ausgänge der Dimmer gemappt, die Dynamik lässt sich im LED Menü für alle gemeinsam einstellen.
Mode12/24 Einzeldynamik:
Es wird ein Startkanal vorgegeben, ab diesem werden 12 bzw. 24 Kanäle auf die Ausgänge der Dimmer gemappt, wobei immer abwechselnd die Helligkeit und die Dynamik von den DMX Kanäle ausgewertet wird. Für 24 Dimmer Ausgänge benötigt man also 48 DMX Kanäle.
ModeDualwhite:
Es wird ein Startkanal vorgegeben, ab diesem werden 6 bzw. 12 Kanäle auf die Ausgänge der Dimmer gemappt, wobei immer abwechselnd ein Warmweiss und ein Kaltweis angeklemmt wird, auf der DMX Seite gibt es dann jeweils 2 Aufeinanderfolgende Kanäle wobei der erste jweils die Helligkeit, der zweite jweils den Weisswert (Warmweis/Kaltweis) angibt.
Das wären erst mal die Basics welche ich für mich vorsehen würde, eventuell noch eine Unterteilung des Dimmer in zwei Blöcke für welche die oben genannten Einstellungen unterschiedlich sein können. Der Phantasie sind da eigentlich keine Grenzen gesetzt.
Man darf aber nicht vergessen, daß man für die Konfig nur 4 Stellen mit 7 Segment Anzeigen zur Verfügung hat, da können aufwendigere Einstellung schnell recht unübersichtlich werden.
Mal wieder ein Update:
Es geht wegen anderer Arbeiten zwar aktuell etwas schleppend voran, jedoch mach ich immer mal wieder ein bischen weiter.
Mittlerweile sind die globalen Menü Funktionen für die Einstellmenüs soweit fertig, daß nur noch Datenstrukturen und die zugehörigen Darstellungs Funktionen angelegt werden müssen um Menüs und deren Übergängen untereinader zu programmieren.
Bezüglich Dimmer Modes möchte ich nun noch einen weiteren hinzufügen einen "ModeDimToWarm".
Bei "ModeDimToWarm" soll über je zwei Ausgänge welche mit Kalt und Warmweis beschaltet werden die Lichtfarbe (Kalt/Warm) je nach Dimmung angepasst werden.
Je heller desto mehr Kaltweiß, je dunkler desto mehr Warmweis Anteil.
Damit soll quasi eine Glühbirne emuliert werden können.
Ich denke so etwas könnte doch recht sinnvoll sein.
das wäre auf jeden fall Sinvoll
(diesen Modus hab ich bei meine UDP<>DMX ja auch ..)
weil Loxone für Tunable White/CCT/.. ja kein "userinterface" bietet
in Kombination mit der Loxone DMX Extension wäre auch noch der vorteil dass man sich einen Kanal Spart (kann ja "nur" 128)
denke aber dass man die ganzen "nice to have" auch erst später implementieren kann (16 bit mode usw. )
Ja, das mit dem DMX Kanäle sparen ist sicher ein Thema.
Eigentlich möchte ich jedoch eine uhrzeitabhängige Kalt/Warm Weiß Steuerung, deshalb ist DimToWarm zumindest bei mir nur für ein paar Spezialfälle interessant. Da man für die uhrzeitabhängig Steuerung jedoch jeweils 2 DMX Kanäle benötigt werde ich wohl nicht um eine zweite Loxone DMX Extension drum herum kommen, werden im Haus wohl über 70 Dimmgruppen (ca 150 Kalt/Warmweiß Spots in dreier oder vierergruppen) sowie noch einige RGBW Stripes werden.
Was meinst du mit 16bit Mode ? Dimmung über 2 DMX Kanäle ?
Ich zumindest, würde für sowas keinen Vorteil sehen.
Wer benötigt schon mehr wie ca. 50 bis 60 Dimmstufen, zumindest wenn diese sauber Gamma-Kurven korrigiert sind und intern über eine Dynamikbegrenzung im 16bit Raum gefiltert/geglättet werden ?
Hi Labmaster, ich verfolge diesen Thtead schon länger. Da ich kein prog guru bin wie du wollte ich mal eine Frage für Anfänger stellen:
Wenn dein Program draufgespielt wird wie kann es dann bedient werden? Über das DMX interface von Loxone oder gibt es eine Weboberfläche? Oder ganz was anderes?
ich selber habe bereits 3 24er von den DImmern im Einsatz und bin sehr zufrieden. Wen es interessiert, das Gehäuse der 24er passt nicht genau auf die Hutschiene, mit ein wenig abSchleifen der Einrastung geht es dann. Und wenn man das Gehäuse entfernt ist auf der Rückseite der 24er Version keine grosse Bahn wie oben auf der 12er Version zu finden.
Sämtliche Einstellungen müssen über die drei Taster und die LED Anzeige direkt am Dimmer gemacht werden. Eine andere Möglichkeit hab ich aktuell nicht vorgesehen.
Man könnte auch den Aufwand für RDM machen, müsste dann jedoch auch eine extrene spezielle Hardware/Software (Bedienterminal oder PC mit DMX Interface) Lösung nutzen um die Konfiguration dann über DMX machen zu können.
Da man die Einstellungen ja in der Regel nur einmal macht (bei der Installtion) und dann eventuell alle paar Jahre mal höchstens was kleineres verändert, sehe ich die direkte Bedienung am Gerät, gerade für den "Normalo", am einfachsten an.
Das die Gehäuse der Dimmer etwas streng auf der Hutschiene sitzen ist mir auch aufgefallen, die gehen echt streng auf die Hutschienen. Vor allem der Schieber zur Verriegelung lässt sich schwer betätigen, aber Nacharbeiten war nicht notwendig, nur etwas sanfte Kraft, weder beim 24 Kanal noch beim 12 Kanal. Habe 19 der Dimmer hier, bei allen 19 in etwas das selbe.
Zuletzt geändert von Labmaster; 26.02.2018, 15:53.
@ Labmaster: Ich konnte dir soweit folgen und weiß was das für Zeit kostet! Ganz großes Kino!! Rlink Adaper ist vorhanden Nur habe ich meinen Verteilerschrank noch nicht fertig...
Ich werde deine Software in jeden Fall gerne testen und benutzen.
Danke für deine Zeit und die Entwicklung der Software... ich würde diese auch testen sobald du de Freigabe gibts.
Bzgl. Programmieradapter hattest du in einem Post....
ST-Link China Kopie Adapter bei Amazon geshopt (ca. 7€)
erwähnt. Ist der brauchbar? Und hast du nen Link wo du den her hast?
Wir verarbeiten personenbezogene Daten über Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen, Werbung zu personalisieren und Websiteaktivitäten zu analysieren. Wir können bestimmte Informationen über unsere Nutzer mit unseren Werbe- und Analysepartnern teilen. Weitere Einzelheiten finden Sie in unserer Datenschutzrichtlinie.
Wenn Sie unten auf "Einverstanden" klicken, stimmen Sie unserer Datenschutzrichtlinie und unseren Datenverarbeitungs- und Cookie-Praktiken wie dort beschrieben zu. Sie erkennen außerdem an, dass dieses Forum möglicherweise außerhalb Ihres Landes gehostet wird und Sie der Erhebung, Speicherung und Verarbeitung Ihrer Daten in dem Land, in dem dieses Forum gehostet wird, zustimmen.
Kommentar