CHƯƠNG 1
KHÁI QUÁT VỀ CÔNG NGHỆ ĐIỀU KHIỂN BÃI ĐỖ XE TỰ ĐỘNG
1.1. MỞ ĐẦU
Hiện nay, các bãi đỗ xe công cộng nhu ở các khu phố, khu chung cư, hội
chợ việc quản lý gặp nhiều khó khăn. Số lượng xe vào và xe ra là ngẫu nhiên,
có lúc nhiều xe, có lúc ít xe, nhiều khi lại ách tắc quá tải. Công việc quản lý
tưởng chừng như đơn giản song lại tốn nhiều nhân lực: người thì bán vé, người
thu vé người thì phải thường xuyên giám sát số lượng xe có trong bãi bên cạnh
đó việc kiểm soát vé là cũng khó khăn.
Ngày nay cùng với sự phát triển của các ngành khoa học kỹ thuật, kỹ
thuật điện tử mà trong đó là kỹ thuật số đóng vai trò quan trọng trong mọi lĩnh
vực khoa học kỹ thuật, quản lí, công nghiệp tự động hóa, cung cấp thông tin….
do đó chúng ta phải nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp
phần vào sự phát triển nền khoa học kỹ thuật thế giới nói chung và trong sự phát
triển kỹ thuật điện tử nói riêng.
Áp dụng những thành tựu khoa học ta có thể sử dụng các phương tiện
hoàn toàn tự động để điều khiển bãi đỗ xe tự động, không những giảm được
nhân lực , đáp ứng được kinh tế mà còn có thể kiểm soát được số lượng vé trong
ngày, tháng quý
Trong giới hạn đề tài em chỉ thiết kế hệ thống điều khiển bãi đỗ xe với
việc đếm số lượng xe ra vào hay quản lý số chỗ đỗ xe, số xe có trong bãi và điều
khiển thanh chắn ra vào.
Để thực hiện được điều đó cần phải thiết kế hai phần chính sau: bộ phận
cảm biến và bộ phận đếm.
* Bộ phận cảm biến: gồm phần phát và phần thu. Thông thường người ta
sử dụng phần phát là led hồng ngoại để phát ra ánh sáng hồng ngoại mục đích để
1
chống nhiễu so với các loại ánh sáng khác, còn phần thu là transistor quang để
thu ánh sáng hồng ngoại.
* Bộ phận đếm: có nhiều phương pháp thực thi đó la
-Lắp mạch dùng kỹ thuật số với các IC đếm, chốt, so sánh ghép lại
- Số linh kiện sử dụng trong mạch ít hơn.
-Mạch đơn giản hơn so với mạch đếm sản phẩm dùng IC rời và có phần
cài đặt số đếm ban đầu
-Mạch có thể lưu lại số liệu của các ca sản xuất
-Mạch có thể điều khiển đếm được nhiều dây chuyền sản xuất cùng lúc
bằng phần mềm
-Mạch cũng có thể kết nối giao tiếp được với máy tính thích hợp cho những
người quản lí tại phòng kỹ thuật nắm bắt được tình hình sản xuất qua màn
hình của máy vi tính.
Nhưng trong thiết kế người ta thường chọn phương pháp tối ưu nhưng kinh
tế do đó chúng em chọn phương pháp đếm sản phẩm dùng kỹ thuật vi điều khiển
1.2.3. Phương pháp đếm sản phẩm dùng vi điều khiển
Ngoài những ưu điểm có được của hai phương pháp trên, phương pháp này
còn có những ưu điểm :
-Trong mạch có thể sử dụng ngay bộ nhớ trong đối với những chương trình
có quy mô nhỏ, rất tiện lợi mà vi xử lí không thực hiện được.
-Nó có thể giao tiếp nối tiếp trực tiếp với máy tính mà vi xử lí cũng giao
tiếp được với máy tính nhưng là giao tiếp song song nên cần có linh kiện
chuyển đổi dữ liệu từ song song sang nối tiếp để giao tiếp với máy tính.
1.3. MỤC ĐÍCH YÊU CẦU CỦA ĐỀ TÀI
Trong bài tập này em thực hiện mạch đếm số lượng xe ra vào bằng phương
pháp đếm xung. Như vậy mỗi xe đi qua cửa phải có một thiết bị để cảm nhận xe
ra vào, thiết bị này gọi là cảm biến. Khi một xe đi qua cảm biến sẽ nhận và tạo
3
ra một xung điện đưa về khối xử lí để tăng dần số đếm hoặc giảm dần số đếm.
Tại một thời điểm tức thời, để xác định được số đếm cần phải có bộ phận hiển
thị. Tuy nhiên mỗi bãi đỗ xe lại yêu cầu với số đếm khác nhau vì thế phải có sự
linh hoạt trong việc chuyển đổi số đếm. Bộ phận chuyển đổi trực quan nhất là
bàn phím. Khi cần thay đổi số đếm người sử dụng chỉ cần nhập số đếm ban đầu
vào và mạch sẽ tự động đếm. Khi số xe được đếm bằng với số đếm ban đầu thì
BÀN PHÍM
KHỐI HIỂN THỊ
Chấp hành
cm bin, bng phng phỏp ny chỳng ta s b trớ cp thu phỏt cựng mt
phớa, rt d cho lp t, nhng vi cỏc sn phm cú phn x khụng cao thi ta
s b trớ cp thu phỏt hai phớa, phng phỏp ny cho chỳng ta tin cy cao
hn tuy nhiờn khi lp t thit b s phc tp hn.
H2.1: Mch to dao ng
Hoạt động của mạch điện này nh sau:
Ngay khi cung cấp điện lần đầu cho mạch này, điện áp trên tụ C1 bằng 0V
nên mạch ở trạng thái ban đầu nh sau: R = 0, S = 1 Q của FF ở mức logic cao
Q bù của FF ở mức logic thấp (0V) dẫn đến T1 tắt mức điện áp ra ở chân 3 ở
mức cao. Tụ C1 bắt đầu nạp điện qua điện trở R1, R2 cho đến khi điện áp trên
C1 tăng đến trị số 2/3Vcc ( lúc điện áp trên tụ C1 tăng quá Vcc/3, mạch so sánh
2 đổi trạng thái R = S = 0 nên FF vẫn giữ nguyên trạng thái cũ chân 3 vẫn ở mức
cao) ở thời điểm này mạch so sánh 1 đổi trạng thái nên R = 1, S = 0 FF đổi trạng
thái tức là Q bù ở mức cao phân cực cho T1 dẫn bão hoà làm cho chân 3 chuyển
trạng thái về mức thấp, tụ C1 phóng điện qua R1, chân 7 và T1cho đến khi điện
áp trên tụ giảm xuống còn 1/3Vcc mạch so sánh 2 đổi trạng thái S = 1, R = 0 Q
bù của FF chuyến lên mức điện áp cao T1 tắt tụ C1 lại bắt đầu nạp đến điện áp
2/3Vcc. Chu trình cứ lặp đi lặp lại tại chân 3 sẽ tạo dao động xung vuông. Vì R2
6
rất lớn hơn R1 nên thời gian nạp lớn hơn rất nhiều thời gian phóng nên một chu
kỳ của bộ định thời t = R2.C1 = 0,01 s Vậy tần số phát là f = 1/t = 100Hz.
B. H thng thu
Phớa thu ta dựng mch in nh sau:
H2.2: Mch in phớa thu
Mch in phớa thu gm cú ba khi chớnh nh sau:
Khi 1: cú nhim v to dao ng theo tớn hiu ca Diot thu hng ngoi,
2.1.2. Khối hiển thị
Khối hiển thị gồm 4 led 7 vạch, ngoài ra con có các led chỉ báo như ( chỉ
báo có xe vào, chỉ báo mở thanh chắn, chỉ báo không còn chỗ để xe…).
Đầu thu 1 Đầu phát 2
Đầu phát 1 Đầu thu 2
Vµo
Ra
8
Ở đây chủ đạo là led 7 vạch được ghép nối với khối xử lý theo nhiều cách
khác nhau.
Để điều khiển được các đèn LED này sáng, bộ vi xử lý hoặc các mạch
cổng của nó cần được tăng khả năng tải bằng các mạch khuếch đại đệm ( bằng
transitor, bằng mạch SN7400hay SN7406) hoặc các mạch điều khiển đèn LED 7
nét chuyên dụng ( như SN7447) để đảm bảo đưa ra được tín hiệu với công suất
nhất định cần thiết cho đèn LED.
• Ghép nối có SN7447 - LED 7 nét ở chế độ tĩnh
Một trong các phối ghép giữa vi xử lý và đèn LED 7 nét thường thấy là
dùng mạch SN7447 để giải mã số BCD ra 7 nét . Đây là kiểu điều khiển đèn
LED ở chế độ hiển thị tĩnh với đặc điểm là khá đơn giản về kết cấu nhưng lại rất
tốn năng lượng: để thắp sáng các nét của đèn LED thì phải có dòng điện liên tục
đi qua.
H2.4: Phối ghép vi xử lý với LED 7 nét thông qua mạch SN7447.
Ta có thể tính sơ bộ để có thể thấy sự tiêu tốn năng lượng của việc hiển
thị theo cách này. Một đèn LED 7 nét tiêu tốn năng lượng nhiều nhất khi nó phải
hiện ra số 8 và lúc này nó tiêu thụ doing điện khoảng 140 mA (khoảng
20mA/nét tuỳ theo chủng loại0. Bản than một mạch SN7447 khi hoạt đọng cũng
tiêu thụ doing điện khoảng 14mA. Nếu tadùng đèn LED này để hiển thị 8 chử số
(địa chỉ và dữ liệu) thì riêng mạch chỉ thị ta phải cung cấp khoảng 1.5mA.
9
a
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7
32
P1.0
1
P1.1
2
P1.2
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
Q1
2N2905
Q2
2N2905
Q3
2N2905
Q4
2N2905
A
7
QA
13
B
1
QB
Nguyên tắc hoạt động
Giá trị số cần hiển thị của mỗi con số được gửi đến cổng P2 từ CPU dưới
dạng mã BCD. Từ đây BCD được mạch SN7447 giải mã và tạo ra các tín hiệu
điều khiển thích hợp đưa đến các chân catốt a.b, g của LED. Mỗi giá trị cần
hiển thị được đưa đến cổng P2cứ mỗi 2ms một lần cho một đèn.
Giá trị số nói trên được hiện ra trên chử số thập phân nào lại là do các bit
của byte dữ liệu từ CPU đưa đến cổng PA của mạch 8255A quyết định.
Như vậy cứ mỗi 2ms thì ta phải đưa dữ liệu ra PB rồi PA và cho hiện ra
một giá trị số trên một đèn. Nếu cả thảy có 8 LED 7 nét thì ta mất 16ms để cho
hiện số ra cả dãy đèn. Quá trình trên lặp đi lặp lại làm cho ta có cảm giác là đèn
sáng liên tục mặc dù trong thực tế chúng được điều khiển để sáng không liên
tục.
Một phương pháp phối ghép giống như trên nhưng không dùng mạch giải
mã SN7447 cũng rất hay được sử dụng. Thay vì mạch SN7447 như trên, tại đây
10
ta dùng một bộ khuếch đại đệm chỉ để nâng cao khả năng tải của cổng PB. Vì
thế trong trường hợp này CPU phải đưa đến PB không phải là 4 bit mã BCD của
giá trị số hiển thị mà là các mẫu 7 bit để làm sáng các nét tương ứng với giá trị
số đó. Như vậy CPU phải để thì giờ để chuyển đổi từ giá trị số hệ 16 sang mẫu
bit dành cho các nét của LED.
2.1.3. Khối chấp hành
Đầu vào : Lấy từ 89C51.
Đầu ra : Nối với động cơ.
• Nhiệm vụ khối chấp hành:
Khối này nhận tín hiệu điều khiển từ 89C51 để điều khiển chiều quay
động cơ (chiều dịch chuyển của thanh chắn).
Sơ đồ khối.
Sơ đồ mạch điều khiển chiều quay động cơ.
H2.6: Sơ đồ mạch điều khiển động cơ truyền động thanh chắn
• Nguyên lý hoạt động :
CRYSTAL
C2
33pF
C3
10u
R5
8.2k
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14
27
U1
AT89C51
H2.7 : Khối xử lý
A. chức năng , hoạt động
• Mạch tạo dao động.
Ta dùng thạch anh 11,0592 MHz ghép thêm hai tụ gốm 33pF để tạo xung
clock đồng bộ cho toàn hệ thống.
ban đầu cho bộ đếm là rất cần thiết. Ứng với 4led cho phép ta hiển thị tối đa
9999 vì vậy có thể nhập vào số đếm trong phạm vi từ 0 đến tối đa 9999, do đó
trong mạch sử dụng 10 phím số từ 0 đến 9. Và mỗi lần nhập số vào để nhận biết
là nhập mấy số hoặc đã nhập xong và muốn biết cho phép đếm chưa hoặc hủy
bỏ số vừa nhập phải cần sử dụng thêm các phím chức năng, nên em dùng thêm 6
phím chức năng từ A đến F. Do đó bàn phím gồm 16 phím được kết nối vào port
1 của 8051:
Sơ đồ khối kết nối như sau:
H2.8 : Sơ đồ khối kết nối bàn phím
2.2. SƠ ĐỒ HOÀN CHỈNH
C1
33pF
X2
CRYSTAL
C2
33pF
C3
10u
R5
8.2k
XTAL2
18
XTAL1
19
ALE
30
EA
31
PSEN
29
P1.6
7
P1.7
8
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.7/RD
17
P3.6/WR
16
P3.5/T1
15
P2.7/A15
28
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U2
7447
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
QD
10
BI/RBO
4
QE
9
RBI
5
QF
15
LT
3
QG
14
U4
7447
A
7
QA
13
B
1
QB
12
C
2
QC
11
D
6
8051
BÀN PHÍM
PORT 1
CHƯƠNG 3
THIẾT KẾ PHẦN MỀN
3.1. LƯU ĐỒ THUẬT TOÁN
3.1.1. Chương trình chính
Để hệ thống đi vào hoạt động trước hết ta phải cấp nguồn khởi động các
phần tử trong hệ thống. Tiếp đó ta tiến hành cài đặt thông số ban đầu cho hệ
thống. Đó là số lượng xe được phép vào bãi. Số liệu này được cài đặt thông qua
bàn phím. Sau đó khởi động bộ đếm, nhận dữ liệu từ khối cảm biến. Dữ liệu
nhận từ khối cảm biến sẽ được xử lý và hiển thị trên led số lượng vị trí còn trống
trong bãi thông qua việc so sánh số lượng cài đặt ban đầu với số lượng xe ra vào
bãi. Khi số lượng xe trong bãi đã đầy hệ thống ngừng hoạt động, báo hiệu cho
người quản lý biết không cho phép xe vào bãi nữa.
Lưu đồ thuật toán cho chương trình chính
15
Có xe qua
Nạp các giá trị ban đầu
Nhập số liệu từ bàn phím
Hết chỗ để
xe
S
Hiển thị số liêu đã nhập
Nâng thanh chắn
Gọi chương trình đếm
Chờ xe qua
Hạ thanh chắn
Kiểm tra chu
trình xe ra
Xoá bit NO
Gọi chương trình dò phím
Đ
Đặt bit YES
Xóa A
A = # 0BH
Đặt bit NO
Xóa cờ C
A - # 0AH
S
Đ
S
Đ
Ret
lần để xem phím có còn được nhấn nữa hay không. Khi R3 = 0 thì lấy mã phím trao cho thanh
ghi A.
• Chương trình dò mã phím ấn:
8051 luôn đọc dữ liệu từ Port 1 để dò tìm mã phím. Khi có một phím được ấn thì cờ
C= 1 và mã của phím ấn được lưu tạm thời vào thanh ghi R6. Sau đó tăng dần R6 lên 4 đơn vị
để dò mã phím tiếp theo, (mã phím )→ (A)
#50→ (R3)
Gọi CT dò mã
phím
C=0
S
R3 - 1
Có phím ấn
Đ
Đ
R3=0
Xóa C
A –R6
A → R6
R7 → A
R7 → A
Xoay A
R6 - 1
Bắt đầu
A → R7
A → P1
Đọc port 1
A AND #0F0H
Xoay A
Xoay phải A qua C
Xóa C
A = # 0F0H
R6 + 4
R5 - 1
Đặt cờ c; R6 → A
R6 → A
Đ
S
C = 0
Đ (3)
S
S
(3)
Đ
(3)
R5 = 0
bit 7D = 1
Đ
RET
(1)
b) Chương trình con kiểm tra chu trình xe ra vào
Chu trình xe đi vào sẽ trải qua các giai đoạn sau:
+ Giai đoạn 1: P3.0 = 1; P3.1 = 1 (chờ xe đi qua)
+ Giai đoạn 2: P3.0 = 0; P3.1 = 1 ( Vào 1 )
21
tram,a
a + nghin
caidat2,a
p0,a
Gọi nhấn số thứ 3
(2)
bit 7E = 1
Đ
S
Đ
bit 7E = 1
S
donvi,a
a + chuc
caidat1,a
p2, caidat1
RET
A=#0AH
S
S
A=#0BH
Vao2
Vao1
Wait
S
S
S
S
S
S
S
S
S
S
S
S
S
Đ
BEGIN
1,1
11
1,0
0,1
1,0
1,0
0,0
0,1
0,1
00
0,1
00
soluong2 equ 03h
caidat1 equ 25h
caidat2 equ 26h
nghin equ 21h
tram equ 22h
chuc equ 23h
donvi equ 24
yes bit 7dh
no bit 7eh
;=======================================
;=========chuong trinh chinh============
;=======================================
org 0h
main:
setb p3.0
setb p3.1
clr p3.6
clr p3.7
acall nhapso
mov a,chuc
swap a
mov b,#10
mul ab
add a,donvi
mov soluong1,a
mov a,nghin
swap a
mov b,#10
mul ab
add a,tram
swap a
mov chuc,a
mov p2,a
so4: lcall nhanso
jbc yes,thoat1
jbc no,nhapso
mov donvi,a
add a,chuc
mov caidat1,a
mov p2,caidat1
kt_nhapso: lcall kt_phiman
cjne a,#0ah,xoanhapso
ljmp thoat1
xoanhapso: cjne a,#0bh,kt_nhapso
ljmp nhapso
thoat1: ret
;*******************************************
;****CHUONG TRINH CON NHAN SO***************
;*******************************************
nhanso: clr yes
clr no
lcall kt_phiman
cjne a,#0ah,xoaso
setb yes
24
clr a
ljmp thoat0
xoaso: cjne a,#0bh,loaitru
setb no
ljmp thoat0
mov a,p1
anl a,#0f0h
cjne a,#0f0h,cophiman
mov a,r7
rl a
djnz r6,kiemtra
clr c
sjmp thoat
cophiman:
mov r7,a
25