b Sơ đồ khối vi điều khiển PIC16F877ACấu trúc khối vi điều khiển PIC16F877A bao gồm các khối chính: - Khối ALU – Arithmetic Logic Unit- Khối bộ nhớ chứa chương trình – Flash Program Memo
CƠ SỞ LÝ THUYẾT
Linh kiện điện tử, vi điều khiển, và cảm biến
PIC16F8X là nhóm PIC trong họ PIC16XX của họ Vi điều khiển 8-bit, tiêu hao năng lượng thấp, đáp ứng nhanh, chế tạo theo công nghệ CMOS, chống tĩnh điện tuyệt đối Tất cả các PIC16/17 đều có cấu trúc RISC PIC16CXX các đặc tính nổi bật, 8 mức ngăn xếp Stack, nhiều nguồn ngắt tích hợp bên trong lẫn ngoài Có cấu trúc Harvard với các bus dữ liệu và bus thực thi chương trình riêng biệt nhau cho phép độ dài 1 lệnh là 14-bit và bus dữ liệu 8-bit cách biệt nhau Tất cả các lệnh đều mất 1 chu kỳ lệnh ngoại trừ các lệnh rẽ nhánh chương trình mất 2 chu kỳ lệnh Chỉ có
35 lệnh và 1 lượng lớn các thanh ghi cho phép đáp ứng cao trong ứng dụng.
Họ PIC16F8X có nhiều tính năng đặc biệt làm giảm thiểu các thiết bị ngoại vi, vì vậy tính kinh tế cao, có hệ thống nổi bật đáng tin cậy và sự tiêu thụ năng lượng thấp Chế độ SLEEP tiết kiệm nguồn và có thể được đánh thức bởi các nguồn reset. PIC16F877A có 40/44 chân với sự phân chia cấu trúc như sau:
- Có 8 kênh chuyển đổi A/D 10-bit
Hình 2 1 Vi điều khiển PIC16F877A dạng DIP
- Có 3 bộ định thời: Timer0, timer1 và timer2
- Có giao tiếp truyền nối tiếp: chuẩn RS232, I2C… a) Sơ đồ chân PIC16F877A
Chức năng các chân của PIC16F877A
Bảng 2 1 Chức năng các chân của PIC16F877A
1 MCLR/VPP - : Hoạt động Reset ở mức thấp
- VPP: ngõ vào áp lập trình
2 RA0/AN0 - RA0: xuất/nhập số
- AN0 : ngõ vào tương tựHình 2 2 Sơ đồ chân của vi điều khiển PIC16F877A
3 RA1/AN1 - RA1: xuất/nhập số
- AN1: ngõ vào tương tự
- AN2: ngõ vào tương tự
- VREF -: ngõ vào điện áp chuẩn (thấp) của bộ A/D
- AN3: ngõ vào tương tự
- VREF+ : ngõ vào điện áp chuẩn (cao) của bộ A/D
- TOCKI: ngõ vào xung clock bên ngoài cho timer0
- C1 OUT : Ngõ ra bộ so sánh 1
- AN4: ngõ vào tương tự 4
- SS: ngõ vào chọn lựa SPI phụ
- C2 OUT : ngõ ra bộ so sánh 2
8 RE0/ /AN5 - RE: xuất nhập số
- RD: điều khiển việc đọc ở port nhánh song song
- AN5 : ngõ vào tương tự
- WR: điều khiển việc ghi ở port nhánh song song
- AN6 : ngõ vào tương tự
- CS: Chip lựa chọn sự điều khiển ở port nhánh song song
- AN7: ngõ vào tương tự
11 VDD Chân nguồn của PIC
Ngõ vào dao động nội hoặc xung clock bên ngoài
- OSC1: ngõ vào dao động thạch anh hoặc xung clock bên ngoài Ngõ vào Schmitt trigger khi được cấu tạo ở chế độ RC, một cách khác của CMOS
- CLKI: ngõ vào nguồn xung bên ngoài Luôn được kết hợp với chức năng OSC1
Ngõ vào dao động thạch anh hoặc xung clock
- OSC2: Ngõ ra dao động thạch anh Kết nối đến thạch anh hoặc bộ cộng hưởng.
- CLKO : ở chế độ RC, ngõ ra của OSC2, bằng tần số của OSC1 và chỉ ra tốc độ của chu kỳ lệnh
- T1OCO: ngõ vào bộ dao động Timer 1
- T1CKI : ngõ vào xung clock bên ngoài Timer 1
- T1OSI: ngõ vào bộ dao động Timer 1
- CCP2: ngõ vào Capture 2, ngõ ra compare 2, ngõ ra
- CCP1 : ngõ vào Capture 1, ngõ ra compare 1, ngõ ra PWM1
- SCK: ngõ vào xung clock nối tiếp đồng bộ/ngõ ra của chế độ SPI
- SCL: ngõ vào xung clock nối tiếp đồng bộ/ ngõ ra của chế độ I2C
19 RD0/PSP0 - RD0: xuất/nhập số
- PSP0 : dữ liệu port nhánh song song
20 RD1/PSP1 - RD1: xuất/nhập số
- PSP1: dữ liệu port nhánh song song
21 RD2/PSP2 - RD2: xuất/nhập số
- PSP2: dữ liệu port nhánh song song
22 RD3/PSP3 - RD3: xuất/nhập số
- PSP3 : dữ liệu port nhánh song song
- SDI: dữ liệu vào SPI
- SDA : xuất/nhập dữ liệu vào I2C
24 RC5/SDO - RC5: xuất/nhập số
- SDO: dữ liệu ra SPI
- TX: truyền bất đồng bộ USART
- CK: xung đồng bộ USART
- RX: nhận bất đồng USART
- DT: dữ liệu đồng bộ USART
27 RD4/PSP - RD4: xuất/nhập số
- PSP4 : dữ liệu port nhánh song song
28 RD5/PSP5 - RD5: xuất/nhập số
- PSP5: dữ liệu port nhánh song song
29 RD6/PSP6 - RD6: xuất/nhập số
- PSP : dữ liệu port nhánh song song
30 RD7/PSP7 - RD7: xuất/nhập số
- PSP7: dữ liệu port nhánh song song
32 VDD Chân nguồn của PIC.
33 RB0/INT - RB0: xuất/nhập số
36 RB3 - RB3: xuất/nhập số
- Chân cho phép lập trình điện áp thấp ICPS
- PGC: mạch vi sai và xung clock lập trình ICSP
- PGD: mạch vi sai và dữ liệu lập trình ICSP
- Ngắt PortB b) Sơ đồ khối vi điều khiển PIC16F877A
Cấu trúc khối vi điều khiển PIC16F877A bao gồm các khối chính:
- Khối ALU – Arithmetic Logic Unit
- Khối bộ nhớ chứa chương trình – Flash Program Memory
- Khối bộ nhớ chứa dữ liệu EEPROM – Data EEPROM
- Khối bộ nhớ file thanh ghi RAM – RAM file Register
- Khối thanh ghi đặt biệt
- Khối giao tiếp, khối chuyển đổi ADC
- Khối các Port xuất nhập
Hình 2 3 Sơ đồ khối cấu trúc bên trong của PIC16F877A c) Các thông số kỹ thuật Đây là vi điều khiển thuộc họ PIC16Fxxx với tập lệnh gồm 35 lệnh có độ dài 14 bit Mỗi lệnh đều được thực thi trong một chu kì xung clock Tốc độ hoạt động tối đa cho phép là 20MHz với một chu kì lệnh là 200ns Bộ nhớ chương trình 8Kx14bit, bộ nhớ dữ liệu 368x8 byte RAM và bộ nhớ dữ liệu EEPROM với dung lượng 256x8 byte, bao gồm 5 PORT vớ 33 pin I/O.
Các đặc tính ngoại vi 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.
- Timer2: bộ đếm 8 bit với bộ chia tần số, bộ postcaler Hai bộ Capture/ so sánh/ điều chế độ rộng xung.
- Các chuẩn giao tiếp nối tiếp SSP (Synchronous Serial Port), SPI và I2C Chuẩn giao tiếp nối tiếp USART với 9 bit địa chỉ.
- Cổng giao tiếp song song PSP (Parallel Slave Port) với các chân điều khiển
RD, WR, CS ở bên ngoài.
- Các đặc tính Analog: 8 kênh chuyển đổi ADC 10 bit Hai bộ so sánh.
- Bộ nhớ flash với khả năng ghi xóa được 100.000 lần.
- Bộ nhớ EEPROM với khả năng ghi xóa được 1.000.000 lần.
- Dữ liệu bộ nhớ EEPROM, có 256 byte (có địa chỉ 00h÷FFh), có thể lưu trữ trên 40 năm.
- Khả năng tự nạp chương trình với sự điều khiển của phần mềm.
- Watchdog Timer với bộ dao động trong Chức năng bảo mật mã chương trình. Chế độ Sleep.
- Có thể hoạt động với nhiều dạng Oscillator khác nhau. d) Tổ chức bộ nhớ
PIC16F877A bao gồm 3 loại bộ nhớ: bộ nhớ chương trình (Program Memory), bộ nhớ dữ liệu RAM và bộ nhớ dữ liệu EEPROM
PIC có kiến trúc bộ nhớ dạng Harvard, một kiến trúc cải tiến so với kiến trúc Von Neumann.
Hình 2 4 Kiến trúc Von Neumann và Harvard
Kiến trúc Von Neumann: với kiến trúc này thì bộ nhớ giao tiếp với CPU thông qua 1 bus dữ liệu 8 bit, bộ nhớ có các ô nhớ chứa dữ liệu 8 bit, bộ nhớ vừa lưu trữ chương trình và dữ liệu.
- Ưu điểm: kiến trúc đơn giản.
- Nhược điểm: do chỉ có 1 bus nên tốc độ truy xuất chậm, khó thay đổi dung lượng lưu trữ của ô nhớ.
Kiến trúc Harvard: với kiến trúc này thì bộ nhớ được tách ra làm 2 loại bộ nhớ độc lập: bộ nhớ lưu chương trình và bộ nhớ lưu dữ liệu, CPU giao tiếp với 2 bộ nhớ độc lập nên cần 2 bus độc lập Vì độc lập nên có thể thay đổi số bit lưu trữ của từng bộ nhớ mà không ảnh hưởng lẫn nhau Với PIC thì bộ nhớ chương trình với mỗi ô nhớ lưu trữ 14 bit, còn bộ nhớ dữ liệu với mỗi ô nhớ lưu dữ liệu 8 bit.
- Ưu điểm: do chỉ có 2 bus nên tốc độ truy xuất nhanh, thay đổi số bit của ô nhớ.
- Khuyết điểm: kiến trúc phức tạp
Hình 2 5 Bộ nhớ chương trình của PIC16F877A
Bộ nhớ chương trình của vi điều khiển PIC16F877A là bộ nhớ flash, dung lượng bộ nhớ 8K word (1word = 14bit) và được phân thành nhiều trang (từ page 0 đến page 3) Như vậy bộ nhớ chương trình có khả năng chứa được 8*1024 = 8192 lệnh (vì một lệnh sau khi mã hóa sẽ có dung lượng 1 word (14bit)).
Bộ nhớ chương trình không bao gồm bộ nhớ stack và không được địa chỉ hóa bởi bộ đếm chương trình Khi vi điều khiển được reset, bộ đếm chương trình sẽ chỉ đến địa chỉ 0000h (Reset vector) Khi có ngắt xảy ra, bộ đếm chương trình sẽ chỉ đến địa chỉ 0004h (Interrupt vector).
Hình 2 6 Bộ nhớ dữ liệu của PIC16F877A
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia ra làm nhiều bank Đối với PIC16F877A bộ nhớ dữ liệu được chia ra làm 4 bank Mỗi bank có dung lượng
128 byte, bao gồm các thanh ghi có chức năng đặc biệt SFG nằm ở các vùng địa chỉ thấp và các thanh ghi mục đích chung GPR nằm ở vùng địa chỉ còn lại trong bank. Các thanh ghi SFR thường xuyên được sử dụng sẽ được đặt ở tất cả các bank của bộ nhớ dữ liệu giúp thuận tiện trong quá trình truy xuất và làm giảm bớt lệnh của chương trình. e) Cổng xuất nhập dữ liệu
PORTA: bao gồm 6 chân I/O đây là các chân “hai chiều” nghĩa là có thể xuất và nhập được Chức năng I/O này được điều khiển bởi thanh ghi TRISA (địa chỉ 85h) Muốn xác lập chức năng của một chân trong PORTA là input thì ta “set” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA và ngược lại, muốn xác lập chức năng của một chân trong PORT là output thì ta “clear” bit điều khiển tương ứng với chân đó trong thanh ghi TRISA Thao tác này hoàn toàn tương tự đối với các PORT và các thanh ghi điều khiển tương ứng TRIS (đối với PORTA là TRISA, đối với PORTB là TRISB, đối với PORTC là TRISC, đối với PORTD là TRISD và đối với PORTF là TRISE) Ngoà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ừ dữ liệu từ tín hiệu Analog sang tín hiệu Digital
- Ngõ vào điện thế so sánh
- Ngõ vào xung Clock của Timer0 trong kiến trúc phần cứng thực hiện các nhiệm vụ đếm xung thông qua Timer0…
- Ngõ vào của bộ giao tiếp MSSP (Master Synchronous Serial Port)
Các thanh ghi SFR liên quan đến PORTA bao gồm:
- PORTA (địa chỉ 05h): chứa các giá trị pin trong PORTA.
- TRISA (địa chỉ 85h): điều khiển xuất nhập.
- CMCON (địa chỉ 9Ch): thanh ghi điều khiển bộ so sánh.
- CVRCON (địa chỉ 9Dh): thanh ghi điều khiển bộ so sánh điện áp.
- ADCON1 (địa chỉ 9Fh): thanh ghi điều khiển bộ ADC.
PORTB: bao gồm 8 chân I/O và thanh ghi điều khiển xuất nhập tương ứng là
TRISB Bên cạnh đó một số chân của PORTB còn được sử dụng trong quá trình nạp chương trình cho vi điều khiển với các chế độ nạp khác nhau PORTB còn liên quan đến ngắt ngoại vi và bộ Timer0 PORTB còn được tích hợp chức năng điện trở kéo lên, được điều khiển bởi chương trình Các thanh ghi SFR liên quan đến PORTB bao gồm:
- PORTB (địa chỉ 06h, 106h): chứa giá trị pin trong PORTB
- TRISB (địa chỉ 86h, 186h): điều khiển xuất nhập
- OPTION_REG (địa chỉ 81h, 181h): điều khiển ngắt ngoại vi bộ Timer0.
PORTC: gồm 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 Ngoài ra PORTC còn 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í động cơ v.v…
- Tích hợp các bộ giao tiếp nối tiếp 12C, SPI, USART
PORTD: gồm 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ủa chuẩn giao tiếp song song PSP (Parallel Slave Port) Các thanh ghi liên quan đến PORTD bao gồm:
- Thanh ghi PORTD: chứa giá trị các pin trong PORTD.
- Thanh ghi TRISD: điều khiển xuất nhập.
- Thanh ghi TRISE: điều khiển xuất nhập PORTE và chuẩn giao tiếp PSP.
PORTE: gồm 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à chân điều khiển của chuẩn giao tiếp PSP Các thanh ghi liên quan đến PORTE bao gồm:
- PORTE: chứa giá trị các chân trong PORTE.
- TRISE: điều khiển xuất nhập và xác lập các thông số cho chuẩn giao tiếp PSP.
- ADCON1: thanh ghi điều khiển khối ADC.
2.1.2 Cảm biến a Cảm biến siêu âm HC-SR04
● Cấu trúc bên trong của cảm biến siêu âm HC-SR04.
▪ Lớp vở ngoài của cảm biến siêu âm HC-SR04.
Thiết kế mạch điện tử
Mạch điện tử bao gồm các linh kiện điện tử như: Điện trở, bóng bán dẫn, tụ điện, cuộn cảm, điốt, vi mạch…Được nối bằng các dây dẫn với các bộ phận của nguồn Để thực hiện một nhiệm vụ nào đó trong kỹ thuật điện tử.
Sự kết hợp của các thành phần và dây dẫn cho phép thực hiện các thao tác đơn giản hoặc phức tạp Có thể truyền tín hiệu có thể được khuếch đại Các tính toán có thể được thực hiện, và dữ liệu có thể được di chuyển từ nơi này sang nơi khác. Nguyên tắc chung để thiết kế mạch điện tử:
● Bám sát, đáp ứng yêu cầu thiết kế.
● Mạch thiết kế đơn giản, tin cậy.
● Thuận tiện khi lắp đặt, vận hành và sửa chữa.
● Linh kiện có sẵn trên thị trường
Hình 2 11 Các bước làm mạch điện tử.
Nguyên tắc hoạt động của hệ thống
Thiết bị đo khoảng cách sử dụng cảm biến siêu âm tích hợp định vị GPS hoạt động dựa trên nguyên lý sử dụng sóng siêu âm và thông tin định vị để xác định vị trí cũng như khoảng cách tới các vật thể trong môi trường xung quanh Cảm biến siêu âm phát ra sóng siêu âm và thu sóng phản xạ từ vật cản gần, sau đó dựa vào thời gian di chuyển của sóng để tính toán khoảng cách tới vật thể
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Đặc tả yêu cầu hệ thống
3.1.1 Các yêu cầu chức năng
- Cảnh báo kịp thời khi phát hiện khả năng xẩy ra va chạm
- Không cần người điều khiển.
- Sử dụng cảm biến SC-RS04, cảm biến heart beat sensor đề phát hiện rò rỉ khí gas
- Đảm bảo an toàn cảnh báo chính xác
3.1.2 Các yêu cầu phi chức năng
- Giá thành tương đối rẻ.
Thiết kế hệ thống
3.2.1 Thiết kế phần cứng cho hệ thống a Sơ đồ khối.
Hình 3 1 Sơ đồ khối của hệ thống.
Hình 3 2 Sơ đồ nguyên lý của hệ thống.
Hình 3 3 Sơ đồ nguyên lý module hiển thị.
Khối mạch LCD sử dụng điện áp 5VDC, giao tiếp dữ liệu kiểu 4bit với khối vi điều khiển PIC16F877A dung để hiển thị các trạng thái hoạt động của A7276S
Bảng 3 1 Sơ đồ kết nối chân LCD1602 và PIC16F877A
Ngoài ra để điều chỉnh độ tương phản của màn hình LCD ta cần phải mắc thêm 1 biến trở tinh chỉnh RVkΩ.
3.2.2 Thiết kế phần mềm cho hệ thống a) Nguyên lý hoạt động của hệ thống
Khi cảm biến không có tín hiệu gì thì sẽ báo cho người dùng thông qua khối hiển thị rằng vẫn an toàn Khi có cảm biến nhận được tin hiệu thì sẽ thông báo có gas hoặc khói thông qua khối hiển thị và còi sẽ được bật lên đồng thời sẽ tự động mở cửa sổ và máy thông gió giúp thoát khí gas và khói ra ngoài.
Ngoài ra khi có khí gas hoặc khói thì mỗi 15s hệ thống sẽ gửi thông báo đến số điện thoại của người dùng, người dùng có thể tắt các tin nhắn và còi báo động tại nhà bằng cánh gửi lại hệ thống tin nhắn đã được quy định trước.
[40] b) Lưu đồ thuật toán hệ thống
Hình 3 4 Lưu đồ thuật toán
TÍCH HỢP VÀ ĐÁNH GIÁ HỆ THỐNG
Xây dựng và tích hợp hệ thống
Hình 4 1 MÔ PHỎNG THỰC TẾ
4.1.2 Lập trình phần mềm cho hệ thống.
Phần mềm CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip.
Chương trình là sự tích hợp của 3 trình biên dịch riêng biệt cho 3 dòng PIC khác nhau đó là:
● PCB cho dòng PIC 12 bit‐ opcodes.
● PCM cho dòng PIC 14 bit‐ opcodes.
● PCH cho dòng PIC 16 và 18 bit.‐
● Mạch phải đúng nguyên lý, hoạt động đúng chức năng.
● Lựa chọn linh kiện phù hợp với bài toán.
● Các chân giao tiếp với vi điều khiển và module được nối với nhau, tương thích với chương trình đã viết.
Kiểm thử và đánh giá hệ thống
● Đo khoảng cách từ đầu cảm biến đến vật cản.
● Kiểm tra khoảng cách có nằm trong khoảng đo được.
● Màn hình hiển thị thông tin chính xác chức năng hệ thống.
Hướng dẫn vận hành hệ thống
● Hệ thống hoạt động ổn định với bộ nguồn trong khoảng 9V – 12V DC.
● Sau khi cấp nguồn hệ thống sẽ chờ khoảng 10 giây để khởi động module sim Sau khi khởi động thành công sẽ gửi tin nhắn thông báo về điện thoại.
● Khi cảm biến phát hiện có khí gas rò rỉ hoặc khói, lửa thì còi cảnh báo sẽ kêu và gửi tin nhắn về điện thoại.