GIỚI THIỆU VỀ BỘ ĐIỀU KHIỂN NHIỆT ĐỘ1.1 Tổng quan bộ điều khiển nhiệt độ Bộ điều khiển nhiệt độ được sử dụng rộng rãi trong công nghiệp, có thể kểđến một số ứng dụng cụ thể như: lò sấy,
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
BÁO CÁO BÀI TẬP CUỐI KỲ ĐIỀU KHIỂN NHIỆT ĐỘ VỚI
NGUỒN 220VAC
HOÀNG VIỆT LONG
Long.hv181596@sis.hust.edu.vn
Ngành Kỹ thuật điều khiển- tự động hóa
Giảng viên hướng dẫn: PGS.TS Nguyễn Hồng Quang
HÀ NỘI, 03/2022
Chữ ký của GVHD
Trang 2MỤC LỤC
CHƯƠNG 1 GIỚI THIỆU VỀ BỘ ĐIỀU KHIỂN NHIỆT ĐỘ 1
1.1 Tổng quan bộ điều khiển nhiệt độ 1
CHƯƠNG 2 BỘ ĐIỀU KHIỂN NHIỆT ĐỘ 3
2.1 Tổng quan module kit ARDUINO 3
2.1.1 Thông số của Arduino Uno R3 3
2.1.2 Sơ đồ các chân 3
2.1.3 Các cổng vào ra 4
2.2 Bộ phận cảm biến 4
2.2.1 Cảm biến nhiệt độ độ ẩm DHT11 5
2.3 Màn hình LCD 16x2 6
2.4 Một số các thiết bị khác 8
2.4.1 Mạch MOC3020 8
2.4.2 Cách ly quang EL817 9
CHƯƠNG 3 THIẾT KẾ HỆ THỐNG 10
3.1 Giao tiếp giữa Arduino với module cảm biến DHT11 10
3.2 Giao tiếp I2C LCD 10
3.3 Nguyên lí hoạt động 11
3.4 Sơ đồ tổng thể 12
CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG 14
4.1 Kết quả 14
CHƯƠNG 5 KẾT LUẬN 15
5.1 Kết quả thu được 15
5.2 Hướng phát triển 15
Trang 3DANH MỤC HÌNH VẼ
Hình 1.1 Bộ điều khiển nhiệt độ thương mại 1
Hình 1.3 Sơ đồ điều khiển vòng kín PID 2
Hình 2.1 Hình ảnh thực tế Arduino Uno R3 4
Hình 2.2 Hình ảnh thưc tế của DHT11 5
Hình 2.3 Sơ đồ kết nối 6
Hình 2.4 Màn hình LCD 16x2 7
Hình 2.5 Module I2C LCD 16×2 8
Hình 2.6 Sơ đồ chân mạch MOC3020 8
Hình 2.7 Sơ đồ chân của cách ly quang EL817 9
Hình 3.1 Sơ đồ nối dây Arduino với DHT11 10
Hình 3.2 Sơ đồ nối dây Arduino với DHT11 thực tế 10
Hình 3.3 Sơ đồ nối dây Module I2C LCD 16x2 với Arduino Uno R3 11
Hình 3.4 Sơ đồ gép nối vi điều khiển với module I2C LCD 16x2 11
Hình 3.5 Sơ đồ mạch phát hiện điểm không điện áp 12
Hình 3.6 Sơ đồ mạch mô phỏng 12
Hình 3.7 Sơ đồ mạch thực tế 13
Hình 4.1 Kết quả mô phỏng khí giá trị đặt là 300C 14
Hình 4.2 Kết quả mô phỏng khí giá trị đặt là 500C 14
Trang 4CHƯƠNG 1 GIỚI THIỆU VỀ BỘ ĐIỀU KHIỂN NHIỆT ĐỘ 1.1 Tổng quan bộ điều khiển nhiệt độ
Bộ điều khiển nhiệt độ được sử dụng rộng rãi trong công nghiệp, có thể kểđến một số ứng dụng cụ thể như: lò sấy, lò ấp trứng, lò nướng, nồi hơi, hệ thống tạo độ ẩm, hệ thống khí nén Các chế độ điều khiển mà bộ điều khiển sử dụng có thể kể đến như: điều khiển van on off, điều khiển van tuyến tính, điều khiển PID, điều khiển ON OFF
Hình 1.1 Bộ điều khiển nhiệt độ thương mại
Ngoài ra với chế độ điều khiển PID Bộ điều khiển nhiệt độ sẻ điều khiển làm sao cho nhiệt độ hệ thống bằng với nhiệt độ cài đặt một cách nhanh nhất và chính xác nhất
Bộ điều khiển còn có thể điều khiển độ ẩm, áp suất, lưu lượng thông qua ngõ vào là tín hiệu 4-20mA hoặc 0-10 VDC, 0-5 VDC Tích hợp thêm các chức năng như cảnh báo nhiệt độ, đặt giá trị trực tiếp thông qua màn hình hiển thị, chế
độ tự chỉnh, chế độ thích nghi
1
Trang 5Hình 1.2 Sơ đồ điều khiển vòng kín PIDVới ứng dụng điều khiển nhiệt độ, ta có tín hiệu đặt và tín hiệu phản hồi lànhiệt độ mong muốn và nhiệt độ thực tế Tín hiệu điều khiển đối tượng là giá trị góc mở cho triac Vì đối tượng của bài toán khó mô hình hóa nên sử dụng phương pháp nhận dạng để xác định hàm truyền của đối tượng là khâu quán tính bậc nhất Từ đó thiết kế ra các thông số của bộ PID.
2
Trang 6CHƯƠNG 2 BỘ ĐIỀU KHIỂN NHIỆT ĐỘ
2.1 Tổng quan module kit ARDUINO
Do dịch bệnh nên nhóm em phải đặt mua kit STM32 và Stlink online và gặp vấn đề về drive cũng như phiên bản nên nhóm em không thể debug bằng STM32 được Vì vậy nên trong bài báo cáo này nhóm em sẽ sử dụng kit ARDUINO UNO R3
2.1.1 Thông số của Arduino Uno R3
Vi điều khiển Atmega328 họ 8 bit
Điện áp hoạt động 5V DC (chỉ được caaso qua cổng USB)Tần số hoạt động 16MHz
Điện áp vào khuyên dùng 7-12V DC
Điện áp giới hạn 6-20V DC
Số chân Digital I/O 14 ( 6 chân hardware PWM)
Số chân Analog 6 ( độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30mA
Số chân Tên chân Mô tả
1 GND Cực âm của nguồn điện cấp cho Arduino UNO
Khi dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
2 5V Cấp điện áp 5V đầu ra Dòng tối đa cho phép ở
chân này là 500mA
3 3.3V Cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở
chân này là 50mA
4 Vin Để cấp nguồn ngoài cho Arduino Uno, nối cực
dương của nguồn với chân này và cực âm của nguồn với chân GND
5 AREF Điện áp hoạt động của vi điều khiển trên Adruino
Uno có thể được đo ở chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn
3
Trang 76 Reset Việc nhấn nút Reset trên board để reset vi điều
khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10K
2.1.3 Các cổng vào ra
Hình 2.3 Hình ảnh thực tế Arduino Uno R3
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có
2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM Các chân 3, 5, 6, 9, 10, và 11 cho phép bạn xuất ra xung PWM
với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.Chân giao
tiếp SPI
2 (MISO), 13 (SCK) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
LED Trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi
bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
2.2 Bộ phận cảm biến
4
Trang 82.2.1 Cảm biến nhiệt độ độ ẩm DHT11
Cảm biến DHT11 bao gồm một phần tử cảm biến độ ẩm điện dung và một điện trở nhiệt để cảm nhận nhiệt độ Tụ điện cảm biến độ ẩm có hai điện cực với chất nền giữ ẩm làm chất điện môi giữa chúng Thay đổi giá trị điện dung xảy ra với sự thay đổi của các mức độ ẩm IC đo, xử lý các giá trị điện trở đã thay đổi này và chuyển chúng thành dạng kỹ thuật số
Để đo nhiệt độ, cảm biến này sử dụng một nhiệt điện trở có hệ số nhiệt độ
âm, làm giảm giá trị điện trở của nó khi nhiệt độ tăng Để có được giá trị điện trở lớn hơn ngay cả đối với sự thay đổi nhỏ nhất của nhiệt độ, cảm biến này thường được làm bằng gốm bán dẫn hoặc polymer
2.2.1.1 Sơ đồ chân DHT11
Số chân Tên chân Mô tả
2 Data Đầu ra cả nhiệt độ và độ ẩm thông qua dữ liệu nối tiếp
3 NC Không có kết nối và do đó không sử dụng
Hình 2.4 Hình ảnh thưc tế của DHT112.2.1.2 Tính năng
Cảm biến nhiệt độ và độ ẩm DHT11 là cảm biến rất thông dụng hiện nay
vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất) Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào So với cảm biến đời mới hơn là DHT22 thì DHT11 cho khoảng đo và độ chính xác kém hơn rất nhiều
2.2.1.3 Thông số kỹ thuật DHT11
Điện áp hoạt động: 3V - 5V DC
Dòng điện tiêu thụ: 2.5mA
5
Trang 9Phạm vi cảm biến độ ẩm: 20% - 90% RH, sai số ±5%RH
Phạm vi cảm biến nhiệt độ: 0°C ~ 50°C, sai số ±2°C
Tần số lấy mẫu tối đa: 1Hz (1 giây 1 lần)
Kích thước: 23 * 12 * 5 mm
Hình 2.5 Sơ đồ kết nối2.2.1.4 Cách sử dụng cảm biến DHT11
Cảm biến DHT11 được hiệu chuẩn tại nhà máy và xuất dữ liệu nối tiếp, do
đó rất dễ thiết lập
Như bạn có thể thấy, chân dữ liệu được kết nối với chân I / O của vi điều khiển và một điện trở kéo lên 5K được sử dụng Chân dữ liệu này xuất ra giá trị của cả nhiệt độ và độ ẩm dưới dạng dữ liệu nối tiếp Nếu bạn đang muốn giao tiếp DHT11 với Arduino thì có các thư viện được tạo sẵn cho nó sẽ giúp bạn bắt đầu nhanh chóng
Nếu bạn đang giao tiếp nó với một số vi điều khiển khác thì datasheet được cung cấp bên dưới sẽ rất hữu ích Đầu ra được đưa ra bởi chân dữ liệu sẽ theo thứ tự là dữ liệu số nguyên độ ẩm 8 bit + 8 bit dữ liệu thập phân độ ẩm + dữ liệu số nguyên nhiệt độ 8 bit + dữ liệu nhiệt độ phân đoạn 8 bit + bit chẵn lẻ 8 bit Để yêu cầu module DHT11 gửi những dữ liệu này, chân I / O phải được đặt ởmức thấp trong giây lát và sau đó được giữ ở mức cao như trong biểu đồ thời gian bên dưới
Thời lượng của mỗi tín hiệu host được giải thích trong datasheet DHT11, với các bước và sơ đồ thời gian minh họa
Trang 10LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS, RW, EN).
5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2
Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế
độ dữ liệu
Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi
LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm
Hình 2.6 Màn hình LCD 16x2Module I2C
LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển
Module I2C LCD ra đời và giải quyết vấn để này cho bạn
Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì với module I2C, bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối
Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay
7
Trang 11Giao tiếp: I2C.
Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2)
Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt
Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD
2.4 Một số các thiết bị khác
2.4.1 Mạch MOC3020
Hình 2.8 Sơ đồ chân mạch MOC3020MOC3020 là một opto-coupler được thiết kế để giao tiếp giữa các điều khiển điện tử và TRIAC công suất để điều khiển tải điện trở và cảm ứng cho các hoạt động điện áp xoay chiều AC Nguyên tắc được sử dụng trong opto-coupler
là, MOC có sẵn ở dạng mạch tích hợp và không yêu cầu mạch quá phức tạp để
8
Trang 12làm cho nó hoạt động Chỉ cần cung cấp một xung nhỏ vào đúng thời điểm cho LED trong gói Ánh sáng do LED tạo ra sẽ kích hoạt các đặc tính nhạy sáng của DIAC và nguồn được bật Sự cách ly giữa các mạch công suất thấp và công suất cao trong các thiết bị được kết nối quang học này thường là vài nghìn vôn.
2.4.2 Cách ly quang EL817
Hình 2.9 Sơ đồ chân của cách ly quang EL817
Cách ly dùng trong mạch nhận dạng điểm không, có tác dụng bảo vệ vi điều khiển
9
Trang 13CHƯƠNG 3 THIẾT KẾ HỆ THỐNG
3.1 Giao tiếp giữa Arduino với module cảm biến DHT11
Sơ đồ đấu nối:
Hình 3.10 Sơ đồ nối dây Arduino với DHT11
Hình 3.11 Sơ đồ nối dây Arduino với DHT11 thực tế
3.2 Giao tiếp I2C LCD
Trang 14Hình 3.12 Sơ đồ nối dây Module I2C LCD 16x2 với Arduino Uno R3
Hình 3.13 Sơ đồ gép nối vi điều khiển với module I2C LCD 16x2
3.3 Nguyên lí hoạt động
Mạch thiết kế này là mạch dùng để điều khiển nhiệt độ cho bóng đèn sợi đốt (220V/60W) dử dụng bộ PID Mạch điều khiển điều khiển nhiệt độ thông quađiện áp đưa vào đèn bằng việc điều khiển đóng mở TRIAC
Mạch sẽ thực hiện các công việc: phát hiện điểm cắt 0 của điện áp xoay chiều, tạo bộ điều khiển PID và thay đổi góc bắn ở cổng TRIAC, từ đó điều khiển nhiệt độ của đèn sợi đốt
Phát hiện điểm chuyển mạch tự nhiên
Điện áp hình sin 220V có tần số 50Hz, sau mỗi nửa chu kì, điện áp sẽ chuyển từ giá trị âm sang dương hoặc ngược lại, vậy nên sẽ có những thời điểm điện áp bằng 0 Khi điện áp bằng 0, nếu gửi một xung kích hoạt tới TRIAC, có thể kiểm soát lượng sóng sẽ truyền đi và lượng công suất Vì vậy cần phát hiện các điểm chuyển mạch tự nhiên để được đồng bộ hóa
Vì vậy, với bộ vi điều khiển cần phát hiện điểm chuyển mạch, ta sử dụng hai thành phần và đó là một bộ chỉnh lưu mạch cầu H và một bộ transistor Điều
11
Trang 15này là cần thiết vì bộ vi điều khiển không thể hoạt động với điện áp âm và trên 5V Bộ chỉnh lưu mạch cầu H sẽ chỉ cho sóng dương và bộ transistor sẽ hạ điện
áp xuống 5Vpp Bây giờ chúng ta có thể đọc tín hiệu đó bằng Arduino
Hình 3.14 Sơ đồ mạch phát hiện điểm không điện áp
3.4 Sơ đồ tổng thể
Hình 3.15 Sơ đồ mạch mô phỏng
12
Trang 16Hình 3.16 Sơ đồ mạch thực tế
13
Trang 17CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG
4.1 Kết quả
Kịch bản mô phỏng:
Thay đổi giá trị đặt nhiệt độ bằng phím bấm Đặt giá trị lần lượt là 30 C và0
50 C.0
Hình 4.17 Kết quả mô phỏng khí giá trị đặt là 30 C0
Hình 4.18 Kết quả mô phỏng khí giá trị đặt là 50 C0
Kết quả mô phỏng:
Nhiệt độ đo về bám với giá trị nhiệt độ đặt Thời gian đáp ứng nhỏ
14
Trang 18CHƯƠNG 5 KẾT LUẬN 5.1 Kết quả thu được
Hiểu được quá trình thiết kế bộ điều khiển nhiệt độ
Có thể ứng dụng vào thực tế một cách dễ dàng giúp đo chính xác các nguồn nhiệt nhiệt độ cao
Giao diện điều khiển và giám sát dễ sử dụng, thân thiện người dùng
Do sự hạn chế về thời gian thực hiện, nguồn tài liệu tham khảo chủ yếu thông qua internet nên đề tài không tránh khỏi sai sót và còn một số hạn chế:
- Nhóm mới mô phỏng được trên phần mềm Proteus
- Mô hình mạch thực tế bị lỗi không chạy được
5.2 Hướng phát triển
Khắc phục lỗi và tìm hiểu nguyên nhân thực tế không chạy đượcThiết kế hệ thống sử dụng nhiều cảm biến đo nhiệt độ ở các điểm khác nhau
15
Trang 20int firing_delay = 7400;
//////////////////////////////////////////////////////
int maximum_firing_delay = 7400;
/*Chon do tre toi da sau khi phat hien diem 0 la 7400
* Vi chung ta biet dien ap xoay chieu 220V co tan so khoang 50-60 Hz vi vay khoang thoi gian la 16ms den 20 ms
* Chung ta kiem soat trong nua chu ky la 8ms den 10ms
* De chac chan khog vuot qua 10ms thi 7400 us la gia tri thich hop*/
//////////////////////////////////////////////////////
unsigned long previousMillis = 0;
unsigned long currentMillis = 0;
int temp_read_Delay = 500;
int real_temperature = 0;
int setpoint = 30;
bool pressed_1 = false;
bool pressed_2 = false;
int kp = 203; int ki= 7.2; int kd = 1.04;
int PID_p = 0; int PID_i = 0; int PID_d = 0;
void setup() {
17
Trang 21//Define the pins
lcd.init(); //Khoi dong giao tiep LCD
lcd.backlight(); //Bat den nen LCD
}
void loop() {
currentMillis = millis(); //Luu gia tri cua thoi gian truoc vong lap /* Doc nhiet do va thay doi gia tri "temp_read_Delay" */
if(currentMillis - previousMillis >= temp_read_Delay){
previousMillis += temp_read_Delay; //Tang thoi gian cho vong lap tiep theo
real_temperature = 2*dht.readTemperature(); //Doc nhiet do tu cam bien nhiet DHT
PID_error = setpoint - real_temperature; //Tinh toan PID_error
18
Trang 22if(PID_error > 30) //Hang so tich phan I chi anh huong den sai so duoi 30ºC
{PID_i = 0;}
PID_p = kp * PID_error; //Tinh toan gia tri P
PID_i = PID_i + (ki * PID_error); //Tinh toan gia tri I
timePrev = Time;
Time = millis(); // Doc thoi gian thuc te
elapsedTime = (Time - timePrev) / 1000;
PID_d = kd*((PID_error - previous_error)/elapsedTime); //Tinh toan gia tri D PID_value = PID_p + PID_i + PID_d; //Tinh toan bo PID
//Pham vi tre trong khoang 0 den 7400
Trang 23//neu phat hien diem 0 tao xung kich hoat 100us
if(PINB & B00000001){ //Xac minh D8 có o muc cao ko
if(last_CH1_state == 0){ //Neu trang thai cuoi la 0 can thay doi trang thai zero_cross_detected = true;