Hallo zusammen!
Nach langer Zeit der "Projekte-Abstinenz" möchte ich euch nun meine letzte kleine Entwicklung vorstellen.
Da vor einiger Zeit die Garagentorsteuerung meiner Eltern den Geist aufgegeben hatte...
und ich die gesamte Mechanik nicht gleich mit auswechseln wollte....
habe ich mir selber eine Steuerung dafür gebaut.
Die wichtigsten Eckdaten waren schnell zusammen gestellt:
-die neue Platine muss in das vorhandene Gehäuse passen
-der Trafo soll weiter verwendet werden
-das Funksignal wird durch eine externe Quelle bereit gestellt.
Desweiteren war da noch:
-1x Schlüsseltaster außen
-2x Tortaster innen
-externe Garagenbeleuchtung soll mitgesteuert werden
Das Steuerung sollte außerdem folgendes berücksichtigen:
-Endschalter sind Öffner und müssen immer Vorrang haben !
-Eintastbedienung (Auf-Stopp-Zu)
-getrennte Beleuchtungsverzögerungen nach Auf-Fahrt bzw. Zu-Fahrt
-sofortige Beleuchtungsabschaltung bei manuellem Stopp
Damit waren die Vorgaben notiert und als nächstes folgte der Schaltplan:
Nach dem Schaltplan folgte nun das Programm.
Da die Endschalter grundsätzlich Vorrang vor jeder anderen Funktion haben müssen, werden diese mittels Timer0 überwacht.
Durch den Timer0 wird alle 16ms geprüft, ob sich der Zustand der Endschalter geändert hat.
Für die Beleuchtung gibt es zwei verschiedene Verzögerungszeiten.
Nach dem Erreichen der End-Position für die Auf-Fahrt, bleibt die Beleuchtung noch ca. 60 Sekunden eingeschaltet.
Beim Erreichen der End-Position für die Zu-Fahrt, wird die Beleuchtung allerdings schon nach ca. 10 Sekunden ausgeschaltet.
Da der Schlüssenschalter und der Tortaster über einige Meter JY(ST)Y-Leitung an der Steuerung hängen, werden diese beiden Taster sicherheitshalber über Optokoppler mit dem ATTiny24 verbunden.
So ist zumindest sichergestellt, dass bei einem Fehler an der Leitung diese Störung nicht direkt zum Controller weitergeleitet werden.
Der Rest des Programmablaufes steht ihr im Programmcode, welcher auch ausreichend kommentiert sein sollte.
CodeBox bascom
Anschließend konnte nun das Platinenlayout gezeichnet werden:
Tja und danach folgte das Herstellen der Platine:
Ein paar Stunden später war die Platine dann auch bestückt und kontrolliert
Die fertige Steuerung arbeitet fehlerfrei und wartet nun nur noch auf die Montage im alten Gehäuse des Dormatic-Torantriebes auf ihren Einsatz.
Fragen und Kommentare dazu sind natürlich immer willkommen.
Grüße,
Cassio
Nach langer Zeit der "Projekte-Abstinenz" möchte ich euch nun meine letzte kleine Entwicklung vorstellen.
Da vor einiger Zeit die Garagentorsteuerung meiner Eltern den Geist aufgegeben hatte...
und ich die gesamte Mechanik nicht gleich mit auswechseln wollte....
habe ich mir selber eine Steuerung dafür gebaut.
Die wichtigsten Eckdaten waren schnell zusammen gestellt:
-die neue Platine muss in das vorhandene Gehäuse passen
-der Trafo soll weiter verwendet werden
-das Funksignal wird durch eine externe Quelle bereit gestellt.
Desweiteren war da noch:
-1x Schlüsseltaster außen
-2x Tortaster innen
-externe Garagenbeleuchtung soll mitgesteuert werden
Das Steuerung sollte außerdem folgendes berücksichtigen:
-Endschalter sind Öffner und müssen immer Vorrang haben !
-Eintastbedienung (Auf-Stopp-Zu)
-getrennte Beleuchtungsverzögerungen nach Auf-Fahrt bzw. Zu-Fahrt
-sofortige Beleuchtungsabschaltung bei manuellem Stopp
Damit waren die Vorgaben notiert und als nächstes folgte der Schaltplan:
Nach dem Schaltplan folgte nun das Programm.
Da die Endschalter grundsätzlich Vorrang vor jeder anderen Funktion haben müssen, werden diese mittels Timer0 überwacht.
Durch den Timer0 wird alle 16ms geprüft, ob sich der Zustand der Endschalter geändert hat.
Für die Beleuchtung gibt es zwei verschiedene Verzögerungszeiten.
Nach dem Erreichen der End-Position für die Auf-Fahrt, bleibt die Beleuchtung noch ca. 60 Sekunden eingeschaltet.
Beim Erreichen der End-Position für die Zu-Fahrt, wird die Beleuchtung allerdings schon nach ca. 10 Sekunden ausgeschaltet.
Da der Schlüssenschalter und der Tortaster über einige Meter JY(ST)Y-Leitung an der Steuerung hängen, werden diese beiden Taster sicherheitshalber über Optokoppler mit dem ATTiny24 verbunden.
So ist zumindest sichergestellt, dass bei einem Fehler an der Leitung diese Störung nicht direkt zum Controller weitergeleitet werden.
Der Rest des Programmablaufes steht ihr im Programmcode, welcher auch ausreichend kommentiert sein sollte.
CodeBox bascom
' Garagentorsteuerung mit ATTiny24v
' Zwei Handtaster via Optokoppler 4N25
' Zwei Endschalter, als Öffner
' Relaisausgänge für Motor und Beleuchtung
$regfile = "attiny24.dat"
$crystal = 1000000
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
Ddra = &B00_11_1111 '1 ist Ausgang 0 ist Eingang
Porta = &B11_00_0000 'auf Hi oder Low setzen
Ddrb = &B0000 '1 ist Ausgang 0 ist Eingang
Portb = &B1111 'auf Hi oder Low setzen
Config Timer0 = Timer , Prescale = 64 'Timer0 zur Endschaltererfassung
On Timer0 Endschalter
Enable Timer0
Enable Interrupts
' Aliasnamen einstellen:
Taster_out Alias Pinb.0 'Schlüsseltaster außen
Taster_in Alias Pinb.1 'Tortaster innen
Funk Alias Pinb.2 'Funksignal (fallende Flanke)
End_zu Alias Pina.6 'Endschalter Tor zu
End_auf Alias Pina.7 'Endschalter Tor auf
Relais_licht Alias Porta.0
Relais_zu Alias Porta.1
Relais_auf Alias Porta.2
' Variablen
Dim Fahrt As Byte '0=Stopp, 1=Auf, 2=Stopp, 3=Zu
Dim Vz_zu As Bit 'Verzögerung Licht nach Zulauf
Dim Vz_auf As Bit 'Verzögerung Licht nach Auffahrt
Dim Vz As Word 'Verzögerungswert für Licht
' #############################################
' Erster Start
' #############################################
Waitms 250
Relais_licht = 1
Waitms 500
Relais_licht = 0
Waitms 250
Relais_licht = 1
Waitms 500
Relais_licht = 0
Relais_zu = 0
Relais_auf = 0
' #############################################
' Arbeitsschleife
' #############################################
Do
If Taster_out = 0 Then
Incr Fahrt
Gosub Aktion
Bitwait Taster_out , Set
Elseif Taster_in = 0 Then
Incr Fahrt
Gosub Aktion
Bitwait Taster_in , Set
Elseif Funk = 0 Then
Incr Fahrt
Gosub Aktion
Bitwait Funk , Set
Else
End If
If Vz_zu = 1 Then
Fahrt = 0
Gosub Licht
Elseif Vz_auf = 1 Then
Fahrt = 2
Gosub Licht
Else
End If
Waitms 100
Loop
' #############################################
' Subroutinen
' ############################################# Aktion
Aktion:
If Fahrt > 3 Then Fahrt = 0
If Vz_zu = 1 And Fahrt = 3 Then Fahrt = 1
If Vz_auf = 1 And Fahrt = 1 Then Fahrt = 3
Select Case Fahrt
Case 0 : Gosub Stopp
Case 1 : Gosub Auf
Case 2 : Gosub Stopp
Case 3 : Gosub Zu
End Select
Return
' ############################################# Stopp
Stopp:
Relais_zu = 0
Relais_auf = 0
Relais_licht = 0
Return
' ############################################# Auf
Auf:
If End_auf = 0 Then
Relais_auf = 1
Relais_licht = 1
Vz = 600
Else
Relais_auf = 0
End If
Return
' ############################################# Zu
Zu:
If End_zu = 0 Then
Relais_zu = 1
Relais_licht = 1
Vz = 100
Else
Relais_zu = 0
End If
Return
' ############################################# Licht
Licht:
If Vz > 1 Then
Decr Vz
Else
Relais_licht = 0
End If
Return
' ############################################# Enschalter
Endschalter:
If End_zu = 1 Then
Relais_zu = 0
Vz_zu = 1
Else
Vz_zu = 0
End If
If End_auf = 1 Then
Relais_auf = 0
Vz_auf = 1
Else
Vz_auf = 0
End If
Return
' ############################################# Ende
End
Anschließend konnte nun das Platinenlayout gezeichnet werden:
Tja und danach folgte das Herstellen der Platine:
Ein paar Stunden später war die Platine dann auch bestückt und kontrolliert
Die fertige Steuerung arbeitet fehlerfrei und wartet nun nur noch auf die Montage im alten Gehäuse des Dormatic-Torantriebes auf ihren Einsatz.
Fragen und Kommentare dazu sind natürlich immer willkommen.
Grüße,
Cassio