摘要:本节介绍实现步进电机s曲线运动的代码
一、目标功能
实现步进电机转动总角度720°,其中加减速各90°
加速段:加速类型:s曲线
加速角度:角度为90°
起步速度:30rpm,
终止速度:500rpm
匀速段:匀速角度:角度为540°
匀速速度:500rpm
减速段:减速类型:s曲线
减速角度:角度为90°
起步速度:500rpm
终止速度:60rpm
二、生成器计算
加速参数计算
匀速参数计算,主要计算电机步数
减速参数计算
三、程序代码
//加速、匀速、减速步数#define step0 100#define step1 600#define step2 100unsigned int n=0;//步数计数变量unsigned int flag=0;//标志位,0:加速段 1:匀速段 2:减速段//加速段90°,30rpm-500rpmconst unsigned char codetimeh0[100]={0xec,0xec,0xec,0xed,0xed,0xed,0xee,0xee,0xee,0xef,0xef,0xf0,0xf0,0xf1,0xf1,0xf2,0xf2,0xf3,0xf3,0xf4,0xf4,0xf5,0xf5,0xf6,0xf6,0xf7,0xf7,0xf8,0xf8,0xf8,0xf9,0xf9,0xfa,0xfa,0xfa,0xfb,0xfb,0xfb,0xfb,0xfc,0xfc,0xfc,0xfc,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe};const unsigned char codetimel0[100]={0x78,0xb4,0xf5,0x3b,0x86,0xd6,0x2a,0x84,0xe4,0x48,0xb1,0x1f,0x92,0x9,0x83,0x1,0x82,0x5,0x8a,0x10,0x96,0x1c,0xa0,0x24,0xa5,0x23,0x9e,0x15,0x88,0xf7,0x61,0xc5,0x25,0x80,0xd5,0x26,0x71,0xb7,0xf9,0x36,0x6e,0xa3,0xd3,0x0,0x29,0x4f,0x71,0x91,0xae,0xc9,0xe1,0xf8,0xc,0x1f,0x2f,0x3f,0x4d,0x59,0x65,0x6f,0x79,0x82,0x8a,0x91,0x97,0x9d,0xa2,0xa7,0xab,0xaf,0xb3,0xb6,0xb9,0xbc,0xbe,0xc1,0xc2,0xc4,0xc6,0xc7,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xce,0xcf,0xd0,0xd0,0xd1,0xd1,0xd2,0xd2,0xd2,0xd3,0xd3,0xd3,0xd3,0xd4};//减速段90°,500rpm-60rpmconst unsigned char code timeh2[100]={0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfe,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfd,0xfc,0xfc,0xfc,0xfc,0xfc,0xfb,0xfb,0xfb,0xfb,0xfb,0xfa,0xfa,0xfa,0xfa,0xfa,0xf9,0xf9,0xf9,0xf9,0xf8,0xf8,0xf8,0xf8,0xf8,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf7,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6,0xf6};const unsigned char codetimel2[100]={0xd4,0xd3,0xd3,0xd3,0xd3,0xd2,0xd2,0xd2,0xd1,0xd1,0xd0,0xd0,0xcf,0xce,0xce,0xcd,0xcc,0xcb,0xca,0xc8,0xc7,0xc6,0xc4,0xc2,0xc0,0xbe,0xbb,0xb9,0xb6,0xb2,0xaf,0xab,0xa6,0xa1,0x9c,0x96,0x90,0x88,0x81,0x78,0x6f,0x64,0x59,0x4d,0x3f,0x31,0x21,0xf,0xfd,0xe8,0xd2,0xba,0xa0,0x84,0x66,0x46,0x24,0x0,0xd9,0xb0,0x85,0x58,0x28,0xf7,0xc4,0x8f,0x59,0x21,0xe8,0xae,0x74,0x3a,0x0,0xc6,0x8d,0x54,0x1d,0xe7,0xb3,0x81,0x50,0x22,0xf6,0xcb,0xa4,0x7e,0x5a,0x39,0x1a,0xfd,0xe2,0xc9,0xb2,0x9d,0x89,0x77,0x66,0x57,0x48,0x3c}; void main(){ while(1) { }}//定时器0中断程序void time0_int() interrupt 1{ //产生一个脉冲 pul=1; _nop_();_nop_();nop_();nop_(); pul=0; n++;//步数加1 switch (flag)//判断运动状态 { case0://加速段 { if(n==step0)//加速段完成 { n=0; flag=1; th0=timeh2[0];//装载定时寄存器匀速段初值 tl0=timel2[0]; } else { th0=timeh0[n];//装载定时寄存器加速段初值 tl0=timel0[n]; } }break; case1://匀速段 { th0=timeh2[0];//装载定时寄存器匀速段初值 tl0=timel2[0]; if(n==step1)//匀速段完成 { n=0; flag=2; th0=timeh2[n];//装载定时寄存器减速段初值 tl0=timel2[n]; } }break; case 2://减速段 { if(n==step2)//减速段完成 { n=0; flag=0; tr0=0; //电机停止 } else { th0=timeh2[n];//装载定时寄存器减速段初值 tl0=timel2[n]; } }break; default: break; }}四.总结
通过上述计算,完成s曲线加减速运动。通过调整匀速运动的角度,加减速过程不变,可以实现总转动角度的变化,适用于总转角需要变化且需要较高速度的情况,并且满足总转角应大于加减速转角之和。
对于大多数情况,加减速的过程可以合并,即用s加速的逆过程去实现减速,可以实现代码的简化。
基于DAG网络上运行的Obyte分散式分类账算法介绍
小米6什么时候上市?搜索网站偷跑小米6发布时间,将取消3.5mm耳机孔,只为防水?将配备虹膜识别,无线充电
华为宣布推出“颠覆性产品”VR Glass,打造了全新VR终端生态
飞创新品来袭!线缆拖链内置式直线电机模组
PROFINET转MODBUS RTU转换器介绍
步进电机S曲线运动的代码实现
电脑配置USB-C接口的兴起原因
LinkSwitch系列恒压/恒流式单片开关电源的应用
谁会赢?看趋势雷军会赢,但格力的“财技”或许会影响胜负
防腐磁翻板液位计安装与维护
索尼研发负责人:语音将成为VR重要交互方式
ECP5701 DC转接头应用方案
智能制造和自动化系统将成制造业必然趋势
红米6A下一代产品Redmi 7A已在工信部获得入网许可
即信ICC融合通信中台:满足多渠道的聚合接入需求,节省少几十万
一文读懂OLED产品特性、结构及市场前景
Semtech的LoRa技术成就金廷科技(YoSmart)的智能家居设备产品线
基于IC555和CD4033的计数器显示电路
8K电视或将在2019年实现商业化
新唐Arm9微处理器的简单介绍