HỆ THỐNG CHỮA CHÁY BẰNG CẢM BIẾN NHIỆT ĐỘ LM35 VỚI PIC 16F887 Ta cài đặt cho ngưỡng nhiệt độ để bơm sả nước là 37oC. Cảm biến LM35 nhận tín hiệu nhiệt độ môi trường thông qua cơ chế chuyển đổi tín hiệu ADC từ nhiệt độ qua điện áp và chuyển về vi điều khiển Pic16F887. Hệ thống có 2 mức làm việc như sau: Nếu nhiệt độ nhỏ hơn nhiệt độ cho phép tức là dưới mức 37 độ C thì máy bơm và đèn báo không hoạt động. Khi nhiệt độ trên mức cho phép 37 độ C thì đèn báo và máy bơm sã nước cho đến khi nào nhiệt độ nhỏ hơn mức 37 độ C.
Trang 1
ĐỒ ÁN 1
HỆ THỐNG CHỮA CHÁY BẰNG CẢM BIẾN NHIỆT ĐỘ LM35 VỚI PIC 16F887
HỆ ĐẠI HỌC NIÊN KHÓA: 2019-2023
- -Thành phố Hồ Chí
Trang 3Lời Mở Đầu
Ngày nay, với sự tiến bộ của khoa học máy tính mà các loại vi điều khiển ngàycàng giúp ích cho con người trong rất nhiều các lĩnh vực của cuộc sống Hiện nay
ở Việt Nam cũng như trên Thế Giới sử dụng vi điều khiển khá rộng rãi Người ta
có thể tìm mua các loại vi điều khển ở Việt Nam một các dễ dàng mà giá thành lạikhông quá đắt Nó có thể hỗ trợ của nhà sản xuất từ biên dịch, các công cụ độc lập,nạp chương trình từ cơ bản đến phức tạp Các tính năng của vi điều khiển PIC ngàycàng không ngừng được phát triển
Nhưng để tạo ra được sản phẩm thiết thực thì cần phải có sự thực hiển của conngười Tùy vào các nhu cầu thiết thực mà người ta xây dựng chương trình cho nóđúng với yêu cầu của họ Cụ thể như những công việc hằng ngày như báo trộm,báo mưa, đếm sản phẩm vv
Từ những gì đã học được của môn vi điều khiển, để áp dụng nó vào thực tiễn cuộcsống chúng em quyết định chọn đề tài cho đồ án 1 là: “HỆ THỐNG CHỬA CHÁYDÙNG CẢM BIẾN NHIỆT ĐỘ LM35 VỚI PIC16F887”
Việc thực thi đề tài có lẽ cũng còn nhiều thiếu sót, nhóm em mong nhận được sựđóng góp từ thầy và các bạn
Trang 4DANH MỤC CHỮ VIẾT TẮT ADC: Analog to Digital Converter, bộ chuyển đổi tương tự sang số.
ALU: Arithmetic Logic Unit, đơn vị xử lí số học.
CCP2: điều khiển bộ biến đổi áp DC->DC.
EEPROM: Erasable Programmable ROM, ROM khả trình có thể xóa.
GPIO: General Purpose Input Output, cổng vào/ra vạn năng.
GPR: General Purpose Register, thanh ghi mục đích chung
I2C: Inter-Integrated Circuit, bus nội tích hợp.
OSC: Oscillator, bộ dao động
PIC: Peripheral Interface Controller, bộ điều khiển giao tiếp ngoại vi.
POR: Power-On Reset, reset khởi nguồn.
PSP: Parallel Slave Port, cổng xuất dữ liệu.
PWM: Puse Width Modulation, điều chế độ rộng xung.
PWRT: Power-Up Timer, bộ định thời khởi nguồn.
SFR: Special Function Register, thanh ghi có chức năng đặc biệt
SPI: Serial Peripheral Interface, giao tiếp thiết bị ngoại vi nối tiếp.
SSP: Streaming Parallel Port, Port truyền dữ liệu song song.
USART: Universal Synchronous Asynchronous Receiver Transmitter, bộ truyền
dữ liệu nối tiếp đồng bộ/ bất đồng bộ đa năng
WDT: Watch-Dog Timer, bộ địng thời canh gác.
Trang 5CHƯƠNG 1: VI ĐIỀU KHIỂN PIC16F887A 1.1 Sơ lược về vi điều khiển PIC 16F887
- Dụng công nghệ tích hợp cao RISC CPU
- Người dùng có thể lập trình với 35 câu lệnh đơn giản
- Tất cả các câu lệnh thự hiện trong một chu kỳ, lệnh ngoại trừ một số câulệnh riêng rẽ nhánh thực hiện trong hai chu kỳ lệnh
- Tốc độ hoạt động : - Xung đồng hồ là DC -20MHz
- Chu kì lệnh thực hiện trong 200ns
Bộ nhớ chương trình Flash 8Kx14 words
Bộ nhớ SRam 368x8 bytes
Bộ nhớ EFPROM 256x8 bytes
Số port I/O 35 port
- *Khả năng của PIC
Khả năng ngắt
Ngăn nhớ Stack được phân chia làm 8 mức
Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp
Nguồn khởi động lại (POR)
Bộ tạo thời gian PWRT, bộ tạo dao động OST
Bộ đếm xung thời gian WDT với nguồn dao động trên chip( nguồn dao độngRC) đáng tin cậy + Có mã chương trình bảo vệ
Phương thức cất giữ Sleep
Trang 6 TIMER1: 16 bit của bộ định thời, bộ đếm với tỉ số tỉ lệ trước, có khả năngtăng trong khi ở chế độ Sleep qua xung đồng hồ cung cấp bên ngoài
TIMER2: 8 bit của bộ định thời, bộ đếm với 8 bit của hệ số tỉ lệ trước, hệ số
tỉ lệ sau
Bộ chuyển đổi tín hiệu số sang tín hiệu tương tự với 10 bit
Cổng truyền thông tin nối tiếp SSP với SPI phương thức chủ
1.2 Khảo sát vi điều khiển PIC16F887 của hãng Microchip
1.2.1 Sơ đồ chân của PIC16F887
a Sơ đồ chân
Hình 1 : Sơ đồ chân PIC16F887
Trang 7Hình 2 : Sơ đồ chân package DIP 40 chân PIC16F887
b Chức năng chân của vi điều khiển PIC16F887
Port A: PortA( RA0 RA5) có số chân từ chân số 2 đến chân số 7.
PortA (RPA) bao gồm 6 I/O pin Đây là các chân “hai chiều” (bidirectionalpin), nghĩa là có thể xuất và nhập được Chức năng I/O này được điều khiểnbởi thanh ghi TRISA (địa chỉ 85h)
Port B: PortB( RB0 RB7) có số chân từ chân số 33 đến chân số 40.
PortB (RPB) gồm 8 pin I/O 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 đượctí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
Port C: PortC( RC0 RC7) có số chân từ chân số 15 đến chân số 18 và chân số 23
đến chân số 26
Trang 8PortC (RPC) gồm 8 pin I/O Thanh ghi điều khiển xuất nhập tương ứng làTRISC Bên cạnh đó PORTC còn chứa các chân chức năng của bộ so sánh,
bộ Timer1, bộ PWM và các chuẩn giao tiếp nối tiếp I2C, SPI, SSP, USARTPort D: PortD( RD0 RD7) có số chân từ chân số 33 đến chân số 40
Port D: (RPD) gồm 8 chân I/O, thanh ghi điều khiển xuất nhập tương ứng là
Trang 91.3 Sơ đồ khối
Hình 3 : Sơ đồ khối PIC16F887
Trang 10Để mã hóa được địa chỉ của 8K bộ nhớ chương trình, bộ đếm chương trình có dunglượng 13bit
Khi vi điều khiển được Reset, bộ đếm chương trình chỉ đến địa chỉ 0004h(Interruptvector)
Bộ nhớ chương trình không bao gồm bộ nhớ stach và không được địa chỉ hóa bởi
bộ đếm chương trình
Bảng bộ nhớ chương trình và các ngăn xếp
Trang 11Hình 4 : Bộ nhớ chương trình ngăn xếp.
b Bộ nhớ dữ liệu (Data memory)
Bộ nhớ dữ liệu của PIC là bộ nhớ EEPROM được chia thành nhiều bank Đối vớiPIC16F887 chia thành 4 bank Mỗi bank có dung lượng chứa 128 byte, bao gồmcác thanh ghi có chức năng đặc biệt SFG (Spencial Function Register) nằm ở cácvùng địa chỉ thấp và các thanh ghi mục đích chung GPR(General Purpose Register)nằm ở các vùng địa chỉ còn lại trong back Các thanh ghi SFG 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 truy suất và làmgiảm bớt lệnh của chương trình Bộ nhớ dữ liệu của PIC 16F887
Trang 121.3.3 Các thanh ghi đặc biệt
Các thanh ghi được sử dụng bởi CPU hoặc dùng đẻ thiết lập điều khiển các khốichức năng tích hợp trong vi điều khiển Phân chia thanh SFR làm hai loại: thanhghi SFR liên quan đến các chức năng bên trong CPU và thanh ghi SFR dùng đểthiết lập và điều khiển các khối chức năng bên ngoài
a Các thanh ghi liên quan đến bên trong:
Trang 13-Thanh ghi SATUS (03h, 83h, 103h, 183h): thanh ghi chứa kết quả thực hiện phéptoán của khối ALU, trạng thái RESET và cấc bit chọn bank cùng truy suất trong bộnhớ dữ liệu.
-Thanh ghi OPTION_REG (81h, 181h): thanh ghi này cho phép đọc và ghi, chophép điều khiển các chức năng puled ma trận-up của các chân PORTB, xác lập cáctham số xung tác động, cạnh tác động của ngắt ngoại vi và bộ đếm Time0
-Thanh ghi INTCON (0Bh, 8Bh, 10Bh, 18Bh): thanh ghi cho phép đọc và ghi,chứa các bit điều khiển và các bít cờ hiệu khi Time0 tràn, ngắt ngoại vi RB0/INT
và ngắt interrupt-on-change tại các chân của PORTB
-Thanh ghi PIE1 (8Ch): chứa các bit điều khiển chi tiết các ngắt của khối chứcnăng ngoại vi
-Thanh ghi PIR1 (0Ch) chứa cờ ngắt của các khối chức năng ngọai vi,các ngắt nàyđược cho phép bởi các bit điều khiển chứa trong thanh ghi PEI1
Trang 14-Thanh ghi PIE2 (8Dh): chứa các bit điều khiển các ngắt của các khối chức năngCCP2, SSP bus, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
-Thanh ghi PIR2 (0Dh): chứa các cờ ngắn của của các khối chức năng ngoại vi cácngắt này được cho phép bởi các bit điều khiển chứa trong thanh ghi PIE2
-Thanh ghi PCON (8Eh): chứa các cờ hiệu cho biết trạng thái các chế độ Reset của
vi điều khiển
c Thanh ghi mục đích chung GPR
Các thanh ghi này có thể truy suất trực tiếp hoặc gián tiếp thông qua thanh ghi FSG(File Select Rersister) Đây là các thanh ghi dữ liệu thông thường, người sử dụng
có thể tùy theo mục đích chương trình mà có thể dùng các thanh ghi này để chứacác biến số, hằng số, kết quả hoặc các tham số phục vụ cho chương trình
1.3.4 Các cổng xuất nhập của PIC( I/O)
PIC16F887 tất cả có 35 chân I/O mục đích thông thường( G P I O : G e n e r a lPurpose Input Ouput) có thể được sủ dụng Tùy theo những thiết bi ngoại vi đượcchọn mà một vài chân không thể sử dụng ở chức năng GPIO Thông thường, khi
Trang 15một thiết bị ngoai vi được chọn, những chân liên quan của thiết bị ngoại vi khôngđược sủ dụng ở chức năng GPIO.35 chân được chia thành 5 port:
+ PortA chia làm 8 chân
+ PortB chia làm 8 chân
+ PortC chia làm 8 chân
+ PortD chia làm 8 chân
+ PortE chia làm 3 chân
Mỗi port được điều khiển bởi 2 thanh ghi 8-bit, thanh ghi Port và thanh ghi Tris.Thanh ghi Tris được sử dụng để điều khiển port nhập hay xuất Mỗi bit của Tris sẽđiều khiển mỗi chân của port đó, nếu giá trị bit là 1 thì chân liên quan là nhập,ngược lại nếu giá trị bit là 0 thì chân liên quan là xuất Thanh ghi Port được suwe\rdụng để chứa các giá trị của port liên quan Mỗi bit của thanh ghi Port chứa giá trịcủa chân liên quan
Cấu trúc của GPIO:
Trang 161.3.5 Các bộ định thời của chip
Bộ vi điều khiển PIC16F887 có 3 bộ định thời Timer đó là Tmer0, Timer1, Timer2
a Bộ Timer0
Đây là một trong 3 bộ đếm hoặc bộ định thời của vi điều khiển PIC16F887.Timer0 là bộ đếm 8 bit được kết nối với bộ chia tần 8bit Cấu trúc của Time0 chophép ta lựa chọn xung clock tác động và cạnh tích cực của xung clock NgắtTimer0 sẽ xuất hiện khi Timer0 bị tràn Bit TMR0IE ( INTCON) là bit điều khiểncủa Timer0 TMR0IE=1 cho phép ngắt Timer0 tác động, TMR0IE=0 không chophép ngắt Timer0 tác động
Trang 17b Bộ Time1
Bộ Timer1 là bộ định thời 16bit, giá trị của Timer1 sẽ được lưu trong thanh ghi(TMR1H:TMR1L) Cờ ngắt của Timrer1 là bit TMR1IF Bit điều khiển củaTimer1 là TMR1IE
Tương tự như Timer0, Timer1 cũng có 2 chế độ hoạt động: chế độ định thời và chế
độ xung kích là xung clock của osciled ma trận ator ( tần số Timer bằng tần số củaosciled ma trậnator và chế độ đếm (counter) với xung kích là xung phản ánh các sựkiện cần đếm lấy từ bên ngoài thông qua chân RCO/T1OSO/T1CKI (cạnh tác động
là cạnh bên) Việc lựa chọn chế độ hoạt động của Timer được điều khiển bởi bitTMR1CS
Trang 18c Bộ Timer2
Bộ Timer2 là bộ định thời 8 bit và được hỗ trợ hai bộ chia tần prescaler vàpostscaler Thanh ghi chứa giá tị đếm của Timer2 là TMR2 Bit cho phép ngắtTimer2 tác động là TMR2ON Cờ ngắt của Timer2 là bit TMR2IF Xung ngõ vàođược đưa qua bộ chia tần số prescaler 4 bit(với các tỉ số chia tần 1:1, 1:4 hoặc 1:6)
và được điều khiển bởi các bit T2CKPS1:T2CKPS0
d Bộ biến đổi ADC
ADC ( Analog to Digital Converter) là bộ chuyển đổi tín hiệu giữa hai dạng tương
tự và số.PIC16F887 có 14 ngõ vào analog (RA5:RA0, RE2:RE0và RB5:RB0).Hiệu điện thế chuẩn có thể được chọn là , hay hiệu điện thế chuẩn được xác lậptrên 2 chân RA2 và RA3 Kết quả chuyển đổi từ tin hiệu tương tự sang tín hiệu số
là 10bit tương ứng và được lưu trong hai thanh ghi ADRESH:ADRESL Khikhông sử dụng bộ chuyển đổi ADC các thanh ghi này có thể sử dụng các thanh ghithông thường khác Khi quá trình chuyển đổi hoàn tất, kết quả sẽ được lưu vào 2thanh ghi ADRESH:ADRESL
Trang 191.4 Các ứng dụng của PIC16F887
1.4.1 Giao tiếp với máy tính
PIC kết nối với máy tính thông qua cổng nối tiếp IC Max232 Ghép nối qua cổngRS232 là một trong những kỹ thuật sử đụng rộng rãi nhất để ghép nối với thiết bịngoại vi với máy tính
Ưu điểm:
+ Khả năng chống nhiễu của các cổng nối tiếp cao
+ Thiết bị ngoại vi có thể lắp ráp ngay khi máy tính đang cấp điện
+ Các mạch điện đơn giản có thể nhận được điện áp nguồn nuôi qua cổng nối tiếp
Trang 201.4.2 Giao tiếp với led
Trang 211.4.3 Giao tiếp với LCD
Trang 22CHƯƠNG 2: PHƯƠNG PHÁP ĐO NHIỆT ĐỘ BẰNG LM35
2.1 Tìm hiểu về cảm biến LM35.
Hình 5: Cảm biến LM35
LM35 là 1 loại cảm biến rất phô biến và được ứng dựng rất nhiều trong thực tếhiện nay Nó được dùng nhiều trong các mạch điện tử cũng như trong các nghiêncứu
LM35 là một loại cảm biến tương tự , nhiệt độ được xác định bằng đo hiệu điện thếngõ ra của LM35
Đơn vị nhiệt độ
Nhiệt độ thay đổi tuyến tính: 10mV/oC
LM35 không cần phải canh chỉnh nhiệt độ khi sử dụng Độ chính xác thực tế:1/4oC ở nhiệt độ phòng và 3/4oC ở nhiệt độ ngoài trời Như vậy, bằng cách đưa vàochân bên trái của cảm biến LM35 hiệu điện thế 5V, chân gtương ứng với vi điều
Trang 23Cảm biến LM35 là bộ cảm biến mạch tích hợp có độ chính xác cao mà điện áp đầu
ra của nó tỷ lệ tuyến tính với nhiệt độ theo thang độ Celsius Chúng cũng khôngyêu cầu chân chỉnh ngoài vì vốn chúng đã được cân chỉnh
Nguyên lý hoạt động.
IC đo nhiệt độ là một mạch tích hợp nhận tín hiệu nhiệt đo 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ủa các bán dẫnvới nhiệt độ tạo ra điện áp hay dòng điện, tỉ lệ thuận với nhiệt độ tuyệt đối Đo tínhiệ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 racác đ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ức các electron thành các phân tử tự do di chuyển qua vùng cấu trúc mạng tinhthể tạo sự xuất hiện các lỗ trống Làm tỉ lệ điện tử tự do và lỗ trống tăng lên theoquy luật hàm mũ với nhiệt độ
Đặc điểm chính của cảm biến LM35.
Điện áp đầu vào từ 4V đến 30V
Độ phân giải điện áp đầu ra là 10mV/oC
Độ chính xác cao do ở 25 độ C là 0.5 độ C
Trở kháng ngõ ra thấp 0.1 cho 1mA tải
Dải nhiệt độ đo được của LM35 là từ -55 oC đến 150oC với các mức điện áp rakhác nhau Xét 1 số mức điện áp sau:
Nhiệt độ -55 oC điện áp đầu ra 550mV
Nhiệt độ -55 oC điện áp đầu ra 550mV
Nhiệt độ oC điện áp đầu ra 1550mV
Tùy theo cách mắc của LM35 để ta đo các giải nhiệt phù hợp Đối với hệ thống
Trang 24Tính toán nhiệt độ đầu ra của LM35.
Việc đo nhiệt độ sử dung LM35 thông thường được sử dụng bằng cách đưa tínhiệu từ LM35 qua bộ giải mã ADC đến vi điều khiển để xử lý tín hiệu
Như vậy ta có: u= t.k
Trong đó : u : điện áp đầu ra
t : nhiệt đô môi trường đo
k : Hệ số theo nhiệt độ của LM35 10mV/1 oC
Gỉa sử điện áp Vcc cấp vào LM35 là 5V, bộ giả mã ADC sử dụng 10 bit, thì bướcthay đổi của LM35 sẽ là 5/(2^10)=5/1024 Gía trị ADC đo được thì điện áp đầuvào của LM35 sẽ là : (t*k)/5/1024)=((10^-2)*1024*t)/5=2048*t Vậy nhiệt độ ta
đo được t bằng giá trị ADC/2048
Tương tự với ADC 11 bit và Vcc khác ta cũng tính như trên để được công thức lấynhiệt độ
Set_adc channel (0);
value = ( float ) read_adc();
value = value/2.048;
Sai số của LM35
Tại 0oC thì điện áp của LM35 sẽ là 10mV
Tại 150oC thì điện áp của LM35 sẽ là 1.5V
Dải điện áp ADC biến đổi là 1.5 – 0.01=1.49V
ADC 11 bit nên bước thay đổi của ADC là: n = 2.44mV
Vậy sai số của hệ thống đo là: Y = 0.00244/1.49= 0.146%
Trang 25Hình 6 : Biểu đồ nhiệt độ và điện áp ở ngõ ra.
Hình 7: biểu đồ sai số ở các nhiệt độ khác nhau
Trang 26CHƯƠNG 3: THIẾT KẾ HỆ THỐNG
3.1 Sơ đồ khối:
Hình 8: Sơ đồ khối
Chức năng từng khối:
- Khối mạch nguồn: Sử dụng 1 rơle ổn áp cáp nguồn DC 12V cho vi xử lý
- Khối xử lí: Sử dụng vi xử lí PIC16F887, dao động với thạch anh 12MHz, lậptrình với ngôn ngữ C
- Cảm biến: Sử dụng cảm biến LM35 đưa tín hiệu thông qua bô giải mã ADCthành nhiệt độ thành điện áp cấp cho vi xử lý
- Khối nút nhấn: Chỉ sử dụng 1 nút nhấn để reset chương trình
- Khối hiển thị: Sử dụng LCD 16x2 để hiện thị nhiệt độ và chế độ bơm nước
Trang 273.2 Linh kiên sử dụng chủ yếu và bảng giá linh kiện.
1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này vớiGND của mạch điều khiển
2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân nàyvới
VCC=5V của mạch điều khiển
3 VEE Điều chỉnh độ tương phản của LCD
4 RS Chân chọn thanh ghi (Register select) Nối chân RS với logic
“0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR củaLCD
(ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD(ở
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR