. SG90 Servo Motoru Robotik, otomasyon ve DIY projelerinde yaygın olarak kullanılan küçük, hafif bir servodur. Kullanılarak açısal konumun hassas kontrolüne izin verir Darbe Genişlik Modülasyonu (PWM). Bu kılavuz size nasıl kontrol edileceğini gösterecektir. Ahududu Pi ile SG90 Servo Motoru Python kullanma.
Ne İhtiyacınız Olacak
- Ahududu pi (GPIO destekli herhangi bir model, örneğin Pi 3, Pi 4)
- SG90 Servo Motoru
- Harici güç kaynağı (5V, çoklu servolar için isteğe bağlı)
- Breadboard ve jumper telleri
- Python yüklü Raspberry Pi'de
1. Adım: SG90 servosunun Raspberry Pi'ye bağlanması
. SG90 Servo motorunun üç pimi vardır:
SG90 PIN | Raspberry Pi Pimi | İşlev |
---|---|---|
VCC (kırmızı) | 5V (pim 2) | Güç kaynağı |
GND (kahverengi) | GND (pim 6) | Zemin |
Sinyal (turuncu) | GPIO18 (pim 12) | PWM sinyal kontrolü |
Not: Birden fazla servo kullanıyorsanız, bir Harici 5V güç kaynağı Raspberry Pi’nin 5V pimini aşırı yüklemekten kaçınmak için.
2. Adım: Raspberry Pi'de PWM'yi etkinleştirin
Raspberry Pi PWM sinyalleri oluşturur Servo konumunu kontrol etmek için.
- Kurun Raspberry Pi GPIO Kütüphanesi (zaten yüklü değilse):
sudo apt update && sudo apt install python3-rpi.gpio
- Bir Python Script Düzenleyicisi açın:
nano servo_control.py
- Aşağıdaki Python betiğini şu adrese kopyalayın. SG90 Servo motorunu kontrol edin:
Adım 3: Servoyu kontrol etmek için Python kodu
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. Adım: Servo Kontrol Komut Dosyasını Çalıştırma
-
Komut dosyasını kaydedin ve çıkın:
- Basmak Ctrl+x, Daha sonra Y, Daha sonra GİRMEK.
-
Komut dosyasını çalıştırın:
python3 servo_control.py
-
0 ile 180 arasında açılar girin Servoyu taşımak için.
Adım 5: Servo kontrolü için PWM'yi anlamak
- PWM frekansı: SG90 şu adreste çalışıyor 50Hz.
-
Görev Döngüsü Hesaplaması:
- 0 ° →% 2.5 görev döngüsü
- 90 ° →% 7,5 görev döngüsü
- 180 ° →% 12.5 görev döngüsü
-
Formül:
duty_cycle = (angle / 18) + 2.5
Adım 6: SG90 Servo'nun Raspberry Pi ile Uygulamaları
- Robot kolları - Hareket için kontrol eklemleri.
- Otomatik Kapılar ve Kilitler - Servo kullanarak mekanizmaları açın/kapatın.
- Pan-Tilt Kamera Sistemleri - Kameraları gözetim veya fotoğrafçılık için hareket ettirin.
- Akıllı ev otomasyonu - Kontrol kollarını, kilitleri ve anahtarları uzaktan kontrol edin.
Sorun giderme
-
Servo hareket etmiyor mu?
- Emin olmak Doğru Kablolama (Sinyal için VCC, GND ve GPIO18).
- Birden fazla servo kullanıyorsanız, bir Harici 5V güç kaynağı.
-
Düzensiz hareketler?
- İstikrarlı güç sağlamak; kullanmak Kapasitörler (100µF) Gerekirse.
- Kullanmak Daha yüksek hassasiyetli PWM kontrolü, gibi PCA9685 PWM Modülü Birden fazla servo için.
-
İzin Hatayı reddetti mi?
- Senaryoyu çalıştırın
sudo
:sudo python3 servo_control.py
- Senaryoyu çalıştırın
Çözüm
. SG90 Servo Motoru eklemenin harika bir yolu hareket kontrolü Raspberry Pi projelerine. Kullanarak PWM sinyalleri, Servo'nun konumunu tam olarak kontrol edebilirsiniz. Robotik, otomasyon ve IoT uygulamaları. Tam potansiyelinin kilidini açmak için farklı açılar ve uygulamalarla deney yapın! 🚀