الـ SG90 محرك سيرفو هو سيرفو صغير وخفيف الوزن يُستخدم عادةً في الروبوتات والأتمتة ومشاريع الأعمال اليدوية. يتيح التحكم الدقيق في الموضع الزاوي باستخدام تعديل عرض النبضة (PWM). سيوضح لك هذا الدليل كيفية التحكم في SG90 محرك سيرفو مع Raspberry Pi باستخدام Python.
ما ستحتاج إليه
- راسبيري باي (أي نموذج يدعم GPIO، مثل Pi 3، Pi 4)
- SG90 محرك سيرفو
- مصدر طاقة خارجي (5V، اختياري لعدة سيرفو)
- لوحة تجارب وأسلاك توصيل
- تم تثبيت Python على Raspberry Pi
الخطوة 1: توصيل الأسلاك SG90 سيرفو إلى Raspberry Pi
الـ SG90 يحتوي محرك السيرفو على ثلاثة أطراف:
| SG90 دبوس | دبوس Raspberry Pi | وظيفة |
|---|---|---|
| VCC (أحمر) | 5V (الدبوس 2) | مزود طاقة |
| GND (بني) | GND (Pin 6) | أرض |
| سيجنال (برتقالي) | GPIO18 (الدبوس 12) | التحكم في إشارة PWM |
ملاحظة: إذا كنت تستخدم عدة سيرفو، استخدم مزود طاقة خارجي 5V لتجنّب زيادة الحمل على دبوس 5V في Raspberry Pi.
الخطوة 2: تمكين PWM على Raspberry Pi
حاسوب Raspberry Pi يولّد إشارات PWM للتحكم في موضع السيرفو.
- ثبّت الـ مكتبة Raspberry Pi GPIO (إذا لم يكن مثبتًا بالفعل):
sudo apt update && sudo apt install python3-rpi.gpio - افتح محرر نصوص لسكربتات Python:
nano servo_control.py - انسخ برنامج Python النصي التالي إلى تحكّم في الـ SG90 محرك سيرفو:
الخطوة 3: كود Python للتحكم في السيرفو
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: تشغيل برنامج التحكم في السيرفو
-
احفظ النص البرمجي واخرج
- اضغط CTRL+X، ثم Y، ثم إدخال.
-
شغّل البرنامج النصي
python3 servo_control.py -
أدخل زوايا بين 0 و 180 لتحريك السيرفو.
الخطوة 5: فهم PWM للتحكم في السيرفو
- تردد PWM: الـ SG90 يعمل عند 50Hz.
- حساب دورة التشغيل:
- 0° → 2.5% دورة العمل
- 90° → دورة عمل 7.5%
- 180° → دورة عمل 12.5%
-
الصيغة:
duty_cycle = (angle / 18) + 2.5
الخطوة 6: تطبيقات SG90 سيرفو مع Raspberry Pi
- أذرع روبوتية – فواصل تحكم للحركة.
- الأبواب والأقفال الأوتوماتيكية – آليات فتح/إغلاق باستخدام سيرفو.
- أنظمة الكاميرات القابلة للدوران والإمالة – حرّك الكاميرات للمراقبة أو التصوير الفوتوغرافي.
- أتمتة المنزل الذكي – تحكّم بالأذرع والأقفال والمفاتيح عن بُعد.
استكشاف الأخطاء وإصلاحها
-
المحرّك المؤازر لا يتحرّك؟
- تأكد توصيل صحيح ( VCC و GND و GPIO18 للإشارة).
- إذا كنت تستخدم عدة سيرفو، فاستخدم مصدر طاقة خارجي بجهد 5V.
-
حركات غير منتظمة؟
- ضمان طاقة مستقرة؛ استخدم المكثفات (100µF) إذا لزم الأمر.
- استخدم تحكم PWM بدقة أعلى، مثل وحدة PWM من نوع PCA9685 لعدة محركات سيرفو.
-
خطأ رفض الإذن؟
- شغّل النص البرمجي باستخدام
sudo:sudo python3 servo_control.py
- شغّل النص البرمجي باستخدام
الخلاصة
الـ SG90 محرك مؤازر طريقة رائعة لإضافة التحكم بالحركة إلى مشاريع Raspberry Pi. من خلال استخدام إشارات PWM، يمكنك التحكم بدقة في موضع السيرفو لـ تطبيقات الروبوتات والأتمتة وإنترنت الأشياء. جرّب زوايا وتطبيقات مختلفة لإطلاق إمكاناته الكاملة! 🚀


1 تعليق
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