ใช้ AS5600 กับ Raspberry Pi

Using the AS5600 with the Raspberry Pi

AS5600 เป็นเซ็นเซอร์ตำแหน่งแม่เหล็กความละเอียดสูงที่สามารถวัดมุมได้สูงถึง 360 ° ด้วยอินเทอร์เฟซ I2C มันง่ายที่จะรวมเข้ากับ Raspberry Pi สำหรับการวัดมุมที่แม่นยำในหุ่นยนต์ระบบอัตโนมัติและแอปพลิเคชันอื่น ๆ คู่มือนี้อธิบายวิธีการใช้ AS5600 กับ Raspberry Pi เพื่ออ่านตำแหน่งเชิงมุม


สิ่งที่คุณต้องการ

  1. Raspberry Pi (รุ่นใด ๆ ที่มีการสนับสนุน I2C เช่น PI 3, PI 4)
  2. AS5600 โมดูลเครื่องเข้ารหัสแบบโรตารี่แม่เหล็ก
  3. แม่เหล็ก (Magnetized Diametrically)
  4. เครื่องหั่นขนมปังและสายจัมเปอร์
  5. คอมพิวเตอร์ที่มีการเข้าถึง SSH ไปยัง Raspberry Pi หรือแป้นพิมพ์และจอภาพที่เชื่อมต่อ
  6. Python ติดตั้งบน Raspberry Pi

ขั้นตอนที่ 1: เปิดใช้งาน I2C บน Raspberry Pi

  1. เปิดเทอร์มินัลบน Raspberry Pi ของคุณ
  2. เรียกใช้เครื่องมือกำหนดค่า Raspberry Pi:
    sudo raspi-config
    
  3. นำทางไปยัง ตัวเลือกอินเตอร์เฟส> i2cและเปิดใช้งาน
  4. รีบูตราสเบอร์รี่ pi:
    sudo reboot
    

ขั้นตอนที่ 2: เดินสาย AS5600 ไปยัง Raspberry Pi

AS5600 ใช้โปรโตคอล I2C สำหรับการสื่อสาร เชื่อมต่อกับ Raspberry Pi ดังนี้:

As5600 PIN Raspberry Pi Pin
VCC 3.3V (พิน 1)
gnd พื้นดิน (พิน 6)
SDA SDA (พิน 3, GPIO2)
SCL SCL (PIN 5, GPIO3)

บันทึก: ตรวจสอบให้แน่ใจว่าแรงดันไฟฟ้าของโมดูล AS5600 ตรงกับระดับตรรกะ 3.3V ของราสเบอร์รี่ PI


ขั้นตอนที่ 3: ติดตั้งเครื่องมือและไลบรารีที่จำเป็น

  1. อัปเดต Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. ติดตั้งเครื่องมือ I2C:
    sudo apt install -y i2c-tools
    
  3. ติดตั้งไลบรารี Python สำหรับการสื่อสาร I2C:
    pip install smbus2
    

ขั้นตอนที่ 4: ตรวจสอบการเชื่อมต่อ I2C

  1. ตรวจจับ AS5600 บนรถบัส I2C:
    sudo i2cdetect -y 1
    
  2. คุณควรเห็นที่อยู่อุปกรณ์ (เช่น 0x36) ในผลลัพธ์ ถ้าไม่ตรวจสอบสายไฟของคุณ

ขั้นตอนที่ 5: อ่านข้อมูลจาก AS5600

AS5600 ให้ข้อมูลมุม 12 บิตผ่าน I2C คุณสามารถใช้สคริปต์ Python ต่อไปนี้เพื่ออ่านและแสดงตำแหน่งเชิงมุม

ตัวอย่างรหัส Python

import smbus2
import time

# Define I2C address and bus
AS5600_ADDR = 0x36
ANGLE_REG = 0x0E

bus = smbus2.SMBus(1)

def read_angle():
    # Read two bytes from the angle register
    raw_data = bus.read_i2c_block_data(AS5600_ADDR, ANGLE_REG, 2)
    angle = (raw_data[0] << 8) | raw_data[1]  # Combine MSB and LSB
    angle = angle & 0x0FFF  # Mask to 12 bits
    return (angle / 4096.0) * 360.0  # Convert to degrees

try:
    while True:
        angle = read_angle()
        print(f"Angle: {angle:.2f} degrees")
        time.sleep(0.5)
except KeyboardInterrupt:
    print("Exiting...")

ขั้นตอนที่ 6: แอปพลิเคชันของ AS5600

AS5600 มีความหลากหลายและสามารถใช้ในโครงการต่าง ๆ :

  1. หุ่นยนต์: วัดมุมข้อต่อหรือล้อเพื่อการควบคุมที่แม่นยำ
  2. encoders: สร้างตัวเข้ารหัสแบบโรตารี่ DIY สำหรับเครื่อง CNC หรือเครื่องพิมพ์ 3 มิติ
  3. ปุ่มควบคุม: ใช้เป็นลูกบิดความละเอียดสูงสำหรับการนำทางหรือการนำทางเมนู
  4. การติดตามตำแหน่ง: ติดตามตำแหน่งเชิงมุมในระบบอัตโนมัติ

การแก้ไขปัญหา

  1. ไม่พบอุปกรณ์:

    • ตรวจสอบการเชื่อมต่อ SDA และ SCL
    • ตรวจสอบให้แน่ใจว่า I2C เปิดใช้งานบน Raspberry Pi
    • ตรวจสอบแรงดันไฟฟ้าของ AS5600
  2. การอ่านที่ไม่ถูกต้อง:

    • ตรวจสอบให้แน่ใจว่าแม่เหล็กสอดคล้องกับเซ็นเซอร์ AS5600 อย่างถูกต้อง
    • ใช้แม่เหล็กแม่เหล็กแบบ diametrically สำหรับการวัดที่แม่นยำ
  3. ข้อผิดพลาด I2C:

    • ตรวจสอบอุปกรณ์ที่ขัดแย้งกันบนบัส I2C โดยใช้ i2cdetect.
    • ตรวจสอบที่อยู่ของ AS5600 ตรงกับสคริปต์

บทสรุป

เซ็นเซอร์ตำแหน่งโรตารี่ AS5600 เป็นเครื่องมือที่ทรงพลังและใช้งานง่ายสำหรับการวัดมุม โดยทำตามคำแนะนำนี้คุณสามารถรวม AS5600 เข้ากับ Raspberry Pi เพื่อสร้างระบบการวัดการหมุนที่แม่นยำสำหรับหุ่นยนต์ระบบอัตโนมัติและอื่น ๆ ทดลองกับแอพพลิเคชั่นที่แตกต่างกันเพื่อปลดล็อกศักยภาพทั้งหมดของเซ็นเซอร์อเนกประสงค์นี้!

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.