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

【正點(diǎn)原子STM32H7R3開(kāi)發(fā)套件試用體驗(yàn)】開(kāi)發(fā)套件開(kāi)箱報(bào)告
AM243x LaunchPad?開(kāi)發(fā)套件用戶指南

NVIDIA RTX AI套件簡(jiǎn)化AI驅(qū)動(dòng)的應(yīng)用開(kāi)發(fā)
TPS63802HDKEVM-硬件開(kāi)發(fā)套件

【xG24 Matter開(kāi)發(fā)套件試用體驗(yàn)】深入了解Silicon Labs xG24 Matter開(kāi)發(fā)套件
【xG24 Matter開(kāi)發(fā)套件試用體驗(yàn)】初識(shí)xG24 Matter開(kāi)發(fā)套件
【xG24 Matter開(kāi)發(fā)套件試用體驗(yàn)】+開(kāi)機(jī)啟動(dòng)
8V97052評(píng)估套件數(shù)據(jù)手冊(cè)

8A34044 ClockMatrix評(píng)估套件數(shù)據(jù)手冊(cè)

8A34003 ClockMatrix評(píng)估套件數(shù)據(jù)手冊(cè)

NCV78702子板評(píng)估套件數(shù)據(jù)手冊(cè)

照明-電源-POE-GEVB評(píng)估套件數(shù)據(jù)手冊(cè)

評(píng)論