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