4. Phương pháp và phương tiện nghiên cứu
6.2. Hướng phát triển
- Trang bị hệ thống dầu giống như thực tế để cung cấp dầu cho motor tránh motor bị khô và kẹt.
- Xây dựng phần mềm điều khiển như Lapview, Matlap Simulink và mạch giao tiếp để giả lập xung tín hiệu cảm biến để điều khiển phanh ABS theo mong muốn của mình sát với điều kiện thực tế (các thông số lực cản lăn, lực cản gió, kéo rơ moóc, các trường hợp trượt khi vào cua gấp …).
- Xây dựng một bài giảng chuẩn và chi tiết hơn về hệ thống phanh ABS điều khiển bằng phần mềm để sinh viên có thể dễ dàng tiếp cận và phát triển thêm.
112
TÀI LIỆU THAM KHẢO
[1]Cộng đồng Arduino Việt Nam : http://arduino.vn/ . [2]Diễn đàn Otohui.com : https://www.oto-hui.com/ .
[3]Tài liệu đào tạo kỹ thuật viên chuẩn đoán Toyota, “ Hệ thống phanh ABS”. [4] Carmin - 2000 TOYOTA LEXUS RX300 – Brake – ABS.
[5] PGS-TS ĐỖ VĂN DŨNG: HỆ THỐNG ĐIỆN THÂN XE VÀ ĐIÊU KHIỂN TỰ ĐỘNG TRÊN Ô TÔ TP.HCM – 2007.
[6] Arduino : https://www.arduino.cc/
[7] Hình ảnh sơ đồ các van và bộ chấp hành: https://www.google.com/ [8] Tài liệu Lý thuyết Ô tô – Th.S ĐẶNG QUÝ.
113
PHỤ LỤC Code nạp cho Arduino
#include<TimerOne.h> // thư viện TimerOne #include <Wire.h> // thư viện Wire.h
#include <LiquidCrystal_I2C.h> thư viện LiquidCrystal_I2C.h
LiquidCrystal_I2C lcd(0x3F,16,2); // thiết lập địa chỉ cho LCD là 0x3F float T,xung; // tạo biến T,xung
int tocdo=0; // tạo biến tốc độ ban đầu là 0 float Pi = 3.14 ;
float d = 0.51; // tạo biến đường kính lốp float ms = 0.0; void Demxung(); void SpeedM(); void setup(){ lcd.begin(); lcd.backlight(); lcd.setCursor(4,0); lcd.print("ANTI-LOCK"); lcd.setCursor(1,1); // in chữ ra màn hình LCD lcd.print("BRAKING SYSTEM"); delay(3000); lcd.clear(); lcd.setCursor(0,0); lcd.print("SVTH: N.H.MINH"); lcd.setCursor(6,1); lcd.print("N.K.TUAN"); delay(2000); lcd.clear(); lcd.setCursor(0,0);
114 lcd.print("Speed:");
lcd.setCursor(12,0); lcd.print("km/h");
pinMode(2,INPUT_PULLUP); // thiết lập chân 2 trên arduino là kênh A pinMode(3,INPUT_PULLUP); // thiết lập chân 3 trên arduino là kênh B //TCCR2B = TCCR2B & B11111000 | B00000001;
// tocdo=0; // T=0.01;
Serial.begin(9600);
attachInterrupt(0,Demxung,FALLING); // thực hiện chương trình ngắt Timer1.initialize(1000000); //don vi us
Timer1.attachInterrupt(SpeedM); // bắt đầu chương trình ngắt 1 }
int time1= 0; int time2 = 0;
void loop(){ // bắt đầu vòng lặp if(millis() - time1 > 300) {
//if (tocdo < 10000) lcd.print(" ");
if (tocdo < 1000) { lcd.print(" "); delay(10);} else if (tocdo < 100) {lcd.print(" ");delay(10);} else if (tocdo < 10) {lcd.print(" "); delay(10);} lcd.setCursor(6,1); //lcd.print( tocdo,DEC); //time1 = millis(); } if(millis() - time2 > 500) { lcd.setCursor(6,0);
115 lcd.print( ms,2);
time2 = millis(); }
}
void Demxung() // bắt đầu vòng lặp chương trình đếm xung encoder { xung++; } void SpeedM() { detachInterrupt(0); Timer1.detachInterrupt(); tocdo=abs((xung/1400)*60); // tính tốc độ xe ms = abs(((xung/1400)*Pi *d)*3.6); // tính tốc độ xe ra km/h xung =0 ; // quay trở lại xung bằng 0
attachInterrupt(0,Demxung,FALLING); Timer1.attachInterrupt(SpeedM);