新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2020-12-2
- 在线时间
- 11 小时
|
5金钱
设计一个STM32控制电机,然后电机接电位器,电位器由ADC输入,当串口输入一个信号与采集的ADC比较,结果不同时控制电机转动使电位器与输入值相等的STM32的闭环控制系统。
遇到的问题是:当只有采集与控制只有一路的时候控制精度还可以,增加到多路的时候,因为采用轮询判断的方式,程序循环时间变长,所以精度下降的厉害,电机很容易转过头,有什么好的方式吗?下面贴的是一路的判断程序,我是给重复了6次。
if(angleR1>adcx1) //这是输入值与采集值的比较
{
if((angleR1-adcx1)>=count)
{
TIM_SetCompare1(TIM8,35); //控制电机转动
}
else
{
TIM_SetCompare1(TIM8,50);
}
}
else
{
if(angleR1<adcx1) //
{
if((adcx1-angleR1)>=count)
{
TIM_SetCompare1(TIM8,75); //
}
else
{
TIM_SetCompare1(TIM8,50);
}
}
else
{
TIM_SetCompare1(TIM8,50); //
}
}

|
最佳答案
查看完整内容[请看2#楼]
你这个控制条件需要这么苛刻吗,或者你可以考虑一段范围的位置控制(可以算算判断花费的时间和速度计算一个范围),要不考虑一下PID吧。
|