Điều khiển lò nhiệt sử dụng PIC16F877
Trang 1Ư ƠNG I : DẪN NHẬP
1.1 Mục t i êu nghiên cứu
Mục tiêu của đề tài dựa vào những hiểu biết về vi điều khiển,dựa vào các đềtài ứng dụng vi điều khiển điều khiển nhiệt độ đã thực hiện trước đó cùng với việcnghiên cứu tìm hiểu vi điều khiển PIC em đã tiến hành nghiên cứu về vi điều khiểnPic16f877 và thuật toán on/off
1.2 Đối tượng nghiên cứu
Nghiên cứu vi điều khiển pic16f877, thuật toán on/off Thiết kế và thi công mạch điện tử, lò nhiệt điện trở
Sai số hê thống là 0.50C là sai số trên IC đo nhiệt độ LM35
Thiết kế chương trình giao diện trên máy tính bằng ngôn ngữ VB.net
Trang 2CHƯƠNG 2 :
CƠ SỞ LÝ THUYẾT
2 1 Cấu trúc phần cứng của PIC16F 8 7 7A
PIC là tên viết tắt của “ Programmable Intelligent computer” do hãngGeneral Instrument đặt tên cho con vi điều khiển đầu tiên của họ
Hãng Micrchip tiếp tục phát triển sản phầm này và cho đến hàng đã tạo ra gần
100 loại sản phẩm khác nhau
PIC16F877A 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àmquen 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 PIC16F877 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
- 1 bộ định thời Timer1 16 bit có thể hoạt động ở cả chế độ tiết kiệmnă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
Trang 3- 1 cổng nối tiếp
- 15 nguồn ngắt
Sơ đồ khối vi điều khiển 16F8 7 7
Trang 42.1.1 Tổ chức bộ nhớ PIC16F877
Bộ nhớ chương trình PIC16F8 7 7Bộ nhớ chương trình của vi điều khiển PIC16F877 là bộ nhớ Flash, dunglượng 8K word (1 word chứa 14bit) và được phân thành nhiều trang như hìnhtrên
Để mã hóa được địa chỉ 8K word bộ nhớ chương trình, thanh ghi đếm chươngtrình PC có dung lượng 13 bit
Trang 5Khi vi điều khiển reset, bộ đếm chương trình sẽ trỏ về địa chỉ 0000h Khi cóngắt xảy ra thì thanh ghi PC sẽ trỏ đến địa chỉ 0004h.
Bộ nhớ chương trình không bao gồm bộ nhớ Stack và không được địa chỉ hóabởi bộ đém chương trình
2.1.1.1 Bộ nhớ dữ liệu
Bộ nhớ dữ liệu của PIC16F877 được chia thành 4 bank Mỗi bank có dụnglượng 128 byte
Nếu như 2 bank bộ nhớ dữ liệu của 8051 phân chia riêng biệt : 128 byte đầutiên thuộc bank1 là vùng Ram nội chỉ để chứa dữ liệu, 128 byte còn lại thuộcbank 2 là cùng các thanh ghi có chức năng đặc biệt SFR mà người dùng khôngđược chứa dữ liệu khác trong đây thì 4 bank bộ nhớ dữ liệu của PIC16F877 đượctổ chức theo cách khác
Mỗi bank của bộ nhớ dữ liệu PIC16F877 bao gồm cả các thanh ghi có chứcnăng đặc biệt SFR nằm ở các các ô nhớ địa chỉ thấp và các thanh ghi mục đíchdùng chung GPR nằm ở vùng địa chỉ còn lại của mỗi bank thanh ghi Vùng ô nhớcác thanh ghi mục đích dùng chung này chính là nơi người dùng sẽ lưu dữ liệutrong quá trình viết chương trình Tất cả các biến dữ liệu nên được khai báo chứatrong vùng địa chỉ này
Trong cấu trúc bộ nhớ dữ liệu của PIC16F877, các thanh ghi SFR nào màthường xuyên được sử dụng (như thanh ghi STATUS) sẽ được đặt ở tất cả cácbank để thuận tiện trong việc truy xuất Sở dĩ như vậy là vì, để truy xuất mộtthanh ghi nào đó trong bộ nhớ của 16F877 ta cần phải khai báo đúng bank chứathanh ghi đó, việc đặt các thanh ghi sử dụng thường xuyên giúp ta thuận tiên hơnrất nhiều trong quá trình truy xuất, làm giảm lệnh chương trình
Trang 6Sơ đồ bộ nhớ dữ liệu của PIC16F8 7 7Dựa trên sơ đồ 4 bank bộ nhớ dữ liệu PIC16F877 ta rút ra các nhận xét nhưsau :
-Bank0 gồm các ô nhớ có địa chỉ từ 00h đến 77h, trong đó các thanh ghi dùngchung để chứa dữ liệu của người dùng địa chỉ từ 20h đến 7Fh Các thanh ghiPORTA, PORTB, PORTC, PORTD, PORTE đều chứa ở bank0, do đó để truy
Trang 7xuất dữ liệu các thanh ghi này ta phải chuyển đến bank0 Ngoài ra một vài cácthanh ghi thông dụng khác ( sẽ giới thiệu sau) cũng chứa ở bank0
- Bank1 gồm các ô nhớ có địa chỉ từ 80h đến FFh Các thanh ghi dùng chungcó địa chỉ từ A0h đến Efh Các thanh ghi TRISA, TRISB, TRISC, TRISD, TRISEcũng được chứa ở bank1
- Tương tự ta có thể suy ra các nhận xét cho bank2 và bank3 dựa trên sơ đồtrên
Cũng quan sát trên sơ đồ, ta nhận thấy thanh ghi STATUS, FSR… có mặt trên cả
4 bank Một điều quan trọng cần nhắc lại trong việc truy xuất dữ liệu củaPIC16F877 là : phải khai báo đúng bank chứa thanh ghi đó Nếu thanh ghi nàomà 4 bank đều chứa thì không cần phải chuyển bank
2.1.1.2 Một vài thanh ghi chức năng đặc biệt SFR
Thanh ghi STATUS : thanh ghi này có mặt ở cả 4 bank thanh ghi ở các địa chỉ
03h, 83h, 103h và 183h : chứa kết quả thực hiện phép toán của khối ALU, trạngthái reset và các bit chọn bank cần truy xuất trong bộ nhớ dữ liệu
Thanh ghi OPTION_REG : có mặt ở bank2 và bank3 có địa chỉ 81h và 181h.
Thanh ghi này cho phép đọc và ghi, cho phép điều khiển chức năng pull_up củacác chân trong PORTB, xác lập các tham số về xung tác động, cạnh tác động củangắt ngoại vi và bộ đếm Timer0
Trang 8Thanh ghi INTCON : có mặt ở cả 4 bank ở địa chỉ 0Bh,8Bh,10Bh,18Bh Thanh
ghi cho phép đọc và ghi, chứa các bit điều khiển và các bit báo tràn timer0, ngắtngoại vi RB0/INT và ngắt khi thay đổi trạng thái tại các chân của PORTB
Thanh ghi PIE1 :địa chỉ 8Ch, chứa các bit điều khiển chi tiết các ngắt của các
khối chức năng ngoại vi
Thanh ghi PIR1 : địa chỉ 0Ch, chứa cờ ngắt của các khối chức năng ngoại 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 PIE1
Thanh ghi PIE2 : địa chỉ 8Dh, chứa các bit điều khiển các ngắt của các khối
chức năng CCP, SSP bú, ngắt của bộ so sánh và ngắt ghi vào bộ nhớ EEPROM
Thanh ghi PIR2: địa chỉ 0Dh, chứa cờ ngắt của các khối chức năng ngoại 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 PIE2
Thanh ghi PCON : địa chỉ 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
Trang 92.1.2 Thanh ghi W(work) và tập lệnh của PIC16F877
Thanh ghi W
Đây là thanh ghi rất đặc biệt trong PIC16F877 Nó có vai trò tương tự nhưthanh ghi Accummulator của 8051, tuy nhiên tầm ảnh hưởng của nó rộng hơn rấtnhiều
Tập lệnh của PIC16F877 có tất cả 35 lệnh thì số lệnh có sự “góp mặt” củathanh ghi W là 23 lệnh Hầu hết các lệnh của PIC16F877 đều liên quan đếnthanh ghi W Ví dụ như, trong PIC chúng ta không được phép chuyển trực tiếp giátrị của một thanh ghi này qua thanh ghi khác mà phải chuyển thông qua thanh ghiW
Thanh ghi W có 8 bit và không xuất hiện trong bất kỳ bank thanh ghi nào củabộ nhớ dữ liệu của 16F877 Mỗi dòng lệnh trong PIC16F877 được mô tả trong 14bit Khi ta thực hiện một lệnh nào đó, nó phải lưu địa chỉ của thanh ghi bị tácđộng (chiếm 8 bit) và giá trị một hằng số k nào đó (thêm 8 bit nữa) là 16 bit, vượtquá giới hạn 14 bit Do vậy ta không thể nào tiến hành một phép tính toàn trựctiếp nào giữa 2 thanh ghi với nhau hoặc giữa một thanh ghi với một hằng số k.Hầu hết các lệnh của PIC16F877 đều phải liên quan đến thanh ghi W cũng vì lý
do đó Khi thực hiện một dòng lệnh nào đó, thì PIC sẽ không phải tốn 8 bit để lưuđịa chỉ của thanh ghi W trong mã lệnh ( vì được hiểu ngầm) Có thể xem thanhghi W là thanh ghi trung gian trong quá trình viết chương trình cho PIC16F877
Trang 102.1.3 Các vấn đề về Timer
PIC16F877 có tất cả 3 timer : timer0 (8 bit), timer1 (16 bit) và timer2 (8 bit)
Timer0
Cũng giống như 8051, Timer0 của 16F877 cũng có 2 chức năng : định thời vàđếm xung 2 chức năng trên có thể được lựa chọn thông qua bit số 5 TOCS củathanh ghi OPTION
Ngoài ra, ta cũng có thể lựa chọn cạnh tích cực của xung clock, cạnh tác độngngắt…thông qua thanh ghi trên
Timer0 được tích hợp thêm bộ tiền định 8 bit (prescaler), có tác dụng mở rộng
“dung lượng” của Timer0 Bộ prescaler này có thể được điều chỉnh bởi các 3 bitPS2:PS0 trong thanh ghi OPTION Nó có thể có giá trị 1:2, 1:4, 1:8, 1:16, 1:32,1:64, 1:128, 1:256 tùy thuộc vào việc thiết lập các giá trị 0 ,1 cho 3 bit trên
Bộ tiền định có giá trị 1:2 chẳng hạn ,có nghĩa là : bình thường không sử dụngbộ tiền định của Timer0 (đồng nghĩa với tiền định tỉ lệ 1:1) thì cứ khi có tác động
Trang 11của 1 xung clock thì timer0 sẽ tăng thêm một đơn vị Nếu sử dụng bộ tiền định1:4 thì phải mất 4 xung clock thì timer0 mới tăng thêm một đơn vị Vô hìnhchung, giá trị của timer0 (8 bit) lúc này không còn là 255 nữa mà là 255*4=1020.Các thanh ghi liên quan đến Timer0 bao gồm :
- TMR0 : chứa giá trị đếm của Timer0
- INTCON : cho phép ngắt hoạt động
- OPTION_REG : điều khiển prescaler
Timer1
Sơ đồ khối của Timer1Timer1 là bộ định thời 16 bit, giá trị của Timer1 sẽ được lưu trong hai thanhghi 8 bit TMR1H:TMR1L Cờ ngắt của Timer1 là bit TMR1IF, bit điều khiển củaTimer1 là TRM1IE
Cặp thanh ghi của TMR1 sẽ tăng từ 0000h lên đến FFFFh rồi sau đó tràn về0000h Nếu ngắt được cho phép, nó sẽ xảy ra khi khi giá trị của TMR1 tràn từFFFFh rồi về 0000h, lúc này TMR1IF sẽ bật lên
Timer1 có 3 chế độ hoạt động :
Trang 12- Chế độ hoạt động định thời đồng bộ : Chế độ được lựa chọn bởi bitTMR1CS Trong chế độ này xung cấp cho Timer1 là Fosc/4, bit T1SYNC khôngcó tác dụng.
- Chế độ đếm đồng bộ : trong chế độ này, giá trị của timer1 sẽ tăng khi cóxung cạnh lênh vào chân T1OSI/RC1 Xung clock ngoại sẽ được đồng bộ vớixung clock nội, hoạt động đồng bộ được thực hiện ngay sau bộ tiền định tỉ lệxung (prescaler)
- Chế độ đếm bất đồng bộ :chế độ này xảy ra khi bit T1SYNC được set.Bộ định thời sẽ tiếp tục đếm trong suốt quá trình ngủ của vi điều khiển và có khảnăng tạo một ngắt khi bộ định thời tràng và làm cho Vi điều khiển thoát khỏitrạng thái ngủ
Timer2 : là bộ định thời 8 bit bao gồm một bộ tiền định (prescaler), một bộ
hậu định Postscaler và một thanh ghi chu kỳ viết tắt là PR2 Việc kết hợp timer2với 2 bộ định tỉ lệ cho phép nó hoạt động như một bộ đinh thời 16 bit Moduletimer2 cung cấp thời gian hoạt động cho chế độ điều biến xung PWM nếumodule CCP được chọn
2.2 Giao tiếp máy tính qua cổng USB-COM với PL2303
Một số dịng máy tính hiện nay khơng tích hợp cổng RS-232, nếu sử dụng trên mạch thực nghiệm cổng RS-232 thì phải cần một cáp chuyển đổi RS232-USB
để giao tiếp với máy tính Để thuận lợi trong giao tiếp trực tiếp với máy tính thơngqua cáp USB thơng dụng, ta sử dụng IC PL-2303 của hãng Prolific [21] để chuyển đổi giữa RS232-USB Thực chất là mạch tạo một COM ảo trên máy tính vàviệc điều khiển như RS-232 thơng thường
Sơ đồ khối giao tiếp chuẩn RS-232 giữa máy tính và mạch thực nghiệm bằng COM ảo được mơ tả trong hình
Trang 13Sơ đồ khối giao tiếp chuẩn RS-232 giữa máy tính và mạch thực nghiệm.
Sơ đồ mạch kết nối lên máy tính :
Việc truyền dữ liệu qua cổng COM được tiến hành theo cách nối tiếp.Nghĩa
là các bit dữ liệu được truyền đi nối tiếp nhau trên một đường dẫn
Trang 14Các chân RXD, TXD của PL-2303 được nối trực tiếp đến các chân truyền DTXD và chân nhận tín hiệu DRXD của vi điều khiển.
Các chân DM và DP của IC được kết nối với đường dữ liệu âm (DAT-) và đường dữ liệu dương (DAT+) của cổng USB để truyền dữ liệu
Giản đồ khối của IC PL-2303:
Giản đồ khối của IC PL-2303.
IC PL-2303 hoạt động như một cầu nối giữa cổng USB và cổng nối tiếp RS-232 Hai bộ đệm lớn trên chip chứa lưu lượng dữ liệu từ hai bus khác nhau Các khối dữ liệu lớn được áp dụng cho truyền hoặc nhận qua cổng USB này Chế
độ bắt tay tự động được hỗ trợ tại cổng nối tiếp Như vậy, tốc độ truyền có thể được đưa ra để lựa chọn lớn hơn nhiều so với bộ điều khiển UART thông thường
IC này cũng phù hợp với việc thiết lập chương trình quản lý nguồn hiệu quả từ cổng USB Thiết bị chỉ được tiêu thụ nguồn tối thiểu từ máy tính trong thời
Trang 15gian máy ở trạng thái chờ Bằng cách kết hợp tất cả các chức năng trong một chip
28 chân, IC này phù hợp để gắn cáp chuẩn USB Người dùng chỉ đơn giản cắm dâycáp vào máy tính qua cổng USB, và sau đó họ có thể kết nối với bất kỳ thiết bị RS-232
Các chân IC PL-2303 được dùng trong chuẩn truyền thông RS-232
Một số chân tuy không dùng nhưng phải được kích hoạt ở mức thấp (nối đất) như chân 6, 9, 10, 25 và 26
2.3 Cảm biến nhiệt độ LM35
LM35DZ là loại cảm biến nhiệt độ được sử dụng rộng rãi trong công
nghiệp,bởi giá thành thấp và cách vận hành đơn giản.LM35DZ có mức điện áp thayđổi trực tiếp theo độ C (10mV/*C)
Sơ đồ chân của LM35DZ:
Trang 16Chân +Vs là chân cung cấp điện áp cho LM35DZ hoạt động (4—20V).
Chân Vout là chân điện áp ngõ ra của LM35DZ,được đưa vào chân Analog
của các bộ ADC
Chân GND là chân nối mass,lưu ý cần nối mass chân này để trành làm hỏng
cảm biến cũng như làm giảm sai số trong quá trình đo
2.4 Nguyên lý điều khiển ON-OFF (dùng khâu rơle có trễ) :
Hình 4.2
Phương pháp điều khiển ON-OFF còn được gọi là phương pháp đóng ngắthay dùng khâu rơle có trễ : cơ cấu chấp hành sẽ đóng nguồn để cung cấp cho nănglượng ở mức tối đa cho thiết bị tiêu thụ nhiệt nếu nhiệt độ đặt θđặt lớn hơn nhiệt độ
độ đặt nhỏ hơn nhiệt độ thực của lò
Trang 17Một vùng trễ được đưa vào để hạn chế tần số đóng ngắt như sơ đồ khối trên :nguồn chỉ được đóng khi sai lệch nhiệt độ e lớn hơn một lượng ∆ và ngắt khi e béhơn ∆ Như vậy, nhiệt độ phản hồi θphản hồi sẽ dao động quanh giá trị đặt θđặt và 2∆
còn được gọi là vùng trễ của rơle.
Khâu rơle có trễ còn gọi là mạch so sánh Smith trong mạch điện tử, và nhưvậy ∆ là giá trị thềm hay ngưỡng
Điều khiển ON-OFF có ưu điểm là :
-Thiết bị tin cậy, đơn giản, chắc chắn, hệ thống luôn hoạt động được với mọi tải.-Tính toán thiết kế ít phức tạp và cân chỉnh dễ dàng
Nhưng có khuyết điểm là sai số xác lập sẽ lớn do hệ chỉ cân bằng động quanhnhiệt độ đặt và thay đổi theo tải Khuyết điểm này có thể được hạn chế khi giảm vùng trễ bằng cách dùng phần tử đóng ngắt điện tử ở mạch công suất.
Việc điều khiển nhiệt độ với chất lượng cao có thể thực hiện bằng sơ đồ điều khiển tuyến tính với hàm truyền hiệu chỉnh thích hợp.
2.5.
VISUAL BASIC VÀ TRUYỀN THÔNG NỐI TIẾP
2.5.1 Cơ bản về Visual Basic.net
Khởi động Visual Basic.net: Start > All Programs > Microsoft Visual
Studio 2008
> Visual Basic.net
Mở một Project mới: File > New >Project
- Chọn Visua Basic trong khung Project types
- Chọn Windowns Application trong khung Tempates
- Đặt tên project: Name
Trang 19Thanh trình đơn (Menu Bar)
File: Mở đóng các File hay Project.
Edit: Các chọn lựa khi soạn nguồn mã như: Undo, Redo, Cut, Copy, Paste và
delete
View: Sư chọn lựa hiển thị các sổ như: Solution Explorer, Properties, Output,
Tool Box, Server Explorer
Project: Để quản lí Project như: thêm/ xóa các tập tin.
Build: Cho phép biên dịch và chạy ứng dụng.
Debug: Rà tìm các lỗi mã nguồn trong project.
Data: Kết nối CSDL.
Tools: Chứa các công cụ trong MS Visual Studio.NET IDE.
Windows: Tiêu chuẩn quản lý mọi cửa sổ
Help: Cung cấp giúp đỡ với MS Visual Studio.NET
Trang 20- Và cuối cùng, nút Toolbar Options để hiện thị them các công cụ phụ
thuộc khác
Hộp công cụ (Toolbox)
Trang 21
Gồm các nhóm công cụ như : Common, Data , Windows Forms, Menu
& Toolbars
Cửa sổ Solution Explorer
Chứa tên Project và các tập tin trong Project
Trên cùng có các biểu tượng để hiển thị các cửa sổ tương
ứng:Properties, Show All File, View code, View,Design, Refesh,
Trang 22
Các thuộc tính cơ bản của các đối tượng trong VB.net:
Các sự kiện cơ bản của các đối tượng trên VB.:
Form_Load: xảy ra mỗi khi mở một form