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

该代码实现了一个电机自动加减速控制程序。通过设置加减速标志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_FLAG=1; //加减速标志置1,加速延时判断。加速结束置0,减速脉冲延时判断

for(val10>0;val10--;) //实际值与自动设定值之差

{

/////

if(MtAdDc_FLAG==1) //起步电机慢速 中速 全速三个阶段

{

if(valmt-val10<30) //电机运行总值减缓冲器值 3mm

MtAdDc_mtspeed=val_mtspeed*3; //3倍定时设定值 慢速启动

else if(valmt-val10<200&valmt-val10>30) //20mm---3mm

MtAdDc_mtspeed=val_mtspeed*2; //2倍定时设定值

else if(valmt-val10<300&valmt-val10>200) //30mm---20mm

{ //定时设定值

MtAdDc_mtspeed=val_mtspeed;

// P0=MtAdDc_mtspeed; //??? P0

MtAdDc_FLAG=0; //加减速标志置零,判断结束

}

}

/////

/////

else if(MtAdDc_FLAG==0) //电机减速判断

{

if(val10<300&val10>200) //小于30mm大于20mm开始减速(val_mtspeed*2)

{

MtAdDc_mtspeed=val_mtspeed*2;

}

else if(val10<200&val10>100) //小于20mm大于10mm减速延时(val_mtspeed*3)

{

MtAdDc_mtspeed=val_mtspeed*3;

}

else if(val10<100) //缓冲器值小余10mm减速延时(val_mtspeed*4)

{

MtAdDc_mtspeed=val_mtspeed*4;

}

}

/////

/////

for(k=0;k<coefficient;k++) //电机比例因子,K循环等于coefficient发一次脉冲

{

MTORCP=0; /*子函数开始*/

delay1ms(MtAdDc_mtspeed); //

MTORCP=1;

delay1ms(MtAdDc_mtspeed);

}

/////

}

}

相关推荐
Navigator_Z4 小时前
LeetCode //C - 1317. Convert Integer to the Sum of Two No-Zero Integers
c语言·算法·leetcode
不脱发的程序猿6 小时前
GD32串口数据收进内存之后DMA如何处理?
单片机·嵌入式硬件·dma·嵌入式·串口通信·gd32
冻柠檬飞冰走茶6 小时前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划
Hhy_110710 小时前
《C++深度解构06》手撕 string —— 从底层内存管理到深浅拷贝彻底吃透
c语言·开发语言·c++·学习·visual studio
曦樂~21 小时前
Cpp面筋
c语言·c++
国科安芯1 天前
83 倍:ASC0108S 在推挽和开漏之间,差的不是速度,是回程
单片机·嵌入式硬件·架构·电平转换·抗辐射
国科安芯1 天前
从遥控到自治:ASP4644S2B支撑星载电源健康管理与容错配电
网络·单片机·嵌入式硬件·安全·dcdc·低轨卫星·商业航天
rhythm-ring1 天前
《汽车热管理系统:电子水泵单线PWM双向诊断机制》
单片机·嵌入式硬件·汽车
Dev_XH1 天前
【成品设计】基于物联网的车间安全生产监控系统设计
stm32·单片机·嵌入式硬件·物联网
HUANGZHENXUAN1231 天前
最大子矩阵和:从 O(n⁴) 到 O(n³) 的列压缩 + Kadane
c语言·前端