·上一文章:基于Linux的温度传感器DS18B20驱动程序设计
·下一文章:数字信号控制器提供实时控制功能
图3 中断函数流程图
若判定结果为正向,则继续进行下一步判断:目标位置和当前位置是否一致。结果为反向则进入反向运动中断处理模块,流程结果类似。
判断转动一步标志位是否为1。若为1,依据当前位置从PWM数组里赋新值给PWM寄存器,步进电机行动一步,当前位置前进一步(若为反向则退后一步)并清零转动一步标志位。这样下次进入中断时,若转动一步标志位没有在主循环里重新赋值为1,步进电机就不会再次转动。
每次进入中断,当Move_time不为0时,Move_time减1,直至减为0为止。
实验结果
经过巴特沃斯二阶低通滤波后,步进电机两相电压波形都为比较平滑的正弦波,波形相位差为120°,与理论的细分波形相吻合。
步进电机从位置A移动到位置B的过程中,先加速(如果AB距离足够大,步进电机将加速到最大转速后匀速运行)。在接近位置B时,步进电机将减速,最后停止在位置B。从上图可以看出,加速阶段正选的波长逐渐变窄,减速时则逐渐变宽。
图4 步进电机匀速运转两相电压图
图5 步进电机加速状态单相电压示意图
图6 步进电机减速状态单相电压示意图
结论
利用单片机可方便的对步进电机的速度和位置进行控制,可靠地实现各种步进电机的操作,完成各种复杂工作。这里提出的步进电机分步控制方法,依靠Infineon最新的XC2267M单片机CC2模块强大的16个PWM输出通道,同时驱动4个步进电机,成功通过软件编程代替驱动芯片实现仪表盘步进电机的细分控制,运行结果稳定可靠,并节省了外部设备,降低了成本。