在HCS08系列MCU上用软件实现仪表步进电机的驱动
本驱动程序为应用程序提供的接口函数有三个:
1.InitStepper:初始化函数,对驱动所用到的I/O口和定时器进行设置,并让步进电机转到初始位置——使仪表的指针指到零点的位置。
函数原型:void InitStepper(void);
参数:无;
返回值:无。
2.SetStepperTarget:设定步进电机的目标位置,也就是要让仪表的指针转到哪个位置(以相对于零点的角度来表示),整个转动的过程(如需要转多少步,往哪个方向转等)应用程序无需知道,而且应用程序可以指定任意目标位置。
函数原型:void SetStepperTarget(word wTargetDegree);
参数:word wTargetDegree,目标位置相对于零点的角度,其值是以(1/12)度(等于微步方式下的步距)为单位的;
返回值:无。
3.GetStepperCurrent:得到步进电机的当前位置。
函数原型:word GetStepperCurrent(void);
参数:无;
返回值:返回仪表的指针当前所指的位置(以相对于零点的角度来表示),其值也以(1/12)度(等于微步方式下的步距)为单位。
另外,在头文件Stepper.h中定义了选择驱动方式的宏,使用者修改宏定义就可以选择分步驱动方式或微步驱动方式,如下:
#define STEPPER_PARTIAL_MODE 0
#define STEPPER_MICRO_MODE !STEPPER_PARTIAL_MODE
如前所述,驱动信号的变化速度不能太快,每次变化后都必须保持一段时间不变,为了让驱动程序占用的CPU的处理时间更少,就需要用到一个定时器。除了上面的三个接口函数外,驱动程序的其余部分都在定时器的中断服务程序中运行。
在驱动程序中,用两个静态变量来保存步进电机的目标位置和当前位置,其值是到零点的步数。定时器中断由SetStepperTarget函数使能,在中断服务程序中根据目标位置和当前位置的差值来决定步进电机转动的方向和步数,然后根据选择的驱动方式执行相应的转动程序。
pwm相关文章:pwm是什么
评论