Ich rede hier von 3 Programmteilen in einem Controller pro Moving Head.irgendwie hab ich das gefühl ich hab irgendwas mit PWM noch nicht so ganz verstanden.
Brauch ich jetzt die verschiedene Puls weite um zu dimmen oder um den kanal auszusuchen
1. Der PWM Erzeugung zur Dimmung deiner 3 LED, also 3 PWM's.
2. Dem PulsPhasenmodulator für deine 2 Servos.
3. Dem Empfänger für deine DMX Daten.
Und natürlich einer Hauptroutine die die empfangenen DMX Daten kanalbezogen in die richtigen Speicherstellen schreibt, damit die anderen Programmteile damit arbeiten können.
Nochmal detailierter:
Also die PWM brauchst Du um die Helligkeit deiner LED's zu dimmen.
Da der ATMEGA8 nur 2 PWM Kanäle hat - wie Du bereits festgestellt hast - kann man eine PWM Ansteuerung auch mit Software machen.
Wenn man sowas geschickt programmiert sind auch 8 oder noch mehr Kanäle möglich. Allerdings braucht natürlich ein Software PWM Rechenzeit vom Controller, die dann nicht für andere Anwendungen zur Verfügung steht.
Eine Möglichkeit wie man so was Proggen kann, hab ich Dir in dem langen vorherigen Post beschrieben. Es gibt auch noch wesentlich effektivere Methoden, aber ich finde diese ist am einfachsten zu verstehen.
Nun müssen ja auch noch deine Servos angesteuert werden. Dazu würd ich die beiden Comparematch Register mit den dazugehörigen Interrupts des Timer 1 benutzen.
Bei einem 0 Durchgang von TCNT1 werden die für die Servoimpulsanschlüsse benötigten Ports auf 1 geschaltet.
nach 1....2ms muss dann ein Comparematch Interrupt A bzw B kommen, der dann den Ausgang für Servo A bzw B wieder nach 0 schaltet.
Somit bekommst Du programmierbare Servoimpulslängen, die nur von den Werten des Comparematch Registers A bzw. B abhängen.
Du musst nur darauf achten, das die Comparematchwerte im 0 Durchgang (Timer1Overflow) aktualisiert werden, da es sonst zu Überholeffekten kommen kann. Die Laufzeit des kompletten Timers also das durchzähler aller Zählerstände von 0....65535 sollte 18 bis 25 ms betragen.
Das gesagte gilt für normale Modellbauservos.
Nun brauchst Du ja noch etwas, das deine DMX Daten empfängt. Dazu bietet sich der USART und ein entsprechendes Schnittstellen IC an.
Softwaresourcen dafür kann man nach ein bischen suchen im Internet auch finden.
Mein Vorschlag wäre also ein ATMEGA8 pro Moving Head. Also insgesamt 4.
Eine Lösung mit DMX 512 ist natürlich auch nur eine Möglichkeit.
Der Vorteil wäre halt, das Du deine Lichtanlage auch mit käuflichen Komponenten erweitern könntest.
Wenn Du eine andere Datenübertragungsart verwenden möchtest, kannst Du die PWM und den Servoimpulsgenerator trotzdem so proggen wie ich es beschrieben hab.
Im Stand allone Betrieb wirst Du natürlich schon ein paar Problemchen kriegen. Eventuell besorgst Du Dir aber das größere DMX Interface von DMX4All, da das auch Sequenzen vom PC aufzeichnen und ohne PC wiedergeben kann.
Du kannst Dir natürlich auch einen kleinen DMX Sender selber bauen, der dann verschiedene Sequenzen selbstständig abspielen kann.
Mir wäre allerdings der Entwicklungsaufwand für einen DMX Sender mit Speichermöglichkeit zu hoch.
Eine weitere Möglichkeit wäre noch die RFM Funk Module von Pollin für die Datenübertragung einzusetzen. Allerdings ist die Ansteuerung dieser Module nicht gerade lapidar, aber dafür sind sie günstig ( um die 5,-€ ).
Mit denen ließe sich eine normale asynchrone Datenübertragung realisieren.
In uralter Zeit (10..15Jahre) wurden Lampen auch mittels einer Steuerspannung von 0..10V gedimmt. Auch das wäre eine Möglichkeit deine Steuersignale für LED und Servos zu Übertragen. Blos 6 Drähte (5 + Masse) pro Moving Head sind aber auch eine ganze Menge.
Von RS232, SPI und I²C zur Datenübertragung würde ich in diesem Fall nicht so viel halten, da hier schnell mal 15..20m Kabelstrecke zusammenkommen und da dürften diese Bus Systeme Probleme kriegen.
Ich hoffe dieser Post konnte zur Klärung einiger Fragen und nicht noch zur weiteren Verwirrung beitragen.
Lesezeichen