Az SG90 szervomotor egy kisméretű, könnyű szervó, amelyet gyakran használnak robotikában, automatizálásban és barkácsprojektekben. Lehetővé teszi a szöghelyzet precíz vezérlését impulzusszélesség-moduláció (PWM) segítségével. Ez az útmutató bemutatja, hogyan vezérelhet egy SG90 szervomotort Raspberry Pi-vel Python használatával.
Amire szüksége lesz
- Raspberry Pi (bármely modell GPIO-támogatással, pl. Pi 3, Pi 4)
- SG90 szervomotor
- Külső áramforrás (5V, több szervó esetén opcionális)
- Próbapanel és átkötő vezetékek
- Telepített Python a Raspberry Pi-n
1. lépés: Az SG90 szervó bekötése a Raspberry Pi-hez
Az SG90 szervomotornak három kivezetése van:
| SG90 kivezetés | Raspberry Pi kivezetés | Funkció |
|---|---|---|
| VCC (piros) | 5V (2. tű) | Tápellátás |
| GND (barna) | GND (6. tű) | Földelés |
| Jel (narancssárga) | GPIO18 (12. tű) | PWM jelvezérlés |
Megjegyzés: Ha több szervót használ, alkalmazzon külső 5V-os tápegységet a Raspberry Pi 5V-os tűjének túlterhelésének elkerülése érdekében.
2. lépés: PWM engedélyezése a Raspberry Pi-n
A Raspberry Pi PWM jeleket generál a szervó pozíciójának vezérléséhez.
- Telepítse a Raspberry Pi GPIO könyvtárat (ha még nincs telepítve):
sudo apt update && sudo apt install python3-rpi.gpio - Nyisson meg egy Python szkriptszerkesztőt:
nano servo_control.py - Másolja a következő Python szkriptet az SG90 szervomotor vezérléséhez3. lépés: Python kód a szervó vezérléséhez:
import RPi.GPIO as GPIO import time # GPIO tű beállítása PWM-hez SERVO_PIN = 18 # GPIO18 használata (12. tű) GPIO.setmode(GPIO.BCM) GPIO.setup(SERVO_PIN, GPIO.OUT) # PWM indítása 50Hz frekvenciával pwm = GPIO.PWM(SERVO_PIN, 50) pwm.start(0) def set_angle(angle): duty_cycle = (angle / 18) + 2.5 # Szög átalakítása kitöltési tényezővé GPIO.output(SERVO_PIN, True) pwm.ChangeDutyCycle(duty_cycle) time.sleep(0.5) # Várakozás a szervó mozgására GPIO.output(SERVO_PIN, False) pwm.ChangeDutyCycle(0) try: while True: angle = int(input("Adja meg a szöget (0-180): ")) if 0 <= angle <= 180: set_angle(angle) else: print("Érvénytelen szög! Adjon meg egy értéket 0 és 180 között.") except KeyboardInterrupt: print("Kilépés...") pwm.stop() GPIO.cleanup()
4. lépés: A szervovezérlő szkript futtatása
Mentse el a szkriptet és lépjen ki:
-
Nyomja meg a
- CTRL+X billentyűket, majd az Y gombot, végül az ENTER-t. Futtassa a szkriptet:.
-
python3 servo_control.py
Adjon meg 0 és 180 közötti szögeket -
a szervó mozgatásához.5. lépés: A PWM megértése a szervovezérléshez
PWM frekvencia:
- Az SG90 50Hz-en működik.Kitöltési tényező számítása:.
- 0° → 2.5% kitöltési tényező
- 90° → 7.5% kitöltési tényező
- 180° → 12.5% kitöltési tényező
- Képlet:
-
duty_cycle = (angle / 18) + 2.5
6. lépés: Az
SG90 szervó alkalmazásai Raspberry Pi-velRobotkarok
- – Ízületek mozgatása.Automatizált ajtók és zárak
- – Nyitó/záró mechanizmusok szervóval.Pan-Tilt kamerarendszerek
- – Kamerák mozgatása megfigyeléshez vagy fényképezéshez.Okosotthon automatizálás
- – Karok, zárak és kapcsolók távoli vezérlése.Hibaelhárítás
Nem mozog a szervó?
-
Ellenőrizze a
- helyes bekötést (VCC, GND és GPIO18 a jelhez).Ha több szervót használ, alkalmazzon
- külső 5V-os tápegységet..
-
Szaggatott mozgás?
- Gondoskodjon stabil tápellátásról; használjon kondenzátorokat (100µF) szükség esetén.
- Használjon nagyobb pontosságú PWM vezérlést, például egy PCA9685 PWM modult több szervóhoz.
-
Engedély megtagadva hiba?
- Futtassa a szkriptet
sudohasználatával:sudo python3 servo_control.py
- Futtassa a szkriptet
Összegzés
Az SG90 szervomotor nagyszerű módja annak, hogy mozgásvezérlést adjon Raspberry Pi projektjeihez. A PWM jelek használatával precízen vezérelheti a szervó pozícióját robotikai, automatizálási és IoT alkalmazásokhoz. Kísérletezzen különböző szögekkel és alkalmazásokkal, hogy kiaknázza a benne rejlő lehetőségeket! 🚀


1 megjegyzés
Hi,
I’m considering buying some servos for a robotics and I keep seeing “analogue” and “digital” servos. If I’m using analogue servos do I need an ADC for each one, or can I plug them straight into the pi? is there even any difference? I assume this guide is for digital servos, but the pictures don’t have the “digital” label some do online