那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Adafruit Motorshield套件的使用

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-27 10:54 ? 次閱讀

概述

Adafruit Motorshield套件的使用

原始的Adafruit Motorshield套件是我們最受歡迎的套件之一,因此我們決定做得更好。我們已經升級了屏蔽套件,使其成為驅動DC步進電機的最佳,最簡便的方法。該防護罩將幫助您快速完成下一個機器人項目!我們保留了驅動多達4個DC電動機或2個步進電動機的能力,但又進行了許多改進:

我們現在有了TB6612 MOSFET驅動器,而不是L293D達林頓驅動器,每通道電流能力為1.2A(您可以自行設計達到3A峰值,每次約20ms)。它還具有更低的電機壓降,因此您可以從電池中獲得更多的扭矩,并且還具有內置的反激二極管

我們沒有使用閂鎖和Arduino的PWM引腳,而是使用了專用的PWM驅動器芯片。該芯片可處理I2C上的所有電動機和速度控制。僅兩個GPIO引腳(SDA和SCL)加上5v和GND。驅動多臺電動機是必需的,并且由于它是I2C,因此您還可以將任何其他I2C設備或屏蔽連接到同一引腳。這也使其與Uno,Leonardo,Due和Mega R3等任何Arduino兼容。

完全可堆疊的設計:5個地址選擇引腳意味著最多32個可堆疊屏蔽:那是64個步進器或128個直流電機!這么多步進器到底能做什么?我不知道,但是如果您有什么建議,請給我們發照片,因為那將是一個非常光榮的項目。

還有許多其他小的改進,例如電源引腳上的極性保護FET和較大的原型設計區域。屏蔽層已在Adafruit進行了組裝和測試,因此您所要做的就是在直的或堆疊的插頭和接線端子上焊接。

讓我們再次檢查一下這些規格

2個用于Arduino高分辨率專用計時器的5V“業余”伺服器連接-無抖動!

4個H橋:TB6612芯片組為每個橋提供 1.2A strong》(對于短暫的20ms峰值為3A),具有熱關斷保護,內部反沖保護二極管。可以在4.5VDC到13.5VDC的電壓下運行電動機。

最多4個具有單獨的8位速度選擇(因此,分辨率約為0.5%)的雙向DC 電動機。

最多2個具有單線圈,雙線圈,交錯或微步進的步進電機(單極或雙極)。

上電時電機會自動禁用

大型接線端子連接器,可輕松連接電線(18-26AWG)和電源

Arduino重置按鈕位于頂部

受極性保護的2針接線端子和跳線連接外部電源,用于單獨的邏輯/電機電源

經測試與Arduino UNO,Leonardo,ADK/Mega R3,Diecimila和Duemilanove兼容。與Due與3.3v邏輯跳線一起使用。可與Mega/ADK R2及更早版本的2個跳線一起使用。

下載易于使用的Arduino軟件庫,查看示例,即可開始使用!

5v 或 3.3v 兼容的邏輯電平-可配置跳線。

從Arduino 1.5.6-r2 BETA開始,Due Wire庫中存在一個錯誤,阻止多個Motor Shields與Due一起正常使用!

常見問題解答

該防護罩可以使用多少個電機?

您可以使用2個在5V電壓下運行的DC業余伺服器和最多4個DC電動機或2個步進電動機(或1個步進和2個DC電動機) 5-12VDC

我可以連接更多電機嗎?

是的,通過堆疊盾牌!堆疊的每個屏蔽都將添加 4個DC電動機或2個步進電動機(或另外1個步進電動機和2個DC電動機)。

隨著伺服觸點進入Arduino的#9和#10引腳,您將不會獲得更多的伺服連接。

如果我還需要更多

看看我們可愛的伺服屏蔽罩,它也可以與該馬達屏蔽罩堆疊,并增加了16個每個盾牌可免費運行的伺服器http://learn.adafruit.com/adafruit-16-channel-pwm-slash-servo-shield

這是什么Arduinos盾是否兼容?

經測試可與Duemilanove,Diecimila,Uno一起使用(所有版本),萊昂納多和Mega/ADK R3及更高版本。

如果您將屏蔽層的SDA引腳與Digital 20以及SCL引腳與Digital 21的跳線焊接起來,則它可以與Mega R2及更低版本配合使用。要與Due或其他3.3v處理器一起使用,必須將開發板配置為3.3v邏輯電平。找到標記為“ Logic”的3個打擊墊的集合。在中心焊盤和5v之間切出一條小線,并在中心處從3.3v添加一個跳線。

從Arduino 1.5.6-r2 BETA開始,Due Wire庫中存在一個錯誤,阻止多個Motor Shields正常工作!

我在嘗試運行示例代碼時遇到以下錯誤:“錯誤:Adafruit_MotorShield.h:沒有此類文件或目錄。。..”

確保已安裝Adafruit_MotorShield庫

我如何安裝庫?

在http://learn.com上檢查有關該主題的教程頁面。 adafruit.com/adafruit-motor-shield-v2-for-arduino/install-soft ware

幫助!我的馬達不起作用! - 救命!我的電機不工作!。..但是伺服系統工作正常!

電源指示燈是點燃?如果板載綠色電源LED指示燈不亮,則步進電機和直流電機連接將無法工作!

您必須通過POWER接線端子或Arduino上的DC筒形插孔將5-12VDC電源連接到屏蔽層和VIN跳線。

i》

綠色電源LED有什么用?

LED指示 DC/步進電機電源正在工作。如果沒有明亮地點亮,則直流/步進電機將不會運行。伺服端口由5V供電,不使用直流電動機電源

電動機屏蔽層上未使用哪些引腳?

GND和5v(默認)或3.3v電壓為板載邏輯供電。 (可通過跳線選擇5v或3v操作)

屏蔽層使用SDA和SCL i2c引腳來控制DC和步進電機。在Arduino UNO上,這些也稱為A4和A5。在Mega上,它們也被稱為Digital 20和21。在Leonardo上,它們也被稱為Digital 2和3。請勿將帶有這些屏蔽的Arduino上的這些引腳與i2c傳感器/驅動器一起使用。

由于屏蔽使用I2C進行通信,因此可以將任何其他i2c傳感器或驅動器連接到SDA/SCL引腳,只要它們不使用地址 0x60 (屏蔽的默認地址)或 0x70 (此芯片用于組控制的“所有呼叫”地址)

如果要使用伺服連接,它們位于針腳#9和#10上。如果您不使用連接器,那么這些引腳將不使用。

您可以將任何其他引腳用于其他用途

請注意,引腳A4和A5連接到SDA和SCL,以兼容經典Arduino。這些引腳不能在其他處理器上使用。

如何連接未使用的引腳?

所有針腳都沿著屏蔽的邊緣分成0.1“間距的插頭

我的電動機運行時Arduino嚇壞了!屏蔽層破損了嗎?

電動機需要很多時間的電源,并可能導致“掉電”,從而使Arduino復位,因此,屏蔽罩設計用于單獨的(分體)電源-一個用于電子設備,一個用于電動機,這樣做可以防止掉電。請閱讀用戶手冊以獲取有關以下信息:適當的電源。

我正在嘗試構建此機器人,它似乎無法在9V電池上運行。。..

您不能用9V電池為電動機供電。電動機必須使用AA電池或鉛酸電池。

此屏蔽能否控制小型3V電機?

我有良好的固態電源,但是直流電動機似乎“斷路了”

嘗試在兩個之間焊接一個陶瓷或碟形0.1uF電容器。電機接線片(在電機本身上!)將減少可能反饋回電路的噪聲(感謝macegr!)

當電動機開始運行時,其他任何功能均不起作用

許多小型直流電動機都有很多“電刷噪聲”。這會反饋到Arduino電路并導致不穩定的操作。可以通過在電機上焊接一些0.1uF陶瓷噪聲抑制電容器來解決此問題。

總共需要3個。電機端子之間有1個,每個端子與電機外殼之間有1個。

但是我的電動機上已經裝有電容器,但仍然無法工作。

div》

為什么不只是在屏蔽層中設計電容器?

它們在那里無效。必須在源頭處抑制噪聲,否則電動機導線將像天線一樣工作并將其廣播到系統的其余部分!

為什么我的步進電機什么也不會走

由于屏蔽是由i2c控制的,因此最大步進速率為受i2c總線速度的限制。默認總線速度為100KHz,可以通過編輯Arduino安裝文件夾中的庫文件將其提高到400KHz。可以在 硬件/庫/wire/utility/twi.h 中找到該文件。

用“ #define TWI_FREQ 100000L”

查找行將其更改為“ #define TWI_FREQ 400000L”

或者,您可以將以下代碼添加到setup()函數中:(注意:此行必須在對begin()的調用后 插入)

TWBR =((F_CPU/400000l)-16)/2;//將i2c時鐘更改為400KHz

此屏蔽使用了哪些I2C地址?

可從0x60-0x7F尋址屏蔽。 0x70是所有董事會都將應答的“所有呼叫”地址。

我的防護罩無法與我的LED背包一起使用。

某些背包的默認地址為0x70。這是電動機護罩上控制器芯片的“全部呼叫”地址。如果您重新定位背包,它將與防護罩一起使用。

安裝標題和終端

安裝標準接頭

防護罩隨附0.1 “標準接頭連接器。標準接頭連接器不允許堆疊,但機械強度更高,而且價格也便宜得多!如果要在頂部堆疊屏蔽,請勿執行此步驟,因為焊接后無法卸載接頭連接器in!向下跳至堆棧教程的底部

的接頭中

將0.1”接頭分成6、8和/或10針長的部分,并將長端滑入Arduino

將組裝好的屏蔽層放置在帶插頭的Arduino的頂部,以便插頭的所有短部分都通過外部的焊盤粘住

將每個插針焊接到屏蔽層中以進行安全連接

接下來,將連接端子塊,電源跳線和伺服連接器

就是這樣!現在您可以安裝接線端子和跳線。..

安裝接線端子及更多

安裝普通或堆疊式接頭連接器后,必須安裝接線端子。

接下來,我們將安裝端子塊。這些就是我們將電源和電動機連接到屏蔽層的方式。它們比直接焊接更容易使用,只需使用小螺絲刀松開/連接電線!

首先,我們必須將它們焊接。

將3針端子塊滑入2針端子塊,因此您有2 x 5針和1 x 2針塊。兩套5針腳設置在任一側。 2針引腳靠近屏蔽層的底部。確保接線端子的開口孔面向 out !

將板翻轉過來,以便您可以看到并焊接接線端子的插針

焊接器在外部電源接線盒的兩個引腳中

兩個電動機模塊中的焊料,每個5個墊塊

Tha接線端子就可以了。接下來,伺服連接。

確定接下來,拿起 2x3排針,并將其短腳放到頂部角上,上面寫著SERVO 1和SERVO 2

您可能需要稍微傾斜一下角度才能拿到零件可以插入兩組3針孔中。我們這樣做是為了避免將其翻轉時掉落!

然后將板翻轉過來并焊接6個引腳

最后,折斷2針插頭,并將其放在POWER接線端子旁邊,短腿向下,如果需要,用膠帶將其固定并焊接。 br》

div》使用堆棧頭安裝

您將需要為此步驟購買Arduino堆疊接頭,但防護罩并未隨附。

我們沒有在2x3堆疊接頭中顯示焊接,但是您也應該在其中焊接-即使此屏蔽不使用它,上面的那個也可能需要那些引腳!

首先將10針,2 x 8針和6針堆疊接頭從頂部滑入屏蔽的外排。然后將板翻轉過來,使其靠在四個接頭上。如有必要,請拉直腿。

每個標頭釘一個針,使它們在更多焊接之前就位。如果接頭彎曲,則可以在重新定位時重新加熱一個針腳以將其弄直

一旦您弄平了所有標頭,返回并焊接每個接頭的其余引腳。

安裝軟件

安裝Adafruit Motor Shield V2庫

要在Arduino上使用盾牌,您需要安裝Adafruit Motorshield v2庫。 此庫與用于v1防護罩的舊版AF_Motor庫不兼容。但是,如果您有用于較舊的防護罩的代碼,則修改代碼以使用新的防護罩并不難。我們不得不稍微改變一下接口以支持屏蔽堆疊,我們認為這是值得的!可以從Arduino庫管理器中獲得它,因此我們建議使用它。

從IDE中打開庫管理器。..

,然后鍵入 adafruit motor 來查找庫。點擊安裝

如果計劃將AccelStepper用于加速控制或同時控制多個步進電機,則還需要下載并安裝AccelStepper庫:

AccelStepper庫

有關如何安裝Arduino庫的更多詳細信息,請查看我們的詳細教程!

運行示例代碼

直流電動機

該庫附帶了一些示例,可幫助您快速入門。我們建議您開始使用直流電動機示例。您可以使用任何可以由6V-12VDC供電的直流電動機。首先,重新啟動IDE以確保已加載新庫。

將屏蔽層插入Arduino并將DC電動機連接到電動機端口1 -電動機是雙向的,哪條線進入哪個接線端子都沒有關系。連接到頂部的兩個端子端口,而不連接到中間的引腳(GND)。有關紅色和藍色電線的示例,請參見下圖。請確保擰緊接線盒以確保連接良好!

還必須提供5-12VDC來為電動機供電。可以通過兩種方式

您可以通過 DC Barrel Jack 和插入所示的VIN跳線為Arduino供電。作為下方黑色綠色電源LED旁邊的黑色高大手柄

,您可以通過DC Barrel插孔或 USB端口為Arduino供電。然后通過5-12VDC電動機電源端子端口,綠色電源LED旁邊的雙接線端子并移除VIN跳線

如果電源端子排旁邊的綠色LED指示燈沒有亮起,請不要繼續!

正確連接了電動機,并且您的電源LED點亮了,我們可以上傳代碼。

在IDE中,加載 File-》 Examples-》 Adafruit_MotorShield-》 DCMotorTest

您應該看到并聽到DC電動機打開后再來回移動的情況,如果看不到機芯,請附上紙條或膠帶作為“標志”,可以幫助您直觀地查看機芯。

步進電機測試

您可以還要測試步進電機與屏蔽的連接。屏蔽可以運行單極性(5線和6線)和雙極性(4線)的步進器。它不能與其他任何數量的電線一起運行步進器!代碼與單極或雙極電機相同,接線方式略有不同。

將屏蔽層插入Arduino,并將步進電機連接到電機端口2 -與DC電機不同,該導線訂單確實很重要。連接到頂部的兩個終端端口(線圈1)和底部的兩個終端端口(線圈2)。

如果您使用的是雙極電機,請不要連接到中間引腳(GND)。

如果您使用的是5芯的單極電機,請將公共線連接到GND

如果您使用的是6線制單極電機,則可以將兩根“中心線圈線”連接到GND

您還必須提供5-12VDC直流電源發動機。可以通過兩種方式完成此操作

您可以通過 DC Barrel Jack 和插入VIN跳線(如圖所示)為Arduino供電。黑色手柄緊貼在下面綠色的電源LED旁邊

您可以通過DC Barrel插孔或 USB端口為Arduino供電。然后通過5-12VDC電動機電源端子端口,綠色電源LED旁邊的雙接線端子對屏蔽層供電。并卸下VIN跳線

如果綠色LED不能亮起不要繼續-您必須通過VIN跳線或接線端子

確認電機已正確連接并且電源LED點亮,我們可以上傳代碼。

在IDE中,加載 File-》 Examples-》 Adafruit_MotorShield-》 StepperTest

您應該看到并聽到步進電機打開后再來回移動,如果看不到運動,則在紙或膠帶上貼上“標志”可以幫助您直觀地看到運動。有四種移動步進器的方法,它們具有變化的速度,轉矩和平滑度折衷。此示例代碼將演示全部四個。

圖書館參考

類Adafruit_MotorShield; Adafruit_MotorShield類表示電動機屏蔽罩,必須使用任何DCMotor或StepperMotors對其進行實例化。您需要為系統中的每個屏蔽聲明一個Adafruit_MotorShield。

Adafruit_MotorShield( uint8_t addr = 0x60);

構造函數使用一個可選參數來指定屏蔽的i2c地址。構造函數的默認地址(0x60)與出廠時板子的默認地址匹配。如果系統中有多個屏蔽,則每個屏蔽必須具有唯一的地址。

void begin(uint16_t freq = 1600); begin()必須在setup()中調用以初始化屏蔽。可選的頻率參數可用于指定默認最大值以外的值:1.6KHz PWM頻率。

Adafruit_DCMotor * getMotor(uint8_t n); 此函數返回由屏蔽控制的4個預定義直流電動機對象之一。該參數指定關聯的電機通道:1-4。

Adafruit_StepperMotor * getStepper( uint16_t步長,uint8_t n); 此函數返回由屏蔽控制的2個預定義步進電機對象之一。

第一個參數指定每轉的步數。

第二個參數指定相關的步進通道:1-2。

void setPWM(uint8_t引腳,uint16_t val);

void setPin(uint8_t引腳,布爾值val); 這些是控制引腳的底層功能在板載PWM驅動器芯片上。這些功能僅供內部使用。

Adafruit_DCMotor類 Adafruit_DCMotor類表示直流電動機附在盾牌上。您必須為系統中的每個電動機聲明一個Adafruit_DCMotor。

Adafruit_DCMotor(void) ; 構造函數不接受任何參數。通常,通過分配如下所示的從屏蔽類檢索的電機對象來初始化電機對象:

下載:file

復制代碼

// 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()函數控制電機狀態。該參數可以具有以下三個值之一:

FORWARD -向前旋轉

BACKWARD -旋轉反向

釋放-停止旋轉

請注意,“ FORWARD”和“ BACKWARD”方向是任意的。如果它們與您的車輛或機器人的實際方向不匹配,請簡單地交換電動機導線。

還請注意,“ RELEASE”只是切斷電動機的電源。它不施加任何制動。

void setSpeed(uint8_t);

setSpeed()函數控制傳遞給電動機的功率水平。速度參數的值介于0到255之間。

請注意,setSpeed僅控制傳遞給電動機的功率。電動機的實際速度取決于幾個因素,包括:電動機,電源和負載。

Adafruit_StepperMotor類 Adafruit_StepperMotor類表示連接到屏蔽罩的步進電機。您必須為系統中的每個步進電機聲明一個Adafruit_StepperMotor。

Adafruit_StepperMotor(void ); 構造函數不接受任何參數。步進電機通常通過分配從屏蔽中獲取的步進器對象進行初始化,如下所示:

下載:文件

復制代碼

// 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()函數控制步進運動。

第一個參數指定要移動多少步。

第二個參數指定方向:FORWARD或BACKWARD

最后一個參數指定步進樣式:SINGLE,DOUBLE ,INTERLEAVED或MICROSTEP

ste()函數是同步的,直到所有步驟完成后才返回。完成后,電動機將保持通電狀態,以施加“保持扭矩”以保持位置。

void setSpeed(uint16_t); setSpeed()函數控制步進電動機的旋轉速度。速度以RPM指定。

uint8_t一步(uint8_t目錄,uint8_t樣式); oneStep()函數是由step()調用的低級內部函數。但是單獨調用以實現更高級的功能(例如加速或協調多個步進電機的同時運動)可能會很有用。方向和樣式參數與step()相同,但是onestep()僅精確執行一次。

注意:調用step()的步數為1的方法與調用onestep()的方法不同。步進函數具有一個延遲,該延遲取決于setSpeed()中設置的速度。 onestep()沒有延遲。

void釋放(void) ; release()函數會切斷電動機的所有電源。如果不需要保持扭矩來保持位置,則調用此函數以降低功率要求。

動力馬達

馬達需要大量能量,尤其是廉價的馬達,因為它們的效率較低。

電壓要求:

首先要弄清楚的重要因素找出電動機要使用的電壓。如果幸運的話,您的電動機帶有一些規格。一些小型的業余電動機僅打算以1.5V的電壓運行,但6-12V電動機的使用卻一樣普遍。該屏蔽罩的電機控制器設計為在 5V至12V 范圍內運行。

MOST 1.5-3V電機將無法工作

當前要求:

要解決的第二件事是您的電動機需要多少電流。該套件隨附的電機驅動器芯片旨在為每個電機提供高達1.2 A的電流,峰值電流為3A。請注意,一旦接近2A,您可能會在電機驅動器上放一個散熱器,否則會出現熱故障,可能燒壞芯片。

您不能運行電機不用9V電池,所以不要浪費時間/電池!

使用大號鉛酸或NiMH電池組。它還非常建議您設置兩個電源(拆分電源),一個用于Arduino,另一個用于馬達。 99%的“奇怪的電動機問題” ”是由于共享電源和/或電源不足導致電源線上的噪聲!即使是小型直流電動機,它們停轉時也可以吸收3安培的電流。

設置防護罩以為Hobby Servos供電

Servos的電源與Arduino使用的相同穩壓5V電源關閉。 對于建議的小型業余伺服器來說,這是可以的。基本上,使用USB端口或DC桶式插孔為Arduino供電,就可以了。如果您想要更強大的功能,請切斷去往可選伺服電源端子的走線,并連接自己的5-6V電源!

設置用于為直流和步進電動機供電的屏蔽

電動機是通過“高壓電源”供電的,而不是穩壓的5V電源。 請勿將電機電源連接至Arduino的5V電源引腳。除非您確定自己知道自己在做什么,否則這是一個非常非常糟糕的主意!您可能會損壞Arduino和/或USB端口!

您可以在兩個地方獲得電動機的“高壓電源”。

一個是DC桶式插孔。

在Arduino板上

是另一個在屏蔽板上的2端子模塊,其標簽為 DC Motor Power 5-12VDC 。

Arduino上的DC插孔帶有保護二極管,因此,如果插入錯誤的電源,您將無法搞砸。接線盒具有保護FET,因此,如果向后連接電池電源,則不會損壞arduino/屏蔽罩,但也不會起作用!

這是它的工作方式:

如果您想為Arduino和電機使用單個DC電源

說墻上適配器或具有6-12VDC輸出的單個電池組,只需將其插入Arduino的DC插孔或屏蔽板上的2針電源接線盒即可。將電源跳線放在電動機護罩上。

請注意,如果電池電源無法提供恒定功率,您可能會遇到Arduino重置問題,因此這不是為電機項目供電的建議方法。您不能為此使用9V電池,它必須是4至8節AA電池或單/雙鉛酸電池組。

如果您要使用USB斷開 Arduino的電源,而要斷開DC電源的電機的電源

這是為電動機項目供電的建議方法,因為它具有分離的電源,一個邏輯電源和一個電動機電源

如果您要 2個用于Arduino和電機的獨立直流電源。

將Arduino的電源插入DC插孔,然后將電機電源連接到電源端子塊。確保已將跳線從電動機護罩上卸下。

無論如何,如果要使用直流電動機/步進系統,電動機護罩LED應當點亮,指示電動機功率良好

使用RC Servos

業余伺服器是進行電機控制的最簡單方法。它們具有3針0.1英寸母頭連接器,帶+ 5V,接地和信號輸入。電機屏蔽罩將Arduino針腳9和10的PWM輸出線簡單地引出到兩個3針頭連接器,從而易于插入和連接。他們可能會消耗大量功率,因此9V電池的使用時間不會超過幾分鐘!

使用板載PWM的好處是它非常精確,并且可以在后臺運行。您可以使用內置的 Servo 庫

使用伺服非常容易,請閱讀Arduino官方文檔以了解如何使用它們,并在IDE中查看示例Servo草圖。/p》

為Servos供電

為Servos供電來自Arduino的板載5V穩壓器,直接由Arduino上的USB或DC電源插孔供電。如果您需要外部電源,請在板子底部切割5v走線并連接5V或6V直流電源直接提供給 Opt伺服電源輸入。 高級用戶使用外部電源,因為您可能通過錯誤連接電源而意外損壞伺服器!

使用外部伺服電源時,請注意不要使其與處理器板上的USB插座外殼短路。用一些膠帶將USB插座的頂部絕緣。

使用直流電動機

直流電動機用于各種機器人項目。

電動機護罩最多可雙向驅動4臺直流電動機。這意味著它們可以向前和向后驅動。使用高質量的內置PWM,速度也可以以0.5%的增量變化。這意味著速度非常平穩,不會變化!

請注意,H橋芯片并不適合驅動1.2A的連續負載,因此適用于小型電動機。檢查數據表以獲取有關電機的信息,以驗證其是否正常!

電動機

要連接電動機,只需將兩根導線焊接到端子上,然后將它們連接到M1,M2,M3或M4。然后在您的草圖中按照以下步驟操作

包含所需的庫

請確保您 #include 所需的庫

下載:文件

復制代碼

#include

#include

#include “utility/Adafruit_MS_PWMServoDriver.h” #include

#include

#include “utility/Adafruit_MS_PWMServoDriver.h”

創建Adafruit_MotorShield對象

下載:文件

復制代碼

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); Adafruit_MotorShield AFMS = Adafruit_MotorShield();

創建直流電動機對象

從Adafruit_MotorShield請求直流電動機:

下載:文件

復制代碼

Adafruit_DCMotor *myMotor = AFMS.getMotor(1); Adafruit_DCMotor *myMotor = AFMS.getMotor(1);

和 getMotor(port#)。 端口 #是它連接到的端口。如果您正在使用M1的 1 ,M2使用 2 ,M3使用 3 和M4使用 4

連接到控制器

在您的setup()函數中,調用Adafruit_MotorShield對象上的begin():

下載:文件

復制代碼

AFMS.begin(); AFMS.begin();

設置默認速度

使用 setSpeed( speed )設置電動機的速度》 速度 的范圍是從0(停止)到255(全速)。您可以隨時設置速度。

下載:文件

復制代碼

myMotor-》setSpeed(150); myMotor-》setSpeed(150);

運行電動機

要運行電動機,請致電運行(方向),其中 方向 是 FORWARD , BACKWARD 或 RELEASE 。當然,Arduino實際上并不知道電機是“前進”還是“后退”,因此,如果您想更改其認為前進的方式,只需將電機和屏蔽層的兩根線互換即可。

下載:文件

復制代碼

myMotor-》run(FORWARD); myMotor-》run(FORWARD);

使用步進電機

步進電機非常適合(半)精確控制,非常適合許多機器人和CNC項目。該電機護罩最多可支持2個步進電機。對于雙極和單極電動機,該庫的工作原理相同。

對于單極電動機:要連接步進電機,首先要弄清楚哪些引腳連接到哪個線圈,以及哪個引腳是中心抽頭。如果它是5線制電動機,則兩個線圈的中心抽頭將為1。在線上有很多關于如何反向工程線圈引出線的教程。中心抽頭應同時連接到電機屏蔽輸出塊的GND端子上。那么線圈1應該連接到一個電動機端口(例如M1或M3),線圈2應該連接到另一個電動機端口(M2或M4)。

對于雙極型電動機:與單極電動機一樣,除了沒有5號線接地。代碼完全相同。

運行步進器比運行直流電動機要復雜得多,但仍然很容易

包括所需的庫

請確保您 #include 所需的庫

下載:文件

復制代碼

#include

#include

#include “utility/Adafruit_PWMServoDriver.h” #include

#include

#include “utility/Adafruit_PWMServoDriver.h”

創建Adafruit_MotorShield對象

下載:文件

復制代碼

Adafruit_MotorShield AFMS = Adafruit_MotorShield(); Adafruit_MotorShield AFMS = Adafruit_MotorShield();

創建步進電機對象

從 Adafruit_MotorShield 請求步進電機:

下載:文件

復制代碼

Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2); Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);

。.. with cc = 1》。

getStepper(steps, stepper#) ind表示電機每轉多少步。 7.5度/步的電動機具有360/7.5 = 48步。

Steps是其連接到的端口。如果您使用的是M1和M2,則其端口為 1 。如果您使用的是M3和M4,請指明端口 2

設置默認速度

使用Stepper#設置電動機的速度,其中rpm是您希望步進器每分鐘轉多少轉。

運行電動機

然后每次您希望電動機運動時,都調用setSpeed(rpm)程序。 #steps 是您要執行的步驟。方向為 FORWARD 或 BACKWARD ,步長類型為 SINGLE , DOUBLE , INTERLEAVE 或 MICROSTEP 。

“單”表示單線圈激活

“雙”表示一次激活2個線圈(以獲得更高的轉矩) )

“交錯”表示它在單倍和雙倍之間交替以獲得兩倍的分辨率(但當然是速度的一半)。

“微步進”是一種使用線圈的方法

在資源頁面中有大量關于這些不同步進方法的優缺點的信息。

您可以使用任何一種步進方法您可以將其“動態”更改為所需的最小功率,更大的扭矩或更高的精度。

默認情況下,電機在完成步進后將“保持”位置。如果要釋放所有線圈以使其自由旋轉,請調用step(#steps, direction, steptype)

步進命令為“阻塞”,并且在完成步驟后將返回。

因為步進命令為“阻塞” ‘-您每次要移動步進電機時,都必須指示它們。如果您想擁有更多的“后臺任務”步進器控件,請查看AccelStepper庫(與 Adafruit_MotorShield 的安裝方式類似),其中提供了一些示例,這些示例可同時控制三個步進器并以不同的加速度

Python和CircuitPython

我們為各種直流電動機和步進器套件(稱為Adafruit CircuitPython MotorKit)編寫了一個方便的CircuitPython庫,該庫可為您處理所有復雜的設置。您需要做的就是從庫中導入適當的類,然后可以使用該類的所有功能。我們將向您展示如何導入MotorKit類,并使用它來通過Adafruit Stepper + DC Motor Shield來控制DC和步進電機。

CircuitPython微控制器接線

首先請按照上一頁中的說明完全組裝Shield。無需將屏蔽線連接到地鐵的布線。下面的示例顯示了將兩個直流電動機連接到Shield后,將其連接到Metro的情況。您需要將桶形插孔連接到電源端子,以將適當的外部電源連接到Shield。 沒有外部電源,Shield將無法運行!

將兩根電動機導線從第一臺電動機連接到 Shield上的M1端子 。

將來自第二個電動機的兩條電動機導線連接到屏蔽罩上的 M2端子。

連接 》將電源端子的正側連接到桶形插孔的正側。

將電源端子的負側連接到桶形千斤頂的負側。

MotorKit和必需庫的CircuitPython安裝

您需要在Metro公豬上安裝一些庫d。

首先請確保您的電路板正在運行最新版本的Adafruit CircuitPython。

接下來,您需要安裝必要的庫以使用硬件-仔細按照以下步驟操作從Adafruit的CircuitPython庫捆綁包中找到并安裝這些庫。我們的CircuitPython入門指南上有一個很棒的頁面,介紹如何安裝庫捆綁包。

如果選擇,您可以在板上單獨手動安裝庫:

adafruit_pca9685

adafruit_bus_device

adafruit_register

adafruit_motor 》

adafruit_motorkit

在繼續之前,請確保您開發板的lib文件夾或根文件系統具有 adafruit_pca9685 》 .mpy,adafruit_register,adafruit_motor, adafruit_bus_device 和 adafruit_motorkit 文件和文件夾 已復制。

Nextconnect到電路板的串行REPL,因此您位于CircuitPython上。》》》 提示。

CircuitPython用法

為演示用法,我們將初始化該庫并使用Python代碼控制DC并逐步

首先,您需要導入并初始化MotorKit類。

下載:文件

復制代碼

from adafruit_motorkit import MotorKit

kit = MotorKit() from adafruit_motorkit import MotorKit

kit = MotorKit()

直流電動機

Shield上的四個電動機點分別為motor1,motor2,motor3和motor4。

在此示例中,我們將使用motor1。

注意:對于像商店出售的小型直流電動機,您可能會遇到電氣噪聲問題,這些問題會在電路板上產生并且行為不穩定。如果您看到不穩定的行為,例如電機不旋轉或在高速電機上板復位,則可能是問題所在。有關電容器的信息,請參見此電機指南常見問題頁面,您可以將其焊接到電機上以降低噪聲。

現在要移動電動機,您可以設置throttle屬性。我們不稱其為速度,因為它與特定的每分鐘轉數(RPM)不相關。 RPM取決于電動機和未知電壓。

例如,要以全速向前驅動電動機M1,請將其設置為1.0:

下載:文件

復制代碼

kit.motor1.throttle = 1.0 kit.motor1.throttle = 1.0

要以半油門速度向前運行,請使用小數點:

下載:文件

復制代碼

kit.motor1.throttle = 0.5 kit.motor1.throttle = 0.5

或使用負向油門反轉方向:

下載:文件

復制代碼

kit.motor1.throttle = -0.5 kit.motor1.throttle = -0.5

您可以使用0的油門來停止電動機:

下載:文件

復制代碼

kit.motor1.throttle = 0 kit.motor1.throttle = 0

使電動機慣性停車然后自由旋轉將油門設為None。

下載:文件

復制代碼

kit.motor1.throttle = None kit.motor1.throttle = None

用CircuitPython控制直流電動機!借助直流電動機,您可以構建有趣的運動項目,例如機器人或遙控車,它們可以輕松地四處滑動。

步進電機

類似的直流電機,步進電機有stepper1和stepper2。 stepper1由M1和M2端子組成,stepper2由M3和M4端子組成。

在示例中,我們將使用stepper1 。

最基本的功能(也是默認值)是執行一個線圈步驟。

下載:文件

復制代碼

kit.stepper1.onestep() kit.stepper1.onestep()

也可以使用兩個可選的關鍵字參數。要使用這些文件,您還需要導入步進器。

下載:文件

復制代碼

from adafruit_motor import stepper from adafruit_motor import stepper

然后您可以訪問以下選項:

direction,應為以下常量值之一:

stepper.FORWARD(默認值)

stepper.BACKWARD。

style,應為以下值之一:

stepper.SINGLE(默認值),用于整步旋轉到單個線圈通電的位置

stepper.DOUBLE用于整步旋轉到兩個線圈通電的位置,以提供更大的扭矩

stepper.INTERLEAVED用于半步旋轉交錯單線圈和雙線圈位置和扭矩

stepper.MICROSTEP微步旋轉到兩個線圈部分處于活動狀態的位置。

release() 所有線圈,以便電動機可以自由旋轉,并且不使用任何功率

該函數以微步長返回當前步長“位置”,方便地了解步進器已移動了多遠,或者您可以忽略結果。

進行雙線圈后退調用:

下載:文件

復制代碼

kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.DOUBLE) kit.stepper1.onestep(direction=stepper.BACKWARD, style=stepper.DOUBLE)

您甚至可以使用循環來連續調用onestep并移動步進器,例如向前循環200個微步以實現平滑移動:

下載:文件

復制代碼

for i in range(200):

kit.stepper1.onestep(style=stepper.MICROSTEP) for i in range(200):

kit.stepper1.onestep(style=stepper.MICROSTEP)

這是從CircuitPython控制步進電機的全部!步進機是方便的電動機,適用于需要平滑或精確控制某些物體的情況,例如3D打印機和CNC機器使用步進機在表面上精確移動工具。

完整示例代碼

對于直流電動機:

下載:Project Zip 或 motorkit_dc_motor_simpletest.py | 在Github上查看

復制代碼

“”“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

對于步進電機:

下載:Project Zip 或 motorkit_stepper_simpletest.py | 在Github上查看

復制代碼

“”“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()

堆疊盾牌

關于此屏蔽設計的一件很酷的事情是可以堆疊屏蔽。堆疊的每個屏蔽層都可以控制另外2個步進器或4個DC電動機(或兩者的混合)。您最多可以堆疊32個罩,總共64個步進器或128個DC電動機!大多數人可能只會堆疊兩個或三個,但嘿,你永遠不會知道。 (請注意,如果從這些屏蔽板之一驅動64個步進器,請給我們發張照片,好嗎?)

請注意,堆疊屏蔽板不會增加伺服連接-這些硬連接至Arduino數字9和10引腳。如果您需要控制很多伺服器,則可以使用我們的16通道伺服器防護罩并將其與該防護罩堆疊起來,以增加瘋狂的大量伺服器。

堆疊防護罩非常容易。您要堆疊的每個屏蔽必須安裝堆疊頭。查看我們的說明以了解操作方法。除非最終要在頂部屏蔽層上放一些東西,否則頂部屏蔽層不必具有堆疊頭。

堆疊屏蔽層時唯一要注意的是每個屏蔽層都必須具有唯一的I2C地址。默認地址為 0x60 。您可以將屏蔽的地址調整為從0x60到0x7F的范圍,以獲取總共32個唯一的地址。

尋址盾牌

必須為鏈中的每個板分配一個唯一的地址。這是通過板下邊緣的地址跳線完成的。每塊板的I2C基址為0x60。使用地址跳線編程的二進制地址將添加到基本I2C地址。要編程地址偏移量,請使用一滴焊料橋接地址中每個二進制“ 1”的對應地址跳線。

最右邊的跳線是地址位#0,然后到左邊是地址位#1,依此類推,直到地址位#4

面板0:地址= 0x60偏移=二進制0000(無需跳線)《板1:地址= 0x61偏移=二進制0001(如上圖所示的橋A0)

板2:地址= 0x62偏移=二進制0010(A0左側的橋A1)

板3:地址= 0x63偏移量=二進制0011(橋A0和A1,兩個最右邊的跳線)

板4:地址= 0x64偏移量=二進制0100(橋A2,中間的跳線)等

請注意,地址0x70是屏蔽板上控制器芯片的“全部調用”地址。所有板都將響應地址0x70-不管地址跳線設置如何。

多個屏蔽的編寫代碼

與較早的AF_Motor庫不同,Adafruit_MotorShield庫具有控制多個屏蔽的功能。首先,我們必須為每個屏蔽創建一個電動機屏蔽控制器,并為其分配地址。

Adafruit_MotorShield AFMSbot(0x61);//最右邊的跳線關閉

Adafruit_MotorShield AFMStop(0x60);//默認地址,沒有跳線

一個電機屏蔽層將被稱為AFMSbot(底部屏蔽層,因此我們要記住),另一個是AFMStop(頂部屏蔽層),這樣我們就可以將它們分開。創建屏蔽對象時,請在上面指定為其設置的地址。

然后,我們可以請求將電機連接到每個電機上。

//在頂部屏蔽上,連接兩個步進器,每個步進器具有200個步驟

Adafruit_StepperMotor * myStepper2 = AFMStop.getStepper(200,1);

Adafruit_StepperMotor * myStepper3 = AFMStop.getStepper(200,2);

//在200步的底部屏蔽層上,將步進器連接到端口M3/M4

Adafruit_StepperMotor * myStepper1 = AFMSbot.getStepper(200,2);

//和一個直流電動機到端口M1

Adafruit_DCMotor * myMotor1 = AFMSbot.getMotor(1);

您可以從任何端口請求步進或直流電動機,只需在調用 getMotor 或 getStepper 時確保使用正確的AFMS控制器對象即可。在使用已連接的電動機之前,必須先調用開始。

AFMSbot.begin();//啟動底部屏蔽

AFMStop.begin();//啟動頂部屏蔽

您可以通過設置兩個屏蔽并運行 File-》 Examples-》 Adafruit_MotorShield-》 StackingTest 來親自嘗試此代碼示例

資源

汽車創意和教程

維基百科上有很多有關步進電機的信息

關于步進電機類型的瓊斯

Jason涉及對步進電機引線的反向工程

PCB文件在GitHub上

示意圖,單擊以進行嵌入

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 驅動器
    +關注

    關注

    53

    文章

    8272

    瀏覽量

    147071
收藏 人收藏

    評論

    相關推薦

    超值音棒參考設計套件開發指南

    電子發燒友網站提供《超值音棒參考設計套件開發指南.pdf》資料免費下載
    發表于 12-21 09:16 ?0次下載
    超值音棒參考設計<b class='flag-5'>套件</b>開發指南

    【正點原子STM32H7R3開發套件試用體驗】開發套件開箱報告

    非常有幸,能夠體驗正點原子STM32H7R3開發套件。 一直以來,用了不少正點原子的產品,總的來說,體驗非常的好。 收到套件快遞,開箱的那一刻,覺得就是那個正點原子的味兒,一直沒變。 一、套件盒子
    發表于 12-12 00:54

    AM243x LaunchPad?開發套件用戶指南

    電子發燒友網站提供《AM243x LaunchPad?開發套件用戶指南.pdf》資料免費下載
    發表于 10-30 09:58 ?0次下載
    AM243x LaunchPad?開發<b class='flag-5'>套件</b>用戶指南

    NVIDIA RTX AI套件簡化AI驅動的應用開發

    NVIDIA 于近日發布 NVIDIA RTX AI套件,這一工具和 SDK 集合能夠幫助 Windows 應用開發者定制、優化和部署適用于 Windows 應用的 AI 模型。該套件免費提供,不要求使用者具備 AI 框架和開發工具方面的經驗,并且可以為本地和云端部署提供
    的頭像 發表于 09-06 14:45 ?522次閱讀

    TPS63802HDKEVM-硬件開發套件

    電子發燒友網站提供《TPS63802HDKEVM-硬件開發套件.pdf》資料免費下載
    發表于 09-04 10:08 ?0次下載
    TPS63802HDKEVM-硬件開發<b class='flag-5'>套件</b>

    【xG24 Matter開發套件試用體驗】深入了解Silicon Labs xG24 Matter開發套件

    今天把收到的xG24 Matter開發套件給大家做個詳細的介紹,Silicon Labs-芯科科技公司最新推出的一款具有智能和機器學習硬件加速功能的無線物聯網產品評估xG24 Matter開發套件
    發表于 08-27 20:23

    【xG24 Matter開發套件試用體驗】初識xG24 Matter開發套件

    今天帶剛收到xG24 Matter開發套件的快遞,為大家做個xG24 Matter開發套件的視頻介紹,帶大家認識一下這款xG24 Matter開發套件。 EFR32xG24 Explorer
    發表于 07-11 23:31

    【xG24 Matter開發套件試用體驗】+開機啟動

    xG24 Matter開發套件試用體驗: 1.EFR32xG24 Explorer 套件是一個基于 EFR32MG24 片上系統的小封裝開發和評估平臺。EFR32xG24 Explorer 套件專注
    發表于 07-11 14:05

    8V97052評估套件數據手冊

    電子發燒友網站提供《8V97052評估套件數據手冊.rar》資料免費下載
    發表于 05-13 17:22 ?0次下載
    8V97052評估<b class='flag-5'>套件</b>數據手冊

    8A34044 ClockMatrix評估套件數據手冊

    電子發燒友網站提供《8A34044 ClockMatrix評估套件數據手冊.pdf》資料免費下載
    發表于 05-11 16:51 ?0次下載
    8A34044 ClockMatrix評估<b class='flag-5'>套件</b>數據手冊

    8A34003 ClockMatrix評估套件數據手冊

    電子發燒友網站提供《8A34003 ClockMatrix評估套件數據手冊.rar》資料免費下載
    發表于 05-11 16:07 ?0次下載
    8A34003 ClockMatrix評估<b class='flag-5'>套件</b>數據手冊

    NCV78702子板評估套件數據手冊

    電子發燒友網站提供《NCV78702子板評估套件數據手冊.rar》資料免費下載
    發表于 04-18 18:11 ?0次下載
    NCV78702子板評估<b class='flag-5'>套件</b>數據手冊

    照明-電源-POE-GEVB評估套件數據手冊

    電子發燒友網站提供《照明-電源-POE-GEVB評估套件數據手冊.rar》資料免費下載
    發表于 04-15 15:36 ?2次下載
    照明-電源-POE-GEVB評估<b class='flag-5'>套件</b>數據手冊

    單火線供電器套件產品介紹

    電子發燒友網站提供《單火線供電器套件產品介紹.pdf》資料免費下載
    發表于 04-14 09:24 ?1次下載

    基于網絡的設計平臺Canva收購了Affinity創意軟件套件

    基于網絡的設計平臺Canva收購了Affinity創意軟件套件,將自己定位為Adobe數字設計行業的挑戰者。
    的頭像 發表于 04-01 17:29 ?881次閱讀
    大发888怎么刷钱| 百家乐游戏卡通| 太阳网娱乐| 如何看百家乐的路纸| 大发888娱乐场 d188| 御匾会百家乐官网娱乐城| 大发888注册送钱| 百家乐群博爱彩| 网站百家乐官网假| 德州扑克| 百家乐五湖四海娱乐网| 百家乐官网视频游戏平台| 威尼斯人娱乐场官网是多少| 恒丰百家乐官网的玩法技巧和规则| 盘锦市| 大发888官方 df888| 香港百家乐赌场娱乐网规则 | 大发888下载网址| 澳门百家乐上下限| 缅甸百家乐官网博彩真假| 尊尚会娱乐城| 太子百家乐的玩法技巧和规则 | 三公百家乐官网在哪里可以玩| 足球百家乐官网投注计算| 德州扑克偷鸡| 澳门百家乐走势图怎么看| 真人百家乐官网免费开户送钱| 大发888娱乐城注册lm0| 线上百家乐手机版| 百家乐怎么投注| 澳门百家乐官网牌规| 澳门百家乐官网公试打法| 百家乐官网开户送18元| 鸿博娱乐城| 网上百家乐赌博经历| 明溪百家乐的玩法技巧和规则| 真人百家乐出售| 希尔顿百家乐娱乐城 | 百家乐不倒翁注码| 做生意的怎样招财| 狮威百家乐官网娱乐场|