0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

聊一聊步进电机的几件事 还有彩蛋

得捷电子DigiKey 来源:未知 2023-07-19 20:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文希望可以帮助初学者,了解步进电机工作原理以及如何驱动步进电机。然后给出一个设计实例,如何使用Arduino Mega结合ADITMC5130-EVAL来驱动步进电机。

什么是步进电机?步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。对于步进电机,每输入一个脉冲信号,转子就转动一个角度或前进一步。其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电动机。

下面看一个简单的双极电机:

ab9611e2-262c-11ee-962d-dac502259ad0.png

图 1.双极电机

双极步进电机有四根电线和两个线圈。要使其旋转,需要通过线圈发送电流。每根电线都需要能够被高低驱动。以下是如何驱动电流使步进电机旋转。

abc3b6b0-262c-11ee-962d-dac502259ad0.png图 2. 双极步进电机

要理解为什么这样做,请考虑一个只有四个步骤的简单步进电机。在第一阶段,它将磁体与第一线圈对齐。下一步将磁体旋转90度。通过第一线圈反向发送电流会反转磁体极性。相反的线圈被连接,但相对于中心磁体产生相反的磁场。abf9b1d4-262c-11ee-962d-dac502259ad0.png图 3.步进电机转动四个步骤

当然,大多数步进电机的步数超过4步。你的标准步进电机每转200步。以这种方式旋转电机称为全步进。一旦你完成了全步工作,半步是非常简单的。你可以同时通过两个线圈发送电流,这将使分辨率加倍。

步进电机驱动器也可以使用微步进,微步进调节通过线圈的电流。典型的电机控制器可以在每一个完整的步骤中执行16个微步骤。一些芯片负责调制电流,但较旧的芯片需要为其驱动的步进电机“调谐”。微步进进一步将整个步进划分为256微步进,使典型的200步进电机变成51200步进电机!微步进还降低了电机的噪音,使其运行更平稳、更高效。ac1f236a-262c-11ee-962d-dac502259ad0.png图 4.完整步骤1和2之间的半步 如何控制线圈中的电流控制通过绕组的电流的最常见设置是使用所谓的H桥。它是一组四个晶体管,可以将每条导线拉高或拉低。你也可以用MOS管代替晶体管,但布线会有点不同。该图显示了如何通过H桥向任意方向发送电流。你只需要打开路径中的晶体管。

ac4d689c-262c-11ee-962d-dac502259ad0.png5.线圈中的电流方向

你必须确保同一侧的两个晶体管不能同时导通。这将通过提供从电源到接地的低电阻路径使电路短路。你还应注意,晶体管可能需要一段时间才能从接通切换到断开。除非你知道自己在做什么,否则不建议快速切换通过线圈的电流。

ac8e7bca-262c-11ee-962d-dac502259ad0.png图 6.必须确保同一侧的两个晶体管不能同时导通这仍然不是全貌。旋转电机将产生电压。为了保护晶体管,最好放置二极管acb35508-262c-11ee-962d-dac502259ad0.png7.用于保护晶体管的二极管

这将防止电机产生高压,这可能会破坏晶体管甚至驱动器。如果驱动步进电机的电压高于MCU输出的电压,则需要添加另一个晶体管来控制PNP晶体管。

acd27adc-262c-11ee-962d-dac502259ad0.png图8. 使用另一个晶体管来控制PNP晶体管

当你打开额外的NPN晶体管时,它将允许电流从PNP晶体管的基极(引脚1)流出,从而打开它。现在所需要的只是所有NPN晶体管基极上的限流电阻。

ad047cc6-262c-11ee-962d-dac502259ad0.png图 9. NPN晶体管基极加上的限流电阻

就是这样!该H桥将控制通过其中一个绕组的电流。由于有两个绕组,我们需要将这个电路加倍。

ad2edd18-262c-11ee-962d-dac502259ad0.png图10. 双H桥驱动步进电机

现在,你可以很好地计算所需的组件。使用双H桥并不是驱动步进电机的唯一方法。你也可以购买步进电机驱动器,它将内置双H桥(尽管驱动器通常使用MOS管和其他技巧)。如果你想减少BOM数量(有时获得更多功能),我建议你看看步进电机驱动器。你需要查看数据表以了解芯片提供的功能。一些芯片只提供晶体管和二极管,而其他芯片则完全控制通过线圈的电流。

微步进

ad6bf23e-262c-11ee-962d-dac502259ad0.png图11. 脉宽调制信号

微步进包括向晶体管发送脉宽调制信号。这是一种控制电机线圈电流的简单方法。预先选择的PWM值被放置在正弦查找表中。典型地,选择20-40kHz的PWM频率。任何低于20千赫的声音,人类耳朵都能听到。频率保持低于40kHz以提高效率并减少晶体管中的功耗。当PWM信号为高时,电流流过晶体管。当PWM信号低时,电流流过二极管。这是一个非常粗糙的微步进实现,但它给出了它如何工作的一般概念。使用MOS管的电机驱动器可以控制电机电流降低或衰减的速度。驱动器的电流波形更像这样:ad80fb8e-262c-11ee-962d-dac502259ad0.png图 12. 流经MOS管电机驱动器的电流

必须为其驱动的电机手动优化快速衰减周期和慢速衰减周期。一些新芯片会根据其感应到的电流自动调整衰减周期,但旧芯片可能需要优化(或调整)。

步进电机驱动实例

实例:使用控制板Arduino Mega控制步进电机驱动板TMC5130-EVAL来驱动步进电机。

adafaa92-262c-11ee-962d-dac502259ad0.png

图 13.使用Arduino Mega控制步进电机驱动板TMC5130-EVAL

控制器Arduino Mega 2560是一款基于ATmega2560的微控制器板。它有54个数字输入/输出引脚(其中15个可以用作PWM输出)、16个模拟输入、4个UART(硬件串行端口)、一个16 MHz晶体振荡器、一个USB连接、一个电源插座、一个ICSP头和一个复位按钮。它包含支持微控制器所需的一切;只需用USB电缆将其连接到计算机,或用交流到直流适配器或电池为其供电即可开始使用。

步进电机驱动板:TMC5130是一个完全集成的步进电机驱动器和控制器系统,允许从任何微控制器远程控制步进电机。它在硬件上实现了所有实时关键任务。一旦配置,电机可以通过给出目标位置、命令归航序列或给出目标速度来驱动。使用TMC5130的好处包括:易于使用,使用256微步的电机精度,低电机噪声(无噪声隐藏斩波器),无传感器失速检测(stallGuard2),无阶跃损耗,dcStep和coolStep、UART或SPI控制接口的高效率,高电压范围,小形状因数,以及低部件数量。

1. 确保Arduino Mega与TMC5130-EVAL有电压匹配

如果Arduino是5V控制板,则必须将TMC5130-EVAL上的一个电阻从位置R3重新定位到R8。这将TMC5130的逻辑电平设置为+5V。

2. 连线

add7421e-262c-11ee-962d-dac502259ad0.png图 14. TMC5130与ArduinoMega 2560连接 (图片来源于Trinamic

上图的电缆颜色

+5V - >红色

GND - >蓝色

SDO - >黄色

SDI - >橙色

SCK - >白色

CSN - >灰色

DRV_ENN - >黑色

CLK16 - >绿色

ae1a68c8-262c-11ee-962d-dac502259ad0.png图 15. 引脚对应的信号(图片来源于Trinamic)引脚对应的信号。在Arduino代码的注释部分记录了配置。

ARDUINO代码

下面的Arduino代码不需要任何额外的库。SPI库是Arduino IDE附带的。该程序初始化TMC5130并执行简单的移动到位置周期。它将根据步进电机的接线将200全步进电机向一个方向旋转10转,向另一个方向旋转10转。请使用TMC5130数据表或TMCLIDE作为不同寄存器的参考。

向上滑动查看完整代码

#include

#include"TMC5130_registers.h"

/* The trinamic TMC5130 motorcontroller and driver operates through an

* SPI interface. Each datagram is sent to thedevice as an address byte

* followed by 4 data bytes. This is 40 bits (8bit address and 32 bit word).

* Each register is specified by a one byte(MSB) address: 0 for read, 1 for

* write. The MSB is transmitted first on therising edge of SCK.

*

* Arduino Pins Eval Board Pins

* 51 MOSI 32 SPI1_SDI

* 50 MISO 33 SPI1_SDO

* 52 SCK 31 SPI1_SCK

* 25 CS 30 SPI1_CSN

* 17 DIO 8 DIO0 (DRV_ENN)

* 11 DIO 23 CLK16

* GND 2 GND

* +5V 5 +5V

*/

int chipCS = 25;

const byte CLOCKOUT = 11;

// const byte CLOCKOUT = 9; --> Uncomment for UNO, Duemilanove,etc...

int enable = 17;

void setup() {

// put your setup code here, to run once:

pinMode(chipCS,OUTPUT);

pinMode(CLOCKOUT,OUTPUT);

pinMode(enable, OUTPUT);

digitalWrite(chipCS,HIGH);

digitalWrite(enable,LOW);

//set up Timer1

TCCR1A = bit (COM1A0); //toggle OC1A onCompare Match

TCCR1B = bit (WGM12) | bit (CS10); //CTC, noprescaling

OCR1A = 0; //output every cycle

SPI.setBitOrder(MSBFIRST);

SPI.setClockDivider(SPI_CLOCK_DIV8);

SPI.setDataMode(SPI_MODE3);

SPI.begin();

Serial.begin(9600);

sendData(0x80,0x00000000); //GCONF

sendData(0xEC,0x000101D5); //CHOPCONF: TOFF=5,HSTRT=5, HEND=3, TBL=2, CHM=0 (spreadcycle)

sendData(0x90,0x00070603); //IHOLD_IRUN:IHOLD=3, IRUN=10 (max.current), IHOLDDELAY=6

sendData(0x91,0x0000000A); //TPOWERDOWN=10

sendData(0xF0,0x00000000); // PWMCONF

//sendData(0xF0,0x000401C8); //PWM_CONF:AUTO=1, 2/1024 Fclk, Switch amp limit=200, grad=1

sendData(0xA4,0x000003E8); //A1=1000

sendData(0xA5,0x000186A0); //V1=100000

sendData(0xA6,0x0000C350); //AMAX=50000

sendData(0xA7,0x000186A0); //VMAX=100000

sendData(0xAA,0x00000578); //D1=1400

sendData(0xAB,0x0000000A); //VSTOP=10

sendData(0xA0,0x00000000); //RAMPMODE=0

sendData(0xA1,0x00000000); //XACTUAL=0

sendData(0xAD,0x00000000); //XTARGET=0

}

void loop()

{

// put your main code here, to run repeatedly:

sendData(0xAD,0x0007D000); //XTARGET=512000 |10 revolutions with micro step = 256

delay(20000);

sendData(0x21,0x00000000);

sendData(0xAD,0x00000000); //XTARGET=0

delay(20000);

sendData(0x21,0x00000000);

}

void sendData(unsigned long address,unsigned long datagram)

{

//TMC5130 takes 40 bit data: 8 address and 32data

delay(100);

uint8_t stat;

unsigned long i_datagram;

digitalWrite(chipCS,LOW);

delayMicroseconds(10);

stat = SPI.transfer(address);

i_datagram |= SPI.transfer((datagram >>24) & 0xff);

i_datagram <<= 8;

i_datagram |= SPI.transfer((datagram >>16) & 0xff);

i_datagram <<= 8;

i_datagram |= SPI.transfer((datagram >>8) & 0xff);

i_datagram <<= 8;

i_datagram |= SPI.transfer((datagram) &0xff);

digitalWrite(chipCS,HIGH);

Serial.print("Received: ");

PrintHex40(stat, i_datagram);

Serial.print(" ");

Serial.print(" from register: ");

Serial.println(address,HEX);

}

void PrintHex40(uint8_t stat, uint32_tdata) // prints 40-bit data in hex with leading zeroes

{

char tmp[16];

uint16_t LSB = data & 0xffff;

uint16_t MSB = data >> 16;

sprintf(tmp, "0x%.2X%.4X%.4X", stat,MSB, LSB);

Serial.print(tmp);

}

代码来源于:Trinamic 博客(关于代码的问题,可以去Trinamic博客上了解更多)

总结

希望这篇文章,可以帮助您了解步进电机的工作原理以及如何驱动步进电机同时驱动步进电机的技术已经很成熟,善于利用现有的硬件和代码,才能事半功倍。

更多有关电机技术文章,请点击以下链接,也欢迎大家在文末留言讨论。

小编的话

随着科学技术的发展,特别是永磁材料、半导体技术、计算机技术的发展,步进电机在众多领域得到了广泛应用,包括工业机器中的汽车仪表和机床自动化生产设备、机器人、安防摄像机、医用扫描仪、液压泵、呼吸机和血液分析仪,以及消费摄像机、商用机器及电脑周边等应用。您是否正在利用步进电机进行电机系统的设计?您在步进电机驱动过程中有哪些设计经验、心得或疑问?欢迎留言,分享和讨论!

秘技知识学不停 专属福利享不停

就等您加入!

点此登记

赚积分、换好礼

立即到「会员权益」查看您的礼遇! 如有任何问题,欢迎联系得捷电子DigiKey的客服团队

中国(人民币)客服

ae893bea-262c-11ee-962d-dac502259ad0.png400-920-1199ae97b79c-262c-11ee-962d-dac502259ad0.png服务支持 > 联系客服 > 微信客服aeaead80-262c-11ee-962d-dac502259ad0.pngservice.sh@digikey.comaebdfb6e-262c-11ee-962d-dac502259ad0.png QQ在线实时咨询:4009201199

中国(美金)/ 香港客服

ae893bea-262c-11ee-962d-dac502259ad0.png

400-882-4440

ae893bea-262c-11ee-962d-dac502259ad0.png852-3104-0500aeaead80-262c-11ee-962d-dac502259ad0.pngchina.support@digikey.comaf0c19a2-262c-11ee-962d-dac502259ad0.png

af361e3c-262c-11ee-962d-dac502259ad0.png

点击下方“阅读原文”查看更多

让我知道你在看af74a706-262c-11ee-962d-dac502259ad0.png


原文标题:聊一聊步进电机的几件事 还有彩蛋

文章出处:【微信公众号:得捷电子DigiKey】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 得捷电子
    +关注

    关注

    1

    文章

    255

    浏览量

    13469

原文标题:聊一聊步进电机的几件事 还有彩蛋

文章出处:【微信号:得捷电子DigiKey,微信公众号:得捷电子DigiKey】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    硅谷的权力的游戏(下)

    行业芯事
    江苏易安联
    发布于 :2025年12月03日 09:50:13

    硅谷的权力的游戏(上)

    行业资讯
    江苏易安联
    发布于 :2025年11月20日 09:55:55

    伺服电机步进电机的核心区别

    大家在运动控制的时候是用伺服电机的还是用步进电机做定位控制了?为什么有时候用伺服电机,有时候又步进电机
    的头像 发表于 10-15 14:32 1382次阅读
    伺服<b class='flag-5'>电机</b>和<b class='flag-5'>步进</b><b class='flag-5'>电机</b>的核心区别

    如何减少步进电机的发热?

    步进电机的发热问题是个需要关注的重要方面,发热不仅影响电机的效率,还可能对电机的寿命和性能产生负面影响。为了减少
    的头像 发表于 05-11 17:51 754次阅读

    ZXDoc》之CAN总线仿真、面板仿真

    。什么是仿真?CAN总线仿真是种通过虚拟化技术模拟CAN(FD)通信环境的方法,用于在无物理硬件或脱离实际系统的情况下,对ECU、传感器、执行器等节点的通信行为
    的头像 发表于 05-09 11:30 1075次阅读
    《<b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>ZXDoc》之CAN总线仿真、面板仿真

    技术干货 | 功能安全中的ASIL 等级

    项目开发初期概念阶段就要根据相关项的功能进行失效分析,从而确定ASIL等级,以量化的方法平衡该项目开发时的安全与成本。、ASIL等级定义ASIL等级的确定基于三
    的头像 发表于 05-08 14:47 2182次阅读
    技术干货 | <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>功能安全中的ASIL 等级

    刹车步进电机的特点

    刹车步进电机作为种结合了步进电机精确控制与制动功能的特种电机,其独特的设计和工作原理使其在需要
    的头像 发表于 04-25 15:34 1094次阅读
    刹车<b class='flag-5'>步进</b><b class='flag-5'>电机</b>的特点

    正点原子 AI BOX0 智能伴侣,1.54寸高清屏+长效续航,语音畅,情景对话,知识科普,多色可选,随身携带!

    品非它莫属! 为什么选择小智AI? 真人级交互体验 ① AI情感对话:不止问答,更能陪你心事、讲笑话,像朋友样懂你! ② 10+音色百变:温柔御姐、萌趣童声、磁性男神… 每天换种声音陪伴
    发表于 04-24 16:11

    步进电机过载怎么处理

    步进电机过载时,可以采取以下措施进行处理: 、降低电机负载 1. 减少负载:通过增加传动比例、优化机械设计等方式来减轻步进
    的头像 发表于 04-21 07:41 1020次阅读

    为什么自动驾驶的越来越多,无人驾驶的越来越少?

    和自动驾驶有什么区别?为什么现在直都在自动驾驶,却鲜少有企业提无人驾驶?今天智驾最前沿就围绕这个话题和大家简单聊聊。 自动驾驶和无人驾驶有什么关联? 人们对于自动驾驶汽车的梦想其实已经有近个世纪了,普遍被人认可
    的头像 发表于 02-23 10:52 1008次阅读
    为什么<b class='flag-5'>聊</b>自动驾驶的越来越多,<b class='flag-5'>聊</b>无人驾驶的越来越少?

    步进电机的控制实现方法

          步进电机,作为种将电脉冲信号转换为相应角位移或线位移的电动机,是现代数字控制系统中不可或缺的重要组件。其工作原理基于电磁学原理,通过接收数字控制信号(电脉冲信号)并转化为机械位移,
    的头像 发表于 01-21 16:43 2288次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>的控制实现方法

    体式步进电机是属于什么类型的电机

    体式步进电机种将步进电机与驱动器集成在起的设
    的头像 发表于 01-13 16:27 914次阅读
    <b class='flag-5'>一</b>体式<b class='flag-5'>步进</b><b class='flag-5'>电机</b>是属于什么类型的<b class='flag-5'>电机</b>?

    步进电机的详解解答

    步进电机,别名脉冲马达,是种将电脉冲信号转变为角位移或线位移的开环控制电机。它是现代数字程序控制系统中的主要执行元件,广泛应用于数控机床、智能仪器和自动控制等领域。
    的头像 发表于 12-29 09:41 1574次阅读

    步进电机怎么选型?

    1、电机怎么选? 步进角度:计算所需的步进角度,即电机每次接收到个脉冲时转动的角度。 转速范围:确定理想的转速范围,包括最低和最高转速
    的头像 发表于 12-17 10:06 1458次阅读
    <b class='flag-5'>步进</b><b class='flag-5'>电机</b>怎么选型?

    通过具体案例,选择合适的步进电机

          步进电机作为种广泛应用于自动化控制领域的执行元件,其选型过程至关重要。正确的选型不仅能确保系统的高效稳定运行,还能有效降低成本,提升整体性能。本文将从步进
    的头像 发表于 12-13 07:34 2450次阅读
    通过具体案例,选择合适的<b class='flag-5'>步进</b><b class='flag-5'>电机</b>