Mini-Dimmer v1.3 Bausatz - neue Version!

    Hallo,

    seit die Platinen hier angekommen sind ist nun schon wieder ne Weile her und ein Umzug war auch noch dazwischen.

    Ich habe nun alles fertig gestellt um die neue Version als Bausatz anbieten zu können, also Bilder gemacht, Anleitung erstellt und Tests gemacht. Leider konnte ich den anvisierten Preis nicht halten und musste das etwas anpassen. Gründe hierfür waren die geringe Stückzahl der Platinen (die Preise von v1.2 beruhten auf wesentlich höheren Platinenzahlen) und teils stark steigende Preise mancher Bauteile.
    die mit Feuersimulation gibt's dann wohl noch immer nicht (meine PN wurde nie beantwortet) :( ? Wäre wohl besser, die nicht schon Monate voraus anzukündigen, wenn sie denn nie fertig werden ;)
    Daran habe ich schon gearbeitet. Leider funktioniert der Code der Feuersimulation aus dem Eiwomisa irgendwie nicht so recht mit der 10-Bit PWM. Da werden Funktionen verwendet bei denen es bei der Verwendung mit WORDs Probleme gibt. Ich habe dann auch aufgehört daran weiter zu proggen weil die 2KB Speicher nicht ausgereicht hätten. Gleiches gilt für das geplante AQ Programm.
    Aber hier plane ich in Zukunft ein Upgrade vom ATTINY2313 auf den ATTINY4313, mit dem sollte dies dann möglich sein.

    Gruß, Benny.

    benkly schrieb:

    Leider funktioniert der Code der Feuersimulation aus dem Eiwomisa irgendwie nicht so recht mit der 10-Bit PWM. Da werden Funktionen verwendet bei denen es bei der Verwendung mit WORDs Probleme gibt.
    Hier nur als *Tipp*, bitte nicht wieder falsch auffassen:

    Du machst die Simulation ja in 8 Bit, rechnest also mit Bytes, richtig...? - das kannst Du ja so lassen, also die komplette Routine, den Output der Simulation (sind ja Werte von 0-255, ein Byte) kopierst Du in ein Word.

    Dort schiebst Du das Ganze dann um 2 Bit nach links (ggfs. Bascom-Hilfe konsultieren, weiß nicht, wie der Befehl heisst), machst also 10 Bit draus, halt mit gröberer Abstufung (0-1.024 in Schritten von 0, 4, 8, 12, ...).

    Und das kannst Du dann als Wert für die 10-Bit-PWM nehmen - es gibt dann zwar trotz 10 Bit PWM für das Feuer "nur" 256 Stufen, aber die reichen ja für ne Feuersimulation, wie beim Eiwomisa ja auch...
    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!
    Hm, das könnte ich mal versuchen. Soweit ich mich erinnern kann hat die Random-Funktion irgendwie Probleme gemacht wenn in der Random Vorgabe eine Word-Variable verwendet wurde. Irgendwie so ähnlich.

    Letztendlich hat es mit Quick-n-Dirty Codeanpassung dann halbwegs funktioniert, aber dann waren die 2KB voll. Ich wollte es da eigentlich noch ermöglichen das man, wie beim Eiwomisa auch, die Art des Flackerns einstellen kann, aber dafür wäre dann kein Platz mehr. Am liebsten wäre es mir wenn man Feuersimulation und Mini-Dimmer in einen Code bekommt, also vom Platz her. Mit dem ATTINY4313 wäre das eventuell drin. Ich bestell mir da mal welche und werds testen.

    Aber danke für den Tipp mit dem Bit-Schieben, manchmal kanns so einfach sein. Eventuell spart das schon einiges an Code.

    Gruß, Benny.

    PS.:
    Muss mich eh mal bald bei euch einklinken. Will den Eiwomisa Mini-DMX fähig machen und blick da nicht mehr durch auf was Ihr euch nun geeinigt habt.....

    benkly schrieb:

    Hm, das könnte ich mal versuchen. Soweit ich mich erinnern kann hat die Random-Funktion irgendwie Probleme gemacht wenn in der Random Vorgabe eine Word-Variable verwendet wurde. Irgendwie so ähnlich.
    Ja, das kann ich mir gut vorstellen, dass das z.B. intern eben auf 8 Bit festgelegt ist, also die Random-Funktion...

    benkly schrieb:

    Aber danke für den Tipp mit dem Bit-Schieben, manchmal kanns so einfach sein. Eventuell spart das schon einiges an Code.
    Ja - das 2 nach links schieben läuft auf's selbe raus, wie mit 4 Multiplizieren - da könntest Du mir ggfs. mal den Gefallen tun, einmal den Bitschiebe-Befehl hin schreiben, und einmal eben "mal 4" (also "Output = Fire * 4", oder wie auch immer die Variablen heissen) - und dann gucken, wie sich die Größe der .hex-Datei ändert

    würde mich nur so interessieren, ob der Bascom-Compiler so "schlau" ist, dass er dann bei "mal 4" eben einfach 2 Bits nach links schiebt, statt irgendne Multiplikations-Routine aufzurufen... (HW-Multiplikation hat der Tiny ja nicht) - das wäre ja dann für Bascom-Programmierer insg. ne interessante Info, also ob es sich ggfs. rentiert, bei bestimmten Werten (x 2, x4, x8, ...) Bits zu schieben statt ne Multiplikation hin zu schreiben...

    übrigens - falls es interessiert - machen das viele Chinesen-Controller beim Dimmen so: die schieben einfach die Werte nach rechts, das entspricht je Bit einer Division durch 2 - also wenn man runter dimmt, hat man eben 100%, 50%, 25%, 12,5%, usw. - das kommt dann auch dem nichtlinearen Helligkeitsempfinden entgegen, also obwohl die Werte quantitativ arg "springen", sind die Stufen gleich groß für das menschliche Auge...

    da spart man sich dann ein bisschen Programmierei, hat dafür aber nur 8 Dimmer-Stufen, wie eben viele dieser kleinen billigen Controller aus diesem Grund... ;)

    wegen Mini-DMX siehe hier - da haben der T64 und ich uns mal drauf geeinigt, wären sinnvolle Framegrößen - wenn Du nur ein DMX-Universe benutzt, also 512 Kanäle, dafür gibt's ja eh' beim originalen Mini-DMX schon den Blocksize-Code 0xA2...
    It's only light - but we like it!

    Da es sich in letzter Zeit häuft: Ich beantworte keine PNs mit Fragen, die sich auch im Forum beantworten lassen!
    Insbesondere solche von Mitgliedern mit 0 Beiträgen, die dann meist auch noch Sachen fragen, die bereits im entsprechenden Thread beantwortet wurden.
    Ich bin keine private Bastler-Hotline, technische Tipps etc. sollen möglichst vielen Lesern im Forum helfen!
    Hallo Benny,

    ich habe kürzlich zwei dieser Mini-Dimmer von Dir bezogen. Bin sehr zufrieden mit den kleinen Dingern. :)
    Da ich aber nur einen Kanal nutze, würde ich gerne die Tastenbelegung der FB ändern (mehr Kanal-1-Funktionen in zugeklapptem Zustand).
    Du hattest ja mal geschrieben, dass Du den Code offenlegen würdest.

    benkly schrieb:

    Der Code des Mini-Dimmer (standard Programm) wird offengelegt, somit kann jeder der auch selbst programmieren kann den Code anpassen oder eigene Funktionen hinzufügen. Jedoch muss ich erst den Code noch etwas säubern und ausdokumentieren damit dieser leicht nachvollzogen werden kann. Da bitte ich noch um ein paar Tage Geduld.

    Ist das inzwischen geschehen? Ich kann den nirgendwo finden. ?(
    ____________
    Gruß, Frank
    Hi,

    stimmt, die Veröffentlichung des Quellcodes für das Standard Programm ist eigentlich schon längst überfällig. Leider bin ich immer noch nicht dazu gekommen den Code sauber zu dokumentieren, aber jeder der Programmieren kann wird sich schon zurecht finden. Den Link zum Code gibts im 1. Beitrag.

    Gruß, Benny.
    Hi Benny,

    danke für das Offenlegen des Quellcodes, eine Frage habe ich dazu aber noch:
    Mir ist nicht ganz klar, was die "Sub_get_const_value" machen soll. Ich vermute, dass damit das Rauf- bzw. Runterdimmen je nach Ausgangszustand in unterschiedlich großen Schritten erfolgen soll, aber so ganz verstehe ich nicht, was Du da genau machst. Kannst Du das vielleicht etwas näher erläutern?
    ____________
    Gruß, Frank
    Hi,

    genau, in dieser SUB wird tatsächlich festgelegt in welchem Helligkeitsbereich welche Dimmgeschwindigkeit angewendet wird. Schauen wir uns den Code etwas genauer an:

    Quellcode

    1. Sub Sub_get_const_value
    2. Dimm_const(get_value) = 35 '20
    3. 'If Channel(get_value) < 512 Then Dimm_const(get_value) = 35
    4. If Channel(get_value) < 256 Then Dimm_const(get_value) = 70
    5. If Channel(get_value) < 128 Then Dimm_const(get_value) = 125
    6. If Channel(get_value) < 64 Then Dimm_const(get_value) = 250
    7. End Sub


    Zeile 1 und 7 dienen zum Aufruf bzw. Rücksprung der SUB.
    Zeile 3 vergessen wir mal, die ist ja ausgeklammert.

    In der 2. Zeile wird mit...

    Quellcode

    1. Dimm_const(get_value) = 35

    ...die Wartezeit festgelegt bis der nächste Dimmschritt ausgelöst wird. Umso kleiner dieser Wert ist umso schneller wird gedimmt. Also am Anfang der SUB wird die Dimmkonstante erstmal auf "schnell" eingestellt

    In der 4. bis 6. Zeile wird nun geprüft in welchem Helligkeitsbereich sich der entsprechende PWM Kanal befindet.

    Quellcode

    1. If Channel(get_value) < 256 Then Dimm_const(get_value) = 70
    2. If Channel(get_value) < 128 Then Dimm_const(get_value) = 125
    3. If Channel(get_value) < 64 Then Dimm_const(get_value) = 250

    Befindet sich die Helligkeit in einem Bereich unter 256 dann wird die Dimmkonstante von 35 auf 70 erhöht, somit dimmt es nur noch halb so schnell.
    Befindet sich die Helligkeit in einem Bereich unter 128 dann wird die Dimmkonstante von 70 auf 125 erhöht, dimmt somit nochmals langsamer.
    Befindet sich die Helligkeit in einem Bereich unter 64 dann wird die Dimmkonstante von 125 auf 250 erhöht, dimmt somit am langsamsten.


    Dies wurde so realisiert da bei diesem Dimmer mit einer 10-Bit PWM gearbeitet wird. Würde man mit der schnellsten Dimmkonstante hochdimmen dann würde der untere Dimmbereich zu schnell übersprungen werden. Würde man hingegen mit der langsamsten Dimmkonstante hochdimmen, dann würde es ewig dauern bis es ganz "hell" ist.

    Es gab bei der dynamischen Dimmung 2 Möglichkeiten. Entweder man macht die Dimmgeschwindigkeit von der Zeit abhängig die bereits gedimmt wird oder aber man macht es von der aktuellen Helligkeit bzw. Position der PWM abhängig. Ich habe das 2. verwendet weil ich das 1. bei einem reinen Dimmer unsinnig finde. Im oberen Bereich muss man nicht langsam Dimmen weil man da kaum einen Unterschied bemerkt, aber im unteren Bereich ist eine langsame Dimmung wichtig.

    Ich hoffe ich konnte mit der Erklärung des Codes weiterhelfen.

    Gruß, Benny.
    Hallo Benny,

    ja danke, das hatte ich mir ja auch schon so gedacht.

    Noch eine Nachfrage:
    Hast Du die Werte für die Dimmkonstanten durch "Ausprobieren" erhalten, oder basieren die auf irgendwelchen Berechnungen im Zusammenhang mit dem Timing (Schleifendurchläufe, RC5-Empfang etc.)? Ich möchte gerne die Original Bascom Routinen für den RC5 Empfang nutzen (Config RC5, GetRC5), da ergeben sich sicherlich Änderungen beim Timing.

    Im Bascom-Forum habe ich auch eine Assembler-Routine gefunden, die ein sehr weiches logarithmisches Dimmen ermöglichen soll.
    Möglicherweise werde ich auch die in "Dein" Programm integrieren.
    Wenn mir das gelingt, würde ich die Software dann gerne auch im Bascom Forum vorstellen, natürlich unter Nennung Deiner Urheberschaft. Wäre das ok?
    ____________
    Gruß, Frank
    Hallo,

    der Timer der die Variable hochzählt die mit "Dimm_const" verglichen wird, zählt ja immer gleich schnell. Die Werte die ich dann da vorgebe habe ich natürlich durch probieren ausgewählt. Es sollten Werte sein die eine langsame Dimmung im unteren Helligkeitsbereich erzeugen und eine schnelle Dimmung im oberen Helligkeitsbereich.

    Das mit der RC5 Funktion von Bascom würde ich mir gut überlegen, die Version die bei mir eingebaut ist ist da wesentlich sinnvoller. Für diese brauchst keinen Interrupt und trotzdem wird keine Übertragung "verpasst", sofern der restliche Code sinnvoll programmiert ist. Und es ist auch viel schneller, Get_RC5 ist scheiss langsam :sleeping:

    Gruß, Benny.
    Hallo zusammen,

    mir haben die mitgelieferten Klemmen nicht besonders gefallen. Darauf hin habe ich nun andere Klemmen getestet.

    Am besten gefällt mir die Bestückung mit diesen Klemmen:

    AST 025-2

    Neben diesen Klemmen habe ich auch noch einfache Schraubklemmen getestet. (Siehe Bild)

    Gerade bei der Verwendung von 0,75mm² Leitungen halte ich eine Veränderung der Klemme für sinnvoll.

    Gruß Florian
    Bilder
    • Minidimmer_Varianten.JPG

      141,88 kB, 600×250, 134 mal angesehen
    Gruß Flo
    ----------------------------
    Hallo,

    für den Mini-Dimmer ist eine neue Firmware verfügbar bzw. die nächsten werden nur noch mit der neuen Firmware ausgeliefert.

    Da ich hier nun einen ATTINY4313 einsetze gibt es ein paar neue Funktionen:

    - Die restlichen paar Pins am µC können nun auch dazu verwendet werden den Mini-Dimmer zu steuern bzw. dessen Kanäle zu dimmen.

    - Die Feuersimulation, wie Sie bereits im Eiwomisa Controller vorhanden ist, wurde in die Firmware mit integriert. Somit kann man in Verbindung mit RGB LEDs schöne gemütliche Feuereffekte erhalten. Hier gibt es ein kleines Demo-Video zur Feuersimulation:

    klytronic.de/index.php/bausaet…teuerung/mini-dimmer-v1-3

    Gruß, Benny.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „benkly“ ()