Adafruit TB6612 1.2A DC/Stepper Motor Driver Breakout Board使用指南
在電子工程領(lǐng)域,電機(jī)驅(qū)動(dòng)是一個(gè)常見且重要的應(yīng)用場景。今天我們來詳細(xì)介紹一下 Adafruit TB6612 1.2A DC/Stepper Motor Driver Breakout Board,這是一款功能強(qiáng)大且易于使用的電機(jī)驅(qū)動(dòng)板。
文件下載:2448.pdf
一、概述
TB6612 驅(qū)動(dòng)板可以驅(qū)動(dòng)四個(gè)螺線管、兩個(gè)直流電機(jī),或者一個(gè)雙極或單極步進(jìn)電機(jī),每個(gè)通道的電流可達(dá) 1.2A。它是 Adafruit Motorshield 和 Motor HAT 中使用的驅(qū)動(dòng)芯片。這款驅(qū)動(dòng)板將 TB6612 芯片焊接在一個(gè) breakout 板上,在電機(jī)電壓輸入處設(shè)有極性保護(hù) FET,“待機(jī)” 使能引腳有上拉電阻。每個(gè)芯片包含兩個(gè)全橋(四個(gè)半橋),意味著它有很強(qiáng)的驅(qū)動(dòng)能力。不過要注意,芯片的電流限制為 1.2A,雖然能承受 3A 的峰值電流,但只能持續(xù)約 20 毫秒。另外,它內(nèi)部集成了反激二極管,能避免感應(yīng)反沖損壞項(xiàng)目或驅(qū)動(dòng)板。
該驅(qū)動(dòng)板的邏輯電壓范圍是 2.7V - 5V,電機(jī)電壓范圍是 4.5V - 13.5V,不太適合 3V 電機(jī)。購買時(shí)附帶一個(gè)組裝并測試好的 breakout 板和一小條引腳頭,需要進(jìn)行簡單的焊接操作將引腳頭連接到 breakout PCB 上,不過 Arduino、電機(jī)和電源需要自己準(zhǔn)備。
二、引腳定義
電源引腳
- Vmotor:電機(jī)電壓輸入,范圍在 4.5V - 13.5V。由于電源會產(chǎn)生噪聲,如果系統(tǒng)中有模擬讀數(shù)或?qū)?a target="_blank">射頻等噪聲敏感的部件,可能需要將電源分開或進(jìn)行濾波處理。
- Vcc:邏輯電壓輸入,可設(shè)置為微控制器使用的邏輯電壓,例如 Arduino 一般使用 5V,范圍是 2.7V - 5.5V,適用于 3V 或 5V 邏輯。
- GND:邏輯和電機(jī)的公共地,所有地都連接在一起。
信號輸入引腳
這些引腳都是 “Vcc 邏輯電平” 輸入:
- INA1、INA2:電機(jī) A 橋的兩個(gè)輸入。
- PWMA:電機(jī) A 橋的 PWM 輸入,如果不需要 PWM 控制,將其連接到邏輯高電平。
- INB1、INB2:電機(jī) B 橋的兩個(gè)輸入。
- PWMB:電機(jī) B 橋的 PWM 輸入,如果不需要 PWM 控制,將其連接到邏輯高電平。
- STBY:待機(jī)引腳,通過一個(gè) 10K 電阻上拉到 Vcc,連接到地可禁用兩個(gè)電機(jī)。
電機(jī)輸出引腳
這些是 “Vmotor 電平” 的功率輸出:
- Motor A:電機(jī) A 的兩個(gè)輸出,由 INA1、INA2 和 PWMA 控制。
- Motor B:電機(jī) B 的兩個(gè)輸出,由 INB1、INB2 和 PWMB 控制。
三、組裝步驟
準(zhǔn)備引腳頭
如果需要,將引腳頭切割到合適的長度。把引腳頭插入面包板,長引腳朝下,這樣焊接會更容易。
添加 breakout 板
將 breakout 板放在引腳上,使短引腳穿過 breakout 板的焊盤。
焊接
確保焊接所有引腳,以實(shí)現(xiàn)可靠的電氣連接。如果對焊接不太熟悉,可以參考 Adafruit 的《Guide to Excellent Soldering》(https://adafru.it/aTk)。
四、Arduino 使用步進(jìn)電機(jī)
接線
以推薦的 12V 電機(jī)電壓、每轉(zhuǎn) 200 步的雙極步進(jìn)電機(jī)為例,將其連接到 Metro 微控制器(也可以使用其他微控制器):
- Vmotor 連接到 12V(紅色線)
- Vcc 連接到 5V(橙色線)
- GND 連接到地
- AIN2 連接到數(shù)字引腳 4
- AIN1 連接到數(shù)字引腳 5
- BIN1 連接到數(shù)字引腳 6
- BIN2 連接到數(shù)字引腳 7
- PWMA 和 PWMB 連接到 Vcc(橙色線)
然后將一個(gè)步進(jìn)電機(jī)的一個(gè)線圈連接到 Motor A(紅色和黃色線),另一個(gè)線圈連接到 Motor B(綠色和灰色/棕色線)。如果電機(jī)振動(dòng)但不旋轉(zhuǎn),檢查所有電線連接,嘗試交換一對電線或重新檢查線對。如果是單極電機(jī),會有第 5 或第 6 根線是 “公共” 線,將這些線連接到 breakout 板上 Motor A 和 B 輸出之間的 GND 引腳。
軟件
使用 Arduino 的內(nèi)置 Stepper 庫(https://adafru.it/eRw),示例代碼如下:
#include
#define STEPS 200
Stepper stepper(STEPS, 4, 5, 6, 7);
void setup() {
Serial.begin(9600);
Serial.println("Stepper test!");
stepper.setSpeed(60);
}
void loop() {
Serial.println("Forward");
stepper.step(STEPS);
Serial.println("Backward");
stepper.step(-STEPS);
}
創(chuàng)建 Stepper 對象后,可以使用 setSpeed(rpm) 設(shè)置轉(zhuǎn)速(單位:RPM),使用 step(steps) 控制步進(jìn),steps 為正表示正向,為負(fù)表示反向。更多詳細(xì)信息可查看 Stepper 庫文檔。
五、Python & CircuitPython 使用步進(jìn)電機(jī)
CircuitPython 微控制器接線
以 Metro M4 為例,需要插入 9V 電源到 Metro 的桶形插孔,并確保開關(guān)處于 “on” 狀態(tài),為步進(jìn)電機(jī)提供足夠的電源。連接方式如下:
- 板的 VM 連接到 Metro 的 VIN
- 板的 GND 連接到 Metro 的 GND
- 板的 VCC 連接到面包板電源軌
- 板的 PWMB 連接到面包板電源軌
- 板的 BIN2 連接到 Metro 的 D12
- 板的 BIN1 連接到 Metro 的 D11
- 板的 AIN1 連接到 Metro 的 D9
- 板的 AIN2 連接到 Metro 的 D10
- 板的 PWMA 連接到面包板電源軌
- 面包板電源軌連接到 Metro 的 5V
- 板的 MOTORA(兩個(gè)引腳)連接到步進(jìn)電機(jī)線圈(紅色和黃色線)
- 板的 MOTORB(兩個(gè)引腳)連接到步進(jìn)電機(jī)線圈(綠色和灰色線)
- 9V 電源連接到 Metro 的桶形插孔
Python 計(jì)算機(jī)接線
以 Raspberry Pi 為例,Raspberry Pi 不能為步進(jìn)電機(jī)提供足夠的電源,需要使用 9V 電源為驅(qū)動(dòng)板供電。連接方式如下:
- 板的 VM 連接到桶形插孔的正極端
- 板的 GND 連接到桶形插孔的負(fù)極端
- 桶形插孔連接到 9V 電源
- 板的 VCC 連接到面包板電源軌
- 板的 GND 連接到 Pi 的 GND
- 板的 PWMB 連接到面包板電源軌
- 板的 BIN2 連接到 Pi 的 D21
- 板的 BIN1 連接到 Pi 的 D20
- 板的 AIN1 連接到 Pi 的 D19
- 板的 AIN2 連接到 Pi 的 D26
- 板的 PWMA 連接到面包板電源軌
- 面包板電源軌連接到 Pi 的 3.3V
- 板的 MOTORA(兩個(gè)引腳)連接到步進(jìn)電機(jī)線圈(紅色和黃色線)
- 板的 MOTORB(兩個(gè)引腳)連接到步進(jìn)電機(jī)線圈(綠色和灰色線)
CircuitPython 電機(jī)庫安裝
首先確保運(yùn)行的是 Adafruit CircuitPython 的最新版本(https://adafru.it/Em8),然后從 Adafruit 的 CircuitPython 庫包(https://adafru.it/ENC)中找到并安裝 adafruit_motor 庫。確保板的 lib 文件夾或根文件系統(tǒng)中有 adafruit_motor 文件夾。
Python 電機(jī)庫安裝
需要安裝 Adafruit_Blinka 庫,可能還需要在平臺上啟用 I2C 并確保運(yùn)行的是 Python 3。根據(jù)不同平臺,可參考《CircuitPython on Linux》指南(https://adafru.it/BSN)進(jìn)行準(zhǔn)備。安裝完成后,在命令行運(yùn)行 pip3 install adafruit-circuitpython-motor。
CircuitPython & Python 使用示例
以下是控制步進(jìn)電機(jī)的代碼示例,將其保存為 code.py 到 CIRCUITPY 驅(qū)動(dòng)器:
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
import time
import board
import digitalio
from adafruit_motor import stepper
DELAY = 0.01
STEPS = 200
# 微控制器使用
coils = (
digitalio.DigitalInOut(board.D9), # A1
digitalio.DigitalInOut(board.D10), # A2
digitalio.DigitalInOut(board.D11), # B1
digitalio.DigitalInOut(board.D12) # B2
)
# Raspberry Pi 使用
# coils = (
# digitalio.DigitalInOut(board.D19), # A1
# digitalio.DigitalInOut(board.D26), # A2
# digitalio.DigitalInOut(board.D20), # B1
# digitalio.DigitalInOut(board.D21) # B2
# )
for coil in coils:
coil.direction = digitalio.Direction.OUTPUT
motor = stepper.StepperMotor(coils[0], coils[1], coils[2], coils[3], microsteps=None)
for step in range(STEPS):
motor.onestep()
time.sleep(DELAY)
for step in range(STEPS):
motor.onestep(direction=stepper.BACKWARD)
time.sleep(DELAY)
for step in range(STEPS):
motor.onestep(style=stepper.DOUBLE)
time.sleep(DELAY)
for step in range(STEPS):
motor.onestep(direction=stepper.BACKWARD, style=stepper.DOUBLE)
time.sleep(DELAY)
for step in range(STEPS):
motor.onestep(style=stepper.INTERLEAVE)
time.sleep(DELAY)
for step in range(STEPS):
motor.onestep(direction=stepper.BACKWARD, style=stepper.INTERLEAVE)
time.sleep(DELAY)
motor.release()
代碼中,首先導(dǎo)入必要的庫,設(shè)置每個(gè)電機(jī)控制語句之間的延遲時(shí)間 DELAY 和每個(gè)控制塊使用的步數(shù) STEPS。然后設(shè)置驅(qū)動(dòng)板使用的引腳,根據(jù)實(shí)際使用的設(shè)備(微控制器或 Raspberry Pi)選擇相應(yīng)的引腳。將所有引腳設(shè)置為輸出,并實(shí)例化電機(jī)對象。最后,使用 onestep() 方法控制電機(jī)的步進(jìn)。你可以根據(jù)需要調(diào)整代碼中的參數(shù),以實(shí)現(xiàn)不同的電機(jī)控制效果。
六、下載資源
- 數(shù)據(jù)手冊:可查看 TB6612 的詳細(xì)信息,包括引腳電壓限制、電容等(https://adafru.it/emK)。
- Fritzing 對象:在 Adafruit Fritzing 庫中(https://adafru.it/aP3)。
- EagleCAD PCB 文件:可用于 PCB 設(shè)計(jì)(https://adafru.it/rF1)。
總之,Adafruit TB6612 驅(qū)動(dòng)板為電機(jī)控制提供了一個(gè)方便、可靠的解決方案。無論是使用 Arduino 還是 Python/CircuitPython,都能輕松實(shí)現(xiàn)步進(jìn)電機(jī)的控制。大家在實(shí)際使用過程中,不妨多嘗試不同的參數(shù)和控制方式,看看能實(shí)現(xiàn)哪些有趣的效果呢?
-
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
153文章
3276瀏覽量
152837 -
電機(jī)驅(qū)動(dòng)板
+關(guān)注
關(guān)注
0文章
24瀏覽量
3636
發(fā)布評論請先 登錄
Adafruit TB6612 1.2A DC/Stepper Motor Driver Breakout Board使用指南
評論