Důvody zmražení projektu:
- navrhované mechanické řešení otevíralo vrata pomalu - cca. 1 minutu. P15 tento úkon zvládnou rychleji.
- P15 navíc řeší i ostatní situace spojené s průjezdem vozidla, např. odehnání psa, aby se nenechal přejet. Procesorovou jednotku by bylo velmi obtížné naprogramovat tak, aby řešila operativně všechny situace, které mohou nastat.

projekt zmražen

Ovládání dvoukřídlých vrat

Jednočipy jsou dost dobrá věc. Před časem jsem byl donucen se s nimi seznámit a přiznám se, že se mi dost zalíbily. Specielně maličký 89C2051 od Atmelů je moc krásný bumbrdlíček. Napsal jsem si pro něj dálkové ovládání dvoukřídlých vrat.

Procesor tahá celkem za pět relé. Pro každé křídlo vrat jsou dvě relé, na otvírání a zavírání, jedno relé potom slouží pro výstražný maják. Funkce procesoru je hlídána hlídacím psem MB3773.

Jako pohony vrat jsem použil motorky ze stěračů z Embéčka. Dalo docela práci je sehnat. Tyhle motory měly totiž vzadu elektromagnetem uvolňovanou brzdu. Tu jsem vyndal a na její místo umístil diodový můstek mezi stator a rotor. Díky němu lze motoru měnit smysl otáčení změnou polarity napájení. Motory budou točit heverama, také ze Škodovky, které budou použity jako táhla k vratům. Ještě to ale nemám hotový.

řídící jednotka

Řídící jednotka má vstupy oddělené optočleny. Tři vstupy jsou pro tlačítka otevřít, stop a zavřít a jeden vstup je pro relé přijímače dálkového ovládání (provádí v kruhové frontě příkazy otevři-stop-zavři-stop). Jednotka nemá žádné vstupy na koncové spínače. Krajní polohy se poznají podle zvýšeného odběru motorů, když se vrata zastaví. Při rozběhu motorů je tohle hlídání na několik vteřin potlačeno. Rozhodovací úroveň je v určitém rozsahu nastavitelná trimrem pro každý motor zvlášť. Jednotka zajišťuje také zpožděný pohyb druhého křídla vrat, aby se vrata zavřely správně. Výstupy jsou relé s přepínacím kontaktem asi na 8A, počítám ale s odběrem každého motoru kolem 2A. Relé nejvíce vlevo je pro maják - tento výstup je pod napětím pokud nejsou vrata ve stavu zavřeno.

Celé zapojení vypadá takhle:

kód je poměrně jednoduchý - pro ty, kdo se s ním chtějí blíže seznámit, uvádím výpis v HEX:

:0400000002010032C7
:03000B0002021ED0
:0100130032BA
:01001B0032B2
:0100230032AA
:01002B0032A2
:01003300329A
:01003B003292
:10004000526964696369206A65646E6F746B6120CC
:1000500064766F756B7269646C7963682020202008
:1000600076726174202D2030312F30312F303120C5
:100070006361736F7665206B6F6E7374616E7479F4
:100080002868657861646563696D616C6E65293A9D
:100090005A702E322E6B7269646C615B735D3A0329
:1000A000526F7A62656820205B31306D735D3A640F
:1001000075815F758922758ABE758CBE75A88275EA
:10011000881575900375B0FF75320075330075341E
:10012000001201D8C2B7300056C20020B40B200222
:100130000AD2021201B402017FC20220B30B2003D3
:100140000AD2031201D802017FC20320B20B20049D
:100150000AD2041201FC02017FC20420B51F200153
:100160001ED201E534B401061201B402017FB410BD
:10017000061201D802017F1201FC02017FC2012098
:100180009016E5307012C294C293E534B4400975FC
:100190003401C296C295C292209116E5317012C206
:1001A00096C295E534B40409753410C294C293C262
:1001B00092020124E534B40401227534049000AFA6
:1001C000740093F530D294C293C296C29590009F6A
:1001D000740093F533D29222E534B4400122753491
:1001E00040C294C293C2969000AF740093F531D28E
:1001F0009590009F740093F532D29222E534B404B6
:100200000675341002020DB44003753401753200D6
:10021000753300C294C293C296C295C29222C0D0D6
:10022000C0E0C082C083D2B7D5353B753564D200FB
:10023000E53060021530E53160021531D53627759D
:100240003664B297E532600DD5320A9000AF740083
:1002500093F530D293E533600DD5330A9000AF7437
:0F0260000093F531D296D083D082D0E0D0D03247
:00000001FF

Pro naprosté laiky jako jsem já, kteří se v předchozím odstavci hůře orientují, nabízím ještě výpis v assembleru:

;-------------------------------------------------------------------------

;     Program ridici jednotky dvoukridlych vrat pro procesor 89C2051

;     K15 01/01/01  

;-------------------------------------------------------------------------
;------ Konstanty --------------------------------------------------------

STACK           EQU     5FH     ;zasobnik
PCON            EQU     87H     ;SFR registr PCON (prekladac jej nezna)

ZANO    EQU     001H            ;zavreno
OTRA    EQU     004H            ;otevira 
OTNO    EQU     010H            ;otevreno
ZARA    EQU     040H            ;zavira 

;------ Promenne --------------------------------------------------------

K1BPS    EQU     030H            ;bypass proudove ochrany - rozbeh motoru
K2BPS    EQU     031H            ;bypass proudove ochrany - rozbeh motoru
K1DEL    EQU     032H            ;promenna pro zpozdeni 1.kridla vrat
K2DEL    EQU     033H            ;promenna pro zpozdeni 2.kridla vrat
STAV     EQU     034H            ;stav vrat - kruhovy registr
INTTM1   EQU     035H
INTTM2   EQU     036H

;------ Flagy -----------------------------------------------------------

FIEN    EQU     000H            ;povoleni vyhodnocovat vstupy
FRAD    EQU     001H            ;aktivace vstupu bezdratoveho prijimace
FOTV    EQU     002H            ;otviraci tlacitko
FZAV    EQU     003H            ;zaviraci tlacitko
FSTP    EQU     004H            ;stop tlacitko

;----- Vstupy --------------------------------------------------------

ID1P     EQU    090H             ;proudov  ochrana 1.kridla
ID2P     EQU    091H             ;proudov  ochrana 2.kridla
IRAD     EQU    0B5H             ;vstup bezdratoveho prijimace
IOTV     EQU    0B4H             ;vstup "otevrit"
IZAV     EQU    0B3H             ;vstup "zavrit"
ISTP     EQU    0B2H             ;vstup "stop"

;----- Vystupy -------------------------------------------------------

OD1O    EQU     094H             ;otevirani 1.kridla
OD1Z    EQU     093H             ;zavirani 1.kridla 
OD2O    EQU     096H             ;otevirani 2.kridla
OD2Z    EQU     095H             ;zavirani 2.kridla 
OMAJ    EQU     092H             ;majak
OLED    EQU     097H             ;LED zivota
OWDG    EQU     0B7H             ;watchdog

;------ Program -------------------------------------------------------

Begin:

CSEG AT 000H
        ORG   0000H
        LJMP  INIT              ;hlavni program
        ORG   0003H
        RETI
        ORG   000BH
        LJMP  INTCT0            ;obsl. casovac-0
        ORG   0013H
        RETI
        ORG   001BH
        RETI
        ORG   0023H
        RETI
        ORG   002BH
        RETI
        ORG   0033H
        RETI
        ORG   003BH             ;obsl. prijem znaku ser. 1
        RETI

        ORG     0040H
        DB      'Ridici jednotka '
        DB      'dvoukridlych    '
        DB      'vrat - 01/01/01 '
        DB      'casove konstanty'
        DB      '(hexadecimalne):'
        DB      'Zp.2.kridla[s]:'
CDEL:
        DB      03        
        DB      'Rozbeh  [10ms]:'
CBPS:
        DB      100       

        ORG     0100H
INIT:
        MOV     SP,#STACK          ;zacatek zasobniku na 60H
        MOV     TMOD,#00100010B    ;citac 0 mod 2, vstup z oscil.
                                   ;citac 1 mod 2, vstup z oscil.
        MOV     TL0,#190           ;pro krystal 8 MHz     
        MOV     TH0,#190           ;predvolba citace 0, int. po 0.1 ms
        MOV     IE,#10000010B      ;povol preruseni T0    
        MOV     TCON,#00010101B    ;definice rizeni citacu 0 a 1
                                   ;zaverne hrany /INT0 a /INT1 -> IE0, IE1 

        MOV     P1,#00000011B      ;nastaveni vystupu do 0
        MOV     P3,#0FFH           ;nastaveni vstupu do 1     
        MOV     K1DEL,#0
        MOV     K2DEL,#0
        MOV     STAV,#0                
        LCALL   ZAVRI

MAIN:
        CLR     OWDG            ;obsluha watchdogu - nahozen v preruseni T0

        JNB     FIEN,MAINi       ;preruseni T0 nastavi FIEN kazdych 10 ms
        CLR     FIEN

;zpracovani signalu z ovladacich vstupu
;tlacitko 'otevrit'        
        JB      IOTV,MAINoa     ;stisknuto oteviraci tl.
        JB      FOTV,MAINz      ;nabezna hrana uz byla zpracovana
        SETB    FOTV
        LCALL   OTEVRI
        JMP     MAINi
MAINoa:
        CLR     FOTV          

;tlacitko 'zavrit'
MAINz:
        JB      IZAV,MAINza     ;stisknuto zaviraci tlacitko                
        JB      FZAV,MAINs      ;nabezna hrana uz byla zpracovana
        SETB    FZAV
        LCALL   ZAVRI
        JMP     MAINi
MAINza:
        CLR     FZAV        

;tlacitko 'stop'
MAINs:
        JB      ISTP,MAINsa     ;stisknuto tlacitko STOP
        JB      FSTP,MAINb      ;nabezna hrana uz byla zpracovana
        SETB    FSTP
        LCALL   STOP
        JMP     MAINi
MAINsa:
        CLR     FSTP        

;bezdratovy vstup
MAINb:
        JB      IRAD,MAINbc     ;aktivovan vstup RADIO
        JB      FRAD,MAINi      ;nabezna hrana uz byla zpracovana
        SETB    FRAD                              
        MOV     A,STAV          
        CJNE    A,#ZANO,MAINba
        LCALL   OTEVRI
        JMP     MAINi
MAINba:
        CJNE    A,#OTNO,MAINbb
        LCALL   ZAVRI
        JMP     MAINi
MAINbb:
        LCALL   STOP
        JMP     MAINi
MAINbc:
        CLR     FRAD            ;klidovy stav vstupu

;nadproudove ochrany
MAINi:
        JB      ID1P,MAINia     ;nadproud 1.kridla
        MOV     A,K1BPS
        JNZ     MAINia          ;ignoruj nadproud behem bypassu
        CLR     OD1O
        CLR     OD1Z
        MOV     A,STAV
        CJNE    A,#ZARA,MAINia
        MOV     STAV,#ZANO
        CLR     OD2O
        CLR     OD2Z
        CLR     OMAJ
MAINia:
        JB      ID2P,MAINib     ;nadproud 2.kridla
        MOV     A,K2BPS
        JNZ     MAINib          ;ignoruj nadproud behem bypassu
        CLR     OD2O
        CLR     OD2Z
        MOV     A,STAV
        CJNE    A,#OTRA,MAINib
        MOV     STAV,#OTNO
        CLR     OD1O
        CLR     OD1Z
        CLR     OMAJ
MAINib:        

        LJMP    MAIN

;****** rutiny ************************************************************

OTEVRI:
        MOV     A,STAV
        CJNE    A,#OTRA,OTEVRIa
        RET
OTEVRIa:        
        MOV     STAV,#OTRA
        MOV     DPTR,#CBPS
        MOV     A,#0
        MOVC    A,@A+DPTR
        MOV     K1BPS,A         ;BYPASS PROUDOVE OCHRANY 1s
        SETB    OD1O
        CLR     OD1Z
        CLR     OD2O
        CLR     OD2Z
        MOV     DPTR,#CDEL
        MOV     A,#0
        MOVC    A,@A+DPTR
        MOV     K2DEL,A         ;ZPOZDENI PRO OTEVRENI 2.KRIDLA        
        SETB    OMAJ
        RET
ZAVRI:
        MOV     A,STAV
        CJNE    A,#ZARA,ZAVRIa
        RET
ZAVRIa:
        MOV     STAV,#ZARA
        CLR     OD1O
        CLR     OD1Z
        CLR     OD2O
        MOV     DPTR,#CBPS
        MOV     A,#0
        MOVC    A,@A+DPTR
        MOV     K2BPS,A         ;BYPASS PROUDOVE OCHRANY 1s
        SETB    OD2Z
        MOV     DPTR,#CDEL
        MOV     A,#0
        MOVC    A,@A+DPTR
        MOV     K1DEL,A         ;ZPOZDENI PRO ZAVRENI 1.KRIDLA 
        SETB    OMAJ
        RET
STOP:
        MOV     A,STAV
        CJNE    A,#OTRA,STOPa
        MOV     STAV,#OTNO      ;oteviral -> otevreno
        JMP     STOPb
STOPa:
        CJNE    A,#ZARA,STOPb
        MOV     STAV,#ZANO      ;zaviral -> zavreno
STOPb:
        MOV     K1DEL,#0
        MOV     K2DEL,#0
        CLR     OD1O
        CLR     OD1Z
        CLR     OD2O
        CLR     OD2Z
        CLR     OMAJ
        RET
        
;****** preruseni ********************************************************* 
        
INTCT0: ;obsluha preruseni casovace 0 - pro casove prodlevy
        PUSH    PSW
        PUSH    ACC
        PUSH    DPL
        PUSH    DPH

        ;kazdou 0.1 ms
        SETB    OWDG                
        DJNZ    INTTM1,INTCT0a
        MOV     INTTM1,#100

        ;kazdych 10 ms

        SETB    FIEN            ;zajisteni cteni vstupu v intervalu 10 ms
        MOV     A,K1BPS         ;odpocitavani bypassu proudovych ochran
        JZ      INTCT0c         ;(kvuli zvysenemu odberu pri rozbehu motoru)
        DEC     K1BPS
INTCT0c:             
        MOV     A,K2BPS
        JZ      INTCT0d
        DEC     K2BPS
INTCT0d:             
        DJNZ    INTTM2,INTCT0a
        MOV     INTTM2,#100

        ;kazdou sekundu

        CPL     OLED            ;blikani LED zivota    
        MOV     A,K1DEL         ;zpozdene zavreni 1.kridla
        JZ      INTCT0b
        DJNZ    K1DEL,INTCT0b
        MOV     DPTR,#CBPS
        MOV     A,#0
        MOVC    A,@A+DPTR
        MOV     K1BPS,A         ;BYPASS PROUDOVE OCHRANY 1s
        SETB    OD1Z 
INTCT0b:
        MOV     A,K2DEL
        JZ     INTCT0a
        DJNZ    K2DEL,INTCT0a
        MOV     DPTR,#CBPS
        MOV     A,#0
        MOVC    A,@A+DPTR
        MOV     K2BPS,A         ;BYPASS PROUDOVE OCHRANY 1s
        SETB    OD2O 
INTCT0a:                       
        POP     DPH
        POP     DPL
        POP     ACC
        POP     PSW
        RETI
               
END

P15/1, K15 - prosinec 2006, naposledy aktualizováno: leden 2024