DiSEqC control for dish antenna / Steuerung für Sat-Motoren
Orginal German text below Satellite dish positioning motors (Sat-R(M)otor) turn out to be extremely resistant due to their worm gear. After all, they are intended to hold the ‘dish’ in a fixed position.
Orginal German text below
Satellite dish positioning motors (Sat-R(M)otor) turn out to be extremely resistant due to their worm gear. After all, they are intended to hold the ‘dish’ in a fixed position. What could be better than to take advantage of these properties and use them to rotate and incline terrestrial antennas, surveillance cameras and the like under harsh conditions? The rotation angle of approximately 180 degrees is sufficient for most applications.
On the web you will find enough information about the DiSEqC control protocol. Basically, it is just a sequence of 22 kHz pulses in a specific order. The content of the information is based roughly on the following scheme: start byte, address byte, command byte, data byte each followed by a parity bit ('1'). The message begins with an approximately 15 ms lasting pause followed by approx 54 ms information and a renewed 15 ms pause. A bit is 1.5 ms long. A "zero" has a 1 ms, 22 kHz carrier and 0.5 ms pause. A logical "one" is the exact opposite.
With an Attiny2313 that is easy to implement in Bascom. The Sound command can be used to create the 22 kHz signal on any port. Sound Port x, the frequency and duration calculations can be found in the listing as a comment. The generation of the duration (1 ms, 0.5 ms, 15 ms) is done with small routines where the MCU will do nothing for the corresponding tone length except for producing the 22 kHz signal or not. The rest is easy. The bits of each byte are checked for ‘0’ and ‘1’ and then output.
Because we are only turning a satellite dish motor, the commands are limited. All numbers are in hexadecimal.
Turning to the East: start byte E0, address 31, command 68, data 00.
Turn to the West: as above, only command byte is 69.
Stop: E0, 31, 60 (no data byte).
Home: E0, 31, 6B, 00.
Between the respective bytes the parity bit (‘1’) is not forgotten.
The circuit is very simple and needs no explanation. The 15 ohms resistor is important. The recipient must ‘see’ a load a otherwise everything else breaks down and the motor will only jerk. All calculations are based on the use of a 4 MHz crystal!
Original German text
Motorsteuerung mittels Diseqc. Die Satelliten Positionierer (Sat-R(M)otor) erweisen sich aufgrund ihres Schneckengetriebes als äußerst Widerstandsfähig gegen jegliche von außen wirkende Kräfte. Schließlich sind sie dazu bestimmt, "Sat-Spiegel" in einer bestimmen Position zu halten. Was liegt näher als sich diese Eigenschaften zu Nutze zu machen um terrestrische Antennen, Überwachungskameras oder ähnliches unter rauen Bedingungen in der Natur im Azimut zum drehen zu bewegen. Der Drehwinkels von ca. 180 Grad ist für die meisten Anwendungen völlig ausreichend. Im Netz findet man ausreichend Informationen zum Aufbau des Diseqc-Telegramm. Im Prinzip stellt es eine Abfolge von 22 Khz Impulsen in einer bestimmten Reihenfolge dar. Der Inhalt der Information basiert grob gesehen auf folgenden Schema. Startbyte, Adressbyte, Befehlsbyte, Datenbyte jeweils gefolgt von einem Paritätsbit ("1"). Das Telegramm beginnt mit einer ca. 15ms dauernden Pause gefolgt von ca. 54ms Information sowie einer erneuten 15ms Pause. Ein Bit ist 1,5ms lang. Eine "Null" hat 1ms einen 22khz Träger und 0,5ms Pause. Eine logische "Eins" ist genau entgegengesetzt. Mit einem Attiny2313 ist das in Bascom einfach zu realisieren. Der Befehl Sound erzeugt an einem beliebigen Port die Ausgabe des 22 khz Signals. Sound Port x, Tonhöhe, Tonlänge Die Berechnung steht im Listing als Bemerkung. Die Erzeugung der Länge (1ms, 0,5ms, 15ms) erfolgt durch kleine Routinen in dem der Atmel aufgefordert wird für die entsprechende Tonlänge "nichts" zu machen außer den gewünschten Ton auszugeben oder zu schweigen. Der Rest ist einfach. Jedes Byte wird Bit-weise auf "0" und "1" geprüft und ausgegeben Da es nur um das Drehen eines Sat-Motors geht halten sich die Befehle in Grenzen. Alle Zahlen in hexadezimal. Drehen nach Ost : Startbyte E0, Adresse 31, Befehl 68, Daten 00 Drehen nach West: wie oben nur Befehl = 69 Stop : E0, 31, 60 (kein Datenbyte) Referenzfahrt : E0, 31, 6B, 00 Zwischen den jeweiligen Bytes das Paritätsbit ("1") nicht vergessen. Die Schaltung ist denkbar einfach und bedarf keiner Erklärung. Der 15 Ohm Widerstand ist ernst gemeint. Der Empfänger muss eine Last "sehen" sonst bricht alles zusammen und er Motor ruckt nur an. Alle Berechnungen basieren auf den Einsatz eines 4 Mhz Quarzes !!! dg1lka@aol.com
Discussie (4 opmerking(en))