行业资讯
HOME
行业资讯
正文内容
12v步进电机 步进电机驱动NSD8381调试指南
发布时间 : 2025-04-04
作者 : 小编
访问数量 : 23
扫码分享至微信

步进电机驱动NSD8381调试指南

步进电机驱动NSD8381调试指南###

本文将结合具体的案例,针对纳芯微全新发布的微步控制步进电机驱动NSD8381,在用于步进电机控制的实现流程,以及堵转检测的实现流程做详细的介绍,帮助工程师能够快速构建用NSD8381驱动芯片实现控制步进电机运转和实现堵转检测的实操能力。

1

步进电机驱动芯片NSD8381介绍

NSD8381是纳芯微全新发布的车规级高集成式双相双极步进电机驱动器,可广泛适用于汽车头灯步进控制(ADB/AFS),HUD位置调节电机,热管理系统阀门中步进电机或BDC电机的驱动等。

该芯片支持最大1.35A满量程电流,包括电流斩波调节,内部最高1/32微步转换器和多种衰减模式选择使步进电机平稳运动。NSD8381支持母线欠压保护(VSUV),过流保护(OCP),温度报警(OTW/UTW)和过温保护(OTSD);同时还支持输出负载的开路诊断和过流保护。此外,NSD8381还集成了堵转检测功能,可以用于堵转故障输出。

2

用于步进电机控制配置及测试案例

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:步进电机工作流程图

3)NSD8381步进电机测试硬件组成以及软件配置

硬件设备:NSD8381 Demo Board一块,步进电机,12V直流电源,USB转TTL小工具连接到上位机,信号发生器一台

SPI寄存器配置:

CONFIG_6:0x081013----配置步进电机电流大小(HOLD:50mA; full 571mA)

CONFIG_4:0x060841----配置电流调制频率 20k,slew rate 10V/us,filter time 2us,电流slow decay

注意:这里采用默认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/16微步,满量程电流571mA,电流调制频率20kHz, 电流调制 filter time 2us,STEP脉冲 1kHz

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模式来获得合适电机的工作状态。

3

用于步进电机控制堵转检测使用

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。

寄存器CONFIG_5配置为寄存器0x078E00(CV_DELAY=7),根据图11计算为350us,满足CV_DELAY的延时采样点。CVLLA配置 为0x0E0014 (0.5V)。当电机堵转时,可以检测到FUNCTION_ERR置位,回读STA_1,STALL置1。

图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之间波形

纳芯微电子(简称纳芯微,科创板股票代码688052)是高性能高可靠性模拟及混合信号芯片公司。自2013年成立以来,公司聚焦传感器、信号链、电源管理三大方向,为汽车、工业、信息通讯及消费电子等领域提供丰富的半导体产品及解决方案。

纳芯微以『“感知”“驱动”未来,共建绿色、智能、互联互通的“芯”世界』为使命,致力于为数字世界和现实世界的连接提供芯片级解决方案。

Note-15使用A4988控制步进电机

如果需要控制一堆步进电机,那么只使用一个Arduino来控制,就会占用大量的处理时间,而无法处理其他事情,除非使用一个独立的专用步进电机驱动器:A4988。

A4988只需两个引脚就可以控制双极步进电机(如NEMA 17)的速度和旋转方向。

步进电机使用一个齿轮和电磁铁旋转,通过脉冲控制电机的行为,一次“一步”。

脉冲的顺序决定了电机的旋转方向。脉冲的频率决定了电机的速度。脉冲的数量决定了电机转多远。

A4988步进电机驱动芯片

该模块的核心是来自Allegro - A4988的微步驱动器,其体型只有0.8″× 0.6″。

A4988步进电机驱动器的输出驱动能力高达35V和±2A。这可以控制双极步进电机(NEMA 17)每个线圈高达2A的输出电流。

A4988驱动自带控制程序,能简化操作,只需2个引脚就能完成控制

一个是控制步数另一个用来控制旋转方向。

A4988驱动提供五种不同的步进细分

全步、半步、四分之一步、八分之一步十六分之一步。

技术规格

A4988驱动引脚图

A4988实际上需要两个电源连接。 VDD和GND用于驱动内部逻辑电路,范围从3V到5.5 V。VMOT和GND为电机提供电源,范围从8V到35V。根据数据表,电机电源需要一个合适的去耦电容,以能够维持4A电流。该驱动板上有low-ESR陶瓷电容器,这使它容易受到电压峰值的影响。在某些情况下,这些峰值可能超过35V (A4988的最大电压额定值),这有可能永久损坏电路板甚至电机。保护驱动器不受这种峰值影响的一种方法是在电机电源引脚上放置一个大的100μF(至少47μF)电解电容。微步选择引脚A4988驱动允许通过将单个步进划分为更小的步进来实现微步。这是通过使用中间值电流激励线圈来实现的。例如,如果选择驱动NEMA 17(1.8°步进角度或200步/转)工作在四分之一步模式,电机每转一圈将需要800微步。 A4988驱动有三个步长(分辨率)设置引脚,即MS1, MS2和MS3。通过将这些引脚设置为适当的逻辑电平,可以将电机设置为五种不通的细分模式。 这三个微步选择引脚被内部下拉电阻拉低,所以如果三个引脚都悬空则将在全步进模式下运行。控制输入引脚:A4988有两个控制输入- STEP和DIR STEP步进输入控制电机的微步。每个发送到该引脚的HIGH脉冲根据由微步选择引脚决定的微步数驱动电机。脉冲越快,电机转得越快。DIR输入控制电机的旋转方向。高电平驱动电机顺时针方向,低电平驱动电机逆时针方向。如果希望电机只在一个方向上旋转,可以将DIR直接连接到VCC或GND。STEP和DIR引脚在内部不会被拉到任何特定的电压,所以应用中不应该让悬空。用于控制电源状态的引脚A4988有三个独立的输入控制其电源状态:EN, RST和SLP。 EN是低电平触发引脚。当这个引脚被拉低时,A4988驱动被启用。默认情况下,这个引脚被拉低,所以驱动总是启用的,除非拉高则禁用。SLP是低电平触发引脚。把这个引脚拉低,驱动器进入睡眠模式,最大限度地降低功耗。当电机不使用的时候可以使用这个,以节省电力。RST是低电平触发引脚。当这个引脚被拉为LOW时,所有的STEP输入都被忽略。它还通过将内部转换器设置为预定义的home状态来重置驱动。home状态是电机启动的初始位置,它取决于微步分辨率设定。如果不使用RST这个引脚,可以把它连接到相邻的SLP/SLEEP引脚上,使它为高电平并启用驱动。输出引脚A4988电机驱动器的输出通道在模块的一侧,包括1B, 1A, 2A和2B。 可以连接任何中小型双极步进电机(如NEMA 17)。模块上的每个输出引脚可以向电机输出高达2A的电流。然而,提供给电机的电流取决于系统的电源、冷却系统和限流设置。冷却系统-散热器A4988驱动IC的过度功耗会导致温度升高,如果超过其容量可能会损坏IC。尽管A4988驱动IC每线圈的最大额定电流为2A,但在没有散热器的情况下,该芯片每线圈只能提供大约1A电流而不会过热。如果每个线圈要得到超过1A电流,散热器或其他冷却方法是必需的。 A4988驱动通常带有散热器。建议在使用前先安装。电流限制在驱动电动机之前,需要调整A4988限制通过步进线圈的最大电流量,防止超过电机的额定电流。 为了设置电流限制,A4988驱动器上提供了一个小型微调电位器。方法1:通过测量“ref”引脚上的电压(Vref)来确定电流限制。查看步进电机的数据表。记下它的额定电流。如NEMA 17 200 steps/rev, 12V 350mA。断开三个微步选择引脚,将驱动置于全步模式。保持电机在一个固定的位置,不考虑STEP输入。测量可调电阻电压(Vref),并调整它。参考电压计算公式 比如电机额定电流350mA,则参考电压=0.35/2.5=0.14V。 一种简单的方法是使用鳄鱼夹夹在金属螺丝刀柄上,并将其连接到万用表上,这样就可以同时测量和调整电压。方法2:通过测量流过线圈的电流来确定电流限制。步骤同方法1 如果更改了逻辑电压(VDD),则需要重新进行此调整。

将A4988步进电机驱动器连接到Arduino

将VDD和GND (VDD旁边)连接到Arduino上的5V和接地引脚。将DIR和STEP输入引脚连接到Arduino上的#2和#3数字输出引脚。将步进电机连接到2B, 2A, 1A和1B引脚上注意:在驱动器运行时连接或断开步进电机可能损坏驱动器。将RST引脚连接到相邻的SLP/SLEEP引脚,以保持驱动器为启用状态。要在全步进模式下操作电机,请保持三个微步选择引脚断开连接。将电机电源连接到VMOT和GND引脚上。电机电源接入100μF去耦电解电容,以避免大的电压峰值。

Arduino代码--不使用库

// Define pin connections & motor's steps per revolution

const int dirPin = 2;

const int stepPin = 3;

const int stepsPerRevolution = 200;

void setup()

{

// Declare pins as Outputs

pinMode(stepPin, OUTPUT);

pinMode(dirPin, OUTPUT);

}

void loop()

{

// Set motor direction clockwise

digitalWrite(dirPin, HIGH);

// Spin motor slowly

for(int x = 0; x < stepsPerRevolution; x++)

{

digitalWrite(stepPin, HIGH);

delayMicroseconds(2000);

digitalWrite(stepPin, LOW);

delayMicroseconds(2000);

}

delay(1000); // Wait a second

// Set motor direction counterclockwise

digitalWrite(dirPin, LOW);

// Spin motor quickly

for(int x = 0; x < stepsPerRevolution; x++)

{

digitalWrite(stepPin, HIGH);

delayMicroseconds(1000);

digitalWrite(stepPin, LOW);

delayMicroseconds(1000);

}

delay(1000); // Wait a second

}

在loop中,电机先缓慢顺时针旋转,间隔1秒后再快速逆时针旋转。控制电机方向:DIR引脚设置为HIGH或LOW,以控制电机的旋转方向。HIGH高电平将使电机顺时针方向转动,LOW低电平将使电机逆时针方向转动。控制速度:电机的速度是由发送到STEP引脚的脉冲频率决定的。脉冲频率越高,电机运行越快。脉冲就是把输出拉高,等待一小会儿,然后拉低,再等待。通过改变两个脉冲之间的延迟,可以改变了这些脉冲的频率以及电机的速度。

Arduino代码:使用accelstepper库

对于简单的、单一的电机应用来说,控制步进器不需要库是完全没问题的。但是当想要控制多个步进时,就需要一个库。

accelerstepper步进电机库

加减速多个同步步进器,每个步进器都有独立的同步步进。

安装accelerstepper库

arduino代码

// Include the AccelStepper Library

#include <AccelStepper.h>

// Define pin connections

const int dirPin = 2;

const int stepPin = 3;

// Define motor interface type

#define motorInterfaceType 1

// Creates an instance

AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);

void setup() {

// set the maximum speed, acceleration factor,

// initial speed and the target position

myStepper.setMaxSpeed(1000);

myStepper.setAcceleration(50);

myStepper.setSpeed(200);

myStepper.moveTo(200);

}

void loop() {

// Change direction once the motor reaches target position

if (myStepper.distanceToGo() == 0)

myStepper.moveTo(-myStepper.currentPosition());

// Move the motor one step

myStepper.run();

}

motorInterfaceType设置为1,1表示带有步进和方向引脚的外部步进驱动器。由于NEMA 17每转200步,电机的步数也被设置为200步。在loop函数中,使用If语句检查电机需要移动多远(通过读取distanceToGo属性),直到它到达目标位置(通过moveTo设置)。一旦distanceToGo达到零,通过改变moveTo位置为其当前位置的负数,电机向相反的方向旋转。run()函数启动电机运转。

相关问答

12v步进电机带动多大?

12V步进电机:选用的步进电机(55BY48H02:电压12V电流0.34A相数4电阻36Ω)主要参数:永磁式二相的步进电机,工作电压12V,步距角7.5度,每半步3.75度。步进...

步进电机额定电压24v可以用12v供电吗?

额定电压是5V的步进电机不能直接用12V供电。经过一些方法改变,可以实现12V供电,方法如下:1、增加5V稳压电路,采用DC-DC降压芯片、三端稳压器(包括扩流电...

步进电机12v和24v有什么区别?

步进电机的工作电压通常指的是驱动电路的电压,而不是电机本身的额定电压。步进电机的额定电压取决于具体型号和规格。一般来说,步进电机的驱动电路工作电压范...

朋友们谁清楚!!河北放心的9-12V步进电机,9-12V步进电机排...

[回答]步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(...

步进电机控制器dzh3-8a参数?

步进电机控制器DZH3-8A的参数如下:1.电源电压:DC12V-24V2.额定电流:最大3A3.细分设置:全细分(1-512细分)4.控制方式:全数字化、自动识别三相四线和四相...

步进电机接收的脉冲还是电压?

直流步进电机的工作电压值,是脉冲的电压值。步进电机的工作电压是12v,频率200hz,那么他每相收到的脉冲电压也是12v。但要再作点说明,给步进电机加脉冲不同于...

42步进电机是多少v电压?

应该是定电流驱动方式,这种芯片可以根据需要动态调整给电机的电压,所以虽然步进电机相电机是12V,驱动电压是24V,是没有问题的,相反,如果驱动电压和相电压是...

35byj412步进电机参数?

你好,35BYJ412步进电机是一种四相八线式步进电机,其参数如下:-步距角:5.625度/步-相电阻:50欧姆/相-相电感:25mH/相-额定电压:12VDC-额定电流:...

步进电机怎么控制?

1、步进电机动作的话要靠驱动器来驱动的,步进电机也叫脉冲电机,给一个脉冲转一个角度。12V的话要控制要先买个开关电源,把220V变成12V接到驱动器,再用驱动器...

步进脉冲方向信号电源多少v?

一般步进电机驱动器的输入信号是适应5V电平的。如果控制信号的电压大于5V,还得外加限流电阻。至于外加电阻的大小在驱动器说明文档中应该会加以说明的。不过...

 陈倩楠  张江汤臣豪园三期 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部