本文将结合具体的案例,针对纳芯微全新发布的微步控制步进电机驱动NSD8381,在用于步进电机控制的实现流程,以及堵转检测的实现流程做详细的介绍,帮助工程师能够快速构建用NSD8381驱动芯片实现控制步进电机运转和实现堵转检测的实操能力。
一、NSD8381步进电机驱动芯片介绍
NSD8381是纳芯微全新发布的车规级高集成式双相双极步进电机驱动器,可广泛适用于汽车头灯步进控制(ADB/AFS),HUD位置调节电机,热管理系统阀门中步进电机或BDC电机的驱动等。
该芯片支持最大1.35A满量程电流,包括电流斩波调节,内部最高1/32微步转换器和多种衰减模式选择使步进电机平稳运动。NSD8381支持母线欠压保护(VSUV),过流保护(OCP),温度报警(OTW/UTW)和过温保护(OTSD);同时还支持输出负载的开路诊断和过流保护。此外,NSD8381还集成了堵转检测功能,可以用于堵转故障输出。
二、 NSD8381用于步进电机控制配置以及测试案例
1)NSD8381的SPI框架结构
1. SDI的输入帧由24bit构成以下的结构
• 2bit 操作指令C1/C0,其中 00代表写操作,01代表读操作,10代表读清
• 6 bit的寄存器地址
• 16bit数据,其中包含bit 15~bit 1的数据和bit 0的奇校验位
表1:SPI 输入帧结构
2. SDO的输出帧由24bit构成以下的结构
• 8bit全局状态字节,显示返回的全局状态,如果有故障和告警,相应的bit会反馈故障状态
• 16bit返回数据,其中包含bit 15~bit 1的数据和bit 0 的奇校验位
表2:SPI 输出帧结构
2)NSD8381步进电机模式工作流程图
图1:步进电机工作流程图
硬件设备:NSD8381 Demo Board一块,步进电机,12V直流电源,USB转TTL小工具连接到上位机,信号发生器一台
注意:这里采用默认slew rate ,10v/us, 在应用中推荐把 slew rate 调快, slew rate 调快之后, dead time 也减小。调快对芯片在比较大的电流的工作场景下的功耗是有明显的好处。比如,可以配置CONFIG_4: 0x060A40, ----配置电流调制频率 20k,slew rate 70V/us,filter time 2us, 电流slow decay
CONFIG_1:0x030428----配置CTRLx (默认配置采用步进电机模式)
CONFIG_3:0x058000----使能输出,设置微步(1/16微步)
4)NSD8381步进电机测试波形
1. Slow decay模式测试波形
图2:步进电机绕组电流波形
a. 电流上升decay
b. 电流下降decay
图3:步进电机绕组电流波形decay波形
2. Mix decay模式测试波形
图4:步进电机绕组电流波形
a. 电流上升decay
b. 电流下降decay
图5:步进电机绕组电流波形decay波形
>3. Auto decay模式测试波形
图6:步进电机绕组电流波形
a. 电流上升decay
b. 电流下降decay
图7:步进电机绕组电流波形decay波形
对比三组波形,实测现象总结如下:Slow decay和Auto decay的模式下,其电流上升decay波形比较缓和,正弦波的峰值处毛刺较小,电机运行的声音比较轻微。Mix decay电流上升decay的波形分成两段,正弦波的峰值处毛刺较大,电机运行的噪音比较大一些。
在实际应用的时候,可以根据调试decay模式来获得合适电机的工作状态。
三、NSD8381用于步进电机控制堵转检测使用
1)堵转检测的原理
图8是步进电机绕组的等效模型。当电机正常转动的时候,根据公式1 可以得到电机绕组两侧的电压Vmotor。根据公式2可得到电机的反电势BEMF,其中N为线圈的绕组数量,B代表磁场强度,A是被电机磁场所包围的面积,w是电机转动的角速度。
由公式1可知,当流过电机的电流为零时,电机绕组两侧的电压是BEMF,即反电势电压。由公式2 可知,反电势电压和电机的角速度成正比,当电机堵转的时候,速度为零,此时反电势为理论上也为零。因此,可以利用检测绕组电流为零时的绕组电压来检测反电势。
公式1
公式2
图8:步进电机绕组等效模型
2)堵转检测步骤
图9:NSD8381 堵转检测流程
堵转检测过程注意点:
1. 如果涉及正转和反转的应用,需要在电机正转、反转的时候分别执行1-6步,记录高值和低值。设置CVLLA的值要满足大于正、反转的堵转值,但是远小于正、反转正常转动的反电势值。
2. CV_DELAY设置:以图10作为例子,CV_DELAY的时间必须大于图中的△X。为了确保反电势的采样点是在图中平坦的那一段,即△X后的那一段线圈电流为零的点,采集的值才准确。图10显示△X =108us,内部PWM的频率是20kHz(50us),则这个波形的CV_DELAY值需要 大于3,即大于3×50=150us。另外需要注意的是当电机转动很快的情况,可以直接设计CV_DELAY为0,此时ADC的采样点为零电流结束点。
图10:正常转动时反电势波形
3. 读取CVA,CVB,CVC,CVD以及设计CVLLA和CVLLB的值的时候,设置的寄存器位为Bit 1到Bit10,在换算电压值的时候注意需要移一位。
3)步进电机堵转检测实例
步进电机1:2kHz step频率,20kHz调制频率,正常转动时之间的OUTA1,OUTA2的反电势为3.2V,如图11。堵转时OUTA1、OUTA2之间的反电势为0.2V,如图12。
图11:电机1正常转动时OUTA1和OUTA2之间波形
图12:电机1堵转时OUTA1、OUTA2波形
步进电机2:1.65kHz step频率,20kHz调制频率,正常转动时OUTA1、OUTA2反电势为11.5V,如图13。堵转时OUTA1、OUTA2之间的反电势为1.9V,如图14。
寄存器CONFIG_5配置为寄存器0x078001(CV_DELAY=0)在零电流结束位置采样。CVLLA配置 为0x0E00DB(2.98V)。当电机堵转时,可以检测到FUNCTION_ERR置位,回读STA_1,STALL置1。
图13:电机2正常转动时OUTA1和OUTA2之间波形
图14:电机2正常堵转时OUTA1和OUTA2之间波形