I. BÀI TOÁN:
Xây dựng hệ thống đo lƣờng và điều khiển sử dụng PC điều khiển nhiệt độ: Nhiệt độ khống chế từ 250C đến 750C, ∆t = ±10C. Yêu cầu: Ghép nối CPU với cơ cấu đo lƣờng điều khiển và viết chƣơng trình điều khiển : tính nhiệt độ và điều khiển ON, OFF. tđo > tc : ON tđo ≤ tc : OFF
Cơ cấu đo lƣờng Senso r
U (t ) 2,7 3,2
v v
DT ĐK (Nhiệt độ)
t 25 750
Cơ cấu điều khiển
Cơ cấu điều khiển
KD & CĐ
0 v 5v
BXLTT (MP,PC)
ADC (8bit) Bàn phím
II.CẤU TẠO:
CÁC PHẦN CƠ BẢN CỦA HỆ THỐNG 1.Chuẩn ISA(8bit):
2.Bộ đệm vào ra (IN/OUT) 74245: +Dữ liệu vào D0-D7 từ các chân A0-A7. + Chân DIR đƣợc nối với chân B14 mang tín hiệu IOR(đọc). Nếu tín hiệu IOR tích cực mức 0.Dữ liệu (data) sẽ đi từ B >> A Nếu tín hiệu IOR tích cực mức 1.Dữ liệu (data) sẽ đi từ A >> B + Chân E đƣợc nối với bộ 74688.Nhận tín hiệu cho phép 74245 hoạt động với mức 0 là mức tích cực.
3.IC 74688:
74LS688 1 2 4 6 8 11 13 15 17 G A0 A1 A2 A3 A4 A5 A6 A7 Y B0 B1 B2 B3 B4 B5 B6 B7 19 3 5 7 9 12 14 16 18
+ Chân G đƣợc nối với các cổng NAND để tạo tín hiệu khởi động cho 74688
IOR/IOW
1 3 2
ARE
A11
NAND
1 3 2
NAND
+ Các chân từ A0-A7 đƣợc nối với các chân của ISA A26-A19 mang tín hiệu A5-A11 có chân A8-A9 =1.B3-B4 đƣợc nối với nguồn +5v. + IC chỉ hoạt động khi tín hiệu đầu vào A bằng tín hiệu định sẵn B.Để xác định máy hoạt động đúng trong giải địa chỉ 300H đến 30FH. Từ đó tạo ra tín hiệu tích cực cho 74245 hoạt động và 74138 hoạt động.
4.Giải mã địa chỉ qua IC 74138:
+ Chân G2A và G2B tích cực ở mức 0 cho phép 74138 hoạt động. + Đầu vào dữ liệu qua các chân A3-A4-IOW: Nếu A3 A4 IOW là 000 : Y0 tích cực ở mức 0 cho phép ADC0809 hoạt động. Nếu A3 A4 IOW là 001 : Y1 tích cực ở mức 0 cho phép IC74374 hoạt động. Nếu A3 A4 IOW là 100 : Y4 tích cực ở mức 0 tạo tín hiệu đọc OE cho ADC0809. Nếu A3 A4 IOW là 101 : Y5 tích cực ở mức 0 cho phép IC 74244 hoạt động. 5.Cơ cấu đo lƣờng – Khuếch đại – Chuyên đôi : ̉ ̉ a.Sensor LM355: IC đo nhiệt độ là một mạch tích hợp nhận tín hiệu nhiệt độ chuyển thành tín hiệu điện dƣới dạng dòng điện hay điện áp. Dựa vào đặc tính rất nhạy cảm của các bán dẫn với nhiệt độ, tạo ra điện áp hoặc dòng điện, tỉ lệ thuận với nhiệt độ tuyệt đối.Đo tín hiệu điện ta biết đƣợc giá trị của nhiệt độ cần đo. Sự tác
động của nhiệt độ tạo ra điện tích tự do và các lỗ trống trong chất bán dẫn. Bằng sự phá vỡ các phần tử, bứt các electron thành dạng tự do di chuyển qua vùng cấu trúc mạng tinh thể tạo sự xuất hiện các lỗ trống. Làm cho tỉ lệ điện tử tự do và lỗ trống tăng lên theo qui luật hàm mũ với nhiệt độ. Đặc tính của IC đo nhiệt độ LM 335 Ngõ ra điện áp, Độ nhạy 10mv/10C. Sai số cực đại 1,50C khi nhiệt độ lớn hơn 1000C. Phạm vi sử dụng -550C đến 1500C. ∆t = 25-75 ◦C Ura = 2,7v – 3,2v
b.Khuếch đại:
0-5V ADC0809 {0,1} CPU
10k 4,7k 2 + 1 1k 10k 4,7k 1k
+5v
Khuếch đại tín hiệu từ 2,7v -3,2v lên tín hiệu từ 0-5v để đƣa vào bộ chuyển đổi ADC0809. Nếu: R R 3 4 k R R 1 2
U k v v) .(2 r U U 1 Mà Ur = 5, Uv2 – Uv1 = 0,5 => Chọn k = 10
c.Bộ chuyển đổi ADC0809 (tƣơng tự thành số): * Ý nghĩa các chân: . IN0 đến IN7 : 8 ngõ vào tƣơng tự. . A, B, C : giải mã chọn một trong 8 ngõ vào -1 -8 . 2 đến 2 : ngõ ra song song 8 bit . ALE : cho phép chốt địa chỉ . START : xung bắt đầu chuyển đổi . CLK : xung đồng hồ . REF (+) : điện thế tham chiếu (+)
. REF (-) . VCC
: điện thế tham chiếu (-) : nguồn cung cấp
Để máy tính có thể xử lý đƣợc thông số của nhiệt độ đo đƣợc.Ta cần phải chuyển đổi chúng từ tín hiệu tƣơng tự sang tín hiệu số.Chính vì thế ta sử dụng bộ chuyển đổi ADC0809.
+ Tín hiệu A0A1A2 = 000 cho phép đọc nhiệt độ đo đƣợc ở IN0.Tƣơng tự 001 ở kênh IN1..... A B C 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 Ngõ vào đƣợc chọn IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
+ Bắt đầu chuyển đổi khi tín hiệu START ở mức tích cực, tín hiệu ALE tích cực để chốt địa chỉ. + Chuyển đồ từ tín hiệu tƣơng tự sang số kết thúc khi ADC0809 phát ra tín hiệu EOC. + Chân OE đƣợc nối với 74138 để điều khiển kết thúc quá trình chuyển dữ liệu. + CLK đƣơc nôi vơi bô chia tân: ̣ ́ ́ ̣ ̀
4Mhz
7414 1 2 1 7414 2
1k
1k
100pF
7493 14 1 2 3 CLKA CLKB R01 R02 QA QB QC QD 12 9 8 11
NC
CLK
* Biểu đồ thời gian của ADC 0809.
6.Cơ cấu điều khiển với IC
74374: IC 74374 làm nhiệm vụ điều khiển quạt bật lên hoặc tắt đi nếu nhƣ nhiệt độ đo đƣợc lớn hơn hoặc nhỏ hơn nhiệt đo đặt vào. IC 74374 hoạt động khi tín hiệu vào chuyển từ 74138 ( khi A3-A4-IOW = 100 – Y1 đƣợc chọn ở mức tích cực 0). Khi đó IOR = 1, IOW =0 ở địa chỉ 308H.
SÔ ÑOÀ NGUYEÂ LYÙ THOÁG ÑIEÀ KHIEÅ NHIEÄ ÑOÄ N HEÄ N U N T
+12V +5V
4MHz 10K 4,7K
B14
IOR
DIR
E ALE START CLK EOC
7414
100pF
1K
7414
1K 14 1 2 3 12 9 8 11 100K
74LS245
OE
CLKA CLKB R01 R02
QA QB QC QD
A2
A1
A29 A30 A31
A0
7493
CPU
B9 D0 D1 D2 D3 D4 D5 D6 D7 G A28 A27 B13 A11 +5V A3 A4 IOW A B C G1 G2A G2B Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 OE 1K C828 +12V
LM335
74LS374
10K
74LS138
AEN
G A26 A25 A24 A23 A22 A21 A20 A19 A5 A6 A7 A8 A9 A10 A11 A12 P0 P1 P2 P3 P4 P5 P6 P7
P=Q
Y Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
1Y 1 +5V G1 G2
1A1
74LS688
74LS244
+
A9 A8 A7 A6 A5 A4 A3 A2
D0 D1 D2 D3 D4 D5 D6 D7
A0 A1 A2 A3 A4 A5 A6 A7
B0 B1 B2 B3 B4 B5 B6 B7
D0 D1 D2 D3 D4 D5 D6 D7
IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7
-
ISA
10K 4,7K 1,5K
ADC0809
keâ h 0 n
1K 1K 10K
FAN
III.GIẢI MÃ ĐỊA CHỈ I/O
IN/OUT
IOR , 0 IOW 0 A A A 1 2 8 9 A A A A A 0 3 4 5 6 7
Đọc dữ liệu từ 301H MOV DX,301H IN Al,DX
IN (14 0 IORD B )
A1A2=00 A0A8A9=111 A3A4…A7=00..0 AEN=0
CHƢƠNG TRÌNH ĐIỀU KHIỂN .Model small .Stack 100h .Data Msg1 DB 'Chuong trinh dieu khien nhiet do.$' Msg2 DB ‘Nhiet do phong la: $’ .Code Main Proc MOV AX,@Data MOV DS, AX ;Hiển thị thông báo LEA DX,Msg1 MOV AH,9 INT 21H Start: MOV DX,301h MOV AL,00h OUT DX,AL LAP1: MOV DX,308h IN AX,DX AND AL,80h JZ LAP1 MOV DX,308h OUT DX,AL MOV DX,301H IN AL,DX MOV BL,2d MUL BL ;chọn kênh 1
; cho cổng 74244 hoạt động
; khởi động cổng 74374
MOV BL,10D XOR AH,AH DIV BL ADD AL,25 POP AX ;Xuống dòng POP AX MOV AH,2 MOV DL,0DH INT 21H MOV DL,0AH INT 21H MOV AX,@Data MOV DS, AX ;Hiển thị thông báo LEA DX,Msg2 MOV AH,9 INT 21H PUSH AX POP AX MOV BX, 10 MOV CX, 0 Lap: DIV BX PUSH DX INC CX CMP AX, 0 JG Lap POP BX ADD BL, ‘0’ MOV DL, BL ; Chia AX cho BX ; Cất phần dƣ thu đƣợc trong DX ; tăng biến đếm ; So sánh AX với 0 ; Nếu lớn hơn 0 thì chia tiếp ; Lấy dữ liệu đƣợc cất ra BX ; Chuyển số thành ký tự ; In ra màn hình ; tạo biến đếm
MOV AH, 2 INT 21h PUSH AX CMP AL,27D JA Above ;Nếu lớn hơn CMP AL,25D JB Below ; Nếu nhỏ hơn JMP Start Above: ;Tắt quạt MOV DX,308h MOV AL,00h OUT DX,AL JZ Start Below: ; Giảm nhiệ t độ bằng cách bật quạt MOV DX,308h MOV AL,01h OUT DX,AL JZ Start Main EndP End Main
NGUYÊN LÝ HOẠT ĐỘNG:
Trƣớc tiên, ta đƣa 301H vào DX rồi OUT AL ra cổng 301h. Khi đó A0, A8, A9 = 1, còn lại là bằng 0, IOW =1, IOR =0. Chân AEN ở mức 0 cho phép CPU làm chủ hệ thống, kết hợp với IOW và IOR qua các cổng NAND để khởi động 74688. Do A8, A9 =1 tức là P = Q chân Y sẽ tích cực ở mức thấp, tạo tín hiệu cho phép 74245 (chân E) và 74138 (chân G2A,G2B) hoạt động. Tại 74245, IOR =0 DIR = 1, cho phép dữ liệu chuyển từ A sang B (đi ra). Tại 74138, vì tín hiệu IOW , A3, A4 = 0,0,0 nên Y0 đƣợc chọn tích cực ở mức thấp, qua mạch NOT tạo tín hiệu khởi động
ADC0809 (chân ALE và START) bắt đầu quá trình chuyển đổi dữ liệu nhiệt độ từ tín hiệu tƣơng tự sang tín hiệu số. Do A0 =1, A1,A2 = 0, nên đầu vào IN1 đƣợc chọn. Sau đó, ta lại đƣa 308H vào DX, rồi đƣa dữ liệu vào qua cổng 308 bằng lệnh IN. Lúc này A8, A9, A3 = 1, còn lại là bằng 0, IOW =0, IOR = 1. Với IOW , A4, A3 = 1,0,1, thì tại 74138 chân Y5 đƣợc chọn, đƣa tín hiệu khởi động 74244. Khi ADC0809 thực hiện chuyển đổi xong dữ liệu từ tín hiệu tƣơng tự sang tín hiệu số thì nó sẽ phát ra một tín hiệu qua chân EOC đến 74244 (lúc này đã đƣợc khởi động) dữ liệu đƣợc truyền từ 1A1 qua 1Y1 lên D7 của kênh dữ liệu. Lúc này trong CPU sẽ thực hiện kiểm tra bằng cách AND 7 bit thấp của dữ liệu xem EOC có bằng 1 tức thông báo đã chuyển đổi xong hay chƣa. Nếu đã xong (D7 = 1) sẽ thực hiện đọc dữ liệu vào AL qua cổng 301H từ ADC0809. Lúc này A8, A9, A0 =1, còn lại là bằng 0, IOR = 1, IOW =0. Tại 74245, IOR = 1 DIR = 0, cho phép dữ liệu chuyển từ B sang A. Tại 74138, IOW ,A3,A4=1,0,0 chân Y4 tích cực, qua mạch NAND cho phép chân OE của ADC0809 tích cực, kết thúc một chu kỳ chuyển đổi và chuyển sang đọc dữ liệu số đã đƣợc mã hoá. Lúc này trong AL thu đƣợc dữ liệu chính là nhiệt độ X. Sử dụng lệnh MUL và ADD để thực hiện tính nhiệt độ thực theo công thức đã cho: T=25+0,2X. So sánh với nhiệt độ đặt ra (ở đây là 27), nếu nhiệt độ đặt ra vẫn lớn hơn nhiệt độ đo đƣợc thì lại quay lại quá trình đọc nhiệt độ tiếp, nếu nhiệt độ đặt ra nhỏ hơn nhiệt độ đo đƣợc thì bắt đầu quá trình đƣa tín hiệu trạng thái ra cổng 308H để điều khiển 74374. Lúc này, trên 74138 IOW , A4, A3 = 0,0,1 chân Y1 đƣợc chọn, khởi động 74374 để điều khiển quạt.