درع التشغيل (Driver Shield)¶
يشغّل درع التشغيل (Driver Shield) محركَين بتيار 3 أمبير أو أربعة مشغّلات خطوط مستقلة بتيار 1.5 أمبير من مصدر تغذية واسع النطاق 6-36 فولت، ممّا يمنح OpenMV Cam واجهة أمامية متينة للتحكم في المحركات مع حماية من عكس الجهد ومن طفرات التيار.
للاطلاع على ورقة البيانات الكاملة والصور ومعلومات الطلب، راجع صفحة منتج درع التشغيل.
أبرز الميزات¶
مشغّلا محركَين مزدوجان بتيار 3 أمبير أو أربعة مشغّلات خطوط بتيار 1.5 أمبير، 6-36 فولت
حماية من عكس الجهد ومن طفرات التيار العابرة على الدخل
دخل ADC بنطاق 0-5 فولت مع حماية من فرط الجهد حتى ±36 فولت
دخل/خرج رقمي بنطاق 0-5 فولت لمحفّزات مزامنة الكاميرا، محمي من القصر
مخطط الدبابيس¶
مرجع الدبابيس¶
الدبوس |
الوظيفة |
|---|---|
P0 |
DIR لزوج الخرج O1/O2 |
P1 |
DIR لزوج الخرج O3/O4 (البديل) |
P2 |
DIR لزوج الخرج O3/O4 (الافتراضي) |
P6 |
قراءة AIN بعد إزاحة المستوى (0–3.3 فولت على P6) |
P7 |
PWM لزوج الخرج O1/O2 |
P8 |
PWM لزوج الخرج O3/O4 |
P10 |
SYN — دخل/خرج رقمي مفتوح المصرف على لوحة الأطراف |
دخل PWR |
دخل واسع 6–36 فولت على لوحة الأطراف (يتحمّل عكس الجهد) |
دخل AIN |
دخل تناظري على لوحة الأطراف |
خرج VIN |
5.4 فولت حتى 600 مللي أمبير من المنظّم المدمج |
خط 3.3 فولت |
يغذّي الإلكترونيات المدمجة في الدرع |
خط GND |
أرضي مشترك |
ملاحظة
إن دخل AIN محمي من فرط الجهد حتى ±36 فولت، وهو افتراضياً دخل جهد بنطاق 0–5 فولت يُقلّص إلى 0–3.3 فولت على P6. صِل وصلة وضع 4–20 مللي أمبير في مقدّمة الدرع لتحويل AIN إلى دخل حلقة تيار 4–20 مللي أمبير.
ملاحظة
إن SYN خط رقمي مفتوح المصرف، مرفوع إلى 3.3 فولت على جانب الكاميرا وإلى 5 فولت على جانب طرف SYN. وهو افتراضياً دخل — يقوم الدرع بإزاحة مستوى 0–5 فولت على SYN إلى 0–3.3 فولت على P10. غيّر وصلة اللحام المدمجة لقلب P10 إلى خرج، فيتم إزاحة مستوى 0–3.3 فولت على P10 إلى 0–5 فولت على SYN.
ملاحظة
يمكن استعادة كل من P0 وP1 وP2 وP6 وP7 وP8 وP10 لاستخدام غير مرتبط. تتصل P0 وP2 وP6 وP7 وP8 وP10 افتراضياً عبر وصلات لحام في الجهة الخلفية — افتح الوصلة على أي دبوس تريد تحريره. أما P1 فمفصولة افتراضياً: صِل وصلتها في الجهة الأمامية لتوجيه DIR لـ O3/O4 إلى P1 بدلاً من ذلك (وافتح وصلة P2 في الجهة الخلفية لتحرير P2).
ملاحظة
تحدّد وصلتا وضع على ظهر الدرع — واحدة لكل جسر H — كل زوج خرج بشكل مستقل في أحد ثلاثة أوضاع. تحمل كل وصلة علامتي L وH لتبيان أي جانب يختار أي حالة:
منخفض (الافتراضي) — وضع DIR/PWM: دبوس DIR واحد + دبوس PWM واحد لكل جسر.
مرتفع — وضع جسر H: يشغّل الدبوسان الجسر مباشرةً عبر جدول الحقيقة ثنائي الدخل للشريحة.
عائم (دون توصيل) — وضع مستقل: يصبح كل دبوس مشغّل خط قائماً بذاته موجّهاً إلى خرج واحد.
تُقيّد كل شريحة DRV8876 إلى 3 أمبير إجمالاً لكل شريحة — أي 3 أمبير عبر جسر واحد (وضع DIR/PWM أو جسر H) أو 1.5 أمبير لكل خرج موزّعة على الخرجين (الوضع المستقل).
الاستخدام¶
وضع DIR/PWM (الافتراضي)¶
شغّل محرك تيار مستمر بفُرَش على زوج الخرج O1/O2 — اضبط الاتجاه على P0 وطبّق إشارة سرعة PWM على P7. تزيد الحلقة أدناه دورة التشغيل حتى السرعة القصوى ثم تخفّضها، ثم تقلب الاتجاه وتكرّر:
from machine import Pin, PWM
import time
direction = Pin("P0", Pin.OUT)
speed = PWM(Pin("P7"), freq=20_000, duty_u16=0)
def ramp(target):
for duty in range(0, target, 1024):
speed.duty_u16(duty)
time.sleep_ms(10)
for duty in range(target, -1, -1024):
speed.duty_u16(duty)
time.sleep_ms(10)
while True:
direction.value(1) # forward
ramp(65_535)
direction.value(0) # reverse
ramp(65_535)
يمكن لجسرَي H أيضاً تشغيل محرك خطوي ثنائي القطبية — ثبّت قناتي PWM كلتيهما على التشغيل الكامل وحرّك دبابيس DIR عبر تسلسل الأطوار الأربعة:
from machine import Pin, PWM
import time
dir12 = Pin("P0", Pin.OUT)
dir34 = Pin("P2", Pin.OUT)
PWM(Pin("P7"), freq=20_000, duty_u16=65_535) # full drive on O1/O2
PWM(Pin("P8"), freq=20_000, duty_u16=65_535) # full drive on O3/O4
SEQUENCE = [(1, 1), (0, 1), (0, 0), (1, 0)]
def step(forward=True):
for a, b in SEQUENCE if forward else reversed(SEQUENCE):
dir12.value(a)
dir34.value(b)
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)
وضع جسر H¶
مع ضبط وصلة الوضع على مرتفع، يشغّل دبوسا الجسر كلاهما جسر H مباشرةً. بالنسبة إلى O1/O2 يكون جدول الحقيقة:
(P0, P7) = (L, L)← الانزلاق الحر (الخرجان بمعاوقة عالية Hi-Z)(P0, P7) = (L, H)← أمامي (O1 = H، O2 = L)(P0, P7) = (H, L)← عكسي (O1 = L، O2 = H)(P0, P7) = (H, H)← كبح (الخرجان كلاهما منخفض)
(يتبع O3/O4 الجدول نفسه مع P1/P2 وP8.) تدوّر الحلقة أدناه محركاً عبر أمامي ← كبح ← عكسي ← انزلاق حر على زوج الخرج O1/O2:
from machine import Pin
import time
p0 = Pin("P0", Pin.OUT)
p7 = Pin("P7", Pin.OUT)
def drive(a, b):
p0.value(a)
p7.value(b)
while True:
drive(0, 1) # forward
time.sleep(1)
drive(1, 1) # brake
time.sleep_ms(500)
drive(1, 0) # reverse
time.sleep(1)
drive(0, 0) # coast
time.sleep_ms(500)
يمكن استبدال أي من الدبوسين بقناة machine.PWM للتشغيل التناسبي — على سبيل المثال، (P0=0, P7=PWM) يعطي أمامي/انزلاق حر بدورة تشغيل PWM، و(P0=1, P7=PWM) يعطي عكسي/كبح عند (100 % − duty). تزيد الحلقة أدناه دورة التشغيل ثم تخفّضها مع إبقاء P0 على 0 (أمامي/انزلاق حر):
from machine import Pin, PWM
import time
p0 = Pin("P0", Pin.OUT, value=0)
p7 = PWM(Pin("P7"), freq=20_000, duty_u16=0)
while True:
for duty in range(0, 65_536, 1024):
p7.duty_u16(duty)
time.sleep_ms(10)
for duty in range(65_535, -1, -1024):
p7.duty_u16(duty)
time.sleep_ms(10)
الوضع المستقل¶
مع جعل وصلة الوضع عائمة، يصبح كل دبوس مشغّل خط قائماً بذاته موجّهاً إلى خرج واحد — وهو مفيد للملفات اللولبية أو المرحّلات أو أي حمل تشغيل/إيقاف لا يحتاج إلى جسر H. التعيين هو P7 ← O1، وP0 ← O2، وP8 ← O3، وP1 (أو P2) ← O4:
from machine import Pin
import time
outputs = [
Pin("P7", Pin.OUT), # O1
Pin("P0", Pin.OUT), # O2
Pin("P8", Pin.OUT), # O3
Pin("P2", Pin.OUT), # O4
]
while True:
for o in outputs: # walk a single high pulse across O1–O4
o.value(1)
time.sleep_ms(200)
o.value(0)
يمكن أيضاً تطبيق PWM على أي من الدبابيس الأربعة عبر machine.PWM للتشغيل التناسبي — على سبيل المثال، إخفات كل خرج صعوداً ونزولاً بالتناوب:
from machine import Pin, PWM
import time
outputs = [
PWM(Pin("P7"), freq=1_000, duty_u16=0), # O1
PWM(Pin("P0"), freq=1_000, duty_u16=0), # O2
PWM(Pin("P8"), freq=1_000, duty_u16=0), # O3
PWM(Pin("P2"), freq=1_000, duty_u16=0), # O4
]
while True:
for o in outputs:
for duty in range(0, 65_536, 1024):
o.duty_u16(duty)
time.sleep_ms(5)
for duty in range(65_535, -1, -1024):
o.duty_u16(duty)
time.sleep_ms(5)
دخل/خرج آخر¶
اقرأ دخل لوحة أطراف AIN عبر دبوس P6 المُزاح المستوى:
from machine import ADC
import time
ain = ADC("P6")
while True:
v = ain.read_u16() * 3.3 / 65535
print("AIN:", v * (5.0 / 3.3), "V")
time.sleep_ms(100)
تفاعل مع حافة هابطة على خط SYN — على سبيل المثال، لمزامنة الكاميرا مع جهاز آخر يسحب SYN إلى المنخفض:
from machine import Pin
def on_sync(pin):
print("SYN falling edge")
syn = Pin("P10", Pin.IN)
syn.irq(on_sync, Pin.IRQ_FALLING)