Đồ án môn học vi xử lý trong đo lường và điều khiển đề tài điều khiển cửa, đèn và quạt sử dụng vi điều khiển

37 10 0
Đồ án môn học vi xử lý trong đo lường và điều khiển đề tài  điều khiển cửa, đèn và quạt sử dụng vi điều khiển

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

    BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA ĐIỀU KHIỂN VÀ TỰ ĐỘNG HĨA ĐỒ ÁN MƠN HỌC VI XỬ LÝ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN  Đề tài : ĐIỀU KHIỂN CỬA, ĐÈN VÀ QUẠT SỬ DỤNG VI ĐIỀU KHIỂN Giảng viên hướng dẫn : TS Đoàn Thị Hương Giang Sinh viên thực hiện: Tạ Tiến Đạt – MSV: 19810000125 Đỗ Như Công – MSV: 19810000304 Trịnh Mai Doanh – MSV: 19810000006 Quách Đăng Lộc – MSV: 19810000229 Lớp : D14THDK&TDH    Hà Nội, tháng 12 năm 2022   MỤC LỤC LỜI MỞ ĐẦU LỜI CẢM ƠN Đánh giá nhận xét GV hướng dẫn CHƯƠNG 1: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ ĐỒ ÁN 1.1 Giới thiệu đề tài 1.2 Mục đích thiết kế 1.3 Phạm vi thiết kế 1.4 Nhiệm vụ CHƯƠNG II: TỔNG QUAN VỀ LINH KIỆN SỬ DỤNG 2.1 Board Arduino Uno R3 2.2 Keypad 4*4 2.3 Màn hình LCD 16*2 2.4 Một số linh kiện khác dùng đề tài 11 CHƯƠNG III: THIẾT KẾ HỆ THỐNG .12 3.1 Sơ đồ khối 12 3.2 Khối nguồn nuôi 12 3.2.1 Nguồn cấp cho mạch điều khiển: 12 3.2.2 Nguồn nuôi động DC .13 3.3 Khối nút điều khiển .13 3.4 Khối hiển thị thông báo trạng thái .13 3.5 Sơ đồ nguyên lý hệ thống 14 3.6 Nguyên lý hoạt động 14 3.7 Mô tả hoạt động hệ thống 14 3.8 Hình ảnh thực tế hệ thống 15 CHƯƠNG IV: LƯU ĐỒ THUẬT TOÁN VÀ LẬP TRÌNH 16 4.1 Lưu đồ thuật toán hệ thống 16 4.2 Chương trình điều khiển 17 TÀI LIỆU THAM KHẢO .27   LỜI MỞ ĐẦU  Như biết kỹ thuật vi điều khiển trở nên quen thuộc ngành kỹ thuật dân dụng Các vi điều khiển có khả xử lý nhiều hoạt động phức tạp mà cần chip vi mạch nhỏ, thay tủ điều khiển lớn phức tạp  bằng mạch điện gọn nhẹ, dễ dàng thao tác sử dụng Vi điều khiển khơng góp phần vào phát triển kỹ thuật điều khiển tự động hóa Để tìm hiểu chi tiết vi điều khiển ứng dụng thực tế, nhóm chúng em chọn đề tài điều khiển cửa, đèn quạt sử dụng vi điều khiển Tuy nhiên, thời gian có hạn kiến thức chun mơn cịn hạn chế nên q trình thực đồ án khơng thể tránh thiếu sót định Vì vậy, chúng em mong giúp đỡ, ý kiến đóng góp thầy tất bạn để đồ án hoàn thiện Chúng em chân thành cảm ơn! Hà Nội, ngày tháng năm 2022   Nhóm Sinh Viên   LỜI CẢM ƠN Lời chúng em xin gửi lời cảm ơn đến TS.Đồn Thị Hương Giang Cơ hướng dẫn giúp đỡ tận tình chúng em nghiên cứu hoàn thành tốt đồ án Những lời nhận xét góp ý hướng dẫn thầy giúp chúng em có định hướng đắn trình thực đồ án, giúp chúng em nhìn ưu khuyết điểm đồ án bước khắc phục để có kết tốt Chúng em xin cảm ơn thầy cô khoa Điều Khiển Tự Động Hóa, mơn Vi Xử Lý Đo Lường Điều Khiển tận tình bảo, truyền đạt cho chúng em kiến thức chuyên ngành, công nghệ cách làm việc nhóm đề hồn thành tốt đồ án mơn học Hà Nội, tháng 12 năm 2022   Đánh giá nhận xét GV hướng dẫn Giảng viên hướng dẫn   CHƯƠNG 1: ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ ĐỒ ÁN 1.1 Giới thiệu đề tài - Ngày nay, với bùng nổ nghành kĩ thuật làm cho đời sống người ngày hồn thiện Các thiết bị tự động hóa vào sản xuất hàng hóa sinh hoạt ngày người Việc thiết kế mơ hình hệ thống nhà thông minh phục vụ đời sống cần thiết - Giờ thay việc đến cơng tắc đèn,… để bật tắt trước đây, với giải pháp nhà thơng minh hồn tồn điều khiển tất bóng đèn nhà với cú chạm nhẹ vào hình 1.2 Mục đích thiết kế - Từ kiến thức ta học lý thuyết, từ nâng cao tính vận dụng vào khâu thiết kế để có sản phẩm tốt chất lượng - Cải tiến công nghệ, tiết kiệm lượng không thời gian đóng ngắt - Thiết kế điều khiển phù hợp với cơng suất với thiết bị phịng - Tạo mơ hình cửa tự động, sử dụng hệ thống nhúng dùng vi điều khiển - Có khả hoạt động tự động, mở cửa nhập mật (Password) 1.3 Phạm vi thiết kế - Mô hệ thống nhà thông minh tảng Arduino - Kết hợp với IOT để điều khiển hệ thống 1.4 Nhiệm vụ - Tìm hiểu vi điều khiển Arduino, thiết cần thiết kết nối với Arduino - Tìm hiểu động điều khiển led chiếu sáng - Mô phần mềm ứng dụng Proteus - Thiết kế Board Mạch Arduino Uno R3 SMD   CHƯƠNG II: TỔNG QUAN VỀ LINH KIỆN SỬ DỤNG 2.1 Board Arduino Uno R3 Hình 1: Cấu tạo board Arduino Uno R3 Thông số kỹ thuật: ● Vi điều khiển ATmega 328 bit ● Điện áp hoạt động 5V DC (chỉ cấp qua cổng USB) ● Tần số hoạt động 16 MHz ● Dòng tiêu thụ ~30mA ● Điện áp vào khuyên dùng - 12 VDC ● Điện áp vào giới hạn - 20 VDC ● Số chân Digital I/O 14 (6 chân Hardware PWM) ● Số chân Analog (10 bit) ● Dòng tối đa chân I/O 30 mA ● Dòng tối đa (5V) 500 mA ● Dòng tối đa (3.3V) 50 mA ● Bộ nhớ flash 32 KB (ATmega 328) với 0.5   KB dùng Bootloader  ● SRAM KB (ATmega 328) ● EEPROM KB (ATmega 328) - - Sử dụng Arduino Uno R3: Chân chân 1: là chân TX, RX chân dùng chân I/O bình thường thực tế dùng để trống cho chức uart Chân PWM: 3, 5, 9, 10, 11: Cho phép xuất xung PWM với độ phân giải  bit Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): dùng giao tiếp SPI Chân 13: kết nối với Led (ký hiệu chữ L Board), người dùng dùng chân để điều khiển Led Không nên dùng chân để điều khiển thiết bị ngoại vi Vì mở nguồn ootloader làm cho chân 13 chớp chớp nên ảnh hưởng đến thiết bị điều khiển Chân A0-> A5: chân đọc ADC (độ phân giải 10 bit) Chân A4 (SDA), A5(SCL): dùng giao tiếp I2C Tất chân kể sử dụng chức I/O (ngõ vào/ra)  bình thường  2.2 Keypad 4*4 Hình 2: Cấu tạo Keypad 4*4   Thơng số kỹ thuật: Module bàn phím ma trận 4x4 loại phím mềm Độ dài cáp: 88mm  Nhiệt độ hoạt động ~ 70oC Đầu nối chân Kích thước bàn phím 77 x 69 mm 2.3 Màn hình LCD 16*2      Hình3:Cấu tạo hình LCD 16*2 - Thơng số kỹ thuật: ● LCD 16×2 có 16 chân chân liệu (D0 – D7) chân điều khiển (RS, RW, EN) ● chân lại dùng để cấp nguồ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 chế độ liệu ● Chúng cịn giúp ta cấu hình chế độ đọc ghi ● LCD 16×2 sử dụng chế độ bit bit tùy theo ứng dụng ta làm - Chức chân Mơ ti Chân Kí hină VSS Chân châng chế độ bit bit tùy theo ứng dụng ta làm.ệu VDD Chân căng cuồn cho LCD, thiết kế mạch ta nối chân với VCC=5V ccăng cu điV ccăng Vee Chân dùng đcho LCD, thiết kế mạch ta nối c   - Lưu đồ thuật tốn đóng mở cửa mật số: - Lưu đồ thuật toán điều khiển thiết bị nút nhấn:   - Lưu đồ thuật toán thay đổi mật số: -   - Lưu đồ thuật toán điều khiển qua internet:   4.2 Chương trình điều khiển #include #include #include #include #include #include // Khai báo thư viện LCD // Khai báo thư viện Keypad   const byte ROWS = 4; // Bốn hàng const byte COLS = 3; // Ba cột char keys[ROWS][COLS] = {   {'1', '2', '3'},   {'4', '5', '6'}, {'7', '8', '9'},   {'*', '0', '#'}};  byte rowPins[ROWS] = {A0, A1, A2, A3};  byte colPins[COLS] = {2, 3, 4}; Servo myServo; LiquidCrystal_I2C lcd(0x27, 16, 2); // Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); char pass[4] = {'1', '1', '1', '1'}; // Cài đặt mật tùy ý char str[4] = {' ', ' ', ' ', ' '}; int i, j, count = 0, warning = 0,nochange = 0; int Status=0,ktra=0; void setup() {   Serial.begin(9600);  pinMode(10, INPUT);  pinMode(9, INPUT);  pinMode(8, INPUT);  pinMode(7, OUTPUT);  pinMode(6, OUTPUT);   digitalWrite(7,LOW);     digitalWrite(6,LOW);   lcd.init();   lcd.begin(16, 2);   lcd.backlight();   lcd.print(" Nhap mat khau");   myServo.attach(5);   myServo.write(100); } void loop() {   nhandata();   password();   checkbutton(); } void password(){   char key = keypad.getKey(); // Ký tự nhập vào gán cho biến Key   if (key) // Nhập mật  {   if (i == 0) {   str[0] = key;   lcd.setCursor(6, 1);   lcd.print(str[0]);   delay(500); // Ký tự hiển thị hình LCD 1s     lcd.setCursor(6, 1);   lcd.print("*"); // Ký tự che dấu *   }   if (i == 1) {   str[1] = key;   lcd.setCursor(7, 1);   lcd.print(str[1]);   delay(500);   lcd.setCursor(7, 1);   lcd.print("*");   }   if (i == 2) {   str[2] = key;   lcd.setCursor(8, 1);   lcd.print(str[2]);   delay(500);   lcd.setCursor(8, 1);   lcd.print("*");   }   if (i == 3) {   str[3] = key;   lcd.setCursor(9, 1);   lcd.print(str[3]);   delay(500);   lcd.setCursor(9, 1);     lcd.print("*");   count = 1;   }   i++;  }   if (count == && nochange==1) {   if (str[0] == pass[0] && str[1] == pass[1] && str[2] == pass[2] &&   str[3] == pass[3] && Status==0) {   lcd.clear();   lcd.setCursor(3,0);   lcd.print("Chinh xac!");   delay(2000);   opendoor();   lcd.clear();   lcd.setCursor(4,0);   lcd.print("Mo cua!");   i = 0;   count = 0;   warning = 0; Status=1; } else {     warning++;   lcd.clear();   lcd.print("Sai mat khau!");   delay(1000); if (warning == 3){   lcd.clear();   lcd.setCursor(4,0);   lcd.print("Hay cho "); lcd.setCursor(2,1);   lcd.print("roi thu lai ");   warning = 0; }   lcd.clear();   lcd.setCursor(3,0);   lcd.print("Thu lai!");   delay(1000);   closedoor();   lcd.clear();   lcd.setCursor(1,0);   lcd.print("Nhap mat khau");   i = 0;   count = 0;   Status=0;   } }     switch (key) {   case '#':   lcd.clear();   lcd.setCursor(3,0);   lcd.print("Dong cua!");   closedoor();   delay(3000);   lcd.clear();   lcd.setCursor(1,0);   lcd.print("Nhap mat khau");   i = 0;   Status=0;   break;   }   switch (key) {   case '*':   nochange=0;   count=0;   i=0;   lcd.clear();   lcd.setCursor(0,0);   lcd.print("Nhap mat khau cu");   break;    }   if(str[0]==pass[0] && str[1]==pass[1] && str[2]==pass[2] && str[3]==pass[3] && count==1 ){   lcd.clear();   lcd.setCursor(0,0);   lcd.print("Nhap matkhau moi");   i=0;   count=0;   ktra=1;   }   else if(ktra==0 && count==1 ) {   lcd.clear();   lcd.setCursor(0,0);   lcd.print("Sai mat khau");   delay(2000);   i=0;   count=0;   nochange=1;   lcd.clear();   lcd.setCursor(1,0);   lcd.print("Nhap mat khau ");   } if(count==1 && nochange==0 && ktra==1){   pass[0]=str[0];     pass[1]=str[1];   pass[2]=str[2];   pass[3]=str[3];   lcd.clear();   lcd.setCursor(2,0);   lcd.print("Doi mat khau");   lcd.setCursor(3,1);   lcd.print("thanh cong");   delay(2000);   lcd.clear();   lcd.setCursor(1,0);   lcd.print("Nhap mat khau");   nochange=1;   ktra=0;   i=0;   count=0;   }  } void closedoor(){   myServo.write(100);   delay(5);   } void opendoor(){   myServo.write(10);   delay(5);     } void checkbutton(){   if(digitalRead(8)==0){   digitalWrite(6,HIGH);  }   if(digitalRead(9)==0){   digitalWrite(7,HIGH);  }   if(digitalRead(10)==0){   digitalWrite(6,LOW);   digitalWrite(7,LOW);   }  }  void nhandata(){   if(Serial.available()){   String Data="";   while(Serial.available()){   Data = Serial.readString();//Đọc tất đệm   Serial.print(Data);   }   if(Data=="DENON"){ //Kiểm tra chuỗi nhận   digitalWrite(6,HIGH);   Serial.print("D1on");   }else if(Data=="DENOFF"){   digitalWrite(6,LOW);     }else if(Data=="QUATON"){   digitalWrite(7,HIGH);   }else if(Data=="QUATOFF"){   digitalWrite(7,LOW);   }else if(Data=="CUAON"){   myServo.write(10);   delay(5);   }else if(Data=="CUAOFF"){   myServo.write(100);   delay(5);   }else if(Data=="ALLON"){   digitalWrite(6,HIGH);   digitalWrite(7,HIGH);   }else if(Data=="ALLOFF"){   digitalWrite(6,LOW);   digitalWrite(7,LOW);   }  }  }   TÀI LIỆU THAM KHẢO [1] Vi điều khiển đo lường điều khiển tự động (Nhà xuất Khoa học Kỹ thuật) - Ngơ Diện Tập [2] Lập trình điều khiển với Arduino [3] Vi điều khiển ứng dụng-Lập trình Arduino từ A-Z [4] Cấu trúc lập trình ghép nối ứng dụng Vi điều khiển (Nhà xuất Lao động – Xã hội) - Nguyễn Mạnh Giang [5] https://arduino.vn/ [6] Arduino cho người bắt đầu, Phan Minh Trí (2019) ... khơng góp phần vào phát triển kỹ thuật điều khiển tự động hóa Để tìm hiểu chi tiết vi điều khiển ứng dụng thực tế, nhóm chúng em chọn đề tài điều khiển cửa, đèn quạt sử dụng vi điều khiển Tuy nhiên,...   }  }  }   TÀI LIỆU THAM KHẢO [1] Vi điều khiển đo lường điều khiển tự động (Nhà xuất Khoa học Kỹ thuật) - Ngô Diện Tập [2] Lập trình điều khiển với Arduino [3] Vi điều khiển ứng dụng- Lập trình... thuật dân dụng Các vi điều khiển có khả xử lý nhiều hoạt động phức tạp mà cần chip vi mạch nhỏ, thay tủ điều khiển lớn phức tạp  bằng mạch điện gọn nhẹ, dễ dàng thao tác sử dụng Vi điều khiển khơng

Ngày đăng: 18/03/2023, 20:52

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan