[Tutorial] DMX Empfang mit AVRs / Strobe Interface

  • ...habe ich auch gleich nach meinem Post gemacht... klappte auch auf Anhieb.


    Kurze Frage noch mal zur Frequenzumsetzung. Sehe ich das richtig, dass das über die Tabelle (die du mit Matlab erstellt hast) funktioniert? Steige da noch nicht ganz durch.... Wäre ja mla interessant auszuprobieren, ob man mit so einem Billigstrobe z.B. nen Blinder-Effekt (also Flashen mit mehr als 40 Hz) hinbekommen könnte. Viele Strobes wie z.B. das Superstrobe 2700 kommen ja ohne Ladekondensatoren aus, die nicht erst wieder gepuffert werden müssen... Nur mal so als Überlegung

  • Zur Tabelle:
    Wenn Matlab ein Problem ist, dürfte auch Excel dafür reichen...
    Jeder nimmt halt das Programm, das er da hat und mit dem er am Besten klar kommt :D


    Zum Blinding:
    Das dürfte bei Dir ein Problem werden, da vor dem Kondensator für die Blitzenergie ein Strombegrenzungswiderstand sitzen müsste.


    Ist dieser zu groß, läd der Elko nicht schnell genug.
    Ist dieser zu klein, wird er heiß, die Stromaufnahme wird ungleichförmiger und wenn Du Pech hast, bleibt sogar die Röhre ionisiert und das Strobe geht durch...
    Deswegen hatte man den Widerstand durch eine Drossel substitiert und konnte dann auch gleich den Ladeelko verkleinern.



    Was Du stattdessen machen kannst:
    Der Transceiver hat noch 7/8 der Port-Pins frei. Ich würde also noch auf 6ch erweitern (schöne Anzahl) und dann nicht nur den einen Pin setzen sondern direkt ein Byte mit dem entsprechenden Schritt in einem Pattern.
    Die Pattern kommen dann wieder als Tabelle in das Flash.


    also:

    Code
    const uint8_t PatTable[] PROGMEM = {0b00000001, 0b00000010, 0b0000100, 0b10001000};


    und:

    Code
    buf= pgm_read_byte(&PatTable[(DmxRxField[1]>>XY) +Step++]);
    if (buf &(1<<7)) step=0;
    PORTA= buf;


    Die Anzahl der Shifts ist abhängig von der Anzahl der Pattern und ersetzt eine Division. Wähle also die Zahl der Pattren geschickt :D

  • so, habe endlich die zeit gefunden das projekt aufzubauen. funktioniert super.


    allerdings würde ich gerne noch langsamer stroben.
    wie der untere und obere zählerwert berechnet werden kann ich nachvollziehen.


    für die zwischenwerte wäre ich jetzt hergegangen und hätte die differenz der beiden mix/max zählerwerte durch 199 geteilt und das ergebnis jeweils aufaddiert. diese gleichmässigen abstände würden aber anscheinend keine linearität ergeben. (um das zu verstehen, fehlen mir wohl NOCH ein paar kenntnisse der controllertechnik *g*)


    der tabelle scheint eine funktion zu grunde zu liegen. habs mal grafisch dargestellt, im unteren bereich ist der abstand zwischen den werten 10, in der mitte 35 und zwischen den beiden oberen werten 1794.



    wie ist henne auf die zwischenwerte gekommen?
    fliesst in die rechung der prescaler mit ein?


    gruß, schorsch


    EDIT: *an kopf klatsch* vorne steht ja die gleichung. hab die ganze zeit versucht, den zählerbereich zu teilen, dabei wird ja einfach der frequenzbereich gleichmässig geteilt und in die formel eingetragen. danke an helge für den gedankenanstoß!