工程师在开发项目,如果想要获得较为精准的位置控制,步进电机就是其中的一个解决方案。

步进电机,它其实也是直流电机的一种,只是与普通直流电机的区别在于,步进电机转动一圈,它是按照“一步一步”完成的。

这就是它为什么叫做步进电机的原因。

显而易见,转动一圈的角度是360°,如果步进电机转动一圈需要40步,它的步距角就是9°。也就是步进电机每走一步,它转动的角度是9°。

步进电机

步距角越小,步进电机转动一圈完成的步数就越多,但它控制的位置精度也就越高。只是精度越高,也会带来一个问题,就是容易丢步。丢步就会导致误差,哎,事情真是没有完美的。

怎么控制步进电机呢?比如芯片哥想要用步进电机控制机器手臂的移动,它的驱动电路该怎么做呢?

HR8825芯片

HR8825芯片,是一个内部集成相序表功能的步进电机驱动芯片,适合2相式步进电机的控制。

HR8825芯片

什么是2相式步进电机?

步进电机内部的工作线圈有2组,就叫做2相步进电机。如果工作线圈有3组,就叫做3相步进电机。就拿电路图中的步进电机图来说,线圈有2组,就是一个2相式步进电机。

步进电机的2组线圈驱动电压,是由芯片的VMA引脚和VMB引脚分别控制。一般情况下,对于同一个步进电机,每个线圈的工作电压都是相同的,所以将VMA和VMB引脚直接短接在一起。

如果步进电机的电压想要工作在12V,只需要把VMA和VMB引脚的电压设置为12V。如果是24V,步进电机的驱动电压就变为24V了。

只要VMA和VMB引脚的电压在8V~38V之间就OK,除此之外,步进电机驱动的电流也能达到2.5A。

硬件电路

怎么用好HR8825芯片呢?让它能按照项目的开发需求来实现想要的功能呢?

首当其冲的是解决它的硬件电路设计问题。

步进电机驱动电路

在电路中,直接将芯片的AOUT1和AOUT2引脚连接到步进电机的一相线圈上,BOUT1和BOUT2引脚连接到步进电机的另一相线圈上。

这4个引脚是芯片内部的2组H桥驱动输出电路,可以直接驱动电机的转动。

其中芯片的ISENA和ISENB引脚,通过取样电阻R1和R2,用来检测电机的最大工作电流。具体的关系可以参考

I = VREF / (5 * R)

VREF是芯片的AVREF和BVREF两个引脚的电压,由于它不能超过3.5V,所以选择3.3V就可以了。

如果取样电阻R1和R2的阻值设置为0.5Ω,步进电机每相线圈最大的工作电流就为1.32A。

这是硬件电路。

芯片的右边部分,是步进电机的控制信号部分,属于软件开发的内容。

软件开发

步进电机既然有步距角这个参数,那就是不同的步进电机有不同的步距角咯。HR8825芯片适合多少步距角的呢?

查看芯片的数据手册得知,它能适合“全步”、“半步”、“1/4步”、“1/8步”、“1/16步”、“1/32步”的6种驱动步距角的模式。

是不是不明白这里面的含义?没关系,举例说明

“1/32步”,就是2相步进电机转动90°总共需要32步,也就是它每转动一步,对应的角度就是2.81°。

所以“1/32步”的步距角就是2.81°,“1/16步”的步距角就是5.62°,“1/8步”的步距角就是11.25°,“1/4步”的步距角就是22.5°,“半步”的步距角就是45°。

HR8825芯片应用电路

这6种工作模式,是由芯片的MODE0,MODE1和MODE2三个引脚的高低电平状态来设置的。在软件开发上,工程师如果让单片机输出011给到MODE0 、MODE1和MODE2三个引脚上,芯片驱动步进电机就工作在“1/8步”的步距角模式上。

HR8825芯片,做得比较好的地方在于它内部已经集成了步进电机驱动的相序表,这大大简化了软件的开发计算难。

工程师不再需要去计算每相线圈在不同角度位置需要的电流值,在软件开发上,只需要通过一个脉冲信号,输入到芯片的STEP引脚,电机就会转动“一步”。

输入多少个脉冲,步进电机就转动多少步。

芯片哥需要提醒的是,这个脉冲信号的频率,是不能超过250KHz的,建议不要取得太高。


OK,步进电机的工作模式和转动的步数,软件程序已经知道怎么做了。还有一个问题,就是如何控制步进电机的转动方向。

这就需要控制芯片的DIR引脚了。DIR引脚被拉高,如果步进电机逆时针转动的话;那么DIR引脚被拉低,步进电机就会顺时针转动。

至于其他的引脚,在软件开发上

Sleep被置为低电平,芯片进入休眠待机状态,电流为10uA,所有的功能就被关闭。

Enable被置为高电平,芯片不工作;置为低电平,芯片被使能,进入工作状态。

Decay被置为低电平,驱动电机的电流在达到工作电流后,会进入快衰状态;置为悬空NC,进入慢衰状态。这两种选择都可以,看实际项目选择的步进电机参数和开发需求。

Reset被置为低电平,芯片会进入复位状态;置为高电平,芯片正常工作。

Fault和Home两个引脚是输出功能。比如Fault就是电机的诊断功能,当Fault输出低电平,表示电机出现过流了或者过温了。


是不是就觉得OK了?No,No,No,No......

HR8825芯片,虽然能实现步进电机的驱动,但它没有解决步进电机驱动的两个“关键”问题,一个是步进电机的“丢步”问题,一个是步进电机“堵转”的问题。

这需要工程师在开发项目的过程中,要额外设计一些电路来解决了。