步进电机应该是一个三相步进电机,假设分别为A相、B相、C相,其工作原理如下图所示。
我们从电源正极+V出发开始,电流经过开关KA后流经A相的两个绕组,然后到达地线上。另外两相也仍然如此。
单片机需要做的事情就是按一定的时序依次切换KA、KB、KC三个开关即可让电机正转或反转。可以用单片机的三个IO口来分别控制这三个开关,至于硬件如何实现不是本问题的重点,在此不详说了。
下图是A、B、C三相的控制波形:
图中步进时钟是单片机软件内部为编程方便所设置的一个软件时钟,周期为1ms。A相波形、B相波形、C相波形均为电流波形。
假设控制KA的单片机IO口为高电平时,对应KA开关闭合,A相电流就有电流流过,电机就转一个步距角;然后KA断开,KB闭合,电机再转一个步距角;依次时序按A→B→C→A的顺序,电机就连续转起来了。
如果要让电机反转,就按A→C→B→A的通电顺序就可以了。
需要注意的是,电机在启动时由于惯性力矩的存在,软件必须让脉冲时钟频率从慢逐渐增加到所需的频率,如果一开始就用很快的速度启动,步进电机容易失速。