Đồ án nghiên cứu về điều khiển nhiệt độ hiển thị trên Led ma trận nối tiếp, bao gồm 4 chương với các nội dung tổng quan về đề tài; cơ sở lý thuyết; thiết kế và thi công phần cứng; đánh giá và kết luận.
BỘ CƠNG THƯƠNG TRƯỜNG ĐẠI HỌC CƠNG NGHIỆP THỰC PHẨM TP. HỒ CHÍ MINH KHOA CƠNG NGHỆ ĐIỆN – ĐIỆN TỬ BÁO CÁO ĐỒ ÁN CHUN NGÀNH ĐỀ TÀI: ĐIỀU KHIỂN NHIỆT ĐỘ HIỂN THỊ TRÊN LED MA TRẬN NỐI TIẾP GVHD: NGUYỄN PHÚ CƠNG SINH VIÊN THỰC HIỆN MSSV DƯƠNG HÀO QUANG 2032170077 TP. HỒ CHÍ MINH, 14 tháng 07, năm 2020 TRƯỜNG ĐH CƠNG NGHIỆP THỰC PHẨM TP. HCM KHOA CƠNG NGHỆ ĐIỆN – ĐIỆN TỬ CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT N Độc lập Tự do Hạnh phúc TP. HCM, ngày….tháng… năm…… ĐỀ CƯƠNG CHI TIẾT TÊN ĐỒ ÁN: ĐIỀU KHIỂN NHIỆT ĐỘ HIỂN THỊ TRÊN LED MA TRẬN NỐI TIẾP Giảng viên hướng dẫn: Nguyễn Phú Công Thời gian thực hiện: Từ ngày 01/05/2020 đến ngày 15/07/2020 Sinh viên thực hiện: Dương Hào Quang Nội dung đề tài: Tìm hiểu tổng quan lý thuyết Xây dựng mục tiêu đề tài Thiết kế và thi cơng mơ hình hiển thị nhiệt độ trên led ma trận Thực nghiệm và đánh giá đề tài Kế hoạch thực hiện: Từ ngày 01/05/2020 đến ngày 31/05/2020: Nhận đề tài Từ ngày 01/06/2020 đến ngày 23/06/2020: Nghiên cứu đề tài Từ ngày 24/06/2020 đến ngày 30/06/2020: Tiến hành thi công lắp ráp và thử nghiệm Từ ngày 01/07/2020 đến ngày 14/07/2020: Viết báo cáo Xác nhận của giảng viên hướng dẫn TP. HCM, ngày….tháng … năm… Sinh viên TRƯỜNG ĐH CƠNG NGHIỆP THỰC PHẨM TP. HCM CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA CƠNG NGHỆ ĐIỆN – ĐIỆN TỬ Độc lập Tự do Hạnh phúc TP. HCM, ngày….tháng… năm…… NHẬN XÉT ĐỒ ÁN CHUN NGÀNH CỦA GIẢNG VIÊN HƯỚNG DẪN Tên đồ án: ĐIỀU KHIỂN NHIỆT ĐỘ HIỂN THỊ TRÊN LED MA TRẬN NỐI TIẾP Sinh viên thực hiện: Giảng viên hướng dẫn: Dương Hào Quang Nguyễn Phú Công 2032170077 Đánh giá Đồ án Về cuốn báo cáo: Số trang Số bảng số liệu _ Số chương _ _ Số hình vẽ _ Số tài liệu tham khảo _ Sản phẩm _ Một số nhận xét về hình thức cuốn báo cáo: …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Về nội dung đồ án: …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Về tính ứng dụng: …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Về thái độ làm việc của sinh viên: …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Đánh giá chung: …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… …………………………………………………………………………………………………… Điểm sinh viên: Dương Hào Quang: … /10 Người nhận (Ký tên và ghi rõ họ tên) LỜI CẢM ƠN Để hồn thành chun đề báo cáo đồ án chun ngành điều khiển – tự động hóa trước hết em xin gửi đến q thầy, cơ giáo trong Khoa Cơng nghệ ĐiệnĐiện tử, trường Đại học Cơng nghiệp thực phẩm Thành phố Hồ Chí Minh lời cảm ơn chân thành. Đặc biệt, em xin gửi đến thầy Nguyễn Phú Cơng, người đã tận tình hướng dẫn, giúp đỡ em hồn thành chun đề báo cáo đồ án chun ngành điều khiển – tự động hóa này lời cảm ơn sâu sắc nhất Mặc dù nhóm em đã cố gắng hết sức mình, nhưng do lượng kiến thức eo hẹp nên khơng tránh khỏi những thiếu sót. Do vậy, chúng em rất mong nhận được sự góp ý q báu của thầy, cơ để nhóm có thể hồn thiện và tốt hơn nữa cũng như tích lũy kinh nghiệm để hồn thành tốt báo cáo đồ án tốt nghiệp sao ngày Sau cùng, em kính chúc q thầy cơ thật dồi dào sức khỏe, ln tràn đầy nhiệt huyết cùng với thành cơng trong sự nghiệp cao q TP. HCM, ngày 14 tháng 07 năm 2020 Sinh viên thực hiện Dương Hào Quang LỜI NĨI ĐÀU Như chúng ta biết, nhiệt độ là một trong những thành phần vật lý rất quan trọng. Việc thay đổi nhiệt độ của một vật chất ảnh hưởng rất nhiều đến cấu tạo, tính chất, và các đại lượng vật lý khác của vật chất. Ví dụ, sự thay đổi nhiệt độ của 1 chất khí sẽ làm thay đổi thể tích, áp suất của chất khí trong bình. Vì vậy, trong nghiên cứu khoa học, trong cơng nghiệp và trong đời sống sinh hoạt, thu thập các thơng số và điều khiển nhiệt độ là điều rất cần thiết Trong các lị nhiệt, máy điều hồ, máy lạnh hay cả trong lị viba, điều khiển nhiệt độ là tính chất quyết định cho sản phảm ấy. Trong ngành luyện kim, cần phải đạt đến một nhiệt độ nào đó để kim loại nóng chảy, và cũng cần đạt một nhiệt độ nào đó để ủ kim loại nhằm đạt được tốt các đặc tính cơ học như độ bền, độ dẻo, độ chống gỉ sét, … . Trong ngành thực phẩm, cần duy trì một nhiệt độ nào đó để nướng bánh, để nấu, để bảo quản, … . Việc thay đổi thất thường nhiệt độ, khơng chỉ gây hư hại đến chính thiết bị đang hoạt động, cịn ảnh hưởng đến q trình sản xuất, ngay cả trên chính sản phẩm ấy. Sự ra đời của mạch Arduino đã thúc đẩy sự u thích, tìm tịi nghiên cứu, ứng dụng thành tựu khoa học kỹ thuật của lĩnh vực tự động hóa vào đời sống và cơng nghiệp. Với những ưu điểm riêng của mình, Arduino dần khẳng định được vị thế, vai trị của mình trên trường quốc tế, được giới học sinh, sinh viên và cả giới nghiên cứu sử dụng một cách rộng rãi Chính vì thấy được những ưu điểm của Arduino cùng với kiến thức sau một thời gian học tập và tìm hiểu tài liệu về Arduino, em đã chọn dùng Arduino chọn đồ án 2 với đề tài: “Điều khiển nhiệt độ hiển thị trên led ma trận nối tiếp” MỤC LỤC DANH MỤC HÌNH ẢNH CHƯƠNG 1: 1.1 TỔNG QUAN VỀ ĐÈ TÀI Đặt vấn đề Ngày nay, với sự phát triển của khoa học kỹ thuật, trong cuộc sống hằng ngày việc đo và đặt nhiệt độ theo mong muốn trong một khơng gian giới hạn nào đó như: trong nhà máy, xí nghiệp, trong bệnh viện, trong cơng ty, nhà ở,…là rất cần thiết theo nhu cầu của con người. Điều đó chứng tỏ con người ngày càng muốn giao tiếp nhiều hơn với mơi trường. Vì vậy điều khiển nhiệt độ là điều rất cần thiết và với sự phát triển của khoa học kỹ thuật, việc thực hiện một mơ hình điều khiển nhiệt độ hiển thi trên led ma trận với độ chính xác cao mà khơng mất nhiều chi phí Hình 1. : Điều khiển nhiệt độ máy lạnh Giúp sinh viên củng cố lý thuyết mơn học Vi xử lý trong điều khiển. Hiểu thêm về cấu trúc của các dịng vi điều khiển nói chung và ARDUINO nói riêng. Biết cách lập trình cho vi điều khiển và thực hiện được một số bài tốn điều khiển cơ bản. Giúp sinh viên có thêm kỹ năng giải quyết một số bài tốn điều khiển đơn giản ứng dụng các dịng vi điều khiển. Có khả năng phân tích bài tốn điều khiển 10 Hình 2. : MAX7219 Chân LOAD được kéo xuống LOW và bit đầu tiên của dữ liệu được đưa vào chân DIN, trên sườn lên của xung CLK, các bit tại chân DIN được đưa vào thanh ghi bên trong chip. Sau đó xung CLK xuống LOW và các bit tiếp theo được thiết lập tại chân DIN trước khi lặp lại q trình. Sau khi 16 bit được đưa vào thanh ghi, chân LOAD được đưa lên HIGH để chốt dữ liệu vào. Chân DOUT (24) được sử dụng nếu có từ 2 chip MAX7219 trở lên. DOUT của chip thứ nhất kết nối DIN của chip thứ hai và cứ như vậy. Dữ liệu được đưa ra khỏi chân DOUT trên sườn xuống của xung CLK 23 CHƯƠNG 3: 3.1 THIẾT KẾ VÀ THI CƠNG PHẦN CỨNG Tìm hiểu về đề tài 3.1.1 Nhiệm vụ đặt ra Điều khiển quạt DC và đèn AC. Nếu nhiệt độ đặt lớn hơn nhiệt độ đo thì mở đèn và tắt quạt. Ngược lại, nếu nhiệt độ đặt nhỏ hơn nhiệt độ đo thì vi điều khiển kích Relay tắt đèn và mở quạt làm mát Hình 3. : Sơ đồ khối Hiển thị nhiệt độ đặt và nhiệt độ đo trên led ma tận. Các cơ cấu thi hành phải hoạt động ổn định khi nhiệt độ đo dao động quanh nhiệt độ chuẩn (nhiệt độ đặt) 3.1.2 Hướng giải quyết Dùng đèn AC để tăng nhiệt độ và quạt DC để giảm nhiệt độ. Hiển thị nhiệt độ bằng module led ma trận 8x32 sử dụng IC MAX7219 Dùng 2 nút nhấn để nhập nhiệt độ chuẩn (nhiệt độ đặt) và bắt đầu xử lý Dùng phần mềm Arduino IDE để viết chương trình 3.2 Nguyên lý hoạt động của các khối 3.2.1 Khối cảm biến Để đọc nhiệt độ từ cảm biến DS18B20, chúng ta cần sử dụng các thư viện hỗ trợ sau: Thư viện OneWire.h Thư viện DallasTemperature.h 24 Sơ đồ kết nối chân với Arduino: DS18B20 ARDUINO GND GND DATA VCC 5V Bảng 3. : Sơ đồ kết nối chân DS18B20 với Arduino Sơ đồ kết nối dây: Hình 3. : Kết nối DS18B20 với Arduino Ngun lý hoạt động của cảm biến DS18B20: DS18B20 gồm 2 byte: + 4 bit thấp là phần lẻ sau dấu phẩy: Bít 0, bít 1, bít 2, bít 3. + 7 bit tiếp theo là phần ngun: Bit 4, bít 5, bít 6, bít 7, bít 8, bít 9, bít 10. + 5 bít cao nhất là dấu của nhiệt độ (0 = “+”; 1 = “”) + Dữ liệu đến và đi khỏi DS18B20 đều truyền từ bit LSB đầu tiên và cuối cùng là bit MSB (từ phải sang trái). Cách đọc nhiệt độ của DS18B20: Nhiệt độ đọc về dạng hex nên ta phải đổi ra thập phân khi hiển thị. Giả sử ta đọc được 2 byte nhiệt độ: Bước 1: So sánh bit MSB, nếu= 0 thì in ra dấu “+” rồi nhảy sang bước 3 Nếu = 1 thì in ra dấu “” rồi tiếp tục đến bước 2. Bước 2: Chuyển 2 byte vừa nhận được sang dạng bù 2 của chính nó. 25 Bước 3: Chuyển 7 bit phần ngun vào thanh ghi A và in ra giá trị thanh ghi nàydưới dạng thập phân (chính là in ra 3 số phần ngun của nhiệt độ). Bước 4: In ra dấu “,”. Bước 5: In ra 4 số sau dấu “,” dạng thập phân (4 bít thấp nhất) VD: +10.125˚C là FF5Eh 3.2.2 Khối hiển thị nhiệt độ Để hiển thị hình ảnh lên led ma trận ta sử dụng module 4 led ma trận với IC MAX7219 Hiển thị Module led ma trận thơng qua Arduino, chúng ta cần sử dụng các thư viện sau: Thư viện MD_Parola.h Thư viện MD_MAX72xx.h Sơ đồ kết nối với Arduino: MODULE LED MA TRẬN ARDUINO VCC 5V GND GND DIN_PIN 11 CLK_PIN 13 CS_PIN 10 Bảng 3. : Sơ đồ kết nối chân Led ma trận với Arduino Nguyên lý hoạt động của IC MAX7219 với led ma trận: 64 đèn LED được điều khiển bởi 16 chân đầu ra của IC. Số lượng tối đa của đèn LED sáng lên cùng một lúc là tám. Các đèn LED được sắp xếp thành 8 × 8 gồm hàng và cột. Vì vậy, MAX7219 kích hoạt mỗi cột trong một khoảng thời gian rất ngắn và đồng thời nó cũng điều khiển từng hàng. Vì vậy, bằng cách nhanh chóng chuyển qua các cột và hàng, mắt người sẽ chỉ nhận thấy một ánh sáng liên tục 26 Hình 3. : Sơ đồ kết nối giữa MAX7219 với led ma trận Lưu ý các chân của Ma trận LED 8 × 8 phổ biến được sắp xếp bên trong, vì vậy nếu bạn tự xây dựng một ma trận, bạn nên tìm hiểu nó. Cũng lưu ý rằng một bảng ngắt phổ biến cho MAX7219 đi kèm với một điện trở giữa 5V và chân IC 18 Điện trở được sử dụng để cài đặt độ sáng hoặc dịng điện cho đèn LED Hình 3. : Điện trở điều chỉnh dịng điện Bảng dưới đây là dữ liệu của IC cho thấy giá trị của điện trở mà chúng ta nên sử dụng theo mức giảm điện áp chuyển tiếp của đèn LED Hình 3. : Phân đoạn dịng điện so với bảng giảm điện áp chuyển tiếp từ dữ liệu Sơ đồ kết nối dây giữa module với Arduino: 27 Hình 3. : Kết nối dây giữa module led ma trận với Arduino 3.2.3 Khối nút nhấn Sơ đồ kết nối dây với Arduino: Hình 3. : Kết nối nút nhấn với Arduino Sơ đồ kết nối chân : NÚT NHẤN ARDUINO VCC 5V GND GND Button1 Button2 Bảng 3. : Sơ đồ kết nối nút nhấn với Arduino Nguyên lý hoạt động: 28 Sử dụng 2 nút nhấn (Button1 và Button 2) dùng để tăng, giảm và nhập nhiệt độ đặt. Khi bật nguồn khối hiển thị sẽ hiển thị 29 ℃. Nếu nhấn Button1 nhiệt độ chuẩn sẽ tăng từng độ, nhấn Button2 sẽ giảm nhiệt độ chuẩn và tính hiệu sẽ truyền về Aruino bắt đầu xử lý đèn 3.2.4 Khối điều khiển đèn Sơ đồ kết nối với Arduino: Hình 3. : Kết nối điều khiển đèn với Arduino 29 Hình 3. : Kết nối điều khiển quạt với Arduino Sơ đồ nối kết nối chân: RELAY ARDUINO VCC 5V GND GND RELAY1 RELAY2 Bảng 3. : Sơ đồ kết nối relay với Arduino Nguyên lý hoạt động: Sử dụng module relay 5V để đóng ngắt nguồn AC, bóng đèn được nối vào tiếp điểm NC(thường đóng) của relay. Khi nhiệt độ đặt lớn hơn nhiệt đọ chuẩn thì Arduino xuất tín hiệu đóng ngắt relay làm cho bóng đèn sáng lên, tăng nhiệt độ cảm biến và khi nhiệt độ thực lớn hơn nhiệt đọ đặt thì ngắt relay, tắt đèn 3.3 Thơng số nguồn điện của các linh thiết bị TÊN THIẾT BỊ SỐ LƯỢNG DÒNG ĐIỆN ÁP ARDUINO UNO R3 30mA 5VDC MODUEL LED MA TRẬN 8x32 320mA 5VDC NÚT NHẤN 100mA 5VDC RELAY 80mA 5VDC QUẠT DC 1A 12VDC ĐÈN ~0,1A 220V Bảng 3. : Thông số thiết bị Các thiết bịsử dụng ngồn 5V thì sử dụng chung một nguồn ni có sẵn từ Arduino sử dụng Adapter để cấp nguồn cho Arduino, riêng quạt sử dụng Adapter 12VDC và đèn sử dụng nguồn 220VAC 30 Hình 3. : Adapter 5V Thơng số của Adapter: Điện áp vào : 100240 V Điện áp ra : 5V1A Chiều dài cáp :1m Đầu jack chẩn micro 3.4 Phần mềm và giải thuật 3.4.1 Phần mềm #include #include #include #include #include #define ONE_WIRE_BUS 2 //Sensor DS18B20 am digitalen Pin 2 OneWire oneWire(ONE_WIRE_BUS); // tạo giao tiếp 1 dây DallasTemperature sensors(&oneWire);// đưa giao tiếp vào cảm biến int settemp=29; const uint16_t WAIT_TIME = 800; float nhietdo; #define MAX_DEVICES 4 #define CLK_PIN 13 #define DATA_PIN 11 #define CS_PIN 10 #define role1 1 #define role2 0 #define coi 6 const int buttonup =3; 31 const int buttondown =4; int currentbuttonstate = 0; int previousbuttonstate=0 ; int currentbuttonstate1 =0; int previousbuttonstate1=0 ; MD_Parola P = MD_Parola(CS_PIN, MAX_DEVICES); void setup(void) { P.begin(); pinMode(buttonup,INPUT_PULLUP); pinMode(buttondown,INPUT_PULLUP); pinMode(role1,OUTPUT); pinMode(role2,OUTPUT); } void loop(void) { displaymatrix(); setheater1(); setbuttonup(); setbuttondown(); } void displaymatrix(){ sensors.requestTemperatures();// yêu cầu cảm biến đọc nhiệt độ nhietdo=sensors.getTempCByIndex(0);// lấy nhiệt độ trên cảm biến P.print(String(nhietdo)+"C"); } void setbuttonup(){ currentbuttonstate = digitalRead(buttonup); if (currentbuttonstate != previousbuttonstate){ // nếu trạng thái hiện tại thay đổi so với trạng thái trước if (currentbuttonstate== HIGH){ // nút nhấn dược nhấn settemp=settemp+1; settempup(); } } previousbuttonstate=currentbuttonstate; } void setbuttondown(){ 32 currentbuttonstate1 = digitalRead(buttondown); if (currentbuttonstate1 != previousbuttonstate1){// nếu trạng thái hiện tại thay đổi so với trạng thái trước if (currentbuttonstate1== HIGH){// nút nhấn dược nhấn settemp=settemp1; settempdown(); } } previousbuttonstate1=currentbuttonstate1; } void settempup(){ P.print("Set:"+String(settemp)); delay(WAIT_TIME); } void settempdown(){ P.print("Set:"+String(settemp)); delay(WAIT_TIME); } void setheater1(){ if ((settemp) > (nhietdo + 0.5 ) ) { // n ếu nhi ệt độ đặt lớn hơn nhiệt độ hiện tại thì bật đèn, tắt quạt digitalWrite(role1, LOW); digitalWrite(role2, HIGH); } else if ((settemp)