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.
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 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
|