Hallo Theodor,
super! Genau mein Thema Ich mache Antriebstechnik Da kann ich ersma schööön den Fachidioten raushängen lassen:
Was du da vor hast ist eine sogenannte Lageregelung. Weil du willst ja das der Fader die Position (Lage) hält die dem anliegenden DMX-Wert entspricht.
Lageregelung ist dummerweise nicht so ganz ohne weiteres zu machen. Der Wikipedia-Artikel ganz unten ist schonmal hilfreich aber wirklich erklärt wird es eher im Buch (auch unten). Trotzdem will ich mal versuchen das wesentliche in meinen Worten wiederzugeben:
Hardware:
Hardwareseitig hast du sicherlich irgendetwas, um die abgegriffene Spannung zu messen nicht wahr? Und das geht dann an einen ADC aufm µC und irgendwie rechnest du das dann in einen Wert zwischen 0 und 255 um. Das ist ja dein Messsignal der Regelschleife
Und am Fader ist sicher ein kleiner DC-Motor der von einer H-Brücke angesteuert wird, damit man den Motor in beide Richtungen mit beliebiger Spannung speisen kann.
Lageregelkreis:
Man könnte jetzt versuchen mit diesem Spannungssignal direkt auf Lage zu regeln, indem man schlicht einen PID-Regler nimmt, die Differenz aus Soll- und Ist-Wert einfüttert und dann eben z.B. -12 bis +12V Spannung auf den Motor ausgibt. Kann funktionieren. Wird sehr leicht schwingen, wenig präzise und vor allem nicht so schnell ausregeln wie man das evtl. von professionellen Pulten kennt, wo man aufs Knöpfchen drückt und zack sind die Regler an Ort und Stelle, so schnell, dass man es fast net sieht. Das Problem bei dieser Art Regelung ist, dass man versucht mit Hilfe eines Lagesignals (Abgegriffene Spannung am Potis) den Strom am Motor zu Regeln (Spannung und Strom am Motor stehen ja logischerweise in Verbindung). Der Motorstrom bestimmt jedoch das Drehmoment des Motors also quasi die Beschleunigung. Die Beschleunigung ist die zweite Ableitung des Ortes (Lage) => spätestens hier sollten die Alarmglocken losgehen: Umgangssprachlich: "Stellgröße (Motorspannung) und Regelgröße (Potisspannung) sollten nicht durch eine oder gar mehrere Ableitungen/Integrale getrennt sein." Wie gesagt kann funktionieren, hat aber halt so seine Tücken, ist aber manchmal aufgrund begrenzter Ressourcen das einzig Mögliche. Man kann auch versuchen nicht einfach nur einen PID-Regler zu nehmen, sondern z.B. auch die Parameter adaptiv einstellen oder einen Fuzzy-Regler sind aber alles Tricks die zwar ihre Berechtigung haben aber naja... Einfacher wirds dadurch auch net.
Elektrische Maschinen sollten Momentengeregelt betrieben werden. Da man das Moment aber nur kostenintensiv messen kann, realisiert man eine Stromregelung. Strommessung ist ja recht einfach über einen Shunt-Widerstand möglich, der im einfachsten Fall unter die H-Brücke kommt, Messverstärker dran und Signal am ADC einlesen. Über die sog. Motorkonstante lässt sich aus dem Strom direkt das Drehmoment bestimmen. Misst man also den Strom hat man das Drehmoment -> Regelbar. PI-Regler reicht in der Regel, sonst schwingt es eh nur.
Der Momentenregler wird von einem Drehzahlregler überlagert, der wie der Name sagt, die Drehzahl des Motors regelt. Dazu ist natürlich wiederum eine Messung der Drehzahl nötig, die i.d.R. durch einen Drehgeber erfolgt in deinem Fall kann das aber auch die Ableitung der Potisspannung sein. Auch hier PI.
Und schließlich der überlagerte Lageregler, der die Lage oder Position des Motors regelt. Messsignal wäre hier deine Potisspannung. Auch hier reicht ein PI völlig aus.
Die Kunst an dieser Sache ist jetzt natürlich erstmal die drei Signale sauber zu messen und dann die drei Regler einzustellen.
Sinn des Ganzen ist erstens dieses Spiel mit "Ableitungen der Stellgröße" rauszukriegen und dein System aufzuteilen. Ab jetzt ist es nämlich "nur" noch eine Sache von Wie stelle ich meinen Regler ein. Wenn du das aber schaffst, ist das fast das schnellstmöglich was du machen kannst um auf Lage zu regeln.
Wenn nämlich der Lageregler eine Abweichung feststellt gibt er eine Solldrehzahl aus. Die natürlich nicht beliebig ist, sondern bei kleinen Abweichungen eben klein aber bei großen halt auch schon mal saftig sein kann. Der Momentenregler schaut, dass er das entsprechende Drehmoment erzeugt bekommt um auf diese Geschwindigkeit zu kommen. Also die Aufgaben sind verteilt und jeder macht das was er kann. Es wird dadurch z.B. auch möglich einen Fader festzuhalten. Weil egal wie stark du drückst. Der Drehzahlregler gibt Drehzahl 0 aus und der Momentenregler drückt halt entsprechend dagegen, um das zu halten. Natürlich alles im Rahmen seiner physikalischen Möglichkeiten.
Also zum Testen würde ich erstmal einen PI Regler bauen und direkt mit der Potisspannung die Motorspannung regeln. Vielleicht reicht es ja. Wenn es nicht reicht wirst du um die typische Lagereglerstruktur nicht drumrumkommen.
Software:
A und O jeder Regelung ist ja eine saubere, möglichst verzögerungsfreie Messung. Potis haben allerdings eine recht hohe Toleranz. Ich denke also, dass es nötig sein wird für jedes Potis den unteren und oberen Messwert einzulernen und irgendwo im µC abzulegen. Nur dann kannst du korrekt aus der Potisspannung auf ein DMX Signal zwischen 0 und 255 umrechnen. Verzögerungsfrei dürfte kein Problem sein allerdings würde ich in betracht ziehen das sogar absichtlich etwas mit einem Kondensator zu glätten, damit man weniger Rauschen reinkriegt und Regler nicht die ganze Zeit nervös zappelt.
Was jetzt konkret den Code angeht würde ich dazu raten einen möglichst einfachen PI Regler in C zu suchen und dann eben von Hand dein spezifischen ATtiny Assembler Code zu übersetzen.
Mein Rat:
Was ich in so einem Fall als Erstes tun würde wäre erstmal den guten alten Arduino rausholen, da alles anstöpseln, die bewährten Standardbibliotheken für z.B. PID Regler nehmen und einfach mal irgendwie zum laufen bringen. Und dann halt schrittweise zum Zielsystem vorarbeiten. Also z.B. wenn du merkst, dass dir ein einfacher Regler nicht gut genug regelt erstmal den Lageregelkreis aufm Arduino aufbauen, bevor man das im vergleichsweise komplizierten Assembler macht... Und dann mal den Regler selbst schreiben... usw.
Das war jetzt erstmal recht umfangreich und vielleicht noch zu wenig konkret... Aber frag ruhig nach
Lg
MWSysTech
https://de.wikipedia.org/wiki/Lageregelung
Elektrische Antriebe - Regelung von Antriebssystemen, Dierk Schröder, Springer Vieweg