Az SG90 szervo motor használata a Raspberry PI -vel

Using the SG90 Servo Motor with the Raspberry Pi

SG90 szervo motor egy kicsi, könnyű szervó, amelyet általában használnak a robotikában, az automatizálásban és a barkácsolásban. Ez lehetővé teszi a szög helyzetének pontos ellenőrzését Impulzusszélesség -moduláció (PWM)- Ez az útmutató megmutatja, hogyan lehet irányítani egy SG90 szervómotor málna PI -vel Python használatával.


Mire lesz szüksége

  1. Málna PI (Bármely modell GPIO -támogatással, például PI 3, PI 4)
  2. SG90 szervo motor
  3. Külső áramforrás (5 V, opcionális több szervó számára)
  4. Kenyérlemez és jumper vezetékek
  5. Python telepítve a málna pi -n

1. lépés: Az SG90 szervo vezetéke a Raspberry PI -hez

A Az SG90 szervómotornak három csapja van:

SG90 PIN Málna pi tű Funkció
VCC (piros) 5V (2. érintkező) Tápegység
GND (barna) GND (6. érintkező) Föld
Jel (narancs) GPIO18 (12. érintkező) PWM jelvezérlés

Jegyzet: Ha több szervót használ, használjon egy külső 5 V -os tápegység Annak elkerülése érdekében, hogy a Raspberry Pi 5 V -os csapja túlterhelje.


2. lépés: Engedélyezze a PWM -t a Raspberry PI -n

A málna pi PWM jeleket generál A szervó helyzetének ellenőrzése.

  1. Szerelje be a Raspberry PI GPIO könyvtár (Ha még nem telepítve van):
    sudo apt update && sudo apt install python3-rpi.gpio
    
  2. Nyisson meg egy Python Script szerkesztőt:
    nano servo_control.py
    
  3. Másolja a következő Python szkriptet a következő címre: Vezesse az SG90 szervómotort:

3. lépés: Python kód a szervó vezérléséhez

import RPi.GPIO as GPIO
import time

# Set up the GPIO pin for PWM
SERVO_PIN = 18  # Use GPIO18 (Pin 12)
GPIO.setmode(GPIO.BCM)
GPIO.setup(SERVO_PIN, GPIO.OUT)

# Start PWM with 50Hz frequency
pwm = GPIO.PWM(SERVO_PIN, 50)
pwm.start(0)

def set_angle(angle):
    duty_cycle = (angle / 18) + 2.5  # Convert angle to duty cycle
    GPIO.output(SERVO_PIN, True)
    pwm.ChangeDutyCycle(duty_cycle)
    time.sleep(0.5)  # Wait for servo to move
    GPIO.output(SERVO_PIN, False)
    pwm.ChangeDutyCycle(0)

try:
    while True:
        angle = int(input("Enter angle (0-180): "))
        if 0 <= angle <= 180:
            set_angle(angle)
        else:
            print("Invalid angle! Enter a value between 0 and 180.")

except KeyboardInterrupt:
    print("Exiting...")
    pwm.stop()
    GPIO.cleanup()

4. lépés: A szervo vezérlési szkript futtatása

  1. Mentse el a szkript és a kilépés:

    • Sajtó Ctrl+x, akkor Y, akkor Beír.
  2. Futtassa a szkriptet:

    python3 servo_control.py
    
  3. Írja be a szöget 0 és 180 között A szervó áthelyezéséhez.


5. lépés: A PWM megértése a szervo -vezérléshez

  • PWM frekvencia: Az SG90 a 50Hz.
  • Vámciklus számítása:
    • 0 ° → 2,5% szolgálati ciklus
    • 90 ° → 7,5% szolgálati ciklus
    • 180 ° → 12,5% szolgálati ciklus
  • Képlet: duty_cycle = (angle / 18) + 2.5

6. lépés: Az SG90 szervo alkalmazása a Raspberry PI -vel

  1. Robotfegyverek - A mozgáshoz szükséges illesztések vezérlése.
  2. Automatizált ajtók és zárak - Nyissa meg/bezárja a mechanizmusokat egy szervó segítségével.
  3. Serpenyőgombos kamerarendszerek - Mozgassa a kamerákat a megfigyelés vagy a fényképezés céljából.
  4. Okos otthoni automatizálás - Vezérlő karok, zárak és távolról váltak.

Hibaelhárítás

  1. Szervo nem mozog?

    • Biztosít helyes vezeték (VCC, GND és GPIO18 a jelhez).
    • Ha több szervót használ, használjon egy Külső 5V -os áramforrás.
  2. Rendkívüli mozgások?

    • Biztosítja a stabil energiát; használat kondenzátorok (100 µF) Ha szükséges.
    • Használat Magasabb pontosságú PWM vezérlés, mint például a PCA9685 PWM modul Több szervó számára.
  3. Az engedély megtagadta a hibát?

    • Futtassa a szkriptet sudo:
      sudo python3 servo_control.py
      

Következtetés

A SG90 szervo motor nagyszerű módja annak, hogy hozzáadhassák mozgásvezérlés a Raspberry PI projektekhez. Felhasználásával PWM jelek, pontosan ellenőrizheti a szervó helyzetét Robotika, automatizálás és IoT alkalmazások- Kísérletezzen különböző szögekkel és alkalmazásokkal annak teljes potenciáljának felszabadításához! 🚀

Hagyj egy megjegyzést

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.