|
发表于 2014-9-4 14:55:30
|
显示全部楼层
在DMX缓慢上升/下降时电机抖动的问题,我分享一下, 暂时处理方法,不知道是否恰当, 请高手指点:
程序还是楼主V1.0程序。
const u16 MotorX_SpeedCurveTimerVal_add[200]=
{
4500,2000,1000,800,500,0,0,0,0,0,0,0,0,0,0,0,0,
};
/*****************************************************************************************
* MotorX_drive(MotorX_speed_postion_dir,20,MotorX_dynamic_postion_gap/100);
*****************************************************************************************/
static void MotorX_drive(u8 dir,u16 SpeedPostion) //STEP ²½½øµç»ú²½Êý 200²½ ΪһȦ
{
static u16 SpeedVal =0;
if(MotorX_step_startstop<4) //当计算出的最高速度低于某一等级时,低速时, 对定时器初值进一步减小, 高速时无影响
SpeedVal =MotorX_SpeedCurveTimerVal[SpeedPostion]-MotorX_SpeedCurveTimerVal_add[SpeedPostion];
else
SpeedVal = MotorX_SpeedCurveTimerVal[SpeedPostion];
//----------------------------------------------------------------------
MotorX_dir = dir;
TIM1CCR3_Val = 65535 - SpeedVal; //u16
} |
|