電機(jī)驅(qū)動(dòng)方案:從選型到調(diào)試全復(fù)盤)
先說一下我為什么會(huì)寫這篇文章。之前做一臺(tái)三軸桌面機(jī)械臂的時(shí)候我在關(guān)節(jié)驅(qū)動(dòng)上直接用了市面上那種步進(jìn)驅(qū)動(dòng)模塊結(jié)果一掛負(fù)載跑起來就丟步電機(jī)表面燙得沒法碰。后來把方案換成 DRV8818PWPR 配 PIC18LF46K40 自己做板子才終于把低速扭矩、發(fā)熱和定位精度這三件事同時(shí)壓住。這篇文章就把這套從選型到固件再到調(diào)試的完整鏈路復(fù)盤一遍適合正在做機(jī)器人關(guān)節(jié)、小型工業(yè)設(shè)備或者想從“模塊思維”轉(zhuǎn)向“芯片級(jí)設(shè)計(jì)”的嵌入式開發(fā)者參考。1. 為什么是 DRV8818PWPR PIC18LF46K40從模塊到芯片級(jí)方案的選型邏輯先聊清楚這個(gè)組合是怎么來的。市面上的步進(jìn)方案大體分成四類一體式步進(jìn)驅(qū)動(dòng)器加脈沖口、標(biāo)簽式模塊比如常見的 A4988 類小板、集成驅(qū)動(dòng)芯片自研板以及伺服閉環(huán)方案。絕大多數(shù)入門項(xiàng)目會(huì)用第二種因?yàn)樗阋?、接線快壞了一塊換一塊就行。但真到了工業(yè)級(jí)機(jī)器人場(chǎng)景模塊方案的短板就藏不住了散熱差、芯片假貨多、電流反饋不可控、過流保護(hù)不夠細(xì)致而且模塊的引腳和布局往往沒有為長(zhǎng)時(shí)間高負(fù)載預(yù)留余量。DRV8818PWPR 本身是 TI 的雙 H 橋步進(jìn)驅(qū)動(dòng)芯片HTSSOP 封裝底部帶 PowerPAD。它最大的價(jià)值不只是“能發(fā)脈沖讓電機(jī)轉(zhuǎn)”而是在芯片內(nèi)部集成了完成的電流斬波調(diào)節(jié)。也就是說板子上的 MCU 不需要去算正弦波、不需要做 PWM 電流環(huán)只要給出 STEP 和 DIR 信號(hào)芯片會(huì)自動(dòng)把相電流穩(wěn)定在設(shè)定值附近。這個(gè)特性對(duì)工業(yè)場(chǎng)景極其重要——電機(jī)負(fù)載一變模塊方案往往會(huì)因?yàn)殡妷翰▌?dòng)導(dǎo)致相電流飄移而 DRV8818PWPR 這類芯片會(huì)通過采樣電阻和內(nèi)部比較器把電流拉回來扭矩輸出就穩(wěn)得多。PIC18LF46K40 這邊的選型理由也很直白。它屬于 Microchip 的 8 位低功耗系列工作在 3.3V單電源供電就能和 DRV8818PWPR 的邏輯引腳直連不需要額外加電平轉(zhuǎn)換。40 引腳版本提供了足夠的 GPIO 和幾個(gè)關(guān)鍵外設(shè)獨(dú)立內(nèi)核 PWM、可編程邏輯單元 CLC、內(nèi)置 DAC、多個(gè)定時(shí)器都是做運(yùn)動(dòng)控制很順手的資源。更重要的是PIC18LF46K40 有 128KB 程序空間和 4KB RAM放得下一套完整的加減速曲線和位置狀態(tài)機(jī)。很多人會(huì)先入為主覺得 8 位機(jī)做不了機(jī)器人控制實(shí)際上步進(jìn)電機(jī)開環(huán)控制并不需要跑復(fù)雜的算法關(guān)鍵在定時(shí)器和中斷響應(yīng)的確定性——8 位 MCU 反而更容易做到穩(wěn)定。再回頭說說為什么不直接用 PLC 或者一體式驅(qū)動(dòng)器。工業(yè)上大量使用脈沖方向接收型驅(qū)動(dòng)器它們確實(shí)可靠但一套下來成本高、占地面積大而且很難做“細(xì)顆粒度的電流動(dòng)態(tài)調(diào)整”。比如機(jī)器人關(guān)節(jié)在啟動(dòng)時(shí)需要短時(shí)大扭矩到位鎖定時(shí)又要降低電流防止發(fā)熱一體式驅(qū)動(dòng)器不會(huì)給你這么細(xì)的控制接口DRV8818PWPR 的 VREF 引腳卻允許隨時(shí)調(diào)整電流目標(biāo)。這種靈活性正是自己做電機(jī)驅(qū)動(dòng)板的核心價(jià)值??紤]到一些讀者可能從模塊直接跳到芯片我把常見方案的差異列一下方案集成度電流控制粒度適合場(chǎng)景主要痛點(diǎn)一體式步進(jìn)驅(qū)動(dòng)器高面板電位器PLC 控制的工業(yè)設(shè)備體積大、調(diào)電流不靈活模塊小板高電位器調(diào)節(jié)教學(xué)、原型驗(yàn)證散熱差、假貨多、長(zhǎng)時(shí)間運(yùn)行不穩(wěn)DRV8818PWPR 自研板中高VREF 引腳動(dòng)態(tài)調(diào)整機(jī)器人關(guān)節(jié)、定制化設(shè)備需要自己做 PCB 和底層驅(qū)動(dòng)伺服一體化方案高閉環(huán)矢量控制高速高精度應(yīng)用成本高、調(diào)參復(fù)雜這個(gè)表格不是為了說明誰絕對(duì)好而是告訴大家選型本質(zhì)是交換成本和控制力。像桌面機(jī)械臂、AGV 底盤、傳送帶分揀機(jī)構(gòu)這類“對(duì)成本敏感但又要一定扭矩和定位能力”的場(chǎng)景DRV8818PWPR 這類芯片級(jí)的開環(huán)方案往往是最均衡的選擇。2. DRV8818PWPR 的電流斬波與微步機(jī)制控制精度的底座很多人在芯片方案上翻車不是接線接錯(cuò)了而是沒搞懂 DRV8818PWPR 內(nèi)部那個(gè)“電流斬波”到底在干什么。步進(jìn)電機(jī)本質(zhì)上是一個(gè)電感負(fù)載相電流不能瞬間建立。如果直接用固定電壓去驅(qū)動(dòng)電感會(huì)把電流慢慢推高高到一定程度就可能燒繞組反過來如果電壓不夠電流又建立不起來扭矩就軟綿綿的。因此芯片內(nèi)部要做的是讓母線電壓反復(fù)地接通和斷開看著平均值差不多等于期望電流時(shí)就停止導(dǎo)通并進(jìn)入續(xù)流衰減這就是斬波控制。DRV8818PWPR 里有一個(gè)內(nèi)部比較器實(shí)時(shí)比較采樣電阻上的電壓和 VREF 引腳設(shè)定的參考電平。電流達(dá)到設(shè)定閾值時(shí)芯片關(guān)閉高側(cè) MOSFET進(jìn)入衰減模式電流掉下來后再次打開從而把相電流維持在設(shè)定值附近。這里有三個(gè)外部參數(shù)決定控制效果采樣電阻 RSENSE 的阻值、VREF 引腳的電平以及衰減模式的選擇。電流設(shè)定值的計(jì)算方式在 TI 這類基于 DAC 的驅(qū)動(dòng)器里通??梢詫懗蒊peak VREF / (A_V × RSENSE)其中 A_V 是芯片內(nèi)部的可變?cè)鲆嫦禂?shù)一般在 5 到 8 之間。我用這顆芯片調(diào)試時(shí)用的是 A_V 8 的典型參數(shù)RSENSE 選了 0.22Ω設(shè)定 VREF 為 2.2V那么峰值電流大概是Ipeak 2.2V / (8 × 0.22Ω) 1.25A如果你的電機(jī)額定電流是 1A 到 1.5A 這個(gè)范圍這個(gè)配置基本合適。需要注意的是A_V 的具體數(shù)值一定要以手頭芯片數(shù)據(jù)手冊(cè)為準(zhǔn)不同批次和型號(hào)之間會(huì)有差異我第一次就吃了個(gè)虧拿著某篇博客里的公式直接用結(jié)果實(shí)際電流比預(yù)期大了不少電機(jī)空載就發(fā)燙。衰減模式是 DRV8818PWPR 另一個(gè)容易被忽略但極其重要的設(shè)置。當(dāng)芯片檢測(cè)到電流過流后殘余電感能量需要通過續(xù)流回路釋放這個(gè)釋放方式?jīng)Q定了電流紋波、噪聲和動(dòng)態(tài)響應(yīng)。慢衰減模式下電流下降慢續(xù)流效率高紋波相對(duì)小但高速切換時(shí)電流跟上速度的能力差快衰減模式電流下降快適合高速運(yùn)轉(zhuǎn)但效率和噪聲不如慢衰減混合衰減則是在電流變化的不同階段切換適合微步細(xì)分場(chǎng)景。我自己的經(jīng)驗(yàn)是全步和半步運(yùn)行時(shí)可以優(yōu)先考慮慢衰減而 1/8 和 1/16 微步模式下混合衰減效果最好。很多模塊方案沒有提供衰減模式選擇這正是芯片方案可以做得更好的地方。微步機(jī)制則是另一層精度來源。DRV8818PWPR 內(nèi)部通過電流 DAC 把正弦電流波形細(xì)分MCU 每給一個(gè) STEP 上升沿芯片就讓電流波形前進(jìn)一步。1/16 微步模式下原來 1.8 度一步的電機(jī)就變成了 0.1125 度一步表面上看只是平滑了實(shí)際上對(duì)低速穩(wěn)定性和定位噪聲影響巨大。機(jī)器人關(guān)節(jié)在低速運(yùn)行時(shí)如果沒有微步電機(jī)會(huì)出現(xiàn)明顯的齒輪感抖動(dòng)加了 1/16 微步之后那種顆粒感基本消失。3. PIC18LF46K40 端到端接線把脈沖、方向、電流設(shè)定落到實(shí)處芯片原理搞清楚之后接下來是把 PIC18LF46K40 和 DRV8818PWPR 真正連起來。這顆 MCU 最大的優(yōu)勢(shì)之一就是外設(shè)引腳選擇 PPS 機(jī)制——大部分外設(shè)可以映射到多個(gè)引腳布線的時(shí)候不需要為了 PWM 或者中斷引腳做很多繞線。實(shí)際項(xiàng)目中我用的引腳分配如下PIC 引腳功能目標(biāo)外設(shè)/信號(hào)說明RA2STEP 輸出定時(shí)器驅(qū)動(dòng)產(chǎn)生步進(jìn)脈沖RA3DIR 輸出方向信號(hào)高/低電平切換RA4nSLEEP 輸出芯片睡眠控制RA5MODE0 輸出微步模式選擇位RB0MODE1 輸出微步模式選擇位RB1MODE2 輸出微步模式選擇位RC2nFAULT 輸入帶內(nèi)部上拉過流/過溫故障檢測(cè)RC3DECAY 輸出衰減模式選擇RC6VREF 出/DAC 輸出設(shè)定電流目標(biāo)注意 STEP 信號(hào)要接到 MCU 的定時(shí)器比較輸出或者用普通 IO 翻轉(zhuǎn)因?yàn)?DRV8818PWPR 的 STEP 是邊沿觸發(fā)的STEP 的高電平時(shí)間只要超過數(shù)據(jù)手冊(cè)規(guī)定的最小脈寬一般是 1 到 2 微秒量級(jí)就行。DIR 信號(hào)則需要特別注意建立時(shí)間在改變方向之后至少要等待一個(gè)較短的時(shí)間再給 STEP 上升沿否則芯片可能誤判方向。這個(gè)時(shí)序我在最初測(cè)試時(shí)沒當(dāng)回事結(jié)果電機(jī)經(jīng)常在回程時(shí)多走或少走半步后來查手冊(cè)才發(fā)現(xiàn)是 DIR 的建立時(shí)間不夠。供電架構(gòu)上我的做法是先讓母線電壓 VM 進(jìn)來經(jīng)過一個(gè) 10uF 到 100uF 的電解電容穩(wěn)壓再單獨(dú)用 LDO 把電壓降到 3.3V 給 PIC18LF46K40 供電。這樣做有一個(gè)好處3.3V 的邏輯電源不會(huì)因?yàn)?VM 上大電流抽動(dòng)而波動(dòng)STEP 信號(hào)的電平也就能保持穩(wěn)定。DRV8818PWPR 的邏輯電源 VDD 可以直接接到 MCU 的 3.3V兩邊共地。電機(jī)電源和邏輯地一定要單點(diǎn)匯接否則大電流回流會(huì)在邏輯地上產(chǎn)生噪聲尖峰導(dǎo)致 MCU 誤觸發(fā)。另一個(gè)容易踩坑的地方是采樣電阻 RSENSE 的布局和功率。RSENSE 走的是相電流阻值雖然只有 0.22Ω但峰值電流到 1.25A 時(shí)功耗是 I2R (1.25)2 × 0.22 ≈ 0.34W。設(shè)計(jì)時(shí)至少要選額定功率 1W 的電阻否則電阻發(fā)熱后阻值漂移電流設(shè)置也就不準(zhǔn)了。布局上RSENSE 的兩端要走短而粗的銅皮并且用開爾文接法把采樣線的兩個(gè)端點(diǎn)直接引到芯片的感測(cè)引腳不要讓主電流路徑上的壓降干擾采樣。這一點(diǎn)很多新手會(huì)忽視總覺得采樣線拉長(zhǎng)一點(diǎn)沒影響結(jié)果實(shí)際跑到高速后電流波形全是毛刺。DRV8818PWPR 的 PowerPAD 是整個(gè)芯片散熱的命門。HTSSOP 封裝底部的散熱焊盤必須大面積接到 PCB 的敷銅上再通過過孔陣列把熱量導(dǎo)到背面。我第一版打樣時(shí)偷懶PowerPAD 下面只放了四個(gè)過孔連續(xù)跑 20 分鐘芯片表面就飆到 70 度。后來重新布局放了一排 8 個(gè) 0.3mm 的過孔底部鋪了大面積的地銅溫度直接降了 10 度以上。工業(yè)機(jī)器人場(chǎng)景通常要在機(jī)箱里長(zhǎng)時(shí)間運(yùn)行散熱這一項(xiàng)不能妥協(xié)。4. 固件里的加減速與位置狀態(tài)機(jī)從空轉(zhuǎn)夾具到機(jī)械臂關(guān)節(jié)硬件連好之后真正決定系統(tǒng)能不能用的其實(shí)是固件。很多人第一次接觸步進(jìn)控制時(shí)直接在定時(shí)器中斷里固定頻率發(fā)脈沖電機(jī)空載轉(zhuǎn)得挺好看一掛負(fù)載或者一提高轉(zhuǎn)速就丟步。原因很簡(jiǎn)單步進(jìn)電機(jī)在快速啟動(dòng)瞬間需要克服轉(zhuǎn)子的慣性和負(fù)載阻力扭矩不夠就失步了。解決的辦法是給脈沖頻率加一條加減速曲線讓電機(jī)的啟動(dòng)速度從較低值逐漸爬升到目標(biāo)速度到達(dá)目標(biāo)位置前再逐漸降速。我用 PIC18LF46K40 實(shí)現(xiàn)的方式是位置狀態(tài)機(jī)放在主循環(huán)里負(fù)責(zé)規(guī)劃下一時(shí)刻的頻率和方向定時(shí)器中斷負(fù)責(zé)真正產(chǎn)生脈沖邊沿。狀態(tài)機(jī)分成幾個(gè)階段1. IDLE : 等待位置指令 2. ACCEL : 逐步提高脈沖頻率 3. RUN : 恒速運(yùn)動(dòng) 4. DECEL : 逐步降低脈沖頻率 5. DONE : 到達(dá)目標(biāo)發(fā)出到位標(biāo)志梯形加減速是初學(xué)者最快能跑通的方案比如設(shè)置起始脈沖頻率 200Hz目標(biāo)頻率 5kHz把加速過程分成 N 步每步增加 (5000-200)/N Hz。N 根據(jù)負(fù)載慣量來調(diào)一般取 20 到 50 步。如果負(fù)載比較重或者結(jié)構(gòu)剛性不足建議改用 S 形曲線讓頻率變化率本身也平滑過渡。S 形曲線可以用查表加插值的方式實(shí)現(xiàn)PIC18LF46K40 的 128KB Flash 完全放得下一張幾百個(gè)點(diǎn)的速度表。脈沖產(chǎn)生的核心代碼框架可以這樣組織// 定時(shí)器中斷服務(wù)函數(shù)用于產(chǎn)生下一個(gè)STEP邊沿 void __interrupt() timer_isr(void) { if (PIR1bits.TMR1IF) { // 清中斷標(biāo)志 PIR1bits.TMR1IF 0; // 步進(jìn)脈沖輸出拉高 STEP保持幾個(gè)微秒后拉低 STEP_IO 1; __delay_us(2); STEP_IO 0; // 計(jì)步當(dāng)前位置遞增或遞減 if (dir_flag) { current_position; } else { current_position--; } // 更新下一次中斷的定時(shí)器周期 TMR1H speed_table[accel_index].high; TMR1L speed_table[accel_index].low; accel_index update_index_by_state_machine(); } }實(shí)際使用時(shí)需要注意2 微秒的高電平時(shí)間對(duì) DRV8818PWPR 通常夠用但如果 MCU 主頻較低__delay_us 的精度會(huì)受影響更好的做法是讓定時(shí)器輸出比較模式直接產(chǎn)生脈沖波形把 MCU 從脈沖產(chǎn)生的負(fù)擔(dān)里解放出來。PIC18LF46K40 的獨(dú)立內(nèi)核 PWM 就能干這個(gè)事但脈沖個(gè)數(shù)可控的 PWM 波形需要 CCP 和 TMR 配合理念和上述代碼一致。微步模式會(huì)直接改變位置和速度的換算。1.8 度的雙極步進(jìn)電機(jī)整步模式下轉(zhuǎn)一圈需要 200 步1/16 微步模式下需要 3200 步。脈沖頻率和轉(zhuǎn)速的關(guān)系可以寫成轉(zhuǎn)速(rpm) 脈沖頻率(Hz) × 60 / 每轉(zhuǎn)步數(shù)比如 1/16 微步模式下3200 步每轉(zhuǎn)如果脈沖頻率給 32kHz那么轉(zhuǎn)速是 32,000 × 60 / 3,200 600rpm。我的機(jī)械臂關(guān)節(jié)通常運(yùn)行在 30 到 120rpm 的區(qū)間對(duì)應(yīng)脈沖頻率只有 1.6kHz 到 6.4kHz這對(duì) 8 位 MCU 來說完全沒壓力。如果你追求更高的轉(zhuǎn)速就需要同步降低微步細(xì)分或者換更大電流驅(qū)動(dòng)的方案這也是為什么微步模式不是越大越好要配合實(shí)際轉(zhuǎn)速需求。電流動(dòng)態(tài)調(diào)整策略放在固件里是體現(xiàn)這塊板子價(jià)值的一個(gè)重點(diǎn)。我的做法是啟動(dòng)和帶載過程把 VREF 設(shè)成最大確保扭矩充足勻速運(yùn)行階段降到 80%到位鎖定階段直接降到 50%。因?yàn)?DRV8818PWPR 的電流設(shè)定完全由 VREF 引腳決定而 PIC18LF46K40 內(nèi)置 DAC 正好可以輸出 0 到 3.3V 的任意電壓這一步實(shí)現(xiàn)起來一丁點(diǎn)額外硬件都不用加。鎖定電流減半以后電機(jī)的發(fā)熱明顯下降這對(duì)長(zhǎng)時(shí)間通電的機(jī)器人關(guān)節(jié)來說是很實(shí)用的省心特性。5. AC實(shí)際測(cè)試中繞不開的四個(gè)坑嘯叫、丟步、過熱、上電跳轉(zhuǎn)調(diào)試階段才是真正讓人長(zhǎng)記性的環(huán)節(jié)。我把自己在這套方案上踩過的坑按出現(xiàn)頻率整理一下希望能幫后面的人省掉幾天的排查時(shí)間。第一個(gè)坑是嘯叫。電機(jī)運(yùn)行時(shí)發(fā)出尖細(xì)的“嘶嘶”聲聽起來像是固定頻率的蜂鳴。一開始我以為是機(jī)械共振后來斷開負(fù)載只留一個(gè)電機(jī)空轉(zhuǎn)嘯叫聲依然存在那就基本可以確定是電流斬波頻率或者微步刷新頻率落進(jìn)了人耳可聽范圍。處理辦法有兩步先檢查衰減模式如果當(dāng)前用的是快衰減試著切換到慢衰減很多時(shí)候聲音會(huì)立刻小很多再檢查 STEP 脈沖的頻率抖動(dòng)如果 MCU 的定時(shí)器周期更新方式不夠平滑脈沖串里會(huì)出現(xiàn)少量高頻抖動(dòng)驅(qū)動(dòng)芯片會(huì)把這種抖動(dòng)直接放大成噪聲。調(diào)整定時(shí)器裝載值讓頻率在加減速階段按小步長(zhǎng)遞變嘯叫會(huì)明顯緩解。第二個(gè)坑是丟步這也是最讓人頭疼的故障。我第一次帶負(fù)載測(cè)試時(shí)電機(jī)轉(zhuǎn)一小段就開始“咔咔”響位置完全對(duì)不上。按照典型排查鏈路一步步來先停掉所有加減速邏輯讓電機(jī)低速手動(dòng)轉(zhuǎn)排除接線問題。然后用電流鉗看相電流結(jié)果發(fā)現(xiàn)一負(fù)載大電流波形就塌下去再量母線電壓發(fā)現(xiàn) VM 在電機(jī)啟動(dòng)瞬間掉到 8V 以下。根因是電源沒留夠裕量啟動(dòng)尖峰電流直接把母線電壓拉崩了。換了一個(gè)更大功率的開關(guān)電源并在芯片 VM 引腳進(jìn)線處加了 220uF 電解電容之后情況有所改善但還是偶爾丟步。接著查加速度曲線發(fā)現(xiàn)是從 200Hz 直接跳到了 5kHz轉(zhuǎn)子慣性根本跟不上。把加速步數(shù)從 20 調(diào)到 40丟步就消失了。完整鏈路走下來結(jié)論很簡(jiǎn)單先查供電再查電流設(shè)定再查曲線參數(shù)順序不能亂。第三個(gè)坑是芯片過熱。這有幾種不同的情況如果你測(cè)的是芯片表面很燙先懷疑 PowerPAD 的焊盤沒焊好或者底層散熱銅皮太小如果電機(jī)也一起燙那就查電流設(shè)定是否超出電機(jī)額定。還有一個(gè)容易被忽略的點(diǎn)是芯片長(zhǎng)期工作在最大電流附近沒有任何降額。工業(yè)設(shè)計(jì)里我習(xí)慣把連續(xù)工作電流控制在芯片規(guī)格的 70% 左右扭矩不夠就換更大規(guī)格的電機(jī)和驅(qū)動(dòng)而不是讓芯片頂著紅線跑。第四個(gè)坑是上電瞬間電機(jī)跳動(dòng)。第一次上電時(shí)電機(jī)“咔”地跳一下位置就偏了。這個(gè)現(xiàn)象通常和 nSLEEP 引腳的電平時(shí)序有關(guān)。如果 MCU 在上電初始化期間IO 輸出還沒有穩(wěn)定到預(yù)期電平DRV8818PWPR 會(huì)隨機(jī)進(jìn)入某個(gè)輸出狀態(tài)電機(jī)線圈就可能短暫導(dǎo)通并產(chǎn)生位移。解決方法是讓 MCU 先完成配置把 nSLEEP、DIR、MODE 等引腳全部設(shè)置好再延時(shí)一段時(shí)間后釋放芯片的睡眠狀態(tài)。另一個(gè)做法是控制母線電壓的建立時(shí)序盡量讓 VM 晚于邏輯電源 VDD 到達(dá)避免芯片在供電不穩(wěn)的狀態(tài)下輸出。這兩種措施疊加以后上電跳動(dòng)基本不會(huì)再出現(xiàn)。現(xiàn)象優(yōu)先檢查項(xiàng)常見根因處理方式電機(jī)嘯叫衰減模式、脈沖抖動(dòng)快衰減 頻率毛刺切換衰減模式、平滑定時(shí)器更新帶載丟步母線電壓、加速度曲線電源拉崩、加速過猛加大電容/電源功率調(diào)整曲線芯片燒燙焊盤布局、電流設(shè)定PowerPAD 散熱不足加大過孔陣列、降額使用上電跳動(dòng)nSLEEP 時(shí)序初始化時(shí)輸出不穩(wěn)定先配 IO 再釋放睡眠6. 從開環(huán)走向半閉環(huán)堵轉(zhuǎn)檢測(cè)與現(xiàn)場(chǎng)可靠性很多人覺得步進(jìn)電機(jī)只能是開環(huán)控制因?yàn)橐坏﹣G步系統(tǒng)并不知道。但實(shí)際工業(yè)應(yīng)用中大部分丟步發(fā)生前是有征兆的負(fù)載增大導(dǎo)致電流上升、脈沖目標(biāo)位置和電機(jī)實(shí)際轉(zhuǎn)角逐漸偏離。充分利用 DRV8818PWPR 的 nFAULT 引腳和 MCU 的 ADC可以在不加編碼器的情況下做一版“軟堵轉(zhuǎn)檢測(cè)”。具體做法是MCU 在 RUN 階段定時(shí)通過 ADC 讀取母線電壓和 VREF 相關(guān)信號(hào)如果檢測(cè)到電流異常升高或者電壓跌落結(jié)合位置誤差累計(jì)判斷是否為堵轉(zhuǎn)。比如目標(biāo)位置設(shè)置為前進(jìn) 10000 步但電機(jī)在 3000 步左右就已經(jīng)出現(xiàn)連續(xù)多次電流異??梢灾苯优卸ó惓2⑼V馆敵觥_@種方式無法做到閉環(huán)控制的精度但足以在工業(yè)現(xiàn)場(chǎng)避免電機(jī)長(zhǎng)時(shí)間堵轉(zhuǎn)導(dǎo)致的過熱損壞。如果項(xiàng)目最終需要真正的閉環(huán)定位可以考慮外接編碼器。PIC18LF46K40 的 PPS 機(jī)制可以方便地讓編碼器的 A/B 相信號(hào)映射到外部中斷引腳或者讓 SPI 接口讀取絕對(duì)值編碼器。做了閉環(huán)之后就不再只是“發(fā)脈沖了”而是位置環(huán)控制MCU 根據(jù)實(shí)際位置偏差修正目標(biāo)脈沖丟步可以被實(shí)時(shí)糾正。這個(gè)過程相比直接用伺服電機(jī)成本低很多對(duì)于很多機(jī)器人關(guān)節(jié)場(chǎng)景已經(jīng)足夠。我的個(gè)人體會(huì)是DRV8818PWPR 這類芯片方案的最大價(jià)值并不在于它比模塊驅(qū)動(dòng)多強(qiáng)而在于它把“電流控制”的主動(dòng)權(quán)交回到了軟件手里。VREF 動(dòng)態(tài)可調(diào)、衰減模式可選、故障引腳可讀這些對(duì)模塊方案來說都是被閹割掉的接口。如果你和我一樣需要長(zhǎng)期維護(hù)一套機(jī)器人運(yùn)動(dòng)控制板一開始就按芯片級(jí)方案做后面現(xiàn)場(chǎng)排查問題真的會(huì)省力很多。