




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、智能车源代码光电组(有注解)#include<hidef.h>/*commondefinesandmacros*/#include<mc9s12dg256.h>/*derivativeinformation*/#include"math.h"#include"PWM.h"#include"ATD.h"#include"LQprintp.h"#pragmaLINK_INFODERIVATIVE"mc9s12dg256b"staticunsignedints_sKd=10;道
2、PID的D值/*用于防止PID溢出*unsignedshorts_sE=5;unsignedchars_sq=1;直/*/*,*分别存放PID彳!*ints_sMp=0;ints_sMi=0;ints_sMd=0;ints_sMp2=0;/*intsL_u3;实际逮度的差值存放前3次理论速度与staticunsignedintmem_num=0;调试中断unsignedinti=0;unsignedintj=0;unsignedintt=0;bytead_value13;uchardata13;intsum=0;ucharstart_flag=0;ucharnum=0;ucharlw=0;un
3、signedintper=65530;intSPWM=0;intL_SPWM=0;unsignedintSPmax=1000;intMPWM=0;ucharcurrent_corrd=0;intlast_corrd310=(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*unsignedcharcp=0;unsignedcharci=0;unsignedcharcd=0;unsignedintsearch_PACN10;unsignedintnp=0;unsignedintsp500;/*/*PI
4、D*staticunsignedintKp=25;staticunsignedintKp2=60;staticunsignedintKi=9;staticunsignedintKd=30;staticunsignedintrKp=100;staticunsignedintrKp2=60;staticunsignedintrKi=0;staticunsignedintrKd=60;unsignedshortE=5;unsignedcharq=1;intMp=0;intMi=0;intMd=0;intMp2=0;/*存储前20点的数据intL_num10=(0,0,0,0,0,0,0,0,0,0)
5、;intsum_corrd=0;intwb=0;白为1;记录当前状态黑为0,/*/*红外*intcorrd10=(0,0,0,0,0,0,0,0,0,0);intT_corrd=0;intis_white=0;intnumb=0;intP_Speed=0;intL_u3;/*/*/*舵机PID变量/*staticunsignedints_sKp=35;/直道PID的P值一staticunsignedints_sKp2=0;/直道PID的二阶P值一staticunsignedints_sKi=0;/直道PID的I值一intcorrd_sate23=(0,0,0,0,0,0,0,0,0,0,0,0
6、,0,0,0,0,0,0,0,0,0,0,0);intSPWM_sate15=(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);intMPWM_sate11=(0,0,0,0,0,0,0,0,0,0,0);ucharcorrd_time512;ucharSPWM_time512;ucharMPWM_time512;ucharPACN_time512;*voidsetbusclock(void)CLKSEL=0X00;/disengagePLLtosystemPLLCTL_PLLON=1;/turnonPLLSYNR=1;REFDV=1;pllclock=2*osc*(1+SYNR
7、)/(1+REFDV)=32MHz;_asm(nop);/BUSCLOCK=16M_asm(nop);while(!(CRGFLG_LOCK=1);/whenpllissteady,thenuseit;CLKSEL_PLLSEL=1;/engagePLLtosystem;voidDly_ms(intms)一intii,jj;if(ms<1)ms=1;for(ii=0;ii<ms;ii+)for(jj=0;jj<2670;jj+);busclk:16MHz-1msstaticvoidSCI_Init(void)SCI0CR2=0x2c;/enableReceiveFullInt
8、errupt,RXenable,TxenableSCI0BDH=0x00;出口波特率为9600SCI0BDL=0x68;/SCI0BDL=busclk/(16*SCI0BDL)/busclk8MHz,9600bps,SCI0BDL=0x34/busclk16MHz,9600bps,SCI0BDL=0x68/busclk24MHz,9600bps,SCI0BDL=0x9C/busclk32MHz,9600bps,SCI0BDL=0xD0staticvoidIOC_Init(void)PERT=0XFF;/PPST=0XFF;DDRT=0XFe;PBCTL=0X50;/PT0PIN,PACN101
9、6BIT,FALLingedge,NOTINTERRUPT/PACN0=200;/PACN1=0xFF;TCTL4=0x01;/40表示ICx禁止,1表示上升沿2表示下降沿,3表示任何沿/TIE=0x00;/每一位对应相应通道中断允许,0表示禁止中断TIOS=0xfe;/每一位对应通道的:0输入捕捉,1输出比较unsignedintget_Speed()一intSpeed;Speed=PACN10;PACN10=0;returnSpeed;voids_PID_MPWM()L_u2=L_u1;L_u1=L_u0;L_u0=P_Speed-search_PACN10;Mp=Kp*L_u0;Mi=M
10、i+Ki*L_u0;Md=Kd*(L_u0-2*L_u1+L_u2);Mp2=Kp2*(L_u0-L_u1);if(Ki*L_u0)>E)|(Ki*L_u0)<-E)q=0;elseq=1;MPWM=MPWM+Mp+q*Mi+Md+Mp2;if(MPWM>1000)MPWM=1000;if(MPWM<-1000)MPWM=-1000;Set_MPWM(MPWM);voidr_PID_MPWM()L_u2=L_u1;L_u1=L_u0;L_u0=P_Speed-search_PACN10;Mp=rKp*L_u0;Mi=Mi+rKi*L_u0;Md=rKd*(L_u0-2*
11、L_u1+L_u2);Mp2=rKp2*(L_u0-L_u1);if(rKi*L_u0)>E)|(rKi*L_u0)<-E)q=0;elseq=1;MPWM=MPWM+Mp+q*Mi+Md+Mp2;if(MPWM>1000)MPWM=1000;if(MPWM<-1000)MPWM=-1000;Set_MPWM(MPWM);/*舵机pid控制良*voids_PID_SPWM()sL_u0(current_corrd+last_corrd01)sL_u2=sL_u1;sL_u1=sL_u0;(last_corrd02+last_corrd03)/2;printp("
12、;%c",corrd_timej);一/*计算piD值*if(sL_u0<20&&sL_u0>-20)s_sMp=s_sKp*sL_u0;s_sMi=s_sMi+s_sKi*sL_u0;s_sMd=s_sKd*(sL_u0-2*sL_u1sL_u2);s_sMp2=s_sKp2*(sL_u0-sL_u1);/*/*I项溢出防止*if(s_sKi*sL_u0)>s_sE)|(s_sKi*sL_u0)<-s_sE)s_sq=0;elses_sq=1;/*voidshow_SPWM_time()一一for(j=0;j<512;j+)printp
13、("%c",SPWM_timej);voidshow_MPWM_time()一一for(j=0;j<512;j+)printp("%c",MPWM_timej);SPWM=SPWM+s_sMp+s_sq*s_sMi+s_sMd+s_sMp2;*PWM溢出防止*if(SPWM>70)SPWM=70;if(SPWM<-70)SPWM=-70;/*elsesL_u0=sL_u1;voidshow_PACN_time()一一for(j=0;j<512;j+)printp("%c",PACN_timej);Set_SPW
14、M(SPWM);/*voidmain(void)/*putyourowncodehere*/voidshow_SPWM_data()一一setbusclock();SCI_Init();AD_Init();IOC_Init();Ini_PWM();for(j=0;j<15;j+)printp("%10d",SPWM_satej);EnableInterrupts;voidshow_MPWM_data()voidshow_corrd_data()一一for(j=0;j<11;j+)printp("%10d",MPWM_satej);for(;)
15、Dly_ms(10);*for(j=0;j<10;j+)adc_get(ad_value);for(i=1;i<12;i+)for(j=0;j<23;j+)printp("%6d",corrd_satej);一voidshow_corrd_time()一一for(j=0;j<512;j+)if(ad_valuei>=160)datai=1;num=num+1;elsedatai=0;sum=sum+datai*2*i;/printp("%10d",datai);)if(num=0)(corrdj=-1;)else(corrd
16、j=sum/num;)sum=0;num=0;)is_white=0;for(i=0;i<10;i+)(if(corrdi<0)(is_white+;)一for(j=i;j<10;j+)(T_corrd=corrdj;corrdj=corrdi;corrdi=T_corrd;)if(is_white>6)一numb=0;)sum=0;j=0;for(i=3;i<8;i+)if(corrdi>-1)sum+=corrdi;j+;)if(j!=0)current_corrd=sum/j;numb=j;)L_num9=L_num8;L_num8=L_num7;L_
17、num7=L_num6;L_num6=L_num5;L_num5=L_num4;L_num4=L_num3;L_num3=L_num2;L_num2=L_num1;L_num1=L_num0;L_num0=numb;*wb=L_num1|L_num2|L_num3|L_num4|L_num5|L_num6|L_num7|L_num8|L_num9;if(numb=0)DDRB=0x80;if(search_PACN10>10&&wb>0)P_Speed=20;if(lw=0)SPWM=-70;)elseSPWM=72;)/if(sum_corrd<220&am
18、p;&sum_corrd>-220)Set_MPWM(0);/else/Set_MPWM(700);)elseP_Speed=20;if(lw=0)SPWM=-70;)elseSPWM=72;)Set_MPWM(1000);)/Set_MPWM(0);)elseDDRB=0x00;/printp("%d",current_corrd);/if(PTJ&0x80)Set_MPWM(0);/elseif(wb=0)Set_MPWM(1000);)elseswitch(current_corrd)case 2: SPWM=-70;P_Speed=32;r_P
19、ID_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;case6:SPWM=-30;P_Speed=32;r_PID_MPWM();lw=0;break;case7:SPWM32;r_PID_MPWM();lw=0;break;=-25;P_Speed=case8:SPWM32;r_PID_MPWM
20、();lw=0;break;=-20;P_Speed=case9:SPWM32;s_PID_MPWM();lw=0;break;=-15;P_Speed=case10:SPWM32;s_PID_MPWM();lw=0;break;=-10;P_Speed=case11:SPWM32;s_PID_MPWM();lw=0;break;=-5;P_Speed=case12:SPWM32;s_PID_MPWM();break;=0;P_Speed=case13:SPWM32;s_PID_MPWM();lw=1;break;=5;P_Speed=case14:SPWM32;s_PID_MPWM();lw
21、=1;break;=10;P_Speed=case15:SPWM32;s_PID_MPWM();lw=1;break;=15;P_Speed=case16:SPWM32;r_PID_MPWM();lw=1;break;=20;P_Speed=case17:SPWM32;r_PID_MPWM();lw=1;break;=25;P_Speed=case18:SPWM32;r_PID_MPWM();lw=1;break;=30;P_Speed=case19:SPWM32;r_PID_MPWM();lw=1;break;=40;P_Speed=case20:SPWM32;r_PID_MPWM();lw
22、=1;break;=50;P_Speed=case21:SPWM32;r_PID_MPWM();lw=1;break;=60;P_Speed=case22:SPWM32;r_PID_MPWM();lw=1;break;=70;P_Speed=default:break;t+;if(t=512)MPWM=0;for(;);)/*waitforever*/*pleasemakesurethatyouneverleavethisfunction*/voidinterrupt20SCI0RX(void)byteresult,temp;DisableInterrupts;temp=SCI0SR1;/*clearflag*/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_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年甘肃省庆阳市华池县事业单位选调工作人员模拟试卷及答案详解1套
- 2025年齐齐哈尔讷河市发展和改革局所属事业单位公开选调工作人员9人考前自测高频考点模拟试题及答案详解(典优)
- 蔬菜配送服务合同正式样本5篇
- 2025广东佛山市季华中学面向社会招聘编制教师2名考前自测高频考点模拟试题附答案详解(突破训练)
- 高压熔断器装配工合规化技术规程
- 2025年云计算数据中心租赁合同协议
- PBD-dimer-4-生命科学试剂-MCE
- Oseltamivir-d3-Phosphate-生命科学试剂-MCE
- 2025贵州医科大学第三附属医院第十三届贵州人才博览会引才5人模拟试卷及答案详解(名师系列)
- 理财公司笔试题目及答案
- 检验科内部审核报告
- 2023新版养老机构等级评定解读
- 无人机的分类
- 国家义务教育质量监测模拟测试(四年级)心理健康
- 【课件】2024届九省联考英语阅读理解评析课件
- 油气储运安全技术
- 心理疾病的心理治疗方法和康复训练
- 风湿性疾病的疫苗接种与预防措施
- 电动起重机司机装卸司机
- DLT817-2014 立式水轮发电机检修技术规程
- 苏教版小学英语单词汇总-译林版- - 1~6年级
评论
0/150
提交评论