Đặt vấn đề Theo xu hướng của hầu hết các nước trên thế giới, Việt Nam và nhiều nước khác đang đứng trước giai đoạn “motorization” (ô tô hóa) khi trung bình có trên 50 ô tô/1. Có thể hiểu đây là quá trình ô tô trở nên phổ biến và trở thành phương tiện thiết yếu của người dân. Và theo dự báo giai đoạn này chắc chắn sẽ xảy ra tại Việt Nam trong giai đoạn từ năm 2020 đến năm 2025 khi trung bình sẽ có 50 xe/1000 dân và khi thu nhập bình quân đầu người đạt trên 3000 USD.[1] Để giữ được lợi thế cạnh tranh khi xe hơi ngày càng trở nên phổ biến, các nhà sản xuất xe luôn cố gắng mang những thành tựu công nghệ, nghiên cứu mới nhất lên những chiếc xe của mình có thể về cơ khí, điện tử, phần mềm, nhiên liệu hay vật liệu. Cùng với sự phát triển của cuộc cách mạng 4.0, đặc biệt với sự phát triển của các công nghệ điện tử và phần mềm đã góp phần lớn vào việc cải thiện về tính năng, hiệu suất, tiện nghi và an toàn của xe.
Sự phát triển của các hệ thống điều khiển, của phần mềm trên ô tô đang được dự báo sẽ trở thành một hướng phát triển lấn át sự phát triển đổi thay của cơ khí truyền thống. Ngay ở thời điểm hiện tại các hệ thống nhúng (bao gồm điện tử và phần mềm) đã trở thành một phần không thể thiếu trên ô tô và chiếm một phần lớn cấu thành nên giá bán của một chiếc xe. Trang bị kiến thức về cách hoạt động của các hệ thống nhúng trên ô tô sẽ là một lợi thế rất lớn cho những kỹ sư cơ khí trong việc vận hành, kiểm tra, sửa chữa hoặc sẽ là nền tảng để có thể phát triển trở thành kỹ sư phần mềm ô tô. Lý do chọn đề tài Yêu cầu đặt ra đối với các trường, các cơ sở đào tạo ngành công nghệ kỹ thuật ô tô đó chính là trang bị cho người học những kiến thức cần thiết về ô tô cũng như kịp thời cập nhật các nội dung kiến thức mới của các hướng phát triển trên ô tô trong tương lai.
Từ vấn đề đã nêu với mong muốn trang bị những kiến thức cơ bản về cách hoạt động của các hệ thống trên ô tô, hỗ trợ cho việc giảng dạy và học tập ở bộ môn thực tập lập trình điều khiển ô tô, nhóm chúng em đã lựa chọn đề tài “Biên soạn các bài học cho môn Thực tập lập trình điều khiển ô tô”. 1 Mục tiêu đề tài Mục tiêu của đề tài là biên soạn ra hệ thống các bài học phục vụ cho quá trình giảng dạy, học tập và thực hành môn Thực tập lập trình điều khiển ô tô, các bài học sẽ cung cấp những kiến thức cơ bản nhất về cách hoạt động của các hệ thống xử lý, cảm biến, thiết bị trên ô tô và giúp cho các bạn có khả năng lập trình mô phỏng được các hệ thống đơn giản. Ngoài ra, nhóm sẽ tạo ra các chương trình, thư viện để hỗ trợ cho quá trình giảng dạy, học tập và có khả năng tái sử dụng để phát triển các dự án. Phương pháp nghiên cứu Để hoàn thành được đồ án này, nhóm đã áp dụng rất nhiều phương pháp nghiên cứu như: • Phương pháp phân tích lý thuyết bao gồm phân tích nguồn tài liệu (tạp chí và báo cáo khoa học, diễn đàn, tài liệu lưu trữ thông tin đại chúng), phân tích tác giả và phân tích nội dung.
• Phương pháp tổng hợp lý thuyết bao gồm bổ sung tài liệu, sau khi phân tích phát hiện thiếu hoặc sai lệch, lựa chọn tài liệu chỉ chọn những thứ cần, đủ để xây dựng luận cứ… • Phương pháp phân loại và hệ thống hóa lý thuyết • Phương pháp mô hình hóa: nghiên cứu các đối tượng, các quá trình … bằng cách xây dựng các mô hình của chúng (các mô hình này bảo toàn các tính chất cơ bản được trích ra của đối tượng đang nghiên cứu) và dựa trên mô hình đó để nghiên cứu trở lại đối tượng thực. • Phương pháp thu thập số liệu, phương pháp thực nghiệm… Ý nghĩa thực hiện Đề tài này sau khi hoàn thành sẽ mang lại những lợi ích sau: • Hệ thống các bài học sẽ là tài liệu cho việc giảng dạy, học tập. Hiểu biết về lập trình điều khiển hệ thống sẽ giúp nâng cao kiến thức trong việc vận hành, kiểm tra, sửa chữa và phát triển. • Nội dung môn học hướng đến lập trình ô tô do đó sẽ đề cập đến các vấn đề thường xảy ra trên ô tô và cung cấp các giải pháp xử lý.
• Cung cấp các gợi ý thiết lập phần cứng, kỹ thuật lập trình thường dùng để có thể lập trình mô phỏng các hệ thống. 2 • Cung cấp những hướng dẫn, chương trình mẫu, thư viện viết sẵn nhóm tạo ra để sử dụng phát triển các dự án. • Các chương trình phát triển thêm trong đồ án sẽ tạo cảm hứng cho người học, giúp quá trình truyền đạt kiến thức dễ dàng hơn. Giới hạn đề tài Vì hạn chế về thời gian thực hiện, hệ thống các bài học chưa thực hiện được nội dung hướng dẫn thực hành, bài tập tự kiểm, các bài học về lập trình một vài thiết bị khác như động cơ bước, các loại màn hình lcd, tft… Bên cạnh đó, đồ án được thực hiện trong giai đoạn khó khăn do việc giãn cách xã hội, tiếp cận các thiết bị, mô hình nên nhóm chưa thể hoàn thiện trọn vẹn các nội dung lập trình thực tế, chưa thể tạo một mô hình mẫu tổng hợp các thiết bị được sử dụng… Tuy khó khăn nhưng nhóm cũng đã tận dụng thời gian này với những khả năng có thể để phát triển thêm các nội dung khác hỗ trợ cho đề tài.
CƠ SỞ LÝ THUYẾT Giới thiệu vi điều khiển ATmega328 AVR là chip vi điều khiển 8 bits với cấu trúc tập lệnh đơn giản hóa-RISC (Reduced Instruction Set Computer), một kiểu cấu trúc đang thể hiện ưu thế trong các bộ xử lí. ❖ Đặc điểm ATmega328: • Hiệu suất cao • Tổng số chân I/O kỹ thuật số là 14. • Thông lượng lên đến 16 MIPS ở tần số 16 MHz. • Bộ nhớ flash: 32 Kb.
• Có 3 bộ Timer/Counter, hai bộ 8bit và một bộ 16bit. • Khóa chức năng chương trình để bảo mật mã lập trình. • ADC 8 kênh 10bit trong gói TQFP và QFN / MLF. • Bộ đếm thời gian thực với bộ dao động riêng biệt.
• Nhiệt độ tối thiểu và tối đa -40oC đến 105oC. • USART nối tiếp có thể lập trình. • Giao tiếp SPI chính / phụ. • Ngắt ngoài và ngắt bên trong.
• Điện áp hoạt động: 2,7V đến 5,5V. • Tiêu thụ điện năng thấp. • Chế độ hoạt động: 1,5mA ở 3V - 4MHz. • Chế độ ngắt nguồn: 1µA ở 3V.
• Sáu chế độ tiết kiệm năng lượng: Chờ, giảm nhiễu ADC, tiết kiệm năng lượng, tắt nguồn, chờ, và chế độ chờ kéo dài. • Bộ đếm thời gian có thể lập trình với bộ dao động trên chip riêng biệt. • Bộ so sánh tương tự trên chip 4 ❖ Cấu trúc VĐK Hình 2. Cấu trúc của vi điều khiển AVR 5 ❖ Sơ đồ các chân ATmega328 Hình 2.
6 • PC6 / đặt lại: Nếu cầu chì RSTDISBL được lập trình, PC6 được sử dụng làm chân đầu vào. Nếu cầu chì RSTDISBL không được lập trình, PC6 được sử dụng làm một đầu vào đặt lại. • AVCC: là chân điện áp cung cấp cho bộ chuyển đổi A/D, PC3: 0 và ADC7: 6. Nó phải được kết nối bên ngoài với VCC, ngay cả khi ADC không được sử dụng.
• AREF: là chân tham chiếu tương tự cho bộ chuyển đổi A/D. • ADC7: Trong TQFP và QFN/MLF thì ADC7: 6 đóng vai trò là đầu vào tương tự cho bộ chuyển đổi A/D. Các chân này được cấp nguồn từ analog và phục vụ như các kênh ADC 10-bit. Bộ nhớ AVR Cấu trúc AVR có hai không gian bộ nhớ chính: bộ nhớ chương trình (program memory) và bộ nhớ dữ liệu (Data memory).
Bộ nhớ chương trình Hình 2. Bộ nhớ chương trình ATmega328P Bộ nhớ chương trình của AVR là bộ nhớ Flash có dung lượng 32 Kb. Vì tất cả AVR có độ rộng 16 hoặc 32 bit, nên Flash được tổ chức là 16Kx16. Để bảo mật phần mềm, không gian bộ nhớ chương trình flash được chia thành hai phần, phần bộ nạp khởi động và phần chương trình ứng dụng trong ATmega328P.
Bộ nhớ flash có độ bền ít nhất 10.000 chu kỳ ghi / xóa. 7 Bộ nhớ dữ liệu Bộ nhớ dữ liệu AVR được chia làm hai phần: bộ nhớ SRAM và bộ nhớ EEPROM. Bộ nhớ SRAM ATmega328P là một bộ vi điều khiển phức tạp với nhiều thiết bị ngoại vi được hỗ trợ trong 64 thanh ghi dành riêng cho I/O. Phần đầu là 32 thanh ghi chức năng chung (General Purpose Register) R0 đến R31 có địa chỉ từ 0x0000 đến 0x001F.
Phần thứ 2 là không gian nhớ I/O với 64 thanh ghi vào ra (I/O Register) có địa chỉ từ 0x0020 đến 0x005F. Phần thứ 3 dùng cho vùng nhớ với 160 thanh ghi vào ra mở rộng (Extended I/O Registers) có địa chi từ 0x0060 đến 0x00FF. Phần thứ 4 là vùng SRAM nội với 2048byte có địa chỉ từ 0x0100 đến 0x08FF. Các thanh ghi R26 đến R31 có tính năng định địa chỉ gián tiếp thanh ghi con trỏ.
Bản đồ bộ nhớ dữ liệu 2. Bộ nhớ EEPROM Đây là bộ nhớ dữ liệu có thể ghi xóa ngay trong lúc vi điều khiển hoạt động và không bị mất dữ liệu khi nguồn điện cung cấp bị ngắt. Với vi điều khiển ATmega328P, bộ nhớ EEPROM có kích thước là 1Kb và có độ bền ít nhất 100000 chu kỳ ghi/xóa. EEPROM được xem như là một bộ nhớ vào ra được đánh địa chỉ độc lập với SRAM, điều này có nghĩa là ta cần sử dụng lệnh đọc, ghi khi muốn truy xuất với EEPROM.
Để điều khiển vào ra dữ liệu với EEPROM ta sử dụng 3 thanh ghi sau: EEAR, EEDR và EECR. 8 Ngắt / ngắt ngoài Ngắt Interrupts, thường được gọi là ngắt, là một “tín hiệu khẩn cấp” gởi đến bộ xử lí, yêu cầu bộ xử lí tạm ngừng tức khắc các hoạt động hiện tại để “nhảy” đến một nơi khác thực hiện một nhiệm vụ khẩn cấp nào đó, nhiệm vụ này gọi là trình phục vụ ngắt – isr (interrupt service routine). Sau khi kết thúc nhiệm vụ trong isr, bộ xử lý sẽ quay về thực hiện tiếp các nhiệm vụ còn gian dở.