Inhalt:


Einführung Übersicht Hardware Software Fehlersuche


Einführung:


Aufbauend auf dem MiniDMX Projekt von Mathias Dzionsko ( [link] ) möchte ich hier meine MiniDMX Lösung vorstellen. Im folgenden geht es darum von einem PC aus DMX Geräte anzusprechen. Das DMX Protokoll ist ein serielles Protokoll mit 250kbit/s (siehe [link] ). Hier werden 512 DMX Kanäle (je 8bit also 255 Zustandsdaten) immer wieder als lange Bytekette auf die Leitung gesendet.
Die 250Kbit/s sind für den seriellen Port eines PCs einfach zu schnell, deswegen benötigt man einen Zwischenschritt. Eine Logik welche zur DMX Seite hin die 512 Kanäle so schnell wie möglich auf die Leitung bringt, und zur PC Seite hin mit nur 115kbit/s (RS232 Schnittstelle eines PCs) arbeitet
-> MiniDMX

Übersicht:


Zur PC Seite hin brauchen wir einen sog. Pegelumsetzer welcher die 12V/-12V auf der seriellen Leitung in ein TTL Signal von 0/5V wandelt.
Zur DMX Seite hin brauchen wir einen einen weiteren Pegelumsetzer welcher das TTL Signal auf den RS485 Bus (DMX) konvertiert.

Als letztes brauchen wir noch eine Logik welches die Daten vom PC auf die DMX Leitung umsetzt dafür nehmen wir einen programmierbaren Atmel 8bit Risc Prozessor
Im Gegensatz zum originalen Projekt benutze ich einen Tiny2313 anstatt eines 90S2312 (älteres Modell).
Hier sollte man alles zum Tiny2313 finden: [link] (alternativ [download])



Hardware:


-Platine
Verdrahtet man alles miteinander kommt folgender Schaltplan raus:

(wer das org. Projekt kennt, wird feststellen dass ich ein paar Dinge weggelassen habe: z.B. die Erweiterungsschnitstelle oder den ungenutzten Switch)
Bezeichnungen:
- VCC -> hier sollten überall 5V angeschlossen werden
- GND -> Masse
- SV2 -> DMX Ausgang
- SV3 -> Anschluss der RS232 Schnittstelle (PC)
- SV4 -> Programmierschnittstelle für den Tiny2313

Wer aufgepasst hat, vermisst SV1. Hier sollte die Spannungsversorgung ran.
Folgendes Bild veranschaulicht dies:


- Programmiergerät

Das Programmiergerät besteht aus einem Parallel Port Stecker, 4 Widerständen und Kabel. Es kann die Atmel Chips im eingebauten Zustand programmieren. Man schließt das Programmiergerät an SV4 (Programmierschnittstelle) an. (Wenn man mehrere Platinen baut, braucht man natürlich nur eine Platine mit Programmierschnittstelle und kann darin alle Tinys programmieren)



- Serieller Anschluss


Software:


Folgende Komponenten benötigt man für das Programmieren des Atmel Chips:

- Programmiersoftware
Sehr konfortabel ist PonyProg [link] (alternativ [download])
In PonyProg stellt man zuerst die Interface Schnittstelle ein (Setup - > Interface Setup)
- prallel
- Unter Windows "AVR ISP I/O"
- LPT Schnittstelle an der das Programmiergerät hängt


Danach noch schnell "Setup -> Callibration", hier sollte bei Erfolg nur die kurze Meldung "Callibration OK" angezeigt werden.

Um den richtigen Chip Typ zu programmieren wählt man im Hauptfenster "AVR micro" und unseren "Atiny2313" aus.

WICHTIG:
Der Tiny besitzt im Gegensatz zum alten 90S2313 einen internen Clock. Um den Tiny unseren externen Clock von 9,25Mhz nutzen zu lassen, muss man in PonyProg die "Security and Configuration Bits" auf externen Clock > 8Mhz setzen!
Aufpassen, hier kann man sich mit den falschen Bits vom Tiny aussperren! PonyProg ist hier etwas gewöhnungsbedürftig: Angewählte Kästchen bedeuten Programmiert (Bit=0) Nicht angewählte bedeuten unprogrammiert (Bit=1) (zumindest in meiner Version)

- Firmware
Die AVR Programme sind im Intel-Hex Format abgelegt. Zum laden in den Atmel öffent man die *.hex bzw *.s in PonyProg und klickt auf laden.
Auf der original Projekt Seite werden 2 kleine Testprogramme und die eigentliche Firmware V2.0 zum download angeboten.

- Blinktest: [link] (alternativ [download])
Hier sollten die angeschlossenen LEDs in Reihe aufleuchten. (Tip: sollte die Blinkgeschwindigkeit recht langsam sein, läuft der Tiny vielleicht noch nicht mit dem externen Clock (siehe oben))

- Uarttest: [link] (alternativ [download])
sendet alle über die serielle Schnittstelle empfangenen Daten an den PC zurück. Das kann gut mit einem Terminalprogramm überprüft werden. Einstellungen: Bits pro Sekunde: 115.200, Datenbits: 8, Parität: keine, Stoppbits: 1. (Tip: sollte der Test nicht funktionieren, mal mit niedrigeren Geschwindigkeiten testen... (siehe Fehlersuche))

- Firmware V2.0: [link] (alternativ [download])
Wenn die beiden Testprogramme erfolgreich abgeschlossen sind kann man die eigentliche Firmware laden.
Zum testen der Firmware gibts hier ein kleines Testprog: [download] (nur die dll [download])

WICHTIG:
Die Programme stammen alle vom original Projekt ab. Das heißt sie sind eigentlich für den alten Atmel 90S2312 compiliert.
Das ist nicht weiter tragisch, die Programme liefen alle ohne Änderung in meinem Tiny!
Ich konnte sie jedoch nicht für den Tiny neu compilieren (z.B. im AVR Studio von Atmel) denn es gibt Programmiertechnisch eigentlich ein paar Änderungen (z.B. beim Initialisieren der SUART Schnittstelle).

- Anwendersoftware
Momentan sind mir 2 freie Softwareprojekte zur DMX Steuerung bekannt, welche auch MiniDMX unterstützen:
FreeStylerDMX
DMXControl
Evtl. gibts auch noch mehr Softwareprojekte, evtl. kann man sogar das MiniDMX mit speziellen Treibern an kommerzieller DMX Steuer Software nutzen



Fehlersuche


Nachdem meine Schaltung am Anfang nicht so wollte wie geplant hat es mich viel Zeit gekostet den eigentlichen Fehler zu finden. Hier mal ein paar Möglichkeiten den Fehler einzugrenzen:

- Obwohl ich Spannung anlege leuchtet nicht eine LED, nicht mal die Power LED:
Da kann ich nur raten: noch mal alle Leiterbahnen checken... irgendwas stimmt nicht an der Verkabelung!

- Der UART Test funktioniert nicht, oder nur mit niedrigen Geschwindigkeiten
Hier kann es mehrere Möglichkeiten geben: Ist der Tiny auf den externen Clock eingestellt? (siehe PonyProg). Sind die Seriellen Leitungen richtig angeschlossen (auch die Blindleitungen? also die Leitungen welche nicht genutzt werden?). Zum testen kann man den Tiny aus seinem Sockel heben, und einfach Pin 2/3 brücken -> damit sollte R1OUT und T1IN des Max232 Chips gebrückt sein -> Der MAX Chip sendet alles was er empfängt so wie es ankommt wieder zurück... funktioniert dies auch nicht, ist die serielle Verbindung fehlerhaft oder der MAX mit seinen Kondensatoren ist falsch verkabelt / eingelötet oder kaputt.

- Obwohl der UART Test mit 115Kbit/sec funktioniert hat, bekommt mein DMX Program keine Verbindung dem Device
Ist die Firmware V2.0 richtig geladen worden? Man kann mal schauen ob an einer seriellen Konsole in regelmäßigen Abständen "Sonderzeichen" (=eigentlich Statusbits der Firmware) ankommen. Wenn nicht läuft die Firmware nicht richtig.


21.02.2007 Mark Wilkinson