ĐỒ ÁN VI ĐIỀU KHIỂN GVHD ĐẶNG PHƯỚC VINH ĐỒ ÁN VI ĐIỀU KHIỂN GVHD ĐẶNG PHƯỚC VINH LỜI NÓI ĐẦU Ngày nay, sự điều khiển của con người chỉ là 1 phần nhỏ trong hoạt động của những sản phẩm này, mà đa số l.
Trang 1ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
LỜI NÓI ĐẦU
Ngày nay, sự điều khiển của con người chỉ là 1 phần nhỏ trong hoạt động của những sản phẩm này, mà đa số là chúng tự hoạt động, chính điều này đã tạo nên một nền sản xuất tự động mà ở đó, các thiết bị máy móc tự động hoạt động theo những gì con người lập trình sẵn ban đầu, chúng có khả năng thích ứng với sự thay đổi môi trường và làm những công việc tương ứng Để làm được điều này, chúng
ta cần có những hiểu biết về lập trình tự động và lập trình vi điều khiển là một dẫn chứng tiêu biểu Vi điều khiển là một máy tính được tích hợp trên một chíp, nó
thường được sử dụng để điều khiển các thiết bị điện tử Vi điều khiển, thực chất, là một hệ thống bao gồm một vi xử lý có hiệu suất đủ dùng và giá thành thấp (khác với các bộ vi xử lý đa năng dùng trong máy tính) kết hợp với các khối ngoại vi như bộ nhớ, các mô đun vào/ra, các mô đun biến đổi số sang tương tự và tương tự sang số, Ở máy tính thì các mô đun thường được xây dựng bởi các chíp và mạch ngoài(theo Wikipedia) Chúng ta sử dụng các phần mềm, trình biên dịch và các hổ trợ khác để lập trình và nạp code vào cho vi điều khiển, kết nối với các thiết bị ngoại vi để thực hiện lệnh như mong muốn
Hiện nay, có rất nhiều dòng vi điều khiển tự sử dụng như 8051, PIC, AVR, ARM… mỗi loại có ưu nhược điểm riêng Trong đề tài này, em sử dụng PIC16f877 làm MCU cho mạch
Đồ án Vi điều khiển này sẽ là cơ hội để sinh viên tìm hiểu , nâng cao kĩ năng về lập trình điều khiển tự động, kĩ năng làm mạch…
Em xin cảm ơn sự giúp của thầy Đặng Phước Vinh đã tận tình hướng dẫn trong quá trình làm đồ án và sự giúp đỡ từ mọi người xung quanh
Đà Nẵng , ngày 4/2/2017
Trang 2ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
MỤC LỤC
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI 3
1.1 Sơ đồ khối 4
1.2 Sơ đồ mạch và nguyên lý hoạt động chung 5
1.3 Tìm hiểu PIC 16F877A và các chức năng 6
1.4 Cảm biến nhiệt độ IC LM35 15
1.5 Led 7 đoạn 16
1.6 Nút nhấn 18
CHƯƠNG 2: LƯU ĐỒ THUẬT TOÁN VÀ CHƯƠNG TRÌNH 20
2.1 Lưu đồ thuật toán 20
2.2 Chương trình 21
CHƯƠNG 3: KẾT LUẬN 33
TÀI LIỆU THAM KHẢO 34
Trang 3ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
CHƯƠNG I: TỔNG QUAN ĐỀ TÀI
Các máy móc, thiết bị trong quá trình làm việc sẽ phát sinh nhiệt 1 cách khách quan phụ thuộc vào hoạt động của thiết bị đó, đó là điều không thể tránh Để nâng cao hiệu suất làm việc của thiết bị, cần phải giảm tác động do nhiệt độ này Có nhiều cách: cải tiến thiết bị, tản nhiệt trong đó, tản nhiệt là phương pháp được sử dụng phổ biến do đơn giản, giá thành thấp và phù hợp với nhiều thiết bị
Tản nhiệt là hình thức cho nhiệt độ phát sinh từ nguồn gây nhiệt bức xạ ra môi trường xung quanh, làm giảm nhiệt độ phát sinh Có nhiều cách tản nhiệt như dùng cánh tản nhiệt (động cơ), sử dụng keo tản nhiệt hay dùng nước các phương pháp này đơn giản, tuy nhiên chỉ tản được 1 lượng nhiệt nhất định và hiệu suất thấp phương pháp được sử dụng phổ biến là quạt tản nhiệt do đơn giản Tuy nhiên, việc
sử dụng quạt để tản nhiệt gây tiêu tốn năng lượng ngay cả khi nguồn sinh nhiệt ít
Để tiết kiệm năng lượng, tốc độ quạt cần thay đổi phù hợp với nhiệt độ gây ra
Đó cũng chính là nguyên nhân em chọn đề tài điều khiển tốc độ động cơ theo nhiệt độ
Vi điều khiển PIC16f877a sẽ đo và nhận biết mức nhiệt cụ thể, từ đó điều khiển tốc độ quạt cho phù hợp để làm giảm nguồn nhiệt Ứng dụng này có thể được sử dụng trong các máy móc, các bộ phận làm việc thường xuyên gây nhiệt nhưng vẫn đảm bảo tiết kiệm năng lượng
Ngoài ra, ứng dụng này còn có thể được sử dụng để điều hòa nhiệt độ trong phòng hay kiểm soát các nhiệt độ do các nguồn gây nhiệt khách quan khác
Trang 4ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
1.1 Sơ đồ khối
Hình 1.1: Sơ đồ khối
❖ Chức năng, nhiệm vụ từng khối.
➢ Khối nguồn: Tạo nguồn điện 5v cung cấp cho vi xử lý, khối điều khiển,
khối hiển thị và cảm biến
➢ Vi điều khiển: xử lý tín hiệu đưa về từ cảm biến, tính toán giá trị nhiệt độ
và cung cấp xung PWM đầu ra để điều khiển động cơ đồng thời nhận và xử
lý tín hiệu từ phím điều khiển
➢ Khối cảm biến: Đo nhiệt độ và chuyển đổi thành giá trị điện áp đưa về viđiều khiển
Trang 5ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
➢ Khối điều khiển: nhận lệnh từ người điều khiển truyền về cho vi xử lý đểtăng giảm nhiệt độ cài đặt
➢ Khối hiển thị: hiện thị nhiệt độ đo được
➢ Khối chấp hành: chuyển đổi tín hiệu PWM từ vi điều khiển thành điện ápđiều khiển tốc độ động cơ và động cơ dc dùng để tản nhiệt
➢ Khối cảnh báo : phát tín hiệu cảnh báo khi nhiệt độ vượt quá mức qui định
1.2 Sơ đồ mạch và nguyên lý hoạt động chung.
1.2.1 Sơ đồ mạch nguyên lý
Trang 6ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
1.2.2 Nguyên lý tổng quát:
Khối cảm biến( IC LM35) đo nhiệt độ trong môi trường và chuyển thành tín hiệu
điện áp, đưa vào vi điều khiển Vi điều khiển dùng bộ ADC để chuyển đổi thành tín hiệu số và tính toán nhiệt độ đo được, sau đó hiện thị lên Led 7 đoạn, đồng thời
so sánh với giá trị nhiệt độ được cài đặt trước bằng các phím nhấn của khối điều chỉnh, đưa ra giá trị sai lệch, tính toán giá trị độ rộng xung tương ứng và đưa đến khối chấp hành(ĐỘNG CƠ) Tín hiệu PWM kích mở BJT , xung PWM được lọc bằng tụ C và cấp cho động cơ Nếu nhiệt độ vượt quá giá trị cho phép, sẽ phát ín hiệu đến khối cảnh báo(CÒI) để báo hiệu
1.3 Tìm hiểu PIC 16F877A và các chức năng
1.3.1 Giới thiệu chung
PIC 16F877A là dòng vi điều khiển 8bit của hãng Microchip, hỗ trợ đầy đủ các chức năng, các phương thức giao tiếp
❖ Sơ đồ chân :
Hình 1.3 sơ đồ chân PIC 16F877A
Trang 7ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trang 8ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
1.3.2 PWM và chức năng PWM trong PIC 16F877A
a Phương pháp PWM điều khiển tốc độ động cơ.
PWM là phương pháp được sử dụng phổ biến hiện nay để điều khiển tốc độ động
cơ bởi sự tiết kiệm năng lượng và hiệu suất cao, không tổn hao năng lượng nhiều
❖ Nguyên lý phương pháp PWM
PWM thực chất là phương pháp điều khiển độ rộng xung có tần số nhất định, sau
đó qua bộ lọc, lấy điện áp trung bình đặt vào 2 đầu động cơ Tốc độ động cơ tỉ lệ thuận với điện áp trung bình đặt vào và do đó, tỉ lệ thuận với độ rộng xung cung cấp
Điện áp trung bình được tính theo công thức:
• Vtb là điện áp trung bình đặt lấy ra
• a = Duty Cycle : khoảng thời gian có xung mức 1
• T = Period : Chu kì xung T = 1
𝑓 (f : tần số xung)
Như vậy : Bằng cách thay đổi độ rộng cung a = Duty Cycle , ta có thể điều chỉnh lượng điện áp đặt vào 2 đầu động cơ và điều khiển được tốc độ
Trang 9ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trong vi điều khiển PIC 16F877A có hổ trợ module CCP cho phép tạo ra xung PWM và có thể thay đổi giá trị Duty Cycle bằng thay đổi giá trị ghi vào các thanh ghi chức năng
b Module PWM trong PIC 16F877A
Vi điều khiển PIC 16F877A có 2 module CCP : CCP1 và CCP2 Cả 2 module này
có nguyên lý hoạt động gần như nhau (trừ 1 số điểm khác biệt)
Module CCP bao gồm 1 thanh ghi 16 bit, có thể hoạt động ở 3 chế độ: Capture, Compare và PWM (Pulse Width Moduration)
Trong đề này, chúng ta chỉ đề cập đến chức năng PWM của module CCP1 trong PIC 16F877A dùng để điều khiển tốc độ động cơ
PIC 16F877A cung cấp chức năng PWM với độ phân giải 10bit, xung tạo ra trên chân RC2/CCP1
❖ Các thanh ghi liên quan :
• Thanh ghi CCP1CON: Thanh ghi điều khiển, bao gồm các bit điều khiển,chọn chế độ …
Hình 1.6: Thanh ghi CCP1CON [1]
Bit 7-6: Không sử dụng (=0)
Bit 4-5 : Là 2 bit LSbs trong giá trị của Duty cycle
Bit 3-2-1-0 : Các bit chọn chế độ Compare/ Capture/ PWM
• Thanh ghi TMR1L: Thanh ghi giá trị của TIMER1, chứa giá trị xác lậpcho Duty Cycle
Trang 10ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
• Thanh ghi PR2 : khi giá trị Timer2 tăng từ 00h đến giá trị thanh ghi PR2,Timer 2 sẽ reset về 00h
Hình 1.8: Lưu đồ hoạt dộng của PWM [1]
❖ Nguyên lý hoạt động :
Tần số(chu kỳ) Period và thời gian có xung được tính toán dựa trên giá trịcác giá trị ghi vào các thanh ghi CCPR1L, 2bit CCP1X, CCP1Y, và thanhghi PR2
Hình 1.9: chu trình hoạt dộng [1]
Trang 11ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
• Chu kỳ Period (T): T được thiết lập bằng cách ghi giá trị vào thanh ghi
PR2 Khi giá trọ thanh ghi TMR2 tăng đến khi TMR2 = PR2, lúc đó, ta được 1 chu kì T T được tính theo công thức :
T = [PR2+1].4.Tosc.TMR2 Prescale Value (1.2)
Trong đó : T = 1/f : chu kỳ xung Period (f: tần số xung)
PR2 : Giá trị ghi vào thanh ghi PR2 Tosc = 1/ Fosc : Chu kì lệnh của vi điều khiển, với Fosc là tần tần số thạch anh
TMR2 Prescale Value : Giá trị bộ chia của TMR2 Timer 2 có 4 bộ chia : 1:1 ; 1:4 và 1: 16 được chon bởi 2 bit trong thanh ghi T2CKPS1 : T2CKPS0 trong thanh ghi T2CON
Từ biểu thức (1.2) , ta có :
Fosc PR
f TMR prescale
Độ rông xung (PWM Duty Cycle):
Giá trị độ rộng xung Duty Cycle được thiết lập bằng cách gán giá trị cho thanh ghi TMR1L và 2 bít 4, 5 trong thanh ghi CCP1CON -> là 1 giá trị 10bit
1.3.3 Bộ chuyển đổi ADC và chức năng ADC trong PIC 16F877A
a ADC là gì ?
ADC(Analog to Digital Convert) là bộ chuyển đổi các tín hiệu tương tự thành các tín hiệu số dưới dạng 2 bit 0 và 1
Trang 12ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trong môi trường xung quanh chúng ta, các yếu tố đều như nhiệt độ, độ ẩm, … đều ở dạng tín hiệu tương tự, muốn vi điều khiển hiểu và đo được cần chuyển đổi thành tín hiệu số(0 và 1)
b ADC trong PIC 16F877A
VĐK PIC 16F877A có 8 kênh chuyển đổi ADC độ phân giải 10bit, cho phép sử dụng điện áp tham chiếu mức cao, thấp trên 2 chân RA2, RA3
Hình 1.10: Nguyên lý ADC [1]
❖ Các thanh ghi liên quan
• Thanh ghi ADCON0: Thanh ghi điều khiển
Hình 1.11: Thanh ghi ADCON0 [1]
Trang 13ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Bit 7-6 : ADCS1 và ADCS0 : 2 bit chọn xung clock cho ADC
Hình 1.12: Bảng chọn bộ chia [1]
Chọn xung clock quyết định thời gian chuyển đổi 1 bit(TAD) của ADC Cả quá trình chuyển đổi cần 12 TAD Để qua trình chuyển đổi đúng, TAD > 1,6 us Do đó, tương ứng với thạnh anh sử dụng, chọn bộ chia xung thích hợp
Bit 5,4,3: CHS2, CHS1, CHS0 :Các bit chọn kênh ADC
PIC 16F877A có 8 kênh ADC 10bit tương ứng các chân POTRA
CHS2 : CHS1 : CHS0 = 000 Kênh 0 RA0 CHS2 : CHS1 : CHS0 = 001 Kênh 1 RA1 CHS2 : CHS1 : CHS0 = 010 Kênh 2 RA2 CHS2 : CHS1 : CHS0 = 011 Kênh 3 RA3 CHS2 : CHS1 : CHS0 = 100 Kênh 4 RA4 CHS2 : CHS1 : CHS0 = 101 Kênh 5 RA5 CHS2 : CHS1 : CHS0 = 110 Kênh 6 RA6 CHS2 : CHS1 : CHS0 = 111 Kênh 7 RA7
Bit 2 : GO/DONE : Bit chỉ trạng thái quá trình chuyển đổi
Khi Bit ADON = 1: Nếu GO/DONE = 1: đang chuyển đổi
Trang 14ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Nếu GO/DONE = 0: hoàn thành quá trình chuyển đổi
Bit 0: ADON : Bật ( =1 ) hay tắt ( =0 ) bộ ADC
• Thanh ghi ADCON1: Thanh ghi điều khiển
Hình 1.13: Thanh ghi ADCON1 [1]
Bit 7: ADFM : Bit định dạng kết quả
Do kết quả 10bit được lưu vào 2 thanh ghi cần có cách ghi vào 2 thanh ghi này
- Bit ADFM = 1: kết quả được dịch phải : gồm 2 bit thấp ADRESH + 8 Bit của ADRESL
- Bit ADFM = 0: kết quả được dịch trái : gồm 8 bit ADRESH + 2 Bit cao của ADRESL
Hình 1.14: Dịch kết quả [1]
Bit 6 : ADCS2 : Kết hợp với các bit ADCS1 : ADCS0 để chọn xung clock Bit 3,2,1,0 : PCFG3 :PCFG2:PCFG1:PCFG0 : Các bit chọn chế độ làm việc
Trang 15ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Hình 1.15: Bảng chọn chân Analog/Digital [1]
• Thanh ghi ADRESL và ADRESH : Thanh ghi chứa kết quả
❖ Quá trình chuyển đổi :
Cấu hình chânChọn kênh chọn xung clock cài đặt ngắt
bật bit GO/DONE, bắt đâu chờ GO/DONE = 0 Đọc kết quả
1.4 Cảm biến nhiệt độ IC LM35
Cảm biến LM35 là loại cảm biến nhiệt độ được sử dụng rộng rãi, giá thành thấp,
kích thước nhỏ gọn, cho độ chính xác cao Đầu ra là điện áp tương ứng với nhiệt
độ đo được
❖ Một số đặc tính của LM35 theo [2]
- Độ chính xác : ±1/4 ºC ở nhiệt độ phòng và ±3/4 ºC khi <55 ºC và >150 ºC
- Tỉ lệ ; 10mV/ 1 ºC
Trang 16ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Led 7 đoạn là module tích hợp 7 led đơn ghép lại với nhau dùng để hiện thị thông
tin dạng số, chữ cái và có 2 loại chính: Anode chung và Catode chung
Hình 1.18: Sơ đồ led 7 đoạn
RA0
Trang 17ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
- Nguyên lý:
Ở đây, chúng ta trình bày và phân tích loại Anode chung được sử dụng phổ biến Các đoạn led a, d, c, d, e, f, g sẽ sáng khi cấp điện áp 0V vào các chân tương ứng Để hiện thị các số, cho các led tương ứng sáng, các led còn lại tắt
Để hiện thị nhiều led 7 đoạn, ta sử dụng phương pháp quét led Dựa vào hiện tượng lưu ảnh của mắt người, người ta điều khiển cho các led 7 đoạn lượt sáng và hiện thị 1 số nhất định trong khoảng thời gian ngắn ta cảm nhận dường như tất cả led sáng cùng lúc
SỐ THỨ 3
BẬT LED 4 HIỂN THỊ
Trang 18ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Sơ đồ mạch:
Hình 1.21: Sơ đồ mạch điều khiển led 7 đoạn
1.6 Nút nhấn
Nút nhấn là linh kiện đóng ngắt mạch điện sử dụng phổ biến để tạo điều kiện thực
thi công việc nào đó Nút nhấn thường được kết nối trực tiếp trong mạch điều khiển hay được sử dụng để tạo tín hiệu(thường mức thấp, tức khi nhấn nối với GND) cấp cho VĐK thực hiện đoạn lệnh nào đó
Nút nhấn thực tế có nhiều loại: thường đóng, thường mở, nút ấn giữ hay nhấn nhả…
Hình 1.22: Sơ đồ nút nhấn
Trang 19ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Để cho nút nhấn hoạt động ổn định, cần delay 100-300ms trong chương trình để chống nhiễu
Trong đề tài này , để điều khiển và cài đặt nhiệt độ, ta sử dụng nút nhấn với mức
tích cực là mức 0V cấp tín hiệu cho PIC 16F877A
Ta sử dụng 3 nút nhấn : SET (vào chế độ cài đặt), UP(tăng đơn vị chữ số), DOWN(giảm đơn vị chữ số) và NEXT(chuyển chữ số)
Trang 20ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
CHƯƠNG 2: LƯU ĐỒ THUẬT TOÁN VÀ CHƯƠNG TRÌNH
2.1 Lưu đồ thuật toán
Trang 21ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
2.2 Chương trình
//CHUONG TRINH CHINH
#include "7seg_lib.h" //khai bao thu vien led 7 doan
#include "pwm_lib.h" //khai báo thư viện Pwm
#define cambien RA0_Bit //khai báo chân cảm biến
#define cambien_dir TRISA0_Bit
//định nghĩa nút nhấn
#define SETTING RE0_Bit
#define SETTING_DIR TRISE0_Bit
#define NEXT RE1_Bit
#define NEXT_DIR TRISE1_Bit
#define UP RE2_Bit
#define UP_DIR TRISE2_Bit
#define DOWN RB5_Bit
#define DOWN_DIR TRISB5_Bit
#define warn RC5_Bit
#define warn_dir TRISC5_Bit
//khai báo biến
unsigned char temp_set=0;
unsigned char up=0, down=0, next=0, i=0, k=0;
unsigned int j=0;
volatile int giay=0;
int num1=0, num2=0;
Trang 22ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trang 23ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trang 24ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trang 25ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trang 26ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
Trang 27ĐỒ ÁN VI ĐIỀU KHIỂN GVHD: ĐẶNG PHƯỚC VINH
unsigned char adc_read_temp(){
unsigned int data_read;
//CHUONG TRINH THU VIEN LED DOAN
//định nghĩa các chân điều khiển 4 led 7 đoạn