飞思卡尔智能车光电资料

合集下载

第九届飞思卡尔智能车竞赛材料清单V3.0

第九届飞思卡尔智能车竞赛材料清单V3.0

本材料表一共有9页,每个宝贝后面都附带有链接第九届飞思卡尔智能车竞赛光电组材料表(XS128)序号名称单价(元)数量总计(元)链接1MC9S12XS128最小系统(16位)78.75178.75详情2BDM下载器(集成USB转串口)52.5152.5详情3线性CCD模块1201120详情4偏振片15115详情5线性CCD安装支架48148详情6碳素杆(10mm*8mm*500mm)12112详情7舵机支架40140详情8舵机转向舵盘39.6139.6详情9BTN7971电机驱动(4合1)1261126详情10BTN7971驱动芯片17.29469.16详情11LM2940电源芯片428详情12LM2940元件包0.320.6详情13200线编码器(单相)128.11128.1详情14编码器支架12112详情15编码器齿轮(B车)15.2115.2详情16OLED显示屏34.3134.3详情17第9届飞思卡尔竞赛指定B车模详情总计第九届飞思卡尔智能车竞赛光电组材料表(K60)序号名称单价(元)数量总计(元)链接1MK60DN512ZVLL10最小系统(32位)110.71110.7详情2OSJTAG下载器(集成USB转串口)84184详情3线性CCD模块1201120详情4偏振片15115详情5线性CCD安装支架48148详情6碳素杆(10mm*8mm*500mm)12112详情7舵机支架40140详情8舵机转向舵盘39.6139.6详情9BTN7971电机驱动(4合1)1261126详情10BTN7971驱动芯片17.29469.16详情11LM1117-3.3电源芯片428详情12LM1117-3.3元件包0.320.6详情13LM2940电源芯片428详情14LM2940元件包0.320.6详情15200线编码器(单相)128.11128.1详情16编码器支架12112详情17编码器齿轮(B车)15.2115.2详情18OLED显示屏34.3134.3详情19第9届飞思卡尔竞赛指定B车模详情总计第九届飞思卡尔智能车竞赛光电组材料表(MCF52255)序号名称单价(元)数量总计(元)链接1MCF52255最小系统(32位)110.71110.7详情2BDM下载器84184详情3线性CCD模块1201120详情4偏振片15115详情5线性CCD安装支架48148详情6碳素杆(10mm*8mm*500mm)12112详情7舵机支架40140详情8舵机转向舵盘39.6139.6详情9BTN7971电机驱动(4合1)1261126详情10BTN7971驱动芯片17.29469.16详情11LM1117-3.3电源芯片428详情12LM1117-3.3元件包0.320.6详情13LM2940电源芯片428详情14LM2940元件包0.320.6详情15200线编码器(单相)128.11128.1详情16编码器支架12112详情17编码器齿轮(B车)15.2115.2详情18OLED显示屏34.3134.3详情19第9届飞思卡尔竞赛指定B车模详情总计711.1元第九届飞思卡尔智能车竞赛摄像头组材料表(XS128)序号名称单价(元)数量总计(元)链接1MC9S12XS128最小系统(16位)78.75178.75详情2BDM下载器(集成USB转串口)52.5152.5详情3摄像头模块OV76201201120详情4偏振片15115详情5摄像头安装支架48148详情6碳素杆(10mm*8mm*500mm)12112详情7MMA7361加速度传感器模块(三轴)21121详情8ENC-03MB陀螺仪模块(双轴)75175详情9BTN7971电机驱动(4合1)1261126详情10BTN7971驱动芯片17.29469.16详情11LM2940电源芯片428详情12LM2940元件包0.320.6详情13200线编码器(双相)147.251147.25详情14编码器支架12112详情15编码器齿轮(D车)15.2115.2详情16OLED显示屏34.3134.3详情17第9届飞思卡尔竞赛指定D车模详情18第9届飞思卡尔竞赛指定E车模详情总计765.6元第九届飞思卡尔智能车竞赛摄像头组材料表(K60)序号名称单价(元)数量总计(元)链接1MK60DN512ZVLL10最小系统(32位)110.71110.7详情2OSJTAG下载器(集成USB转串口)84184详情3摄像头模块OV76201201120详情4偏振片15115详情5摄像头安装支架48148详情6碳素杆(10mm*8mm*500mm)12112详情7MMA7361加速度传感器模块(三轴)21121详情8ENC-03MB陀螺仪模块(双轴)75175详情9BTN7971电机驱动(4合1)1261126详情10BTN7971驱动芯片17.29469.16详情11LM1117-3.3电源芯片428详情12LM1117-3.3元件包0.320.6详情13LM2940电源芯片428详情14LM2940元件包0.320.6详情15200线编码器(双相)147.251147.25详情16编码器支架12112详情17编码器齿轮(D车)15.2115.2详情18OLED显示屏34.3134.3详情19第9届飞思卡尔竞赛指定D车模详情20第9届飞思卡尔竞赛指定E车模详情总计829.05元第九届飞思卡尔智能车竞赛摄像头组材料表(MCF52255)序号名称单价(元)数量总计(元)链接1MCF52255最小系统(32位)110.71110.7详情2BDM下载器84184详情3摄像头模块OV76201201120详情4偏振片15115详情5摄像头安装支架48148详情6碳素杆(10mm*8mm*500mm)12112详情7MMA7361加速度传感器模块(三轴)21121详情8ENC-03MB陀螺仪模块(双轴)75175详情9BTN7971电机驱动(4合1)1261126详情10BTN7971驱动芯片17.29469.16详情11LM1117-3.3电源芯片428详情12LM1117-3.3元件包0.320.6详情13LM2940电源芯片428详情14LM2940元件包0.320.6详情15200线编码器(双相)147.251147.25详情16编码器支架12112详情17编码器齿轮(D车)15.2115.2详情18OLED显示屏34.3134.3详情19第9届飞思卡尔竞赛指定D车模详情20第9届飞思卡尔竞赛指定E车模详情总计序号名称单价(元)数量总计(元)链接1MC9S12XS128最小系统(16位)78.75178.75详情2BDM下载器(集成USB转串口)52.5152.5详情310mH工字电感0.82016详情4 6.8nf电容0.2204详情5LM386运算放大器3412详情6NE5532运算放大器 3.5414详情7干簧管 2.525详情80.3mm漆包线(50米长)15115详情9碳素杆(5cm*3cm*1000mm)10.8110.8详情10碳素杆(6cm*4cm*1000mm)12224详情11碳素杆三通件(垂直) 4.829.6详情12碳素杆三通件(倾斜) 4.829.6详情13舵机支架40140详情14舵机转向舵盘39.6139.6详情15BTN7971电机驱动(4合1)1261126详情16LM2940电源芯片428详情17LM2940元件包0.320.6详情18200线编码器(双相)149.582299.16详情19编码器支架12112详情20编码器齿轮(D车)15.2115.2详情21OLED显示屏34.3134.3详情22第9届飞思卡尔竞赛指定C车模详情总计序号名称单价(元)数量总计(元)链接1MK60DN512ZVLL10最小系统(32位)110.71110.7详情2OSJTAG下载器(集成USB转串口)84184详情310mH工字电感0.82016详情4 6.8nf电容0.2204详情5LM386运算放大器3412详情6NE5532运算放大器 3.5414详情7干簧管 2.525详情80.3mm漆包线(50米长)15115详情9碳素杆(5cm*3cm*1000mm)10.8110.8详情10碳素杆(6cm*4cm*1000mm)12224详情11碳素杆三通件(垂直) 4.829.6详情12碳素杆三通件(倾斜) 4.829.6详情13舵机支架40140详情14舵机转向舵盘39.6139.6详情15BTN7971电机驱动(4合1)1261126详情16BTN7971驱动芯片17.29469.16详情17LM1117-3.3电源芯片428详情18LM1117-3.3元件包0.320.6详情19LM2940电源芯片428详情20LM2940元件包0.320.6详情21200线编码器(双相)149.582299.16详情22编码器支架12112详情23编码器齿轮(D车)15.2115.2详情24OLED显示屏34.3134.3详情25第9届飞思卡尔竞赛指定C车模详情总计第九届飞思卡尔智能车竞赛电磁组材料表(MCF52255)序号名称单价(元)数量总计(元)链接1MCF52255最小系统(32位)110.71110.7详情2BDM下载器84184详情310mH工字电感0.82016详情4 6.8nf电容0.2204详情5LM386运算放大器3412详情6NE5532运算放大器 3.5414详情7干簧管 2.525详情80.3mm漆包线(50米长)15115详情9碳素杆(5cm*3cm*1000mm)10.8110.8详情10碳素杆(6cm*4cm*1000mm)12224详情11碳素杆三通件(垂直) 4.829.6详情12碳素杆三通件(倾斜) 4.829.6详情13舵机支架40140详情14舵机转向舵盘39.6139.6详情15BTN7971电机驱动(4合1)1261126详情16BTN7971驱动芯片17.29469.16详情17LM1117-3.3电源芯片428详情18LM1117-3.3元件包0.320.6详情19LM2940电源芯片428详情20LM2940元件包0.320.6详情21200线编码器(双相)149.582299.16详情22编码器支架12112详情23编码器齿轮(C车)15.2115.2详情24OLED显示屏34.3134.3详情25第9届飞思卡尔竞赛指定C车模详情总计。

飞思卡尔智能车 智能车源代码光电组(有注解)

飞思卡尔智能车 智能车源代码光电组(有注解)

智能车源代码光电组(有注解)#include <hidef.h> /* common defines and macros */#include <mc9s12dg256.h> /* derivative information */#include "math.h"#include "PWM.h"#include "A TD.h"#include "LQprintp.h"#pragma LINK_INFO DERIV A TIVE "mc9s12dg256b"unsigned int i = 0;unsigned int j = 0;unsigned int t = 0;byte ad_value[13];uchar data[13];int sum = 0;uchar start_flag = 0;uchar num = 0;uchar lw=0;unsigned int per = 65530;int SPWM = 0;int L_SPWM = 0;unsigned int SPmax = 1000;int MPWM = 0;uchar current_corrd = 0;static unsigned int mem_num = 0;//***********************PID**************** ***************static unsigned int Kp=25;static unsigned int Kp2=60;static unsigned int Ki=9;static unsigned int Kd=30;static unsigned int rKp=100;static unsigned int rKp2=60;static unsigned int rKi=0;static unsigned int rKd=60;unsigned short E = 5;unsigned char q = 1;int Mp = 0;int Mi = 0;int Md = 0;int Mp2 = 0;int P_Speed = 0;int L_u[3];//****************************************** ****************//***********************舵机PID变量**********************static unsigned int s_sKp=35; //直道PID的P值static unsigned int s_sKp2=0; //直道PID 的二阶P值static unsigned int s_sKi=0; //直道PID的I值static unsigned int s_sKd=10; //直道PID的D值//****用于防止PID溢出******unsigned short s_sE = 5;unsigned char s_sq = 1;//*************************//****分别存放P I D 值*****int s_sMp = 0;int s_sMi = 0;int s_sMd = 0;int s_sMp2 = 0;//*************************int sL_u[3]; //存放前3次理论速度与实际速度的差值int last_corrd[3][10] ={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0},{0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};//****************************************** ***************//*********************PID调试中断**************************unsigned char cp = 0;unsigned char ci = 0;unsigned char cd = 0;unsigned int search_PACN10;unsigned int np = 0;unsigned int sp[500];//****************************************** ****************//*********************存储前20点的数据*********************int L_num[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};int sum_corrd = 0;int wb = 0; //记录当前状态黑为0,白为1;//****************************************** ****************//********************红外滤波*****************************int corrd[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};int T_corrd = 0;int is_white = 0;int numb = 0;//****************************************** ****************//***********************数据统计***************************int corrd_sate[23] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};int SPWM_sate[15] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};int MPWM_sate[11] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; uchar corrd_time[512];uchar SPWM_time[512];uchar MPWM_time[512];uchar PACN_time[512];//****************************************** ****************void setbusclock(void){CLKSEL=0X00; //disengage PLL to systemPLLCTL_PLLON=1; //turn on PLL SYNR=1;REFDV=1;//pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;_asm(nop); //BUS CLOCK=16M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}void Dly_ms(int ms){int ii,jj;if (ms<1) ms=1;for(ii=0;ii<ms;ii++)for(jj=0;jj<2670;jj++);//busclk:16MHz--1ms}static void SCI_Init(void){SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enableSCI0BDH=0x00; //出口波特率为9600SCI0BDL=0x68;//SCI0BDL=busclk/(16*SCI0BDL)//busclk 8MHz, 9600bps,SCI0BDL=0x34//busclk 16MHz, 9600bps,SCI0BDL=0x68//busclk 24MHz, 9600bps,SCI0BDL=0x9C} //busclk 32MHz, 9600bps,SCI0BDL=0xD0static void IOC_Init(void){ PERT = 0XFF;//PPST=0XFF;DDRT=0XFe;PBCTL=0X50;//PT0 PIN,PACN10 16BIT,FALLing edge,NOT INTERRUPT//PACN0=200;//PACN1=0xFF;TCTL4=0x01;//40表示ICx禁止, 1表示上升沿, 2表示下降沿, 3表示任何沿//TIE =0x00;//每一位对应相应通道中断允许,0表示禁止中断TIOS =0xfe;//每一位对应通道的: 0输入捕捉,1输出比较}unsigned int get_Speed(){int Speed;Speed = PACN10;PACN10 = 0;return Speed;}void s_PID_MPWM(){L_u[2] = L_u[1];L_u[1] = L_u[0];L_u[0] = P_Speed - search_PACN10;Mp = Kp * L_u[0];Mi = Mi + Ki * L_u[0];Md = Kd * (L_u[0] - 2 * L_u[1] + L_u[2]);Mp2 = Kp2 * (L_u[0] - L_u[1]);if(((Ki * L_u[0]) > E)||((Ki * L_u[0]) < -E)) q = 0; else q = 1;MPWM = MPWM + Mp + q * Mi + Md + Mp2;if(MPWM > 1000) MPWM = 1000;if(MPWM < -1000) MPWM = -1000;Set_MPWM(MPWM);}void r_PID_MPWM(){L_u[2] = L_u[1];L_u[1] = L_u[0];L_u[0] = P_Speed - search_PACN10;Mp = rKp * L_u[0];Mi = Mi + rKi * L_u[0];Md = rKd * (L_u[0] - 2 * L_u[1] + L_u[2]);Mp2 = rKp2 * (L_u[0] - L_u[1]);if(((rKi * L_u[0]) > E)||((rKi * L_u[0]) < -E)) q = 0; else q = 1;MPWM = MPWM + Mp + q * Mi + Md + Mp2;if(MPWM > 1000) MPWM = 1000;if(MPWM < -1000) MPWM = -1000;Set_MPWM(MPWM);}//*******************舵机PID控制函数*************************void s_PID_SPWM(){sL_u[2] = sL_u[1];sL_u[1] = sL_u[0];sL_u[0] = ((current_corrd+last_corrd[0][1]) - (last_corrd[0][2]+last_corrd[0][3]))/2;//*********计算PID值***********if(sL_u[0]<20 && sL_u[0]>-20){s_sMp = s_sKp * sL_u[0];s_sMi = s_sMi + s_sKi * sL_u[0];s_sMd = s_sKd * (sL_u[0] - 2 * sL_u[1] + sL_u[2]);s_sMp2 = s_sKp2 * (sL_u[0] - sL_u[1]);//*****************************//***********I项溢出防止*******if(((s_sKi * sL_u[0]) > s_sE)||((s_sKi * sL_u[0]) < -s_sE)) s_sq = 0;else s_sq = 1;//*****************************SPWM = SPWM + s_sMp + s_sq * s_sMi + s_sMd + s_sMp2;//*********PWM溢出防止*********if(SPWM > 70) SPWM = 70;if(SPWM < -70) SPWM = -70;//*****************************}else sL_u[0] = sL_u[1];Set_SPWM(SPWM);}//****************************************** ****************void show_SPWM_data(){for(j = 0; j < 15; j++){printp("%10d", SPWM_sate[j]);}}void show_MPWM_data(){for(j = 0; j < 11; j++){printp("%10d", MPWM_sate[j]);}}void show_corrd_data(){for(j = 0; j < 23; j++){printp("%6d", corrd_sate[j]);}}void show_corrd_time(){for(j = 0; j < 512; j++){printp("%c", corrd_time[j]);}}void show_SPWM_time(){for(j = 0; j < 512; j++){printp("%c", SPWM_time[j]);}}void show_MPWM_time(){for(j = 0; j < 512; j++){printp("%c", MPWM_time[j]);}}void show_PACN_time(){for(j = 0; j < 512; j++){printp("%c", PACN_time[j]);}}void main(void) {/* put your own code here */setbusclock();SCI_Init();AD_Init();IOC_Init();Ini_PWM();EnableInterrupts;for(;;){Dly_ms(10);//*************红外滤波*************************for(j=0; j<10; j++){adc_get(ad_value);for(i = 1; i<12; i++){if(ad_value[i]>=160){data[i] = 1;num = num + 1;}else data[i] = 0;sum = sum + data[i] * 2*i;//printp("%10d", data[i]);}if(num == 0){corrd[j] = -1;}else{corrd[j] = sum/num;}sum = 0;num = 0;}is_white = 0;for(i=0;i<10;i++){if(corrd[i] < 0){is_white++;}for(j=i;j<10;j++){T_corrd = corrd[j];corrd[j] = corrd[i];corrd[i] = T_corrd;}}if(is_white > 6){numb = 0;}sum = 0;j = 0;for(i=3; i<8; i++){if(corrd[i] > -1){sum += corrd[i];j++;}}if(j!=0){current_corrd = sum/j;numb = j;}L_num[9] = L_num[8];L_num[8] = L_num[7];L_num[7] = L_num[6];L_num[6] = L_num[5];L_num[5] = L_num[4];L_num[4] = L_num[3];L_num[3] = L_num[2];L_num[2] = L_num[1];L_num[1] = L_num[0];L_num[0] = numb;//****************************************************wb = L_num[1]|L_num[2]|L_num[3]|L_num[4]|L_num[5]| L_num[6]|L_num[7]|L_num[8]|L_num[9];if(numb == 0){DDRB = 0x80;if(search_PACN10 > 10 && wb>0){P_Speed = 20;if(lw == 0){SPWM = -70;}else{SPWM = 72;}//if(sum_corrd<220&&sum_corrd>-220)Set_MPWM(0);// else// Set_MPWM(700);}else{P_Speed = 20;if(lw == 0){SPWM = -70;}else{SPWM = 72;}Set_MPWM(1000);}//Set_MPWM(0);}else{DDRB = 0x00;// printp("%d ", current_corrd);// if(PTJ & 0x80) Set_MPWM(0);//elseif(wb == 0){Set_MPWM(1000);}else{switch(current_corrd){case 2: SPWM = -70;P_Speed = 32;r_PID_MPWM();lw = 0;break;case 3: SPWM = -60;P_Speed = 32;r_PID_MPWM();lw = 0;break;case 4: SPWM = -50;P_Speed = 32;r_PID_MPWM();lw = 0;break;case 5: SPWM = -40;P_Speed =32;r_PID_MPWM();lw = 0;break;case 6: SPWM = -30;P_Speed = 32;r_PID_MPWM();lw = 0;break;case 7: SPWM = -25;P_Speed = 32;r_PID_MPWM();lw = 0;break;case 8: SPWM = -20;P_Speed = 32;r_PID_MPWM();lw = 0;break;case 9: SPWM = -15;P_Speed = 32;s_PID_MPWM();lw = 0;break;case 10: SPWM = -10; P_Speed = 32;s_PID_MPWM();lw = 0;break;case 11: SPWM = -5; P_Speed = 32;s_PID_MPWM();lw = 0;break;case 12: SPWM = 0; P_Speed = 32;s_PID_MPWM();break;case 13: SPWM = 5; P_Speed = 32;s_PID_MPWM();lw = 1;break;case 14: SPWM = 10; P_Speed = 32;s_PID_MPWM();lw = 1;break;case 15: SPWM = 15; P_Speed = 32;s_PID_MPWM();lw = 1;break;case 16: SPWM = 20; P_Speed = 32;r_PID_MPWM();lw = 1;break;case 17: SPWM = 25; P_Speed = 32;r_PID_MPWM();lw = 1;break;case 18: SPWM = 30; P_Speed = 32;r_PID_MPWM();lw = 1;break;case 19: SPWM = 40; P_Speed = 32;r_PID_MPWM();lw = 1;break;case 20: SPWM = 50; P_Speed = 32;r_PID_MPWM();lw = 1;break;case 21: SPWM = 60; P_Speed = 32;r_PID_MPWM();lw = 1;break;case 22: SPWM = 70; P_Speed = 32;r_PID_MPWM();lw = 1;break;default: break;}//Set_MPWM(500);}}last_corrd[0][3] = last_corrd[0][2];last_corrd[0][2] = last_corrd[0][1];last_corrd[0][1] = last_corrd[0][0];last_corrd[0][0] = current_corrd;corrd_sate[current_corrd]++;SPWM_sate[SPWM/10+7]++;MPWM_sate[MPWM/10]++;corrd_time[t]=current_corrd;SPWM_time[t]=SPWM+70;MPWM_time[t]=(MPWM+1000)/10;s_PID_SPWM();//Set_SPWM(SPWM);//Set_MPWM(500);search_PACN10 = PACN10;//printp("%10d", search_PACN10);PACN_time[t]=search_PACN10;PACN10 = 0;sum_corrd = 0;sum = 0;start_flag = 0;num = 0;t++;if(t==512){MPWM=0;for(;;);}} /* wait forever *//* please make sure that you never leave this function */}void interrupt 20 SCI0RX(void) {byte result,temp;DisableInterrupts;temp=SCI0SR1; /*clear flag*/result=SCI0DRL;if(result=='s'||result=='S') show_SPWM_data();if(result=='M'||result=='m') show_MPWM_data(); if(result=='c'||result=='C') show_corrd_data();if(result=='1'||result=='!') show_corrd_time();if(result=='2'||result=='@') show_SPWM_time();if(result=='3'||result=='#') show_MPWM_time();if(result=='4'||result=='$') show_PACN_time();if(result=='a'||result=='A'){MPWM=0;for(;;)EnableInterrupts;;}EnableInterrupts;}。

第五届飞思卡尔智能车大赛华中科技大学光电组技术报告

第五届飞思卡尔智能车大赛华中科技大学光电组技术报告
7.1 智能车主要技术参数 ................................................................................................. 28 7.2 不足与改进 ................................................................................................................. 28 7.3 致谢与总结 ................................................................................................................. 29
第 3 章 电路设计 ............................................................................................ 9
3.1 电路系统框图 ............................................................................................................... 9 3.2 电源部分 ..................................................................................................................... 10 3.3 电机驱动部分 ............................................................................................................. 12 3.4 激光传感器 ................................................................................................................. 13 3.5 数字传感器 ................................................................................................................. 13

飞思卡尔智能车光电组技术报告

飞思卡尔智能车光电组技术报告

飞思卡尔智能车光电组技术报告报告目录目录1第一章方案设计11、1系统总体方案的选定11、2系统总体方案的设计11、3 小结1第二章智能汽车机械结构调整与优化22、1智能汽车车体机械建模22、2 智能汽车传感器的安装32、2、1速度传感器的安装32、2、2 线形CCD的安装42、2、3车模倾角传感器52、3重心高度调整52、3、1 电路板的安装52、3、2 电池安放52、4 其他机械结构的调整52、5 小结6第三章智能汽车硬件电路设计73、1主控板设计73、1、1电源管理模块73、1、2 电机驱动模块83、1、3 接口模块143、2智能汽车传感器153、2、1 线性CCD传感器153、2、2 陀螺仪153、2、3 加速度传感器163、2、3 编码器173、3 键盘,数码管183、4液晶屏203、5 小结20第四章智能汽车控制软件设计214、1线性CCD传感器路径精确识别技术214、1、1新型传感器路径识别状态分析224、1、2 线性CCD传感器路径识别算法234、2弯道的处理244、2、1弯道策略分析244、3 对速度的闭环控制244、4障碍的处理264、5小结26第五章开发工具、制作、安装、调试过程275、1 开发工具275、2 调试过程27第六章模型车主要参数296、1 智能汽车外形参数296、2 智能汽车技术参数29结论30参考文献32第一章方案设计本章主要介绍智能汽车系统总体方案的选定和总体设计思路,在后面的章节中将整个系统分为机械结构、控制模块、控制算法等三部分对智能汽车控制系统进行深入的介绍和分析。

1、1系统总体方案的选定本届智能汽车大赛光电组比赛对传感器有着严格的规定,用到了线性ccd,但是由于需要镜头成像,所以会带来成像失真,静电干扰严重等问题。

由于平衡车的特殊性,车身在循迹前进的过程中,必须保持车身的平衡。

根据最基本保持车身平衡的基本原理,我们需要知道车身当前的角度和角速度。

因此在保持车身平衡方面,我们确定以加速度计作为角度传感器,陀螺仪作为角速度传感器。

飞思卡尔智能车光电组技术报告

飞思卡尔智能车光电组技术报告

飞思卡尔智能车光电组技术报告一、智能车光电组概述智能车光电组是指智能车中的关键性能元件——光电传感器集合体。

它能对车辆运动状态、线路、红绿灯等信息进行感知,实现智能驾驶的基础。

智能车光电组主要包括红外线传感器、光耦传感器、光电限位传感器等。

这些传感器通过感知周围环境中的光电信息,将其转化为电信号,再与控制电路进行通信,完成车辆的控制和判断。

二、红外线传感器红外线传感器是智能车光电组中最常用的传感器之一,其主要作用是对赛道上各种异物或者障碍进行探测,从而实现自主避障。

红外线传感器有两种,一种是红外线避障传感器,主要检测前方是否有障碍物。

另一种是寻迹传感器,主要检测车辆行进轨迹及车轮边界。

这两种传感器都通过发射一束红外线,然后检测红外线反射信号的强弱,来判断当前道路状态。

智能车中多数采用两种红外线传感器的组合,一个用于永久性突出物体的检测和避障功能,一个用于寻迹,检测当前赛道行驶的状态。

这种组合方案在实际使用中既能够减小了智能车的体积,同时也能够同时满足避障和寻迹两种功能的需求。

三、光耦传感器光耦传感器主要是测量霍尔电压,电容电压,电阻电压等物理量,全局范围内掌握智能车行驶的状态,构成智能车控制系统的重要部分。

通过对各种物理量的感应,对智能车进行动态实时控制。

如针对车速问题,可以采用霍尔电压测量方法,对车辆运动状态进行简单的判断。

智能车中采用光电传感器和电路配合的方法,还可以实现车辆行驶过程中的速度随时控制和加速度调整。

四、光电限位传感器光电限位传感器是一种可以控制智能车极限运动状态的传感器。

传感器通过实时控制智能车运动状态,避免车辆因超出极限而出现事故。

光电限位传感器一般分为三种,分别是机械限位传感器、磁性限位传感器和光电限位传感器。

传感器固定在车架上,在车辆行驶过程中限定车辆的行驶限度,从而确保车辆的安全性。

五、结论智能车光电传感器组是智能车控制系统中的重要组成部分。

它通过对周围环境的感知和探测来确保车辆的安全和自主导航。

飞思卡尔智能车光电资料

飞思卡尔智能车光电资料

飞思卡尔智能车光电资料概述飞思卡尔智能车(Smart car)系列是一款基于飞思卡尔公司的光电传感技术的自动驾驶小车。

光电传感技术是利用光电元件将感受到的光信号转化为电信号,并通过处理电信号得到有用的信息。

飞思卡尔智能车光电资料提供了有关自动驾驶小车的光电传感器的详细信息,包括工作原理、技术规格和应用案例等。

工作原理飞思卡尔智能车光电传感器是通过感受周围的光线来实现环境感知和障碍物检测的。

光电传感器通常由发射器和接收器两部分组成,发射器将红外线或其他光束发射出去,接收器则接收到从目标物体反射回来的光线。

通过测量发射光束和接收光束之间的差异,可以判断目标物体的位置、形状和距离等。

光电传感器可以分为两种类型:距离传感器和线路传感器。

距离传感器主要用于测量目标物体与车辆之间的距离,常用于自动驾驶小车的防碰撞系统。

线路传感器主要用于检测车辆行驶的路径,常用于自动驾驶小车的导航系统。

技术规格飞思卡尔智能车光电传感器具有以下技术规格:•工作电压:3.3V•工作电流:10mA•输出信号:数字信号•工作距离:10cm - 100cm•发射角度:60度•接收灵敏度:高于5000Lux应用案例飞思卡尔智能车光电传感器广泛应用于自动驾驶小车的各个方面,包括但不限于以下应用案例:防碰撞系统飞思卡尔智能车光电传感器可以配备在车辆的前部,用于检测前方是否有障碍物。

当传感器检测到前方有障碍物时,会向控制系统发出警告信号,控制系统则会采取相应措施,如减速或避让,以防止碰撞事故的发生。

导航系统飞思卡尔智能车光电传感器可以配备在车辆的底部,用于检测车辆行驶路径。

传感器将红外线发射到地面上的线路上,通过接收反射回来的光线来确定车辆的行驶方向和位置。

导航系统可以根据传感器的信号来控制车辆的行驶轨迹,以实现自动驾驶。

环境感知系统飞思卡尔智能车光电传感器可以配备在车辆的四周,用于感知周围的环境。

传感器可以检测到周围物体的位置、形状和距离等信息,以帮助车辆做出相应的决策,如避让行人或停车等。

飞思卡尔智能车激光资料

飞思卡尔智能车激光资料

飞思卡尔智能车激光调制电路文章开始,自己想先说飞思卡尔智能车光电组的车子越跑越快,大有超越摄像头的架势。

自己参加第五届飞思卡尔智能车大赛获得华北赛区一等奖。

名次并不想说明什么问题,只是想说自己亲自做过,对此有一些看法,在这里与各位分享,希望对大家有用。

光电组要想跑的的快,大的前瞻是必要的,其中的道理也不用我说了。

但是用以往的红外或是其他什么光敏电阻之类的都不能达到要求,最好的选择就是调制激光。

调制激光虽然有很大的优势,但是由于其新,所以相关方面的资料并不多,一些高校更是对此讳莫如深,应为这对于他们来说就是一张非常有价值的底牌,使用调制激光前瞻和抗干扰方面有非常大的优势,所以能够使用调制激光,在起点上已经领先很大一部分了。

虽然调制激光正在不断的普及,但是普及还不够,技术还是掌握在一部分人手里。

不利于智能车整体水平的提高。

自己做光电组的车子,也是从光敏电阻过渡到调制激光,在这里把自己所了解的一些知识和自己的一些见解与大家分享一下。

首先是调制激光的电路图,电路图如下,可以看出电路并不复杂,其中C11为胆电容,容值为1uf,JP11和jp12可以到电子市场买到,单价差不多5元一个,jp11为调制管,jp12为接收管,他们长的差不多,都是三条腿,但是需要注意的是,在购买的时候调制管和激光管一定要买相配的,应为他们之间必须频率必须匹配才可以正常工作。

L11就是激光发射管,用5mw就够了。

图中的OUT1为控制信号,控制激光发射管是否工作,IN1为信号输出,当有光线反射回来也就是激光点照在白色底板上面,IN1输出为低电平,当没有光线返回,也就是激光点照在黑线上,IN1输出为高电平。

调制管和接收管如下图所示,其实调制管也是3只引脚,知识因为第三只引脚无用就剪去了。

图表1 调制管示意图图表2 接收管示意图图表3接收管,有凸点为正面电路很简单,但是不是照着电路把电路连好就大功告成了。

要想有大的前瞻,接收管的安装就有一番学问了。

飞思卡尔智能车光电传感器知识

飞思卡尔智能车光电传感器知识

第三章电路设计方案3.1直流电机驱动电路的设计直流电机的控制一般由单片机的PWM信号来完成,驱动芯片采用飞思卡尔半导体公司的半桥式驱动器MC33886。

PWM频率采用了10K HZ,使用半桥:因为赛车过程中不时用倒车,所以只使用其中的半桥;并且将两个半桥并联,扩大芯片的驱动能力。

如图3.1所示。

图3.1 采用MC33886的直流电机驱动电路3.2液晶模块现场调试时,液晶显示的数值主要有如下几个:1)光电码盘的反馈值2)光电传感器检测到的模拟量的值,通过小板上的8个AD转换,可以显示八路光电传感器检测的值。

方便了在现场的调试。

3.2.1 GDM12864E简介点阵图形型液晶显示模块GDM12864E内嵌ST7920型中文字型点阵LCD控制/驱动器,通过对控制/驱动器写指令,可以显示数字、字母、汉字以及自定义图形。

控制/驱动器ST7920的ROM中包括8192个16×16点的中文字型,以及128个16×8点半宽的数字、字母字型;RAM中包括1个128×64点的软件绘图区域(GDRAM)和4个16×16点的软件造字区域(CGRAM)。

GDM12864E模块共有20个引脚。

1-VSS,系统地;2-VDD,系统电源(+5V);3-VO,显示对比度调节;4-RS,数据/指令寄存器选择信号;5-RW,读/写模块数据选择信号;6-E,使能信号端,上升沿(前沿)锁存选择信号,下降沿(后沿)读/写数据或命令:7~14为8位数据输入/输出总线;17-液晶复位控制脚;18-VEE,液晶模块升压输出用于对比度调节;15和19-A,LED背光的电源正极:16和20-K,LED背光的电源地。

其中串口模式下4-CS为液晶使能脚,一般接高电平即可,5-SID为串行数据口,6-SCLK为串行时钟口。

3.2.2 GDM12864E与MC9S12DG128的接口本设计采用了串口的通讯方式。

飞思卡尔主控制板的SPI口与液晶通讯,只需CLK和MOSI两根线即能完成对液晶的控制,非常方便。

飞思卡尔

飞思卡尔

通过阅读前几届的技术报告发现采用增量式 PID 进行控速是一个比较好的方案
开发工具
Keil Software公司出品的Keil μVision4 开发系统, 这是一个使用C 语言进行编译开发的集成环境。
结束
情况④一般发生在十字弯处,也可能发生于急弯。在十字弯处时两条 赛道交汇,赛道边沿的黑线中断,小车相当于处于“看不见”的状态。对 这种情况,小车在一般的控制作用下,能够在进入十字弯时保持车身方向 与直道平行。 对十字弯的处理就是,默认CCD 图像中心位置即为赛道中心位置。在过 急弯时,由于CCD 前瞻大,可能视野已经到了蓝色幕布上,因此导致丢线。 应采用保持上一次赛道中心值的策略,使小车能回到正确的行进路线上。
4.4 赛道中心位置的算法
赛道主要组成元素有直道、弯道、坡道和十字弯,可以将赛道情况分为种: ①两个边沿都能看见; ②只能看见左边沿 ③只能看见右边沿; ④两个边沿都看不见。 情况①一般出现在直道,或者小弯道,此时计算赛道中心线的方法是:赛 道中心位置=(左边沿位置+右边沿位置)/2。 情况②和情况③是类似的,一般出现在过弯过程当中,也有可能在偏离直 道中心时出现。由于赛道的一边已经丢失,所以要用已知的一边和半赛道宽 度来计算中心位置。赛道所占有的像素点数就是赛道宽度,是由CCD的位置所 决定。当CCD 固定以后,赛道宽度也就固定了,所以能够通过这种方法来获 得赛道中心位置。 对应的计算方法是:情况②,赛道中心位置= 左边沿位置+ 半赛道宽度; 情况③,赛道中心位置= 右边沿位置- 半赛道宽度。
主销后倾角
2)主销内倾角
当车轮以主销为中心回转时,汽车本身的重力有使转向车轮回 复到原来中间位置的因而舵机复位容易。此外,主销内倾角还使得 主销轴线与路面交点到车轮中心平面与地面交线的距离减小,从而 减小转向时舵机的拉力,使转向操纵轻便,同时也可减少从转向轮 传到舵机上的冲击力。 但主销内倾角也不宜过大,否则加速了轮胎的磨损。

飞思卡尔光电组

飞思卡尔光电组

传感器硬件原理图
传感器元器件清单
? 发光二极管 × 8
发光二极管(贴片封装0805) × 8
? 接收管 × 8
调制管 × 4
? 三极管8050 × 4
电位器500Ω(滑动变阻器) × 8
? 电容0.1μF(贴片封装0603) × 8
? 电阻22Ω(贴片封装0805) × 16
? 电阻1.5kΩ(贴片封装0805) × 8
00110000000000
黑线相当偏左 01000000000000
没有黑线(盲区) 00000000000000
传感器在起点与十字路口
? 如何分辨是 后期重点
2、路径识别算法
? 传感器相关初始化
? void PORT_Init(void)
?{
? DDRA = 0x00;
//端口A方向输入
? PUCR_PUPAE = 1; //端口A信号上拉
按传感器输出信号不同,检测方法 分两种:数字量输出(调制,以我们学 校为代表)和模拟量输出(A/D,以清 华为代表)。
二、光电车硬件
元器件标号基本知识: R电阻标号识别
C电容标号识别
←无k是标号
有k就是阻值 →
光电传感器:发射电路
调制是为了将连续光变成频率约180kHz的光脉冲
注意:⒈我们使用的接收管只能接收调制光,因此发射管必须经过调制电 路发射调制光,否则接收管无法接收光信号;
? PORTA = 0x00; //端口A初值为0
}
寄存器按位赋值举例PUCR_PUPAE = 1; (PUCR |= 0x01;)
? 传感器状态采集:
? void Sensor_collect(void) //采集传感器状态

飞思卡尔智能车

飞思卡尔智能车

飞思卡尔智能车控制系统硬件设计硬件部分:电机舵机传感器车模电机:主要作用是产生驱动转矩,作为小车的动力源。

舵机:能够转舵并保持舵位的装置,也就是让小车拐弯的装置。

传感器:能感受规定的被测量并按照一定的规律转换成可用输出信号的器件或装置,在智能车中,最重要的传感器就是摄像头。

车模:智能车车架,包括底板、齿轮、车轮、电池等等。

主要内容:•MCU最小系统设计•电机及舵机驱动电路设计•光电检测电路原理与设计•图像检测原理与设计1.控制系统的构成一般控制系统由传感器、控制器和执行器组成。

智能车中主要体现:光电器件或器件构成的寻线传感器。

用于操纵小车行走和转向的执行器。

根据传感器信息控制执行器动作的控制器。

三者之间的关系可用如下的关系图描述:飞思卡尔杯规定了比赛用车模、控制器所使用的MCU、执行器、传感器的数量等,比赛中硬件设计所涉及的主要工作是:•设计可靠的MCU控制电路;•执行器驱动电路;•传感器电路;(进行硬件设计的工具很多,建议使用Protel99SE,该软件易上手、效率高,可满足一般电路设计要求。

)MC9S12DG128 的封装2 .MCU最小系统设计MCU最小系统设计分为供电系统设计、复位系统设计、时钟电路设计、BDM调试接口设计、串口通讯设计。

2.1 MCU供电系统设计MCU正常工作需要合理供电,为获取良好的抗干扰能力,电源设计很重要。

针对此次比赛使用的电池和MCU,在供电系统设计中要充分考虑以下因素的影响:1.系统供电电源为7.2V镍氢电池组,不能直接为MCU及其它TTL电路供电。

2.为保证较高的行驶速度,驱动电机需使用电池组直接驱动,故电源电压波动较大。

3.转向用舵机工作电压为5V,其启动电流较大,如与MCU共用5V电源,会引入较大的干扰。

4.采用三端稳压器7805存在效率低、抗干扰能力差的缺点。

采用三端稳压器的电源设计:升降压开关稳压电路•MCU供电飞思卡尔S12系列单片机采用了若干组电源,必须很好的对这些供电电源进行良好的滤波,才能设计出抗干扰能力强的控制器。

基于光电传感器的飞思卡尔智能车设计

基于光电传感器的飞思卡尔智能车设计

基于光电传感器的飞思卡尔智能车设计作者:胡骏王先鲜杜春来来源:《数字技术与应用》2012年第10期摘要:本文设计一种基于光电传感器并自主驾驶的飞思卡尔智能车模型。

智能车模型以飞思卡尔公司16位单片机MC9S12XS128为核心控制器;光电传感器采用速度快,精度高,量程大,抗干扰能力强的激光传感器;系统通过激光传感器的阵列反馈信息,得到智能车与路径的水平偏差,采用PID算法控制舵机转向及直流电机的速度调节,从而实现飞思卡尔智能车快速稳定的自主驾驶。

关键词:智能车光电传感器 PID算法中图分类号:TP242 文献标识码:A 文章编号:1007-9416(2012)10-0036-010、引言随着计算机技术、传感器技术、控制技术的高速发展和广泛应用,智能控制技术取得了巨大的进展。

而智能车正是最典型的一个例子,结合传感器技术和控制技术实现智能车高速稳定自主的驾驶。

本文通过对自主寻径智能小车的设计和研究,对促进控制技术及汽车电子科学技术的发展,起到了良好的推动作用。

1、系统总体设计本文设计的智能小车主要由路经检测、电机驱动、舵机转向及车速控制等功能模块以及软件控制算法构成。

智能车以飞思卡尔公司生产的MC9S12XS128为核心控制器,采用激光传感器对路径进行检测,并反馈路况信息,再通过PID算法实时控制舵机转向,以及对车速进行调节。

该智能车的总体结构框图如图1所示。

2、硬件结构设计2.1 激光传感器设计激光传感器由两部分构成,一部分为发射部分,一部分为接收部分。

发射部分由一个振荡管发出180KHz频率的振荡波后,经三极管放大,激光管发光;接受部分由一个相匹配180KHz的接收管接受返回的光强,经过电容滤波后直接接入MC9S12XS128控制器的IO口,检测返回电压的高低。

激光传感器原理如图2.1所示。

2.2 路经检测原理根据不同颜色对光线吸收程度不同,光线反射强度也就不同的事实,为智能车设计黑色为边界的白色跑道。

飞思卡尔光电组套件智能车XS128K60介绍

飞思卡尔光电组套件智能车XS128K60介绍
2.1
此智能车模,配套的电机型号为RN260-CN-2875。智能车的控制采用的是双后轮驱动方案。智能车的外形大致如下:
智能汽车外形图
2.2
车模中的传感器包括有:速度传感器,车模姿态传感器(陀螺仪、加速度计)以及线形CCD。下面分别介绍这些传感器的安装。
2.2.1
速度编码器我们采用了编码器,安装方法如下:
为了保护模型车传感器支架,在车模机械设计的时候,增添了防撞保护装置,使一旦车模倾倒或者失控,防撞保护装置可保护车模机械的安全性,保证小车状态的稳定性。
飞思卡尔光电组套件智能车XS128 K60介绍
智能汽车外形图
第一章
智能汽车系统总体设计思路,后面将整个系统分为机械结构、控制模块、控制算法等三部分对智能汽车控制系统进行深入的介绍。光电组用了线性ccd,但是由于需要镜头成像,所以会带来成像失真,静电干扰严重等问题。由于平衡车的特殊性,车身在循迹前进的过程中,必须保持车身的平衡。根据最基本保持车身平衡的基本原理,需要知道车身当前的角度和角速度。因此在保持车身平衡方面,以加速度计作为角度传感器,陀螺仪作为角速度传感器。
用十字扳手套筒将车的后轮拆卸后,安装编码器,固定编码器的固定件是根据
车得尺寸及与编码器的相对位置手工制作的连接固定件。
在安装完后轮后,在利用十字扳手套筒将后轮装上。
安装时应注意调整好齿轮间隙。齿轮传动机构对车模的驱动能力有很大的影响。齿轮传动部分安装位置的不恰当,会大大增加电机驱动后轮的负载,会严重影响最终成绩。调整的原则是:两传动齿轮轴保持平行, 齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力,浪费动力;传动部分要轻松、顺畅,不能有迟滞或周期性振动的现象。判断齿轮传动是否良好的依据是,听一下电机带动后轮空转时的声音。声音刺耳响亮,说明齿轮间的配合间隙过大,传动中有撞齿现象;声音闷而且有迟滞,则说明齿轮间的配合间隙过小,或者两齿轮轴不平行,电机负载变大。调整好的齿轮传动噪音很小,并且不会有碰撞类的杂音,后轮减速齿轮机构就基本上调整好了,动力传递十分流畅。如图所示。

飞思卡尔--智能车传感器的排布

飞思卡尔--智能车传感器的排布

飞思卡尔--智能车传感器的排布4.1光感器的路径精确识别技术在智能车系统中,光电(激光)传感器就是整个系统的“眼睛”,其对于路径的识别在控制系统中尤为重要。

4.1.1 光电传感器路径识别状态分析由于往届竞赛对光电传感器排布方式研究已经比较深入,传统的“一”字型排布方式在众多排布方式中效果显著,是最常用的一种排布方式。

模型车也充分利用了往年的成熟的传感器技术,其排布方式如图5.1。

图4.1 模型车激光传感器一字排布图对于我们模型车,传感器在赛道上可能的状态有:在普通的赛道处、在起点处、在十字交叉线处,分别如下图(并未列出所有的状态图),下面将分别进行分析。

图4.2激光传感器在普通赛道上为了识别赛车是处于什么样状态下,用于进行赛道记忆和速度控制,对于我们的数字型激光传感器,每个传感器只有0与1 两种状态,我们分别把14路传感器标记为1到14号传感器,每个传感器又可以对应一个是否在黑线上的标志位,分别为Sen_Flag[0]到Sen_Flag[13],相应在黑线上为1,不在黑线上为0,从而通过对任一时刻传感器标志位的读取就可以知道此时模型车的状态。

为了精确地识别起跑线和十字交叉线,在程序设计时还定义了一个名为Sen_ChangeCount的变量,表示传感器状态变化(由1变为0和由0变为1)的次数。

从上面的传感器状态图中可以轻松看出,在普通赛道上出除了赛车移出赛道之外传感器变化次数都为2次,而在起跑线处模型车的传感器状态变化次数为4次,在十字交叉线时传感器状态变化次数为0次。

为了进一步把各种状态分开,在程序中还定义了变量Sen_FlagCount,用于统计所有传感器状态标志位之和,即在黑线上的传感器的数目。

结合以上几个变量,就可以准确地分清各个传感器状态了。

各个传感器状态如下表:表4.1 传感器状态判定表通过上表,就可以轻松地把模型车任一时刻的传感器状态识别出来,也为赛道记忆识别起点等提供的必要的保障。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于光耦传感器的控制方法-从离散量到连续量康世胤1,李长城2,莫一林3,顾全全4,陆耿5(1. 清华大学自动化系,北京 100084;2.清华大学自动化系,北京100084;3. 清华大学自动化系,北京 100084;4. 清华大学自动化系,北京100084;5.清华大学自动化系,北京 100084)摘要: 第一届“飞思卡尔”杯全国大学生智能车邀请赛要求对高速行驶的小车进行实时控制,使其巡线完成比赛赛道。

针对这种要求,我们选择了最成熟的PID控制,尝试了由离散的不完全微分的PD控制到相对连续PD控制的过渡,通过采集光耦传感器输出的模拟量,采用对称求位置法得到连续性较好的位置信息,利用双排传感器计算角度,对位置和角度同时进行PD控制,经过细致调试确定相应参数,并合理利用分段、设置死区等方法,最终小车可以获得较好的稳定性和在高速情况对赛道中心线的跟随特性。

关键词:道路寻迹;PID控制;对称定位;离散;连续Control MethodBased on Photoelectric Coupling Device – from DiscreteSignal to Continual Signal KANG Shiyin1,LIChangcheng2,MOYilin3,GU Quanquan4,LU Geng5(1.Automation, TsinghuaUniversity, Beijing100084, China;2. Automation, Tsinghua University, Beijing 100084,China;3.Automation, TsinghuaUniversity, Beijing 100084, China;4. Automation, Tsinghua University,Beijing 100084,China;5.Automation,Tsinghua University, Beijing 100084,China;)Abstract:Inthe comingFREESCALE College StudentSmartCar Competition ’06, realtime cont rol strategiesare requiredto be appliedin the high-speedmodelcar which to make sure the cartracki ngthe unknown road and finishing 2 laps of game. Based ontherequirement we select oneof themost well applied proportion-integration-deviation (PID)method. Much works are carried out includingtrying variesof strategy from initial discrete PDto final continual PD. In the current strategy anal og output of photoelectric coupling devicesaresampledand converted fromA to D.Symmetric pos itioningmethod is applied toobtain precisedirection information. Furthermore byapplying dual sensorarraythe turning angleiscalculated. PDmethod is appliedon locationand angle. After careful modification thecorrespondingparameters are decided empirically. In additionby using some other methods such astracksegmentation and deadarea presetting,the model car can obta inbetter status includinggood stability andfine tracking character in high speed.Key words:Road Tracking,Proportion-Integration-Deviation Control,Symmetric Positioning, Discrete,Continual第一届“飞思卡尔”杯全国大学生智能车邀请赛的赛题是控制比赛小车,使其按要求用尽可能短的时间完成比赛赛道,比赛允许选手自行设计传感器和控制电路,并编写控制程序,禁止改动舵机和轮胎等小车结构。

针对这种要求,从控制系统的观点出发,我们按照设计跟随系统的思路设计车模的控制策略;从几何关系上讲,为了实现车模的寻线运动,控制器应当控制前轮转向,满足在车模运动中车身相对于线的位置偏差和车身纵向相对于线的夹角为0的控制目标。

根据以上思路,寻线跟随系统应当有2个输入——位置偏差和角度偏差,1个输出——舵机转角,考虑了速度的因素后,系统便成为一个3输入2输出的复杂系统。

在我们的方案中,位置偏差和角度偏差由光偶传感器检测得到,舵机转角由PWM信号控制。

由于通常传感器检测得到的量是离散量,动作控制也只能针对离散量进行控制,并且根据单片机的处理能力,我们使用数字PID作为基本的控制器,但这只适用于低速情况,高速情况下过于离散的控制将造成系统控制缓慢、滞后,阶跃变化较大,甚至无法达到控制目标。

由于这种原因,将小车速度提升之后,对小车进行连续控制是十分必要的,实际结果证明,传感器检测模拟量进行连续位置和角度的PID控制可以使小车具有很好的稳定性和跟随特性。

1.数字量的采集和数字PID控制1.1.位置计算判断传感器输出数字量,根据读到黑线的传感器确定位置,以14个光耦传感器对称排列为例,根据传感器状态,位置分别为-14,-13,…,0,…13,14。

其中-14和14分别表示黑线在传感器左侧且没有传感器输出1和黑线在传感器右侧且没有传感器输出1,其它奇数位置表示相应传感器输出1,偶数位置表示相邻两个传感器输出1。

1.2. 数字PI D控制通过对模拟控制系统PID 控制规律的表达式进行离散化,得到直接离散控制(DDC )的PI D表达式0()()()[()(1)]kC ID i u k K e k K e i K e k e k ==++--∑。

1.2.1. 比例控制比例调节主要用于影响系统响应速度,在一定范围内,比例带越小系统的响应越快。

对于比赛中的小车系统,比例带减小将加快控制速度,从而提高小车对赛道中心线的跟随特性,但比例带过小将使小车产生振荡甚至跑出赛道。

实际中发现,成比例的控制并不是最好的方案,类似抛物线的中间控制量变化慢,两端控制量变化快的控制更有助于消除振荡同时获得较好的跟随特性。

可以利用Exce l或其它工具得到所需控制量的逼近多项式表达式,然后通过查表方式或按公式进行计算得到控制量。

1.2.2. 积分控制由于I 调节的稳定作用差,并且降低系统响应速度,在对跟随特性要求较高的的小车系统中不适合使用,因此控制策略中没有积分控制,整个调节器为PD 调节器。

1.2.3. 微分控制数字量较长时间内不发生变化时,为了使微分作用有效,可以参照模拟调节器,在PD 调节器输出串联一阶惯性环节,即得到不完全微分PD 调节器,计算式为()(1)(1)'()u k au k a u k =-+-。

不完全微分算式的输出在较长时间内保持微分作用,通过调节a 得到小车最佳的控制效果。

1.2.4. 控制效果在小车机械结构和传感器等参数相同的情况下,完成一整圈赛道,不完全微分的P D控制相对于单纯的比例控制,时间节约12.5%(两种控制用时分别为14s 和16s),并且具有更好的稳定性。

加入积分控制,小车性能总会变差。

因此,针对比赛小车系统,不完全微分的PD 控制是最佳离散的PID 控制方案。

2. 模拟量的采集和PD 控制2.1. 模拟量的采集和位置、角度计算2.1.1. 模拟量采集传感器仍然是红外光耦传感器,接收管输出不经过施密特触发器转化成数字量,而是接到单片机的A /D转换接口进行转换。

2.1.2. 位置计算2.1.2.1. 全局求位置法通过各个传感器的信号可以计算出连续的黑线位置,较简单的办法是用类似于长杆求重心的方法,将各个传感器输出分别乘以传感器位置再求和,除以所有传感器输出之和即可得到连续的位置信息。

这之前需要做一些准备工作,由于不同传感器具有差异,直接用A/D 转换的结果计算位置误差较大。

为了避免传感器差异造成的影响,我们采用了先定标再用相对值进行加权计算的办法,具体过程为:程序开始前让每个传感器在赛道上进行扫描,分别记录每个传感器输出信号的最大值max (对应读到黑线中心的情况)和最小值min (对应远离黑线读到白色赛道的情况),用最大值减去最小值得到每个传感器在赛道上的输出范围,小车行使过程中,将每个传感器输出的信号减去最小值,再除以该传感器的输出范围即可得到其相对输出值,再用每个传感器的相对值与传感器位置作加权平均得到的结果即为黑线位置。

公式为11()/()n n n n n i i pos v p v ===∑∑,其中pos 为位置,n v 为第n个传感器的相对输出值,n p 为第n 个传感器的位置。

这种方法消除了传感器差异造成的影响,并能够得到相对十分连续的位置信息,相邻两次位置间隔小于0.5mm 。

然而,全局求位置法在某些入弯情况会造成计算错误,黑线与传感器排列方向夹角越小错误越大。

这是由于此时多个传感器离黑线较近,因此输出值较大,原本黑线位置较大时经过全局加权平均计算结果将偏小,用LCD(自制的调试手段,用LCD实时显示程序变量等信息)显示测量结果,误差可达36%(正确位置为7cm,显示值为4.5cm),这种情况将造成小车转向不足,冲出赛道。

解决办法是采用下面介绍的对称求位置法。

2.1.2.2. 对称求位置法对称求位置法的准备工作与全局求位置法相同,使用的是传感器的相对输出值,先判断出输出值最大的传感器,也就是离黑线最近的传感器,然后根据该传感器进行对称加权平均求黑线位置。

对称求位置又分为奇数对称求位置和偶数对称求位置,参与计算传感器个数在传感器总个数的约束下应尽可能大,即两端的传感器总是至少有一个参与计算。

相关文档
最新文档