概述
原始的Adafruit Motorshield套件是我們最受歡迎的套件之一,因此我們決定做得更好。我們已經(jīng)升級了屏蔽套件,使其成為驅(qū)動DC和步進(jìn)電機(jī)的最佳,最簡便的方法。該防護(hù)罩將幫助您快速完成下一個(gè)機(jī)器人項(xiàng)目!我們保留了驅(qū)動多達(dá)4個(gè)DC電動機(jī)或2個(gè)步進(jìn)電動機(jī)的能力,但又進(jìn)行了許多改進(jìn):
我們現(xiàn)在有了TB6612 MOSFET驅(qū)動器,而不是L293D達(dá)林頓驅(qū)動器,每通道電流能力為1.2A(您可以自行設(shè)計(jì)達(dá)到3A峰值,每次約20ms)。它還具有更低的電機(jī)壓降,因此您可以從電池中獲得更多的扭矩,并且還具有內(nèi)置的反激二極管。
我們沒有使用閂鎖和Arduino的PWM引腳,而是使用了專用的PWM驅(qū)動器芯片。該芯片可處理I2C上的所有電動機(jī)和速度控制。僅兩個(gè)GPIO引腳(SDA和SCL)加上5v和GND。驅(qū)動多臺電動機(jī)是必需的,并且由于它是I2C,因此您還可以將任何其他I2C設(shè)備或屏蔽連接到同一引腳。這也使其與Uno,Leonardo,Due和Mega R3等任何Arduino兼容。
完全可堆疊的設(shè)計(jì):5個(gè)地址選擇引腳意味著最多32個(gè)可堆疊屏蔽:那是64個(gè)步進(jìn)器或128個(gè)直流電機(jī)!這么多步進(jìn)器到底能做什么?我不知道,但是如果您有什么建議,請給我們發(fā)照片,因?yàn)槟菍⑹且粋€(gè)非常光榮的項(xiàng)目。
還有許多其他小的改進(jìn),例如電源引腳上的極性保護(hù)FET和較大的原型設(shè)計(jì)區(qū)域。屏蔽層已在Adafruit進(jìn)行了組裝和測試,因此您所要做的就是在直的或堆疊的插頭和接線端子上焊接。
讓我們再次檢查一下這些規(guī)格:
2個(gè)用于Arduino高分辨率專用計(jì)時(shí)器的5V“業(yè)余”伺服器連接-無抖動!
4個(gè)H橋:TB6612芯片組為每個(gè)橋提供 1.2A strong》(對于短暫的20ms峰值為3A),具有熱關(guān)斷保護(hù),內(nèi)部反沖保護(hù)二極管。可以在4.5VDC到13.5VDC的電壓下運(yùn)行電動機(jī)。
最多4個(gè)具有單獨(dú)的8位速度選擇(因此,分辨率約為0.5%)的雙向DC 電動機(jī)。
》
最多2個(gè)具有單線圈,雙線圈,交錯(cuò)或微步進(jìn)的步進(jìn)電機(jī)(單極或雙極)。
上電時(shí)電機(jī)會自動禁用
大型接線端子連接器,可輕松連接電線(18-26AWG)和電源
Arduino重置按鈕位于頂部
受極性保護(hù)的2針接線端子和跳線連接外部電源,用于單獨(dú)的邏輯/電機(jī)電源
經(jīng)測試與Arduino UNO,Leonardo,ADK/Mega R3,Diecimila和Duemilanove兼容。與Due與3.3v邏輯跳線一起使用??膳cMega/ADK R2及更早版本的2個(gè)跳線一起使用。
下載易于使用的Arduino軟件庫,查看示例,即可開始使用!
5v 或 3.3v 兼容的邏輯電平-可配置跳線。
從Arduino 1.5.6-r2 BETA開始,Due Wire庫中存在一個(gè)錯(cuò)誤,阻止多個(gè)Motor Shields與Due一起正常使用!
常見問題解答
該防護(hù)罩可以使用多少個(gè)電機(jī)?
您可以使用2個(gè)在5V電壓下運(yùn)行的DC業(yè)余伺服器和最多4個(gè)DC電動機(jī)或2個(gè)步進(jìn)電動機(jī)(或1個(gè)步進(jìn)和2個(gè)DC電動機(jī)) 5-12VDC
我可以連接更多電機(jī)嗎?
是的,通過堆疊盾牌!堆疊的每個(gè)屏蔽都將添加 4個(gè)DC電動機(jī)或2個(gè)步進(jìn)電動機(jī)(或另外1個(gè)步進(jìn)電動機(jī)和2個(gè)DC電動機(jī))。
隨著伺服觸點(diǎn)進(jìn)入Arduino的#9和#10引腳,您將不會獲得更多的伺服連接。
如果我還需要更多
看看我們可愛的伺服屏蔽罩,它也可以與該馬達(dá)屏蔽罩堆疊,并增加了16個(gè)每個(gè)盾牌可免費(fèi)運(yùn)行的伺服器http://learn.adafruit.com/adafruit-16-channel-pwm-slash-servo-shield
這是什么Arduinos盾是否兼容?
經(jīng)測試可與Duemilanove,Diecimila,Uno一起使用(所有版本),萊昂納多和Mega/ADK R3及更高版本。
如果您將屏蔽層的SDA引腳與Digital 20以及SCL引腳與Digital 21的跳線焊接起來,則它可以與Mega R2及更低版本配合使用。要與Due或其他3.3v處理器一起使用,必須將開發(fā)板配置為3.3v邏輯電平。找到標(biāo)記為“ Logic”的3個(gè)打擊墊的集合。在中心焊盤和5v之間切出一條小線,并在中心處從3.3v添加一個(gè)跳線。
從Arduino 1.5.6-r2 BETA開始,Due Wire庫中存在一個(gè)錯(cuò)誤,阻止多個(gè)Motor Shields正常工作!
我在嘗試運(yùn)行示例代碼時(shí)遇到以下錯(cuò)誤:“錯(cuò)誤:Adafruit_MotorShield.h:沒有此類文件或目錄。。..”
確保已安裝Adafruit_MotorShield庫
我如何安裝庫?
在http://learn.com上檢查有關(guān)該主題的教程頁面。 adafruit.com/adafruit-motor-shield-v2-for-arduino/install-soft ware
幫助!我的馬達(dá)不起作用! - 救命!我的電機(jī)不工作!。..但是伺服系統(tǒng)工作正常!
電源指示燈是點(diǎn)燃?如果板載綠色電源LED指示燈不亮,則步進(jìn)電機(jī)和直流電機(jī)連接將無法工作!
您必須通過POWER接線端子或Arduino上的DC筒形插孔將5-12VDC電源連接到屏蔽層和VIN跳線。
i》
綠色電源LED有什么用?
LED指示 DC/步進(jìn)電機(jī)電源正在工作。如果沒有明亮地點(diǎn)亮,則直流/步進(jìn)電機(jī)將不會運(yùn)行。伺服端口由5V供電,不使用直流電動機(jī)電源
電動機(jī)屏蔽層上未使用哪些引腳?
GND和5v(默認(rèn))或3.3v電壓為板載邏輯供電。 (可通過跳線選擇5v或3v操作)
屏蔽層使用SDA和SCL i2c引腳來控制DC和步進(jìn)電機(jī)。在Arduino UNO上,這些也稱為A4和A5。在Mega上,它們也被稱為Digital 20和21。在Leonardo上,它們也被稱為Digital 2和3。請勿將帶有這些屏蔽的Arduino上的這些引腳與i2c傳感器/驅(qū)動器一起使用。
由于屏蔽使用I2C進(jìn)行通信,因此可以將任何其他i2c傳感器或驅(qū)動器連接到SDA/SCL引腳,只要它們不使用地址 0x60 (屏蔽的默認(rèn)地址)或 0x70 (此芯片用于組控制的“所有呼叫”地址)
如果要使用伺服連接,它們位于針腳#9和#10上。如果您不使用連接器,那么這些引腳將不使用。
您可以將任何其他引腳用于其他用途
請注意,引腳A4和A5連接到SDA和SCL,以兼容經(jīng)典Arduino。這些引腳不能在其他處理器上使用。
如何連接未使用的引腳?
所有針腳都沿著屏蔽的邊緣分成0.1“間距的插頭
我的電動機(jī)運(yùn)行時(shí)Arduino嚇壞了!屏蔽層破損了嗎?
電動機(jī)需要很多時(shí)間的電源,并可能導(dǎo)致“掉電”,從而使Arduino復(fù)位,因此,屏蔽罩設(shè)計(jì)用于單獨(dú)的(分體)電源-一個(gè)用于電子設(shè)備,一個(gè)用于電動機(jī),這樣做可以防止掉電。請閱讀用戶手冊以獲取有關(guān)以下信息:適當(dāng)?shù)碾娫础?/p>
我正在嘗試構(gòu)建此機(jī)器人,它似乎無法在9V電池上運(yùn)行。。..
您不能用9V電池為電動機(jī)供電。電動機(jī)必須使用AA電池或鉛酸電池。
此屏蔽能否控制小型3V電機(jī)?
我有良好的固態(tài)電源,但是直流電動機(jī)似乎“斷路了”
嘗試在兩個(gè)之間焊接一個(gè)陶瓷或碟形0.1uF電容器。電機(jī)接線片(在電機(jī)本身上!)將減少可能反饋回電路的噪聲(感謝macegr?。?/p>
當(dāng)電動機(jī)開始運(yùn)行時(shí),其他任何功能均不起作用
許多小型直流電動機(jī)都有很多“電刷噪聲”。這會反饋到Arduino電路并導(dǎo)致不穩(wěn)定的操作??梢酝ㄟ^在電機(jī)上焊接一些0.1uF陶瓷噪聲抑制電容器來解決此問題。
總共需要3個(gè)。電機(jī)端子之間有1個(gè),每個(gè)端子與電機(jī)外殼之間有1個(gè)。
但是我的電動機(jī)上已經(jīng)裝有電容器,但仍然無法工作。
div》
為什么不只是在屏蔽層中設(shè)計(jì)電容器?
它們在那里無效。必須在源頭處抑制噪聲,否則電動機(jī)導(dǎo)線將像天線一樣工作并將其廣播到系統(tǒng)的其余部分!
為什么我的步進(jìn)電機(jī)什么也不會走
由于屏蔽是由i2c控制的,因此最大步進(jìn)速率為受i2c總線速度的限制。默認(rèn)總線速度為100KHz,可以通過編輯Arduino安裝文件夾中的庫文件將其提高到400KHz??梢栽?硬件/庫/wire/utility/twi.h 中找到該文件。
用“ #define TWI_FREQ 100000L”
查找行將其更改為“ #define TWI_FREQ 400000L”
或者,您可以將以下代碼添加到setup()函數(shù)中:(注意:此行必須在對begin()的調(diào)用后 插入)
TWBR =((F_CPU/400000l)-16)/2;//將i2c時(shí)鐘更改為400KHz
此屏蔽使用了哪些I2C地址?
可從0x60-0x7F尋址屏蔽。 0x70是所有董事會都將應(yīng)答的“所有呼叫”地址。
我的防護(hù)罩無法與我的LED背包一起使用。
某些背包的默認(rèn)地址為0x70。這是電動機(jī)護(hù)罩上控制器芯片的“全部呼叫”地址。如果您重新定位背包,它將與防護(hù)罩一起使用。
安裝標(biāo)題和終端
安裝標(biāo)準(zhǔn)接頭
防護(hù)罩隨附0.1 “標(biāo)準(zhǔn)接頭連接器。標(biāo)準(zhǔn)接頭連接器不允許堆疊,但機(jī)械強(qiáng)度更高,而且價(jià)格也便宜得多!如果要在頂部堆疊屏蔽,請勿執(zhí)行此步驟,因?yàn)楹附雍鬅o法卸載接頭連接器in!向下跳至堆棧教程的底部
的接頭中
將0.1”接頭分成6、8和/或10針長的部分,并將長端滑入Arduino
將組裝好的屏蔽層放置在帶插頭的Arduino的頂部,以便插頭的所有短部分都通過外部的焊盤粘住
將每個(gè)插針焊接到屏蔽層中以進(jìn)行安全連接
接下來,將連接端子塊,電源跳線和伺服連接器
就是這樣!現(xiàn)在您可以安裝接線端子和跳線。..
安裝接線端子及更多
安裝普通或堆疊式接頭連接器后,必須安裝接線端子。
接下來,我們將安裝端子塊。這些就是我們將電源和電動機(jī)連接到屏蔽層的方式。它們比直接焊接更容易使用,只需使用小螺絲刀松開/連接電線!
首先,我們必須將它們焊接。
將3針端子塊滑入2針端子塊,因此您有2 x 5針和1 x 2針塊。兩套5針腳設(shè)置在任一側(cè)。 2針引腳靠近屏蔽層的底部。確保接線端子的開口孔面向 out !
將板翻轉(zhuǎn)過來,以便您可以看到并焊接接線端子的插針
焊接器在外部電源接線盒的兩個(gè)引腳中
兩個(gè)電動機(jī)模塊中的焊料,每個(gè)5個(gè)墊塊
Tha接線端子就可以了。接下來,伺服連接。
確定接下來,拿起 2x3排針,并將其短腳放到頂部角上,上面寫著SERVO 1和SERVO 2
您可能需要稍微傾斜一下角度才能拿到零件可以插入兩組3針孔中。我們這樣做是為了避免將其翻轉(zhuǎn)時(shí)掉落!
然后將板翻轉(zhuǎn)過來并焊接6個(gè)引腳
最后,折斷2針插頭,并將其放在POWER接線端子旁邊,短腿向下,如果需要,用膠帶將其固定并焊接。 br》
div》使用堆棧頭安裝
您將需要為此步驟購買Arduino堆疊接頭,但防護(hù)罩并未隨附。
我們沒有在2x3堆疊接頭中顯示焊接,但是您也應(yīng)該在其中焊接-即使此屏蔽不使用它,上面的那個(gè)也可能需要那些引腳!
首先將10針,2 x 8針和6針堆疊接頭從頂部滑入屏蔽的外排。然后將板翻轉(zhuǎn)過來,使其靠在四個(gè)接頭上。如有必要,請拉直腿。
每個(gè)標(biāo)頭釘一個(gè)針,使它們在更多焊接之前就位。如果接頭彎曲,則可以在重新定位時(shí)重新加熱一個(gè)針腳以將其弄直
一旦您弄平了所有標(biāo)頭,返回并焊接每個(gè)接頭的其余引腳。
安裝軟件
安裝Adafruit Motor Shield V2庫
要在Arduino上使用盾牌,您需要安裝Adafruit Motorshield v2庫。 此庫與用于v1防護(hù)罩的舊版AF_Motor庫不兼容。但是,如果您有用于較舊的防護(hù)罩的代碼,則修改代碼以使用新的防護(hù)罩并不難。我們不得不稍微改變一下接口以支持屏蔽堆疊,我們認(rèn)為這是值得的!可以從Arduino庫管理器中獲得它,因此我們建議使用它。
從IDE中打開庫管理器。..
,然后鍵入 adafruit motor 來查找?guī)?。點(diǎn)擊安裝
如果計(jì)劃將AccelStepper用于加速控制或同時(shí)控制多個(gè)步進(jìn)電機(jī),則還需要下載并安裝AccelStepper庫:
AccelStepper庫
有關(guān)如何安裝Arduino庫的更多詳細(xì)信息,請查看我們的詳細(xì)教程!
運(yùn)行示例代碼
直流電動機(jī)
該庫附帶了一些示例,可幫助您快速入門。我們建議您開始使用直流電動機(jī)示例。您可以使用任何可以由6V-12VDC供電的直流電動機(jī)。首先,重新啟動IDE以確保已加載新庫。
將屏蔽層插入Arduino并將DC電動機(jī)連接到電動機(jī)端口1 -電動機(jī)是雙向的,哪條線進(jìn)入哪個(gè)接線端子都沒有關(guān)系。連接到頂部的兩個(gè)端子端口,而不連接到中間的引腳(GND)。有關(guān)紅色和藍(lán)色電線的示例,請參見下圖。請確保擰緊接線盒以確保連接良好!
還必須提供5-12VDC來為電動機(jī)供電??梢酝ㄟ^兩種方式
您可以通過 DC Barrel Jack 和插入所示的VIN跳線為Arduino供電。作為下方黑色綠色電源LED旁邊的黑色高大手柄
,您可以通過DC Barrel插孔或 USB端口為Arduino供電。然后通過5-12VDC電動機(jī)電源端子端口,綠色電源LED旁邊的雙接線端子并移除VIN跳線
如果電源端子排旁邊的綠色LED指示燈沒有亮起,請不要繼續(xù)!
正確連接了電動機(jī),并且您的電源LED點(diǎn)亮了,我們可以上傳代碼。
在IDE中,加載 File-》 Examples-》 Adafruit_MotorShield-》 DCMotorTest
您應(yīng)該看到并聽到DC電動機(jī)打開后再來回移動的情況,如果看不到機(jī)芯,請附上紙條或膠帶作為“標(biāo)志”,可以幫助您直觀地查看機(jī)芯。
步進(jìn)電機(jī)測試
您可以還要測試步進(jìn)電機(jī)與屏蔽的連接。屏蔽可以運(yùn)行單極性(5線和6線)和雙極性(4線)的步進(jìn)器。它不能與其他任何數(shù)量的電線一起運(yùn)行步進(jìn)器!代碼與單極或雙極電機(jī)相同,接線方式略有不同。
將屏蔽層插入Arduino,并將步進(jìn)電機(jī)連接到電機(jī)端口2 -與DC電機(jī)不同,該導(dǎo)線訂單確實(shí)很重要。連接到頂部的兩個(gè)終端端口(線圈1)和底部的兩個(gè)終端端口(線圈2)。
如果您使用的是雙極電機(jī),請不要連接到中間引腳(GND)。
如果您使用的是5芯的單極電機(jī),請將公共線連接到GND
如果您使用的是6線制單極電機(jī),則可以將兩根“中心線圈線”連接到GND
您還必須提供5-12VDC直流電源發(fā)動機(jī)??梢酝ㄟ^兩種方式完成此操作
您可以通過 DC Barrel Jack 和插入VIN跳線(如圖所示)為Arduino供電。黑色手柄緊貼在下面綠色的電源LED旁邊
您可以通過DC Barrel插孔或 USB端口為Arduino供電。然后通過5-12VDC電動機(jī)電源端子端口,綠色電源LED旁邊的雙接線端子對屏蔽層供電。并卸下VIN跳線
如果綠色LED不能亮起不要繼續(xù)-您必須通過VIN跳線或接線端子
確認(rèn)電機(jī)已正確連接并且電源LED點(diǎn)亮,我們可以上傳代碼。
在IDE中,加載 File-》 Examples-》 Adafruit_MotorShield-》 StepperTest
您應(yīng)該看到并聽到步進(jìn)電機(jī)打開后再來回移動,如果看不到運(yùn)動,則在紙或膠帶上貼上“標(biāo)志”可以幫助您直觀地看到運(yùn)動。有四種移動步進(jìn)器的方法,它們具有變化的速度,轉(zhuǎn)矩和平滑度折衷。此示例代碼將演示全部四個(gè)。
圖書館參考
類Adafruit_MotorShield; Adafruit_MotorShield類表示電動機(jī)屏蔽罩,必須使用任何DCMotor或StepperMotors對其進(jìn)行實(shí)例化。您需要為系統(tǒng)中的每個(gè)屏蔽聲明一個(gè)Adafruit_MotorShield。
Adafruit_MotorShield( uint8_t addr = 0x60);
構(gòu)造函數(shù)使用一個(gè)可選參數(shù)來指定屏蔽的i2c地址。構(gòu)造函數(shù)的默認(rèn)地址(0x60)與出廠時(shí)板子的默認(rèn)地址匹配。如果系統(tǒng)中有多個(gè)屏蔽,則每個(gè)屏蔽必須具有唯一的地址。
void begin(uint16_t freq = 1600); begin()必須在setup()中調(diào)用以初始化屏蔽。可選的頻率參數(shù)可用于指定默認(rèn)最大值以外的值:1.6KHz PWM頻率。
Adafruit_DCMotor * getMotor(uint8_t n); 此函數(shù)返回由屏蔽控制的4個(gè)預(yù)定義直流電動機(jī)對象之一。該參數(shù)指定關(guān)聯(lián)的電機(jī)通道:1-4。
Adafruit_StepperMotor * getStepper( uint16_t步長,uint8_t n); 此函數(shù)返回由屏蔽控制的2個(gè)預(yù)定義步進(jìn)電機(jī)對象之一。
第一個(gè)參數(shù)指定每轉(zhuǎn)的步數(shù)。
第二個(gè)參數(shù)指定相關(guān)的步進(jìn)通道:1-2。
void setPWM(uint8_t引腳,uint16_t val);
void setPin(uint8_t引腳,布爾值val); 這些是控制引腳的底層功能在板載PWM驅(qū)動器芯片上。這些功能僅供內(nèi)部使用。
Adafruit_DCMotor類 Adafruit_DCMotor類表示直流電動機(jī)附在盾牌上。您必須為系統(tǒng)中的每個(gè)電動機(jī)聲明一個(gè)Adafruit_DCMotor。
Adafruit_DCMotor(void) ; 構(gòu)造函數(shù)不接受任何參數(shù)。通常,通過分配如下所示的從屏蔽類檢索的電機(jī)對象來初始化電機(jī)對象:
下載:file
復(fù)制代碼
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Select which ‘port’ M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
// You can also make another motor on port M2
Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2); // Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Select which ‘port’ M1, M2, M3 or M4. In this case, M1
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
// You can also make another motor on port M2
Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);
void run(uint8_t);
run()函數(shù)控制電機(jī)狀態(tài)。該參數(shù)可以具有以下三個(gè)值之一:
FORWARD -向前旋轉(zhuǎn)
BACKWARD -旋轉(zhuǎn)反向
釋放-停止旋轉(zhuǎn)
請注意,“ FORWARD”和“ BACKWARD”方向是任意的。如果它們與您的車輛或機(jī)器人的實(shí)際方向不匹配,請簡單地交換電動機(jī)導(dǎo)線。
還請注意,“ RELEASE”只是切斷電動機(jī)的電源。它不施加任何制動。
void setSpeed(uint8_t);
setSpeed()函數(shù)控制傳遞給電動機(jī)的功率水平。速度參數(shù)的值介于0到255之間。
請注意,setSpeed僅控制傳遞給電動機(jī)的功率。電動機(jī)的實(shí)際速度取決于幾個(gè)因素,包括:電動機(jī),電源和負(fù)載。
Adafruit_StepperMotor類 Adafruit_StepperMotor類表示連接到屏蔽罩的步進(jìn)電機(jī)。您必須為系統(tǒng)中的每個(gè)步進(jìn)電機(jī)聲明一個(gè)Adafruit_StepperMotor。
Adafruit_StepperMotor(void ); 構(gòu)造函數(shù)不接受任何參數(shù)。步進(jìn)電機(jī)通常通過分配從屏蔽中獲取的步進(jìn)器對象進(jìn)行初始化,如下所示:
下載:文件
復(fù)制代碼
// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Connect a stepper motor with 200 steps per revolution (1.8 degree)
// to motor port #2 (M3 and M4)
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2); // Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Connect a stepper motor with 200 steps per revolution (1.8 degree)
// to motor port #2 (M3 and M4)
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);
無效步長(uint16_t步長,uint8_t目錄,uint8_t樣式=單); step()函數(shù)控制步進(jìn)運(yùn)動。
第一個(gè)參數(shù)指定要移動多少步。
第二個(gè)參數(shù)指定方向:FORWARD或BACKWARD
最后一個(gè)參數(shù)指定步進(jìn)樣式:SINGLE,DOUBLE ,INTERLEAVED或MICROSTEP
ste()函數(shù)是同步的,直到所有步驟完成后才返回。完成后,電動機(jī)將保持通電狀態(tài),以施加“保持扭矩”以保持位置。
void setSpeed(uint16_t); setSpeed()函數(shù)控制步進(jìn)電動機(jī)的旋轉(zhuǎn)速度。速度以RPM指定。
uint8_t一步(uint8_t目錄,uint8_t樣式); oneStep()函數(shù)是由step()調(diào)用的低級內(nèi)部函數(shù)。但是單獨(dú)調(diào)用以實(shí)現(xiàn)更高級的功能(例如加速或協(xié)調(diào)多個(gè)步進(jìn)電機(jī)的同時(shí)運(yùn)動)可能會很有用。方向和樣式參數(shù)與step()相同,但是onestep()僅精確執(zhí)行一次。
注意:調(diào)用step()的步數(shù)為1的方法與調(diào)用onestep()的方法不同。步進(jìn)函數(shù)具有一個(gè)延遲,該延遲取決于setSpeed()中設(shè)置的速度。 onestep()沒有延遲。
void釋放(void) ; release()函數(shù)會切斷電動機(jī)的所有電源。如果不需要保持扭矩來保持位置,則調(diào)用此函數(shù)以降低功率要求。
動力馬達(dá)
馬達(dá)需要大量能量,尤其是廉價(jià)的馬達(dá),因?yàn)樗鼈兊男瘦^低。
電壓要求:
首先要弄清楚的重要因素找出電動機(jī)要使用的電壓。如果幸運(yùn)的話,您的電動機(jī)帶有一些規(guī)格。一些小型的業(yè)余電動機(jī)僅打算以1.5V的電壓運(yùn)行,但6-12V電動機(jī)的使用卻一樣普遍。該屏蔽罩的電機(jī)控制器設(shè)計(jì)為在 5V至12V 范圍內(nèi)運(yùn)行。
MOST 1.5-3V電機(jī)將無法工作
當(dāng)前要求:
要解決的第二件事是您的電動機(jī)需要多少電流。該套件隨附的電機(jī)驅(qū)動器芯片旨在為每個(gè)電機(jī)提供高達(dá)1.2 A的電流,峰值電流為3A。請注意,一旦接近2A,您可能會在電機(jī)驅(qū)動器上放一個(gè)散熱器,否則會出現(xiàn)熱故障,可能燒壞芯片。
您不能運(yùn)行電機(jī)不用9V電池,所以不要浪費(fèi)時(shí)間/電池!
使用大號鉛酸或NiMH電池組。它還非常建議您設(shè)置兩個(gè)電源(拆分電源),一個(gè)用于Arduino,另一個(gè)用于馬達(dá)。 99%的“奇怪的電動機(jī)問題” ”是由于共享電源和/或電源不足導(dǎo)致電源線上的噪聲!即使是小型直流電動機(jī),它們停轉(zhuǎn)時(shí)也可以吸收3安培的電流。
設(shè)置防護(hù)罩以為Hobby Servos供電
Servos的電源與Arduino使用的相同穩(wěn)壓5V電源關(guān)閉。 對于建議的小型業(yè)余伺服器來說,這是可以的?;旧希褂肬SB端口或DC桶式插孔為Arduino供電,就可以了。如果您想要更強(qiáng)大的功能,請切斷去往可選伺服電源端子的走線,并連接自己的5-6V電源!
設(shè)置用于為直流和步進(jìn)電動機(jī)供電的屏蔽
電動機(jī)是通過“高壓電源”供電的,而不是穩(wěn)壓的5V電源。 請勿將電機(jī)電源連接至Arduino的5V電源引腳。除非您確定自己知道自己在做什么,否則這是一個(gè)非常非常糟糕的主意!您可能會損壞Arduino和/或USB端口!
您可以在兩個(gè)地方獲得電動機(jī)的“高壓電源”。
一個(gè)是DC桶式插孔。
在Arduino板上
是另一個(gè)在屏蔽板上的2端子模塊,其標(biāo)簽為 DC Motor Power 5-12VDC 。
Arduino上的DC插孔帶有保護(hù)二極管,因此,如果插入錯(cuò)誤的電源,您將無法搞砸。接線盒具有保護(hù)FET,因此,如果向后連接電池電源,則不會損壞arduino/屏蔽罩,但也不會起作用!
這是它的工作方式:
如果您想為Arduino和電機(jī)使用單個(gè)DC電源
說墻上適配器或具有6-12VDC輸出的單個(gè)電池組,只需將其插入Arduino的DC插孔或屏蔽板上的2針電源接線盒即可。將電源跳線放在電動機(jī)護(hù)罩上。
請注意,如果電池電源無法提供恒定功率,您可能會遇到Arduino重置問題,因此這不是為電機(jī)項(xiàng)目供電的建議方法。您不能為此使用9V電池,它必須是4至8節(jié)AA電池或單/雙鉛酸電池組。
如果您要使用USB斷開 Arduino的電源,而要斷開DC電源的電機(jī)的電源
這是為電動機(jī)項(xiàng)目供電的建議方法,因?yàn)樗哂蟹蛛x的電源,一個(gè)邏輯電源和一個(gè)電動機(jī)電源
如果您要 2個(gè)用于Arduino和電機(jī)的獨(dú)立直流電源。
將Arduino的電源插入DC插孔,然后將電機(jī)電源連接到電源端子塊。確保已將跳線從電動機(jī)護(hù)罩上卸下。
無論如何,如果要使用直流電動機(jī)/步進(jìn)系統(tǒng),電動機(jī)護(hù)罩LED應(yīng)當(dāng)點(diǎn)亮,指示電動機(jī)功率良好
使用RC Servos
業(yè)余伺服器是進(jìn)行電機(jī)控制的最簡單方法。它們具有3針0.1英寸母頭連接器,帶+ 5V,接地和信號輸入。電機(jī)屏蔽罩將Arduino針腳9和10的PWM輸出線簡單地引出到兩個(gè)3針頭連接器,從而易于插入和連接。他們可能會消耗大量功率,因此9V電池的使用時(shí)間不會超過幾分鐘!
使用板載PWM的好處是它非常精確,并且可以在后臺運(yùn)行。您可以使用內(nèi)置的 Servo 庫
使用伺服非常容易,請閱讀Arduino官方文檔以了解如何使用它們,并在IDE中查看示例Servo草圖。/p》
為Servos供電
為Servos供電來自Arduino的板載5V穩(wěn)壓器,直接由Arduino上的USB或DC電源插孔供電。如果您需要外部電源,請?jiān)诎遄拥撞壳懈?v走線并連接5V或6V直流電源直接提供給 Opt伺服電源輸入。 高級用戶使用外部電源,因?yàn)槟赡芡ㄟ^錯(cuò)誤連接電源而意外損壞伺服器!
使用外部伺服電源時(shí),請注意不要使其與處理器板上的USB插座外殼短路。用一些膠帶將USB插座的頂部絕緣。
使用直流電動機(jī)
直流電動機(jī)用于各種機(jī)器人項(xiàng)目。
電動機(jī)護(hù)罩最多可雙向驅(qū)動4臺直流電動機(jī)。這意味著它們可以向前和向后驅(qū)動。使用高質(zhì)量的內(nèi)置PWM,速度也可以以0.5%的增量變化。這意味著速度非常平穩(wěn),不會變化!
請注意,H橋芯片并不適合驅(qū)動1.2A的連續(xù)負(fù)載,因此適用于小型電動機(jī)。檢查數(shù)據(jù)表以獲取有關(guān)電機(jī)的信息,以驗(yàn)證其是否正常!
電動機(jī)
要連接電動機(jī),只需將兩根導(dǎo)線焊接到端子上,然后將它們連接到M1,M2,M3或M4。然后在您的草圖中按照以下步驟操作
包含所需的庫
請確保您 #include 所需的庫
下載:文件
復(fù)制代碼
#include
#include
#include “utility/Adafruit_MS_PWMServoDriver.h” #include
#include
#include “utility/Adafruit_MS_PWMServoDriver.h”
創(chuàng)建Adafruit_MotorShield對象
下載:文件
復(fù)制代碼
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); Adafruit_MotorShield AFMS = Adafruit_MotorShield();
創(chuàng)建直流電動機(jī)對象
從Adafruit_MotorShield請求直流電動機(jī):
下載:文件
復(fù)制代碼
Adafruit_DCMotor *myMotor = AFMS.getMotor(1); Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
和 getMotor(port#)。 端口 #是它連接到的端口。如果您正在使用M1的 1 ,M2使用 2 ,M3使用 3 和M4使用 4
連接到控制器
在您的setup()函數(shù)中,調(diào)用Adafruit_MotorShield對象上的begin():
下載:文件
復(fù)制代碼
AFMS.begin(); AFMS.begin();
設(shè)置默認(rèn)速度
使用 setSpeed( speed )設(shè)置電動機(jī)的速度》 速度 的范圍是從0(停止)到255(全速)。您可以隨時(shí)設(shè)置速度。
下載:文件
復(fù)制代碼
myMotor-》setSpeed(150); myMotor-》setSpeed(150);
運(yùn)行電動機(jī)
要運(yùn)行電動機(jī),請致電運(yùn)行(方向),其中 方向 是 FORWARD , BACKWARD 或 RELEASE 。當(dāng)然,Arduino實(shí)際上并不知道電機(jī)是“前進(jìn)”還是“后退”,因此,如果您想更改其認(rèn)為前進(jìn)的方式,只需將電機(jī)和屏蔽層的兩根線互換即可。
下載:文件
復(fù)制代碼
myMotor-》run(FORWARD); myMotor-》run(FORWARD);
使用步進(jìn)電機(jī)
步進(jìn)電機(jī)非常適合(半)精確控制,非常適合許多機(jī)器人和CNC項(xiàng)目。該電機(jī)護(hù)罩最多可支持2個(gè)步進(jìn)電機(jī)。對于雙極和單極電動機(jī),該庫的工作原理相同。
對于單極電動機(jī):要連接步進(jìn)電機(jī),首先要弄清楚哪些引腳連接到哪個(gè)線圈,以及哪個(gè)引腳是中心抽頭。如果它是5線制電動機(jī),則兩個(gè)線圈的中心抽頭將為1。在線上有很多關(guān)于如何反向工程線圈引出線的教程。中心抽頭應(yīng)同時(shí)連接到電機(jī)屏蔽輸出塊的GND端子上。那么線圈1應(yīng)該連接到一個(gè)電動機(jī)端口(例如M1或M3),線圈2應(yīng)該連接到另一個(gè)電動機(jī)端口(M2或M4)。
對于雙極型電動機(jī):與單極電動機(jī)一樣,除了沒有5號線接地。代碼完全相同。
運(yùn)行步進(jìn)器比運(yùn)行直流電動機(jī)要復(fù)雜得多,但仍然很容易
包括所需的庫
請確保您 #include 所需的庫
下載:文件
復(fù)制代碼
#include
#include
#include “utility/Adafruit_PWMServoDriver.h” #include
#include
#include “utility/Adafruit_PWMServoDriver.h”
創(chuàng)建Adafruit_MotorShield對象
下載:文件
復(fù)制代碼
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); Adafruit_MotorShield AFMS = Adafruit_MotorShield();
創(chuàng)建步進(jìn)電機(jī)對象
從 Adafruit_MotorShield 請求步進(jìn)電機(jī):
下載:文件
復(fù)制代碼
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2); Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);
。.. with cc = 1》。
getStepper(steps, stepper#) ind表示電機(jī)每轉(zhuǎn)多少步。 7.5度/步的電動機(jī)具有360/7.5 = 48步。
Steps是其連接到的端口。如果您使用的是M1和M2,則其端口為 1 。如果您使用的是M3和M4,請指明端口 2
設(shè)置默認(rèn)速度
使用Stepper#設(shè)置電動機(jī)的速度,其中rpm是您希望步進(jìn)器每分鐘轉(zhuǎn)多少轉(zhuǎn)。
運(yùn)行電動機(jī)
然后每次您希望電動機(jī)運(yùn)動時(shí),都調(diào)用setSpeed(rpm)程序。 #steps 是您要執(zhí)行的步驟。方向?yàn)?FORWARD 或 BACKWARD ,步長類型為 SINGLE , DOUBLE , INTERLEAVE 或 MICROSTEP 。
“單”表示單線圈激活
“雙”表示一次激活2個(gè)線圈(以獲得更高的轉(zhuǎn)矩) )
“交錯(cuò)”表示它在單倍和雙倍之間交替以獲得兩倍的分辨率(但當(dāng)然是速度的一半)。
“微步進(jìn)”是一種使用線圈的方法
在資源頁面中有大量關(guān)于這些不同步進(jìn)方法的優(yōu)缺點(diǎn)的信息。
您可以使用任何一種步進(jìn)方法您可以將其“動態(tài)”更改為所需的最小功率,更大的扭矩或更高的精度。
默認(rèn)情況下,電機(jī)在完成步進(jìn)后將“保持”位置。如果要釋放所有線圈以使其自由旋轉(zhuǎn),請調(diào)用step(#steps, direction, steptype)
步進(jìn)命令為“阻塞”,并且在完成步驟后將返回。
因?yàn)椴竭M(jìn)命令為“阻塞” ‘-您每次要移動步進(jìn)電機(jī)時(shí),都必須指示它們。如果您想擁有更多的“后臺任務(wù)”步進(jìn)器控件,請查看AccelStepper庫(與 Adafruit_MotorShield 的安裝方式類似),其中提供了一些示例,這些示例可同時(shí)控制三個(gè)步進(jìn)器并以不同的加速度
Python和CircuitPython
我們?yōu)楦鞣N直流電動機(jī)和步進(jìn)器套件(稱為Adafruit CircuitPython MotorKit)編寫了一個(gè)方便的CircuitPython庫,該庫可為您處理所有復(fù)雜的設(shè)置。您需要做的就是從庫中導(dǎo)入適當(dāng)?shù)念?,然后可以使用該類的所有功能。我們將向您展示如何?dǎo)入MotorKit類,并使用它來通過Adafruit Stepper + DC Motor Shield來控制DC和步進(jìn)電機(jī)。
CircuitPython微控制器接線
首先請按照上一頁中的說明完全組裝Shield。無需將屏蔽線連接到地鐵的布線。下面的示例顯示了將兩個(gè)直流電動機(jī)連接到Shield后,將其連接到Metro的情況。您需要將桶形插孔連接到電源端子,以將適當(dāng)?shù)耐獠侩娫催B接到Shield。 沒有外部電源,Shield將無法運(yùn)行!
將兩根電動機(jī)導(dǎo)線從第一臺電動機(jī)連接到 Shield上的M1端子 。
將來自第二個(gè)電動機(jī)的兩條電動機(jī)導(dǎo)線連接到屏蔽罩上的 M2端子。
連接 》將電源端子的正側(cè)連接到桶形插孔的正側(cè)。
將電源端子的負(fù)側(cè)連接到桶形千斤頂?shù)呢?fù)側(cè)。
MotorKit和必需庫的CircuitPython安裝
您需要在Metro公豬上安裝一些庫d。
首先請確保您的電路板正在運(yùn)行最新版本的Adafruit CircuitPython。
接下來,您需要安裝必要的庫以使用硬件-仔細(xì)按照以下步驟操作從Adafruit的CircuitPython庫捆綁包中找到并安裝這些庫。我們的CircuitPython入門指南上有一個(gè)很棒的頁面,介紹如何安裝庫捆綁包。
如果選擇,您可以在板上單獨(dú)手動安裝庫:
adafruit_pca9685
adafruit_bus_device
adafruit_register
adafruit_motor 》
adafruit_motorkit
在繼續(xù)之前,請確保您開發(fā)板的lib文件夾或根文件系統(tǒng)具有 adafruit_pca9685 》 .mpy,adafruit_register,adafruit_motor, adafruit_bus_device 和 adafruit_motorkit 文件和文件夾 已復(fù)制。
Nextconnect到電路板的串行REPL,因此您位于CircuitPython上?!贰贰?提示。
CircuitPython用法
為演示用法,我們將初始化該庫并使用Python代碼控制DC并逐步
首先,您需要導(dǎo)入并初始化MotorKit類。
下載:文件
復(fù)制代碼
from adafruit_motorkit import MotorKit
kit = MotorKit() from adafruit_motorkit import MotorKit
kit = MotorKit()
直流電動機(jī)
Shield上的四個(gè)電動機(jī)點(diǎn)分別為motor1,motor2,motor3和motor4。
在此示例中,我們將使用motor1。
注意:對于像商店出售的小型直流電動機(jī),您可能會遇到電氣噪聲問題,這些問題會在電路板上產(chǎn)生并且行為不穩(wěn)定。如果您看到不穩(wěn)定的行為,例如電機(jī)不旋轉(zhuǎn)或在高速電機(jī)上板復(fù)位,則可能是問題所在。有關(guān)電容器的信息,請參見此電機(jī)指南常見問題頁面,您可以將其焊接到電機(jī)上以降低噪聲。
現(xiàn)在要移動電動機(jī),您可以設(shè)置throttle屬性。我們不稱其為速度,因?yàn)樗c特定的每分鐘轉(zhuǎn)數(shù)(RPM)不相關(guān)。 RPM取決于電動機(jī)和未知電壓。
例如,要以全速向前驅(qū)動電動機(jī)M1,請將其設(shè)置為1.0:
下載:文件
復(fù)制代碼
kit.motor1.throttle = 1.0 kit.motor1.throttle = 1.0
要以半油門速度向前運(yùn)行,請使用小數(shù)點(diǎn):
下載:文件
復(fù)制代碼
kit.motor1.throttle = 0.5 kit.motor1.throttle = 0.5
或使用負(fù)向油門反轉(zhuǎn)方向:
下載:文件
復(fù)制代碼
kit.motor1.throttle = -0.5 kit.motor1.throttle = -0.5
您可以使用0的油門來停止電動機(jī):
下載:文件
復(fù)制代碼
kit.motor1.throttle = 0 kit.motor1.throttle = 0
使電動機(jī)慣性停車然后自由旋轉(zhuǎn)將油門設(shè)為None。
下載:文件
復(fù)制代碼
kit.motor1.throttle = None kit.motor1.throttle = None
用CircuitPython控制直流電動機(jī)!借助直流電動機(jī),您可以構(gòu)建有趣的運(yùn)動項(xiàng)目,例如機(jī)器人或遙控車,它們可以輕松地四處滑動。
步進(jìn)電機(jī)
類似的直流電機(jī),步進(jìn)電機(jī)有stepper1和stepper2。 stepper1由M1和M2端子組成,stepper2由M3和M4端子組成。
在示例中,我們將使用stepper1 。
最基本的功能(也是默認(rèn)值)是執(zhí)行一個(gè)線圈步驟。
下載:文件
復(fù)制代碼
kit.stepper1.onestep() kit.stepper1.onestep()
也可以使用兩個(gè)可選的關(guān)鍵字參數(shù)。要使用這些文件,您還需要導(dǎo)入步進(jìn)器。
下載:文件
復(fù)制代碼
from adafruit_motor import stepper from adafruit_motor import stepper
然后您可以訪問以下選項(xiàng):
direction,應(yīng)為以下常量值之一:
stepper.FORWARD(默認(rèn)值)
stepper.BACKWARD。
style,應(yīng)為以下值之一:
stepper.SINGLE(默認(rèn)值),用于整步旋轉(zhuǎn)到單個(gè)線圈通電的位置
stepper.DOUBLE用于整步旋轉(zhuǎn)到兩個(gè)線圈通電的位置,以提供更大的扭矩
stepper.INTERLEAVED用于半步旋轉(zhuǎn)交錯(cuò)單線圈和雙線圈位置和扭矩
stepper.MICROSTEP微步旋轉(zhuǎn)到兩個(gè)線圈部分處于活動狀態(tài)的位置。
release() 所有線圈,以便電動機(jī)可以自由旋轉(zhuǎn),并且不使用任何功率
該函數(shù)以微步長返回當(dāng)前步長“位置”,方便地了解步進(jìn)器已移動了多遠(yuǎn),或者您可以忽略結(jié)果。
進(jìn)行雙線圈后退調(diào)用:
下載:文件
復(fù)制代碼
kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.DOUBLE) kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.DOUBLE)
您甚至可以使用循環(huán)來連續(xù)調(diào)用onestep并移動步進(jìn)器,例如向前循環(huán)200個(gè)微步以實(shí)現(xiàn)平滑移動:
下載:文件
復(fù)制代碼
for i in range(200):
kit.stepper1.onestep(style=stepper.MICROSTEP) for i in range(200):
kit.stepper1.onestep(style=stepper.MICROSTEP)
這是從CircuitPython控制步進(jìn)電機(jī)的全部!步進(jìn)機(jī)是方便的電動機(jī),適用于需要平滑或精確控制某些物體的情況,例如3D打印機(jī)和CNC機(jī)器使用步進(jìn)機(jī)在表面上精確移動工具。
完整示例代碼
對于直流電動機(jī):
下載:Project Zip 或 motorkit_dc_motor_simpletest.py | 在Github上查看
復(fù)制代碼
“”“Simple test for using adafruit_motorkit with a DC motor”“”
import time
from adafruit_motorkit import MotorKit
kit = MotorKit()
kit.motor1.throttle = 1.0
time.sleep(0.5)
kit.motor1.throttle = 0
“”“Simple test for using adafruit_motorkit with a DC motor”“”
import time
from adafruit_motorkit import MotorKit
kit = MotorKit()
kit.motor1.throttle = 1.0
time.sleep(0.5)
kit.motor1.throttle = 0
對于步進(jìn)電機(jī):
下載:Project Zip 或 motorkit_stepper_simpletest.py | 在Github上查看
復(fù)制代碼
“”“Simple test for using adafruit_motorkit with a stepper motor”“”
from adafruit_motorkit import MotorKit
kit = MotorKit()
for i in range(100):
kit.stepper1.onestep()
“”“Simple test for using adafruit_motorkit with a stepper motor”“”
from adafruit_motorkit import MotorKit
kit = MotorKit()
for i in range(100):
kit.stepper1.onestep()
堆疊盾牌
關(guān)于此屏蔽設(shè)計(jì)的一件很酷的事情是可以堆疊屏蔽。堆疊的每個(gè)屏蔽層都可以控制另外2個(gè)步進(jìn)器或4個(gè)DC電動機(jī)(或兩者的混合)。您最多可以堆疊32個(gè)罩,總共64個(gè)步進(jìn)器或128個(gè)DC電動機(jī)!大多數(shù)人可能只會堆疊兩個(gè)或三個(gè),但嘿,你永遠(yuǎn)不會知道。 (請注意,如果從這些屏蔽板之一驅(qū)動64個(gè)步進(jìn)器,請給我們發(fā)張照片,好嗎?)
請注意,堆疊屏蔽板不會增加伺服連接-這些硬連接至Arduino數(shù)字9和10引腳。如果您需要控制很多伺服器,則可以使用我們的16通道伺服器防護(hù)罩并將其與該防護(hù)罩堆疊起來,以增加瘋狂的大量伺服器。
堆疊防護(hù)罩非常容易。您要堆疊的每個(gè)屏蔽必須安裝堆疊頭。查看我們的說明以了解操作方法。除非最終要在頂部屏蔽層上放一些東西,否則頂部屏蔽層不必具有堆疊頭。
堆疊屏蔽層時(shí)唯一要注意的是每個(gè)屏蔽層都必須具有唯一的I2C地址。默認(rèn)地址為 0x60 。您可以將屏蔽的地址調(diào)整為從0x60到0x7F的范圍,以獲取總共32個(gè)唯一的地址。
尋址盾牌
必須為鏈中的每個(gè)板分配一個(gè)唯一的地址。這是通過板下邊緣的地址跳線完成的。每塊板的I2C基址為0x60。使用地址跳線編程的二進(jìn)制地址將添加到基本I2C地址。要編程地址偏移量,請使用一滴焊料橋接地址中每個(gè)二進(jìn)制“ 1”的對應(yīng)地址跳線。
最右邊的跳線是地址位#0,然后到左邊是地址位#1,依此類推,直到地址位#4
面板0:地址= 0x60偏移=二進(jìn)制0000(無需跳線)《板1:地址= 0x61偏移=二進(jìn)制0001(如上圖所示的橋A0)
板2:地址= 0x62偏移=二進(jìn)制0010(A0左側(cè)的橋A1)
板3:地址= 0x63偏移量=二進(jìn)制0011(橋A0和A1,兩個(gè)最右邊的跳線)
板4:地址= 0x64偏移量=二進(jìn)制0100(橋A2,中間的跳線)等
請注意,地址0x70是屏蔽板上控制器芯片的“全部調(diào)用”地址。所有板都將響應(yīng)地址0x70-不管地址跳線設(shè)置如何。
多個(gè)屏蔽的編寫代碼
與較早的AF_Motor庫不同,Adafruit_MotorShield庫具有控制多個(gè)屏蔽的功能。首先,我們必須為每個(gè)屏蔽創(chuàng)建一個(gè)電動機(jī)屏蔽控制器,并為其分配地址。
Adafruit_MotorShield AFMSbot(0x61);//最右邊的跳線關(guān)閉
Adafruit_MotorShield AFMStop(0x60);//默認(rèn)地址,沒有跳線
一個(gè)電機(jī)屏蔽層將被稱為AFMSbot(底部屏蔽層,因此我們要記住),另一個(gè)是AFMStop(頂部屏蔽層),這樣我們就可以將它們分開。創(chuàng)建屏蔽對象時(shí),請?jiān)谏厦嬷付槠湓O(shè)置的地址。
然后,我們可以請求將電機(jī)連接到每個(gè)電機(jī)上。
//在頂部屏蔽上,連接兩個(gè)步進(jìn)器,每個(gè)步進(jìn)器具有200個(gè)步驟
Adafruit_StepperMotor * myStepper2 = AFMStop.getStepper(200,1);
Adafruit_StepperMotor * myStepper3 = AFMStop.getStepper(200,2);
//在200步的底部屏蔽層上,將步進(jìn)器連接到端口M3/M4
Adafruit_StepperMotor * myStepper1 = AFMSbot.getStepper(200,2);
//和一個(gè)直流電動機(jī)到端口M1
Adafruit_DCMotor * myMotor1 = AFMSbot.getMotor(1);
您可以從任何端口請求步進(jìn)或直流電動機(jī),只需在調(diào)用 getMotor 或 getStepper 時(shí)確保使用正確的AFMS控制器對象即可。在使用已連接的電動機(jī)之前,必須先調(diào)用開始。
AFMSbot.begin();//啟動底部屏蔽
AFMStop.begin();//啟動頂部屏蔽
您可以通過設(shè)置兩個(gè)屏蔽并運(yùn)行 File-》 Examples-》 Adafruit_MotorShield-》 StackingTest 來親自嘗試此代碼示例
資源
汽車創(chuàng)意和教程
維基百科上有很多有關(guān)步進(jìn)電機(jī)的信息
關(guān)于步進(jìn)電機(jī)類型的瓊斯
Jason涉及對步進(jìn)電機(jī)引線的反向工程
》
PCB文件在GitHub上
示意圖,單擊以進(jìn)行嵌入
責(zé)任編輯:wv
-
驅(qū)動器
+關(guān)注
關(guān)注
52文章
8117瀏覽量
145844
發(fā)布評論請先 登錄
相關(guān)推薦
評論