金牌会员
- 积分
- 1704
- 威望
- 1032
- 贡献
- 200
- 兑换币
- 353
- 注册时间
- 2012-10-1
- 在线时间
- 236 小时
|
wuzexiao 发表于 2013-2-25 16:25
最好把你最后输出给电机的PWM输出程序贴出来。有可能出现速度控制以及角度控制叠加后符号为正,但是加上方向 ...
float fLeft, fRight;
fLeft = g_fAngleControlOut-g_fSpeedControlOut-g_fDirectionControlOut;
fRight = g_fAngleControlOut-g_fSpeedControlOut+ g_fDirectionControlOut;
///////////////////////////////////////////////////////////////////////////////////
///////////////// 电压死区补偿 ///////////////////////////////////
if((fLeft > -MOTOR_OUT_DEAD_VAL) && (fLeft < 0))
fLeft = -MOTOR_OUT_DEAD_VAL;
else if((fLeft < MOTOR_OUT_DEAD_VAL) && (fLeft > 0))
fLeft = MOTOR_OUT_DEAD_VAL;
if((fRight > -MOTOR_OUT_DEAD_VAL) && (fRight < 0))
fRight = -MOTOR_OUT_DEAD_VAL;
else if((fRight < MOTOR_OUT_DEAD_VAL) && (fRight > 0))
fRight = MOTOR_OUT_DEAD_VAL;
///////////////////////////////////////////////////////////////////////
if(fLeft>4000)
fLeft=4000;
if(fLeft<-4000)
fLeft=-4000;
if(fRight>4000)
fRight=4000;
if(fRight<-4000)
fRight=-4000;
if(fLeft >= 0)
{
Left_Go((uint32_t)fLeft);
} //左轮输出
else if(fLeft < 0)
{
fLeft=-fLeft;
Left_Break((uint32_t)fLeft);
}
if(fRight>=0)
{
Right_Go((uint32_t)fRight);
} //右轮输出
else if(fRight<0)
{
fRight=-fRight;
Right_Break((uint32_t)fRight);
}
/* uart_sendnumber(UART1, fRight);
uart_sendstring(UART1,(uint
|
|