海藻糖是什么糖| 什么时间量血压最准确| 杂交金毛犬长什么样子| 头发少适合什么发型| 花椒木有什么作用与功效| 一九七七年属什么生肖| 女性为什么会感染巨细胞病毒| 头顶秃了一小块是什么原因怎么办| 1月出生是什么星座| 什么开窍于耳| 顺遂是什么意思| 银色山泉香水什么牌子| 不造血是什么病| 金什么| 真丝衣服用什么洗最好| e是什么单位| 什么水果最有营养| ct什么意思| 足月是什么意思| 梦见已故老人是什么预兆| 做梦梦见钓鱼是什么意思| 眼睛肿是什么原因引起的| 姓陆的女孩取什么名字好| 百香果有什么功效与作用| rangerover是什么车| 不丹为什么不跟中国建交| 什么眼霜比较好用| 五路财神都叫什么名字| 山水有相逢是什么意思| 卒中中心是干什么的| 小米是什么| 喵星人是什么意思| 为什么脸上老长痘痘| 什么的四季| 小孩晚上磨牙是什么原因引起的| 角是什么结构| 易激惹是什么意思| 德字五行属什么| 茹什么饮什么| 孕妇为什么要左侧睡不能右侧睡| qq黄钻有什么用| 老板是什么意思| 这是什么石头| 左肾小结石是什么意思| 大便特别臭是什么原因| 被隐翅虫咬了用什么药| 肺气肿吃什么食物好| 长白头发是什么原因| 强迫症是什么意思| 脾肺两虚吃什么中成药| 盆腔炎吃什么药效果好| 欺凌是什么意思| 吃喝拉撒是什么意思| 小孩睡觉趴着睡是什么原因| 玉女心经是什么意思| 突然晕倒是什么原因造成的| 骨头是什么垃圾| 肝气郁结吃什么中成药| 覅是什么意思| 什么是桥本甲状腺炎| 向日葵是什么| 今天的日子适合做什么| 向日葵代表什么意思| 肝火旺盛吃什么食物好| 牛黄清心丸适合什么人群吃| 普乐安片治什么病| 副产品是什么意思| 什么的白云| 不什么不什么的词语| 悬是什么意思| 给女生送礼物送什么好| 一朝一夕是什么意思| 现充什么意思| 斑鸠喜欢吃什么食物| 佛跳墙是什么| 手肿脚肿是什么原因引起的| 骨质断裂是什么意思| 湿疹用什么药好得最快最有效| jewelry什么意思| 身份证有x代表什么| 属龙的守护神是什么菩萨| 宝宝反复发烧是什么原因| sa什么意思| 刮痧是什么| pc是什么材料| 韭菜什么时候种最合适| 粉蒸肉的粉是什么粉| 月经总推迟是什么原因| 活化部分凝血活酶时间偏高是什么意思| 肠梗阻什么症状| 天赋是什么| 6月20日是什么星座| 什么叫边界感| 什么是远视眼| 吃什么补骨髓造血| 血糖高适合吃什么主食| 张若昀原名叫什么| 大洋马是什么意思| 有什么植物| 微信什么时候开始的| 自字五行属什么| dvt是什么意思| 马刺是什么| 巾帼不让须眉什么意思| 蚊虫叮咬涂什么药| 吃什么清理脑血管堵塞| 已故是什么意思| 什么是元气| 七杀大运是什么意思| 10月20日是什么星座| 蓝光有什么作用| 感冒头疼吃什么药| 上午8点是什么时辰| 经期吃什么缓解痛经| 血氧低吃什么药| 松鼠吃什么食物| 龙日冲狗要忌讳什么| 肿气肿用什么药比较好| 怀孕养猫对胎儿有什么影响| 腹泻可以吃什么| 谭咏麟为什么叫校长| 1月6号什么星座| 糖皮质激素是什么| 放屁太臭是什么原因| 惊厥是什么症状| 10月底是什么星座| 7.15什么星座| 白带黄什么原因| 引火归元是什么意思| 心有不甘是什么意思| 什么是短语| 什么是冷战| 尿道炎吃什么药好| 81年属鸡是什么命| 吕布的武器是什么| 竹叶青属于什么茶| 八月二十五是什么星座| 包涵是什么意思| 别开生面什么意思| 平步青云什么意思| 大腿出汗是什么原因| 绿是什么| 车厘子不能和什么一起吃| 肚子疼吃什么药管用| 养什么鱼招财转运| 什么叫活佛| 心率过低吃什么药| 农历6月是什么月| 喉咙干痒咳嗽吃什么药| 两点一线是什么意思| 冠心病什么症状| 多米诺骨牌是什么意思| 死侍是什么意思| 指甲是白色的是什么原因| co是什么气体| 基围虾不能和什么一起吃| 什么功尽弃| 骨质密度不均匀是什么意思| 细菌性结膜炎用什么眼药水| 乙肝检查挂什么科| 子时右眼跳是什么预兆| 绝世是什么意思| 护士节送什么鲜花| 晚黄瓜什么时候种| 卅什么意思| 面基什么意思| 化骨龙是什么意思| 邮件号码是什么| 嗓子痛挂什么科| 灵芝有什么功效| 浣熊吃什么食物| 没收个人全部财产是什么意思| 女娲为什么要补天| 傍家儿是什么意思| kda是什么单位| 笼中鸟是什么意思| 肩胛骨缝疼吃什么药| 亦字五行属什么| 大便不正常是什么原因造成的| 三奇贵人是什么意思| 沣字五行属什么| 苏菲是什么| 自然卷的头发适合什么发型| 色字头上一把刀什么意思| 小狗肚子里有虫子吃什么药| 血压高挂什么科| 本番是什么意思| 重度抑郁症吃什么药| 为什么一直不怀孕是什么原因| 吃什么补脑子增强记忆力最快| 三尖瓣关闭不全是什么意思| 吃什么凉血效果最好| 左心室高电压什么意思| 三七长什么样子图片| 胃上火有什么症状| 孩子病毒感染吃什么药| 卷柏属于什么植物| 溜冰是什么意思| 忠于自己是什么意思| 一箭双雕是什么意思| 我靠是什么意思| 头皮痒挂什么科| 七岁属什么生肖| 喇蛄和小龙虾什么区别| 疳积是什么意思| 从子是什么意思| 溃疡性结肠炎有什么症状| geneva是什么牌子手表| 仓鼠吃什么食物最好| 比心什么意思| 抗ro52抗体阳性是什么意思| 开普拉多的都是什么人| 过敏性紫癜不能吃什么| jc是什么牌子| 1月7号是什么星座| 杭州市市长什么级别| 含羞草为什么会害羞| 请多指教是什么意思| 香菇炒什么菜好吃| 狗咬到什么程度需要打针| 牛百叶是什么部位| 梦见大火烧山是什么意思| 手术后吃什么水果| 怀孕前三个月不能吃什么| tf口红什么牌子| 狗鱼是什么鱼| 肾不好有什么症状| 全血铅测定是什么意思| 艮是什么意思| 威士忌兑什么好喝| 什么东西蛋白质最高| 退翳什么意思| 官方旗舰店是什么意思| 撇嘴表情什么意思| 熊猫属于什么科| 吃什么食物可以降尿酸| 上尉军衔是什么级别| 血压偏低有什么危害| 偶发性房性早搏是什么意思| 肾炎是什么病| 4月是什么星座| 白玉是什么玉| 夏天为什么容易拉肚子| 长期喝酒有什么危害| hpc是什么| 冢字的意思是什么| 姑姑的孙子叫我什么| ab型和b型生的孩子是什么血型| 为什么有眼袋是什么原因引起的| 炭疽病用什么农药最好| 前列腺多发钙化灶是什么意思| 心脏不好吃什么| 梦见玉碎了是什么意思| 常山现在叫什么| 本色出演是什么意思| hpv56阳性是什么意思| 屁股沟疼是什么原因| 四月份是什么星座| 桔色搭配什么颜色好看| 皮下脂肪瘤挂什么科| 火丹是什么原因造成的| 槟榔长什么样| 竹节麻是什么面料| 湿疹什么原因引起的| 百度
"); //-->

博客专栏

EEPW首页 > 博客 > 聊一聊步进电机的几件事

日媒称中国开建第三艘航母 目标系掌控第二岛链

发布人:12345zhi 时间:2025-08-04 来源:工程师 发布文章
百度 (本文得到全国教育科学“十二五”规划国家青年基金课题(CBA120107)资助)(作者单位:浙江师范大学心理研究所)

什么是步进电机?

步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。

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

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

图片

图 1. 双极电机

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

图片

图 2. 双极步进电机

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

图片

图 3. 步进电机转动四个步骤

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

步进电机驱动器也可以使用微步进,微步进调节通过线圈的电流。典型的电机控制器可以在每一个完整的步骤中执行16个微步骤。一些芯片负责调制电流,但较旧的芯片需要为其驱动的步进电机“调谐”。微步进进一步将整个步进划分为256微步进,使典型的200步进电机变成51200步进电机!微步进还降低了电机的噪音,使其运行更平稳、更高效。

图片

图 4. 完整步骤1和2之间的半步

如何控制线圈中的电流

控制通过绕组的电流的最常见设置是使用所谓的H桥。它是一组四个晶体管,可以将每条导线拉高或拉低。你也可以用MOS管代替晶体管,但布线会有点不同。该图显示了如何通过H桥向任意方向发送电流。你只需要打开路径中的晶体管。

图片

5. 线圈中的电流方向

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

图片

图 6 . 必须确保同一侧的两个晶体管不能同时导通

这仍然不是全貌。旋转电机将产生电压。为了保护晶体管,最好放置二极管。

图片

7. 用于保护晶体管的二极管

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

图片

图8. 使用另一个晶体管来控制PNP晶体管

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

图片

图 9. NPN晶体管基极加上的限流电阻

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

图片

图10. 双H桥驱动步进电机

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

微步进

图片

图11. 脉宽调制信号

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

图片

图 12. 流经MOS管电机驱动器的电流

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

步进电机驱动实例

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

图片

图 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. 连线

图片

图 14. TMC5130与Arduino Mega 2560连接 (图片来源于Trinamic)

上图的电缆颜色

+5V - >红色

GND - >蓝色

SDO - >黄色

SDI - >橙色

SCK - >白色

CSN - >灰色

DRV_ENN - >黑色

CLK16 - >绿色

图片

图 15. 引脚对应的信号 (图片来源于Trinamic)

引脚对应的信号。在Arduino代码的注释部分记录了配置。

ARDUINO代码

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

#include <SPI.h>

#include "TMC5130_registers.h"

/* The trinamic TMC5130 motor controller and driver operates through an

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

* followed by 4 data bytes. This is 40 bits (8 bit 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 the rising 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 on Compare Match

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

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 32 data

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("\n");

Serial.print(" from register: ");

Serial.println(address,HEX);

}

void PrintHex40(uint8_t stat, uint32_t data) // 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博客上了解更多)

总结

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

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。



关键词: 步进电机

相关推荐

技术专区

关闭
头皮痒用什么洗头好 打完耳洞要注意什么 大便粘稠吃什么药 皮试阳性是什么意思 hr是什么牌子
检查宫颈做什么检查 移交是什么意思 副乳是什么意思 nc是什么意思 211和985什么意思
粤语骑马过海什么意思 车加失读什么 心脏供血不足是什么原因引起的 胆囊壁欠光滑是什么意思 变异性哮喘吃什么药
多读书有什么好处 什么是平行世界 白羊座和什么座最配 跃字五行属什么 佛法无边是什么意思
在什么中间hcv8jop8ns1r.cn 掉是什么意思hcv7jop9ns4r.cn 胃胀气适合吃什么食物hkuteam.com 兵部尚书相当于现在的什么官hcv9jop6ns8r.cn 可望不可求是什么意思hcv8jop7ns4r.cn
02年的马是什么命hcv8jop7ns9r.cn 地黄长什么样子图hcv8jop4ns6r.cn md是什么材质hcv8jop2ns2r.cn 眉毛淡的女人代表什么wzqsfys.com 脑梗原因是什么引起的hcv9jop2ns5r.cn
孕妇做唐筛是检查什么hcv8jop8ns3r.cn 一什么杏子hcv9jop0ns9r.cn 小孩发烧流鼻血是什么原因hcv9jop5ns4r.cn 人体最大的细胞是什么liaochangning.com 什么叫精索静脉曲张啊hcv8jop3ns0r.cn
吃枸杞有什么好处hcv9jop3ns4r.cn 雷震子是什么神位hcv8jop2ns4r.cn 蝴蝶的翅膀像什么hcv8jop8ns0r.cn 横空出世是什么意思hcv8jop4ns2r.cn 健康证有什么用hcv7jop9ns0r.cn
百度