LỜI MỞ ĐẦU Ngày nay, với những ứng dụng của khoa học kỹ thuật tiên tiến, thế giới của chúng ta ngày càng một thay đổi, ngày càng văn minh và hiện đại hơn Trong đó, kỹ thuật điện tử đã có những bước phát triển mạnh mẽ nhất là trong kỹ thuật điều khiển tự động và kỹ thuật vi điều khiển Đặc biệt, trong các trường Đại học và Cao đẳng trong cả nước thì việc sử dụng những công nghệ của khoa học kỹ thuật để chế tạo ra các sản phẩm có khả năng ứng dụng cao trong đời sống là điều mong mỏi không chỉ của c.
LỜI MỞ ĐẦU Ngày nay, với ứng dụng khoa học kỹ thuật tiên tiến, giới ngày thay đổi, ngày văn minh đại Trong đó, kỹ thuật điện tử có bước phát triển mạnh mẽ kỹ thuật điều khiển tự động kỹ thuật vi điều khiển Đặc biệt, trường Đại học Cao đẳng nước việc sử dụng công nghệ khoa học kỹ thuật để chế tạo sản phẩm có khả ứng dụng cao đời sống điều mong mỏi không thầy mà cịn niềm mong đợi nhiều sinh viên Khoa Điện – Điện tử Ở nước ta nay, việc áp dụng khoa học kỹ thuật vào trồng trọt, chăn nuôi ứng dụng rộng rãi Nhờ có khoa học kỹ thuật mà ngành chăn ni phát triển nhanh chóng mang lại hiệu kinh tế cao Xuất phát từ nhu cầu thực tế việc chăn nuôi, để giảm thiếu lượng heo bị chết sinh ra, chúng em nhận đề tài “Thiết kế chế tạo lập trình điều khiển, hồn thiện sản phẩm sưởi ấm cho lồng úm heo con” Dưới hướng dẫn nhiệt tình giáo ThS Nguyễn Thị Nhung với nỗ lực thành viên nhóm chúng em hồn thành đề tài giao Là sinh viên chuyên ngành Điện tử công nghiệp, sau khoảng thời gian năm học tập nhóm em có ý tưởng phát triển “Thiết kế chế tạo lập trình điều khiển, hồn thiện sản phẩm sưởi ấm cho lồng úm heo con” nhằm mang lại hiệu kinh tế cho hộ chăn nuôi Chúng em mong nhận đóng góp thầy cô bạn để sản phẩm chúng em hoàn thiện Chúng em xin chân thành cảm ơn! LỜI CẢM ƠN Sau thời gian ba tháng thực đồ án tốt nghiệp em với đề tài: “Thiết kế chế tạo lập trình điều khiển, hoàn thiện sản phẩm sưởi ấm cho lồng úm heo con” hoàn thành thời gian quy định Qua chúng em xin bày tỏ lòng biết ơn đến thầy cô giáo khoa Điện – Điện tử trường Đại học Sư phạm Kỹ thuật Hưng Yên, người truyền thụ tri thức, kỹ năng, kinh nghiệm cho em suốt bốn năm học vừa qua Đó tảng cho việc thực đồ án tốt nghiệp Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc đến giáo viên hướng dẫn cô ThS Nguyễn Thị Nhung cô theo dõi, dẫn, giúp đỡ tạo điều kiện tốt để chúng em hoàn thành đồ án Trong thời gian thực đồ án, chúng em phải khó khăn sai sót, ln có phát gợi ý cho em tìm phương pháp khắc phục hoàn thiện đồ án Cuối cùng, chúng em xin cảm ơn gia đình người cổ vũ, ủng hộ, tạo điều kiện vật chất tinh thần, cảm ơn bạn lớp, bạn khoa giúp đỡ, chia sẻ kinh nghiệm, góp phần hỗ trợ chúng em trình học tập Em xin chân thành cảm ơn! Hưng Yên, ngày tháng năm 2022 Sinh viên thực Quang Đức Oánh Hoàng Trung Việt MỤC LỤC DANH MỤC BẢNG BIỂU Bảng 1.1: Nhiệt độ tiêu chuẩn heo Bảng 1.2: Sơ đồ chân Moc3021 Bảng 1.3: Thông số kĩ thuật DHT22 Bảng 1.4: Chức chân IC 74HC595 DANH MỤC HÌNH ẢNH Hình 1.1: Lồng úm heo sơ sinh Hình 1.2: Chuồng heo sơ sinh ngày tuổi Hình 1.3: Sơ đồ khối Hình 1.4: Ảnh thực tế Arduino Nano Hình 1.5: Kích thước sơ đồ chân Arduino Nano Hình 1.6: Hình ảnh thực tế Triac Hình 1.7: Cấu tạo chân triac Hình 1.8: Kí hiệu, cấu trúc Triac Hình 1.9: cách mở triac cho dịng chảy qua Hình 1.10: Kí hiệu phân loại Triac Hình 1.11: Đặc tính Volt-Ampe Triac Hình 1.12: Ảnh thực tế Moc3021 Hinh 1.13: Sơ đồ chân moc3021 Hình 1.14: Cách sử dụng Moc3021 Hình 1.15: Sơ đồ chân PC817 Hình 1.16: Hình dạng, thứ tự chân DHT22 Hinh1.17: Cách kết nối DHT22 với MCU Hinh 1.18: Mơ tả mức tín hiệu MCU đến DHT22 Hình 1.19: DHT22 phát tín hiệu khởi động Hình 1.20: Quá trình DHT22 gửi liệu đến MCU Hinh 1.21: Module cảm biến Radar RCWL-0516 Hình 1.22: Tần số radar Hình 1.23 : Sơ đồ chân 74HC595 Hình 1.24: Hệ thống PID Hình 1.25: Đặc tính hệ lị nhiệt Hình 2.1: Sơ đồ ngun lí tồn mạch Hình 2.2: Sơ đồ nguyên lý khối nút nhấn Hình 2.3: Sơ đồ ngun lí modul led Hình 2.4: Sơ đồ ngun lí modul led Hình 2.5: Sơ đồ ngun lí kết nối cảm biến31 Hình 2.6: Sơ đồ ngun lí mạch phát điểm 031 Hình 2.7: Sơ đồ ngun lí mạch cơng suất32 Hình 2.8: Sơ đồ ngun lí khối nguồn Hình 2.9: Đặc tính q độ lị sấy Hinh2.10: Hà truyền đạt hệ lò nhiệt Hinh 2.11: PID control Hình 2.12: Hệ thống điều khiển PID hồn chỉnh Hình 2.13: Kết hiển thị máy sóng Hình2.14: Hộp nhựa sử dụng để thiết kế sản phẩm Hình 2.15: Bản vẽ thiết kế mặt hộp sản phẩm Hình 2.16: Hình ảnh thực tế, kích thước lồng úm heo Hình 2.17: Lưu đồ thuật tốn điều khiển tồn cục Hình 2.18: Thuật tốn cài đặt giá trị nhiệt độ Hình 2.19: Thuật tốn điều khiển PID kích mở triac Hình 2.20: Lưu đồ thuật tốn hiển thị Hình 2.21: Thuật tốn tính tốn thơng số PID Hình 3.1: Mạch in mạch điều khiển Hình 3.2: Module led Hình 3.3: Mạch điều khiển sau gia công Hinh 3.4: module hiển thị led sau gia cơng Hình 3.5: Kết đo mạch phát điểm Hình 3.6: Góc kích mở sấp sỉ Hình 3.7: Góc kích mở sấp sỉ 90° Hình 3.8: Góc kích mở > 150° Hình 3.9: Bố trí mạch dây hộp Hình 3.10: Mặt hộp Hình 3.11: Vị trí cấp nguồn, jack cảm biến ổ cắm Hình 3.12: Sản phẩm hoạt động Hình 3.13: Vị trí đặt sản phẩm lồng úm Hình 3.14: Nhiệt độ dao động khoảng 41°C Hình 3.15: Nhiệt độ ban đầu Hình 3.16: Nhiệt độ sau đạt mức cân CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 Lý chọn đề tài -Nghiên cứu đặc tính sinh học heo con: Heo thuộc nhóm động vật đẳng nhiệt chúng lại nhạy cảm v ới thay đổi nhiệt độ, đặc biệt giống heo hướng thịt nuôi nh ốt điều kiện công nghiệp Mặc dù heo phải đối mặt với nhi ều yếu t ố gây stress suốt chu kỳ sản xuất, yếu tố th ường gặp nh ất khó kiểm sốt stress nhiệt (dao động nhi ệt đ ộ môi tr ường v ượt sức chịu đựng heo) Cảm lạnh thường xảy heo gặp nhiệt độ môi trường thấp khơng thể trì thân nhiệt mức 38,5-39°C Điều đặc biệt nghiêm trọng heo từ đến ngày tuổi; nhiên xảy heo lứa tuổi, chí làm chết heo trưởng thành Heo đặc biệt nhạy cảm với nhiệt độ ngày Nhi ệt độ lý tưởng cho heo 32-38 độ C Tạo mơi trường ti ểu khí hậu đèn đ ể giữ ấm heo sinh thích phân nửa ánh sáng đó, th ỉnh thoảng nên tránh dùng đèn để sưởi ấm Để an toàn ta nên dùng đèn màu đ ỏ T nằm heo cho ta biết chúng có hài lịng v ới ều ki ện s ống hi ện t ại hay không Ở vùng nhiệt đới, nhiệt độ phù hợp heo s sinh 3236°C thay đổi từ 25-30°C vào thời điểm cai sữa (3-4 tu ần tu ổi) Hay nói xác nhiệt độ 34,6°C phải trì ti ếng đối v ới heo sau sinh, điều trở thành tiêu chuẩn cơng nghi ệp, khơng ch ỉ c ải thi ện suất mà cần thiết cho chức hệ miễn dịch s ự s ống heo Bảng 1.1: Nhiệt độ tiêu chuẩn heo Úm heo giai đoạn heo nhỏ giúp heo có sức khỏe tốt giai đoạn theo mẹ nâng cao sức đề kháng tăng khả hấp thu sữa mẹ hạn chế bệnh giai đọan (Đặc biệt tượng tiêu chảy heo con), giảm việc thất thoát đầu con, quan trọng heo có bước khởi đầu tốt để phát triển giai đoạn sau Nghiên cứu tình trạng sử dụng lồng úm thực tế trang trại chăn nuôi: Từ nguồn thông tin mạng internet kết hợp với thăm thực tế số trang trại khu vực Hưng Yên Chúng em nhận thấy việc kiểm soát nhiệt độ lồng úm heo hồn thồn thủ cơng việc tắt mở bóng đèn, điều chỉnh độ cao bóng đèn để kiểm sốt nhiệt độ lồng úm Điều đồng nghĩa với tiêu tốn nhiều nhân lực lãng phí lượng điện cho việc sưởi ấm heo Hình 1.1: Lồng úm heo sơ sinh (Tắt mở tay điều chỉnh độ cao đèn để kiểm sốt nhiệt độ) Hình 1.2: Chuồng heo sơ sinh ngày tuổi (Lãng phí điện khơng có heo nằm khu v ực s ưởi) Từ nghiên cứu chúng em lựa chọn đề tài “Thiết kế chế tạo lập trình điều khiển, hồn thiện sản phẩm sưởi ấm cho lồng úm heo con” Nhằm phục vụ việc kiểm soát nhiệt độ phù hợp cho heo phát triển tiết kiệm chi phí vận hành trang trại 10 TÀI LIỆU THAM KHẢO [1] Bạch Hưng Trường Giáo trình kỹ thuật vi điều khiển ĐH sư phạm kỹ thuật Hưng Yên,2003 [2] Lâm Tăng Đức, Lê Tiến Dũng Giáo trình kỹ thuật vi điều khiển ĐH Đà Nẵng, 2006 [3] Ngô Diên Tập Vi điều khiển với lập trình C NXB Khoa học kỹ thuật, 2006 [4] TS Vũ Hồng Sơn Giáo trình Lập trình ứng dụng C [5] Nguyễn Thị Phương Hà Giáo trình lý thuyết điều khiển tự động Webside tham khảo: [6] [7] [8] [9] http://www.datasheetcatalog.com http://www.dientuvietnam.com http://www.diendandientu.com.vn http://www.arduino.vn 66 PHỤ LỤC Code điều khiển: //Khai báo thư viện #include #include #include //định nghĩa chân GPIO #define TRIAC_PIN #define DHT_SENSOR_TYPE DHT_TYPE_22 #define SET #define UP #define DOWN #define RADAR int dataPin = 10; int latchPin = 11; int clockPin = 12; static const int DHT_SENSOR_PIN = A0; DHT_nonblocking dht_sensor(DHT_SENSOR_PIN, DHT_SENSOR_TYPE); //khai báo biến int flag, flag1, flag2, flag3; int chuc, donvi; int time2, time1, time3, time4; int addr1 = 20; 67 float Kp = 3; float Kd = 0.001; float Ki = 0.01; int nhietdodat = 0; int set1 = 0; float nhietdo; float t; float temperature; float humidity; float E, E1, E2, alpha, gamma, beta; float Output = 0; float LastOutput = 0; float thoigian = 0; float sine; int flag_ZDC; int flag_PID; float counter; float counter_PID; float read_value; float T = 2; //thoi gian lay mau 2s //mã led unsigned char ma_led[16] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xbf, 0xff, 0xc8, 0x8e, 0x92, 0x86}; //chương trình ngắt timer void TI1_OnInterrupt() { if (++counter_PID > 36363) { // 36360 flag_PID = 1; } 68 if (flag_ZDC == 1) { if (++counter > sine) { digitalWrite(TRIAC_PIN, HIGH); flag_ZDC = 0; } else { digitalWrite(TRIAC_PIN, LOW); } } else counter = 0; } //Chương trình ngắt ngồi mạch phát điểm void TriacControl() { flag_ZDC = 1; } //Chương trình thiết lập thông số hệ thống void setup() { Serial.begin(9600); pinMode(TRIAC_PIN, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(SET, INPUT); pinMode(UP, INPUT); 69 pinMode(DOWN, INPUT); pinMode(RADAR, INPUT); digitalWrite(TRIAC_PIN, LOW); attachInterrupt(0, TriacControl, RISING); alpha = 0; beta = 0; gamma = 0; E = 0; Output = 0; thoigian = 0; T = 2; flag = 0; float Kp = 3; float Kd = 0.001; float Ki = 0.01; Timer1.initialize(55); //don vi us Timer1.attachInterrupt( TI1_OnInterrupt); nhietdodat = EEPROM.read(addr1); chuc = nhietdodat / 10; donvi = nhietdodat % 10; } //Chương trình đọc giá trị nhiệt độ, độ ẩm static bool measure_environment(float * temperature, float * humidity) { static unsigned long measurement_timestamp = millis(); if (millis() - measurement_timestamp > 400ul) { if (dht_sensor.measure(temperature, humidity) == true) { measurement_timestamp = millis(); return (true); } } 70 return (false); } //Chương trình void loop() { if (measure_environment(&temperature, &humidity) == true) { nhietdo = temperature; read_value = temperature * 10000 + humidity * 10; } nhietdodat = chuc * 10 + donvi; hien_thi(read_value); if (flag_PID) { PID(); } if (set1 == && digitalRead(RADAR) == 0) { sine = 165; } time1 = millis(); if (digitalRead(SET) == && flag == 0) { if (time1 - time2 > 500) { time2 = time1; flag = 1; } } if (flag == 1) set_up(); } void PID() { 71 alpha = 0; beta = 0; gamma = 0; E = 0; Output = 0; thoigian = 0; T = 2; flag = 0; Kp = 3; Kd = 0.001; Ki = 0.01; sine = 0; E = nhietdodat - nhietdo; alpha = * T * Kp + Ki * T * T + * Kd; beta = T * T * Ki - * Kd - * T * Kp; gamma = * Kd; Output = (alpha * E + beta * E1 + gamma * E2 + * T * LastOutput) / (2 * T); LastOutput = Output; E2 = E1; E1 = E; if (Output > 9) { Output = 9; } else if (Output = 300) { time4 = time3; flag++; } } if (flag > 4)flag = 0; 73 if (time1 - time2 >= 300) { time2 = time1; flag1 = !flag1; } if (digitalRead(UP) == 0) { if (time3 - time4 >= 300) { time4 = time3; if (flag == 2) { donvi++; if (donvi > 9) donvi = 0; } if (flag == 3) { chuc++; if (chuc > 9) chuc = 0; } } } if (digitalRead(DOWN) == 0) { if (time3 - time4 >= 300) { time4 = time3; if (flag == 2) { donvi ; if (donvi < 0) donvi = 9; } if (flag == 3) { chuc ; 74 if (chuc < 0) chuc = 9; } } } if (flag == 2) { if (flag1 == 0) { showAdigit(5, 10, 0); showAdigit(4, donvi, 0); showAdigit(3, 10, 0); showAdigit(2, 10, 0); showAdigit(1, chuc, 0); showAdigit(0, 10, 0); } if (flag1 == 1) { showAdigit(5, 10, 0); showAdigit(4, 11, 0); showAdigit(3, 10, 0); showAdigit(2, 10, 0); showAdigit(1, chuc, 0); showAdigit(0, 10, 0);lku } } if (flag == 3) { if (flag1 == 0) { showAdigit(5, 10, 0); showAdigit(4, donvi, 0); 75 showAdigit(3, 10, 0); showAdigit(2, 10, 0); showAdigit(1, chuc, 0); showAdigit(0, 10, 0); } if (flag1 == 1) { showAdigit(5, 10, 0); showAdigit(4, donvi, 0); showAdigit(3, 10, 0); showAdigit(2, 10, 0); showAdigit(1, 11, 0); showAdigit(0, 10, 0); } } if (flag == 4) { nhietdodat = chuc * 10 + donvi; EEPROM.update(addr1, nhietdodat); if (digitalRead(UP) == 0) { set1 = 1; } if (digitalRead(DOWN) == 0) { set1 = 0; } if (set1 == 1) { showAdigit(5, 10, 0); showAdigit(4, 0, 0); 76 showAdigit(3, 12, 0); showAdigit(2, 10, 0); showAdigit(1, 15, 0); showAdigit(0, 14, 0); } if (set1 == 0) { showAdigit(5, 0, 0); showAdigit(4, 13, 0); showAdigit(3, 13, 0); showAdigit(2, 10, 0); showAdigit(1, 15, 0); showAdigit(0, 14, 0); } } } } //Chương trình quét led void showAdigit(int number, int value, int dot) { int i, temp; temp = ma_led[value]; if (dot) temp &= 0x7f; switch (number ) { case 0: { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, temp); shiftOut(dataPin, clockPin, MSBFIRST, 0x01); 77 digitalWrite(latchPin, HIGH); } break; case 1: { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, temp); shiftOut(dataPin, clockPin, MSBFIRST, 0x02); digitalWrite(latchPin, HIGH); } break; case 2: { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, temp ); shiftOut(dataPin, clockPin, MSBFIRST, 0x04); digitalWrite(latchPin, HIGH); } break; case 3: { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, temp); shiftOut(dataPin, clockPin, MSBFIRST, 0x08); digitalWrite(latchPin, HIGH); } break; case 4: { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, temp ); shiftOut(dataPin, clockPin, MSBFIRST, 0x10); digitalWrite(latchPin, HIGH); } break; 78 case 5: { digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, MSBFIRST, temp); shiftOut(dataPin, clockPin, MSBFIRST, 0x20); digitalWrite(latchPin, HIGH); } break; } } //Chương trình hiển thị void hien_thi(int32_t so) { float a, b, c, d, e, f; a = so / 100000; b = (so % 100000) / 10000; c = (so % 10000) / 1000; d = ( so % 1000) / 100; e = (so % 100) / 10; f = so % 10; showAdigit(0, a, 0); showAdigit(1, b, ); showAdigit(2, c, 0); showAdigit(5, d, 0); showAdigit(4, e, 1); showAdigit(3, f, 0); } 79 80 ... hoạt động Độ xác Độ phân giải DHT22 3.3-6V DC Chuẩn giao tiếp 1-Wire Tụ điện polyme Độ ẩm: 0-100%RH; Nhiệt độ: -40~80 °C Độ ẩm +-2% RH (Max +-5%RH); Nhiệt độ