Forum: Projekte & Code Sender für Funkfernsteuerung für Dorma-Torantriebe, z.B. Modell HS43


von Armin H. (armin_h)



Lesenswert?

Nachfolgend beschreibe ich den Selbstbau einer Funkfernsteuerung für 
Dorma-Torantriebe. Weil mir die Sender fürs Kaufen schlicht zu teuer 
waren, hab ich mich an den Selbstbau gewagt.

Allgemeines:
Der Sender sendet auf den bekannten 433 MHz. Er sendet immer dasselbe 
Protokoll, benutzt also keinen Rolling-Code o.ä. Der Sender hat 10 
Dip-Schalter, mit denen die Codierung eingestellt wird (damit der 
Empfänger reagiert, müssen die Schalterstellungen identisch sein, logo). 
Das Protokoll habe ich mit einem Standard 433 MHz-Empfänger und einem 
Selbstbau-Logic-Analyzer ausgelesen.

Codierung:
Das gesendete Protokoll ist für unterschiedliche Schalterstellungen im 
Dateianhang dargestellt. Darin gibt es zwei Zeiten: 475 us für kurze 
Pulse/Pausen sowie 950 us für lange Pulse/Pausen. Die ganz lange Pause 
zwischen den Wiederholungen dauert 16,7 ms (16.700 us).
Ist ein Dip-Schalter eingeschaltet (on), wird eine kurze Pause und ein 
langer Puls gesendet. Ist der Schalter ausgeschaltet, wird eine lange 
Pause und ein kurzer Puls gesendet. In der Darstellung habe ich das Bits 
genannt. Die Sende-Reihenfolge ist:
- Start, kurzer Puls
- Bit für Schalter 1
- Bit für Schalter 2
... usw. ...
- Bit für Schalter 8
- Bit für Schalter 10 (ja, wirklich!)
- unveränderlich ein Bit 0
- unveränderlich ein Bit 1
- Bit für Schalter 9
- Pause 16,7 ms/16.700 us
Danach beginnt das Protokoll wieder von vorn.

Schaltung:
Zentrales Bauteil ist ein ATmega8. Er läuft mit dem internen Oszillator 
auf 1 MHz, die Fuses sind im Auslieferungszustand. Der ATmega gibt das 
Sende-Protokoll über Port C5 aus. Über die Ports C3 und C4 wird der 
Sender (ein simples unintelligentes 433 MHz-Sendemodul) mit Strom 
versorgt. Über die Dip-Schalter wird die Codierung vorgegeben. Die 
Stromversorgung erfolgt durch zwei Knopfzellen (ich habe den Typ 2025 
verwendet, 2016 gehen auch; 2032 sind für den Halter zu dick), eine 
Diode in Durchlassrichtung bringt die Spannung auf verträgliche ca. 5V. 
Zwei 100nF Kerko und ein 10uF Elko (liegend unterm Controller) stützen 
die Spannung. Die Antenne ist ein Draht mit 16 Windungen auf einem 6 
mm-Bohrer, auf ca. 3 cm auseinandergezogen. Ein gestreckter 17 cm-Draht 
bringt sicher höhere Sendeleistung, war mir aber zu groß. HF-Kenner 
kriegen die Antenne sicher viel besser hin. Aufgebaut ist die Schaltung 
auf Lochraster. Bilder findet ihr in den Dateien.

Programm:
Das Programm ist mit der Demo-Version von BASOM erstellt. Der Quellcode 
ist hinterlegt.
Besonderheit: Die Dip-Schalter schalten nach Masse. Ein geschlossener 
Schalter ("on") bringt für den Controller daher den Wert 0 - bitte lasst 
euch davon nicht verwirren...
Die Fuses entsprechen dem Auslieferungszustand.

Funktion:
Durch einen Taster wird der Controller mit Strom versorgt. Er schaltet 
das Sendemodul ein und sendet das Protokoll. Nach 50 Sendungen (dauert 
ca. zwei Sekunden) schaltet er das Modul ab und legt sich schlafen. So 
werden die Batterien nicht geleert, wenn der Taster in der Tasche mal 
dauerhaft gedrückt ist.

Dateien:
1. Scans der Sendeprotokolle (erstellt mit Scanalogic - Ikalogic, Bilder 
von Hand zusammen-montiert)
2+3. Fotos vom Musteraufbau
4+5. Schaltplan und Bestückungsplan
6+7. Quellcode und Hex-Datei

[Edith sagt: Korrektur der Beschreibung. Ich war schon vor längerer Zeit 
auf 1 MHz umgestiegen, Fuses sind im Auslieferungszustand.]

: Bearbeitet durch User
von eProfi (Gast)


Lesenswert?

Wenn Du die beiden Pins für die Sender-Versorgung parallel schaltest, 
musst Du sie auch gleichzeitig ein- und ausschalten, sonst gibt es einen 
Kurzschluss! Oder die Brücke Pin26-27 entfernen.
Nach dem Sender-Einschalten würde ich noch ein wenig warten, da ja erst 
der C1 aufgeladen werden muss.

Ansonsten saubere Sache, Vielen Dank!
Man kann sich natürlich überlegen, ob man die Dipschalter braucht oder 
ob man den Code im Speicher ablegt, entweder gleich beim Compilieren 
oder z.B. über eine serielle Verbindung. Dann reicht nämlich ein kleiner 
ATtiny.

von Rolf B. (falker)


Lesenswert?

Zitat Weil mir die Sender fürs Kaufen schlicht zu teuer
waren, hab ich mich an den Selbstbau gewagt.

http://www.ebay.de/itm/Garagentor-Handsender-Fernbedienung-Universal-Funk-433-92MHz-/271568041325?pt=LH_DefaultDomain_77&hash=item3f3ab7756d

solong falker

von Armin H. (armin_h)


Lesenswert?

@eProfi:
Ich hab bewusst zwei Pins parallel benutzt, um ausreichend Strom zu 
liefern. So habe ich für 1/8 Mikrosekunde einen Kurzschluss, das hielt 
ich für vertretbar. Du hast aber natürlich Recht, sauberer wäre, die 
Pins gleichzeitig zu schalten. Sicherlich würde auch ein einzelner Pin 
ausreichend Strom liefern.
Das mit der Pause nach dem Einschalten ging mir jetzt auch durch den 
Kopf. Eine kleine Pause würde dem Sender mehr Gelegenheit geben, sich 
bereit zu machen.
Die Dip-Schalter habe ich ganz bewusst eingebaut, um die Bedienung 
möglichst original zu haben. Du hast aber völlig Recht, bei einem festen 
Code kannst Du den auch einfach einprogrammieren.

@Rolf:
Gutes Angebot. Erstens hab ich für meinen Krams aber nichtmal zwei Euro 
bezahlt (Bastelkiste ist gut gefüllt). Und zweitens - wahrscheinlich 
wichtiger - wollte ich einfach wissen, ob ich das nicht auch hinkriege. 
Dritter Vorteil wäre, wenn Dir Deine letzte Fernbedienung plötzlich 
verreckt und Du keinen Geber mehr fürs Programmieren hast.

von Armin H. (armin_h)


Angehängte Dateien:

Lesenswert?

Hier hab ich zwei kleine Änderungen vorgenommen, auf die eProfi 
hingewiesen hat:
Die Pins für die Sender-Versorgung schalte ich nun gleichzeitig ein. Das 
klappt nicht mit Aliasen, sieht daher weniger schön aus. So schließen 
sich die beiden Pins aber nicht mehr gegenseitig kurz.
Nach Einschalten des Senders warte ich einen kleinen Moment. So kann 
sich der Kondensator aufladen und sich der Sender bereitmachen.

Danke für die Tipps!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.