久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 10214|回復: 63
打印 上一主題 下一主題
收起左側

【Arduino】168種傳感器系列實驗(170)---L293D四路電機驅動板

[復制鏈接]
跳轉到指定樓層
樓主
37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進步或是搞不定的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗一百七十:L293D四路電機驅動模塊 擴展板 motor control shield 馬達板







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:513258 發表于 2020-10-27 10:26 | 只看該作者
L293D
L293D是ST公司生產的一種高電壓、小電流電機驅動芯片,其設計用于在4.5 V至36 V的電壓下提供高達600 mA的雙向驅動電流。可以用于驅動電感性負載,例如繼電器,螺線管,DC和雙極步進電機,以及在正電源應用中的其他大電流/高壓負載。

每個輸出都是一個完整的圖騰柱驅動電路,帶有一個達林頓晶體管沉和一個偽達林頓源。驅動程序成對啟用,驅動程序1和2由1,2EN啟用,驅動程序3和4由3,4EN啟用。

L293D的工作溫度范圍為0°C至70°C。




回復

使用道具 舉報

板凳
ID:513258 發表于 2020-10-27 10:55 | 只看該作者
L293D特性
電源電壓范圍:4.5V至36V
單獨的輸入邏輯電源
內部ESD保護
熱關斷
高噪聲抗擾度輸入的
通標L293和L293DSGS的功能替代
輸出電流1A每通道(600毫安L293D)
峰值輸出電流每通道2A(1.2 L293D)
輸出鉗位二極管的感性瞬態抑制(L293D)

L293D參數
制造商: STMicroelectronics
產品種類: 電機/運動控制器和驅動器
類型: Driver
工作電源電壓: 4.5 V to 36 V
封裝 / 箱體: POWERDIP
封裝: Tube




回復

使用道具 舉報

地板
ID:513258 發表于 2020-10-27 11:06 | 只看該作者
該器件是單片集成的高電壓,高電流的四通道驅動器,旨在接受標準的DTL或TTL邏輯電平并驅動感性負載(例如繼電器螺線管,直流和步進電機)和開關功率晶體管。為了簡化用作兩個橋接器的使用,每對通道都配備了一個使能輸入。 獨立為邏輯電路提供了電源輸入,允許在較低電壓下工作,并包括內部鉗位二極管。該設備適合在高達5 kHz的頻率下切換應用。L293D用16引線塑料組裝具有4個中心引腳連接到gether并用于散熱的包裝L293DD裝配在20引線表面中具有8個中心引腳連接到gether并用于散熱的安裝座。

內部電路框圖



回復

使用道具 舉報

5#
ID:513258 發表于 2020-10-27 12:40 | 只看該作者
L293D引腳圖





回復

使用道具 舉報

6#
ID:513258 發表于 2020-10-27 13:04 | 只看該作者
本帖最后由 eagler8 于 2020-10-27 17:49 編輯


1,2EN:啟用驅動器通道1和2(高可用有效輸入)
<1-4> A:驅動器輸入,同相
<1-4>Y:驅動輸出
3,4EN:啟用驅動器通道3和4(高允許有效輸入)
4、5、12、13:設備接地和散熱器引腳。通過多個實心通孔連接到印刷電路板接地層
V CC1:用于內部邏輯轉換的5V電源
V CC2:驅動器的電源VCC 4.5 V至36 V

回復

使用道具 舉報

7#
ID:513258 發表于 2020-10-27 13:11 | 只看該作者
L293D電氣特性
(對于每個通道,VS = 24 V,VSS = 5 V,Tamb = 25°C,除非另有規定)




回復

使用道具 舉報

8#
ID:513258 發表于 2020-10-27 13:14 | 只看該作者

回復

使用道具 舉報

9#
ID:513258 發表于 2020-10-27 15:28 | 只看該作者

回復

使用道具 舉報

10#
ID:513258 發表于 2020-10-27 15:30 | 只看該作者

回復

使用道具 舉報

11#
ID:513258 發表于 2020-10-27 15:32 | 只看該作者

回復

使用道具 舉報

12#
ID:513258 發表于 2020-10-27 15:35 | 只看該作者



回復

使用道具 舉報

13#
ID:513258 發表于 2020-10-27 15:37 | 只看該作者

回復

使用道具 舉報

14#
ID:513258 發表于 2020-10-27 16:30 | 只看該作者
本帖最后由 eagler8 于 2020-10-28 10:46 編輯

L293D(雙H橋路)工作原理(視頻21分鐘)

https://www.bilibili.com/video/B ... 6911526506650231789


回復

使用道具 舉報

15#
ID:513258 發表于 2020-10-27 16:51 | 只看該作者
L293D四路電機驅動模塊 擴展板 motor control shield 馬達板



回復

使用道具 舉報

16#
ID:513258 發表于 2020-10-27 16:55 | 只看該作者
這是一款常用的直流電機驅動模塊,采用293D芯片小電流直流電機驅動芯片。管腳被做成了rduino兼容的,也方便了愛好者快速的基于rduino的開發。

rduino 是一款很好的電子制作入門,有了電機擴展板可以很好的成為機器人開發平臺。這里介紹一款能驅動各種簡單到稍復雜項目的全功能的電機擴展板。

適用范圍:rduino初學者,rduino實驗器材平臺,rduino互動電子,Arduino機器人等。

特點:功能多,操作方便,有強大的驅動庫支持及功能更新。

缺點:I/O占用較多在同時驅動四路電機的情況下(相對rduino I/O少的版本而言),小功率。

可驅動4路直流電機或者2路步進電機的同時還能驅動2路舵機,支持最新rduino UNO, rduino Mega 2560

可以這樣搭配:
驅動四路直流電機和兩路舵機
驅動兩路直流電機和一路步進電機和兩路舵機
驅動兩路步進電機和兩路舵機




回復

使用道具 舉報

17#
ID:513258 發表于 2020-10-27 17:00 | 只看該作者
L293D四路電機擴展板特點
    * 2個5V伺服電機(舵機)端口 聯接到Arduino的高解析高精度的定時器-無抖動!
    * 多達4個雙向直流電機及4路PWM調速(大約0.5%的解析度)
    * 多達2個步進電機正反轉控制,單/雙步控制,交錯或微步及旋轉角度控制。
    * 4路H-橋:L293D 芯片每路橋提供.0.6A(峰值1.2A)電流并且帶有熱斷電保護,4.5V to 36V。
    * 下拉電阻保證在上電時電機保持停止狀態。
    * 大終端接線端子使接線更容易(10 - 22AWG)和電源。
    * 帶有Arduino復位按鈕。
    * 2個大終端外部電源接線端子 保證邏輯和電機驅動電源分離。
    * 兼容Mega, Diecimila, & Duemilanove。
    *下載方便使用的Arduino軟件庫快速進行項目開發。




回復

使用道具 舉報

18#
ID:513258 發表于 2020-10-27 18:19 | 只看該作者
本帖最后由 eagler8 于 2020-10-28 13:18 編輯

L293D四路電機擴展板電原理圖





回復

使用道具 舉報

19#
ID:513258 發表于 2020-10-28 10:55 | 只看該作者
本帖最后由 eagler8 于 2020-10-28 13:19 編輯

L293D四路電機擴展板模塊原理
使用L293D來驅動電機的,中間有一個74HC595芯片,是將串行信號轉為并行信號的,因為該模塊是為arduino設計的,arduino的I/O口較少,控制4個直流電機需要12個引腳,使用74HC595可以減少4個引腳的使用,也可以取掉74HC595芯片,焊接接線,直接使用51單片機并行控制2個L293D芯片從而控制電機。

74HC595
74HC595是一個8位串行輸入、并行輸出的位移緩存器:并行輸出為三態輸出。在SCK 的上升沿,串行數據由SDL輸入到內部的8位位移緩存器,并由Q7'輸出,而并行輸出則是在LCK的上升沿將在8位位移緩存器的數據存入到8位并行輸出緩存器。當串行數據輸入端OE的控制信號為低使能時,并行輸出端的輸出值等于并行輸出緩存器所存儲的值。簡單的說,先將模塊的引腳7置0,然后模塊的引腳4(74HC595芯片的數據輸入時鐘端)接受到一個上升沿,就將芯片中的8位數據左移一位,空出低位將引腳8(74HC595芯片的串行數據輸入端)的0或1信號寫入低位,寫入八次就將控制4個電機的8位信號寫入74HC595的芯片中了(M3M4M3M2M1M1M2M4),然后在給引腳12一個上升沿,就將芯片中的數據輸出在芯片的引腳上(Q0~Q7)。



程序計數器——74HC595(視頻6分32秒)
https://www.bilibili.com/video/BV1ME411T7EY?from=search&seid=17494597794294138238

回復

使用道具 舉報

20#
ID:513258 發表于 2020-10-28 11:28 | 只看該作者
本帖最后由 eagler8 于 2020-10-29 05:10 編輯

電機和驅動器
電機是許多機器人和電子項目不可分割的一部分,根據應用的不同,它們可以使用不同的類型。以下是有關不同類型電機的一些信息:

直流電機(DC Motor):直流電機是最常見的電機,可用于許多應用。我們可以在遙控車、機器人等中看到它。這種電機結構簡單。它將通過向其端部施加適當的電壓并通過切換電壓極性來改變其方向來開始滾動。直流電機的速度由施加的電壓直接控制。當電壓電平小于最大容許電壓時,速度會降低。

步進電機(Stepper Motor):在一些項目中,如3D打印機、掃描儀和數控機床,我們需要準確了解電機旋轉步數。在這些情況下,我們使用步進電機。步進電機可將整個旋轉分成多個相等的步長。每步的旋轉量由電機結構決定。這些電機具有非常高的精度。

伺服電機(Servo Motor):伺服電機是一種簡單的直流電機,帶有位置控制服務。通過使用伺服電機,您將能夠控制軸的旋轉量并將其移動到特定位置。它們通常尺寸小,是機器人手臂的最佳選擇。

這里做實驗準備使用TT馬達





TT馬達直流減速電機,作為一款被廣泛應用于電子DIY,機器人制作,智能車制作環節重點動力裝置,以其組裝簡單,擴展性能強,價格低廉等諸多特點受到廣大師生和電子愛好者的喜歡。

主要參數
額定電壓:4.5-6V
空載轉速:90±10rpm (具體視減速比而定)
負載電流:190mA(250mA 最大)
最大扭矩:0.8Kg·cm

回復

使用道具 舉報

21#
ID:513258 發表于 2020-10-28 14:29 | 只看該作者
本帖最后由 eagler8 于 2020-10-29 04:51 編輯

為什么用L293D驅動電機?
驅動電動機需要大電流。另外,旋轉方向和速度是兩個需要控制的重要參數。這些要求可以通過使用微控制器(或像Arduino這樣的開發板)來處理。但有個問題;微控制器無法提供足夠的電流來運行電機,如果直接將電機連接到微控制器,可能會損壞微控制器。例如,Arduino UNO引腳限制為40mA電流,遠小于控制小型電機所需的100-200mA電流。要解決這個問題,我們應該使用電機驅動器。電機驅動器可以連接到微控制器以接收命令并以高電流運行電機。L293D是最受歡迎的電機驅動器之一,可驅動直流電機,電流負載高達1A.L293D有4個輸出,適用于4線步進電機。 L293D也可用于驅動伺服電機。






L293D四路電機擴展板支持Arduino UNO. Arduino Mega2560
可以這樣搭配
驅動四路直流電機和兩路舵機
驅動兩路直流電機和一路步進電機和兩路舵機
驅動兩路步進電機和兩路舵機
可以同時控制4個直流電機和2個步進電機和兩個伺服電機(舵
機)。有專門的代碼庫。導入庫后,簡單使用。


回復

使用道具 舉報

22#
ID:513258 發表于 2020-10-29 04:58 | 只看該作者
L293D四路電機擴展板接線圖



回復

使用道具 舉報

23#
ID:513258 發表于 2020-10-29 17:34 | 只看該作者
本帖最后由 eagler8 于 2020-10-29 17:41 編輯

在L293D上哪些引腳我們可以使用呢?
所有的六個模擬輸入引腳都是可用的。它們也可以當做數字芯片來使用。(引腳14到19),數字引腳2和13可用。

下面的引腳只有在下面提到的直流或者步進電機工作時才會被用到
       數字引腳11: 1號直流電機或者1號步進電機
       數字引腳3: 2號直流電機或者1號步進電機
       數字引腳5: 3號直流電機或者2號步進電機
       數字引腳6:4號直流電機或者2號步進電機

下面的引腳只有在下面的直流或者步進電機工作時才會被用到
       數字信號4,7,8,和12通過74hc595(serial-to-parallel)來驅動直流或者步進電機

數字引腳4:DIR CLK觸發
數字引腳7:DIR EN指令的允許端EN
數字引腳8:DIR SER
數字引腳12:DIR ATCH中斷連接

下面的引腳只有在舵機工作時才會被用到
       數字信號9:1號舵機
       數字信號10: 2號舵機

所以只要相應的引腳沒被L293D驅動板使用到,你也是可以拿來用的但前提是你得自己焊出引腳來。另外,GND、5V引腳必須也要連接,否則的話就無法穩定地控制直流電動機。





回復

使用道具 舉報

24#
ID:513258 發表于 2020-11-3 20:22 | 只看該作者
外接電源供電
如下圖所示,AFMotor電機擴展板上配有外接電源接口。該接口所連接的直流電源可以為電機和Arduino開發板供電。



使用AFMotor電機擴展板驅動電機時,首要考慮的問題就是如何為擴展板供電。如果電源輸出功率達不到驅動電機的要求,那么電機是無法正常工作的。在考慮如何選擇電源時,我們需要重點關注兩個方面 ,一個是電源電壓,一個是電源電流。

注意:外接電源極性千萬不要接反,否則會對擴展板造成損壞!

外接電源電壓要求
AFMotor擴展板中起關鍵作用的芯片是L293D。該芯片所允許的直流電源電壓范圍是4.5V ~25V。因此AFMotor擴展板外接電源接口允許我們連接的電源也是4.5V ~25V。請注意:這是一個很寬泛的電壓指標。具體我們應該連接的電源電壓有多大,這是由被驅動的電機工作電壓來決定的。

外接電源電流要求
與上面提到的電源電壓要求相同,外接電源的電流要求也是由被驅動的電機來決定的。通常我們使用AFMotor電機擴展板所驅動的電機就是普通的模型電機(如以上電源講解中的圖片所示)。對于這一類型的電機,它們的工作電流大約是500mA左右,因此我們只要為擴展板配一個500 mA~1000 mA的外接電源就足夠了。請注意,假如您所驅動的電機工作電流超過500mA,那么就要考慮為擴展板上的L293D加裝芯片了。
回復

使用道具 舉報

25#
ID:513258 發表于 2020-11-4 05:04 | 只看該作者
電源使用
為直流電動機,電壓和電流需求供電電動機需要大量能量,尤其是便宜的電動機,因為它們的效率較低。首先要弄清楚電動機要使用的電壓。如果幸運的話,您的電動機帶有一些規格。一些小型的業余電動機僅打算以1.5V的電壓運行,但6-12V電動機的使用卻一樣普遍。該屏蔽罩的電機控制器設計為在 4.5V至25V 范圍內運行。

MOST 1.5-3V電動機將無法工作
電流要求:要弄清的第二件事是電動機需要多少電流。該套件隨附的電機驅動器芯片旨在為每個電機提供高達600 mA的電流,峰值電流為1.2A。請注意,一旦接近1A,您可能會希望在電機驅動器上放一個散熱器,否則會出現熱故障,從而可能燒壞芯片。

使用SN754410
某些人使用SN754410電機驅動器芯片是因為它與引腳兼容,具有輸出二極管,每個電機可提供1A電流,峰值2A電流。在仔細閱讀數據表并與TI技術支持和電源工程師進行討論之后,看來輸出二極管僅設計用于ESD保護,并且將其用作反沖保護是一種黑客行為,并且不能保證性能。因此,該套件不隨SN754410一起提供,而是使用帶有集成反沖保護二極管的L293D。如果您愿意冒險,并且需要額外的流動資金,請隨時購買SN754410并更換提供的芯片。

需要更多電源嗎?請購買另一組L293D驅動器并將其焊接在板上的頂部(背負式)。瞧,當前功能加倍!您可以在頂部再焊接2個芯片,否則可能不會為您帶來很多好處

您不能用9V電池來驅動電動機,因此甚至不浪費時間/電池! 使用大號鉛酸或鎳氫電池。它還非常建議您設置兩個電源(分離電源),一個用于Arduino,另一個用于電機。 99%的“怪異電機問題” 是由于共享電源線上的噪聲引起的供應和/或沒有足夠的供應!

如何設置Arduino + Shield來為電機供電 Servos的電源是與Arduino使用的相同的5V電壓。建議使用小型業余伺服器。如果您想要更好的東西,請切斷去往伺服連接器上+的走線,并為您自己的5-6V電源接線!

直流電動機由“高壓電源”供電,而不是經過調節的5V電源。請勿將電動機電源連接到5V線。除非您確定自己知道自己在做什么,否則這是一個非常非常糟糕的主意!

可以在兩個地方獲得電動機的“高壓電源”。一個是Arduino板上的DC插孔,另一個是屏蔽板上標有 EXT_PWR 的2端子塊.Arduino上的DC插孔具有保護二極管,因此您將無法弄亂如果插入錯誤的電源,情況可能會變得非常糟糕。但是,屏蔽層上的 EXT_PWR端子沒有保護二極管(出于相當充分的理由)。請小心不要將其向后插入,否則您將破壞電機護罩和/或Arduino!

這是它的工作方式:




如果您想要一個為Arduino和電機提供單個DC電源,只需將其插入Arduino的DC插孔或屏蔽板上的2針PWR_EXT模塊。將電源跳線放在電動機的護罩上。

如果您有Diecimila Arduino,請將Arduino電源跳線設置為EXT。

請注意,如果電池電源無法提供恒定的電源,您可能會遇到Arduino重置問題,但這不是建議您為電機項目供電的方法

如果您想讓 Arduino的USB電源關閉,而電機的電源是直流電源,插入USB電纜。然后將電動機電源連接到屏蔽板上的PWR_EXTblock。請勿將跳線放在防護罩上。這是為電機項目供電的建議方法

(如果您有Diecimila Arduino,請不要忘記將Arduino電源跳線設置為USB。如果您有Diecimila,則可以交替執行以下操作:將DC電源插入

如果您要 2個用于Arduino和電機的獨立直流電源。請插入Arduino的電源插入DC插孔,然后將電動機電源連接到PWR_EXT塊。確保將跳線從電動機護罩上卸下。

如果您有Diecimila Arduino,請將Arduino跳線設置為EXT。這是為電動機項目供電的建議方法。

無論哪種方式,如果要使用直流電動機/步進系統,電動機的護罩LED均應點亮,指示電動機功率良好。

回復

使用道具 舉報

26#
ID:513258 發表于 2020-11-4 05:12 | 只看該作者
安裝AFMotor電機庫
使用AFMotor電機擴展板驅動電機以前,需要先將AFMotor庫安裝到Arduino IDE中。如果您不知道如何進行操作,請點擊這里進入Arduino IDE安裝庫的說明頁面(http://www.taichi-maker.com/home ... ll-arduino-library/)。

在這里我們向您推薦兩個電機程序庫。一個是必須安裝的,一個是可按您需要選擇安裝的。

必裝的庫是AFMotor庫。這個庫是AFMotor擴展板的開發團隊Adafruit專門為該擴展板編寫的。它的優點是非常簡單易用,但是功能相對單一。假如您只是驅動直流模型電機,那么這個AFMotor庫就足夠了。

但是如果您還想用AFMotor擴展板驅動28BYJ-48步進電機的話,AFMotor庫雖然也可以實現這一功能,但是它的功能太簡單了。所以我們建議您使用AccelStepper庫來控制步進電機。請注意:AccelStepper庫本身不能配合AFMotor電機擴展板工作。只有安裝了AFMotor庫以后,AccelStepper庫在AFMotor庫的配合下才能用于AFMotor電機擴展板驅動步進電機。這也就是說,無論您是否使用AccelStepper庫,都要首先安裝AFMotor庫。

以下是這兩個庫的下載鏈接:

下載 AFMotor庫(https://pan.baidu.com/s/1xVViDOb_VIb0qenXVdGErw
下載 AccelStepper庫(https://pan.baidu.com/s/1PXKIEiSYR-P_3IpY5cs7tw



回復

使用道具 舉報

27#
ID:513258 發表于 2020-11-4 14:52 | 只看該作者
本帖最后由 eagler8 于 2020-11-4 16:17 編輯
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百七十:L293D四路電機驅動板 motor control shield 馬達板
  4.   Adafruit Motor Shield模塊 Arduino AFMotor 電機擴展板

  5.   1、安裝庫:百度搜索“AFMotor庫”— 下載 — 拷貝到Arduino-libraries 文件夾中
  6.   2、實驗之一:測試驅動M2直流電機
  7. */

  8. #include <AFMotor.h>

  9. AF_DCMotor motor(2, MOTOR12_64KHZ);

  10. void setup() {
  11.   motor.setSpeed(200);
  12. }

  13. void loop() {
  14.   motor.run(FORWARD);
  15.   delay(1000);
  16.   motor.run(BACKWARD);
  17.   delay(1000);
  18.   motor.run(RELEASE);
  19.   delay(1000);
  20. }
復制代碼

回復

使用道具 舉報

28#
ID:513258 發表于 2020-11-4 14:52 | 只看該作者
本帖最后由 eagler8 于 2020-11-5 19:32 編輯
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百七十:L293D四路電機驅動板 motor control shield 馬達板
  4.   Adafruit Motor Shield模塊 Arduino AFMotor 電機擴展板

  5.   1、安裝庫:百度搜索“AFMotor庫”— 下載 — 拷貝到Arduino-libraries 文件夾中
  6.   2、實驗之二:引擎測試—用串口查看2號直流電機運轉情況
  7. */

  8. #include "AFMotor.h"

  9. AF_DCMotor motor(2);

  10. void setup() {
  11.   Serial.begin(9600);           // set up Serial library at 9600 bps
  12.   Serial.println("引擎測試 Motor test!");

  13.   // turn on motor
  14.   motor.setSpeed(200);

  15.   motor.run(RELEASE);
  16. }

  17. void loop() {
  18.   uint8_t i;

  19.   Serial.println("向前 FORWARD!");

  20.   motor.run(FORWARD);
  21.   for (i = 0; i < 255; i++) {
  22.     motor.setSpeed(i);
  23.     delay(10);
  24.   }

  25.   for (i = 255; i != 0; i--) {
  26.     motor.setSpeed(i);
  27.     delay(10);
  28.   }

  29.   Serial.println("向后 BACKWARD!");

  30.   motor.run(BACKWARD);
  31.   for (i = 0; i < 255; i++) {
  32.     motor.setSpeed(i);
  33.     delay(10);
  34.   }

  35.   for (i = 255; i != 0; i--) {
  36.     motor.setSpeed(i);
  37.     delay(10);
  38.   }


  39.   Serial.println("停止 RELEASE!");
  40.   motor.run(RELEASE);
  41.   delay(1000);
  42. }
復制代碼

回復

使用道具 舉報

29#
ID:513258 發表于 2020-11-4 16:16 | 只看該作者
本帖最后由 eagler8 于 2020-11-5 19:34 編輯

回復

使用道具 舉報

30#
ID:513258 發表于 2020-11-6 11:16 | 只看該作者
AF_DCMotor 類函數
AFMotor類配合Adafruit Motor Shied可以最多同時控制4個直流電機的速度和方向。要使用這些功能,首先要在開頭添加庫文件:
#include <AFMotor.h>

AF_DCMotor motorname(portnum,freq)
這是一個建立一個直流電機的函數。在程序中需要聲明每個電機各一次。像下面的例子中一樣,每個電機必須使用不同的名字。
參數:
port num - 選擇你的電機連接到電機驅動板上的接口(1-4)
freq - 選擇PWM頻率。如果你沒有選擇這個選項,默認設置為1KHZ。
適用于通道1和2的頻率:
MOTOR12_64KHZ
MOTOR12_8KHZ
MOTOR12_2KHZ
MOTOR12_1KHZ
適用于通道3和4的頻率:
MOTOR34_64KHZ
MOTOR34_8KHZ
MOTOR34_1KHZ
例如:
AF_DCMotor motor4(4);//通道4,默認1KHZ頻率
AF_DCMotor left_motor(1,MOTOR12_64KHZ);//通道1,64KHZ頻率
注意:更高的頻率會減小電機在運動過程中的噪音,但同時也會降低扭矩。

setSpeed(speed)
設置電機的速度
參數:
speed-范圍為0到255,0代表停止,255代表全速。
注意:直流電機的回饋并不是典型線性的,所以真正的轉速并不會與程序中設定的速度成正比。

run(cmd)
設置電機的運轉模式
參數:
cmd - 選擇你想要的電機運轉模式
可選擇的模式:
FORWARD - 正轉(真正的轉動方向取決于你電機的連線)
BACKWARD - 反轉 (轉動方向與正轉相反)
RELEASE - 停止。使電機斷電,與setSpeed(0)函數功能相同。調用了這個函數后,電機需要一定時間才能徹底停止。

回復

使用道具 舉報

31#
ID:513258 發表于 2020-11-11 11:03 | 只看該作者
驅動直流電機



回復

使用道具 舉報

32#
ID:513258 發表于 2020-11-11 11:26 | 只看該作者
驅動伺服電機(舵機)

首先需要安裝庫:IDE—工具—管理庫—搜索“servo”—安裝



回復

使用道具 舉報

33#
ID:513258 發表于 2020-11-11 16:37 | 只看該作者
本帖最后由 eagler8 于 2020-11-11 16:51 編輯

實驗之三:驅動單只伺服電機(2號舵機)

  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百七十:L293D四路電機驅動板 motor control shield 馬達板
  4.   Adafruit Motor Shield模塊 Arduino AFMotor 電機擴展板

  5.   1、安裝庫:IDE—工具—管理庫—搜索“Servo”—安裝
  6.   2、實驗之三:驅動單只伺服電機(2號舵機)
  7. */

  8. #include <Servo.h>

  9. Servo myservo;  // create servo object to control a servo
  10. // twelve servo objects can be created on most boards

  11. int pos = 0;    // variable to store the servo position

  12. void setup() {
  13.   myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  14. }

  15. void loop() {
  16.   for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
  17.     // in steps of 1 degree
  18.     myservo.write(pos);              // tell servo to go to position in variable 'pos'
  19.     delay(15);                       // waits 15ms for the servo to reach the position
  20.   }
  21.   for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
  22.     myservo.write(pos);              // tell servo to go to position in variable 'pos'
  23.     delay(15);                       // waits 15ms for the servo to reach the position
  24.   }
  25. }
復制代碼



回復

使用道具 舉報

34#
ID:513258 發表于 2020-11-11 16:55 | 只看該作者
實驗之四:驅動二只伺服電機(1號與2號舵機)

  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百七十:L293D四路電機驅動板 motor control shield 馬達板
  4.   Adafruit Motor Shield模塊 Arduino AFMotor 電機擴展板

  5.   1、安裝庫:IDE—工具—管理庫—搜索“Servo”—安裝
  6.   2、實驗之四:驅動二只伺服電機(1號與2號舵機)
  7. */

  8. #include <Servo.h>

  9. Servo servo1;   //建立舵機對象servo1
  10. Servo servo2;   //建立舵機對象servo2

  11. int pos = 0;   
  12. void setup() {
  13.   servo1.attach(10);    //servo1對象接在擴展板servo1端口。
  14.                         //servo1端口是由Arduino的10號引腳來控制的。
  15.   servo2.attach(9);     //servo2對象接在擴展板servo2端口。
  16.                         //servo2端口是由Arduino的9號引腳來控制的。
  17. }

  18. void loop() {
  19.   //以下程序將控制servo1輸出軸左右旋轉180度
  20.   for (pos = 0; pos <= 180; pos += 1) {
  21.     servo1.write(pos);              
  22.     delay(15);                       
  23.   }
  24.   for (pos = 180; pos >= 0; pos -= 1) {
  25.     servo1.write(pos);   
  26.     delay(15);      
  27.   }
  28.   
  29.   //以下程序將控制servo2輸出軸左右旋轉180度
  30.   for (pos = 0; pos <= 180; pos += 1) {
  31.     servo2.write(pos);              
  32.     delay(15);                       
  33.   }
  34.   for (pos = 180; pos >= 0; pos -= 1) {
  35.     servo2.write(pos);   
  36.     delay(15);      
  37.   }  
  38. }
復制代碼



回復

使用道具 舉報

35#
ID:513258 發表于 2020-11-11 17:12 | 只看該作者
Servo庫
允許Arduino / Genuino開發板控制各種伺服電機(舵機)。 該庫可以控制大量的伺服器。它仔細使用了計時器:該庫僅使用1個計時器就可以控制12個伺服器。在Arduino Due上,最多可以控制60個伺服器。
該庫與avr,megaavr,sam,samd,nrf52,stm32f4,mbed 架構兼容。要使用此庫,請在Arduino IDE中打開庫管理器,然后從那里安裝它。

該庫允許Arduino開發板控制RC(業余)伺服電機。伺服系統具有集成的齒輪和可精確控制的軸。標準伺服器允許將軸以各種角度定位,通常在0到180度之間。連續旋轉伺服器允許將軸的旋轉設置為各種速度。

伺服庫在大多數Arduino板上最多支持12個電機,在Arduino Mega上最多支持48個電機。在Mega以外的板上,使用該庫會禁用analogWrite()引腳9和10上的(PWM)功能,無論這些引腳上是否有Servo。在Mega上,最多可以使用12個伺服器,而不會影響PWM功能。使用12到23個電機將禁用引腳11和12上的PWM。

要使用此庫:

#include <Servo.h>

電路圖
伺服電機(舵機)有三根電線:電源線,地線和信號線。電源線通常為紅色,應連接至Arduino板上的5V引腳。接地線通常為黑色或棕色,應連接至Arduino板上的接地引腳。信號引腳通常為黃色,橙色或白色,應連接至Arduino板上的數字引腳。請注意,伺服器消耗的功率很大,因此如果需要驅動一兩個以上,則可能需要使用單獨的電源(即,不是Arduino上的+ 5V引腳)為它們供電。確保將Arduino的接地和外部電源連接在一起。




回復

使用道具 舉報

36#
ID:513258 發表于 2020-11-11 18:39 | 只看該作者
使用Servo庫
1、Servo-attach()函數(連接)
將伺服變量附加到引腳上。請注意,在Arduino 0016及更早版本中,Servo庫僅在兩個引腳上僅支持舵機:9和10。

句法
servo.attach(pin)
servo.attach(pin, min, max)

參量
伺服:類型變量Servo
pin:伺服器連接的引腳號
min(可選):脈沖寬度(以微秒為單位),對應于伺服器上的最小(0度)角度(默認為544)
最大(可選):脈沖寬度(以微秒為單位),對應于伺服器上的最大(180度)角度(默認為2400)


#include <Servo.h>
Servo myservo;
void setup()
{
  myservo.attach(9);
}
void loop() {}

2、Servo-write(x)函數(寫入)
將值寫入伺服器,從而相應地控制軸。在標準伺服器上,這將設置軸的角度(以度為單位),將軸移動到該方向。在連續旋轉伺服系統(360度舵機)上,這將設置伺服系統的速度(0表示一個方向的全速,180表示另一方向的全速,而90左右的值表示無運動)。

句法
servo.write(angle)

參量
伺服:伺服類型的變量
angle:寫入伺服的值,從0到180


#include <Servo.h>
Servo myservo;
void setup()
{
  myservo.attach(9);
  myservo.write(90);  // set servo to mid-point
}
void loop() {}

回復

使用道具 舉報

37#
ID:513258 發表于 2020-11-11 18:40 | 只看該作者
3、Servo-writeMicroseconds()函數(精確控制)
以微秒(uS)為單位寫入一個值,從而相應地控制軸。在標準伺服系統上,這將設置軸的角度。在標準伺服器上,參數值1000完全是逆時針方向,2000完全是順時針方向,中間是1500。

請注意,某些制造商并未非常嚴格地遵循此標準,因此,伺服器通常會對700到2300之間的值做出響應。可以隨意增加這些端點,直到伺服器不再繼續增加其范圍為止。但是請注意,嘗試將伺服驅動器驅動通過其端點(通常由嘶嘶聲表示)是高電流狀態,應避免使用。連續旋轉伺服器將以類似于寫入功能的方式響應writeMicrosecond功能。

句法
servo.writeMicroseconds(uS)

參量
伺服:伺服類型的變量
us:參數值(以微秒為單位)(int)


#include <Servo.h>

Servo myservo;

void setup()
{
  myservo.attach(9);
  myservo.writeMicroseconds(1500);  // set servo to mid-point
}

void loop() {}


4、Servo-read()函數(讀取)
讀取伺服器的當前角度(該值傳遞給對write()的最后一次調用)。

句法
servo.read()

參量
伺服:類型變量Servo
反饋
伺服角度為0到180度。


5、Servo-Attached()函數(附加)
檢查是否將Servo變量附加到引腳上。

句法
servo.attached()

參量
伺服:類型變量Servo
反饋
true如果伺服系統連接到引腳上;false除此以外。

6、Servo-detach()函數(分離)
從其引腳上拆下伺服變量。如果所有伺服變量均已分離,則可以使用AnalogWrite()將引腳9和10用于PWM輸出。

句法
servo.detach()

參量
伺服:類型變量Servo

回復

使用道具 舉報

38#
ID:513258 發表于 2020-11-11 19:16 | 只看該作者
驅動28BYJ-48步進電機
AFMotor電機擴展板最多可以驅動2個28BYJ-48步進電機。以下我們將給您介紹兩種電機擴展板的使用方法。第一種是在您開發項目時的使用方法,第二種是項目開發完畢后,在使用擴展板驅動電機工作時的方法。這兩種方法最大的區別在于:開發時的Arduino開發板是通過USB數據線連接在電腦上的。但是在工作時開發板是不連接電腦的。

步進電機可以用來精確控制,很適合用于許多機器人或者CNC制作。這個電機驅動板做多支持2個步進電機。雙極性和單極性電機都適合這個庫。對于雙極性電機(42二相四線電機):其中由兩相,相1的兩線連接到驅動板上的M1或者M3,相2的兩線連接到驅動板上對于的M2或者M4上。運轉一個步進電機比運轉一個直流電機稍微復雜些,但總體還是比較簡單的。




回復

使用道具 舉報

39#
ID:513258 發表于 2020-11-11 19:30 | 只看該作者
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百七十:L293D四路電機驅動板 motor control shield 馬達板
  4.   Adafruit Motor Shield模塊 Arduino AFMotor 電機擴展板

  5.   1、安裝庫:百度搜索“AFMotor庫”— 下載 — 拷貝到Arduino-libraries 文件夾中
  6.   2、實驗之五:驅動28BYJ-48步進電機
  7. */

  8. #include <AFMotor.h> // 本程序中使用AFMotor庫

  9. AF_Stepper motor1(2048, 1);  // 這2條語句的作用是建立2個步進電機對象,它們的名稱分別是:motor1/2。
  10. AF_Stepper motor2(2048, 2);  // 對象名稱后面括號中的兩個參數分別代表了步進電機旋轉一周的步數以及
  11.                               // 步進電機連接在擴展板上的端口號。如AF_Stepper motor1(2048, 1)語句中
  12.                               // 參數2048代表motor1旋轉一周需要走2048步。假如您的電機旋轉一周需要32步,
  13.                               // 那么請在第一個參數位置輸入32這一數字參數。
  14.                               // 括號中第二個參數1代表motor1連接在M1和M2端口。
  15.                               // 對于motor2對象,它括號中的參數2代表該電機連接在M3和M4端口。

  16. void setup() {
  17.   Serial.begin(9600);         //啟動串口通訊
  18.   
  19.   motor1.setSpeed(10);        // 這2條語句的作用是通過setSpped庫函數設置電機運行速度。
  20.   motor2.setSpeed(10);        // setSpped庫函數中的參數是運行速度參數。
  21.                               // 速度參數越大,運轉速度越快。參數為0時電機停止轉動。
  22. }

  23. /*
  24. 以下的loop函數中有4段程序語句。它們的內容十分類似,主要語句都是是通過step庫函數來控制
  25. 步進電機的運行模式。step庫函數一共有3個參數。如loop函數的第二行語句:motor1.step(2048, FORWARD, SINGLE)。
  26. 括號中的第一個參數是控制電機走的步數,這里的參數2048就是讓電機走2048步。
  27. 接下來的關鍵字參數"FORWARD"作用是控制電機旋轉方向。"FORWARD"是控制電機"正轉",
  28. 這里也可以使用關鍵字"BACKWARD"讓電機"反轉"。
  29. 最后一個關鍵字參數是用于控制步進電機運轉模式的。這里可選的關鍵字參數有:
  30. SINGLE - 全步進模式(單線圈)。電機每走一步,擴展板只給一相線圈供電。
  31. DOUBLE - 全步進模式(雙線圈)。電機每走一步,擴展板會同時給兩相線圈供電。
  32.          此模式運行的電機比SINGLE模式下的扭矩要更大,但是電機耗電也會更多。
  33. INTERLEAVE - 半步進模式。這種模式是SINGLE和DOUBLE的混合。電機每走一步,擴展板對線圈供電方式
  34.              在一相和兩相之間交替切換。舉例來說,電機走第一步時,只有一相線圈通電。
  35.              走第二步時,會有兩相線圈供電,然后又是一相,再兩相......這樣交替通電。
  36.              這種控制模式的優點是電機運行更流暢,但是缺點是運行速度大打折扣。
  37. MICROSTEP - 微步進模式。此模式下的電機運行更光滑,但缺點是扭矩會打折扣。   
  38. */

  39. void loop() {
  40.   Serial.println("Single Mode");        //串口監視器輸出當前運行模式為“Single”
  41.   motor1.step(2048, FORWARD, SINGLE);    //步進電機以SINGLE模式"正轉"2048步
  42.   motor1.step(2048, BACKWARD, SINGLE);   //步進電機以SINGLE模式"反轉"2048步

  43.   Serial.println("Double Mode");        //串口監視器輸出當前運行模式為“Double”
  44.   motor2.step(2048, FORWARD, DOUBLE);    //步進電機以DOUBLE模式"正轉"2048步
  45.   motor2.step(2048, BACKWARD, DOUBLE);   //步進電機以DOUBLE模式"反轉"2048步

  46.   Serial.println("Interleave Mode");        //串口監視器輸出當前運行模式為“Interleave”
  47.   motor1.step(2048, FORWARD, INTERLEAVE);    //步進電機以INTERLEAVE模式"正轉"2048步
  48.   motor1.step(2048, BACKWARD, INTERLEAVE);   //步進電機以INTERLEAVE模式"反轉"2048步

  49.   Serial.println("Micrsostep Mode");         //串口監視器輸出當前運行模式為“Micrsostep”
  50.   motor2.step(2048, FORWARD, MICROSTEP);      //步進電機以MICROSTEP模式"正轉"2048步
  51.   motor2.step(2048, BACKWARD, MICROSTEP);     //步進電機以MICROSTEP模式"反轉"2048步
  52. }
復制代碼


回復

使用道具 舉報

40#
ID:513258 發表于 2020-11-11 19:37 | 只看該作者
與步進電機有關的函數
確保導入AFMotor庫文件并#include < AFMotor.h>后,有這么幾個函數需要用到

1、AF_Stepper steppername(steps,portnumber)
(1)steppername
給電機起個名字,然后這個名字就是此電機在程序中的代號了
(2)steps
設置電機每轉的步數,比如設置36,則每步走1/36轉
(3)portnumber
選擇電機的通道,范圍為1(通道1,2)和2(通道3和4)

2、Step(steps,direction,style)
(1)step
轉動的步數
(2)direction
轉動的方向FORWARD 或者 BACKWARD
(3)style
步進的模式,可以選擇的參數:
a\SINGLE - 一次只給一相線圈供電
b\DOUBLE - 一次給兩項項圈都供電,得到更大的扭矩
c\INTERLEAVE - 電機會運轉得更柔滑,因為步數增加了一倍,同時速度也減小一半
d\MICROSTEP - 電機會運轉的更柔滑,精度更高,但扭矩也會減小

如果想更精細地控制步進電機,可以使用AccelStepper library,這個庫帶有電機加減速度功能。

回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 福利视频午夜 | 日本福利在线 | 国产精品观看 | 色综合天天综合网国产成人网 | 亚洲人天堂| 久久久精品国产sm调教网站 | 成年人免费看片 | 成人在线视频免费观看 | 成人av一区二区三区在线观看 | 91视频在线 | 国产三级在线观看视频 | 国产精品久久久久久无人区 | 欧美顶级黄色大片免费 | 成年免费视频黄网站在线观看 | 狠狠se| 波多野结衣亚洲一区 | 亚洲欧美在线播放 | 国产精品美女毛片真酒店 | 婷婷97| 欧美日韩四区 | 久久久久久爱 | av久久久 | 在线亚洲欧美 | 久草免费福利视频 | 欧美一区二区在线 | 青青青草视频 | 性欧美bbw | 可以看毛片的网站 | 黄色影音| 国产又粗又猛又黄又爽无遮挡 | 国产精品福利在线 | 国产黄色一区二区 | 日韩欧美国产高清91 | 中文字幕一二三四区 | 亚洲欧美另类在线 | 午夜精品视频在线 | 精品一区二区三区免费看 | 天天爽天天干 | 国产午夜三级 | 91欧美日韩| 福利视频网址导航 |