Servo Shield

Servo Shield (v3) ขับเซอร์โวมาตรฐานสำหรับงานอดิเรกได้สูงสุดสี่ตัวโดยตรงจาก OpenMV Cam ตัวควบคุมแรงดันในตัวรับอินพุต 6–36 V จากขั้วต่อสกรูและจ่าย 5.6 V ที่กระแสสูงสุด 5 A ซึ่งเพียงพอสำหรับจ่ายไฟให้ทั้งกล้องและเซอร์โวจากแหล่งจ่ายเดียว

Servo Shield

ดูข้อมูล 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

ผังพิน

ผังพิน Servo Shield

อ้างอิงพิน

พิน

ฟังก์ชัน

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)