Torsteuerung Marco Korrmann Dominik Sommer
Problemstellung Das manuelle Öffnen und Schließen eines Garagentors erfordert das Aussteigen aus dem Fahrzeug, welches oft als unbequem empfunden wird.
Funktionsübersicht ● Taster MA: Öffnen des Tores ● Taster MA: Öffnen des Tores ● Taster MS: Schließen des Tores ● Taster A : Öffnen und nach 10s Wartezeit automatisches Schließen ● Tastenfeld: Öffnen und nach 10s Wartezeit automatisches Schließen ● Ob das Tor "AUF" oder "ZU" ist wird durch zwei Endschalter abgefragt. ● Zum Schutz von Personen und anderen Objekten befindet sich im Torbereich eine Lichtschranke.
Blockschaltbild
Portbelegungsplan
Schaltplan
Struktogramm
;------------------------------------------------------------------------ ; Interrupt-Vektoren org 002BH ; Interrupt Vektor Timer 2 clr TF2 ; Interrupt erkannt / TF2 Flag zurücksetzen call EEE ; Aufruf des Unterprogramms EEE reti ; Rücksprung aus Interrupt org 004BH ; Interrupt 2 = Lichtschranke call Lichtschranke ; Aufruf des Unterprogramms Lichtschranke org 01BH ; Timer 1 Overflow Interrupt call Timer0Schleife ; Sprung zur ISR Timer0Schleife
;------------------------------------------------------------------------ ; Initialisierungsteil für On-Chip Peripherie mov IEN0,#10111000B ; Interrupt Freigabe Register: ; EAL = Allgemeine Interrupt Freigabe ; ET2 = Überlauf Timer 2 freigeben ; ET1 = Freigabe Timer 1 Overflow mov T2CON,#00110000b ; Timer 2 Einstellung: Modus 0->Reload bei Überlauf ; I2FR – Bit: Interrupt 2 = positiv flankengetriggert mov TMOD,#00010000b ; Timer 1 auf Modus 1 ( 16 bit Timer ) mov CCEN,#00001000b ; Compare Mode des CC1 freigeben mov CRCL,#PERIODE_LOW ; Low Byte von Compare Reload Capture Register mov CRCH,#PERIODE_HIGH ; High Byte von Compare Reload Capture Register mov CCH1,#PWMANH ; Pulsweitenmodulation Anfangswert ( 90° ) mov CCL1,#PWMANL mov IP0,#00000000b ; Interrupt Priorität festlegen: mov IP1,#00000010b ; Lichtschranke hat höchste Priorität
Programmauszug zur Funktion: Tor schließen ABFRAGE: jnb P4.0,Tor_SCHLIESSEN ; Taster MS springe zu Tor_SCHLIESSEN jmp ABFRAGE ; Sprung zu ABFRAGE Tor_SCHLIESSEN: call SCHLIESSEN ; Aufruf des Unterprogramms Schliessen jmp ABFRAGE ; Sprung zu ABFRAGE SCHLIESSEN: call TIMER2_ZU ; Aufruf des Unterprogramms TIMER2_ZU Schleife2: jnb P1.3,WW ; Wenn Endschalter ZU betätigt, springe zu WW jmp Schleife2 ; zu Schleife 2 springen WW: clr T2I0 ; Timer 2 stop ret ; Rücksprung
TIMER2_ZU: mov R3,#1 ; in Register 3 die Zahl 1 laden mov R4,#3 ; in Register 4 die Zahl 3 laden setb EX2 ; Interrupt 2 für Lichtschranke einschalten setb T2I0 ; Timer 2 loslaufen --> Motor an ret ; Rücksprung EEE: ; wird aufgerufen vom Interrupt Timer 2 djnz R3,Auf_W ; R3 -1 , wenn nicht = 0 zu Auf_W springen djnz R4,ZU_W ; R4 -1 , wenn nicht = 0 zu ZU_W springen ret ; Rücksprung Lichtschranke: clr T2I0 ; Timer 2 ausschalten --> Motor aus Warte4: jb P1.4,Warte4 ; P1.4 auf High Pegel ( Lichtschranke ; unterbrochen ) --> in Schleife bleiben/warten setb T2I0 ; Timer 2 loslaufen --> Motor an ret ; Rücksprung
Fertiges Projekt
Verbesserungen Vorschläge: mehrere Lichtschranken verwenden, die im Torbereich auf unterschiedlicher Höhe angebracht sind, um die Sicherheit zu erhöhen Einbau einer Induktionsschleife vor dem Tor zum Erkennen eines Fahrzeugs