步进电机的控制需要对控制脉冲进行精确计数,通常利用cpu的pwm信号作为步进电机控制脉冲,并利用pwm自身的中断功能,每输出一个脉冲产生一次中断,然后计数,以实现对输出脉冲个数的控制。但在wince上系统直接实现上述控制过程是有因难的,由于操作系统线程调度,wince驱动中对中断的响应会有几十到几百微秒的延时,这显然不能满足高速pwm计数的需求,同时频繁的中断也会对整个系统的性能产生影响。
下图是基于英创工控主板em9380的步进电机控制示意图。em9380是英创公司推出的面向实时控制应用的工控主板,预装了正版的wince6.0操作系统,在主板上集成了两个cpu,主cpu是450mhz的arm9,运行wince系统,负责通讯管理,人机交互等,从cpu采用了arm cortex-m3,专门用做实时控制应用。
em9380步进电机控制
对于步进电机的控制,用户只需要在熟悉的vs2005(vs2008)开发环境下,通过简单的api函数mcu_pwm_channel()将控制参考传送给cortex-m3,就可以实现频率可达100khz,可计数的pwm脉冲输出。mcu_pwm_channel()函数说明如下:
// mcu pwm操作:启动/停止pwm通道, 启动参数包括频率、占空比和初始极性
bool mcu_pwm_channel(
handle hmcu,
dword dwch, // pwm通道号, = 3, 4, 5, 6, 7, 8
dword dwfreq, // pwm输出频率,单位hz,=0:停止pwm输出
dword dwduty, // pwm输出占空比,单位.1%, 输入范围= 0-1000
dword dwpol, // pwm初始极性,= 0: 低电平, = 1: 高电平
dword dwnum=0); // pwm脉冲个数, 缺省值=0:连续输出
em9380 pwm(pwm3~pwm8)实时控制应用举例:
// 打开mcu驱动,输入参数固定为0
handle hmcu = openmcu( 0 );
// 控制pwm3以频率100khz,每个脉冲25%的低电平输出3个脉冲
mcu_pwm_channel(hmcu, 3, 100000, 250, 0, 3 );
// 控制pwm4以频率100khz,每个脉冲25%的高电平输出3个脉冲
mcu_pwm_channel(hmcu, 4, 100000, 250, 1, 3 );
// 控制pwm5输出5mhz,50%占空比的连接pwm信号,dwnum参数使用缺省值
mcu_pwm_channel(hmcu, 5, 5000000, 500, 0);
// 控制pwm5停止输出
mcu_pwm_channel(hmcu, 5, 0, 0, 0);
// 关闭mcu驱动,释放相应资源
closemcu( hmcu );
执行上述代码后pwm3与pwm4的输出波形如下:(注:下图只是为了说明pol参考对输出波形的影响,实际上pwm3与pwm4并不是同步输出的,em9380的其它pwm暂时也不具有同步功能)
pwm输出波形
em9380可以支持8路pwm输出,其中6路是从从cpu crotex-m3上引出的,支持pwm输出计数,他们与gpio管脚复用关系如下:
em9380 gpio#
pwm通道
备注
gpio20
pwm1
gpio21
pwm2
gpio4
pwm3
可计数
gpio5
pwm4
可计数
gpio6
pwm5
可计数
gpio7
pwm6
可计数
gpio0
pwm7
可计数
gpio3
pwm8
可计数
中断触发定时器:99秒计时+99秒倒计时
如何可以对芯片开路点进行定位
AR/VR:呈现在眼前的另一个世界
华为云数字化制品仓,引领企业智能化转型之路
RFID具备怎样独特的优势
英创信息技术WinCE工控主板的步进电机控制介绍
独具大屏护眼优势的海信激光电视国庆受热捧,销量暴增5倍
Molex推出Temp-Flex混合型带状电缆
照明工程如何构建设计的整体协调性
英伟达似乎并不在意和特斯拉保持“若即若离的关系”
如何防止PoE接口应用差分模式的瞬态电压威胁
华为P50系列即将准备进入量产,首发搭载液态镜头和全新的鸿蒙系统
物联网网关有什么作用,如何工作?
一加5正式发布,明天开卖!2999元买一加5还是买小米6?
3G视频需看ISP脸色
智能充电的未来发展趋势
NB-IoT应用的规模部署已经从中国走向亚洲
海尔U+智能套装SmartCare 引领智慧生活生态圈
SIGFOX携手TI共同打造高成本效益、远程、低功耗物联网连接
AMDRadeonVII显卡新驱动比首发驱动平均游戏性能提升0.65%