電機(jī)驅(qū)動(dòng)控制:整步、半步與細(xì)分微步原理解析)
簡(jiǎn)介雙極性四線步進(jìn)電機(jī)的控制文檔面向單片機(jī)開(kāi)發(fā)、硬件電機(jī)驅(qū)動(dòng)學(xué)習(xí)者與工程師系統(tǒng)講解四線與八拍及細(xì)分微步控制原理適用于自動(dòng)化設(shè)備、3D打印機(jī)、精密定位系統(tǒng)等場(chǎng)景。資源以一份docx文檔呈現(xiàn)全文約1.25MB內(nèi)容精煉、便于閱讀與批注也可直接作為課程講義使用。文檔從單4拍、雙4拍整步時(shí)序入手給出線圈上電順序表并進(jìn)一步說(shuō)明8拍半步方式如何降低振動(dòng)再擴(kuò)展到基于DRV8889A-Q1等專(zhuān)用芯片的1/4、1/8、1/256級(jí)細(xì)分控制解釋1.8°步距角與脈沖數(shù)關(guān)系同時(shí)整理ULN2003簡(jiǎn)易驅(qū)動(dòng)方案與SPI配置要點(diǎn)配合簡(jiǎn)化原理圖便于讀者按需選用驅(qū)動(dòng)策略。目前已有1019人學(xué)習(xí)適合需要理清雙極性四線步進(jìn)電機(jī)驅(qū)動(dòng)時(shí)序、對(duì)比不同控制精度并著手實(shí)際電路控制的開(kāi)發(fā)者參考。無(wú)論是入門(mén)整步控制還是進(jìn)階細(xì)分調(diào)試都能從中獲得參數(shù)計(jì)算與電路設(shè)計(jì)的直接參考。1. 雙極性四線步進(jìn)電機(jī)為什么換一種通電時(shí)序同樣的電機(jī)就換了一種脾氣同樣是雙極性四線步進(jìn)電機(jī)接同樣的電源、同樣的單片機(jī)有人讓電機(jī)平穩(wěn)得像伺服有人卻只能聽(tīng)到“嗒嗒嗒”的抖動(dòng)聲——差別不在電機(jī)本身而在驅(qū)動(dòng)側(cè)怎么安排四根線、什么時(shí)候給哪根線通電。雙極性四線步進(jìn)電機(jī)只有 A、A-、B、B- 四根端子看起來(lái)只是一個(gè)“高低電平開(kāi)關(guān)”問(wèn)題但真正決定運(yùn)行品質(zhì)的是線圈通電的時(shí)序組合和電流大小。四拍整步、八拍半步、細(xì)分微步三者不是“精度越來(lái)越高”的簡(jiǎn)單遞進(jìn)關(guān)系而是一場(chǎng)從“開(kāi)關(guān)量控制磁場(chǎng)方向”到“模擬量控制磁場(chǎng)連續(xù)旋轉(zhuǎn)”的機(jī)制升級(jí)。搞懂這套控制邏輯你才能真正解釋為什么 1.8° 基本步距角的電機(jī)能被一個(gè)脈沖驅(qū)動(dòng)走出 0.18°、0.007°也才能解釋為什么細(xì)分值設(shè)得再高電機(jī)還是會(huì)丟步、還是會(huì)發(fā)熱。2. 四線與H橋整步驅(qū)動(dòng)的“通電順序表”到底在切換什么2.1 雙極性四線繞組的本質(zhì)雙極性四線步進(jìn)電機(jī)內(nèi)部有兩相繞組分別引出兩根線共四根線。之所以叫“雙極性”是因?yàn)槊恳幌嗬@組的電流方向必須在正向和反向之間切換才能讓轉(zhuǎn)子獲得兩個(gè)方向相反的磁極。A 和 A- 是同一相線圈的兩端B 和 B- 是另一相線圈的兩端。只要某一相電流從 A 流入、從 A- 流出磁場(chǎng)就是一個(gè)方向反過(guò)來(lái)電流從 A- 流入、A 流出磁場(chǎng)就反轉(zhuǎn) 180°。這里很多人會(huì)踩第一個(gè)坑把 A 和 A- 當(dāng)成兩個(gè)獨(dú)立的“線圈”來(lái)驅(qū)動(dòng)以為四根線對(duì)應(yīng)四組線圈。實(shí)際上雙極性四線電機(jī)只有兩相線圈A 與 A- 之間的電流方向變化決定了 A 相磁場(chǎng)的正反B 相同理。所謂“四相時(shí)序”是電角度上把 A 相正向、A 相反向、B 相正向、B 相反向四種磁化狀態(tài)輪流安排一遍形成一個(gè)完整的磁場(chǎng)旋轉(zhuǎn)周期。驅(qū)動(dòng)這類(lèi)電機(jī)最簡(jiǎn)單的硬件是四個(gè)半橋組成的 H 橋電路或者家用常見(jiàn)的達(dá)林頓管陣列驅(qū)動(dòng)板。H 橋的每個(gè)橋臂負(fù)責(zé)控制一根線的通斷和高低電平從而決定電流是流入還是流出。接下來(lái)要討論的“單4拍”“雙4拍”“8拍”本質(zhì)上都是這四根線電平狀態(tài)的排列組合。2.2 單4拍每次只讓一相導(dǎo)通單4拍也叫整步驅(qū)動(dòng)是最基礎(chǔ)的控制方式。線圈上電時(shí)序如下表拍數(shù)AA-BB-11000201003001040001表格里的 1 表示該線接高電平0 表示接低電平。四拍執(zhí)行完電機(jī)的磁場(chǎng)方向經(jīng)歷“A 相正向 → A 相反向 → B 相正向 → B 相反向”四個(gè)狀態(tài)最后回到起點(diǎn)轉(zhuǎn)子的位置也走過(guò)四個(gè)基本步距角。對(duì)于 1.8° 基本步距角的電機(jī)一個(gè)完整循環(huán)走 7.2°轉(zhuǎn)一圈 360° 需要 200 個(gè)脈沖也就是 50 個(gè)完整循環(huán)。這個(gè)時(shí)序的特征是每次只有一相通電電流路徑簡(jiǎn)單單片機(jī)做起來(lái)最容易四個(gè) GPIO 按順序翻轉(zhuǎn)電平即可。但它的問(wèn)題也很明顯。從拍1到拍2A 相電流直接從正向跳變到反向繞組電感會(huì)讓電流變化產(chǎn)生滯后同時(shí)磁場(chǎng)方向瞬間翻轉(zhuǎn) 180° 電角度轉(zhuǎn)子在每一步都會(huì)經(jīng)歷一個(gè)較大的位置階躍。電流跳變?cè)絼×肄D(zhuǎn)子過(guò)沖越大低速時(shí)的振動(dòng)和噪聲就越明顯。這就是雙極性步進(jìn)電機(jī)在整步驅(qū)動(dòng)下低頻振動(dòng)的根源。2.3 雙4拍兩相同步通電扭矩方程不一樣了雙4拍同樣是整步但每次同時(shí)給兩相線圈通電。時(shí)序表如下拍數(shù)AA-BB-11100200113010141010這個(gè)表要按 A 相、B 相分開(kāi)看拍1是 A 導(dǎo)通、A- 導(dǎo)通即 A 相正向通電同時(shí) B 相沒(méi)有電流拍2是 B 相反向通電。等等——按表格逐行讀會(huì)發(fā)現(xiàn)拍1其實(shí)是 A 相一個(gè)方向的電流拍2是 B 相反方向電流拍3是 A 相反向拍4是 B 相正向。這四拍實(shí)際還是單相通電這里出現(xiàn)了一個(gè)容易混淆的地方。規(guī)范的“雙4拍”指的是 A 相和 B 相同時(shí)通電兩相電流方向組合為(A、B)、(A-、B)、(A-、B-)、(A、B-)。輸入資源里的雙4拍表格如果把行拆成電極看A 行是 1 1 0 0A- 行是 0 0 1 1B 行是 1 0 0 1B- 行是 0 1 1 0。逐拍解讀拍1四根線電平分別是 1、0、1、0表示 A 與 B 同時(shí)導(dǎo)通拍2是 A 與 B- 導(dǎo)通拍3是 A- 與 B- 導(dǎo)通拍4是 A- 與 B 導(dǎo)通。這樣才是兩相同時(shí)通電。按這個(gè)正確的雙4拍時(shí)序每一拍磁場(chǎng)矢量都由 A 相和 B 相兩個(gè)分量合成。單4拍時(shí)磁場(chǎng)方向只有四個(gè)軸0°、90°、180°、270° 電角度雙4拍時(shí)磁場(chǎng)方向落在 45°、135°、225°、315°仍然四步走完一圈電角度但每一步合成磁場(chǎng)幅值更大因?yàn)閮上喽钾暙I(xiàn)了轉(zhuǎn)矩。直觀表現(xiàn)就是雙4拍比單4拍扭矩更足低速更穩(wěn)。如果把我上面那段解讀和輸入表格對(duì)照最穩(wěn)妥的理解是雙4拍的重點(diǎn)在于“兩相同時(shí)通電”讓電流方向組合成四個(gè)對(duì)角方向電機(jī)每拍依然走一個(gè)基本步距角。單片機(jī)控制時(shí)只需改變四根線的電平組合不需要調(diào)速、不需要調(diào)電流代碼量和單4拍幾乎一樣但運(yùn)行品質(zhì)好一截。代價(jià)是電源電流更大四根線同時(shí)有電流通路對(duì)驅(qū)動(dòng)管的散熱要求更高。3. 8拍半步把步距角砍一半靠的是插入“中間態(tài)”3.1 八拍時(shí)序逐拍拆解如果說(shuō)整步驅(qū)動(dòng)的本質(zhì)是“磁場(chǎng)方向從四個(gè)軸里選一個(gè)”那半步驅(qū)動(dòng)就是在相鄰兩個(gè)軸之間插入一個(gè)中間態(tài)讓磁場(chǎng)方向每步只轉(zhuǎn) 45° 電角度。8拍線圈上電時(shí)序如下拍數(shù)12345678A11000001A-00011100B01110000B-00000111逐拍讀出導(dǎo)通狀態(tài)拍1A 導(dǎo)通即 A 相正向磁場(chǎng)方向記作 A拍2A 與 B 同時(shí)導(dǎo)通磁場(chǎng)方向介于 A 正向和 B 正向之間拍3B 導(dǎo)通磁場(chǎng)方向?yàn)?B 正向拍4B 與 A- 同時(shí)導(dǎo)通方向在 B 正向與 A 反向之間拍5A- 導(dǎo)通拍6A- 與 B- 同時(shí)導(dǎo)通拍7B- 導(dǎo)通拍8B- 與 A 同時(shí)導(dǎo)通然后回到拍1。輸入資源里給出的轉(zhuǎn)動(dòng)方向序列是A → AB → B → BA- → A- → A-B- → B- → B-A。這個(gè)序列比“單拍、雙拍交替”更對(duì)稱(chēng)每一步恰好穿插一個(gè)單相通電態(tài)和一個(gè)雙相通電態(tài)磁場(chǎng)方向以 45° 電角度的間隔連續(xù)旋轉(zhuǎn)。對(duì)兩相步進(jìn)電機(jī)這意味著機(jī)械步距角從 1.8° 減半為 0.9°一圈需要 400 個(gè)脈沖。3.2 半步到底消掉了什么振動(dòng)很多人以為半步的意義只是“精度翻倍”但實(shí)際體驗(yàn)中半步最大的改善是振動(dòng)和噪聲。整步驅(qū)動(dòng)時(shí)每一步都是一次電流方向的劇烈換向繞組電流無(wú)法瞬間完成翻轉(zhuǎn)磁場(chǎng)矢量在切換瞬間會(huì)“甩”過(guò)去轉(zhuǎn)子跟著過(guò)沖、回?cái)[形成低頻振蕩。這種振蕩在脈沖頻率接近電機(jī)機(jī)械諧振點(diǎn)時(shí)會(huì)被放大典型表現(xiàn)是電機(jī)在幾十到幾百赫茲脈沖頻率下發(fā)出刺耳的轟鳴。半步驅(qū)動(dòng)引入中間態(tài)之后相鄰兩拍之間的磁場(chǎng)方向變化從 90° 電角度降為 45°等效地每次換向的“沖擊”小了一半。或者說(shuō)半步讓磁場(chǎng)矢量的變化更接近連續(xù)旋轉(zhuǎn)轉(zhuǎn)子的位置誤差和過(guò)沖幅度都下降。對(duì)大多數(shù)應(yīng)用來(lái)說(shuō)半步是一個(gè)性價(jià)比極高的方案不需要換驅(qū)動(dòng)芯片只需要在單片機(jī)里多準(zhǔn)備一張 8 拍時(shí)序表就能明顯改善低速噪聲。半步的局限在于它仍然是開(kāi)關(guān)量控制電流只有“有”和“無(wú)”兩種狀態(tài)單相通電與兩相通電交替時(shí)合成轉(zhuǎn)矩幅值會(huì)波動(dòng)。轉(zhuǎn)矩波動(dòng)本身又會(huì)引起轉(zhuǎn)速的微小脈動(dòng)只不過(guò)比整步要輕。想要進(jìn)一步壓低振動(dòng)就需要讓電流連續(xù)變化也就是細(xì)分微步控制。3.3 反轉(zhuǎn)不是換電機(jī)是把時(shí)序倒著走步進(jìn)電機(jī)反轉(zhuǎn)的實(shí)現(xiàn)方式在文檔里只有一句話“反轉(zhuǎn)時(shí)控制時(shí)序倒過(guò)來(lái)控制就可實(shí)現(xiàn)反向轉(zhuǎn)動(dòng)”。這句話看起來(lái)簡(jiǎn)單但踩坑的人不少。常見(jiàn)錯(cuò)誤是在代碼里把拍序數(shù)組整體反轉(zhuǎn)但沒(méi)注意數(shù)組里單拍和雙拍狀態(tài)的銜接順序。以 8 拍半步為例正轉(zhuǎn)序列是 A、AB、B、BA-、A-、A-B-、B-、B-A反轉(zhuǎn)序列必須嚴(yán)格按正轉(zhuǎn)序列的逆序執(zhí)行也就是 B-A、B-、A-B-、A-、BA-、B、AB、A并且每一拍之間保持相同的間隔時(shí)間。如果只是把“正轉(zhuǎn)數(shù)組倒著讀”而數(shù)組本身首尾狀態(tài)沒(méi)有閉合比如正轉(zhuǎn)數(shù)組最后是 B-A倒過(guò)來(lái)第一步卻變成 A那磁場(chǎng)方向會(huì)從 B-A 直接跳到 A等于多走了一個(gè)小步再反向電機(jī)會(huì)出現(xiàn)“先頓一下再反轉(zhuǎn)”的現(xiàn)象。正確的做法是把反轉(zhuǎn)序列看成另一個(gè)獨(dú)立的數(shù)組首尾相接。另一個(gè)細(xì)節(jié)是反轉(zhuǎn)只需要交換相序方向不需要改 DIR 引腳。對(duì)于帶 DIR 引腳的驅(qū)動(dòng)芯片硬件反轉(zhuǎn)和時(shí)序反轉(zhuǎn)是兩套機(jī)制——芯片的 DIR 引腳負(fù)責(zé)改變芯片內(nèi)部的換相方向而單片機(jī)枚舉時(shí)序表負(fù)責(zé)控制每一拍的電平。4. 細(xì)分微步控制不是為了減小步距角而是為了連續(xù)旋轉(zhuǎn)磁場(chǎng)4.1 為什么開(kāi)關(guān)邏輯永遠(yuǎn)湊不出微步到了 1/4、1/8、1/16 甚至 1/256 微步前面那套“電平組合表”思路就失效了。原因很簡(jiǎn)單四根線只有高低電平兩種狀態(tài)四線組合最多 16 種狀態(tài)扣掉不能用的狀態(tài)后能形成的磁場(chǎng)方向極其有限。你可以設(shè)計(jì) 32 拍、64 拍的開(kāi)關(guān)序列但那只是把整步和半步狀態(tài)重復(fù)穿插并不會(huì)產(chǎn)生更小的步距角。真正的微步要求磁場(chǎng)矢量在任意角度停留而這必須通過(guò)控制兩相電流的比值來(lái)實(shí)現(xiàn)。雙極性兩相步進(jìn)電機(jī)中轉(zhuǎn)子的平衡位置由合成磁場(chǎng)方向決定。如果 A 相電流大小為 IaB 相電流大小為 Ib那么合成磁場(chǎng)矢量在 A-B 直角坐標(biāo)系里的角度 θ 滿足θ arctan(Ib / Ia)。要想讓轉(zhuǎn)子停在任意角度只需要讓兩相電流的比值對(duì)應(yīng)目標(biāo)角度的正切值。整步和半步之所以步距角離散正是因?yàn)殡娏髦挥泄潭◣讉€(gè)比值0:1、1:0、1:1 等少數(shù)組合。細(xì)分的本質(zhì)是不再只切換電流方向而是持續(xù)改變電流大小。具體做法是把一圈電角度 360°分成 N 等份對(duì)每個(gè)等份點(diǎn)A 相電流給 cos(θ)B 相電流給 sin(θ)。兩相電流按正弦余弦變化時(shí)合成磁場(chǎng)矢量的幅值保持恒定方向勻速旋轉(zhuǎn)。轉(zhuǎn)子就會(huì)跟隨磁場(chǎng)方向每走一步移動(dòng) 360/N 電角度。對(duì)于基本步距角 1.8° 的兩相電機(jī)電角度周期和機(jī)械角度的對(duì)應(yīng)關(guān)系是 4 個(gè)整步對(duì)應(yīng)一個(gè)電角度周期、即 7.2° 機(jī)械角。如果分成 10 細(xì)分每個(gè)脈沖走 0.18°一圈需要 2000 個(gè)脈沖如果是 1/256 細(xì)分每圈需要 51200 個(gè)脈沖每個(gè)脈沖對(duì)應(yīng)的平均機(jī)械角只有 0.007°。4.2 相電流按正弦-余弦分配步距角被切細(xì)一個(gè)具體的 8 細(xì)分示意把四分之一電角度周期分成 8 段目標(biāo)是讓磁場(chǎng)從 A 方向逐步轉(zhuǎn)向 B 方向。各細(xì)分點(diǎn)的電流配比大致如下細(xì)分點(diǎn)目標(biāo)電角度A相電流B相電流00°1.0000.000111.25°0.9810.195222.5°0.9240.383333.75°0.8320.556445°0.7070.707556.25°0.5560.832667.5°0.3830.924778.75°0.1950.981890°0.0001.000這張表體現(xiàn)了微步控制的核心機(jī)制沒(méi)有任何一拍的電流需要突變相鄰兩點(diǎn)之間電流變化很小磁場(chǎng)矢量近似連續(xù)旋轉(zhuǎn)。如果單片機(jī)按這個(gè)表逐點(diǎn)更新電流值電機(jī)在低速下就會(huì)表現(xiàn)得非常安靜。需要注意的是這張表只給了“理想電流值”沒(méi)有規(guī)定 PWM 頻率、沒(méi)有規(guī)定電壓也沒(méi)有給電流紋波預(yù)算。真正做 1/256 微步時(shí)同一套正弦表還要考慮啟動(dòng)和停止時(shí)的電流漸變否則啟動(dòng)瞬間電流從 0 跳到第一個(gè)表值依然會(huì)有沖擊。許多驅(qū)動(dòng)芯片在固件里已經(jīng)內(nèi)置了正弦表和電流閉環(huán)單片機(jī)發(fā)一個(gè) STEP 脈沖芯片內(nèi)部自動(dòng)把相電流推進(jìn)一個(gè)細(xì)分點(diǎn)這就是專(zhuān)用驅(qū)動(dòng)芯片和“萬(wàn)能板”之間的分水嶺。4.3 驅(qū)動(dòng)芯片內(nèi)部怎么做電流閉環(huán)專(zhuān)用驅(qū)動(dòng)芯片內(nèi)部通常有一個(gè)電流調(diào)節(jié)環(huán)路常見(jiàn)實(shí)現(xiàn)思路是DAC 按微步表輸出一個(gè)目標(biāo)電流基準(zhǔn)與繞組取樣電阻上的實(shí)際電流比較比較結(jié)果控制 H 橋開(kāi)關(guān)管的通斷。目標(biāo)電流高開(kāi)關(guān)就多導(dǎo)通一段時(shí)間實(shí)際電流超過(guò)目標(biāo)開(kāi)關(guān)就進(jìn)入續(xù)流或衰減狀態(tài)。這個(gè)過(guò)程以 PWM 的形式高速循環(huán)繞組電流被“鉗”在目標(biāo)值附近紋波大小取決于斬波頻率和電感量。這里有個(gè)關(guān)鍵參數(shù)叫電流衰減模式。電機(jī)繞組是感性負(fù)載電流減小時(shí)續(xù)流路徑不同電流下降速度也不同??焖p模式讓電流迅速回落適合電流曲線下降段慢衰減模式讓電流緩慢變化適合電流上升段。如果芯片的衰減模式設(shè)置不當(dāng)正弦電流波形在過(guò)零點(diǎn)附近會(huì)出現(xiàn)畸變細(xì)分效果就會(huì)打折扣表現(xiàn)為電機(jī)在某個(gè)角度有輕微的“卡頓感”。很多細(xì)分驅(qū)動(dòng)“開(kāi)了跟沒(méi)開(kāi)一樣”問(wèn)題常常不在微步表而在斬波控制參數(shù)。微步的配置入口是 SPI。單片機(jī)通過(guò) SPI 寫(xiě)入微步分辨率寄存器告訴芯片每一步走多少細(xì)分通過(guò) DIR 引腳控制旋轉(zhuǎn)方向脈沖引腳控制每一步的執(zhí)行時(shí)機(jī)。SPI 在這里不是“傳電流值”而是配置控制模式。真正決定細(xì)分精度的是芯片內(nèi)部的電流控制精度電流 DAC 位數(shù)多電流基準(zhǔn)量化誤差就小取樣電阻精度高電流閉環(huán)實(shí)際值就更接近目標(biāo)值斬波頻率高電流紋波就小轉(zhuǎn)子位置抖動(dòng)就小。所以輸入資料里明確說(shuō)“電機(jī)的精度能否達(dá)到或接近 0.18°還取決于細(xì)分驅(qū)動(dòng)器的細(xì)分電流控制精度等其它因素。”這說(shuō)的就是細(xì)分只是給了你一個(gè)更小的名義步距角實(shí)際能不能落到那個(gè)位置由電流閉環(huán)質(zhì)量說(shuō)了算。4.4 10000脈沖走一圈分辨率與精度的區(qū)別很多人看到 1/256 細(xì)分默認(rèn)“電機(jī)精度就是 0.007°”這是最大的誤解。步距角分辨率只表示驅(qū)動(dòng)器發(fā)一個(gè)脈沖時(shí)希望轉(zhuǎn)子移動(dòng)多少角度但轉(zhuǎn)子真正停在哪取決于負(fù)載轉(zhuǎn)矩、靜轉(zhuǎn)矩、電流波形畸變和機(jī)械間隙。如果電流閉環(huán)精度不夠名義上 1/256 細(xì)分的每一步實(shí)際位置誤差可能已經(jīng)超過(guò)了整步精度。一個(gè)簡(jiǎn)單驗(yàn)證方法讓電機(jī)低速連續(xù)走 1000 步用高分辨率編碼器記錄實(shí)際角度對(duì)比命令理論角度。如果誤差呈現(xiàn)周期性且周期對(duì)應(yīng)整步或半步說(shuō)明電流波形畸變?nèi)绻`差隨速度增大而增大說(shuō)明電流建立滯后。把細(xì)分?jǐn)?shù)調(diào)低一檔再測(cè)往往能發(fā)現(xiàn)“低頻下 1/64 細(xì)分和 1/256 細(xì)分實(shí)際位置誤差幾乎一樣”因?yàn)檎`差源已經(jīng)不在細(xì)分表而在電流環(huán)。理解這一點(diǎn)你就不會(huì)盲目追求最高細(xì)分而會(huì)先確認(rèn)驅(qū)動(dòng)電路的電流控制能力。好前面四章把原理講完了。下面把從“通電時(shí)序表”到“SPI 配微步”這條鏈路里最容易翻車(chē)的幾個(gè)實(shí)測(cè)問(wèn)題按現(xiàn)象、原因、解決的順序列出來(lái)這些坑幾乎每個(gè)做過(guò)步進(jìn)電機(jī)驅(qū)動(dòng)的人都會(huì)至少遇到一個(gè)。5. 驅(qū)動(dòng)電路與常見(jiàn)問(wèn)題排查從驅(qū)動(dòng)芯片到單片機(jī)聯(lián)調(diào)翻車(chē)實(shí)錄5.1 簡(jiǎn)易驅(qū)動(dòng)與專(zhuān)用驅(qū)動(dòng)芯片的分水嶺用單片機(jī) GPIO 直接驅(qū)動(dòng)四線步進(jìn)電機(jī)最粗的方式是達(dá)林頓管陣列板四路輸入接單片機(jī)的高電平輸出接電機(jī)四根線。單4拍、雙4拍、8拍都能跑。這套方案的關(guān)鍵限制是沒(méi)有電流閉環(huán)線圈電流只受電源電壓和繞組電阻限制所以它只能做“開(kāi)關(guān)式”驅(qū)動(dòng)不適合細(xì)分。一旦程序里放了一張正弦電流表卻用高低電平 GPIO 輸出結(jié)果就只是一個(gè)偽細(xì)分的方波序列——電機(jī)的運(yùn)行表現(xiàn)和半步?jīng)]什么區(qū)別。真正要跑 1/8 以上細(xì)分必須換專(zhuān)用驅(qū)動(dòng)芯片。這類(lèi)芯片的內(nèi)部結(jié)構(gòu)可以理解成“H橋 × 2 電流 DAC 電流比較器 正弦表邏輯”。單片機(jī)通過(guò) SPI 把微步數(shù)和電流檔位寫(xiě)進(jìn)去然后只需要給 STEP 脈沖。STEP 每來(lái)一個(gè)上升沿芯片內(nèi)部自動(dòng)按當(dāng)前細(xì)分步進(jìn)一次電流狀態(tài)DIR 引腳決定電流狀態(tài)是正向推進(jìn)還是反向退回。整個(gè)過(guò)程不需要單片機(jī)參與電流控制這既能保證時(shí)序精度也把 CPU 從高頻率的 PWM 中斷里解放出來(lái)。選芯片時(shí)要重點(diǎn)確認(rèn)三個(gè)硬件細(xì)節(jié)驅(qū)動(dòng)電壓范圍是否覆蓋電機(jī)額定電壓、峰值電流是否足夠、電流檢測(cè)電阻的功率余量。不少人把驅(qū)動(dòng)芯片燒了查到最后是檢測(cè)電阻選小電流閉環(huán)的取樣電壓太低比較器誤判輸出電流超限。電流檔位的配置通常有一個(gè)參考電壓引腳改變參考電壓就能改變滿量程電流最大電流必須按電機(jī)額定電流的 1.5 倍左右預(yù)留余量。5.2 常見(jiàn)問(wèn)題一上電就反向轉(zhuǎn)或者根本不轉(zhuǎn)現(xiàn)象按正轉(zhuǎn)時(shí)序表給電平電機(jī)卻反轉(zhuǎn)或者電機(jī)鎖死不動(dòng)只發(fā)出“嗡嗡”聲。原因四線雙極性電機(jī)的接線順序搞錯(cuò)。A 相兩根線和 B 相兩根線本身好區(qū)分電機(jī)廠商一般用顏色區(qū)分但不同廠商的顏色定義不統(tǒng)一。如果 A 和 B 接反或者某根線極性反了通電時(shí)序產(chǎn)生的磁場(chǎng)順序就不再是“正向旋轉(zhuǎn)”而是反向或亂序。還有一種情況是某一相的兩個(gè)端子接成了同一橋臂導(dǎo)致該相永遠(yuǎn)無(wú)法建立正確方向電流。解決先用萬(wàn)用表電阻檔找線對(duì)。雙極性四線電機(jī)任意兩線之間屬于同一相的電阻值很小幾歐姆到幾十歐姆不同相之間可能是開(kāi)路的。找到兩組線對(duì)后先按“A、A-、B、B-”對(duì)應(yīng)驅(qū)動(dòng)板的輸出端用一個(gè)簡(jiǎn)單的單4拍程序驗(yàn)證轉(zhuǎn)向。如果反轉(zhuǎn)不需要改硬件把 B 相兩根線互換或者把時(shí)序表里所有 B 相狀態(tài)取反二選一即可。這里記住一個(gè)經(jīng)驗(yàn)法則調(diào)相序永遠(yuǎn)比懷疑電機(jī)壞掉先做很多“新電機(jī)不轉(zhuǎn)”最后都是接線問(wèn)題。5.3 常見(jiàn)問(wèn)題二細(xì)分開(kāi)了還是“一下一下跳”現(xiàn)象芯片支持 1/16 細(xì)分寄存器也配置了STEP 脈沖頻率也不高但電機(jī)運(yùn)行起來(lái)依然有明顯的一頓一頓甚至和半步一模一樣。原因最常見(jiàn)的是微步配置沒(méi)有生效或者電流閉環(huán)沒(méi)有工作在預(yù)期模式。部分驅(qū)動(dòng)芯片上電后默認(rèn)是整步或半步需要主機(jī)在初始化時(shí)通過(guò) SPI 寫(xiě)配置寫(xiě)完后還要等待芯片進(jìn)入“運(yùn)行態(tài)”。如果單片機(jī)在芯片還沒(méi)完成初始化時(shí)就發(fā) STEP 脈沖芯片會(huì)按默認(rèn)模式跑后續(xù)配置即使寫(xiě)入也不會(huì)重新解釋已經(jīng)走過(guò)的步數(shù)。另一個(gè)原因是微步模式越高每步電流變化越小對(duì)電流 DAC 的量化位數(shù)要求越高如果芯片工作在低電壓、小電流檔位電流紋波占比大轉(zhuǎn)子在每步之間會(huì)因轉(zhuǎn)矩波動(dòng)產(chǎn)生微小抖動(dòng)聽(tīng)感上就像“沒(méi)開(kāi)細(xì)分”。解決先把微步數(shù)設(shè)為 1/4確認(rèn)運(yùn)行表現(xiàn)從整步變?yōu)榧?xì)步再逐步調(diào)高。如果 1/4 有效但 1/16 反而抖動(dòng)優(yōu)先檢查電源電壓和電流檔位而不是懷疑芯片壞掉。用示波器測(cè)取樣電阻兩端的電壓波形正常情況下應(yīng)該看到每個(gè) STEP 脈沖之后電流基準(zhǔn)呈階梯狀正弦變化如果波形是方波說(shuō)明控制寄存器沒(méi)生效回到 SPI 讀寫(xiě)時(shí)序上排查。5.4 常見(jiàn)問(wèn)題三電機(jī)燙得不敢摸現(xiàn)象電機(jī)靜止時(shí)也持續(xù)發(fā)熱溫度明顯高于手溫運(yùn)行一段時(shí)間后外殼燙手。原因步進(jìn)電機(jī)在通電保持狀態(tài)時(shí)繞組電流恒定電能全部轉(zhuǎn)化為熱量。整步驅(qū)動(dòng)下如果長(zhǎng)期停在某一拍那一相電流一直處于最大值沒(méi)有自動(dòng)半流功能的驅(qū)動(dòng)器靜態(tài)電流和運(yùn)行電流相同。細(xì)分?jǐn)?shù)增加后即使平均電流不變高頻斬波帶來(lái)的鐵損和銅損也會(huì)疊加發(fā)熱進(jìn)一步上升。解決大多數(shù)驅(qū)動(dòng)芯片支持“自動(dòng)半流”或“低功耗鎖定”模式電機(jī)停轉(zhuǎn)一段時(shí)間后把保持電流降到運(yùn)行電流的 50% 甚至更低。如果芯片沒(méi)有這個(gè)功能可以在單片機(jī)里用邏輯控制 PWM 占空比在電機(jī)到位后降低輸出。另一個(gè)容易被忽略的點(diǎn)是電源電壓選得過(guò)高斬波電流調(diào)節(jié)會(huì)帶來(lái)額外損耗應(yīng)在滿足高速性能的前提下盡量壓低驅(qū)動(dòng)電壓。發(fā)熱本身不直接等于故障但如果電機(jī)溫度超過(guò)繞組絕緣等級(jí)會(huì)引發(fā)退磁和短路紅外測(cè)溫槍在聯(lián)調(diào)階段應(yīng)該常備。5.5 常見(jiàn)問(wèn)題四高速時(shí)丟步甚至完全失步現(xiàn)象低速正常加速到某個(gè)頻率后電機(jī)開(kāi)始抖動(dòng)、噪聲變大繼續(xù)提速就停轉(zhuǎn)或者位置越來(lái)越偏。原因繞組電感限制了電流建立速度。步進(jìn)頻率升高后每個(gè) STEP 周期變短繞組電流還沒(méi)上升到目標(biāo)值就被迫切換方向?qū)嶋H轉(zhuǎn)矩下降當(dāng)轉(zhuǎn)矩低于負(fù)載所需時(shí)轉(zhuǎn)子跟不上磁場(chǎng)旋轉(zhuǎn)速度就發(fā)生丟步。這也是為什么高速性能不能只看細(xì)分表和芯片支持率還要看驅(qū)動(dòng)電壓和電流環(huán)的響應(yīng)速度。解決一是提高驅(qū)動(dòng)電壓讓電流上升斜率變快常見(jiàn)經(jīng)驗(yàn)是讓驅(qū)動(dòng)電壓達(dá)到電機(jī)額定電壓的數(shù)倍再用斬波限流二是降低加速度讓電機(jī)在電流建立速度跟得上的區(qū)域內(nèi)逐步提速三是檢查衰減模式高速時(shí)使用混合衰減模式能讓電流過(guò)零更平滑。最容易被忽略的是 STEP 脈沖本身的干擾單片機(jī)與驅(qū)動(dòng)芯片距離遠(yuǎn)、共地不良時(shí)STEP 信號(hào)上的毛刺會(huì)被當(dāng)成額外脈沖表現(xiàn)就是偶爾多走一步或者丟步。給 STEP 引腳加 RC 濾波、縮短信號(hào)走線、保證單片機(jī)與驅(qū)動(dòng)器共地是必須做的基礎(chǔ)工作。6. 設(shè)計(jì)取舍細(xì)分精度不是看脈沖數(shù)而是看電流質(zhì)量把四拍、八拍、細(xì)分的機(jī)制都拆開(kāi)之后可以清楚地看到一個(gè)設(shè)計(jì)取舍脈絡(luò)整步最省資源但振動(dòng)粗獷半步用開(kāi)關(guān)量逼近連續(xù)旋轉(zhuǎn)改善振動(dòng)卻不改善轉(zhuǎn)矩波動(dòng)細(xì)分用電流閉環(huán)讓磁場(chǎng)矢量連續(xù)旋轉(zhuǎn)但引入了電流精度、斬波參數(shù)、衰減模式等一系列工程問(wèn)題。越往細(xì)分走硬件的復(fù)雜度越高收益卻是“邊際遞減”的——從整步到半步運(yùn)行品質(zhì)的改善最明顯從 1/8 到 1/256聽(tīng)感和位置穩(wěn)定性的差別往往只有在高倍顯微鏡或高分辨率編碼器下才看得見(jiàn)。所以真正做產(chǎn)品選型時(shí)我不會(huì)默認(rèn)“細(xì)分越大越好”而是先評(píng)估負(fù)載在兩個(gè)相鄰微步之間的轉(zhuǎn)矩變化是否會(huì)被機(jī)械系統(tǒng)感知。大慣量負(fù)載對(duì)微步的感知很遲鈍配 1/16 細(xì)分和 1/256 細(xì)分幾乎沒(méi)差別小慣量、低摩擦的精密平臺(tái)微步對(duì)低速平穩(wěn)性的提升才明顯。還有一個(gè)值得做的驗(yàn)證在同一個(gè)平臺(tái)上分別跑整步、半步、1/32 細(xì)分用加速度計(jì)貼在電機(jī)外殼上測(cè)振動(dòng)頻譜你會(huì)在譜線上看到低頻成分的變化那比單純聽(tīng)感更可信。從那以后我每次調(diào)步進(jìn)電機(jī)驅(qū)動(dòng)都強(qiáng)制自己走一遍固定流程先用萬(wàn)用表確認(rèn)線對(duì)再跑單4拍驗(yàn)證相序確認(rèn)方向后再換半步試振動(dòng)最后才上細(xì)分配置。每加一級(jí)細(xì)分都先檢查電流閉環(huán)波形再對(duì)比實(shí)際位移誤差而不是把寄存器寫(xiě)完就以為大功告成。這個(gè)習(xí)慣幫我排掉過(guò)太多“玄學(xué)”問(wèn)題希望也能幫到你。本文還有配套的精品資源點(diǎn)擊獲取