![]()
一塊89元的擴(kuò)展板,能讓Arduino同時指揮4臺直流電機(jī)、2臺步進(jìn)電機(jī)和2臺舵機(jī)——相當(dāng)于給單片機(jī)裝上了機(jī)械四肢的神經(jīng)系統(tǒng)。這不是實(shí)驗室里的概念驗證,而是全球創(chuàng)客社區(qū)用了十幾年的經(jīng)典方案。
電機(jī)控制是機(jī)器人、自動化系統(tǒng)和機(jī)電一體化項目的核心環(huán)節(jié)。但Arduino的GPIO引腳直接驅(qū)動電機(jī)?電流不夠,芯片會冒煙。L293D電機(jī)驅(qū)動板解決的正是這個基礎(chǔ)矛盾:用低功率信號控制高功率執(zhí)行器。
本文用Arduino UNO配合L293D驅(qū)動板,實(shí)現(xiàn)三種電機(jī)的完整控制:直流電機(jī)調(diào)速與換向、舵機(jī)角度定位、步進(jìn)電機(jī)精確旋轉(zhuǎn)。用戶通過按鍵和電位器輸入指令,16×2 I2C液晶實(shí)時顯示狀態(tài)——一個完整的交互閉環(huán)。
驅(qū)動板的"雙核"架構(gòu)
L293D驅(qū)動板的核心是兩枚L293D H橋驅(qū)動芯片。每枚芯片內(nèi)置雙H橋,可獨(dú)立控制兩臺直流電機(jī)的正反轉(zhuǎn),或合并驅(qū)動一臺雙相步per電機(jī)。兩枚芯片疊加,理論上限是4臺直流電機(jī)或2臺步進(jìn)電機(jī)。
但設(shè)計者的野心不止于此。板載額外引出兩路舵機(jī)接口,用Arduino的PWM信號直接驅(qū)動。這種"2+2"的混合架構(gòu),讓一塊擴(kuò)展板覆蓋機(jī)器人最常見的三種執(zhí)行器類型。
74HC595移位寄存器是另一個關(guān)鍵組件。Arduino的數(shù)字引腳有限,驅(qū)動多路電機(jī)時很快捉襟見肘。移位寄存器用串行轉(zhuǎn)并行的方式,把少數(shù)幾根控制線擴(kuò)展成多路方向信號——類似用一根水管分出多個龍頭,只是這里流動的是高低電平。
板載復(fù)位按鈕、電源指示燈、下拉電阻網(wǎng)絡(luò),這些細(xì)節(jié)決定了項目的可靠性。復(fù)位鍵讓用戶無需拆板就能重啟;LED直觀顯示電機(jī)電源狀態(tài);電阻網(wǎng)絡(luò)確保上電瞬間驅(qū)動輸入處于確定狀態(tài),避免電機(jī)亂轉(zhuǎn)。
電機(jī)接口的物理布局
四個電機(jī)輸出端子標(biāo)記為M1至M4,每路支持4.5V-24V電壓范圍,持續(xù)電流600mA。這個參數(shù)意味著:小型減速電機(jī)、微型氣泵、12V風(fēng)扇都能直接驅(qū)動,但大功率輪轂電機(jī)需要外接驅(qū)動級。
舵機(jī)接口單獨(dú)標(biāo)注,通常對應(yīng)Arduino的9號和10號PWM引腳。步進(jìn)電機(jī)則需要占用兩個相鄰的電機(jī)通道——比如M1+M2驅(qū)動一臺,M3+M4驅(qū)動另一臺。
電源配置有兩種模式可選。電機(jī)電壓低于12V且總電流不大時,可以用跳線短接PWR端子,讓Arduino和電機(jī)共享一路電源。這種接法省事,但電機(jī)啟動瞬間的電流沖擊可能讓Arduino復(fù)位。
更穩(wěn)妥的方案是雙電源:拔掉PWR跳線,Arduino用USB供電,電機(jī)電源單獨(dú)接到EXT_PWR端子。物理隔離杜絕了相互干擾,大功率應(yīng)用必選。
代碼層面的控制邏輯
Arduino IDE中需要安裝Adafruit Motor Shield庫。初始化時創(chuàng)建AF_DCMotor對象,用setSpeed(0-255)設(shè)定PWM占空比,run(FORWARD/BACKWARD/RELEASE)控制方向。RELEASE模式切斷電機(jī)供電,比單純停轉(zhuǎn)更省電,也減少發(fā)熱。
步進(jìn)電機(jī)控制稍復(fù)雜。AF_Stepper對象需要指定步數(shù)和引腳,step(步數(shù), 方向, 步進(jìn)模式)完成精確位移。單相、雙相、交錯、微步四種模式,在扭矩和平滑度之間取舍。
舵機(jī)最直觀,直接用Servo庫attach到對應(yīng)引腳,write(0-180)設(shè)定角度。驅(qū)動板只是物理轉(zhuǎn)接,控制邏輯全在Arduino端。
實(shí)際項目中,電位器接模擬口讀數(shù)值,映射到電機(jī)速度或舵機(jī)角度;按鍵觸發(fā)特定動作;LCD用I2C協(xié)議顯示當(dāng)前狀態(tài)。這套人機(jī)界面模板,稍加修改就能適配具體場景。
600mA的電流上限是硬約束。超過這個值,L293D內(nèi)部的過流保護(hù)會啟動,或者芯片直接過熱保護(hù)。持續(xù)堵轉(zhuǎn)的電機(jī)、低阻抗的大扭矩電機(jī),都可能觸發(fā)這個邊界條件。datasheet里的"峰值1.2A"是毫秒級的耐受,不能當(dāng)作工作電流。
散熱也是實(shí)戰(zhàn)課題。四路電機(jī)全速運(yùn)轉(zhuǎn)時,L293D的壓降以熱的形式耗散。塑料封裝的結(jié)到環(huán)境熱阻約80°C/W,600mA×2V壓降≈1.2W,溫升接近100°C。長時間高負(fù)載運(yùn)行,建議加散熱片或降低PWM占空比。
這個2008年定型的驅(qū)動方案,至今仍在教育市場和原型開發(fā)中活躍。它的替代者已經(jīng)涌現(xiàn):DRV8833效率更高,TB6612FNG電流更大,集成FOC的驅(qū)動芯片能直接控制無刷電機(jī)。但L293D的優(yōu)勢在于文檔齊全、示例豐富、價格觸底——對于"先讓電機(jī)轉(zhuǎn)起來"這個首要目標(biāo),它依然是容錯率最高的選擇。
你上一次燒掉電機(jī)驅(qū)動芯片,是因為過流、過壓,還是單純接反了電源極性?
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.