OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5010|回复: 1

我的PID这是怎么了?

[复制链接]

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2015-4-30
在线时间
1 小时
发表于 2015-6-4 17:29:21 | 显示全部楼层 |阅读模式
5金钱
我的PID这是怎么了?
[mw_shl_code=c,true]void ADC_PID(void) { int s[6]={0}; for(i=0;i<6;i++) { ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3; printf("\nADC_ConvertedValueLocal[%d]:%f\n",i,ADC_ConvertedValueLocal); if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==1) { normal=125; if(ADC_ConvertedValueLocal<1.5) { s=temp1; sum+=ADC_ConvertedValueLocal; } } else { normal=150; if(ADC_ConvertedValueLocal<1.5) { s=temp2; sum+=ADC_ConvertedValueLocal; } } } inpid= (ADC_ConvertedValueLocal[0]*s[0]+ ADC_ConvertedValueLocal[1]*s[1]+ ADC_ConvertedValueLocal[2]*s[2]+ ADC_ConvertedValueLocal[3]*s[3]+ ADC_ConvertedValueLocal[4]*s[4]+ ADC_ConvertedValueLocal[5]*s[5])/sum; printf("\ninpid%f\n",inpid); } void pid(void) { position_error_p=Position_Kp*(inpid-normal); position_error_d=Position_Kd*(inpid-pre_inpid); if(0<=(rMotor_Speed+(position_error_p-position_error_d))<999) rMotor_Speed+=(position_error_p-position_error_d); //right else if((rMotor_Speed+(position_error_p-position_error_d))<0) rMotor_Speed=0; else rMotor_Speed=999; if(0<(lMotor_Speed-(position_error_p-position_error_d))<999) lMotor_Speed-=(position_error_p-position_error_d);//left else if((lMotor_Speed+(position_error_p-position_error_d))<0) lMotor_Speed=0; else lMotor_Speed=999; printf("\n×ó??%d\n",lMotor_Speed); printf("\n????%d\n",rMotor_Speed); pre_inpid=inpid; TIM2->CCR1=rMotor_Speed; TIM2->CCR2=0; TIM2->CCR3=lMotor_Speed; TIM2->CCR4=0; } int main(void) {while(1) { ADC_PID(); pid(); }} [/mw_shl_code]

如图PID   输出PWM我设定只能从0~999取值  但是串口返回明显不对(PWM文件我用的例程  初始化就没粘上去)    用JTAG  显示程序在if判断时就没有进过else if 和else 这是哪里错了?

最佳答案

查看完整内容[请看2#楼]

忘了C语言不支持a<b><c>
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
80
金钱
80
注册时间
2015-4-30
在线时间
1 小时
 楼主| 发表于 2015-6-4 17:29:22 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表