: NGUYỄN THANH TRIỀU 1700
2.9.1. Khái quát về việc điều khiển thời gian đánh lửa
Hình 2.43 - Sự điều khiển của ESA
Hình 2.44 - Điều khiển thời điểm đánh lửa
Góc thời điểm đánh lửa ban đầu được xác định như sau: Khi ECU động cơ nhận được tín hiệu NE (điểm B), sau khi nhận tín hiệu G (điểm A), ECU xác định rằng đây
Hình 2.45 - Xác định thời điểm đánh lửa 2.9.2. Điều khiển đánh lửa khi khởi động [1]
Khi khởi động, tốc độ của động cơ thấp và khối lượng không khí nạp chưa ổn định, nên không thể sử dụng tín hiệu VG hoặc PIM làm các tín hiệu điều chỉnh. Vì vậy, thời điểm đánh lửa được đặt ở góc thời điểm đánh lửa ban đầu. Góc thời điểm đánh lửa ban đầu được điều chỉnh trong IC dự trữ ở ECU động cơ. Ngoài ra, tín hiệu NE được dùng để xác định khi động cơ đang được khởi động, và tốc độ của động cơ là 500 vòng/phút hoặc nhỏ hơn cho biết rằng việc khởi động đang xảy ra.
Tuỳ theo kiểu động cơ, có một số loại xác định động cơ đang khởi động khi ECU động cơ nhận được tín hiệu máy khởi động (STA).
2.9.3. Điều khiển đánh lửa sau khi khởi động [1]
Điều chỉnh đánh lửa sau khi khởi động là việc điều chỉnh được thực hiện trong khi động cơ đang chạy sau khi khởi động. Việc điều chỉnh này được thực hiện bằng cách tiến hành các hiệu chỉnh khác nhau đối với góc thời điểm đánh lửa ban đầu và góc đánh lửa sớm cơ bản.
Thời điểm đánh lửa = góc thời điểm đánh lửa ban đầu + góc đánh lửa sớm + góc đánh lửa sớm hiệu chỉnh.
Khi thực hiện việc điều chỉnh đánh lửa sau khởi động, tín hiệu IGT được bộ vi xử lý tính toán và truyền qua IC dự trữ này.
Hình 2.47 - Điều khiển đánh lửa sau khi khởi động
Góc đánh lửa sớm cơ bản: Góc đánh lửa sớm cơ bản được xác định bằng cách dùng tín hiệu NE, tín hiệu VG hoặc tín hiệu PIM. Tín hiệu NE và VG được dùng để xác định góc đánh lửa sớm cơ bản và được lưu giữ trong bộ nhớ của ECU động cơ.
Khi tín hiệu IDL bật ON, thời điểm đánh lửa là sớm theo tốc độ của động cơ. Trong một số kiểu động cơ góc đánh lửa sớm cơ bản thay đổi khi máy điều hòa không khí bật ON hoặc tắt OFF (Xem khu vực đường nét đứt ở bên trái). Ngoài ra, trong các kiểu này, một số kiểu có góc đánh lửa sớm là 00 trong thời gian máy chạy ở tốc độ không tải chuẩn.
2.9.5. Điều khiển khi tín hiệu IDL bị ngắt OFF [1]
Thời điểm đánh lửa được xác định theo tín hiệu NE và VG hoặc tín hiệu PIM dựa vào các dữ liệu được lưu trong ECU động cơ. Tuỳ theo kiểu động cơ, 2 góc đánh lửa sớm cơ bản được lưu giữ trong ECU động cơ. Các dữ liệu của một trong các góc này được dùng để xác định góc đánh lửa sớm dựa trên chỉ số octan của nhiên liệu, nên có thể chọn các dữ liệu phù hợp với nhiên liệu được người lái sử dụng. Ngoài ra, một số kiểu xe có khả năng đánh giá chỉ số octan của nhiên liệu, sử dụng tín hiệu KNK để tự động thay đổi các dữ liệu để xác định thời điểm đánh lửa.
2.10. Điều khiển góc đánh lửa sớm hiệu chỉnh [1]
2.10.1. Hiệu chỉnh để hâm nóng [1]
Góc đánh lửa sớm được sử dụng cho thời điểm đánh lửa khi nhiệt độ nước làm mát thấp nhằm cải thiện khả năng làm việc. Một số kiểu động cơ tiến hành hiệu chỉnh sớm lên tương ứng với khối lượng không khí nạp. Góc của thời điểm đánh lửa sớm lên xấp xỉ 15 bằng chức năng hiệu chỉnh này trong suốt thời gian ở các điều kiện cực kỳ lạnh.
Hình 2.49 - Hiệu chỉnh để hâm nóng
Đối với một số kiểu động cơ, tín hiệu IDL hoặc tín hiệu NE được sử dụng như một tín hiệu liên quan đối với việc hiệu chỉnh này.
2.10.2. Hiệu chỉnh khi quá nhiệt độ [1]
Khi nhiệt độ của nước làm nguội quá cao, thời điểm đánh lửa được làm muộn đi để tránh kích nổ và quá nóng. Góc thời điểm đánh lửa được làm muộn tối đa là 5 bằng cách hiệu chỉnh này.
Hình 2.50 - Hiệu chỉnh khi quá nhiệt độ
Một số kiểu động cơ cũng sử dụng các tín hiệu sau đây để hiệu chỉnh. - Tín hiệu lượng không khí nạp (VG hoặc PIM).
- Tín hiệu tốc độ động cơ (NE). - Tín hiệu vị trí bướm ga (IDL).
2.10.3. Hiệu chỉnh để tốc độ chạy không tải ổn định [1]
Nếu tốc độ của động cơ khi chạy không thay đổi từ tốc độ chạy không tải mục tiêu, ECU động cơ sẽ điều chỉnh thời điểm đánh lửa để làm cho tốc độ của động cơ được ổn định.
ECU động cơ liên tục tính toán tốc độ trung bình của động cơ, nếu tốc độ của động cơ giảm xuống dưới tốc độ mục tiêu của động cơ, ECU động cơ sẽ làm thời điểm đánh lửa sớm lên theo góc đã được xác định trước. Nếu tốc độ động cơ vượt quá tốc độ chạy không tải mục tiêu, ECU động cơ sẽ làm muộn thời điểm đánh lửa theo góc đã xác định trước. Góc của thời điểm đánh lửa có thể thay đổi đến mức tối đa là 50 bằng cách hiệu chỉnh này.
2.10.4. Hiệu chỉnh kích nổ [1]
Nếu kích nổ xảy ra trong động cơ, cảm biến kích nổ biến đổi độ rung tạo ra bởi kích nổ thành tín hiệu điện áp (tín hiệu KNK) và chuyển nó đến ECU động cơ.
Hình 2.52 - Hiệu chỉnh kích nổ
ECU động cơ sẽ xác định xem kích nổ này mạnh, vừa phải hoặc yếu từ độ lớn của tín hiệu KNK. Sau đó nó hiệu chỉnh thời điểm đánh lửa bằng cách làm muộn đi theo độ lớn của tín hiệu KNK. Nói khác đi, khi kích nổ mạnh, thời điểm đánh lửa bị muộn nhiều, và khi kích nổ yếu, thời điểm đánh lửa chỉ bị muộn một chút. Khi hết kích nổ ở động cơ, ECU động cơ ngừng làm muộn thời điểm đánh lửa và làm nó sớm lên một chút tại thời điểm được xác định trước. Việc làm sớm này được tiến hành cho đến khi kích nổ lại xảy ra, và sau đó khi kích nổ xảy ra, việc điều chỉnh lại được thực hiện lại bằng cách làm muộn thời điểm đánh lửa. Góc của thời điểm đánh lửa được làm muộn tối đa là 10 theo cách hiệu chỉnh này. Một số kiểu động cơ thực hiện việc hiệu chỉnh này gần tới phạm vi trọng tải hoàn toàn của động cơ, và các kiểu động cơ khác chỉ tiến hành việc hiệu chỉnh này trong thời gian có trọng tải cao.
2.11. Cơ sở lý thuyết Arduino và các module điều khiển [3]
2.11.1. Giới thiệu Arduino Mega 2560 [3]
Hình 2.53 - Hình ảnh mạch Arduino Mega 2560
Arduino cơ bản là một mã nguồn mở về điện tử được tạo thành từ phần cứng và phần mềm. Về mặt kỹ thuật có thể coi Arduino là một bộ phận điều khiển logic có thể lập trình được. Đơn giản hơn, Arduino là thiết bị có thể tương tác với ngoại cảnh thông qua các cảm biến và thao tác lập trình. Với thiết bị này việc lắp ráp và điều khiển các thiết bị điện từ sẽ dễ dàng hơn bao giờ hết.
Hiện tại có rất nhiều loại vi điều khiển và đa số được lập trình bằng ngôn ngữ C++ hoặc Assembly nên rất khó khăn cho những người có ít kiến thức sâu về điện tử và lập trình. Arduino đã giải quyết được vấn đề này. Arduino được phát triển nhiều năm đơn giản hoá việc thiết kế, lắp ráp linh kiện điện tử cũng như lập trình vi điều khiển và mọi người có thể tiếp cận dễ dàng hơn với thiết bị điện tử mà không cần nhiều về kiến thức và thời gian.
- Arduino có thể cung cấp cho bạn rất nhiều sự tương tác với môi trường xung quanh với:
Hệ thống cảm biến đa dạng về chủng loại (đo đạc nhiệt độ, độ ẩm, gia tốc, vận tốc, cường độ ánh sáng, màu sắc vật thể, lưu lượng nước, phát hiện chuyển động, phát hiện kim loại, khí độc…)…
Các thiết bị hiển thị (màn hình LCD, đèn LED…).
Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị khác hoặc các kết nối không dây thông dụng (3G, GPRS, Wifi, Bluetooth, 315/433Mhz, 2.4Ghz…)…
Định vị GPS, nhắn tin SMS…
Thành phần của Arduino Mega 2560:
Hình 2.54 - Thành phần cấu tạo bên trong mạch Arduino Mega 2560
Arduino Mega 2560 là một vi điều khiển bằng cách sử dụng ATmega2560. Gồm:
- 54 chân digital (trong đó có 15 chân có thể được sủ dụng như những chân PWM là từ chân số 2 → 13 và chân 44 45 46).
- 6 ngắt ngoài: chân 2 (interrupt 0), chân 3 (interrupt 1), chân 18 (interrupt 5), chân 19 (interrupt 4), chân 20 (interrupt 3), and chân 21 (interrupt 2).
- 4 cổng Serial giao tiếp với phần cứng:
Bảng 2.1 - Bảng biểu các cổng Serial giao tiếp với phần cứng
CỔNG SERIAL CHÂN RX CHÂN TX
Cổng 0 0 1
Cổng 1 19 18
Cổng 2 17 16
Cổng 3 15 14
- 1 thạch anh với tần số dao động 16 MHz. - 1 cổng kết nối USB.
- 1 jack cắm điện. - 1 đầu ICSP. - 1 nút reset.
Nó chứa tất cả mọi thứ cần thiết để hỗ trợ các vi điều khiển.
Arduino Mega2560 khác với tất cả các vi xử lý trước giờ vì không sử dụng FTDI chip điều khiển chuyển tín hiệu từ USB để xử lý. Thay vào đó, nó sử dụng ATmega16U2 lập trình như là một công cụ chuyển đổi tín hiệu từ USB. Ngoài ra, Arduino Mega 2560 cơ bản vẫn giốngArduino Uno R3, chỉ khác số lượng chân và nhiều tính năng mạnh mẽ hơn, nên các bạn vẫn có thể lập trình cho con vi điều khiển này bằng chương trình lập trình cho Arduino Mega 2560.
Thông số kỹ thuật
Bảng 2.2 - Bảng thông số kỹ thuật Arduino Mega 2560
Chip xử lý ATmega2650
Điện áp hoạt động 5V
Điện áp vào (đề nghị) 7V-15V
Flash Memory 256 KB
SRAM 8 KB
EEPROM 4 KB
Clock Speed 16 MHz
Hình 2.55 - Cấu tạo các chân của mạch Arduino Mega 2560
Hình trên là cận cảnh con Arduino Mega 2560. Chúng ta lập trình cho Arduino thì trước tiên quan tâm những thành phần được ký hiệu ở trên:
1) Cổng USB (loại B): đây là cổng giao tiếp để ta upload code từ PC lên vi điểu khiển. Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điểu khiển với máy tính.
2) Nút reset: Nút reset được sử dụng để reset lại chương trình đang chạy. Đôi khi chương trình chạy gặp lỗi, người dùng có thể reset lại chương trình.
3) Chân digital: đánh số từ 0 đến 53 là digital pin, nhận vào hoặc xuất ra các tín hiệu số. Ngoài ra có 3 pin đất (GND) và pin điện áp tham chiếu (AREF).
Cũng trên 53 chân digital này chúng ta còn một số chân chức năng đó là:
- Serial: Chân 0 (Rx), chân 1 (Tx); Chân 14 (Rx), chân 15 (Tx); Chân 16 (Rx), chân 17 (Tx); Chân 18 (Rx), chân 19 (Tx). Các chân này dùng để truyền (Tx)
và nhận (Rx) dữ liêu nối tiếp TTL. Chúng ta có thể sử dụng nó để giao tiếp với cổng COM của một số thiết bị hoặc các linh kiện có chuẩn giao tiếp nối tiếp. - PWM (Pulse Width Modulation): các chân 2,3,4,5,6,7,8,9,10,11,12,13 trên bo
mạch ký hiệu là các chân PWM chúng có thể cho phép bạn xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite(). Nói một cách đơn giản, có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác, sử dụng nó để điều khiển tốc độ động cơ, độ sáng của đèn…
- SPI: 53 (SS), 51 (MOSI), (MISO), (SCK), các chân này hỗ trợ giao tiếp theo chuẩn SPI. Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác.
- I2C: Arduino hỗ trợ giao tiếp theo chuẩn I2C. Các chân (SDA) và (SCL) cho phép chúng tao giao tiếp giữa Arduino với các linh kiện có chuẩn giao tiếp là I2C.
4) Chân ICSP của ATmega 2650: Các chân ICSP của ATmega 2650 được sử dụng cho các giao tiếp SPI (Serial Peripheral Interface), một số ứng dụng của Arduino có sử dụng chân này, ví dụ như sử dụng module RFID RC522 với Arduino hay Ethernet Shield với Arduino.
5) ICSP của ATmega 16U2: ICSP là chữ viết tắt của In-Circuit Serial Programming.
Đây là các chân giao tiếp SPI của chip Atmega 16U2. Các chân này thường ít được sử trong các dự án về Arduino.
* Phần mềm Arduino:
Phần mềm Arduino được gọi là sketches, được tạo ra trên máy tính có tích hợp môi trường phát triển (IDE) IDE cho phép viết, chỉnh sửa code và chuyển đổi sao cho phần cứng có thể hiểu, IDE dùng để biên dịch và nạp vào Arduino (quá trình xử lý này gọi là upload).
Hình 2.56 - Giao diện phần mềm IDE
* Phần cứng Arduino:
Phần cứng Arduino là các board Arduino, nơi thực hiện các chương trình lập trình. Các board này có thể điều khiển hoặc đáp trả các tín hiệu điện, vì vậy các thành phần được ghép trực tiếp vào nó nhằm tương tác với thế giới thực để cảm nhận và truyền thông. Ví dụ các cảm biến bao gồm các thiết bị chuyển mạch, cảm biến siêu âm, gia tốc... Các thiết bị truyền thông bao gồm các đèn, motor, loa, các thiết bị hiển thị...
Có rất nhiều ứng dụng sử dụng Arduino để điều khiền. Arduino có rất nhiều module, mỗi module được phát triển cho một ứng dụng. Về mặt chức năng, các bo mạch Arduino được chia thành hai loại bo mạch chính có chip Atmega và loại mở rộng thêm chức năng cho bo mạch chính. Các bo mạch chính về cơ bản là giống nhau về chức năng, tuy nhiên về mặt cấu hình như số lượng, dung lượng bộ nhớ, hay kích thước có sự khác nhau. Một số bo mạch có trang bị thêm các tín năng kết nối như Internet và Bluetooth, Wireless, điều khiển động cơ...
2.11.2. Các module ứng dụng vào mô hình [6]
Module I2C [6]
Hình 2.57 - Hình ảnh Module I2C
LCD có quá nhiều chân gây khó khăn trong quá trình kết nối và chiếm dụng nhiều chân của vi điều khiển. Module chuyển đổi I2C cho LCD sẽ giải quyết vấn đề này, thay vì sử dụng tối thiểu 6 chân của vi điều khiển để kết nối với LCD (RS, EN, D7, D6, D5 và D4) thì với module chuyển đổi bạn chỉ cần sử dụng 2 chân (SCL, SDA) để kết nối. Module chuyển đổi I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16x2, LCD 20x4…), kết nối với vi điều khiển thông qua giao tiếp I2C, tương thích với hầu hết các vi điều khiển hiện nay.
Ưu điểm
- Tiết kiệm chân cho vi điều khiển. - Dễ dàng kết nối với LCD.
Thông số kĩ thuật
- Điện áp hoạt động: 2.5-6V DC
- Hỗ trợ màn hình: LCD16x2,16x4,20x4 (driver HD44780) - Giao tiếp: I2C
- Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2) - Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt
Module HC-06
Mạch thu phát Bluetooth HC-06 đã ra chân được thiết kế nhỏ gọn ra chân tín hiệu giao tiếp cơ bản và nút bấm để vào chế độ AT COMMAND, mạch được thiết kế để có thể cấp nguồn và giao tiếp qua 3.3VDC hoặc 5VDC, thích hợp cho nhiều ứng dụng khác nhau: Robot Bluetooth, điều khiển thiết bị qua Bluetooth....
Hình 2.58 - Hình ảnh Module HC-06
Module bluetooth HC-06 dùng tập lệnh AT để thực hiện giao tiếp với các thiết bị khác. Module thực hiện phương thức giao tiếp UART (gửi nhận tín hiệu điều khiển) với Arduino thông qua chân TX và RX. Khi đó module sẽ phát bluetooth để kết nối với smartphone và nhận tín hiệu từ ứng dụng của smartphone để đưa đến Arduino điều khiển các chi tiết chấp hành.
Module Relay 8 kênh [6]
Hình 2.59 - Hình ảnh Module Relay 8 kênh
Module relay bản chất là dùng relay để điều khiển đóng mở, dùng điện áp nhỏ để kích mở điện áp lớn.
Module nhỏ nhẹ, tiện lợi, dễ sử dụng.
Ứng dụng: như một công tắc điện, dùng để điều khiển các thiết bị công suất lớn (đèn, động cơ...)
Thông số hoạt động
- Điện áp hoạt động: 5VDC được cấp vào 2 chân DC+ và DC-
- Dòng tiêu thụ: 200mA/ 1 relay.