第五届飞思卡尔电磁车程序速度25Word下载.docx
- 文档编号:19214615
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:11
- 大小:16.35KB
第五届飞思卡尔电磁车程序速度25Word下载.docx
《第五届飞思卡尔电磁车程序速度25Word下载.docx》由会员分享,可在线阅读,更多相关《第五届飞思卡尔电磁车程序速度25Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
intk1=24,k3=24,k5=24,k7=24;
//校正系数
intstateSE7[3],stateSE5[3],stateSE1[3],stateSE3[3],diff1,diff3,diff7,diff5;
voidmain(void)
{
intn;
init();
PWMDTY01=PWM_MID;
//舵机PWM波脉宽范围
ATD0CTL5=0x30;
//启动AD
PITCE_PCE0=1;
//启动PIT0
PITCE_PCE1=1;
//启动PIT1
PITCE_PCE2=1;
//启动PIT2
PITCE_PCE3=1;
//启动PIT3
EnableInterrupts;
for(;
;
)
{
if(print_flag==1)
n++;
if(n==10)
n=0;
printp("
%d"
PWMDTY01);
\n\n"
);
1=%d3=%d5=%d7=%d"
offset1,offset3,offset5,offset7);
/*for(n=0;
n<
spoint;
n++)
{
%d"
sdata1[n]);
}*/
SE1=%d%d%d%d"
SE1,SE3,SE5,SE7);
//printp("
diff1=%d%d%d%d"
diff1,diff3,diff5,diff7);
\n"
SEMAX=%d%d%d%d"
SE1MAX,SE3MAX,SE5MAX,SE7MAX);
speed=%d"
speed);
k1=%dk3=%dk5=%dk7=%d"
k1,k3,k5,k7);
servo_pwm);
//printp("
print_flag=0;
}
}
}
#pragmaCODE_SEG__NEAR_SEGNON_BANKED
voidinterrupt12IOC4interrupt(void)
inti,j;
TFLG1_C4F=1;
TIE_C4I=0;
//prespeed=presetspeed;
startflag++;
//按第一下,显示舵机的方向,按第二下,延时2S启动
for(i=0;
i<
500;
i++)
for(j=0;
j<
0x0d53;
j++);
TIE_C4I=1;
voidinterrupt13IOC5interrupt(void)
TFLG1_C5F=1;
TIE_C5I=0;
if(PTJ_PTJ7==0)
bendspeed+=3;
else
presetspeed+=3;
if(PTT_PTT2==0)
presetspeed=70;
TIE_C5I=1;
voidinterrupt22ADinterrupt(void)
sdata1[counter]=ATD0DR0;
sdata3[counter]=ATD0DR1;
sdata5[counter]=ATD0DR2;
sdata7[counter]=ATD0DR3;
counter++;
voidinterrupt69PIT3interrupt(void)
_asm(MOVB#$08,PITTF);
speed=PACNT;
PACNT=0;
if(startflag==2)
if(startdelay==0)
startdelaycount++;
if(startdelaycount>
=100)
startdelay=1;
if(startdelay==1)
adjust_speed();
voidinterrupt68PIT2interrupt(void)
_asm(MOVB#$04,PITTF);
if(PORTA_PA0==0)
stopflag++;
PITCE_PCE2=0;
voidinterrupt67PTI1interrupt(void)
{
//***为下一个循环作准备****
_asm(MOVB#$02,PITTF);
counter=0;
sum1=0;
sum3=0;
sum5=0;
sum7=0;
ATD0CTL2_ASCIE=1;
ATD0CTL5=0x30;
print_flag=1;
voidinterrupt66PIT0interrupt(void)//采样时间为2ms
inti,temp;
PITCE_PCE0=0;
//关闭PIT
ATD0CTL2_ASCIE=0;
//关闭AD
//允许PIT2,3中断该程序
//***滤波****
filter(sdata1);
filter(sdata3);
filter(sdata5);
filter(sdata7);
//***求峰峰值***
counter;
sum1+=sdata1[i];
sum3+=sdata3[i];
sum5+=sdata5[i];
sum7+=sdata7[i];
SE1=(int)(sum1>
>
12);
SE3=(int)(sum3>
SE5=(int)(sum5>
SE7=(int)(sum7>
//***找出相应的最大值***
if(PTT_PTT3==0)
if(SE1>
SE1MAX)
SE1MAX=SE1;
if(SE3>
SE3MAX)
SE3MAX=SE3;
if(SE5>
SE5MAX)
SE5MAX=SE5;
if(SE7>
SE7MAX)
SE7MAX=SE7;
save2flash(SE1MAX,SE3MAX,SE5MAX,SE7MAX);
SE1MAX=*se1max;
SE3MAX=*se3max;
SE5MAX=*se5max;
SE7MAX=*se7max;
if(SE1==0)
SE1=1;
if(SE3==0)
SE3=1;
if(SE5==0)
SE5=1;
if(SE7==0)
SE7=1;
//***求偏移*****
offset1=(int)sqrt(100*(unsignedlongint)((SE1MAX)*H1*H1/SE1-H2*H2))*24/k1;
offset3=(int)sqrt(100*(unsignedlongint)((SE3MAX)*H1*H1/SE3-H2*H2))*24/k3;
offset5=(int)sqrt(100*(unsignedlongint)((SE5MAX)*H2*H2/SE5-H2*H2))*24/k5;
offset7=(int)sqrt(100*(unsignedlongint)((SE7MAX)*H2*H2/SE7-H2*H2))*24/k7;
if(offset1>
450)
offset1=450;
if(offset3>
offset3=450;
if(offset5>
offset5=450;
if(offset7>
offset7=450;
//***求servo_pwm***
stateSE1[0]=SE1;
stateSE3[0]=SE3;
stateSE7[0]=SE7;
stateSE5[0]=SE5;
diff1=stateSE1[0]-stateSE1[2];
diff3=stateSE3[0]-stateSE3[2];
diff7=stateSE7[0]-stateSE7[2];
diff5=stateSE5[0]-stateSE5[2];
for(i=1;
i>
=0;
i--)
stateSE1[i+1]=stateSE1[i];
stateSE3[i+1]=stateSE3[i];
stateSE5[i+1]=stateSE5[i];
stateSE7[i+1]=stateSE7[i];
if(offset5+offset7>
400)
if((offset7+offset3)>
(offset5+offset1))
servo_pwm=((offset7+offset5-80)+((offset7-lastoffset7)-(offset5-lastoffset5)))*((PWM_MAX-PWM_MID)/200);
servo_pwm=((-offset7-offset5+80)+((offset7-lastoffset7)-(offset5-lastoffset5)))*((PWM_MAX-PWM_MID)/200);
if(servo_pwm+PWM_MID>
PWM_MAX)
servo_pwm=PWM_MAX-PWM_MID;
if(servo_pwm+PWM_MID<
PWM_MIN)
servo_pwm=PWM_MIN-PWM_MID;
if(abs(servo_pwm-lastservo_pwm)>
=PWM_MAX-PWM_MID+100)
servo_pwm=lastservo_pwm;
elseif((offset5+offset7)>
280)//四个电感处在同侧
servo_pwm=((offset7-offset5)+((offset7-lastoffset7)-(offset5-lastoffset5)))*((PWM_MAX-PWM_MID)/100);
servo_pwm=((offset7-offset5)*3/2+(offset1-offset5+offset7-offset3)*4+((offset7-lastoffset7)-(offset5-lastoffset5))*2)*((PWM_MAX-PWM_MID)/350)+((diff3-diff7)+(diff5-diff1))*5;
//***求相应的PWMDTY01***
PWMDTY01=PWM_MAX;
elseif(servo_pwm+PWM_MID<
PWMDTY01=PWM_MIN;
PWMDTY01=PWM_MID+servo_pwm;
lastservo_pwm=servo_pwm;
lastoffset7=offset7;
lastoffset5=offset5;
prespeed=presetspeed-abs(PWMDTY01-PWM_MID)/((PWM_MAX-PWM_MID)/(presetspeed-bendspeed));
//***显示控制***
if(startflag==0)
display_speed(bendspeed);
display_speed(presetspeed);
display_position();
//***停车控制***
if(SCI0SR1_RDRF==1)
temp=SCI0DRL;
PWMDTY01=PWM_MID;
PWMDTY23=0;
PWMDTY67=0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 届飞思 卡尔 电磁 车程 速度 25