Motor Shield¶
A Motor Shield két DC motort hajt az OpenMV Cam-ről egy TB6612FNG kettős H-híd segítségével, egy NCP1117 5 V-os lineáris szabályozóval, amely egyetlen 6,5–18 V-os akkumulátor-bemenetről táplálja mind a kamerát, mind a motorokat.
A teljes adatlapért, fényképekért és rendelési információkért lásd a Motor Shield termékoldalt.
Kiemelt jellemzők¶
Két független motorcsatorna PWM sebességszabályozással
Akár 2 A meghajtóáram csatornánként
Bipoláris léptetőmotort is képes hajtani
Rakásolható a Servo Shielddel
Lábkiosztás¶
Lábkiosztás-referencia¶
Láb |
Funkció |
|---|---|
P0 |
DIR B1 (B motor iránya) |
P1 |
DIR B0 (B motor iránya) |
P2 |
DIR A1 (A motor iránya) |
P3 |
DIR A0 (A motor iránya) |
P6 |
TB6612FNG STANDBY — alapértelmezetten bekapcsolva; húzd alacsonyra az alacsony fogyasztású módba lépéshez |
P7 |
PWM sebességbemenet az A motorhoz |
P8 |
PWM sebességbemenet a B motorhoz |
VBAT be |
6,5–18 V akkumulátor-bemenet a csavaros sorkapcson (NCP1117 korlátok) |
VIN ki |
5 V a fedélzeti NCP1117 szabályozóból (a kamerát táplálja) |
3,3 V-os sín |
A TB6612FNG logikáját táplálja |
GND-sín |
Közös föld |
Megjegyzés
A P6 alapértelmezetten a TB6612 STANDBY bemenetét hajtja. Vágd el a forrasztási nyomvonalat a shield hátoldalán a P6 leválasztásához, ha inkább más célra szeretnéd használni a lábat (a meghajtó ekkor engedélyezve marad).
Megjegyzés
A TB6612FNG mindegyik motort egy kétbemenetes igazságtábla plusz egy PWM engedélyezés alapján hajtja. Az A motor esetében (STBY magasra állítva és PWMA bármilyen nullától eltérő kitöltési tényezőn):
(P3, P2) = (H, L)→ előre(P3, P2) = (L, H)→ hátra(P3, P2) = (L, L)→ szabadonfutás (kimenetek Hi-Z)(P3, P2) = (H, H)→ fékezés (mindkét kimenet alacsony)
A PWMA alacsonyra hajtása rövid fékezést kényszerít az irányjelektől függetlenül — a 0 %-os kitöltési tényező fékezi a motort. A B motor ugyanezt a táblát követi a (P1, P0) lábakon, PWM-mel a P8-on.
Használat¶
Vezesd végig az A motort az előre → fékezés → hátra → szabadonfutás állapotokon rögzített PWM kitöltési tényezőn:
from machine import Pin, PWM
import time
a0 = Pin("P3", Pin.OUT) # AIN1
a1 = Pin("P2", Pin.OUT) # AIN2
pwma = PWM(Pin("P7"), freq=1_000, duty_u16=40_000) # ~60%
def drive(in1, in2):
a0.value(in1)
a1.value(in2)
while True:
drive(1, 0) # forward
time.sleep(2)
drive(1, 1) # brake
time.sleep_ms(500)
drive(0, 1) # reverse
time.sleep(2)
drive(0, 0) # coast
time.sleep_ms(500)
A változó sebességű vezérléshez tartsd állandóan az irányjeleket, és futtasd fel a PWMA-t. Az alábbi ciklus felfuttatja az A motort a szabadonfutásból teljes előremenetre, majd vissza:
from machine import Pin, PWM
import time
Pin("P3", Pin.OUT, value=1) # AIN1=H
Pin("P2", Pin.OUT, value=0) # AIN2=L → forward direction
pwma = PWM(Pin("P7"), freq=1_000, duty_u16=0)
while True:
for duty in range(0, 65_536, 1024):
pwma.duty_u16(duty)
time.sleep_ms(10)
for duty in range(65_535, -1, -1024):
pwma.duty_u16(duty)
time.sleep_ms(10)
A TB6612 két H-hídja bipoláris léptetőmotort is hullámmeghajtással hajthat — egyszerre egy tekercset gerjesztve, négy fázison végighaladva. Tartsd mindkét PWM-csatornát a kívánt meghajtóáramon, és hívd a step() függvényt egy teljes sorrend bármelyik irányba történő léptetéséhez:
from machine import Pin, PWM
import time
a0 = Pin("P3", Pin.OUT)
a1 = Pin("P2", Pin.OUT)
b0 = Pin("P1", Pin.OUT)
b1 = Pin("P0", Pin.OUT)
PWM(Pin("P7"), freq=1_000, duty_u16=32_768) # 50% drive on A
PWM(Pin("P8"), freq=1_000, duty_u16=32_768) # 50% drive on B
SEQUENCE = [(1, 0, 0, 0), (0, 0, 1, 0), (0, 1, 0, 0), (0, 0, 0, 1)]
def step(forward=True):
for s in SEQUENCE if forward else reversed(SEQUENCE):
a0.value(s[0])
a1.value(s[1])
b0.value(s[2])
b1.value(s[3])
time.sleep_ms(5)
while True:
for _ in range(50): # ~1 revolution forward (200 phases)
step()
for _ in range(50): # ~1 revolution backward
step(forward=False)
A fedélzeti STANDBY vonal alapértelmezetten magas (meghajtó engedélyezve). Húzd a P6-ot alacsonyra a TB6612 alvó állapotba helyezéséhez:
from machine import Pin
Pin("P6", Pin.OUT).value(0) # standby