聊一聊步進電機的幾件事
發布時間:2024-10-11 責任編輯:lina
【導讀】對(dui)於(yu)步(bu)進(jin)電(dian)機(ji),每(mei)輸(shu)入(ru)一(yi)個(ge)脈(mai)衝(chong)信(xin)號(hao),轉(zhuan)子(zi)就(jiu)轉(zhuan)動(dong)一(yi)個(ge)角(jiao)度(du)或(huo)前(qian)進(jin)一(yi)步(bu)。其(qi)輸(shu)出(chu)的(de)角(jiao)位(wei)移(yi)或(huo)線(xian)位(wei)移(yi)與(yu)輸(shu)入(ru)的(de)脈(mai)衝(chong)數(shu)成(cheng)正(zheng)比(bi),轉(zhuan)速(su)與(yu)脈(mai)衝(chong)頻(pin)率(lv)成(cheng)正(zheng)比(bi)。因(yin)此(ci),步(bu)進(jin)電(dian)動(dong)機(ji)又(you)稱(cheng)脈(mai)衝(chong)電(dian)動(dong)機(ji)。
1. 什麼是步進電機?
步進電機是一種將電脈衝信號轉換成相應角位移或線位移的電動機。
對(dui)於(yu)步(bu)進(jin)電(dian)機(ji),每(mei)輸(shu)入(ru)一(yi)個(ge)脈(mai)衝(chong)信(xin)號(hao),轉(zhuan)子(zi)就(jiu)轉(zhuan)動(dong)一(yi)個(ge)角(jiao)度(du)或(huo)前(qian)進(jin)一(yi)步(bu)。其(qi)輸(shu)出(chu)的(de)角(jiao)位(wei)移(yi)或(huo)線(xian)位(wei)移(yi)與(yu)輸(shu)入(ru)的(de)脈(mai)衝(chong)數(shu)成(cheng)正(zheng)比(bi),轉(zhuan)速(su)與(yu)脈(mai)衝(chong)頻(pin)率(lv)成(cheng)正(zheng)比(bi)。因(yin)此(ci),步(bu)進(jin)電(dian)動(dong)機(ji)又(you)稱(cheng)脈(mai)衝(chong)電(dian)動(dong)機(ji)。
下麵看一個簡單的雙極電機:
圖 1 雙極電機
雙(shuang)極(ji)步(bu)進(jin)電(dian)機(ji)有(you)四(si)根(gen)電(dian)線(xian)和(he)兩(liang)個(ge)線(xian)圈(quan)。要(yao)使(shi)其(qi)旋(xuan)轉(zhuan),需(xu)要(yao)通(tong)過(guo)線(xian)圈(quan)發(fa)送(song)電(dian)流(liu)。每(mei)根(gen)電(dian)線(xian)都(dou)需(xu)要(yao)能(neng)夠(gou)被(bei)高(gao)低(di)驅(qu)動(dong)。以(yi)下(xia)是(shi)如(ru)何(he)驅(qu)動(dong)電(dian)流(liu)使(shi)步(bu)進(jin)電(dian)機(ji)旋(xuan)轉(zhuan)。
圖 2 雙極步進電機
要理解為什麼這樣做,請考慮一個隻有四個步驟的簡單步進電機。在第一階段,它將磁體與第一線圈對齊。下一步將磁體旋轉90度。通過第一線圈反向發送電流會反轉磁體極性。相反的線圈被連接,但相對於中心磁體產生相反的磁場。
圖 3 步進電機轉動四個步驟
當然,大多數步進電機的步數超過4步。你的標準步進電機每轉200bu。yizhezhongfangshixuanzhuandianjichengweiquanbujin。yidanniwanchenglequanbugongzuo,banbushifeichangjiandande。nikeyitongshitongguolianggexianquanfasongdianliu,zhejiangshifenbianlvjiabei。
步進電機驅動器也可以使用微步進,微步進調節通過線圈的電流。典型的電機控製器可以在每一個完整的步驟中執行16個微步驟。一些芯片負責調製電流,但較舊的芯片需要為其驅動的步進電機“調諧”。微步進進一步將整個步進劃分為256微步進,使典型的200步進電機變成51200步進電機!微步進還降低了電機的噪音,使其運行更平穩、更高效。
圖 4 完整步驟1和2之間的半步
2. 如何控製線圈中的電流:
控製通過繞組的電流的最常見設置是使用所謂的H橋。它是一組四個晶體管,可以將每條導線拉高或拉低。你也可以用MOS管代替晶體管,但布線會有點不同。該圖顯示了如何通過H橋向任意方向發送電流。你隻需要打開路徑中的晶體管。
圖 5 線圈中的電流方向
你(ni)必(bi)須(xu)確(que)保(bao)同(tong)一(yi)側(ce)的(de)兩(liang)個(ge)晶(jing)體(ti)管(guan)不(bu)能(neng)同(tong)時(shi)導(dao)通(tong)。這(zhe)將(jiang)通(tong)過(guo)提(ti)供(gong)從(cong)電(dian)源(yuan)到(dao)接(jie)地(di)的(de)低(di)電(dian)阻(zu)路(lu)徑(jing)使(shi)電(dian)路(lu)短(duan)路(lu)。你(ni)還(hai)應(ying)注(zhu)意(yi),晶(jing)體(ti)管(guan)可(ke)能(neng)需(xu)要(yao)一(yi)段(duan)時(shi)間(jian)才(cai)能(neng)從(cong)接(jie)通(tong)切(qie)換(huan)到(dao)斷(duan)開(kai)。除(chu)非(fei)你(ni)知(zhi)道(dao)自(zi)己(ji)在(zai)做(zuo)什(shen)麼(me),否(fou)則(ze)不(bu)建(jian)議(yi)快(kuai)速(su)切(qie)換(huan)通(tong)過(guo)線(xian)圈(quan)的(de)電(dian)流(liu)。
圖 6 必須確保同一側的兩個晶體管不能同時導通
這仍然不是全貌。旋轉電機將產生電壓。為了保護晶體管,最好放置二極管。
圖 7 用於保護晶體管的二極管
這將防止電機產生高壓,這可能會破壞晶體管甚至驅動器。如果驅動步進電機的電壓高於MCU輸出的電壓,則需要添加另一個晶體管來控製PNP晶體管。
圖 8 使用另一個晶體管來控製PNP晶體管
當你打開額外的NPN晶體管時,它將允許電流從PNP晶體管的基極(引腳1)流出,從而打開它。現在所需要的隻是所有NPN晶體管基極上的限流電阻。
圖 9 NPN晶體管基極加上的限流電阻
就是這樣!該H橋將控製通過其中一個繞組的電流。由於有兩個繞組,我們需要將這個電路加倍。
圖 10 雙H橋驅動步進電機
現在,你可以很好地計算所需的組件。使用雙H橋並不是驅動步進電機的唯一方法。你也可以購買步進電機驅動器,它將內置雙H橋(盡管驅動器通常使用MOS管和其他技巧)。如果你想減少BOM數量(有時獲得更多功能),wojianyinikankanbujindianjiqudongqi。nixuyaozhakanshujubiaoyilejiexinpiantigongdegongneng。yixiexinpianzhitigongjingtiguanheerjiguan,erqitaxinpianzewanquankongzhitongguoxianquandedianliu。
3. 微步進:
圖 11 脈寬調製信號
微步進包括向晶體管發送脈寬調製信號。這是一種控製電機線圈電流的簡單方法。預先選擇的PWM值被放置在正弦查找表中。典型地,選擇20-40kHz的PWM頻率。任何低於20千赫的聲音,人類耳朵都能聽到。頻率保持低於40kHz以提高效率並減少晶體管中的功耗。當PWM信號為高時,電流流過晶體管。當PWM信號低時,電流流過二極管。這是一個非常粗糙的微步進實現,但它給出了它如何工作的一般概念。使用MOS管的電機驅動器可以控製電機電流降低或衰減的速度。驅動器的電流波形更像這樣:
圖 12 流經MOS管電機驅動器的電流
bixuweiqiqudongdedianjishoudongyouhuakuaisushuaijianzhouqihemansushuaijianzhouqi。yixiexinxinpianhuigenjuqiganyingdaodedianliuzidongtiaozhengshuaijianzhouqi,danjiuxinpiankenengxuyaoyouhua(或調整)。
4. 步進電機驅動實例
介紹板子:
實例:使用控製板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是(shi)一(yi)個(ge)完(wan)全(quan)集(ji)成(cheng)的(de)步(bu)進(jin)電(dian)機(ji)驅(qu)動(dong)器(qi)和(he)控(kong)製(zhi)器(qi)係(xi)統(tong),允(yun)許(xu)從(cong)任(ren)何(he)微(wei)控(kong)製(zhi)器(qi)遠(yuan)程(cheng)控(kong)製(zhi)步(bu)進(jin)電(dian)機(ji)。它(ta)在(zai)硬(ying)件(jian)上(shang)實(shi)現(xian)了(le)所(suo)有(you)實(shi)時(shi)關(guan)鍵(jian)任(ren)務(wu)。一(yi)旦(dan)配(pei)置(zhi),電(dian)機(ji)可(ke)以(yi)通(tong)過(guo)給(gei)出(chu)目(mu)標(biao)位(wei)置(zhi)、命令歸航序列或給出目標速度來驅動。使用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
#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(" ");
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博客上了解更多)
總結:
希xi望wang這zhe片pian文wen章zhang,可ke以yi幫bang助zhu您nin了le解jie步bu進jin電dian機ji的de工gong作zuo原yuan理li以yi及ji如ru何he驅qu動dong步bu進jin電dian機ji。同tong時shi驅qu動dong步bu進jin電dian機ji的de技ji術shu已yi經jing很hen成cheng熟shu,善shan於yu利li用yong現xian有you的de硬ying件jian和he代dai碼ma,才cai能neng事shi半ban功gong倍bei。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
意法半導體公布2024年第三季度財報、電話會議及資本市場日直播時間
【測試案例分享】提高信號完整性的秘密武器:實時示波器測試TDR阻抗的全新方案
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 從技術研發到規模量產:恩智浦第三代成像雷達平台,賦能下一代自動駕駛!
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall






