Arduino -- Elektronik-Experimentierkasten -- Lectron Lehrsytem -- Jugendarbeit -- Elektronik -- Amateurfunk -- Notfunk -- Shop

Türschlossantrieb ABUS CFA 1000 mit IP-Adresse

Pimp my Türschloss

Mit dem Türschloßantrieb ABUS CFA 1000 kann man Türen nachträglich mit einem motorbetriebenen Schloss nachrüsten. Die Ansteuerungen erfolgt über eingebaute Tasten oder über eine Funkfernbedienung.

Der Türschloßantrieb ABUS CFA 1000 ist inzwischen durch das Nachfolgemodell CFA 3000 ersetzt. Die ältere Version ist aber hackerfreundlicher und auf dem Gebrauchtmarkt relativ günstig zu bekommen.

Vor Jahren hatte ich meine alte Haustüre mit einem CFA 1000 nachgerüstet. Die neue Haustüre hat ein eingebautes motorbetriebenes Schloss. Ich habe nun den dafür nicht mehr benötigten CFA 1000 für eine Zwischentür modifiziert.

Die Funkübertragung erfolgt bei diesem alten Modell auf 868,35 MHz noch unidirektional. Aus Sicherheitsgründen habe ich mich entschieden die Ansteuerung per Funk auf 868,35 MHz zu deaktivieren und den Türschlossantrieb über mein Heimnetz drahtgebunden anzusteuern.

 

Es gibt mehrere Möglichkeiten die dafür notwendige Schnittstelle nachzurüsten:

Modifizierung eines Funksenders

Das ist die einfachste Variante. Dabei werden die zwei Tasten ( "auf" und "zu" ) einer Funkfernbedienung z.B. mit Transistoren parallel angesteuert. Die Übertragung erfolgt dann von dieser modifizierten Fernbedienung über 868,35 MHz zum Türschloßantrieb. 

Vorteile: Keine Modifikation des eigentlichen Türschloßantriebes. Der Anschluss der Tasten in der Fernbedienung ist einfacher möglich. Bei Batteriebetrieb muss man den Türschlossantrieb an der Tür nicht verkabeln.

Interface Keymatic KM 300 RI

Das Interface Keymatic KM 300 RI ermöglicht den Anschluss über Schraubklemmen. Zusätzlich fungiert es als Ladegerät für die Akkus im Türschlossantrieb. Vermutlich wäre es auch schwierig das Interface Keymatic KM 300 RI jetzt noch zu kaufen. 

Direktanschluss an die Bedientasten im Türschloßantrieb

Da ich aber den Türschloßantrieb sowieso für die Deaktivierung des Funkmodus öffnen muss habe ich eine Lösung bei der ich meine Steuerung direkt an den Antrieb anschliesse gewählt.

Die zwei eingebaute Tasten ( "auf" und "zu" ) werden per Draht herausgeführt. Dabei kann auch die Stromversorgung von Batteriebetrieb auf Netzbetrieb gleich mit umgestellt werden.

 

Türschlossantrieb ABUS CFA 1000 mit geöffnetem Gehäuse:

 

 

Elektronik-Baugruppen:

Basisplatine

Empfängerplatine

Buchsenplatine

 

Modifikationen

Deaktivierung des Funkempfängers:

Die Verbindung ST6 von der Basis- zur Empfängerplatine wird unterbrochen. Deshalb wird die Empfängerplatine nicht mehr mit Spannung versorgt und der Empfänger ist deaktiviert. 

 

Anschlüsse für externe Ansteuerungen und Stromversorgung:

Die zwei Anschlüsse für die Tasten TA1 und TA2 kann man leider nur direkt "in" der Taste erreichen. Dazu muss man die Federn der Tasten ( "Knackfrösche") entfernen. Sobald man da jeweils ein Draht angelötet hat können diese Tasten später nicht mehr verwendet werden. 

GND  Masse 
+UB  Spannungsversorgung 4,5V (5V ev. auch möglich)
TA1  Taste 1 ("geschlossen")
TA2  Taste 2 ("offen")
LED  für Signalisierung (optional)
Sum  für akustische Signalisierung

Bei der Betätigung des Türschlosses über die eingebauten Tasten bzw. durch den daran angeschlossenen Arduino wird der Schliessvorgang anscheinend nicht über den LED-Ausgang signalisiert. 

Stattdessen werte ich das aktustische Signal am eingebauten Lautsprecher aus. Diese Rückmeldung wird vom Arduino ausgewertet. 

(ist noch nicht 100% getestet - Schaltung ist noch in Entwicklung)

 

  

Testschaltung für die Ansteuerung von einem Arduino UNO:

 

Die Digital-Pins 8 und 9 des Arduino UNO sind hier direkt mit den zwei Tasteneingängen des Türschlossantriebs verbunden. Ein Testprogramm steuert diese zwei Eingänge abwechselnd an. Der Motor des CFA 1000 dreht entsprechend dem jeweiligen "Tastendruck" nach rechts bzw. links und öffnet bzw. schliesst das Schloss. 

Die direkte Verbindung der Digitalausgänge des Arduino ist nicht empfehlenswert. Nach dem Abschalten des Arduinos traten an den Tasteneingänge undefinierbare Zustände auf und Türschlossantrieb reagierte unvorhergesehen. 

Zwischen dem Arduino und dem CFA 1000 muss eine Entkoppelungsstufe z.B. mit Transistoren eingefügt werden. 

einfaches Testprogramm ohne Rückmeldung: 

void setup() {

  Serial.begin(9600);
  pinMode( 8 , OUTPUT);
  pinMode( 9 , OUTPUT);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  Serial.println("start");
}

void schlossAuf( ) {
  Serial.println("auf");
  digitalWrite(8, LOW);
  delay(500);
  digitalWrite(8, HIGH);
}

void schlossZu( ) {
  Serial.println("zu");
  digitalWrite(9, LOW);
  delay(500);
  digitalWrite(9, HIGH);
}

void loop() {
  schlossAuf();
  delay( 10000 );
  schlossZu();
  delay( 10000 );
}

 

 

Als Zwischenschritt bei der Entwicklung läuft nun ein Arduino-Sketch mit dem man das Schloss über die serielle Schnittstelle ansteuern kann. Zusätzlich wird über eine kleine Schaltung die akustische Rückmeldung des Motorschlosses ausgewertet. 


/*************************************************************
 *
 * Türschlossantrieb ABUS CFA 1000 / Keymatic / Hometec
 *
 *  Testprogramm mit serieller Schnittstelle
 *
 *  13.01.17  JM
 *
 */

int flag = 1;
int pin = 0;
int status = 0;
int alterStatus = 0;

unsigned long dauer = 0;
unsigned long start;

#define TIMEOUT 10000

void setup() {
  Serial.begin(9600);

  pinMode( 8 , OUTPUT);                             // Taste "zu"
  pinMode( 9 , OUTPUT);                             // Taste "auf"
  digitalWrite(8, HIGH); 
  digitalWrite(9, HIGH);

  pinMode( 3, INPUT);                               // Summer
  digitalWrite( 3, HIGH);
 
  Serial.println("start");
}

void schlossAuf( ) {
  start = millis();
  Serial.println();   
  Serial.println("auf");
  digitalWrite(8, LOW);
  delay(500);
  digitalWrite(8, HIGH);
}

void schlossZu( ) {
  start = millis();
  Serial.println();   
  Serial.println("zu");
  digitalWrite(9, LOW);
  delay(500);         
  digitalWrite(9, HIGH);
}

void loop() {

  byte taste;

  if( status == 0 ) {                                 // Wartezustand
 
    if (Serial.available()) {                         // serielle Schnittstelle für Befehlsempfang
      taste = Serial.read();
 
      if( taste == 122 ) {
        schlossZu();
        status = 1;     
      } 
      if( taste == 97 ) {
        schlossAuf();
        status = 10;     
      }
    }
  }
  else                                                // Schliessvorgang läuft
  {
    dauer = millis() - start;                         // seit der Befehlsausführung verstrichene Zeit
    if( dauer > TIMEOUT )                             // dauert es zu lange?
      status = 99;
  }
 
  switch ( status ) {
    case 0:
            start = millis(); 
            break;
    case 5:                                           // erfolgreich zugeschlossen
            Serial.print( dauer );
            Serial.print( " " );
            status = 0;
            Serial.print( "ist zu" );
            break;
    case 70:                                          // erfolgreich aufgeschlossen
            Serial.print( dauer );
            Serial.print( " " );
            status = 0;
            Serial.print( "ist offen" );
            break;
    case 99:                                          // Timeout :-8
            Serial.print( "Timeout :-(" );     
            status = 0;
            break;
  }
 
  pin = !digitalRead(3);
 
  if( flag != pin ) {                                 // Schaltflanken
      if( flag == 1 ) {                               // => fallende Flanke
        switch ( status ) {                           // fallend
          case 2:                                   
                  status = 3;                         // zu - kurzer Piep aus
                  break; 
          case 4:
                  status = 5;                         // zu - langer Piep aus - erfolgreich zugeschlossen
                  break;
          case 20:
                  status = 30;                        // auf - kurzer Piep aus
                  break;
          case 40:
                  status = 50;                        // auf - langer Piep 1 aus
                  break;
          case 60:
                  status = 70;                        // auf - langer Piep 2 aus - erfolgreich aufgeschlossen
                  break;
        }
      }
      else                                            // => aufsteigende Flanke
      {
        switch ( status ) {
          case 1:                                     
                  status = 2;                         // zu - kurzer Piep ein
                  break;
          case 3:
                  status = 4;                         // zu - langer Piep ein
                  break;
          case 10:
                  status = 20;                        // auf - kurzer Piep ein
                  break;
          case 30:
                  status = 40;                        // auf - langer Piep 1 ein
                  break;
          case 50:
                  status = 60;                        // auf - langer Piep 2 ein
                  break;
        }
      }
    }
  flag = pin;
 
  if( alterStatus != status ) {
    Serial.print( " " );
    Serial.print( status );
    Serial.print( " " );
    alterStatus = status;
  }
 
  delay( 10 );
}

 

 

 

 

= Artikel ist noch in Arbeit - Teile davon sind noch nicht getestet - vor Nachbau bitte noch etwas abwarten =  

...

06.07.2017

Dipl.-Ing. (FH) Jürgen Mayer, DL8MA - Weinstadt-Grossheppach
Impressum

zurück zu www.DL8MA.de