Servo Shield¶
Servo Shield (v3) ขับเซอร์โวมาตรฐานสำหรับงานอดิเรกได้สูงสุดสี่ตัวโดยตรงจาก OpenMV Cam ตัวควบคุมแรงดันในตัวรับอินพุต 6–36 V จากขั้วต่อสกรูและจ่าย 5.6 V ที่กระแสสูงสุด 5 A ซึ่งเพียงพอสำหรับจ่ายไฟให้ทั้งกล้องและเซอร์โวจากแหล่งจ่ายเดียว
ดูข้อมูล datasheet ฉบับเต็ม รูปภาพ และการสั่งซื้อได้ที่ หน้าผลิตภัณฑ์ Servo Shield
จุดเด่น¶
ขับเซอร์โวมาตรฐานได้สูงสุดสี่ตัวผ่าน P7 / P8 / P9 / P10
อินพุต 6–36 V บนขั้วต่อสกรู (ทนทานต่อการต่อกลับขั้ว)
5.6 V ที่กระแสสูงสุด 5 A บน VIN — จ่ายไฟให้กล้องและเซอร์โว
อินพุต ADC 0–5 V พร้อมการป้องกันแรงดันเกินสูงสุด ±36 V
ดิจิทัล I/O สองทิศทาง 0–5 V พร้อมการแปลงระดับสัญญาณ 3.3 V เป็น 5 V
ผังพิน¶
อ้างอิงพิน¶
พิน |
ฟังก์ชัน |
|---|---|
P6 |
อ่านกลับ AIN ผ่านการแปลงระดับสัญญาณ (0–3.3 V บน P6) |
P7 |
Servo 1 — GPIO สองทิศทาง 3.3 V ↔ 5 V |
P8 |
Servo 2 — GPIO สองทิศทาง 3.3 V ↔ 5 V |
P9 |
Servo 3 — GPIO สองทิศทาง 3.3 V ↔ 5 V |
P10 |
Servo 4 — GPIO สองทิศทาง 3.3 V ↔ 5 V |
PWR in |
อินพุตกว้าง 6–36 V บนขั้วต่อสกรู (ทนทานต่อการต่อกลับขั้ว) |
AIN in |
อินพุตอนาล็อกบนขั้วต่อสกรู |
VIN out |
5.6 V ที่ควบคุมแล้ว สูงสุด 5 A รวมสำหรับเซอร์โวและกล้อง |
3.3V rail |
จ่ายไฟให้วงจรอิเล็กทรอนิกส์บน shield |
GND rail |
กราวด์ร่วม |
Note
AIN ได้รับการป้องกันแรงดันเกินสูงสุด ±36 V และค่าเริ่มต้นรับอินพุตแรงดัน 0–5 V โดยลดระดับลงเป็น 0–3.3 V บน P6 เชื่อม shunt โหมด 4–20 mA ด้านหลัง shield เพื่อสลับ AIN เป็นอินพุต current-loop 4–20 mA
Note
P6–P10 แต่ละพินเชื่อมต่อกับกล้องผ่านตัวต้านทาน 0 โอห์มด้านหลัง shield ถอดตัวต้านทานบนพินใดก็ตามที่ต้องการนำกลับมาใช้งานอื่น
Note
บน shield เวอร์ชัน v2 P6–P9 เป็นตัวแปลงระดับสัญญาณทางเดียว 3.3 V → 5 V (เฉพาะเอาต์พุต) P10 เป็นสายดิจิทัล open-drain ดึงขึ้นไป 3.3 V ฝั่งกล้องและ 5 V ฝั่งพินเซอร์โว ค่าเริ่มต้นเป็นอินพุต — shield แปลงระดับ 0–5 V บนพินเซอร์โวลงเป็น 0–3.3 V บน P10 เปลี่ยน solder jumper บนบอร์ดเพื่อพลิก P10 เป็นเอาต์พุต โดยแปลงระดับ 0–3.3 V บน P10 ขึ้นเป็น 0–5 V บนพินเซอร์โว
การใช้งาน¶
ขับเซอร์โวมาตรฐานจากพิน P7–P10 ใดก็ได้ด้วยสัญญาณ PWM 50 Hz ช่วงความกว้างพัลส์แตกต่างกันตามเซอร์โว ดังนั้นปรับ MIN_US และ MAX_US ให้ตรงกับเซอร์โวของคุณ — ค่าทั่วไปอยู่ที่ประมาณ 1000–2000 µs:
from machine import Pin, PWM
import time
MIN_US = 1000 # full-left pulse width (microseconds)
MAX_US = 2000 # full-right pulse width
servo = PWM(Pin("P7"), freq=50)
def angle(deg):
pulse_us = MIN_US + (deg * (MAX_US - MIN_US)) // 180
servo.duty_ns(pulse_us * 1000)
while True:
angle(0)
time.sleep(1)
angle(90)
time.sleep(1)
angle(180)
time.sleep(1)
อ่านอินพุตขั้วต่อสกรู AIN (ผลลัพธ์ที่แปลงระดับสัญญาณแล้วจะปรากฏบน P6):
from machine import ADC
import time
ain = ADC("P6")
while True:
# 0–5 V on the AIN terminal scaled to 0–3.3 V on P6
v = ain.read_u16() * 3.3 / 65535
print("AIN:", v * (5.0 / 3.3), "V")
time.sleep_ms(100)