Bo mạch Arduino Mega 2560 là bộ xử lí của CCS ECU. Công tắc điều khiển dùng để vận hành hệ thống điều khiển ga tự động. Thuật tốn điều khiển chính là một vịng lặp vơ tận với các nhiệm vụ xử lí các tín hiệu đầu vào, tính tốn dựa trên chúng để cho ra tín hiệu đầu ra cần thiết là tín hiệu vị trí bàn đạp tăng tốc mới và tín hiệu cơng tắc bàn đạp tăng tốc đến hộp tín hiệu và an tồn.
42
3.1.2. Lưu đồ thuật toán hệ thống điều khiển ga tự động trên xe điện ZERO
43 Hình 3.3. Lưu đồ thuật toán hệ thống điều khiển ga tự động (tiếp theo)
44 Khi giá trị SET = 0, xe sẽ ở chế độ điều khiển bình thường với tốc độ xe hoàn toàn dựa vào bàn đạp tăng tốc do người lái điều khiển và CCS ECU sẽ ngắt bộ điều khiển PID. CCS ECU sẽ nhận các tín hiệu từ cơng tắc điều khiển, cơng tắc bàn đạp phanh, cảm biến vị trí chân ga, cơng tắc đâm đụng, công tắc tiến lùi để quyết định các chế độ của hệ thống điều khiển ga tự động như chức năng bật tắt CCS ECU, chức năng cài đặt tốc độ, chức năng tăng giảm tốc độ, chức năng hủy, chức năng phục hồi tốc độ cài đặt và chức năng hoạt bộ điều khiển PID.
Một phần quan trọng của thuật tốn là kích hoạt bộ điều khiển PID để điều khiển tín hiệu vị trí bàn đạp tăng tốc. Việc cài đặt thông số cho bộ điều khiển PID dựa vào thực nghiệm để chọn những thơng số phù hợp nhất đảm bảo nhu cầu chính là xe đạt tới tốc độ mong muốn nhanh, êm dịu và mượt mà. Khâu tỷ lệ (Proportional) của bộ điều khiển PID điều chỉnh tín hiệu điện áp dựa trên sự sai số (ERROR = Vset – Vxe hoặc ERROR = Vset1 - Vxe) giữa tốc độ thực tế của xe (Vxe) và tốc độ mong muốn của xe (Vset hoặc Vset1). Nếu giá trị ERROR dương (Vset > Vxe), bộ điều khiển PID sẽ tăng điện áp tín hiệu vị trí bàn đạp tăng tốc để tăng tốc và ngược lại, nếu giá trị ERROR dương (Vset < Vxe), bộ điều khiển PID sẽ giảm điện áp tín hiệu vị trí bàn đạp tăng tốc để giảm tốc. Do đó, khi xe càng gần tốc độ mong muốn, gia tốc xe càng giảm. Khâu tích phân (Integral) của bộ điều khiển PID có chức năng cân bằng nhanh giá trị ERROR về 0 và khâu vi phân (Derivative) được áp dụng vào những thay đổi nhỏ của tốc độ. Các giá trị hằng số Kp, Ki, Kd ban đầu được chọn theo bảng 3.1. Khi xử lí, các hằng số trên có thể được liên tục thay đổi để đảm bảo yêu cầu nhu cầu chính đã đề ra.
Bảng 3.1. Các giá trị hằng số Kp, Ki, Kd ban đầu Chức năng Chức năng Hằng số Cài đặt tốc độ Tăng tốc theo nấc Tăng tốc liên tục Giảm tốc theo nấc Giảm tốc liên tục Kp 1.5 1.5 0.13 1.5 0.13 Ki 0.000035 0.000035 0.000035 0.000035 0.000035 Kd 2 2 0.13 2 0.13
45
3.2. Ứng dụng phần mềm Arduino IDE trong lập trình CCS ECU 3.2.1. Code đọc tín hiệu các cơng tắc, cảm biến 3.2.1. Code đọc tín hiệu các cơng tắc, cảm biến
Các tín hiệu được nhận về Arduino có các chân analog và các chân digital. Chân analog được dùng để đọc tín hiệu của cảm biến vị trí bàn đạp tăng tốc và mạch nhận tín hiệu cụm cơng tắc điều khiển. Tín hiệu điện áp thu thập từ chân analog sẽ chuyển đổi tín hiệu điện áp từ 0V đến 5V thành dãy giá trị từ 0 đến 1023. Chân digital được dùng để đọc tín hiệu của mạch đo tốc độ động cơ và mạch đọc tín hiệu các cơng tắc. Tín hiệu điện áp thu thập từ chân digital sẽ chuyển đổi tín hiệu điện áp xấp xỉ 0V là giá trị 0 và tín hiệu điện áp từ 3.3V trở lên là giá trị 1. Bên cạnh đó, đối với tín hiệu từ mạch đo tốc độ động cơ sẽ sử dụng chân digital số 2 có hỗ trợ ngắt để tính tốn tốc độ động cơ.
- Lưu đồ và code đọc tín hiệu chân analog trong chương trình Arduino IDE:
Hình 3.4. Lưu đồ đọc tín hiệu chân analog
bientro = analogRead (A0); // đọc tín hiệu cảm biến vị trí bàn đạp tăng tốc qua chân A0 i = map (bientro,0,1023,0,255); // chuyển đổi giá trị thành dãy giá trị 0 đến 255
- Lưu đồ và code đọc tín hiệu chân digital trong chương trình Ardiuno IDE:
Hình 3.5. Lưu đồ đọc tín hiệu chân digital
th_damdung = digitalRead (22);// đọc tín hiệu cơng tắc đâm đụng qua chân digital 22 - Lưu đồ và code đọc tốc độ động cơ trong chương trình Ardiuno IDE:
Hình 3.6. Lưu đồ đọc tốc độ động cơ void xung() {//chương trình ngắt void xung() {//chương trình ngắt
xung1s++; }
void setup() {
pinMode (2, INPUT_PULLUP); // khai báo chân ngắt
46 }
Void loop(){
time_vt = millis() - time_vt2; if (time_vt >= 500)
{
noInterrupts();// tạm dừng chương trình ngắt vantoc = xung1s * ((Chuvi / 0.5) * 3.6); time_vt2 = millis();
xung1s = 0; // xóa xung đếm được trong vịng 1s
dieukien_PID = 1;// tín hiệu điều kiện để kích hoạt PID time_vt = 0;
interrupts();// tiếp tục chương trình ngắt }
}
3.2.2. Code xử lí tín hiệu cơng tắc điều khiển và điều khiển chế độ thực hiện
Dựa vào tín hiệu chân analog A1, A2 được đọc từ mạch tín hiệu cụm công tắc, ta bắt đầu so sánh các giá trị tương ứng và điều kiện hoạt động với các chức năng như CRUISE, SET, CANCEL, RESUME, ACCELERATE, COAST. Khi tín hiệu thõa các điều điều kiện, từ đó các biến điều khiển controlCode được thay đổi theo các giá trị 0,1,2,3 tương ứng với các chế độ điều khiển lần lượt là điều khiển bình thường, điều khiển ga tự động theo tốc độ cài đặt trước bằng hàm điều khiển PID, điều khiển ga tự động với tốc độ giảm dần bằng hàm điều khiển PID, điều khiển ga tự động tăng dần bằng hàm điều khiển PID.
47 - Lưu đồ thuật toán điều khiển bật tắt hệ thống điều khiển ga tự động
Hình 3.7. Lưu đồ thuật tốn điều khiển bật tắt hệ thống điều khiển ga tự động - Lưu đồ thuật toán điều khiển các chức năng của hệ thống - Lưu đồ thuật toán điều khiển các chức năng của hệ thống
48 - Lưu đồ thuật toán điều khiển chế độ điều khiển:
49 - Lưu đồ thuật toán điều khiển PID
50
Chương 4. THIẾT KẾ HỆ THỐNG CRUISE CONTROL 4.1. Nghiên cứu, đo đạc các chi tiết và thiết bị 4.1. Nghiên cứu, đo đạc các chi tiết và thiết bị
4.1.1. Cụm công tắc điều khiển hệ thống Cruise Control
Hình 4.1. Cụm cơng tắc điều khiển trên xe ZERO
Cụm công tắc trên xe ZERO thuộc loại cần gạt với các chế độ: ON-OFF, RES/ACC(RESUME/ACCELERATION), SET/COAST và CANCEL.
- Chế độ ON/OFF: nút bấm ở đầu cần gạt, tiếp điểm khơng có giá trị điện trở. - Chế độ CANCEL: gạt lên hướng về phía vơ-lăng, giá trị điện trở là khoảng 418Ω. - Chế độ SET/COAST: gạt xuống, giá trị điện trở khoảng 198Ω.
- Chế độ RES/ACC: gạt lên về phía trước xe, giá trị điện trở khoảng 68Ω.
Sau khi đo các giá trị điện trở của các chế độ, tiến hành thu thập tín hiệu của cụm công tắc để cung cấp dữ liệu cho phần lập trình. Thiết kế sơ đồ mạch điện và vị trí lắp đặt cụm cơng tắc điều khiển trên xe điện ZERO.
51
4.1.2. Board Arduino Mega 2560 và IC hạ áp dùng LM2596
Hình 4.3. Board Arduino Mega 2560
Board Arduino Mega 2560 R3 là mạch xử lý chính của hệ thống. Sử dụng Board Arduino Mega 2560 có lợi thế hơn rất nhiều so với Board Arduino UNO thông thường. Với mục đích sử dụng nhiều chân để thu thập tín hiệu đầu vào, ngoại vi và bộ nhớ nhiều hơn, giúp việc xử lý nhiều thơng tin tín hiệu được hiệu quả hơn.
Hình 4.4. Module hạ áp DC-DC LM2596 3A
Để bảo vệ mạch Arduino Mega 2560 hoạt động ổn định và an toàn, mạch hạ áp LM2596 3A được dùng để giảm nguồn 12V DC của xe xuống 9V DC trước khi đưa nguồn cấp vào Board Arduino bằng giắc trịn. IC LM358 có điện áp đầu vào khoảng 3V-30V DC và có thể điều chỉnh điện áp đầu ra từ 1.5V-30V DC với dòng đáp ứng tối đa là 3A, công suất 15W.
52
4.1.3. Cảm biến tốc độ động cơ xe điện ZERO
Hình 4.5. Cảm biến điện từ Hình 4.6. Cảm biến tốc độ trên xe điện ZERO Xe điện ZERO sử dụng cảm biến điện từ làm cảm biến tốc độ, với nguyên lý khi có Xe điện ZERO sử dụng cảm biến điện từ làm cảm biến tốc độ, với nguyên lý khi có Xe điện ZERO sử dụng cảm biến điện từ làm cảm biến tốc độ, với nguyên lý khi có kim loại đi qua đầu cảm biến, tín hiệu trả về là tín hiệu điện áp được hiển thị dưới dạng xung hình Sin. Thơng qua thiết bị đo HANTEK PC-OSCILLOSCOPE 6022BE, dùng để đo và hiển thị tín hiệu lên máy tính qua cổng USB, thiết bị đo Hantek có 2 cổng đo tín hiệu Analog Oscilloscope với tần số tối đa 20MHz, độ chính xác cao, cùng phần mềm Hantek6022BE hỗ trợ hiển thị độ thị, tín hiệu đã đo được hiển thị bên dưới
53
Hình 4.8 Tín hiệu từ cảm biến tốc độ ở dải tốc độ cao
4.1.4. Cảm biến vị trí bàn đạp tăng tốc
Cảm biến vị trí bàn đạp tăng tốc trên xe điện ZERO sử dụng loại tuyến tính 3 chân: 5V, GND và chân tín hiệu. Bên cạnh cảm biến có kết hợp một công tắc bàn đạp tăng tốc loại cơng tắc hành trình 3 chân.
Hình 4.9. Sơ đồ cảm biến vị trí bàn đạp tăng tốc trên xe điện ZERO
Khi chưa tác động bàn đạp tăng tốc, giá trị điện trở ở hai đầu 5V và GND vào khoảng 2kΩ. Đo giá trị điện trở giữa chân tín hiệu và chân 5V, điện trở khi chưa tác động bàn đạp tăng tốc khoảng 2kΩ, điện trở càng giảm khi bàn đạp tăng tốc càng được tác động sâu, đồng nghĩa điện áp ở chân tín hiệu cũng tăng tuyến tính từ 0V đến gần 5V.
54 Hình 4.10. Cảm biến vị trí và cơng tắc bàn đạp tăng tốc xe ZERO
4.2. Thiết kế mạch điện
4.2.1. Các công đoạn thực hiện
Dựa theo nguyên lý hoạt động của hệ thống Cruise Control và kết cấu của xe điện ZERO. - Thiết kế mạch đo tốc độ động cơ
- Thiết kế mạch xử lý tín hiệu cảm biến vị trí bàn đạp tăng tốc.
- Thiết kế mạch tiếp nhận tín hiệu từ các công tắc, và cụm công tắc điều khiển - Thiết kế các mạch phụ
4.2.2 Thiết kế mạch điện
4.2.2.1. Mạch đo tốc độ động cơ
Hình 4.11 Mạch đo tốc độ động cơ
55 Bảng 4.1. Bảng lắp dây mạch đo tốc độ động cơ
Tên chân Vị trí chân Màu dây nối Vị trí chân nối tới
` J1
Chân 1 Xanh lá Chân GND Arduino
Chân 2 Vàng Chân 5V Arduino
Chân 3 Xám Chân 3.3V Arduino
J2
Chân 1 Xanh lá Chân 2 Arduino(Digital) Chân 2 Xanh dương Dây âm cảm biến tốc độ Chân3 Vàng Dây dương cảm biến tốc độ
Nguyên lý hoạt động của mạch như sau: khi có tín hiệu từ cảm biến tốc độ gửi tới, qua điện trở R1 và tụ C1 để lọc nhiễu và làm phẳng tín hiệu hơn từ cảm biến, sau đó, tín hiệu sẽ được đưa vào IC 74HC14. Diode Zener D3 có tác dụng ổn định nguồn đầu vào IC 74HC14 không vượt quá 5.1V, bảo vệ IC 74HC14 hoạt động ổn định. IC 74HC14 cho phép chuyển trạng thái khi điện áp vượt ngưỡng điện áp cho phép, chỉ cần cấp điện áp đầu vào, đầu ra thu được tín hiệu đảo, đồng thời loại được tạp nhiễu. Dựa theo nguyên lý khi điện áp đầu vào dưới ngưỡng điện áp Vcc cung cấp cho IC, thì điện áp thu được là Vcc, khi điện áp đầu vào bằng Vcc thì điện áp thu được là 0V[6]. Tín hiệu thu được sẽ được gửi về hộp điều khiển của hệ thống Cruise Control để tiến hành xử lý
56 Hình 4.13. Tín hiệu thu được sau khi qua mạch chuyển xung ở dải tốc độ cao
4.2.2.2. Mạch xử lý tín hiệu cảm biến vị trí bàn đạp tăng tốc
57 Bảng 4.2. Bảng lắp dây mạch xử lý tín hiệu cảm biến vị trí bàn đạp tăng tốc
Tên chân Vị trí chân Màu dây Vị trí chân nối tới
J5
Chân 1 Đen Chân âm cảm biến vị trí bàn đạp tăng tốc Chân 2 Vàng Chân 5V cảm biến vị trí bàn đap ga
J6 Chân 1 Đỏ Chân dương IC hạ áp
Chân 2 Đen Chân âm IC hạ áp
J7 Chân 1 Xanh lá Chân 11 Arduino(PWM)
Chân 2 Cam Chân 26 Arduino(Digital)
J8
Chân 1 Đỏ Chân tín hiệu
cảm biến vị trí bàn đạp tăng tốc phía dưới
Chân 2 Xám Chân A0 Arduino
Chân 3 Xanh dương Chân tín hiệu
cảm biến vị trí bàn đạp tăng tốc phía trên
J11
Chân 1 Xanh dương Dương công tắc bàn đạp tăng tốc Chân 2 Xanh dương Âm cơng tắc bàn đạp tăng tốc
Chân 3 Tím Chân 28 Arduino(Digital)
Khi bật công tắc tổng của hộp điều khiển hệ thống Cruise Control. Các khối Relay trong mạch này sẽ được kích hoạt nhờ vào tín hiệu gửi tới các Transistor. Mỗi khối Relay sẽ thực hiện một chức năng riêng:
- Khi Transistor Q1 được kích hoạt nhờ vào tín hiệu gửi tới từ công tắc tổng, các Relay gồm Relay1, Relay2 và Relay3 sẽ hoạt động. Relay1 kích hoạt, dẫn tín hiệu từ cảm biến vị trí bàn đạp tăng tốc gửi về Arduino Mega 2560 để cung cấp dữ liệu cho phần lập trình. Relay2 và Relay3 kích hoạt để cấp nguồn cho IC LM358.
- Khi người điều khiển thiết lập điều khiển tốc độ xe bằng hệ thống Cruise Control đồng thời thả chân khỏi bàn đạp tăng tốc, lúc này Arduino sẽ xuất tín hiệu gửi tới Transistor Q3, Transistor Q3 sẽ kích hoạt Relay4 dẫn tín hiệu điện áp từ IC LM358 gửi về hộp xử lý thông tin của xe. IC LM358 sẽ thu thập tín hiệu từ Arduino thông qua các thao tác của người điều khiển và xuất tín hiệu tương ứng đến hộp xử lý thông tin của xe.
- Công tắc bàn đạp tăng tốc có chức năng dẫn tín hiệu đến hộp xử lý thơng tin để xe có thể hoạt động. Vì vậy, khi người điều khiển đang thả chân khỏi bàn đạp tăng tốc để điều
58 khiển tốc độ xe bằng hệ thống Cruise Control, điều này làm cho tín hiệu cơng tắc bàn đạp tăng tốc trên xe bị ngắt. Vì thế, Relay5 có tác dụng thay thế tín hiệu cơng tắc bàn đạp tăng tốc khi hệ thống Cruise Control đang hoạt động và sẽ được kích hoạt nhờ tín hiệu từ Arduino gửi tới Transistor Q5. Mặt khác, Relay5 sẽ ngắt và nhường quyền điều khiển lại cho người lái khi nhận thấy có tín hiệu người điều khiển muốn kiểm sốt tốc độ bằng bàn đạp tăng tốc.
Hình 4.15. Sơ đồ chân IC LM358
Linh kiện giữ vai trò quan trọng trong mạch xử lý tín hiệu cảm biến vị trí bàn đạp tăng tốc là IC LM358, được sử dụng như một bàn đạp tăng tốc giả định, xuất tín hiệu điện áp để cung cấp cho hộp xử lý thông tin khi hệ thống Cruise Control đang hoạt động và người điều khiển hoàn toàn thả chân ga. Cấu tạo bên trong gồm 2 mạch khuếch đại thuật tốn, tương thích với nhiều loại mạch logic khác nhau. Với ưu điểm bảo vệ quá áp lối ra,