(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh(Đồ án tốt nghiệp) Ứng dụng Arduino điều khiển đánh lửa và phun xăng lửa trên động cơ 1 xy lanh
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT Ô TÔ ỨNG DỤNG ARDUINO ĐIỀU KHIỂN ĐÁNH LỬA VÀ PHUN XĂNG LỬA TRÊN ĐỘNG CƠ XY LANH GVHD : SVTH : LÊ THANH PHÚC NGUYỄN THANH LẠC LÊ HỒNG TIẾN SKL007916 Tp Hồ Chí Minh, tháng 01/2018 LỜI CÁM ƠN Được hướng dẫn thầy Lê Thanh Phúc, chúng em thực đồ án với đề tài “Ứng dụng Arduino điều khiển đánh lửa phun xăng lửa động xy lanh” Em xin chân thành cảm ơn thầy Lê Thanh Phúc tận tình giúp đỡ, hướng dẫn truyền đạt kinh nghiệm quý báu để chúng em hồn thành đồ án Bên cạnh đó, chúng em xin chân thành cảm ơn Thầy Lê Khánh Tân, Thầy Nguyễn Trung Hiếu Thầy Cô Khoa Cơ Khí Động Lực giúp đỡ chúng em trình thực đồ án Trong trình làm đồ án chúng em khơng tránh khỏi sai sót, chúng em kính mong đóng góp nhiệt tình quý Thầy, Cô bạn sinh viên để đồ án hoàn thiện Xin chân thành cám ơn Nhóm sinh viên thực hiện: Nguyễn Thanh Lạc Lê Hồng Tiến i TĨM TẮT Nhóm nghiên cứu hệ thống đánh lửa phun xăng Arduino động xy lanh Để đạt mục tiêu nhóm tham khảo nhiều tài liệu từ sách, nguồn mạng lập trình Arduino hệ thống đánh lửa phun xăng động Khi nắm rõ hệ thống, nhóm nghiên cứu khảo sát thu thập số liệu mơ hình phun xăng điện tử mơ hình để tạo sở cho lập trình Trong q trình khảo sát mơ hình, nhóm dự kiến lập trình động đánh lửa lần chu kỳ động có số tín hiệu cảm biến khơng ổn định nên nhóm định lập trình đánh lửa phun xăng lần chu kỳ động Sau có số liệu, nhóm tiến hành lập trình điều khiển vận hành động Kết cho thấy việc lập trình điều khiển mở nên điều khiển hoạt động không ổn định so với mơ hình ban đầu ii MỤC LỤC LỜI CÁM ƠN i TÓM TẮT ii MỤC LỤC iii DANH MỤC CHỮ VIẾT TẮT vi DANH MỤC CÁC HÌNH vii DANH MỤC CÁC BẢNG ix CHƯƠNG 1: TỔNG QUAN 1.1 Lý chọn đề tài 1.2 Mục đích đề tài 1.3 Phương pháp nghiên cứu 1.4 Giới hạn đề tài 1.5 Kết dự kiến đạt 1.6 Bố cục dự kiến luận văn CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Giới thiệu hệ thống phun xăng đánh lửa điện tử ô tô 2.1.1 Cấu tạo nhiệm vụ hệ thống phun xăng điện tử 2.1.2 Hệ thống đánh lửa điện tử 2.2 Hệ thống phun xăng điện tử xe máy 2.3 Giới thiệu lập trình Arduino, Vi điều khiển 2.3.1 Arduino 2.3.2 Giới thiệu vi điều khiển AVR ATmega 12 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN ĐÁNH LỬA VÀ PHUN XĂNG…13 3.1 Hệ thống đánh lửa 13 3.1.1 Các cảm biến 14 3.1.2 ECM điều khiển 16 iii 3.1.3 IC đánh lửa 16 3.1.4 Cuộn dây đánh lửa 17 3.1.5 Bugi đánh lửa 19 3.2 Hệ thống điều khiển phun xăng 20 3.2.1 Các cảm biến: 20 3.2.2 Cụm bình chứa bơm nhiên liệu 20 3.2.3 ECM IC điều khiển kim phun 22 3.2.4 Kim phun nhiên liệu 23 3.3 Tính tốn góc đánh lửa sớm 23 3.3.1 Các giai đoạn cháy hịa khí 24 3.3.2 Tính tốn góc đánh lửa sớm 25 3.4 Xác định lượng phun nhiên liệu 30 3.4.1 Đo lượng khơng khí nạp vào động 30 3.4.2 Áp dụng cơng thức (3.5a) lên mơ hình 33 3.4.3 Thực nghiệm khảo sát lượng phun nhiên liệu 35 3.5 Thiết kế phần mềm điều khiển đánh lửa, phun xăng 35 3.5.1 Chương trình ngắt ngồi đếm xung từ cảm biến CKP 36 3.5.2 Xác định xung số sau xung bị khuyết 36 3.5.3 Tính tốc độ động 37 3.5.4 Điều khiển tín hiệu đánh lửa (IGT) 38 3.5.5 Điều khiển kim phun 39 CHƯƠNG 4: THỰC NGHIỆM VÀ ĐÁNH GIÁ MƠ HÌNH ĐỘNG CƠ 40 4.1 Quy trình kết nối thiết bị 40 4.2 Kết thực nghiệm điều khiển mơ hình động Arduino 42 4.2.1 Mơ hình chạy tốc độ 1200 vịng/phút 42 iv 4.2.2 Mô hình chạy tốc độ 3000 vịng/phút 44 4.3 Đánh giá mơ hình 46 CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ 47 5.1 Kết luận 47 5.2 Kiến nghị 47 TÀI LIỆU THAM KHẢO 49 PHỤ LỤC 50 v DANH MỤC CHỮ VIẾT TẮT Ký hiệu Diễn giải EFI Hệ thống phun xăng điện tử (Electronic Fuel Injection) PGM FI Chương trình điều khiển phun xăng Honda (Program Fuel Injection) ECM Hệ thống điều khiển điện tử ( Electronic Control Modulde) A/F Tỉ lệ khơng khí nhiên liệu (Air/Fuel) ESA Đánh lửa sớm điện tử (Electronic Spark Advance) IC Vi mạch tích hợp dùng để điều khiển (Intergrated Circuit) MAP Áp suất đường ống nạp (Manifold Absolute Pressure) IAT Nhiệt độ khí nạp(Intake Air Temperature) TP Vị trí bướm ga (Throttle Position) CKP Vị trí trục khuỷu (Crankshaft Position) EOT Nhiệt độ dầu động ( Engine Oil Temperature) Arduino IDE Phần mềm lập trình cho Arduino AVR, ARM Là dòng vi điều khiển hãng Atmel sản xuất IGT Tín hiệu đánh lửa ADC Bộ chuyển đổi tín hiệu (Analog to Digital Convert) ATDC Vị trí sau điểm chết ( After Top Dead Center) vi DANH MỤC CÁC HÌNH Hình 2.1 Cấu tạo hệ thống phun xăng đánh lửa điện tử Hình 2.2 Tính tốn góc đánh lửa sớm Hình 2.3 Arduino Uno 10 Hình 3.1 Sơ đồ hệ thống điều khiển đánh lửa phun xăng 14 Hình 3.2 Cảm biến vị trí trục khuỷu 15 Hình 3.3 Đồ thị minh họa mối quan hệ điện áp áp suất cảm biến MAP 16 Hình 3.4 Mạch IC điều khiển đánh lửa 17 Hình 3.5 Cuộn dây đánh lửa 18 Hình 3.6 Bugi đánh lửa mơ hình 19 Hình 3.7 Bình chứa bơm nhiên liệu 21 Hình 3.8 Mạch điều khiển bơm xăng 21 Hình 3.9 Mạch IC điều khiển kim phun 22 Hình 3.10 Kim phun xăng mơ hình 23 Hình 3.11 Tín hiệu cảm biến CKP chưa xử lý 25 Hình 3.12 Phóng to tín hiệu cảm biến CKP chưa xử lý 25 Hình 3.13 Mạch lọc ADC chuyển tín hiệu Analog thành tín hiệu Digital 26 Hình 3.14 Tín hiệu cảm biến CKP sau qua mạch lọc 26 Hình 3.15 Tín hiệu cảm biến MAP 27 Hình 3.16 Tín hiệu cảm biến CKP cảm biến MAP 27 Hình 3.17 Đồ thị mối quan hệ cảm biến CKP tín hiệu IGT tốc độ 1200, 2100, 2400, 3600, 6000 vòng/phút 29 Hình 3.18 Thước cặp có độ chia 0.05mm 33 Hình 3.19 Đo đường kính lỗ nạp phía sau bướm ga 33 Hình 3.20 Đo lượng xăng phun 000 lần (mỗi lần ms) 34 vii Hình 3.21 Lưu đồ chương trình ngắt đếm xung CKP 36 Hình 3.22 Lưu đồ xác định xung số sau xung trống 36 Hình 3.23 Lưu đồ tính tốc độ động 37 Hình 3.24 Lưu đồ điều khiển đánh lửa phù hợp theo góc đánh lửa sớm 38 Hình 3.25.Lưu đồ điều khiển kim phun 39 Hình 4.1: Thiết bị đo xung NI myDAQ 41 Hình 4.2 Bộ Arduino điều khiển phun xăng đánh lửa 41 Hình 4.3 Mơ hình động xy lanh 42 Hình 4.4 Tín hiêu đánh lửa ECM 1200 vịng/phút 43 Hình 4.5 Tín hiêu đánh lửa Arduino 1200 vịng/phút 43 Hình 4.6 Tín hiệu phun xăng đo chân chân điều khiển phun xăng ECM 1200 vòng/phút 43 Hình 4.7 Tín hiệu phun xăng đo chân chân điều khiển phun xăng Arduino 1200 vòng/phút 44 Hình 4.8 Tín hiêu đánh lửa ECM 3000 vòng/phút 44 Hình 4.9 Tín hiêu đánh lửa Arduino 3000 vòng/phút 44 Hình 4.10 Tín hiệu phun xăng đo chân chân điều khiển phun xăng ECM 3000 vòng/phút 45 Hinh 4.11 Tín hiệu phun xăng Arduino 3000 vòng/phút 45 viii DANH MỤC CÁC BẢNG Bảng 3.1 Bản đồ góc đánh lửa sớm xung ngậm điện từ 1200 đến 3600 vòng/phút 30 Bảng 3.2 Bản đồ góc đánh lửa sớm xung ngậm điện từ 3900 đến 6000 vòng/phút 30 Bảng 3.3 Thành phần loại khí khơng khí tính theo khối lượng thể tích 30 Bảng 3.4 Thời gian nhấc kim phun theo tốc độ động thay đổi (ms) 35 ix Hình 4.3 Mơ hình động xy lanh 4.2 Kết thực nghiệm điều khiển mơ hình động Arduino Kết thực nghiệm so sánh với đồ thị khảo sát mô hình điều khiển ECM Cách đo tín hiệu đánh lửa: Tín hiệu đánh lửa ECM: Chân đo tín hiệu đánh lửa ECM nối với cực âm cuộn dây đánh lửa Tín hiệu đánh lửa Arduino: Chân đo tín hiệu đánh lửa Arduino nối với chân số mạch Arduino Cách đo tín hiệu phun xăng: Đo tín hiệu phun xăng ECM: Chân đo tín hiệu phun xăng nối cực âm kim phun Đo tín hiệu phun xăng Arduino: Chân đo tín hiệu phun xăng nối với chân số 42 4.2.1 Mơ hình chạy tốc độ 1200 vịng/phút Tín hiệu đánh lửa: Hình 4.4 Tín hiêu đánh lửa ECM 1200 vịng/phút Tín hiệu đo qua mạch ADC cho thấy thời điểm ngậm điện thời điểm đánh lửa Hình 4.5 Tín hiêu đánh lửa Arduino 1200 vịng/phút Mặc dù tín hiệu cảm biến CKP Arduino chưa qua mạch lọc ta thấy thời gian ngậm điện góc đánh lửa sớm tương đối gần giống nhau: hai ngậm điện xung thứ đánh lửa xung thứ cảm biến CKP Tín hiệu phun xăng Hình 4.6 Tín hiệu phun xăng đo chân chân điều khiển phun xăng ECM 1200 vòng/phút Cầm chừng ECM 1200 vịng/phút 4.3ms ổn định, khơng bị phun nhiều Trong khoảng 0,5 giây tín hiệu kim phun phun lần 43 Hình 4.7 Tín hiệu phun xăng đo chân chân điều khiển phun xăng Arduino 1200 vịng/phút Độ rộng xung phun xăng khơng chạy Arduino tốc độ 1200 vòng/phút Trong khoảng 0,25 giây tín hiệu kim phun phun 18 lần Xung nhỏ có độ rộng 1,98 ms xung rộng có độ rộng 11.1 ms Từ kết cho thấy mơ hình điều khiển Arduino chạy tốc 1200 vịng/phút khơng ổn định tần số phun nhiên liệu bị dầy đặc so với tín hiệu điều khiển ECM tín hiệu điều khiển Arduino phun vịng lần xen lẫn tín hiệu nhiễu 4.2.2 Mơ hình chạy tốc độ 3000 vịng/phút Tín hiệu đánh lửa Hình 4.8 Tín hiêu đánh lửa ECM 3000 vịng/phút Hình 4.9 Tín hiêu đánh lửa Arduino 3000 vòng/phút Tuy thời điểm ngậm điện khác thời điểm đánh lửa tương đối gần giống với ECM, ECM ngậm điện sau xung thứ Arduino ngậm điện xung thứ 44 hai đánh lửa xung thứ ECM có thời điểm ngậm điện sớm động tốc độ cao để đảm bảo thời gian tăng trưởng dòng điện Tín hiệu phun xăng Hình 4.10 Tín hiệu phun xăng đo chân chân điều khiển phun xăng ECM 3000 vịng/phút Tín hiệu phun xăng ECM 3000 vòng/phút 3.86ms ổn định, khơng bị phun nhiều Hinh 4.11 Tín hiệu phun xăng Arduino 3000 vịng/phút Tín hiệu phun xăng Arduino khơng ổn định chạy tốc độ 3000 vòng/phút Cụ thể xung phân bố khơng đồng đều, xung có độ rộng khác nhau, xung rộng có thời gian 8ms cịn xung nhỏ có thời gian 2ms 45 4.3 Đánh giá mơ hình Dựa vào kết thực nghiệm từ hai dãy tốc độ trên, nhóm nghiên cứu thấy thời điểm đánh lửa sớm Arduino gần giống với thời điểm đánh lửa sớm ECM Tuy nhiên, lượng phun nhiên liệu điều khiển Arduino không ổn định so với điều khiển lượng phun ECM Từ đây, nhóm nghiên cứu thấy điều khiển lập trình theo kiểu điều khiển mở nên tín hiệu điều khiển hoạt động chưa ổn định so với điều khiển ECM 46 CHƯƠNG 5: KẾT LUẬN VÀ KIẾN NGHỊ 5.1 Kết luận Qua trình thực đề tài này, cho thấy từ lý thuyết điều khiển động đến thực tế mơ hình có khoảng cách lớn, điều mà nhóm nghiên cứu cần phải học hỏi rèn luyện thêm nhiều sau Mặc dù vận hành chế độ khơng tải điều cho thấy ứng dụng Arduino điều khiển động đốt giúp dễ dàng tiếp cận với nguyên lí hoạt động động điều khiển điện tử ngày ngơn ngữ gần với ngơn ngữ giao tiếp người nên ứng dụng nhiều giảng dạy lĩnh vực ô tô Với giả thuyết đưa điều khiển động hoạt động tốc độ với chế độ khơng tải, qua thực nghiệm nhóm nghiên cứu chưa điều khiển động hoạt động ổn định tốc độ cầm chừng Qua kết thu từ thực nghiệm cho thấy để động hoạt động ổn định ngồi góc đánh lửa sớm phù hợp cịn cần phải tính tốn lượng nhiên liệu cách xác Bộ điều khiển nhiều hạn chế tiềm phát triển tương lai lớn Đề tài góp phần khái quát hệ thống điều khiển động cơ lí thuyết đánh lửa phun xăng Mở rộng ngơn ngữ lập trình Arduino ngồi lệnh Có thể phát triển thêm để điều khiển động đơn giản hệ thống khác 5.2 Kiến nghị Bộ điều khiển ứng dụng Arduino hoạt động chưa ổn định mơ hình động cơ, để hồn thiện cần khảo sát cảm biến áp suất tuyệt đối đường ống nạp (MAP), cảm biến nhiệt độ khơng khí đường ống nạp (IAT) để tính tốn khối lượng khí nạp cách xác Từ tính lượng phun nhiên liệu phù hợp, nên cập nhật thêm cảm biến khí xả để điều khiển vịng lặp kín cho tỉ lệ hịa khí tối ưu A/F =14.7 Khảo sát sử dụng cảm biến vị trí bướm ga (TP) để nhận biết tốt thay đổi chế độ hoạt động, đề tài tín hiệu điều khiển thay đổi phụ thuộc vào tốc độ động Có thể dùng tín hiệu cảm biến MAP thay đổi tốc độ xung vị trí trục khuỷu kì nổ để xác định xác thời điểm đánh lửa chu trình hoạt động 47 động vòng quay trục khuỷu Hiện đề tài thực đánh lửa lần chu trình cuối kì nén cuối kì thải 48 TÀI LIỆU THAM KHẢO [1].http://www.mt.gov.vn/moitruong/quy-chuan-chat-luong/33184/he-thong-phunxang-dien-tu.aspx [2] Nguyễn Tấn Lộc Giáo trình thực tập động xăng II [3] https://oto.edu.vn/he-thong-danh-lua-som-dien-tu/ [4].https://www.2banh.vn/threads/he-thong-phun-xang-dien-tu-cua-honda-pgm-fihoat-dong-the-nao.21436/ [5] https://vi.wikipedia.org/wiki/Arduino [6].https://quantrimang.com/arduino-la-gi-va-ung-dung-cua-no-trong-cuoc-song145388 [7]https://sangtaoclub.net/bai-viet/115-gioi-thieu-ho-vi-dieu-khien-avr-cua-hangatmel.html [8] http://thegioiic.com/forums/tong-hop-ve-vi-dieu-khien-avr [9] Lê Thanh Phúc ,Giáo trình thực tập điện tơ I [10] Tài liệu đào tạo TCCS (Hệ thống điều khiển máy) tập Gai đoạn [11] HƯỚNG DẪN BẢO TRÌ PHỤ LỤC (4) Future X [12] http://doc.edu.vn/tai-lieu/do-an-he-thong-danh-lua-48450/ [13]http://www.autospeed.com/cms/article.html?&title=Getting-the-IgnitionTiming-Right&A=109132 [14] Đỗ Quốc Ấm, Giáo Trình Thử Nghiệm Động Cơ 49 PHỤ LỤC Code điều khiển phun xăng, đánh lửa, bơm xăng volatile int pulses = 0, oldpulses; unsigned long cycle = 0, oldcycle = 0; unsigned long int oldtime = 0, newtime = 0; unsigned long int previousMillis = 0; int rpm, resetTime; int MAP, oldMAP, TP; unsigned int fueltime = 486; unsigned char i = 5, b = 0;; volatile int Ipulses = 0; unsigned char x, y, t; unsigned char map_IG[21] = {1, 2, 3, 3, 4, 5, 6, 8, 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 12, 12, 14}; unsigned char map_i[21] = { 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2}; unsigned int map_FI[21] = {486, 486, 473, 473, 473, 436, 429, 465, 472, 480, 487, 485, 484, 482, 481, 476, 472, 468, 464, 460, 448}; void setup() { pinMode(2, INPUT); // chân nhận tín hiệu tốc độ động CKP pinMode(5, OUTPUT);// chân điều khiển bơm xăng pinMode(6, OUTPUT);// chân điều khiển kim phun pinMode(7, OUTPUT);// chân điều khiển mosfet đánh lửa attachInterrupt(0, countRPM, FALLING); digitalWrite(5, HIGH); delay(2000); digitalWrite(5, LOW); noInterrupts(); // Khai báo Timer TCCR1A = 0; 50 TCCR1B = 0; TCNT1 = 0; OCR1A = fueltime; TCCR1B |= (1 200)) { case (true): digitalWrite(5, HIGH); break; case (false): digitalWrite(5, LOW); break; } x = map(rpm, 900, 7200, 0, 20); y = map_IG[x]; i = map_i[x]; fueltime = map_FI[x]; if (rpm < 900) { i = 5; y = 1; fueltime = 486; } if (Ipulses == i) { digitalWrite(7, HIGH); while (Ipulses < 7) { b++; delayMicroseconds(cycle / 4); if (b > 24) { digitalWrite(7, LOW); 52 digitalWrite(5, LOW); Ipulses = 1; break; } } delayMicroseconds(cycle / 30 * (30 - y)); digitalWrite(7, LOW); b = 0; } if (Ipulses == 9) { digitalWrite(6, HIGH); /* Reset Timer/Counter1 */ TIFR1 |=