thiết kế hệ thông tự động bật đèn khi trời tối ,sử dụng pic16f877a,kèm bản vẽ +code liên hệ email: ledung020398@gmail.com MỤC LỤC CHƯƠNG I: NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG VI ĐIỀU KHIỂN.5 1.Xây dựng mục tiêu và sơ đồ khối của hệ thống dùng vi điều khiển:5 1.1.Tìm hiểu về đề tài:5 1.2.Xây dựng mục tiêu và sơ đồ khối:6 2.Nguyên lý hoạt động của hệ thống:7 CHƯƠNG II: TÍNH CHỌN LINH KIỆN SỬ DỤNG TRONG HỆ THỐNG.9 1.Giới thiệu các linh kiện trong hệ thống:9 2.Chọn linh kiện trong hệ thống:9 2.1. Vi điều khiển PIC16F877A:9 2.2. Quang trở:16 a.Giới thiệu:16 b.Sử dụng bộ cảm biến photoresistor:16 2.3. Led 7 đoạn:17 a.Giới thiệu:17 b.Sử dụng led 7 đoạn anode chung:17 2.4. Điện trở:18 2.5. Tụ điện:19 a. Giới thiệu:19 b. Sử dụng tụ gốm:19 2.6. Thạch anh:20 2.7. Nguồn DC 5V Adapter:20 2.8. Transistor20 3.Tính toán linh kiện:21 CHƯƠNG III: MÔ PHỎNG HỆ THỐNG23 1.Thiết kế mạch nguyên lý:23 1.1.Module cảm biến:23 1.2.Module điều khiển trung tâm:24 1.3.Module tương tác điều khiển (hiển thị):24 1.4.Module chấp hành:25 2.Chạy mô phỏng:26 2.1.Lưu đồ thuật toán:26 2.2.Mô phỏng:26 CHƯƠNG IV: CHẾ TẠO MẠCH THỰC TẾ29 1.Thiết kế mạch in:29 2.Lắp đặt thiết bị và hoàn thiện mạch:30 3.Đánh giá kết quả:30
Trang 3MỤC LỤC
CHƯƠNG I: NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ THỐNG VI ĐIỀU KHIỂN 5
1 Xây dựng mục tiêu và sơ đồ khối của hệ thống dùng vi điều khiển: 5
1.1 Tìm hiểu về đề tài: 5
1.2 Xây dựng mục tiêu và sơ đồ khối: 6
2 Nguyên lý hoạt động của hệ thống: 7
CHƯƠNG II: TÍNH CHỌN LINH KIỆN SỬ DỤNG TRONG HỆ THỐNG 9
1 Giới thiệu các linh kiện trong hệ thống: 9
2 Chọn linh kiện trong hệ thống: 9
2.1 Vi điều khiển PIC16F877A: 9
2.2 Quang trở: 16
a Giới thiệu: 16
b Sử dụng bộ cảm biến photoresistor: 16
2.3 Led 7 đoạn: 17
a Giới thiệu: 17
b Sử dụng led 7 đoạn anode chung: 17
2.4 Điện trở: 18
2.5 Tụ điện: 19
a Giới thiệu: 19
b Sử dụng tụ gốm: 19
2.6 Thạch anh: 20
2.7 Nguồn DC 5V Adapter: 20
2.8 Transistor 20
3 Tính toán linh kiện: 21
CHƯƠNG III: MÔ PHỎNG HỆ THỐNG 23
1 Thiết kế mạch nguyên lý: 23
1.1 Module cảm biến: 23
1.2 Module điều khiển trung tâm: 24
1.3 Module tương tác điều khiển (hiển thị): 24
1.4 Module chấp hành: 25
2 Chạy mô phỏng: 26
2.1 Lưu đồ thuật toán: 26
Trang 42.2 Mô phỏng: 26
CHƯƠNG IV: CHẾ TẠO MẠCH THỰC TẾ 29
1 Thiết kế mạch in: 29
2 Lắp đặt thiết bị và hoàn thiện mạch: 30
3 Đánh giá kết quả: 30
Trang 5CHƯƠNG I: NGUYÊN LÝ HOẠT ĐỘNG CỦA HỆ
THỐNG VI ĐIỀU KHIỂN.
1 Xây dựng mục tiêu và sơ đồ khối của hệ thống dùng vi điều khiển:
1.1 Tìm hiểu về đề tài:
a Khái quát chung:
“Thiết kế hệ thống tự động bật đèn khi trời tối”
Ngày nay, những ứng dụng của vi điều khiển đã đi sâu vào đời sống sinh hoạt
và sản xuất của con người Thực tế hiện nay là hầu hết các thiết bị dân dụng điều có sựgóp mặt của Vi điều khiển và vi xử lý Ứng dụng vi điều khiển trong thiết kế hệ thốnglàm giảm chi phí thiết kế và hạ giá thành sản phẩm đồng thời nâng cao tính ổn địnhcủa thiết bị cũng như hệ thống Trên thị trường có rất nhiều họ vi điều khiển như 8051của hãng Intell, PIC của hãng Microchip, H8 của hãng Hitachi,vv
Việc phát triển ứng dụng các hệ thống vi điều khiển đòi hỏi những hiểu biết về
cả phần cứng và phần mềm, nhưng cũng chính vì vậy mà các hệ thống vi xử lý được
sử dụng đẻ giải quyết các bài toán khác nhau Tính đa dạng của các ứng dụng phụthuộc vào việc lựa chọn các hệ thống vi xử lý cụ thể cũng như vào kỹ thuật lập trình
Các bộ vi xử lý có mặt trong các thiết bị điện tử hiện đại như máy thu hình, máyghi hình dàn âm thanh, các bộ điều khiển cho lò sưởi và hệ thống điều hòa đến cácthiết bị điều khiển dùng trong công nghiệp Lĩnh vực ứng dụng của hệ thống vi xử lýnhư nghiên cứu khoa học, cũng như trong y tế giao thông đến công nghiệp, nănglượng Chúng ta có thể sử dụng các ngôn ngữ khác như lập trình C, C++, Visual,
Ngày nay, cùng với sự phát triển nhanh chóng của ngành tự động hóa, rất nhiềuứng dụng của tự động hóa đã giúp ích cho con người rất nhiều đời sống cũng nhưtrong sản xuất nhằm nâng cao năng suất lao động và giảm thiểu tối đa sức lao độngcủa con người Ứng dụng được mọi người biết đến nhiều nhất là hệ thống tự đóngngắt đèn không cần sự tác động của con người Xuất phát từ thực tiễn trên kết hợp vớinhững kiến thức chúng em có được trong quá trình học tập tại Trường Đại Học BáchKhoa Đà Nẵng, chúng em đã được thầy TS.Ngô Đình Thanh giao đề tài “thiết kế hệthống tự động bật đèn khi trời tối” đặt tại các hành lang ngoài trời, làm đồ án môn học
“Vi điều khiển – vi xử lý”
Trang 6b Yêu cầu đề tài:
- Dùng cảm biến ánh sáng Hiển thị thông số đo được bằng LED 7 đoạn
- Thao tác điều khiển khống chế được mô phỏng bằng 3 LED màu xanh, vàng,
đỏ
- Xây dựng 2 chương trình riêng biệt gồm:
Dùng ngôn ngữ C để lập trình hệ thống
Dùng hợp ngữ để lập trình phần thiết lập ban đầu
- Hệ thống tối thiểu phải có: Vi điều khiển, cảm biến, hiển thị, một số phím bấm
- Chương trình vi điều khiển có sử dụng timer, ngắt.
c Phương án thiết kế:
- Dùng quang trở để cảm biến ánh sáng.
- Hiển thị số lần bật tắt bằng LED 7 đoạn.
- Hiển thị các mức sáng theo cường độ cảm biến ánh sáng đã đo được bằng 3
LED màu xanh, vàng, đỏ
- Khối nguồn cung cấp: Adapter 5V/2A.
- Vi điều khiển sử dụng PIC16F877A.
- Chương trình để điều khiển sử dụng CCS để mô phỏng.
1.2 Xây dựng mục tiêu và sơ đồ khối:
a Mục tiêu:
- Tìm hiểu nguyên lý hoạt động của đèn chiếu sáng công cộng, từ đó tìm hiểu
nguyên tắc điều khiển đèn cũng như mạch điều khiển
- Mục tiêu là điều khiển độ sáng của đèn và điều khiển tự động (bật, tắt) đèn qua
cảm biến ánh sáng (quang trở)
- Qua tìm hiểu, sinh viên có thể vẽ toàn bộ sơ đồ mạch điều khiển, tiếp theo là
mô phỏng mạch cảm biến ánh sáng trên phần mềm proteus, từ đố tiến hành mualinh kiện cần thiết và khâu còn lại là đấu dây và chạy thử
Trang 7Hình 1: Sơ đồ khối của hệ thống vi điều khiển PIC
2 Nguyên lý hoạt động của hệ thống:
Sơ đồ khối của hệ thống bật, tắt đèn khi trời tối như trên hình với nguyên lý hoạt động khá đơn giản Các khối nguồn hoạt động và cấp nguồn 5V để giúp các khối như khối hiển thị và cảm biến ánh sáng có thể hoạt động và đặc biệt là
vi điều khiển PIC 16F877A Nhìn chung thì hệ thống sẽ hoạt động dựa trên nguyên lý:
- Khi có nguồn nuôi mạch, cảm biến ánh sáng sẽ tương tác với bên ngoài.
- Sau đó, cảm biến sẽ gửi dữ liệu qua vi điều khiển PIC Vi điều khiển sẽ nhận
được dải nhiều giá trị về mức độ sáng tối từ cảm biến ánh sáng, tính toán
- Dựa vào dải nhiều giá trị về mức độ sáng tối mà cảm biến ánh sáng gửi về, vi
điều khiển sẽ liên tục so sánh giá trị nhận được trong dải đó với ngưỡng đã lập trình sẵn và đồng thời mô phỏng theo các mức:
Mức cao(3): 0-200
Mức bình thường(2): 200 - 400
Mức thấp(1): 400-600
Trang 8Hiển thị tương ứng trên các LED xanh, vàng, đỏ.
- Khi ngoài trời sáng, tức là ở mức cao, khối nguồn sẽ cấp nguồn cho LED xanh
để thông báo
- Tương tự khi trời tối, tức là ở mức thấp, vi điều khiển sẽ xuất dữ liệu cho bộ
điều khiển và LED đỏ sẽ được cấp nguồn
Các khối hiển thị có chức năng như sau:
- Khối điều khiển (3 LED xanh, đỏ, vàng): Khi cảm biến nhận một dải giá trị rồi
gửi về cho vi điều khiển thì sẽ có chương trình điều khiển khống chế được thực hiện trong vi điều khiển để nhận biết cái dải ánh sáng Từ đó xuất ra đèn báo mức độ sáng tối của môi trường được mô phỏng bằng 3 LED xanh, đỏ, vàng
- Khối hiển thị số lần bật (LED 7 đoạn) sẽ hiển thị số lần bật tắt của ba led xanh,
đỏ, vàng
- Vi điều khiển sẽ xuất dữ liệu và điều khiển bật, tắt các led xanh, đỏ, vàng theo
mức độ sáng tối của môi trường
Trang 9
CHƯƠNG II: TÍNH CHỌN LINH KIỆN SỬ DỤNG
TRONG HỆ THỐNG.
1 Giới thiệu các linh kiện trong hệ thống:
Hệ thống tự động bật đèn khi trời tối có các phần chính như:
- Khối nguồn DC 5V adapter
- Khối cảm biến: Sử dụng quang trở để làm module cảm biến ánh sáng
- Khối điều khiển trung tâm dùng vi điều khiển PIC16F877A
- Khối hiển thị: LED 7 đoạn, và các LED đơn khác
2 Chọn linh kiện trong hệ thống:
2.1 Vi điều khiển PIC16F877A:
a Sơ đồ chân của PIC16F877A:
Hình 2: Sơ đồ chân pic16f877a.
Trang 10 40 chân trên được chia thành 5 PORT, 2 chân cấp nguồn, 2 chân GND, 2 chân thạch anh và một chân dùng để RESET vi điều khiển:
và nhập dữ liệu từ ngoại vi vào vi điều khiển
Việc xuất nhập dữ liệu ở PIC16F877A khác với họ 8051 Ở tất cả các PORT của PIC16F877A, ở mỗi thời điểm chỉ thực hiện được một chức năng :xuất hoặc nhập Để chuyển từ chức năng này nhập qua chức năng xuấthay ngược lại, ta phải xử lý bằng phần mềm, không như 8051 tự hiểu lúc nào
là chức năng nhập, lúc nào là chức năng xuất
Trong kiến trúc phần cứng của PIC16F877A, người ta sử dụng thanh ghi TRISA ở địa chỉ 85H để điều khiển chức năng I/O trên Muốn xác lập các chân nào của PORTA là nhập (input) thì ta set bit tương ứng chân đó trong thanh ghi TRISA Ngược lại, muốn chân nào là output thì ta clear bit tương ứng chân đó trong thanh ghi TRISA Điều này hoàn toàn tương tự đối với các PORT còn lại
Ngồi ra, PORTA còn có các chức năng quan trọng sau:
- Ngõ vào Analog của bộ ADC : thực hiện chức năng chuyển từ Analog sang Digital
Trang 11PORTB có 8 chân Cũng như PORTA, các chân PORTB cũng thực hiện được 2 chức năng : input và output Hai chức năng trên được điều khiển bới thanh ghi TRISB Khi muốn chân nào của PORTB là input thì ta set bit tương ứng trong thanh ghi TRISB, ngược lại muốn chân nào là output thì ta clear bit tương ứng trong TRISB.
Thanh ghi TRISB còn được tích hợp bộ điện trở kéo lên có thể điều khiểnđược bằng chương trình
PORTC:
PORTC có 8 chân và cũng thực hiện được 2 chức năng input và output dưới sự điều khiển của thanh ghi TRISC tương tự như hai thanh ghi trên Ngồi ra PORTC còn có các chức năng quan trọng sau:
- Ngõ vào xung clock cho Timer1 trong kiến trúc phần cứng
- Bộ PWM thực hiện chức năng điều xung lập trình được tần số, duty cycle: sử dụng trong điều khiển tốc độ và vị trí của động cơ v.v…
- Tích hợp các bộ giao tiếp nối tiếp I2C, SPI, SSP, USART PORTD:
PORTD có 8 chân Thanh ghi TRISD điều khiển 2 chức năng input và output của PORTD tương tự như trên PORTD cũng là cổng xuất dữ liệu củachuẩn giao tiếp song song PSP (Parallel Slave Port)
PORTE:
PORTE có 3 chân Thanh ghi điều khiển xuất nhập tương ứng là TRISE Các chân của PORTE có ngõ vào analog Bên cạnh đó PORTE còn là các chân điều khiển của chuẩn giao tiếp PSP
c Cấu trúc phần cứng của PIC16F877A:
PIC16F887A là dòng PIC khá phổ biến, khá đầy đủ tính năng phục vụ chohầu hết tất cả các ứng dụng thực tế Đây là dòng PIC khá dễ cho người mới làm quen với PIC có thể học tập và tạo nền tản về họ vi điều khiển PIC của mình
Cấu trúc tổng quát của PIC16F877A như sau:
- 8K Flash Rom
- 368 bytes Ram
- 256 bytes EFPROM
- 5 port vào ra với tín hiệu điều khiển độc lập
- 2 bộ định thời Timer0 và Timer2 8 bit
Trang 12- 1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệm năng lượng với nguồn xung clock ngoài
- 2 bộ Capture/ Compare/ PWM
- 1 bộ biến đổi Analog -> Digital 10 bit, 8 ngõ vào
- 2 bộ so sánh tương tự
- 1 bộ định thời giám sát (Watch Dog Timer)
- 1 cổng song song 8 bit với các tín hiệu điều khiển
- 1 cổng nối tiếp
- 15 nguồn ngắt
Hình 3: Sơ đồ khối vi điều khiển pic16f877a.
Công suất nhập I/O:
Trong vi điều khiển PIC16F877A có 5 cổng:
Trang 13Cổng A gồm 6 chân: RA0, RA1 RA5Cổng B gồm 8 chân: RB0, RB1, RB7Cổng C gồm 8 chân: RC0, RC1, RC7Cổng D gồm 8 chân: RD0, RD1, RD7Cổng E gồm 3 chân: RE0, RE1, RE2Mỗi cổng thực chất được quản lý bởi các thanh ghi PORTA, PORTB, PORTC,
PORTD, PORTE nằm trong bộ nhớ RAM của vi điều khiển Xem hình sau:
Bộ nhớ RAM của vi điều khiển PIC 16F877A gồm 4 bank nhớ Nhìn vào các bank nhớ ta có thể thấy các thanh ghi được đặt tên và các thanh ghi đa mục đích (General Purpose Register)
Trang 14Các thanh ghi được đặt tên là các thanh ghi đặc biệt dùng để điều khiển, quản lý hoặc thể hiện trạng thái của các khối chức năng trong vi điều khiển ví dụ PORTA là đại diện cho các chân cổng A, PORTB là đại diện cho các chân cổng B v.v Các thanh ghi này có địa chỉ xác định và không được dùng cho các mục đích khác
Các thanh ghi đa mục đích được dùng để đặt biến trong một chương trình ứng dụng của vi điều khiển Nhìn vào bản đồ bộ nhớ RAM, ta thấy biến có thể đặt từ địa chỉ 20F đến 7Fh trong bank nhớ 0, A0h-EFh, 120h-16Fh, 1A0h-1EFh
Trở lại vấn đề về các cổng, tới đây ta có thể đưa ra nhận xét:
Thanh ghi PORTA phản ánh trạng thái của các chân cổng A, nghĩa là muốn tín hiệu đầu ra của các chân cổng A như thế nào ta chỉ việc đưa giá trị vào các bit tương ứng trên thanh ghi PORTA Cũng như khi đọc giá trịcủa thanh ghi PORTA ta sẽ biết được trạng thái của các chân cổng A
Muốn RA0 ở mức logic 1 (mức 5V), RA1 ở mức logic 0 (mức 0V), RA2 ở mức logic 1, RA3 ở mức logic 0, RA4 ở mức logic 1, RA5 ở mức logic 1, ta chỉ việc gán giá trị 000110101 cho thanh ghi PORTA
X: không quan tâm
Tương tự như vậy với PORTB,PORT C,PORTD,PORTE
Tính đa chức năng của một chân vi điều khiển:
Nhìn vào sơ đồ chân của vi điều khiển, ta có thể thấy một số chân của
vi điều khiển có tên gồm nhiều phần với dấu gạch chéo Ví dụ:
RA0/AN0, RC7/RX/DT, RC6/TX/CK Đây chính là tính đa chức năng
của một chân trên vi điều khiển hay còn gọi là sự dồn kênh
Ý nghĩa của nó là:
Bình thường nếu không được cài đặt thì tấc cả các chân trên 5 cổng A,
B, C, D, E là các chân vào ra số I/O
Nếu trong chương trình ta có cài đặt một chức năng nào đó như RS232, ADC hoặc PWM v.v thì các chân tương ứng với chức năng đó sẽ
Trang 15hoạt động theo chức năng đó Khi đó chân này sẽ không được dùng làm chân vào ra số như bình thường nữa.
Ví dụ: bình thường chân RA0/ANO là chân vào ra số RA0, nếu chức năng ADC với kênh vào tín hiệu analog là kênh 0 được cài đặt khi đó
chân RA0 /AN0 sẽ là chân vào của bộ ADC, tức là hoạt động theo chức năng AN0
Tương tự như vậy, khi cài đặt giao tiếp với thiết bị ngoại vi theo chuẩn RS232, chân vào ra số RC7/RX/DT sẽ hoạt động như đầu vào dữ liệu
RS232 tức là chức năng RX của chân này
Cài đặc vào/ra cho các chân vào ra số trên các cổng:
Các chân vào/ra số trên vi điều khiển PIC phải được cài đặt là chân vào hoặc chân ra thì mới hoạt động đúng chức năng Việc một chân trên cổng X (X=A,B, E) được qui định là đầu ra hay đầu vào phụ thuộc vào
bit tương ứng trên thanh ghi TRISX (X=A,B, E) là 0 hay 1
Ví dụ: Muốn 4 chân thấp (bit thấp) trên cổng B (RB0-RB3) là chân vào, 4chân cao (bit cao) trên cổng B (RB4-RB7) là chân ra thì các giá trị các bit trên thanh ghi TRISB sẽ là:
Bao gồm các khối chức năng sau:
- Timer0: Bộ đếm 8 bit với bộ chia tần số 8 bit
- Timer1: Bộ đếm 16 bit với bộ chia tần số, có thể thực hiện chức năng đếm dựa vào xung clock ngoại vi ngay khi vi điều khiển hoạt động ở chế
độ sleep
Trang 16- Timer2: Bộ đếm 8 bit với bộ chia tần số, bộ postcaler.
Hình 4: Hình dạng và kí hiệu của quang trở.
Trang 17để kết nối với mạch điện 8 cực còn lại trên mỗi led đơn được đưa thành 8 chânriêng, cũng được đưa ra ngoài để kết nối với mạch điện.
Hình 6: Hình dạng của led 7 đoạn.
b Sử dụng led 7 đoạn anode chung:
Sử dụng led 7 đoạn có Anode (cực +) chung, đầu chung này được nối với+Vcc, các chân còn lại dùng để điều khiển trạng thái sáng tắt của các led đơn,led chỉ sáng khi tín hiệu đặt vào các chân này ở mức 0
Trang 18Hình 7:Nối 7 led anode chung.
Hình 8: Bảng mã hiện thị led 7 đoạn anode chung
2.4 Điện trở:
Điện trở là đại lượng vật lý đặc trưng cho tính chất cản trở dòng điện của một vật dẫn điện Nó được định nghĩa là tỉ số của hiệu điện thế giữa hai đầu vật thể với cường độ dòng điện đi qua nó
Hình 9: Hình dạng và kí hiệu của điện trở.
- Được xác định bởi công thức R=
- Trong đó:
+ U là hiệu điện thế giữa hai đầu vật dẫn điện, đo bằng Vôn (V)
Trang 19+ R là điện trở của vật dẫn điện, đo bằng Ohm (Ω)
2.5 Tụ điện:
a Giới thiệu:
- Tụ điện là một linh kiện điện tử thụ động rất phổ biến, được cấu tạo bởi haibản cực đặt song song, có tính chất cách điện một chiều nhưng cho dòng điệnxoay chiều đi qua nhờ nguyên lý phóng nạp
- Cấu tạo của tụ điện: bên trong tụ điện là 2 bản cực kim loại được đặt cách
điện với nhau, môi trường giữa 2 bản tụ này được gọi là điện môi (môi trườngkhông dẫn điện) Điện môi có thể là: không khí, giấy, mica, dầu nhờn, nhựa, cao
su, gốm, thuỷ tinh Tùy theo lớp cách điện ở giữa hai bản cực là gì thì tụ cótên gọi tương ứng
- Đặt tính cơ bản: Tụ điện có khả năng tích trữ năng lượng dưới dạng năng
lượng điện trường bằng cách lưu trữ các electron, nó cũng có thể phóng ra cácđiện tích này để tạo thanh dòng điện.Đây chính là tính chất phóng nạp của tụ,nhờ có tính chất này mà tụ có khả năng dẫn điện xoay chiều
- Ký hiệu: tụ điện có ký hiệu là C
Hình 10: Kí hiệu của tụ điện.
- Đơn vị của tụ điện : Đơn vị của tụ điện là Fara, 1 Fara có trị số rất lớn và trong thực tế người ta thường dùng các đơn vị nhỏ hơn như:
1F=10-6MicroFara = 10-9 Nano Fara = 10-12 Pico Fara
b Sử dụng tụ gốm:
- Tụ gốm là các tụ không phân cực và có trị số nhỏ < 470 NanoFara, còn tụhoá thường có trị số lớn từ 0,47 Micro Fara đến hàng nghìn Micro Fara và tụhoá có phân cực âm dương
- Tụ gốm ( hình dẹt ) trị số được ký hiệu trên thân bằng ba số VD : 103J,223K, 471J vv… Trong đó ba số đầu ký hiệu cho giá trị , chữ J hoặc K ở cuối
kà ký hiệu cho sai số
2.6 Thạch anh: