Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 188 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
188
Dung lượng
34,32 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP Nghiên cứu, chế tạo mơ hình đèn giao thơng sử dụng lượng mặt trời NGÀNH: KỸ THUẬT ĐIỆN - ĐIỆN TỬ GIẢNG VIÊN HƯỚNG DẪN: TS ĐOÀN THỊ BẰNG Sinh viên thực hiện: MSSV: Lớp: Võ Hồ Minh Khánh 1711020314 17DDCA2 Lương Hào Phi 1711020341 17DDCA2 Huỳnh Ngọc Thuận 1711020399 17DDCA2 Tp Hồ Chí Minh, tháng 09 năm 2021 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP Nghiên cứu, chế tạo mơ hình đèn giao thơng sử dụng lượng mặt trời NGÀNH: KỸ THUẬT ĐIỆN - ĐIỆN TỬ GIẢNG VIÊN HƯỚNG DẪN: TS ĐOÀN THỊ BẰNG Sinh viên thực hiện: MSSV: Lớp: Võ Hồ Minh Khánh 1711020314 17DDCA2 Lương Hào Phi 1711020341 17DDCA2 Huỳnh Ngọc Thuận 1711020399 17DDCA2 Tp Hồ Chí Minh, tháng 09 năm 2021 LỜI CAM ĐOAN Họ tên sinh viên 1: Võ Hồ Minh Khánh MSSV: 1711020314 Lớp: 17DDCA2 Họ tên sinh viên 2: Lương Hào Phi MSSV: 1711020341 Lớp: 17DDCA2 Họ tên sinh viên 3: Huỳnh Ngọc Thuận MSSV: 1711020399 Lớp: 17DDCA2 Chuyên ngành: Kĩ thuật điện – điện tử Tên đề tài: Nghiên cứu, chế tạo mơ hình đèn giao thông sử dụng lượng mặt trời Giảng viên hướng dẫn: TS Đồn Thị Bằng Nhóm chúng em xin cam đoan đồ án tốt nghiệp thành nghiên cứu hồn tồn nhóm Các kết nghiên cứu kết luận báo cáo trung thực, không chép từ nguồn hình thức Trong trình thực nhóm chúng em có tham khảo tài liệu liên quan đến đề tài nhằm khẳng định tin cậy cấp thiết đề tài Việc tham khảo nguồn tài liệu thực trích dẫn ghi nguồn tài liệu tham khảo Người thực Võ Hồ Minh Khánh Lương Hào Phi Huỳnh Ngọc Thuận i LỜI CẢM ƠN Đề hoàn thành tốt nghiệp trước tiên nhóm chúng em xin gữi đến q thầy, giáo trường ĐẠI HỌC CƠNG NGHỆ TPHCM lời cảm ơn chân thành sâu sắc Đặt biệt nhóm chúng em xin gửi lời cảm ơn Ts Đồn Thị Bằng người tận tình giúp đỡ, hướng dẫn bảo cho chúng em suốt trình thực đồ án tốt nghiệp “: Nghiên cứu, chế tạo mơ hình đèn giao thơng sử dụng lượng mặt trời” vừa qua Trong trình làm đồ án tốt nghiệp thi cơng mơ hình với kiến thức thời gian cịn hạn chế nên nhóm chúng em khơng tránh khỏi sai sót Nhóm chúng em mong nhận bảo, đóng góp ý kiến thầy để chúng em bổ sung, nâng cao ý thức mình, để phát triển đề tài nghiên cứu tốt công tác thực tế sau Em xin chân thành cảm ơn ! TPHCM, ngày…tháng…năm ii MỤC LỤC LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH MỤC CÁC TỪ VIẾT TẮT vii DANH SÁCH CÁC BẢNG viii DANH SÁCH CÁC HÌNH x DANH SÁCH SƠ ĐỒ xiv LỜI MỞ ĐẦU Chương GIỚI THIỆU 1.1 Mô tả vấn đề: 1.1.1 Thực trạng nút giao lộ ngã tư Gò đen 1.2 Khảo sát tình hình ứng dụng sử dụng NLMT 1.2.1 Khái niệm lượng mặt trời 1.2.2 Thực trạng 1.2.3 Tiềm 1.2.4 Bức xạ trung bình Việt Nam 1.2.5 Những ứng dụng mặt lượng mặt trời 1.3 Khảo sát nhu cầu nguyên nhân giải vấn đề 10 1.3.1 Khảo sát nhu cầu 10 1.3.2 Nguyên nhân vấn đề: 10 Chương TỔNG QUAN GIẢI PHÁP 13 2.1 Tổng quan giải pháp có 13 2.1.1 Khảo sát nước: 13 iii 2.1.2 Khảo sát nước 17 2.1.3 Kết luận .18 2.2 Giới thiệu tổng quan giải pháp nhóm 19 Chương PHƯƠNG PHÁP GIẢI QUYẾT CHO ĐỀ TÀI 21 3.1 Các thành phần cấu có hệ thống đèn giao thơng sử dụng pin lượng mặt trời 21 3.2 Phương pháp tính tốn thiết kế khí đèn giao thơng: 21 3.2.1 Phần móng: 21 3.2.2 Phần cột, tay vươn đèn: 22 3.2.3 Sơ đồ mặt ngã tư giao lộ xã Phước Lợi: 23 3.3 Phương pháp tính tốn thiết kế phần điện cho hệ thống NLMT 25 3.4 Phương pháp thiết kế phần điện 27 3.4.1 Phần điều khiển mạch điện 27 3.5 Các thiết bị có đèn giao thông: 29 3.5.1 Sản phẩm đèn tín hiệu giao thơng lựa chọn theo catalog CTCP Anco cung cấp 29 3.5.2 Vi điều khiển Arduino ProMini 32 3.5.3 Vi điều khiển Arduino Mega 33 3.5.4 LCD (Liquid Crystal Display) 16x2 34 3.5.5 Module RTC DS3231 35 3.5.6 Mạch hạ áp LM2596 từ 12 VDC xuống 5VDC 35 3.5.7 Mạch tăng áp DC XL6009 36 3.5.8 Bộ truyền thông không dây NRF24L01 .37 3.6 Thiết bị lựa chọn tổng số cho hệ thống tín hiệu giao thơng ngã tư 38 Chương QUY TRÌNH THIẾT KẾ 42 4.1 Giới thiệu tổng quan quy trình thiết kế giải pháp: 42 4.2 Tính tốn thiết kế phần điện 42 iv lcd.setCursor(6,1); lcd.write(byte(2)); //Hiển thị mũi tên giá trị cài đặt if (OK == HIGH && (digitalRead(PYA) == && digitalRead(PYB) == 0)){ //Sau lần nhấn OK, đảo trạng thái đèn manualstate = !manualstate; lastmanual = millis();} OK = 0;//Reset OK } //Thoát chức MANUAL if(sub==2){ confirm = 1; //Dùng để tránh tượng thoát menu phụ chưa nhấn OK lcd.setCursor(6,1); lcd.print(" "); //Xóa mũi tên trước lcd.setCursor(14,1); lcd.write(byte(2)); //Hiển thị mũi tên giá trị cài đặt if(OK == HIGH){//Khi nút OK nhấn, thoát MANUAL lcd.clear(); selectmenu = 0;//Thoát digitalWrite(26, LOW); digitalWrite(24, LOW); digitalWrite(22, LOW); mode = lastmode; confirm = 0;} OK = 0; }} }//Kết thúc case break; //CHỨC NĂNG THỨ TƯ: CHỌN THỜI GIAN CHỚP VÀNG (YELLOW TIME) case 4:{ //Lúc chưa chọn YELLOW TIME Enter(); 154 if(selectmenu == 4){//Setup giao diện cho YELLOW TIME if(selectmenu1 == 0)subMenu(3); if(sub == 1){ if(selectmenu1 == 0){ lcd.setCursor(0,0); lcd.print("Starttime:"); timemenu(hourS, minS);} Enter1(); if(selectmenu1 == 1){ lcd.setCursor(0,0); lcd.print("Set Starttime:"); lcd.setCursor(4,1); lcd.print(":"); lcd.setCursor(15,1); lcd.write(byte(1)); SELECTION1(3); hourSval = Timeset(hourSval,0,14,1); minSval = Timeset(minSval,5,0,2); if(sub1 == 3){ confirm = 1; lcd.setCursor(5,1); lcd.print(" "); lcd.setCursor(14,1); lcd.write(byte(2)); if(OK == HIGH){ lcd.clear(); selectmenu1 = 0;//Thoát confirm = 0; hourS = hourSval; minS = minSval; } OK = 0; }}} if(sub == 2){ if(selectmenu1 == 0){ 155 lcd.setCursor(0,0); lcd.print("Endtime:"); timemenu(hourE, minE);} Enter1(); if(selectmenu1 == 2){ lcd.setCursor(0,0); lcd.print("Set Endtime:"); lcd.setCursor(4,1); lcd.print(":"); lcd.setCursor(15,1); lcd.write(byte(1)); SELECTION1(3); hourEval = Timeset(hourEval,0,14,1); minEval = Timeset(minEval,5,0,2); if(sub1 == 3){ confirm = 1; lcd.setCursor(5,1); lcd.print(" "); lcd.setCursor(14,1); lcd.write(byte(2)); if(OK == HIGH){ lcd.clear(); selectmenu1 = 0;//Thoát confirm = 0; hourE = hourEval; minE = minEval;} OK = 0;} } } if(sub == 3){ confirm = 1; //Dùng để tránh tượng thoát menu phụ chưa nhấn OK lcd.setCursor(0,0); lcd.print("Quit and save?"); lcd.setCursor(0,1); lcd.print("press OK to quit"); if (OK == HIGH){//Khi nút OK nhấn, thoát YELLOW TIME lcd.clear(); 156 selectmenu = 0;//Thoát confirm = 0;} OK = 0; }} } break; //CHỨC NĂNG THỨ NĂM: CHỌN THỜI GIAN CHO GIỜ CAO ĐIỂM (RUSH HOUR TIME) case 5:{ //Lúc chưa chọn RUSH HOUR TIME Enter(); if(selectmenu == 5){//Setup giao diện cho RUSH HOUR TIME if(selectmenu1 == 0)subMenu(3); if(sub == 1){ if(selectmenu1 == 0){//Khi chưa vào phần cài đặt lcd.setCursor(0,0); lcd.print("Starttime:"); timemenu(hourS1, minS1);} Enter1(); if(selectmenu1 == 1){ lcd.setCursor(0,0); lcd.print("Set Starttime:"); lcd.setCursor(4,1); lcd.print(":"); lcd.setCursor(15,1); lcd.write(byte(1)); SELECTION1(3); hourSval1 = Timeset(hourSval1,0,14,1); minSval1 = Timeset(minSval1,5,0,2); if(sub1 == 3){//Khi vị trí confirm = 1; lcd.setCursor(5,1); lcd.print(" "); lcd.setCursor(14,1); lcd.write(byte(2)); 157 if(OK == HIGH){ lcd.clear(); selectmenu1 = 0;//Thoát confirm = 0; hourS1 = hourSval1; minS1 = minSval1;} OK = 0;} }} if(sub == 2){ if(selectmenu1 == 0){//Khi chưa vào phần cài đặt lcd.setCursor(0,0); lcd.print("Endtime:"); timemenu(hourE1, minE1); } Enter1(); if(selectmenu1 == 2){ lcd.setCursor(0,0); lcd.print("Set Endtime:"); lcd.setCursor(4,1); lcd.print(":"); lcd.setCursor(15,1); lcd.write(byte(1)); SELECTION1(3); hourEval1 = Timeset(hourEval1,0,14,1); minEval1 = Timeset(minEval1,5,0,2); if(sub1 == 3){//Khi vị trí confirm = 1; lcd.setCursor(5,1); lcd.print(" "); lcd.setCursor(14,1); lcd.write(byte(2)); if(OK == HIGH){ lcd.clear(); selectmenu1 = 0;//Thoát confirm = 0; 158 hourE1 = hourEval1; minE1 = minEval1;} OK = 0;} } } if(sub == 3){ confirm = 1; //Dùng để tránh tượng thoát menu phụ chưa nhấn OK lcd.setCursor(0,0); lcd.print("Quit and save?"); lcd.setCursor(0,1); lcd.print("press OK to quit"); if (OK == HIGH){//Khi nút OK nhấn, thoát RUSH HOUR TIME lcd.clear(); selectmenu = 0;//Thoát confirm = 0;} OK = 0;}} }//Kết thúc case break; //CHỨC NĂNG THỨ SÁU: CÀI ĐẶT THỜI GIAN SÁNG CỦA ĐÈN KHI GIỜ CAO ĐIỂM (RUSH HOUR SET) case 6:{ //Lúc chưa chọn RUSH HOUR SET Enter(); //Chương trình RUSH HOUR SET sau nhấn chọn if(selectmenu == 6){//Setup giao diện cho RUSH HOUR SET SELECTION(5); lcd.setCursor(0,0); lcd.print("RUSH:"); lcd.setCursor(5,0);lcd.print("GA"); lcd.setCursor(8,0);lcd.print("YA"); lcd.setCursor(11,0);lcd.print("GB"); lcd.setCursor(14,0);lcd.print("YB"); 159 lcd.setCursor(1,1);lcd.write(byte(1)); val5 = AUTOset(val5, 4, 0, 1);//Cài đặt thời gian xanh A val6 = AUTOset(val6, 7, 4, 2);//Cài đặt thời gian vàng A val7 = AUTOset(val7, 10, 7, 3);//Cài đặt thời gian xanh B val8 = AUTOset(val8, 13, 10, 4);//Cài đặt thời gian vàng B //Thoát chức AUTO if(sub==5){ confirm = 1; //Dùng để tránh tượng thoát menu phụ chưa nhấn OK lcd.setCursor(0,1); lcd.write(byte(2)); //Hiển thị mũi tên giá trị cài đặt lcd.setCursor(13,1); lcd.print(" ");//Xóa mũi tên trước if (OK == HIGH){ //Khi nút OK nhấn, thoát AUTO lcd.clear(); GArush = val5;//Cài đặt thời gian xanh A YArush = val6;//Cài đặt thời gian vàng A GBrush = val7;//Cài đặt thời gian xanh B YBrush = val8;//Cài đặt thời gian vàng B selectmenu = 0;//Thoát confirm = 0;} OK = 0;}}}//Kết thúc case break; }//switch kết thúc} void Enter(){//Vào chức cần chọn if(selectmenu == 0){ if(select == HIGH){//Nếu nút select nhấn lcd.clear(); selectmenu = pagecounter;//Vào chức sub = 1;} select = 0;//Reset biến select}} 160 void Enter1(){//Vào chức cần chọn if(selectmenu1 == 0){ if(select == HIGH){//Nếu nút select nhấn lcd.clear(); selectmenu1 = sub;//Vào chức sub1 = 1;} select = 0;//Reset biến select }} void SELECTION(int maxsub){//Dùng để chọn lựa thông số mục sau lần nhấn select if (select == HIGH){//Nút nhấn select nhấn, vào chức chọn giá trị cần cài đặt if(sub < maxsub)sub++;//Nếu giá trị chưa phải giá trị cuối, sang giá trị else sub=1;//Quay giá trị đầu giá trị giá trị cuối lcd.clear();} select = 0;//Reset biến select;} void SELECTION1(int maxsub){//Dùng để chọn lựa thông số mục sau lần nhấn select if (select == HIGH){//Nút nhấn select nhấn, vào chức chọn giá trị cần cài đặt if(sub1 < maxsub)sub1++;//Nếu giá trị chưa phải giá trị cuối, sang giá trị else sub1=1;//Quay giá trị đầu giá trị giá trị cuối lcd.clear();} select = 0;//Reset biến select;} void Menu(){//Menu (phần hiển thị người vận hành nhìn thấy) if(selectmenu == 0){ //Nếu chưa chọn chức (sub chức năng) 161 if (DOWN == HIGH){ //Nút DOWN nhấn lcd.clear(); pagecounter++; //Kéo menu xuống} DOWN = 0; if (UP == HIGH){//Nút UP nhấn lcd.clear(); pagecounter ; //Kéo menu lên } UP = 0; pagecounter = constrain(pagecounter, 0, 6); //Hiển thị menu if(pagecounter != 0){ for(a = 1; a < 7; a++){ int in = a - pagecounter; if(in == 0){ lcd.setCursor(1,0); lcd.print(menu[a]); lcd.setCursor(1,1); lcd.print(menu[a+1]); lcd.setCursor(3,0); lcd.print(menu1[a-1]); if(a < 6){ lcd.setCursor(3,1); lcd.print(menu1[a]);}}} lcd.setCursor(0,0); lcd.write(byte(2));} else{ lcd.setCursor(5,0); 162 lcd.print(t.hour, DEC); lcd.setCursor(7,0); lcd.print(":"); lcd.setCursor(8,0); lcd.print(t.min, DEC); select = 0; OK = 0; } }} void subMenu(int maxsub){//Menu mục if (DOWN == HIGH){ //Nút DOWN nhấn sub++; //Kéo menu xuống lcd.clear(); if(sub == (maxsub+1))sub = 1;} DOWN = 0; if (UP == HIGH){//Nút UP nhấn sub ; //Kéo menu lên lcd.clear(); if(sub == 0)sub = maxsub;} UP = 0;} void timemenu(int HOUR, int MIN){//Hiển thị thời gian cài đặt confirm = 0; //Hiển thị số cài đặt lcd.setCursor(1,1); if(HOUR < 10){ lcd.print("0"); lcd.print(HOUR);} else lcd.print(HOUR); lcd.setCursor(4,1); 163 lcd.print(":"); //Hiển thị số phút cài đặt lcd.setCursor(6,1); if(MIN < 10){ lcd.print("0"); lcd.print(MIN);} else lcd.print(MIN);} unsigned long longDOWN; unsigned long longUP; unsigned long longdown; unsigned long longup; //Cài đặt thời gian cho đèn giao thông chế độ Auto int AUTOset(int val, int setcursor, int precursor, int subpage){ bool lpu; bool lpd; if(sub==subpage){ confirm = 0; lcd.setCursor(setcursor,1); lcd.write(byte(2));//In dấu mũi tên cho giá trị cài đặt lcd.setCursor(precursor,1); lcd.print(" "); //Xóa dấu mũi tên giá trị cài đặt trước if (UP == HIGH){ //Tăng giá trị val++; longUP = millis(); longup = millis(); lpu = 1;} UP = 0; 164 if(DOWN == HIGH){ //Giảm giá trị val ; longDOWN = millis(); longdown = millis(); lpd = 1;} DOWN = 0; if(digitalRead(pinUP) == HIGH)lpu = 0; if(digitalRead(pinDOWN) == HIGH)lpd = 0; //Khi nhấn giữ nút UP if((lpu == 1) && (millis() - longUP >= 600)){ if(millis() - longup >= 100){ val++; longup = millis();}} //Khi nhấn giữ nút DOWN if((lpd == 1) && (millis() - longDOWN >= 600)){ if(millis() - longdown >= 100){ val ; longdown = millis(); } } val = constrain(val, 1, 99);//Giá trị cài đặt bị giới hạn từ đến 99 //////////////////////////////////// lcd.setCursor(setcursor+1,1); lcd.print(val);//In giá trị lên lcd if(val < 10){ lcd.setCursor(setcursor+2,1); lcd.print(" ");//Xóa chữ số 0} return val;} 165 int Timeset(int val1, int setcursor1, int precursor1, int subpage1){ bool lpu; bool lpd; if(sub1==subpage1){ confirm = 0; lcd.setCursor(setcursor1,1); lcd.write(byte(2));//In dấu mũi tên cho giá trị cài đặt lcd.setCursor(precursor1,1); lcd.print(" "); //Xóa dấu mũi tên giá trị cài đặt trước if (UP == HIGH){ //Tăng giá trị val1++; longUP = millis();; longup = millis(); lpu = 1;} UP = 0; if(DOWN == HIGH){ //Giảm giá trị val1 ; longDOWN = millis(); longdown = millis(); lpd = 1;} DOWN = 0; if(digitalRead(pinUP) == HIGH)lpu = 0; if(digitalRead(pinDOWN) == HIGH)lpd = 0; //Khi nhấn giữ nút UP if((lpu == 1) && (millis() - longUP >= 600)){ if(millis() - longup >= 100){ val1++; 166 longup = millis(); }} //Khi nhấn giữ nút DOWN if((lpd == 1) && (millis() - longDOWN >= 600)){ if(millis() - longdown >= 100){ val1 ; longdown = millis();}} //Giá trị cài đặt bị giới hạn từ đến 23 if(subpage1 == 1){ if(val1 == -1)val1 = 23; if(val1 == 24)val1 = 0; } //Giá trị cài đặt bị giới hạn từ đến 59 if(subpage1 == 2){ if(val1 == -1)val1 = 59; if(val1 == 60)val1 = } } lcd.setCursor(setcursor1+1,1); if(val1 < 10){ lcd.print("0");//Xóa chữ số lcd.print(val1);} else lcd.print(val1);//In giá trị lên lcd return val;} void Manual(){//Xử lí chế độ điều khiển tay digitalWrite(COMA1, LOW); digitalWrite(COMA2, LOW); if(manualstate == 1){//Đỏ A sáng xanh B sáng if(millis() - lastmanual >= 2000){ digitalWrite(PRA, HIGH); digitalWrite(PYA, LOW); 167 digitalWrite(PGA, LOW); digitalWrite(PGB, HIGH); digitalWrite(PYB, LOW); digitalWrite(PRB, LOW); lcd.setCursor(7,1); lcd.print("Red"); lcd.setCursor(11,1); lcd.print("Grn"); } else{ digitalWrite(PRA, LOW); digitalWrite(PYA, HIGH); digitalWrite(PGA, LOW); }} else {//Đỏ B sáng xanh A sáng if(millis() - lastmanual >= 2000){ digitalWrite(PGA, HIGH); digitalWrite(PYA, LOW); digitalWrite(PRA, LOW); digitalWrite(PRB, HIGH); digitalWrite(PYB, LOW); digitalWrite(PGB, LOW); lcd.setCursor(7,1); lcd.print("Grn"); lcd.setCursor(11,1); lcd.print("Red"); } else{ digitalWrite(PRB, LOW); digitalWrite(PYB, HIGH);digitalWrite(PGB, LOW);}} 168