0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

聊一聊步進電機的幾件事 還有彩蛋

得捷電子DigiKey ? 來源:未知 ? 2023-07-19 20:10 ? 次閱讀

本文希望可以幫助初學(xué)者,了解步進電機工作原理以及如何驅(qū)動步進電機。然后給出一個設(shè)計實例,如何使用Arduino Mega結(jié)合ADITMC5130-EVAL來驅(qū)動步進電機。

什么是步進電機?步進電機是一種將電脈沖信號轉(zhuǎn)換成相應(yīng)角位移或線位移的電動機。對于步進電機,每輸入一個脈沖信號,轉(zhuǎn)子就轉(zhuǎn)動一個角度或前進一步。其輸出的角位移或線位移與輸入的脈沖數(shù)成正比,轉(zhuǎn)速與脈沖頻率成正比。因此,步進電動機又稱脈沖電動機。

下面看一個簡單的雙極電機:

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

圖 1.雙極電機

雙極步進電機有四根電線和兩個線圈。要使其旋轉(zhuǎn),需要通過線圈發(fā)送電流。每根電線都需要能夠被高低驅(qū)動。以下是如何驅(qū)動電流使步進電機旋轉(zhuǎn)。

abc3b6b0-262c-11ee-962d-dac502259ad0.png圖 2. 雙極步進電機

要理解為什么這樣做,請考慮一個只有四個步驟的簡單步進電機。在第一階段,它將磁體與第一線圈對齊。下一步將磁體旋轉(zhuǎn)90度。通過第一線圈反向發(fā)送電流會反轉(zhuǎn)磁體極性。相反的線圈被連接,但相對于中心磁體產(chǎn)生相反的磁場。abf9b1d4-262c-11ee-962d-dac502259ad0.png圖 3.步進電機轉(zhuǎn)動四個步驟

當(dāng)然,大多數(shù)步進電機的步數(shù)超過4步。你的標(biāo)準(zhǔn)步進電機每轉(zhuǎn)200步。以這種方式旋轉(zhuǎn)電機稱為全步進。一旦你完成了全步工作,半步是非常簡單的。你可以同時通過兩個線圈發(fā)送電流,這將使分辨率加倍。

步進電機驅(qū)動器也可以使用微步進,微步進調(diào)節(jié)通過線圈的電流。典型的電機控制器可以在每一個完整的步驟中執(zhí)行16個微步驟。一些芯片負責(zé)調(diào)制電流,但較舊的芯片需要為其驅(qū)動的步進電機“調(diào)諧”。微步進進一步將整個步進劃分為256微步進,使典型的200步進電機變成51200步進電機!微步進還降低了電機的噪音,使其運行更平穩(wěn)、更高效。ac1f236a-262c-11ee-962d-dac502259ad0.png圖 4.完整步驟1和2之間的半步 如何控制線圈中的電流控制通過繞組的電流的最常見設(shè)置是使用所謂的H橋。它是一組四個晶體管,可以將每條導(dǎo)線拉高或拉低。你也可以用MOS管代替晶體管,但布線會有點不同。該圖顯示了如何通過H橋向任意方向發(fā)送電流。你只需要打開路徑中的晶體管。

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

你必須確保同一側(cè)的兩個晶體管不能同時導(dǎo)通。這將通過提供從電源到接地的低電阻路徑使電路短路。你還應(yīng)注意,晶體管可能需要一段時間才能從接通切換到斷開。除非你知道自己在做什么,否則不建議快速切換通過線圈的電流。

ac8e7bca-262c-11ee-962d-dac502259ad0.png圖 6.必須確保同一側(cè)的兩個晶體管不能同時導(dǎo)通這仍然不是全貌。旋轉(zhuǎn)電機將產(chǎn)生電壓。為了保護晶體管,最好放置二極管。acb35508-262c-11ee-962d-dac502259ad0.png7.用于保護晶體管的二極管

這將防止電機產(chǎn)生高壓,這可能會破壞晶體管甚至驅(qū)動器。如果驅(qū)動步進電機的電壓高于MCU輸出的電壓,則需要添加另一個晶體管來控制PNP晶體管。

acd27adc-262c-11ee-962d-dac502259ad0.png圖8. 使用另一個晶體管來控制PNP晶體管

當(dāng)你打開額外的NPN晶體管時,它將允許電流從PNP晶體管的基極(引腳1)流出,從而打開它?,F(xiàn)在所需要的只是所有NPN晶體管基極上的限流電阻。

ad047cc6-262c-11ee-962d-dac502259ad0.png圖 9. NPN晶體管基極加上的限流電阻

就是這樣!該H橋?qū)⒖刂仆ㄟ^其中一個繞組的電流。由于有兩個繞組,我們需要將這個電路加倍。

ad2edd18-262c-11ee-962d-dac502259ad0.png圖10. 雙H橋驅(qū)動步進電機

現(xiàn)在,你可以很好地計算所需的組件。使用雙H橋并不是驅(qū)動步進電機的唯一方法。你也可以購買步進電機驅(qū)動器,它將內(nèi)置雙H橋(盡管驅(qū)動器通常使用MOS管和其他技巧)。如果你想減少BOM數(shù)量(有時獲得更多功能),我建議你看看步進電機驅(qū)動器。你需要查看數(shù)據(jù)表以了解芯片提供的功能。一些芯片只提供晶體管和二極管,而其他芯片則完全控制通過線圈的電流。

微步進

ad6bf23e-262c-11ee-962d-dac502259ad0.png圖11. 脈寬調(diào)制信號

微步進包括向晶體管發(fā)送脈寬調(diào)制信號。這是一種控制電機線圈電流的簡單方法。預(yù)先選擇的PWM值被放置在正弦查找表中。典型地,選擇20-40kHz的PWM頻率。任何低于20千赫的聲音,人類耳朵都能聽到。頻率保持低于40kHz以提高效率并減少晶體管中的功耗。當(dāng)PWM信號為高時,電流流過晶體管。當(dāng)PWM信號低時,電流流過二極管。這是一個非常粗糙的微步進實現(xiàn),但它給出了它如何工作的一般概念。使用MOS管的電機驅(qū)動器可以控制電機電流降低或衰減的速度。驅(qū)動器的電流波形更像這樣:ad80fb8e-262c-11ee-962d-dac502259ad0.png圖 12. 流經(jīng)MOS管電機驅(qū)動器的電流

必須為其驅(qū)動的電機手動優(yōu)化快速衰減周期和慢速衰減周期。一些新芯片會根據(jù)其感應(yīng)到的電流自動調(diào)整衰減周期,但舊芯片可能需要優(yōu)化(或調(diào)整)。

步進電機驅(qū)動實例

實例:使用控制板Arduino Mega控制步進電機驅(qū)動板TMC5130-EVAL來驅(qū)動步進電機。

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

圖 13.使用Arduino Mega控制步進電機驅(qū)動板TMC5130-EVAL

控制器Arduino Mega 2560是一款基于ATmega2560的微控制器板。它有54個數(shù)字輸入/輸出引腳(其中15個可以用作PWM輸出)、16個模擬輸入、4個UART(硬件串行端口)、一個16 MHz晶體振蕩器、一個USB連接、一個電源插座、一個ICSP頭和一個復(fù)位按鈕。它包含支持微控制器所需的一切;只需用USB電纜將其連接到計算機,或用交流到直流適配器或電池為其供電即可開始使用。

步進電機驅(qū)動板:TMC5130是一個完全集成的步進電機驅(qū)動器和控制器系統(tǒng),允許從任何微控制器遠程控制步進電機。它在硬件上實現(xiàn)了所有實時關(guān)鍵任務(wù)。一旦配置,電機可以通過給出目標(biāo)位置、命令歸航序列或給出目標(biāo)速度來驅(qū)動。使用TMC5130的好處包括:易于使用,使用256微步的電機精度,低電機噪聲(無噪聲隱藏斬波器),無傳感器失速檢測(stallGuard2),無階躍損耗,dcStep和coolStep、UART或SPI控制接口的高效率,高電壓范圍,小形狀因數(shù),以及低部件數(shù)量。

1. 確保Arduino Mega與TMC5130-EVAL有電壓匹配

如果Arduino是5V控制板,則必須將TMC5130-EVAL上的一個電阻從位置R3重新定位到R8。這將TMC5130的邏輯電平設(shè)置為+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. 引腳對應(yīng)的信號(圖片來源于Trinamic)引腳對應(yīng)的信號。在Arduino代碼的注釋部分記錄了配置。

ARDUINO代碼

下面的Arduino代碼不需要任何額外的庫。SPI庫是Arduino IDE附帶的。該程序初始化TMC5130并執(zhí)行簡單的移動到位置周期。它將根據(jù)步進電機的接線將200全步進電機向一個方向旋轉(zhuǎn)10轉(zhuǎn),向另一個方向旋轉(zhuǎn)10轉(zhuǎn)。請使用TMC5130數(shù)據(jù)表或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 博客(關(guān)于代碼的問題,可以去Trinamic博客上了解更多)

總結(jié)

希望這篇文章,可以幫助您了解步進電機的工作原理以及如何驅(qū)動步進電機。同時驅(qū)動步進電機的技術(shù)已經(jīng)很成熟,善于利用現(xiàn)有的硬件和代碼,才能事半功倍。

更多有關(guān)電機技術(shù)文章,請點擊以下鏈接,也歡迎大家在文末留言討論。

  • 如何驅(qū)動步進電機

  • 電機控制中的軟啟動(Soft Start)

  • 一分鐘讀懂:與眾不同的步進電機

  • 步進電機每轉(zhuǎn)步數(shù)和步進角

  • 計算電機驅(qū)動器的功耗

小編的話

隨著科學(xué)技術(shù)的發(fā)展,特別是永磁材料、半導(dǎo)體技術(shù)、計算機技術(shù)的發(fā)展,步進電機在眾多領(lǐng)域得到了廣泛應(yīng)用,包括工業(yè)機器中的汽車儀表和機床自動化生產(chǎn)設(shè)備、機器人、安防攝像機、醫(yī)用掃描儀、液壓泵、呼吸機和血液分析儀,以及消費攝像機、商用機器及電腦周邊等應(yīng)用。您是否正在利用步進電機進行電機系統(tǒng)的設(shè)計?您在步進電機驅(qū)動過程中有哪些設(shè)計經(jīng)驗、心得或疑問?歡迎留言,分享和討論!

秘技知識學(xué)不停 專屬福利享不停

就等您加入!

點此登記

賺積分、換好禮

立即到「會員權(quán)益」查看您的禮遇! 如有任何問題,歡迎聯(lián)系得捷電子DigiKey的客服團隊

中國(人民幣)客服

ae893bea-262c-11ee-962d-dac502259ad0.png400-920-1199ae97b79c-262c-11ee-962d-dac502259ad0.png服務(wù)支持 > 聯(lián)系客服 > 微信客服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


原文標(biāo)題:聊一聊步進電機的幾件事 還有彩蛋

文章出處:【微信公眾號:得捷電子DigiKey】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 得捷電子
    +關(guān)注

    關(guān)注

    1

    文章

    255

    瀏覽量

    8845

原文標(biāo)題:聊一聊步進電機的幾件事 還有彩蛋

文章出處:【微信號:得捷電子DigiKey,微信公眾號:得捷電子DigiKey】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    行星減速步進電機步進電機的區(qū)別

    步進電機種將電脈沖信號轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制電機。其工作原理是通過電子電路將直流電分為多相序控制電流,使用這種電流給步進
    的頭像 發(fā)表于 11-16 15:11 ?289次閱讀
    行星減速<b class='flag-5'>步進</b><b class='flag-5'>電機</b>與<b class='flag-5'>步進</b><b class='flag-5'>電機</b>的區(qū)別

    步進電機轉(zhuǎn)速般多少?

    步進電機作為種常見的電機類型,被廣泛應(yīng)用于各種領(lǐng)域,從自動化設(shè)備到3D打印機。人們經(jīng)常關(guān)心的個問題是,
    的頭像 發(fā)表于 10-09 10:04 ?548次閱讀
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b>轉(zhuǎn)速<b class='flag-5'>一</b>般多少?

    絲桿步進電機和普通步進電機有什么區(qū)別

    步進電機是將步進電機與絲桿機構(gòu)結(jié)合在起的種裝置。絲桿步進
    的頭像 發(fā)表于 09-02 13:38 ?508次閱讀

    步進電機型號與步進電機命名規(guī)則

    混合式步進電機代碼:SM。 系列代碼:H、高性能二相步進電機;C、三相步進電機;E、五相
    的頭像 發(fā)表于 08-26 09:42 ?144次閱讀
    <b class='flag-5'>步進</b><b class='flag-5'>電機</b>型號與<b class='flag-5'>步進</b><b class='flag-5'>電機</b>命名規(guī)則

    絲桿步進電機步進電機有什么區(qū)別?

    絲桿步進電機步進電機的區(qū)別收集整理于網(wǎng)絡(luò),僅供學(xué)習(xí)參考。絲桿步進電機
    的頭像 發(fā)表于 08-23 10:09 ?411次閱讀

    什么是步進電機步進電機的類型和結(jié)構(gòu)

    與所有電機樣,步進電機也有 定子和轉(zhuǎn)子 ,但與普通直流電機不同的是,定子由單獨的線圈組組成。線圈的數(shù)量會根據(jù)
    的頭像 發(fā)表于 06-20 17:10 ?1520次閱讀
    什么是<b class='flag-5'>步進</b><b class='flag-5'>電機</b>?<b class='flag-5'>步進</b><b class='flag-5'>電機</b>的類型和結(jié)構(gòu)

    研控步進電機怎么接線

    研控步進電機接線是個技術(shù)性很強的工作,需要對步進電機的工作原理、接線方式以及控制方式有深入的了解。本文將詳細介紹研控
    的頭像 發(fā)表于 06-12 09:14 ?1079次閱讀

    5G路由器相比4G有哪些優(yōu)勢(5g科普)

    大家好,今天我們來5G路由器相比4G有哪些優(yōu)勢,以及它將如何改變我們的生活。 首先,5G路由器最顯著的優(yōu)勢就是速度快。5G網(wǎng)絡(luò)的速度可以達到4G的10倍以上,這意味著我們可以更快地下載和上傳
    的頭像 發(fā)表于 04-26 10:35 ?579次閱讀

    下常見的幾種無線遙控器及其可能使用的晶振頻率

    無線遙控器可以分為四種類型,其中每種類型可能采用不同的頻率晶振。今天KOAN凱擎小妹下常見的幾種無線遙控器及其可能使用的晶振頻率。
    的頭像 發(fā)表于 03-22 14:29 ?4759次閱讀

    永磁電機內(nèi)轉(zhuǎn)子與外轉(zhuǎn)子的區(qū)別

    永磁同步電機按照轉(zhuǎn)子在電機內(nèi)的位置可以分為外轉(zhuǎn)子結(jié)構(gòu)和內(nèi)轉(zhuǎn)子結(jié)構(gòu),區(qū)別就是里面轉(zhuǎn)還是外面轉(zhuǎn),里面轉(zhuǎn)是內(nèi)轉(zhuǎn)子結(jié)構(gòu),外面轉(zhuǎn)是外轉(zhuǎn)子結(jié)構(gòu)。
    的頭像 發(fā)表于 03-11 09:20 ?2757次閱讀
    <b class='flag-5'>聊</b><b class='flag-5'>一</b><b class='flag-5'>聊</b>永磁<b class='flag-5'>電機</b>內(nèi)轉(zhuǎn)子與外轉(zhuǎn)子的區(qū)別

    什么是步進電機的細分控制?步進電機為什么要細分,如何細分?

    什么是步進電機的細分控制?步進電機為什么要細分,如何細分? 步進電機的細分控制是
    的頭像 發(fā)表于 02-18 09:39 ?7695次閱讀

    步進電機原理及應(yīng)用 步進電機和伺服電機的區(qū)別

    步進電機原理及應(yīng)用 步進電機種能夠按照定步數(shù)進行旋轉(zhuǎn)的
    的頭像 發(fā)表于 02-01 16:59 ?834次閱讀

    步進電機控制方法 步進電機和伺服電機的區(qū)別

    步進電機控制方法 步進電機種將電信號轉(zhuǎn)化為機械轉(zhuǎn)動的電動機,其輸出轉(zhuǎn)角是按照電脈沖控制信號的變化而變化的。
    的頭像 發(fā)表于 01-22 17:18 ?1176次閱讀

    步進電機工作原理 步進電機和伺服電機的區(qū)別

    步進電機種電動機的類型,它以準(zhǔn)確的固定角度步進方式運轉(zhuǎn)。步進電機內(nèi)部包含電磁鐵和旋轉(zhuǎn)式永磁轉(zhuǎn)
    的頭像 發(fā)表于 01-22 10:15 ?1020次閱讀

    arduino如何驅(qū)動步進電機

    隨著物聯(lián)網(wǎng)的不斷發(fā)展,電機控制技術(shù)得到了廣泛應(yīng)用,其中步進電機作為種常見的電機類型,在各行各業(yè)中得到了廣泛應(yīng)用。而作為
    的頭像 發(fā)表于 01-14 16:37 ?3676次閱讀