1. Trang chủ
  2. » Giáo Dục - Đào Tạo

phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51

72 335 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 72
Dung lượng 1,34 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

trong phòng…Chương trình giao diện và điều khiển truyền số liệu dùng ngôn ngữ lập trình Visual Basic 6.0Kit vi xử lý trong phòng 1 và phòng có cùng sơ đồ khối như sau RS-485 RS-485RS-485

Trang 1

PHẦN II THIẾT KẾ MẠCH ĐIỀU KHIỂN GIÁM SÁT NHÀ CAO TẦNG DÙNG VI XỬ

LÝ 89C51

A Thiết kế mạch :

I Tổng quan về đề tài:

1 Sơ lược về đề tài:

Trên cơ sở thiết kế một thiết bị bằng cơ điện tử để có thể tạo thành ngôi nhà thông minh khi gắn thiết bị này vào Nhờ vào bộ xử lý trung tâm mà thiết bị này có thể hoạt động một cách chính xác theo chương trình đã lập sẵn Trong ngôi nhà càng có nhiều thiết bị thông minh thì càng làm cho cuộc sống tiện nghi hơn Do tính mềm dẻo của bộ xử lý trung tâm nên ta có thể nạp lại chương trình điều khiển cho nó tùy theo từng nhu cầu ứng dụng riêng biệt, cũng như có thể cho phép 1 hay nhiều thiết bị cùng hoạt động khi đến giờ định sẵn

Đèn, quạt gió và máy lạnh sẽ tự động bật lên khi có người vào phòng Máy đun nước nóng, máy giặt sẽ tự động hoạt động khi đến giờ quy định Hệ thống tưới cây trong vườn cũng được điều khiển từ thiết bị này Cửa gara sẽ tự mở ra khi xe vừa đến trước cổng và cũng tự đóng lại khi xe ra khỏi gara

Do sự hạn chế về thời gian cho nên em chỉ thiết kế mạch có một số tính năng nêu trên:

_ Đèn và quạt gió bật lên khi có người vào nhà

_ Đèn và quạt gió tắt khi người trong nhà đi ra ngoài hết

_ Phát hiện nguy cơ gây ra hỏa hoạn và phát tín hiệu chuông báo động

_ Đo nhiệt độ hiện tại trong phòng và hiển thị lên panel

_ Có khả năng phát hiện trộm xâm nhập và phát tín hiệu chuông báo động.Như theo yêu cầu của đề tài: tất cả các kit vi xử lý sẽ được giám sát và có thể

ra lệnh từ máy tính Máy tính truyền lệnh cần vi xử lý thi hành đến đúng kit vi xử lý mà nó cần tác động Có thể là lệnh yêu cầu tắt đèn , quạt, hay là yêu cầu gởi dữ liệu từ phòng, nhiệt độ, đèn tắt hay mở, bao nhiêu người trong phòng Theo lý thuyết, thì các thành viên trong một hệ thống mạng đều có thể liên kết dữ liệu với nhau bằng cách thông qua Master là PC Nhưng do mạng trong đề tài em thiết kế không cần tốc độ cao và cũng không có nhu cầu trao đổi dữ liệu giữa các kit vi xử lý riêng lẻ, cho nên em dùng phương pháp hỏi vòng từ PC Qua đó, PC sẽ lần lượt hỏi vòng tuần tự qua từng kit vi xử lý Dữ liệu từ PC gửi về kit vi xử lý gồm có các byte yêu cầu cộng thêm hai byte thêm vào: một byte đầu tiên xác định địa chỉ nơi đến, byte tiếp theo sẽ xác định nội dung giao tiếp giữa vi xử lý và PC, chẳng hạn gởi nhiệt độ, số người

Trang 2

trong phòng…Chương trình giao diện và điều khiển truyền số liệu dùng ngôn ngữ lập trình Visual Basic 6.0

Kit vi xử lý trong phòng 1 và phòng có cùng sơ đồ khối như sau

RS-485

RS-485RS-485

BUS

Sơ đồ khối toàn bộ hệ thống điều khiển và giám sát ngôi nhà

Vi xử líAtmel89C51

Mạch động lực

đóng cắt các thiết

bị

Mạch hồi tiếp

trạng thái thiết bị

Mạch gia công tín

hiệu đo

Mạch hiển thị nhiệt độCảm biến quang

IC đo nhiệt độ

Mạch nguồn

Sơ đồ khối kit vi xử lý

Trang 3

2 Chức năng của từng khối:

a Vi xử lý 89C51:

Đây là bộ xứ lý trung tâm của mạch đặt tại từng phòng trong ngôi nhà 89C51 là loại IC có khả xử lý và điều khiển theo một chương trình đã lập sẵn và có khả năng thực hiện các yêu cầu gởi đến từ máy tính Vi xử lý 89C51 trong mạch thiết kế có thể thực hiện các chức năng như sau:

_ Phát tín hiệu báo động bằng chuông khi phát hiện có trộm xâm nhập

_ Đo nhiệt độ trong phòng và hiển thị lên một panel đặt trong phòng, khi nhiệt độ trong phòng khá cao thì nó sẽ ra lệnh bật máy điều hòa nhiệt độ hay quạt gió hoạt động

_ Khi phát hiện có nguy cơ hỏa hoạn nó sẽ báo động bằng chuông, sau đó nó sẽ ngắt CB của nguồn điện

_ Bật đèn lên khi có người vào phòng

_ Tắt đèn khi người trong phòng ra ngoài hết

b Khối cảm biến quang:

Dùng đề tạo một tín hiệu đưa về vi xử lý, tùy theo mức của tín hiệu này mà thiết bị sẽ biết được có trômg xâm nhập hay không

c Khối hiển thị nhiệt độ:

Khối này có dạng một panel hình chữ nhật được gắn trên từng phòng, nhiệt độ trong phòng sẽ được hiển thị trên panel này

d Mạch động lực:

Dùng để đóng các thiết bị, nhận tín hiệu kích đóng từ vi xử lý

e Mạch hồi tiếp trạng thái các thiết bị:

Dựa vào mức của tín hiệu hồi tiếp về mà vi xử lý sẽ biết đươc thiết bị nào đang bật, thiết bị nào đang tắt

II Thiết kế phần cứng

1 Mạch cảm biến quang:

Sơ đồ mạch như sau:

R6 1k

INT0 +

R4 100

Z ENER 5.1V

Trang 4

Bình thường không có gì che chắn giữa LED phát và LED thu thì áp ra sẽ là 5V Khi có vật che chắn giữa LED phát và LED thu thì mạch sẽ cho ra áp là 0V.

Do khi LED thu dẫn thì áp rơi trên R4, chỉ từ 1V – 1,5V nên ta phải đệm thêm mạch khuếch đại dùng OPAMP Tùy theo đặc tính của từng con LED phát và LED thu mà áp đặt trên trở 100 ohm sẽ khác nhau Bình thường áp đặt trên điện trở 100 ohm là 1V, dùng mạch khuếch đại OPAMP để áp đủ 5V đưa vào vi xử lý

Để đảm bảo rằng áp đưa trở về vi xử lí sẽ không lớn hơn 5V( tránh hư vi xử lí khi ta đặt áp vào lớn hơn áp hoạt động cuả nó), ta mắc thêm một Diode Zenner ổn áp 5.1V vào ngõ ra của mạch khuếch đại

Tính toán mạch khuếch đại:

Dòng qua LED: 10 mA – 20 mA để giúp cho LED hoạt động được lâu dài Dòng cực đại mà ta có thể đưa vào chạy qua LED là 20 mA Thông thường trong tính toán mạch để đơn giản ta cứ cho dòng chạy qua LED là 15 mA

Khi LED dẫn, áp trên LED sẽ nằm trong khoảng từ 1,7-2V Cho nên dòng qua LED:

Vin = I LED thu x100 = 1 V

Để áp ra LM 741 đúng 5V khi LED thu dẫn ta chọn hệ số khuếch đại như sau:

Trang 5

Bình thường, LED phát phátliên tục, khi không có vật che chắn giữa LED phát và LED thu thì áp ra mạch khuếch đại sẽ đúng 5 V Vi xử lý sẽ nhận biết đây là trạng thái mức cao (tích cực) Nếu có vật che chắn giữa LED phát và LED thu thì áp ra sẽ không phải chính xác là 0 V, mà có thể từ 0 V – 2V Nằm trong tầm điện áp này thì vi xử lý sẽ phát hiện ra đây là mức không tích cực (mức thấp ) Tín hiệu này đưa vào chân INT0 của vi xử lý Ta sẽ thiết lập chế độ hoạt động ngắt ở cạnh xuống Nghĩa là có sự chuyển đổi từ 5V sang 0V thì mạch sẽ xãy ra 1 ngắt

Để thiết lập chế độ này ta dùng lệnh sau gán cho vi xử lý:

SETB IT0Lệnh này sẽ cho phép vi xử lí đáp ứng ngắt theo cạnh xuống của tín hiệu áp đưa vào chân INT0

2 Mạch mô phỏng cảm biến quang phát hiện người:

Thông thường để phát hiện người đi vào hay đi ra ta dùng một cảm biến quang Cách này thông dụng dễ lắp đặt nhưng nó không phân biệt được người vào người ra Nó chỉ có thể nhận biết có người thông qua sự thay đổi trạng thái đầu vào là mức cao hay mức thấp Bên cạnh đó, còn có một nhược điểm nữa là sẽ gây cho chương trình chạy sai khi có người vô hình đứng chắn ngang cảm biến quang trong khoảng thời gian tương đối lâu Lúc đó vi xử lý sẽ hiểu rằng có rất nhiều người ra vào nó sẽ bị đếm lầm Để khắc phục tình trạng này ta dùng cùng lúc hai cảm biến quang đặt cách nhau ở một khoảng cách xác định Dựa vào sự thay đổi trạng thái của cảm biến quang nào trước, cảm biến quang nào sau ta sẽ nhận biết được người ra hay vào phòng Phương pháp này rất hiệu quả, nhưng cũng có thể không nhận ra số người một cách chính xác như ta mong muốn Giả sử khi có hai người cùng sóng bước thì cảm biến quang chỉ phát hiện ra một người mà thôi Ta cũng có thể khắc phục tình trạng này bằng cách thiết kế cửa sao cho chỉ cho một người qua lọt mà thôi

Trang 6

Chức năng mạch đếm người được em thiết kế như sau: khi có một cảm biến quang tác động sẽ làm cho áp trên chân INT1 chuyển từ 1 sang 0 Vi xử lý sẽ nhảy đến chương trình ngắt kiểm tra giữa hai chân P1.0 và P1.1 xem chân nào xuống mức 0 trước: Nếu P 1.0 tác động trước, P1.1 tác động sau thì ta sẽ nhận biết có người vào Nếu P1.1 tác động trước thì ta nhận biết có người ra

Bình thường khi không nhấn các SW1 và SW2 thì INT1 ở trạng thái tích cực Khi một trong hai nút nhấn SW1 và SW2 được nhấn tức là có một chân đưa vào IC

7408 xuống mức 0 Cho nên áp sau khi qua 7408 sẽ là mức 0 (do IC 7408 là IC thực hiện chức năng logic AND) Tùy thuộc vào ta nhấn nút nhấn nào trước, nút nhấn nào sau, vi xử lý sẽ phát hiện người ra hay vào mà xử lý chương trình điều khiển

3 Mạch động lực đóng cắt thiết bị:

Sơ đồ nguyên lý mạch động lực như sau:

Nguyên lý hoạt động của mạch như sau:

Khi cần đóng đèn thì vi xử lý sẽ đặt chân điều khiển đèn lên mức tích cực Khi đó Opto sẽ dẫn làm cho Phototransistor dẫn bão hòa, áp VC1 ≈ 0.2V, sẽ kéo theo Q1 dẫn Khi Q1 dẫn sẽ cho phép rơ le đóng Khi Relay đóng thì đèn sẽ được cấp nguồn: đèn sáng Do mạch thiết kế dựa trên nguyên tắc kiểm tra áp trên đèn sẽ biết đèn

+ -

U2

AD741

3

2 6

R5 22k

R1 330

U1

4N26

1 6

2

5 4

Trang 7

đóng hay mở Khi đèn được đóng bằng Relay điện trở công suất RW sẽ chia áp trên đèn, do điện trở công suất mắc nối tiếp đèn nên đèn sáng thì trên điện trở công suất sẽ có áp Aùp này sau khi qua cầu Diode chỉnh lưu sẽ được đưa trở về vi xử lý.

Tính toán mạnh như sau:

R1 = 330 Ω : đảm bảo dòng qua Opto đủ nhỏ để Opto hoạt động tốt.R2 = 2.2 k để giảm dòng giúp cho Phototransistor được hoạt động bình thường, không rơi vào tình trạng quá dòng

Diode D5 dùng để xả dòng điện cảm ứng trong cuộn dây Relay khi ta kick ngắt Relay

Điện trở công suất RW, do đèn dùng để thiết kế cho mạch có các thông số định mức như sau:

1000µ để cho áp ra được thẳng Qua bộ đệm LM741 để cho áp ra ổn định thì tín hiệu nối tiếp về được đưa vào một chân của vi xử lý

Nguyên nhân tại sao khi thiết kế mạch động lực đóng ngắt nguồn ta dùng nguồn +12V riêng và dùng Opto để kích Do khi relay đóng ngắt sẽ gây ra nhiễu điện từ, nhiễu này sẽ ảnh hưởng trực tiếp lên nguồn cung cấp cho vi xử lý Nó sẽ làm cho áp cấp cho vi xử lý có dạng gai áp Nếu không truyền số liệu về máy tính thì điều này không quan trọng Nhưng ta thiết kế mạch có truyền dữ liệu nên cần phải dùng nguồn riêng và Opto để tránh gây nhiễu sẽ ảnh hưởng đến việc truyền dữ liệu Đồng thời Opto cũng thực hiện việc cách ly mạch giữa 2 kit cho nên mạch sẽ hoạt động tốt hơn

Mạch khuếch đại Opamp dùng để ổn định áp hồi tiếp về khi có nhiều thiết bị mắc trên cùng đường dây Khi đó dòng sẽ giảm và áp đặt vào điện trở công suất cũng giảm theo Để đảm bảo mạch hoạt động tốt ta dùng mạch khuếch đại áp sau đó dùng Diode Zenner để ổn áp ở mức +5V đưa vào vi xử lý

4 Mạch nguồn cung cấp:

Mạch nguồn thiết kế trên nguyên tắc tạo ra nguồn đôi: +/-12V, +/-5V Để có thể được như vậy ta dùng biến áp loại 6 đầu ra: 0V, 6V, 9V, 15V, 18V và 24V Ta sẽ dùng điểm chuẩn 12V là mass Cho điện xoay chiều đi qua 2 cầu Diode chỉnh lưu

Trang 8

Sơ đồ khối nguồn cung cấp cho các kit vi xử lý

Mạch dùng áp lưới chỉnh lưu thành dòng một chiều biến áp chọn loại 3A Cầu Diode sẽ chỉnh lưu áp xoay chiều thành dòng một chiều Bộ phận nắm dòng là tụ 220

µF (25V), nó sẽ làm cho dòng DC được thẳng hơn

Lọc áp giúp giảm đi các gợn sóng cao tần

IC ổn áp là các họ IC: 7805 ( ổn áp +5V), 7905 (ổn áp –5), 7912 (ổn áp –12V), và 7812 ( ổn áp +12)

Do mạch không dùng đến công suất lớn nên không cần dùng đến transistor bổ trợ dòng cho mạch Với các Diode chỉnh lưu chọn loại 3A, thì các IC ổn áp sẽ hoạt động tốt Ta nên gắng thêm tấm tỏa nhiệt cho 4 IC ổn áp này Vì khi IC càng nóng thì áp ra sẽ không ổn định và có nguy cơ chết IC

5 Mạch hiển thị nhiệt độ bằng LED 7 đoạn:

Để hiển thị nhiệt độ đo được ta dùng các LED 7 đoạn để hiển thị Dùng IC

74247 để giải mã sang LED 7 đoạn Mạch hiển thị được nối với Port 2 của vi xử lý 4 bit thấp của Port2 dùng cho giải mã LED, 4 bit dùng để tạo tín hiệu chọn LED Ta dùng phương pháp quét để hiển thị LED Thời gian giữa hai lần quét cách nhau 1ms để đảm bảo cho LED đủ sáng LED được chọn để dùng LED Anode chung.Sơ đồ mạch kích như sau:

Khi tín hiệu chọn LED = 0, Transistor Q1sẽ dẫn đến VC ≈ Vcc =5V, tương ứng với áp để LED sáng Tín hiệu chọn LED =1 (+5 V) thì transistor sẽ ngưng dẫn, các LED sẽ tắt vì không có áp

6 Công tắc đóng ngắt thiết bị theo yêu cầu:

Nắn

Lọc bỏ Các gợn Sóng

5 V -5V +12 V -12V220V

R1 10k TIN HIEU CHON LED

IC giải mã LED

74247

Trang 9

Mạch này mô phỏng chức năng của 1 công tắc đóng ngắt thiết bị Khi SW3 không được nhấn thì P2.7 ở mức cao Vi xử lý sẽ kiểm tra chân P2.7=0 nghĩa là ta đã nhấn nút SW thì nó sẽ thực hiện một chương trình con có nhiệm vụ đóng đèn khi đèn đang tắt, và tắt đèn khi đèn đang đóng Đây là phần thiết kế thêm giúp cho mạch phần cứng và ngay cả chương trình phần mềm điều khiển một cách linh động không quá cứng Nếu để cho vi xử lý làm nhiệm vụ đếm người và đóng mở đèn hay thiết bị khác thì người dùng không thể can thiệp và cũng không thể thay đổi gì được chương trình điều khiển đã lập trình sẵn trong ROM vi xử lý.

Mạch phần cứng thiết kế có phần hồi tiếp trạng thái của các thiết bị Cho nên chương trình điều khiển cũng không có gì gây ra phức tạm lắm Thiết bị đóng, tín hiệu hồi tiếp về mức 1 (+5V), thiết bị ngắt tín hiệu hồi tiếp về là mức 0(0V) Nếu ta nhấn nút SW3, và tín hiệu hồi tiếp về đang là mức 0 thì vi xử lý hiểu rằng đó là yêu cầu

đóng thiết bị Nó sẽ xuất tín hiệu đóng Relay cấp nguồn cho thiết bị Ngược lại, nếu

tín hiệu hồi tiếp về đang là mức 1 thì vi xử lý sẽ hiểu là yêu cầu ngắt thiết bị và nó sẽ kích ngắt relay

Ta cũng có thể thiết kế phần cứng để thực hiện phần này để cho vi xử lý thực hiện ít công việc nó phải làm Nếu chỉ dùng một nút nhấn để yêu cầu đóng hay ngắt thiết bị thì vi xử lý sẽ phải xử lý chương trình Ta thiết kế hai nút nhấn tương tự như thế và quy định nút nào nhấn là đóng, ngắt thiết bị

7 Mạch chuông

Chuông dùng để phát tín hiệu báo động khi có sự cố: cảm biến nhiệt phát hiện xảy ra hỏa hoạn hay có trộm chẳng hạn Tùy theo từng sự kiện mà vi xử lý sẽ kích chuông kêu dài ngắn khác nhau:

- Phát hiện trộm: reo liên tục

- Nếu nhiệt độ lên gần 100oC: chuông reo 3 hồi, mỗi hồi 5 giây và cách nhau giữa 2 lần là 1 giây

- Nhiệt độ nằm trong tầm báo động 2: chuông reo 2 hồi, mỗi lần cách nhau 1 giây và dài 5 giây mỗi hồi

Do mạch chuông tiêu thụ dòng khá lớn, nên ta phải dùng một relay để kích đóng ngắt mạch chuông Dòng lớn sẽ gây chết transistor khi ta dùng transistor để lái mạch chuông mà không phải dùng relay

8 Mạch giao tiếp máy tính qua mạng RS-485

Thông thường các họ vi xử lý có ngõ truyền thông theo mức TTL Và các thiết bị đầu cuối khác (DTE ) có cổng truyền thông là RS_232 Để có thể nối mạng các thiết bị này ta phải chuyển từ TTL ,RS_232 sang RS_485 Để thực hiện

Trang 10

việc chuyển đổi này có rất nhiều vi mạch trên thị trường , nhưng họ vi mạch của hãng MAXIM là phổ biến nhất hiện nay Đó là MAX 481 , MAX 483, MAX 485 , MAX 487 ,MAX 488, MAX 489 , MAX 490, MAX 1487 Tiêu biểu là vi mạch MAX 485 , nó chuyển từ mức TTL sang RS_485 , truyền theo phương pháp Half_Duplex

Bên trong mỗi vi mạch chứa một bộ phát (Driver) và một bộ thu

Đặc điểm :

RS _485 là chuẩn giao tiếp nối tiếp bất đồng bộ cân bằng, sự truyền thông tin trên dây xoắn đôi bán song công ( Half _ duplex) , nghĩa là tại một thời điểm bất kì trên dây truyền chỉ có thể là một thiết bị hoặc là truyền hoặc là nhận

• RS_485 cho phép 32 bộ truyền trên bus

• RS_485 có ngõ ra 3 trạng thái

• RS_485 cho phép tốc độ truyền tối đa là 2.5Mbps

Sơ đồ chân của MAX_485:

DIP/SO µMAX

Nếu A > B là200mV, RO là cao

Trang 11

Nếu A < B là 200mV , RO là thấp.

2 4 /RE Cho phép ngõ ra bộ thu :

RO được cho phéo khi /RE là thấp

RO là trở kháng cao khi /RE là cao

Các ngõ ra lái A và B được cho phép khi DE cao

Các ngõ ra lái A và B là trở kháng cao khi

DE thấp

Nếu những ngõ ra lái được cho phép thì từng ngõ có chức năng như làcác đường lái

Khi chúng là trở kháng cao , chức năng của chúng như là các đường thu của bộ thu nếu /RE là thấp

DI thấp thì A thấp và B cao

DI cao thì Acao và B thấp

6 8 A Ngõ vào vộ thu và ngõ ra bộ lái đều không

đảo

7 1 B Ngõ vào bộ thu và ngõ ra bộ lái đều đảo

5.25V Vcc

Trang 12

Sơ đồ mạng half_ duplex RS485:

Sơ đồ mạng RS485 Full_Duplex:

Để tăng chiều dài cáp truyền , ta có thể dùng bộ repeater như sau:

M A X 4 8 5

1 2

3 4 6

4 5

Y Z

Y Z

R 1

1 2 0

D A T A I N

D A T A O U T

Trang 13

Bộ Repeater hay gọi là bộ tiếp sức , có chức năng làm khuếch đại tín hiệu liên lạc giữa các máy tính với nhau , khoảng cách truyền thông tin có thể đạt tới 3 km.

Mạng RS-485 em thiết kế trong đề tài này là mạng bán song công (Half- Duplex): dữ liệu chỉ đi từ Master đến các vi xử lý hay từ các vi xử lý đến Master Tại một thời điểm trên mạng chỉ có một phần tử truyền và cho phép các phần tử khác có thể nhận thông điệp đó Có điều quan trọng ta nên chú ý là với sơ đồ mạch RS-485 được thiết kế như trên thì chỉ có thể giao tiếp giữa Master (PC) và các vi xử lý nhưng giữa các vi xử lý không thể liên lạc trực tiếp với nhau Chúng giao tiếp với nhau nếu có thể đó thuộc một dạng giao tiếp khác Cách thức hoạt động của mạng như sau:

Với sơ đồ mạng như trên ta có thể giao tiếp được với 32 slave thông qua một Master là PC Đồng thời do mạng truyền dữ liệu trên hai dây xoắn đôi lại nên sẽ đỡ rắc rối trong quá trình thiết kế cũng như khi nối dây

Bộ chuyển đổi ( Converter ) từ RRL sang RS-485 thực ra chỉ cần một con IC

75176 cũng đã đảm nhận vai trò này tương đối tốt IC là 75176 ( hay tương đương

PC

Converter RS-232↔ TTLRS-232 ↔TTL

Converter

Con verterTTL↔RS-485

Vi xử

Trang 14

Max-485 ) có hai chân điều khiển hoạt động là DE và /RE Chân /RE tích cực ( mức logic 0 ) sẽ cho phép vi xử lý nhận dữ liệu từ Master: chế độ thu dữ liệu Chân DE tích cực ( mức logic 1) sẽ cho phép mạch phát dữ liệu từ vi xử lý về Master Dùng một chân từ các Port của vi xử lý cũng như chân để phát Thông thường khi lập trình giao tiếp bằng phần mềm, ta thường dùng chân RTS hay CIS để điều khiển IC 71576.

Ban đầu, chân /RE của75176 sẽ ở mức thấp: chế độ thu 75176 nhận dữ liệu từ máy tính, thông thường là địa chỉ Sau đó, nghĩa là khi Master phát địa chỉ xong thì nó chuyển trạng thái chân /RE xuống mức thấp để cho phép nhận tín hiệu hồi đáp từ các slave Các slave sau khi nhận được địa chỉ từ Master nó sẽ so sánh với địa chỉ của nó Nếu đúng địa chỉ thì slave sẽ đưa chân DE lên mức một để truyền tín hiệu trả lời về Master, sau đó thì nó lại đưa chân /RE sang mức 0 để sẵn sàng nhận dữ liệu hay yêu cầu cũng như lệnh mới từ Master

Sơ đồ cụ thể như sau:

Hai điện trở 120Ω được nối vào 2 đầu đều xa nhất của mạng Chiều dài xa nhất có thể là đầu này và đầu kia là 4000 feet ( 1,2 km ) Còn gọi là điện trở đầu cuối ( Terminal Register ) Dây dẫn là loại xoắn đôi 26 AWG

Ta có 2 chân điều khiển thu phát dữ liệu, để đơn giản việc điều khiển, ta thường nối chung 2 tường điều khiển này cùng nhau Nếu tín hiệu này mức cao thì một trong hai sẽ ở mức tích cực cũng như một trong hai sẽ ở trạng thái thụ động

9 Mạch cảm biến nhiệt độ dùng IC LM335.

Nhiệt độ là một tín hiệu dạng tương tự nó hiện hữu theo thời gian và liên tục Để dễ dàng đo được những tín hiệu không phải là điện ta thường chuyển nó sang dạng tín hiệu điện để có thể đo dễ dàng hơn Có nhiều phương pháp để chuyển từ tín hiệu nhiệt độ sang tín hiệu điện, tuy nhiên có 2 phương pháp thông dụng nhất thường được sử dụng như sau:

M A X 4 8 5

1 2

3 4 6

7

R OR E

D E

D I A

Trang 15

- Chuyển từ nhiệt độ sang dạng đo điện trở: để đo điện trở thì mạch gia công cũng như mạch đo đều có Cho nên ta tìm cách tạo ra một mối quan hệ giữa điện trở của một vật đến nhiệt độ cần đo Ta dùng một vật liệu thay đổi nhiệt độ sẽ gây ra thay đổi điện – còn gọi là nhiệt điện trở Từ đó ta có thể chuyển từ trở thành áp và dùng các mạch khuếch đại tương đương đo một cách dễ dàng.

- Chuyển từ nhiệt độ sang trực tiếp điện áp: cách này chỉ có thể dùng các

IC nhiệt mà thôi Các IC này có đặc tính là áp ra sẽ thay đổi theo nhiệt độ môi trường Ta dùng thêm các mạch gia công thích hợp để có thể ghi nhận được sự thay đổi điện áp hay cũng chính là sự thay đổi đầu vào Tùy vào hệ số nhiệt của chất liệu cấu thành IC nhiệt là hệ số nhiệt dương ( áp ra tăng dần như tuyến tính theo nhiệt độ ), hay hệ số nhiệt âm ( áp ra tăng dần theo nhiệt độ )

Các hàm quan hệ giữa áp và nhiệt độ thông thường là hàm mũ Cho nên khi nhiệt độ càng tăng thì nhiệt độ tuyến tính sẽ giảm đi và cũng không đo được nhiệt độ một cách chính xác ở phần phi tuyến đó Trong phạm vi của đềtài này em dùng IC nhiệt LM335 để làm mạch đo nhiệt độ

Sơ đồ nguyên lý như sau:

IC này có thể hoạt động tốt đến nhiệt độ 150oC, áp ra tuyến tính với nhiệt độ cho nên rất đơn giản cho quá trình tính toán

Đặc tính của LM335 như sau:

+ Ở 0oK thì áp ra sẽ là 0V

R1

2.2K

+ -

U15

LM741 3

U11 LM741 3

U13

LM741 3

Trang 16

+ Nhiệt độ tăng 1oC thì áp ra sẽ tăng 10 mV.

Như vậy, theo cách tính nhiệt độ theo oC thì ở 0oC áp ra của LM335 sẽ là 2.73V Để dễ dàng cho việc xử lý, ta phải thiết kế mạch gia công sao cho khi ở 0oC thì áp ra của LM335 cũng là 0V

Ta thiết kế thêm mạch trừ cộng vào áp ra của LM335 Mạch trừ này có vai trò tạo ra một áp-2.73V để triệt tiêu áp trên LM335 khi nhiệt độ môi trường là 0oC ( -278oK )

Hàm biểu diễn của áp theo nhiệt độ của LM335 có thể xem gần đúng như sau:

Vout = 0.01*t (0oC)

Tín hiệu này để có thể hiển thị lên LED ta phải dùng 1 IC chuyển từ áp ra dạng tín hiệu số: ADC 0809

Đặc tính của ADC như sau:

+ Cấp nguồn đơn : + 5V+ Tần số xung clock = 12 MHz:16+ Thời gian chuyển đổi tối đa : 120 µ.+ Cần có một xung start để kích quá trình chuyển đổi Nếu ADC đang chuyển đổi mà có xung start mới thì sẽ bắt đầu lần đổi tiếp theo

+ 8 kênh Analog vào

+ 8 đường data ra hay nói chính xác hơn đây là ADC 8 bit+ Sai số tổng cộng không điều chỉnh được: +/-1 LSB + Ngõ ra phù hợp với mức điện áp TTL

Data ở ngõ ra là một số nguyên N nằm trong khoảng :

N= (Vin / VREF+)x 255±* 256 Độ chính xác tuyệt đối

Vin : tín hiệu Analog đầu vào cần chuyển đổi

VREF :tín hiệu cấp nguồn cho ADC 0809Công thức trên chỉ đúng trong trường hợp ADC được cấp nguồn đơn VREF nối mass

Trước quá trình chuyển đổi ta cần thiết lập cổng ngõ rào cho quá trình chuyển đổi ADC 0809 có 3 chân A0, A1, A2 dùng để xác lập kênh Analog vào

Trang 17

⇒Số mà ADC đổi ra cực đại là:

N=1.5/5*256= 76 hay 77 ( do sai số ± 1 LSR )

Ta thấy rằng: nhiệt độ thực tế là 150oC mà đo chỉ có 77 oC hay nói cách khác : nhiệt độ đo được qua ADC từ mạch trừ 2.73V đưa trực tiếp vào sẽ bé đi 2 lần so với giá trị thực

Điện áp ngõ ra của mạch khuếch đại như sau:

Vout = Av.(V1-V2)V1 : tín hiệu chuẩn 2.73 VV2: tín hiệu ra từ LM 335 phụ thuộc vào nhiệt độ Vậy áp ngõ ra sẽ thay đổi một lượng là Av.10mV khi nhiệt độ thay đổi 1oC

Do ta cần đến 4 LED để hiển thị nhiệt độ đo được nên có 1 LED thập phân Như thế sẽ dẫn đến tình trạng để từ nhiệt độ này tăng thêm 1oC nữa thì mạch sẽ qua hai trạng thái: một số nguyên sau đó đến số thập phân hay nói một cách khác đi để đo và hiển thị LED thập phân ta phải làm sao khi nhiệt độ thay đổi 1oC thì phải bằng hai lần độ phân giải của ADC0809

Av x 10mV = 2 x19.6 mVVới 19.6 mV là độ phân giải của ADC 0809 =5/225

Av = 2 x 19,6 /10 = 3.92

Ta chọn : RI = 39 K

RI = 10KNhư vậy, áp sau khi qua bộ khuếch đại sẽ có giá trị như sau:

Trang 18

Vout = 3,9 x 0,01t = 39 x t ( mV ) ; t (oC)

Với độ phân giải của ADC là 19,6 mV thì giá trị sau khi qua ADC sẽ có giá trị

là: 39 x t /19,6 = 2 x t (mV)Để thể hiện lên LED một số phần thập phân ta sẽ phải hiển thị giá trị như sau :

10 x t (mV) Cho nên giá trị sau khi qua bộ đổi ADC sẽ phải nhân thêm với 5 rồi sau

đó mới biến đổi qua mã BCD nén và hiển thị lên LED 7 đoạn.

10 Thiết kế mạch 89C51 trên sơ đồ các chân và chức năng của chúng:

10.1 Giới thiệu vi xử lý 89C51:

a Giới thiệu :

Vi xử lý AT89C51 được chế tạo bởi hãng ATMEL, về cơ bản nó có cấu tạo bên trong , sơ đồ chân cũng như sử dụng tập lệnh tương thích với họ 8031 của hãng INTEL

Các đặt điểm cơ bản của vi mạch AT89C51:

• Đơn vị xử lý trung tâm 8 bit đã được tối ưu hóa để đáp ứng các chức năng điều khiển

• Khối logic xử lý theo bit thuận tiện cho các phép toán Boole

• Bộ tạo dao động giữ nhịp bên trong (đến 12Mhz)

• Tập lệnh rất phong phú

• Giao diện nối tiếp có khả năng hoạt động song công , đồng bộ (UART)

• 16 (32) đường dẩn vào/ ra hai hướng và từng hướng có thể được định địa chỉ một cách tách biệt

• Năm nguồn ngắt vơí hai mức ưu tiên

• Có thể mở rộng bộ nhớ chương trình ( ROM ) bên ngoài lên đến 64KB

• Có thể mở rộng dung lượng bộ nhớ dữ liệu (RAM ) bên ngoài lên đến 64KB

• Hai bộ đếm / định thời 16 bit

• Bộ nhớ EEPROM nội 4KB

• Dung lượng bộ nhớ RAM nội , nhiều nhất có thể lên đến 128 byte

b Sự sắp xếp chân ra :

 Port 0 : Là port hai chức năng trên các chân 32 – 39 Khi sử dụng bộ nhớ trong thì nó

như là một port I/O ( P0.0 → P0.7) Khi sử dụng bộ nhớ ngoài thì nó đóng vai trò như một bộ MUX địa chỉ/ data

 Port 1 :

Trang 19

Là một port I/O trên các chân 1 – 8 (P1.0→ P1.7 ) nó chỉ được dùng để giao tiếp với các thiết bị ngoài và không có các chức năng khác.

 Port 2:

Là một port công dụng kép trên các chân 21 – 28 Khi sử dụng bộ nhớ trong thì nó như là một port I/O đa dụng (P2.0→P2.7), khi sử dụng bộ nhớ ngoài thì port 2 chính là byte cao của các đường địa chỉ (A8→A15)

Trong trường hợp sử dụng bộ nhớ chương trình trong thì PSEN không tích cực

 ALE :(Address Latch Enable ) Chân 30 , tích cực mức cao trong nửa chu kỳ đầu chỉ báo dữ liệu trên port chính là địa chỉ byte thấp A0÷A7

 EA : (External Acess) Chân 31 , cho phép chọn bộ nhớ chương trình trong hay ngoài

+ EA =0 : MCU sử dụng bộ nhớ chương trình ngoài

+ EA = 1 : MCU sử dụng bộ nhớ chương trình trong

 RST (Reset ):

Ngõ vào RST trên chân 9 là ngõ Reset của 8951 , khi ngõ này lên mức cao (trong ít nhất hai chu kỳ máy ) các thanh ghi bên trong 8951 được đưa về trạng thái mặc định

c Các thanh ghi chức năng đặc biệt:

Vùng RAM nội địa chỉ từ 80H – FFH , trong vùng này bố trí khoảng 21 thanh ghi đặc biệt , phụ trách một chức năng nào đó của MCU

i Thanh ghi PSW (Program status Word):

Thanh ghi từ trạng thái chương trình ở địa chỉ D0H chứa các cờ ( các bit chức năng ) trạng thái của hệ thống :

Trang 20

Bit Ký hiệu Địa chỉ Ý nghĩa

PSW.7 CY D7H Cờ nhớ

PSW.6 AC D6H Cờ nhớ phụ

PSW.5 F0 D5H Cờ 0

PSW.4 RS1 D4H Bit 1 chọn bank thanh ghi

PSW.3 RS0 D3H Bit 0 chọn bank thanh ghi

00 : bank 0

01 : bank 1

10 : bank 2

11 : bank 3PSW.2 OV D2H Cờ tràn

PSW.1 - D1H Dự trữ

PSW.0 P D0H Cờ parity chẵn

ii Thanh ghi B :Địa chỉ F0H , truy xuất bit , ngoài chức năng là thanh ghi đa dụng còn tham gia vào 2 phép toán nhân và chia

iii Thanh ghi SP (Stack Poiter):

Địa chỉ 81H , vùng ngăn xếp nằm trong RAM nội về nguyên lý dung lượng tối đa là 128 byte Trước khi cất vào stack nội dung SP tăng lên 1 rồi mới cất (nội dung SP là con trỏ địa chỉ ), khi lấy dữ liệu ra khỏi stack nội dung SP giảm đi 1 sau khi lấy data

iv Thanh ghi DPTR (Data Pointer):

Sử dụng làm con trỏ địa chỉ bộ nhớ dữ liệu ngoài

Chia làm hai thanh ghi :

DPL ( địa chỉ 82H ) chứa byte thấpDPH ( địa chỉ 83H) chứa byte cao

v Các thanh ghi cổng ngoại vi :Các lệnh liên quan đến xuất nhập ngoại vi đều thông qua các thanh ghi cổng

Port 0: Thanh ghi P0 (địa chỉ 80H)

Port 1: Thanh ghi P1 ( địa chỉ 90H)

Port 2: Thanh ghi P2 ( địa chỉ A0H)

Port 3: thanh ghi P3 (địa chỉ B0H)

vi Các thanh ghi timer : TMOD (địa chỉ 89H) : Chọn mode làm việc timer

TCON ( địa chỉ 88H) : điều khiển timer

Trang 21

TL0 (địa chỉ 8AH): byte thấp timer 0 TH0 (địa chỉ 8CH): byte cao timer 0 TL1 (địa chỉ 8BH): byte thấp timer 1 TH1 ( địa chỉ 80H): byte cao của timer 1vii Các thanh ghi SIO :

SCON (98H) : khởi động mode và điều khiển SIO

SBUF ( 99H) : chuyển dữ liệu từ nối tiếp thành song song và ngược lại.viii Các thanh ghi phục vụ ngắt :

Có 5 nguồn ngắt với 2 cấp ưu tiên:

+Thao tác trên thanh ghi IE (A 8H) : cho phép / cấm ngắt

+Thao tác trên thanh ghi IP (B8H) : cấp ưu tiên ngắt

ix Thanh ghi điều khiển công suất (PCON) : Địa chỉ 87H , không truy xuất bit được, các bit của thanh ghi này được dùng trong việc tác động lên tốc độ baud (SMOD) trong truyền thông nối tiếp, đưa vi mạch vào mode tạm nghĩ hay mode hạ nguồn

d Hoạt động của timer :

89C51 có 2 bộ timer 16 bit: Timer 0 và timer 1

i Thanh ghi TMOD :Có địa chỉ 89H , là thanh ghi 8 bit, đặc các mode làm việc cho timer

Tóm tắt thanh ghi TMOD :

7 GATE 1 Bit cổng , GATE =1 timer chỉ đếm khi INT1=1

C/T=1: counter, đếm bằng xung ck ngoài ngõ vào T1

C/T=0 :timer, xung ck trong từ dao động nội

3 Gate 0 Bit cổng ( timer 0)

Chọn mode :

Trang 22

ii Thanh ghi TCON : Địa chỉ 88H , truy xuất bit được, là thanh ghi 8 bit

Tóm tắt thanh ghi TCON:

TCON.7 TF1 8FH Cờ báo tràn timer 1, phần cứng đặt

TF1=1 khi timer tràn, xóa bằng mềm hoặc cứng

TCON.6 TR1 8EH Điều khiển ON/ OFF timer1,

TR1=1:chạyTR1=0 :ngừng

e Cổng nối tiếp :

Giao diện nối tiếp ở bên trong của bộ vi xử lý 8951 cho phép nối bộ vi xử lý với một vi xử lý khác hay với một máy tính một cách rất đơn giản Bởi vì giao diện được thực hiện nhờ bộ UART hoạt động độc lập, nên bộ vi xử lý hoàn toàn tự

do đối với các nhiệm vụ khác Để khởi tạo giao diện thanh ghi SCON cần phải được nạp bằng các giá trị thích hợp

Thanh ghi SCON ( địa chỉ 98h)

SM0, SM1 Chọn mode làm việc:

SM0 SM1

0 0 :Mode 0 thanh ghi dịch 8 bit, baud rate cố định (fck/12)

0 1 :Mode 1 UART 8 bit, baud rate thay đổi (đặt bằng timer 1)

1 0 :Mode 2 UART 9bit , baurate cố định (fck/32 hoặc fck /64)

1 1 :Mode 3 UART 9 bit , baud rate thay đổi (đặt bằng timer 1)

Trang 23

SM2 : chế độ nhiều máy tính

REN : Cho phép bộ thu , cho phép bộ phát

TB8 : Bit phát thứ 9 trong mode 2 và 3, đặt xóa bằng mềm

Trong rất nhiều trường hợp , người ta sử dụng chế độ hoạt động loại 1 và như vậy có một UART 8 bit với việc tạo ra tốc độ baud bằng timer 1 Dòng dữ liệu

8 bit được mở đầu bằng một bit bắt đầu (startr bit ) và kết thtúc bằng một bit dừng(stop bit) Tốc độ baud bằng 1/16(SMOD=1) hoặc 1/32 (SMOD=0) của tốc độ tràn của timer 1

f Hoạt động ngắt (interrupt):

i Giới thiệu :Một ngắt là sự xảy ra một điều kiện – một sự kiện- mà nó gây ra treo tạm thời chương trình trong khi điều kiện đó được phục vụ bởi một chương trình khác

ii Tổ chức ngắt trong 8951:

8951 có 5 nguồn ngắt :

+ Ngắt bằng tín hiệu ngoài qua ngõ INT0 (ngắt ngoài INT0)

+ Ngắt bằng tín hiệu ngoài qua ngõ INT1 (ngắt ngoài INT1)

+ Ngắt khi timer 0 tràn (ngắt timer 0)

+ Ngắt khi timer1 tràn (ngắt timer 1)

+ Ngắt khi SIO phát / thu xong 1 ký tự (ngắt SIO)

Địa chỉA8H, truy xuất bit được, cho phép / cấm ngắt

Thanh ghi IE :

IE.7 EA AFH Cho phép / cấm toàn cục

Trang 24

-IE.4 ES ACH Cho phép ngắt SIOIE.3 ET1 ABH Cho phép ngắt timer 1

10.2 Tổ chức và sử dụng các chân ra của 89C51:

Sơ lược về chức năng phần cứng cũng như chương trình phần mềm như sau:

- Đo nhiệt độ và hiển thị lên LED, lưu lại giá trị nhiệt độ hiện tại và gởi về máy tính

- Tùy theo giá trị của nhiệt độ đo được mà vi xử lý 89C51 sẽ nhận ra nhiệt đang nằm ở tầm báo động nào và có hành động tương ứng:

+ to < 50oC : báo động cấp 1- chỉ báo chuông+ to < 80oC : báo động cấp 2- báo chuông hai lần+ to = 100oC: báo động cấp 5 : báo chuông ba lần

- Cảm biến quang: chống trộm : phát tín hiệu kích chuông reo khi cảm biến này tác động

- Mạch mô phỏng cảm biến quang đếm số người trong phòng

• Số người trong phòng >= 1: đóng thiết bị

• Số người trong phòng < 1: tắt thiết bị

- Mạch nút nhấn dùng để yêu cầu tắt / đóng thiết bị theo ý muốn của người trong phòng

• Port 0 : đây là port xuất nhập hai chiều, nữa chu kỳ là đường data và nữa chu kỳ kế là đường địa chỉ ( byte thấp) Em đã dùng port này để đọc giá trị đổi được từ ADC0809

• Port 2: dùng để giải mã LED và tạo TH chọn LED sáng

 4 bit thấp nhất của port 2: p2.0, po2.1, p2.2, p2.3 dùng để đưa vào mạch giải mã LED 74247

 2 bit kế tiếp : p2.4, p2.5 đưa vào mạch giải mã 741SD để tạo TH chọn LED nào sáng Do LED thuộc loại Anod chung nên chỉ LED nào có TH chọn LED ở mức thấp thì nó sẽ sáng Nghĩa là tín hiệu chọn LED sáng tích cực ở mức 0

 P2.7 dùng để tạo một nút nhấn yêu cầu đóng cắt đèn Khi nút nhấn, P2.7 đưa xuống mức 0, chương trình phần mềm sẽ kiểm tra chân này xem nút có bị nhấn hay không

Trang 25

 Tạo xung start cho ADC0809 ta dùng chân WR, đầu

CT ta đặt và xóa chân này sẽ tạo ra một xung kích cho ADC 0809 đổi và đợi cho đến khi ADC đổi xong

 Tần số vào ADC0809 nhỏ hơn 12 MHz nên ta phải hạ tần số từ 12 MHz xuồng mức cần thiết : 12 MHz / 16 = 750 KHz Để làm việc này ta dùng IC 74393

 Để tạo tín hiệu kích đóng các Relay ta dùng các chân P1.2, P1.4, P1.5 và P1.6

+ P1.2 : điều khiển Relay đóng / ngắt quạt

+ P1.4: điều khiển Relay đóng / ngắt đèn

+ P1.5 : điều khiển Relay đóng / ngắt nguồn điện khi xảy ra tình huống khẩn cấp.+ P1.6: điều khiển chuông

Đảm bảo các tín hiệu kích này có thể kích được các Relay đóng hoàn toàn, ta cho

các tín hiệu này đi qua IC đệm 74373

 Chân T0 dùng để điều khiển phần xuất nhập data của vi xử lý

+ T0 = 0 : vi xử lý nhận dữ liệu từ PC

+ T0 = 1 : vi xử lý truyền dữ liệu về PC

Trang 26

B Lưu đồ giải thuật và chương trình vi xử lí:

Lưu đồ giải thuật phải thực hiện được các chức năng như sau:

_ Đo nhiệt độ trong phòng và hiển thị nhiệt độ này lên Panel

_ Nhiệt độ cao hơn 800C thì báo động bằng chuông

_ Tự phát hiện ra khi nào thì trong phòng có người thì tự bật đèn và quạt lên._ Tự phát hiện khi nào trong phòng không còn thì tắt các đèn và quạt đi

_ Khi có người đi vào phòng mà không qua cửa chính thì sẽ cho đó là trộm và báo động bằng chuông

I Lưu đồ giải thuật điều khiển :

_ Giải thuật chương trình chính

_ Giải thuật chương trình đo nhiệt độ và hiển thị lên Panel

_ Giải thuật chương trình tự phát hiện người đi vào hay ra qua cử chính

_ Giải thuật chương trình điều khiển các thiết bị trong phòng

_ Giải thuật chương trình phát hiện người vào phòng không qua cửa chính

_ Giải thuật chương trình truyền nhận dữ liệu từ máy tính

1 Giải thuật chương trình chính:

Khi nút Reset được nhấn thì chương trình sẽ nhảy đến địa chỉ 0000h Khởi động các thanh ghi điều khiển và các ô nhớ cần thiết Trong chương trình chính gồm có:

• Kích khởi ADC 0809 chuyển đổi

• Delay chờ ADC đổi xong

• Đọc dữ liệu từ ADC về, xử lí và hiển thị lên LED 7 đoạn

• Kiểm tra tiếp trạng thái các thiết bị

• Kiểm tra các nút nhấn có được nhấn hay không Khi đã thực hiện xong chu trình trên thì vi xử lí sẽ quay trở lai kích khởi ADC đổi lần tiếp theo

• Kiểm tra xem nhiệt độ trong phòng đang nằm trong tầm nào để gọi các chương trình con phục vụ tương ứng:

 500C≤nhiệt độ ≤ 800C: gọi chương trình con CHUONG1

 800C ≤nhiệt độ ≤ 1000C: gọi chương trình con CHUONG2

 Nhiệt độ ≥ 1000C: gọi chương trình con CHUONG3

• Cấm ngắt truyền, chỉ cho phép vi xử lí nhận, chỉ được phép truyền khi PC yêu cầu

Trang 27

Cho phép đổi AD

Đọc giátrị từ AD

Hiển thị nhiệt độ

So sánh với các nhiệt

Trang 28

Lưu đồ giải thuật chương trình chính

Giao tiếp

Đúng địa chỉ

Bật tắt các thiết bị

Nhận lệnh

Truyền dữ liệu Bật tắt các thiết bị

MAIN

Trang 29

Gọi Chuong3Tắt nguồn

So sánh

Cất dữ liệu từ ADC 0809

vào thanh ghi A

Trang 30

Kiểm tra nút nhấn

Y

N

Lưu đồ giải thuật chương trình con kiểm tra nút nhấn.

 Chương trình này dùng để cho phép người dùng có thể yêu cầu tắt mở các thiết bị theo ý muốn

Giải thích:

• P2.7 =0: nghĩa là nút yêu cầu tắt quạt được nhấn Lúc này vi xử lí sẽ kiểm tra tín hiệu hồi tiếp từ quạt về- chân P1.3 của Port1

 P1.3=1: quạt đang ở trạng thái đóng, yêu cầu vi xử lí thực hiện việc kích ngắt quạt

 P1.3=0: quạt đang ở trạng thái ngắt, yêu cầu vi xử lí thực hiện việc kích ngắt quạt

• P1.7=0 : nghĩa là nút yêu cầu tắt mở đèn được nhấn Lúc này vi xử lí kiểm tra tín hiệu hồi tiếp về từ đèn- chân P3.5 của Port3

Trang 31

 P3.5=1: đèn đang đóng, yêu cầu vi xử lí tắt đèn

 P3.5=0: đèn đang tắt, yêu cầu vi xử lí kích đóng đèn

Trang 32

P2.7=

0P1.7=

Set cờ yêu cầu

Tắt quạtMở quạt

Lưu đồ giải thuật chương trình con Request

Trang 33

Chương trình phần mềm sẽ mặc định số người trong phòng khi reset chương trình là 1 người Ta cũng dễ dàng thay đổi số người mặc định bằng cách thay đổi chương trình phần mềm.

Chính vì mặc định là số người trong phòng lớn hơn 1, nên khi reset thì vi xử lí sẽ kích đóng các thiết bị ngay Vi xử lí sẽ hoạt đông theo chương trình một cách hoàn hảo khi ta không tác động yêu cầu từ bên ngoài Có thể giải thích rõ ràng hơn điều này như sau:

Đầu tiên chương trình sẽ thực hiên việc đóng các thiết bị trong chu kỳ chạy đầu tiên Giả sử người trong phòng muốn tắt đèn, thì người ta sẽ nhấn nút yêu cầu tắt đèn, khi đó vi xử lí sẽ ra lệnh kích ngắt đèn Tín hiệu hồi tiếp về từ đèn là mức thấp,

vi xử lí sẽ hiểu là đèn đang ở trạng thái ngắt Đến chu trình quét tiếp theo, vi xử lí sẽ lại kiểm tra ô nhớ 30H- ô nhớ lưu số người trong phòng- và nhận thấy số ngươi trong phòng lớn hơn 1 nhưng đèn lại tắt, nó lại ra lệnh kích đóng đèn trở lại Điều này sẽ dẫn đến việc ta không thể có thể thiệp đóng ngắt các thiết

bị theo ý muốn

Để tránh được điều này, ta dùng một ô nhớ trong vùng RAM của 8951 làm cờ yêu cầu Khi có nút yêu cầu đóng ngắt thiết bị nào được nhấn thì cờ yêu cầu này sẽ được set để đánh dấu cho vi xử lí biết là đến chu trình chạy kế tiếp nó sẽ không cần kích đóng các thiết bị trong phòng mặc dù thiết bị đang ngắt cũng như trong phòng đang có người

2 Giải thuật chương trình phát hiện người vào ra phòng:

Để thực hiện chức năng này ta dùng ngắt ngoài 1 của vi xử lý Khi có người đi qua thì cảm biến quang sẽ tác động, gây ra một ngắt trong chương trình vi xử lý Dựa vào cảm biến quang nào tác động trước thì ta sẽ biết người vào hay ra

Đây là chương trình con mô phỏng cảm biến quang dùng để đếm số người trong phòng và dựa theo số người hiện tại trong phòng là bao nhiêu người mà vi xử lí sẽ gọi chương trình con phục vụ tương ứng Chương trình này dùng 3 cờ để nhận biết trạng thái cảm biến quang nào tác động trước, cảm biến nào tác sau

Trang 34

Sơ đồ khối trên cho thấy cách hoạt động của hai cảm biến quang đếm người Tín hiệu ra từ hai cảm biến quang này được đưa vào chân P1.0 và P1.1 của vi xử lí 89C51 khi một trong hai cảm biến quang này tác động thì nó sẽ gây ra một ngắt ngoài Lí do để dùng ngắt ngoài là giúp cho vi xử lí hoạt động một cách chính xác khi có người vào hay ra Ta đưa hai tín hiệu ở ngõ ra của hai cảm biến quang này đi qua một mạch logic AND Chỉ cần một cảm biến tác động thì tín hiệu ra của mạch AND sẽ ở mức 0.

Khi ngắt ngoài một1 xảy ra thì ta không thể biết được cảm biến quang nào tác động trước, cảm biến quang naào tác động sau Thứ tự tác của hai cảm biến trên sẽ cho ta biết là người đó đi ra hay đi vào

Cảm biến quang 1 Cảm biến quang 2 Trạng thái vi xử lí hiểu

Bảng mô tả hoạt động của hai cảm biến quang phát hiện người.

Ta cần dùng đến 3 cờ để xác định thứ tự tác động của các cảm biến quang Các cờ này được đặt tên như sau:

 Cờ 1: địa chỉ ô nhớ là 2BH

 Cờ 2: địa chỉ ô nhớ là 2CH

 Cờ 3: địa chỉ ô nhớ là 2DHCả 3 cờ này dùng để đánh dấu chân nào của vi xử lí được quét trước, chân nào chưa được quét Nguyên nhân, do ta cần kiểm tra một lúc cả hai chân của vi xử lí –P1.0 và P1.1 để phát hiện chân nào xuống mức 0 trước, mà vi xử lí thì chỉ có thể kiểm tra từ trên xuống Khi vi xử lí nhảy đến chương trình phục vụ ngắt này nó sẽ kiểm tra chân P1.0 đầu tiên, nếu chân này ở mức 1 nghĩa là cảm biến quang thứ 2 tác động

LED phát

LED thu

Đi vào

P1.0 Cảm biến quang 1

Trang 35

trước Sau đó vi xử lí sẽ nhảy xuống kiêm tra chân P1.1 và lại nhạy lên kiểm tra chân P0.0 lần nữa Các cờ này còn được dùng để tránh cho các cảm biến quang tác động sai do nhiễu Giả sử xảy ra trường hợp chỉ có một trong hai cảm biến quang tác động thì chương trình sẽ dựa vào trạng thái các cờ này mà thoát khỏi chương trình phục vụ ngắt để quay về chương trình chính.

Trang 36

Cờ 3=1

Ngày đăng: 28/11/2015, 06:52

HÌNH ẢNH LIÊN QUAN

Sơ đồ khối toàn bộ hệ thống điều khiển và giám sát ngôi nhà - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ kh ối toàn bộ hệ thống điều khiển và giám sát ngôi nhà (Trang 2)
Sơ đồ khối kit vi xử lý - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ kh ối kit vi xử lý (Trang 2)
Sơ đồ mạch như sau: - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ m ạch như sau: (Trang 3)
Sơ đồ nguyên lý mạch động lực như sau: - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ nguy ên lý mạch động lực như sau: (Trang 6)
Sơ đồ khối nguồn cung cấp cho các kit vi xử lý - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ kh ối nguồn cung cấp cho các kit vi xử lý (Trang 8)
Sơ đồ chân của MAX_485: - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ ch ân của MAX_485: (Trang 10)
Sơ đồ mạng RS485 Full_Duplex: - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ m ạng RS485 Full_Duplex: (Trang 12)
Sơ đồ mạng half_ duplex RS485: - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ m ạng half_ duplex RS485: (Trang 12)
Sơ đồ nguyên lý như sau: - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ nguy ên lý như sau: (Trang 15)
Sơ đồ khối trên cho thấy cách hoạt động của hai cảm biến quang đếm người.  Tín hiệu ra từ hai cảm biến quang này được đưa vào chân P1.0 và P1.1 của vi xử lí  89C51 - phần 2 thiết kế mạch điều khiển giám sát nhà cao tầng dùng vi xử lý 89c51
Sơ đồ kh ối trên cho thấy cách hoạt động của hai cảm biến quang đếm người. Tín hiệu ra từ hai cảm biến quang này được đưa vào chân P1.0 và P1.1 của vi xử lí 89C51 (Trang 34)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w