单片机伺服电机加减速控制子程序

单片机伺服电机加减速控制子程序 该代码实现了一个电机自动加减速控制程序。通过设置加减速标志MtAdDc_FLAG程序分为加速和减速两个阶段加速时根据运行距离分三个阶段调整速度3mm内3倍延时、3-20mm内2倍延时、20mm以上正常速度减速时根据剩余距离分三个阶段30-20mm内2倍延时、20-10mm内3倍延时、10mm以下4倍延时。通过调整脉冲间隔时间实现速度控制最终输出高低电平脉冲驱动电机运行。程序包含距离判断、速度调节和脉冲输出等功能模块实现了电机的平滑启停控制。/***电机运行子程序运动值valmt运动值缓冲器val10*//******自动加减速 ------------*****//******进入子程序加减速标志MtAdDc_FLAG置1******//*---电机起始加速-----------------------------*//***电机起始3mm脉冲延时*3,3-20mm脉冲延时*2. ***//***大于200mm脉冲延时等于设置值 ***//*--------------------------------------------*//*---电机停止减速-----------------------------*//***小于30mm大于20mm开始减速(val_mtspeed*2) ***//***小于20mm大于10mm减速延时(val_mtspeed*3) ***//***缓冲器值小余10mm减速延时(val_mtspeed*4) ***//*--------------------------------------------*/void Motor_Run1() /**/{MtAdDc_FLAG1; //加减速标志置1,加速延时判断。加速结束置0,减速脉冲延时判断for(val100;val10--;) //实际值与自动设定值之差{/////if(MtAdDc_FLAG1) //起步电机慢速 中速 全速三个阶段{if(valmt-val1030) //电机运行总值减缓冲器值 3mmMtAdDc_mtspeedval_mtspeed*3; //3倍定时设定值 慢速启动else if(valmt-val10200valmt-val1030) //20mm---3mmMtAdDc_mtspeedval_mtspeed*2; //2倍定时设定值else if(valmt-val10300valmt-val10200) //30mm---20mm{ //定时设定值MtAdDc_mtspeedval_mtspeed;// P0MtAdDc_mtspeed; //??? P0MtAdDc_FLAG0; //加减速标志置零判断结束}}//////////else if(MtAdDc_FLAG0) //电机减速判断{if(val10300val10200) //小于30mm大于20mm开始减速(val_mtspeed*2){MtAdDc_mtspeedval_mtspeed*2;}else if(val10200val10100) //小于20mm大于10mm减速延时(val_mtspeed*3){MtAdDc_mtspeedval_mtspeed*3;}else if(val10100) //缓冲器值小余10mm减速延时(val_mtspeed*4){MtAdDc_mtspeedval_mtspeed*4;}}//////////for(k0;kcoefficient;k) //电机比例因子,K循环等于coefficient发一次脉冲{MTORCP0; /*子函数开始*/delay1ms(MtAdDc_mtspeed); //MTORCP1;delay1ms(MtAdDc_mtspeed);}/////}}