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 LUẬN VĂN THẠC SĨ NGUYỄN TIẾN VŨ NGHIÊN CỨU CHẾ TẠO THIẾT BỊ KIỂM SỐT HÀNH VI NGƯỜI LÁI XE Ơ TƠ NGÀNH: KỸ THUẬT CƠ KHÍ ĐỘNG LỰC – 8520116 SKC008009 Tp Hồ Chí Minh, tháng 10/2022 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 LUẬN ÁN THẠC SĨ NGUYỄN TIẾN VŨ NGHIÊN CỨU CHẾ TẠO THIẾT BỊ KIỂM SOÁT HÀNH VI NGƯỜI LÁI XE Ô TÔ NGÀNH: KỸ THUẬT CƠ KHÍ ĐỘNG LỰC GVHD: PGS.TS ĐỖ VĂN DŨNG Tp Hồ Chí Minh, tháng 10/2022 QUYẾT ĐỊNH GIAO ĐỀ TÀI BIÊN BẢN CHẤM CỦA HỘI ĐỒNG NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN CAN.init_Filt(0, 0, 0x7E8); CAN.init_Filt(1, 0, 0x7E8); CAN.init_Filt(2, 0, 0x7E8); CAN.init_Filt(3, 0, 0x7E8); CAN.init_Filt(4, 0, 0x7E8); CAN.init_Filt(5, 0, 0x7E8); } void sendPid(unsigned char pid) { unsigned char tmp[8] = {0x02, 0x01, pid, 0, 0, 0, 0, 0}; CAN.sendMsgBuf(CAN_ID_PID, 0, 8, tmp); } void docCAN() { unsigned char len = 0; unsigned char buf[8]; if (CAN_MSGAVAIL == CAN.checkReceive()) { CAN.readMsgBuf(&len, buf); if ((buf[0] == 3) && (buf[2] == 0x04)) { LOAD=(unsigned int)buf[3]; } if ((buf[0] == 3) && (buf[2] == 0x05)) { THW=buf[3]; } if ((buf[0] == 4) && (buf[2] == 0x0C)) { tocdoEN=((unsigned int)buf[3]*256+buf[4]); } if ((buf[0] == 3) && (buf[2] == 0x0D)) { 84 tocdoSPD=buf[3]; } if ((buf[0] == 3) && (buf[2] == 0x0E)) { GDLS=buf[3]; } if ((buf[0] == 3) && (buf[2] == 0x0F)) { THA=buf[3]; } if ((buf[0] == 3) && (buf[2] == 0x11)) { VTA=(unsigned int)buf[3]; } if ((buf[0] == 4) && (buf[2] == 0x42)) { DIENAP=((unsigned int)buf[3]*256+buf[4]); } if ((buf[0] == 4) && (buf[2] == 0x5E)) { INJ=((unsigned int)buf[3]*256+buf[4]); } } } #include "Sgiaotiep.h" //zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz void setup() { #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin(); #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE 85 Fastwire::setup(400, true); #endif Serial.begin(38400); accelgyro.initialize(); while (CAN_OK != CAN.begin(CAN_1000KBPS)) {delay(100);} set_mask_filt(); tocdoSPD=20; } //zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz void loop() { tdtruoc = tdhientai; while ((tdhientai) < (tdtruoc+20)) {tdhientai = millis();} tddotruoc=tdhientai; demck++; //============================================== docCAN(); demguiCAN=demCAN; if(++demCAN>15) {demCAN=0;} if(demCAN==0) {sendPid(0x0C);} if(demCAN==1) {sendPid(0x04);} if(demCAN==2) {sendPid(0x0D);} if(demCAN==3) {sendPid(0x05);} if(demCAN==4) {sendPid(0x0C);} if(demCAN==5) {sendPid(0x11);} if(demCAN==6) {sendPid(0x0D);} if(demCAN==7) {sendPid(0x0F);} if(demCAN==8) {sendPid(0x0C);} 86 if(demCAN==9) {sendPid(0x0E);} if(demCAN==10) {sendPid(0x0D);} if(demCAN==11) {sendPid(0x42);} if(demCAN==12) {sendPid(0x0C);} if(demCAN==13) {sendPid(0x11);} if(demCAN==14) {sendPid(0x0D);} if(demCAN==15) {sendPid(0x5E);} //wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // Sayxintr=Sayxin; if (gz>(nguongGzsay)) {Sayxin=2; } else if (gz10) { if(gz>nguongGzRe) {cbReGz=1; huyCanhbaoReGy=2000/ckxl;} else if(gz0) {huyCanhbaoReGy ;} // if(tocdoSPD>10) { if(ay>nguongAyRe) {cbReAy=1; huyCanhbaoReAy=2000/ckxl;} else if(ay0) {huyCanhbaoReAy ;} // if(tocdoSPD>10) { if(ax>nguongAxPhanh) {cbPhanh=1; huyCanhphanh=2000/ckxl;} else if(ax0) {huyCanhphanh ;} //============================================== 88 HANHVI=cbSay+(cbPhanh>8; S2bytegui[15]=ayDuong; S2bytegui[16]=azDuong>>8; S2bytegui[17]=azDuong; S2bytegui[18]=gxDuong>>8; S2bytegui[19]=gxDuong; S2bytegui[20]=gyDuong>>8; S2bytegui[21]=gyDuong; S2bytegui[22]=gzDuong>>8; S2bytegui[23]=gzDuong; S2guibyte(20,0); } if ((demguiCAN&3)==1) { S2bytegui[0]=LOAD; S2bytegui[1]=VTA; S2bytegui[2]=GDLS; S2bytegui[3]=0; 90 S2bytegui[4]=0; S2bytegui[5]=0; S2bytegui[6]=0; S2bytegui[7]=0; S2bytegui[8]=0; S2bytegui[9]=0; S2bytegui[10]=TURN*2+STP; S2bytegui[11]=HANHVI; S2bytegui[12]=axDuong>>8; S2bytegui[13]=axDuong; S2bytegui[14]=ayDuong>>8; S2bytegui[15]=ayDuong; S2bytegui[16]=azDuong>>8; S2bytegui[17]=azDuong; S2bytegui[18]=gxDuong>>8; S2bytegui[19]=gxDuong; S2bytegui[20]=gyDuong>>8; S2bytegui[21]=gyDuong; S2bytegui[22]=gzDuong>>8; S2bytegui[23]=gzDuong; S2guibyte(20,1); } if ((demguiCAN&3)==2) { S2bytegui[0]=tocdoSPD; S2bytegui[1]=0; S2bytegui[2]=GOCLAI>>8; S2bytegui[3]=GOCLAI; GOCLAI++; S2bytegui[4]=0; S2bytegui[5]=0; S2bytegui[6]=0; S2bytegui[7]=0; S2bytegui[8]=0; S2bytegui[9]=0; S2bytegui[10]=TURN*2+STP; S2bytegui[11]=HANHVI; S2bytegui[12]=axDuong>>8; S2bytegui[13]=axDuong; S2bytegui[14]=ayDuong>>8; S2bytegui[15]=ayDuong; S2bytegui[16]=azDuong>>8; S2bytegui[17]=azDuong; S2bytegui[18]=gxDuong>>8; S2bytegui[19]=gxDuong; S2bytegui[20]=gyDuong>>8; S2bytegui[21]=gyDuong; S2bytegui[22]=gzDuong>>8; S2bytegui[23]=gzDuong; S2guibyte(20,2); } 91 if ((demguiCAN&3)==3) { S2bytegui[0]=THW; S2bytegui[1]=THA; S2bytegui[2]=DIENAP>>8; S2bytegui[3]=DIENAP; S2bytegui[4]=INJ>>8; S2bytegui[5]=INJ; S2bytegui[10]=TURN*2+STP; S2bytegui[11]=HANHVI; S2bytegui[12]=axDuong>>8; S2bytegui[13]=axDuong; S2bytegui[14]=ayDuong>>8; S2bytegui[15]=ayDuong; S2bytegui[16]=azDuong>>8; S2bytegui[17]=azDuong; S2bytegui[18]=gxDuong>>8; S2bytegui[19]=gxDuong; S2bytegui[20]=gyDuong>>8; S2bytegui[21]=gyDuong; S2bytegui[22]=gzDuong>>8; S2bytegui[23]=gzDuong; S2guibyte(20,3); } } } 92 NỘI DUNG BÀI BÁO 93 94 95 96 97 S K L 0