تم النشر 2026-04-08
يوفر هذا الدليل حلاً عمليًا تم اختباره ميدانيًا للتحكم في ما يصل إلى 20مضاعفاتيتم استخدام جهاز كمبيوتر ذو لوحة واحدة في نفس الوقت مثل Raspberry Pi. ربط أكثر من اثنين مباشرةمضاعفاتيؤدي توصيل دبابيس GPIO إلى انخفاض الجهد وتعارض توقيت PWM وتلف اللوحة. الطريقة الموثوقة هي استخدام وحدة تشغيل PWM مخصصة (على سبيل المثال، PCA9685). ستجد أدناه الإعداد الدقيق للأجهزة، ومخططات الأسلاك، وحسابات الطاقة، ورمز Python، وخطوات استكشاف الأخطاء وإصلاحها - وكلها تعتمد على مشاريع الروبوتات والإلكترونيات المتحركة الشائعة في العالم الحقيقي.
الحد الحالي: يوفر كل طرف GPIO 16 مللي أمبير بحد أقصى، بينما يسحب المؤازرة القياسية 150-500 مللي أمبير عند التحرك. تتطلب 20 وحدة سيرفو أكثر من 10 أمبير، وهو ما يتجاوز بكثير سعة السكك الحديدية للوحة البالغة 3.3 فولت/5 فولت.
الحد الأقصى للأجهزة PWM: يحتوي Raspberry Pi على قناتين PWM للأجهزة فقط (GPIO 18 و19). يقدم برنامج PWM الموجود على دبابيس أخرى الارتعاش والتحميل الزائد لوحدة المعالجة المركزية لـ 20 جهازًا.
انهيار الجهد: سيؤدي تشغيل 20 سيرفو من طرف 5V باللوحة إلى انخفاض فوري في الجهد، مما يؤدي إلى إعادة ضبط النظام.
استخدموحدة تشغيل PWM المعتمدة على I²C(يعد PCA9685 ذو 16 قناة هو المعيار الصناعي). قم بتوصيل وحدتين من هذه الوحدات (تتعامل كل منهما مع ما يصل إلى 16 جهازًا) أو وحدة واحدة بالإضافة إلى معدد الإرسال. يستخدم هذا الدليل لوحتين PCA9685 (إجمالي 32 قناة، باستخدام 20 فقط).
كمبيوتر واحد ذو لوحة واحدة (Raspberry Pi 3B+ أو أحدث)
2 PCA9685 لوحات تشغيل PWM ذات 16 قناة و12 بت
20 خدمة قياسية 5 فولت (على سبيل المثال، SG90، أو MG90S، أو MG996R - اختر بناءً على احتياجات عزم الدوران)
1 مصدر طاقة خارجي 5 فولت تيار مستمر - احسب التيار: 20 سيرفو × 0.5 أمبير = 10 أمبير كحد أدنى. استخدم أ10A – 15A إمداد منظم بجهد 5 فولت.
المكثفات: 2 × 1000 ميكرو فاراد إلكتروليتية (≥10 فولت) لتنعيم الطاقة
أسلاك التوصيل (أنثى إلى أنثى لـ I²C، وذكر إلى أنثى للاتصالات المؤازرة)
الألواح أو الكتل الطرفية لتوزيع الطاقة
الخطوة 1 - اتصال I²C بين Raspberry Pi وPCA9685 الأول
Pi 3.3V → VCC لـ PCA9685 (ملاحظة: بعض الوحدات تقبل منطق 5 فولت؛ تحقق من الوحدة الخاصة بك. بالنسبة للوحدات المنطقية 5 فولت، استخدم Pi 3.3 فولت فقط إذا كانت الوحدة متسامحة مع 3.3 فولت. أكثر أمانًا: قم بتوصيل VCC بمنفذ 5 فولت الخاص بـ Pi فقط إذا أكدت ورقة بيانات الوحدة تحمل 5 فولت. تعمل معظم لوحات PCA9685 مع منطق 3.3 فولت I²C ولكنها تحتاج إلى 5 فولت لـ سيرفو V+ – راجع الخطوة التالية.)
الأسلاك القياسية الصحيحة (لـ 99% من لوحات PCA9685):
Pi 5V (دبوس 2 أو 4) → PCA9685 VCC (الطاقة لمنطق الشريحة - نعم، يعمل الكثير منها على منطق 5V)
باي GND → PCA9685 GND
بي SDA (GPIO 2) → PCA9685 SDA
بي إس سي إل (GPIO 3) → PCA9685 إس سي إل
الخطوة 2 - الطاقة الخارجية للماكينات
مصدر إمداد خارجي 5 فولت (10A+) موجب (+) → محطة PCA9685 V+ (غالبًا ما يطلق عليها "V+" أو "طاقة مؤازرة")
العرض الخارجي GND → PCA9685 GND (يجب مشاركة أرضية مشتركة مع Pi - قم بتوصيل Pi GND إلى PCA9685 GND كما هو موضح أعلاه)
ضع مكثف 1000 درجة فهرنهايت عبر V+ وGND بالقرب من PCA9685 لامتصاص طفرات EMF الخلفية.
الخطوة 3 – توصيل الماكينات
الأحمر (الطاقة) لكل مؤازرة → PCA9685 V + السكك الحديدية (استخدم سكة الطاقة اللوح)
مؤازرة بني/أسود (GND) → PCA9685 GND السكك الحديدية
مؤازرة برتقالية/أصفر (إشارة) → دبوس إخراج PCA9685 PWM (من 0 إلى 15 على اللوحة الأولى، ومن 0 إلى 3 على اللوحة الثانية)
الخطوة 4 - PCA9685 الثاني
قم بتعيين عنوان I²C للوحة الثانية: قم بلحام وصلات العبور الخاصة بالعنوان. العنوان الافتراضي لـ PCA9685 هو 0x40. بالنسبة للوحة الثانية: وصلة اللحام A0 → يصبح العنوان 0x41.
قم بتوصيل SDA/SCL/GND/VCC للوحة الثانية بالتوازي مع اللوحة الأولى (نفس ناقل I²C).
قم بتوصيل V+ بنفس مصدر 5V الخارجي.
تمكين I²C على Pi:
sudo raspi-config # خيارات الواجهة → I2C → نعم sudo reboot
تثبيت المكتبات المطلوبة:
تحديث Sudo apt Sudo apt تثبيت python3-pip python3-smbus i2c-tools Sudo pip3 تثبيت adafruit-circuitpython-pca9685
التحقق من أجهزة I²C:
سودو i2cdetect -y 1
يجب أن تشاهد 0x40 و0x41 (إذا تم توجيه اللوحة الثانية بشكل صحيح).
قم بإنشاء ملفservo_control.py:
وقت الاستيراد import board import busio from adafruit_pca9685 import PCA9685 # تهيئة I2C bus i2c = busio.I2C(board.SCL, board.SDA) # أول PCA9685 على العنوان 0x40 pca1 = PCA9685(i2c, Address=0x40) pca1.frequency = 50 # 50 هرتز للماكينات القياسية # Second PCA9685 على العنوان 0x41 pca2 = PCA9685(i2c, Address=0x41) pca2.frequency = 50 # نطاق عرض نبض المؤازرة (نموذجي من 500 إلى 2500 ميكروثانية) # تحويل إلى دورة الخدمة: Duty =pulse_us / 2000065535 def angle_to_duty(angle, min_us=500, max_us=2500): النبض = min_us + (الزاوية / 180.0)(max_us - min_us) return int((pulse / 20000.0) * 65535) # التحكم في أي مؤازرة عن طريق اللوحة والقناة def set_servo(board,channel, angle): if angle 180: angle = 180 board.channels[channel].duty_cycle = angle_to_duty(angle) # مثال: انقل جميع الماكينات العشرين إلى 90 درجة servos = [(pca1, i) for i in range(16)] + [(pca2, i) for i in range(4)] # إجمالي 20 للوحة، ch في الماكينات: set_servo(board, ch, 90) time.sleep(0.01) # stagger لتقليل زيادة التيار # اكتساح المؤازرة على اللوحة 1 القناة 0 من 0 إلى 180 print("مؤازرة كاسحة على اللوحة 1 ch0") للزاوية في range(0, 181, 10): set_servo(pca1, 0, angle) time.sleep(0.05) # حرر جميع الماكينات (توقف عن إرسال PWM) - مهم لمنع الارتعاش pca1.deinit() pca2.deinit()
حالة حقيقية: قام أحد الهواة ذات مرة بتوصيل 10 أجهزة مؤازرة مباشرة بمصدر طاقة 5 فولت/3 أمبير. أثناء الحركة المتزامنة، انخفض الجهد إلى 3.8 فولت، وتوقفت الماكينات، وتم إعادة تشغيل Raspberry Pi. حل:استخدم مصدرًا منظمًا بقدرة 5 فولت/15 أمبير(على سبيل المثال، مصدر طاقة LED أو سكة 5 فولت لمصدر طاقة ATX للكمبيوتر). يضيفالمكثفات الكبيرة(1000 درجة فهرنهايت لكل 5-8 خدمات) بالقرب من كل لوحة للقيادة.
قاعدة قابلة للتنفيذ: احسب الحد الأقصى للتيار المتزامن. إذا تحركت جميع الماكينات العشرين مرة واحدة، فافترض أن 10A. للسلامة، أضف هامشًا بنسبة 30٪ ←13A الحد الأدنى. استخدم 14AWG أو أسلاك أكثر سمكًا لتوزيع الطاقة.
ليست كل الماكينات لها نفس الحد الأدنى/الحد الأقصى للنبض. القيم المشتركة:
500 ميكروثانية (0 درجة) – 2500 ميكروثانية (180 درجة) للماكينات التناظرية
600 ميكروثانية (0 درجة) – 2400 ميكروثانية (180 درجة) للعديد من الماكينات الرقمية
للمعايرة: اكتب نصًا اختباريًا يمتد من 300 إلى 2700 ميكروثانية، وابحث عن الحدود الميكانيكية، ثم قم بالتحديثناقصوmax_usفي الوظيفة أعلاه.
حركة ترنح: لا تأمر جميع الماكينات بتغيير الزاوية بنفس الميكروثانية تمامًا. يضيفوقت النوم (0.005)بين كلset_servoيتصل. وهذا يقلل من ذروة التيار عن طريق توزيع الحمل.
معدل التحديث: 50 هرتز (فترة 20 مللي ثانية) هو المعيار. لا تقم بزيادة التردد فوق 100 هرتز - ستسخن معظم الماكينات.
استخدام وحدة المعالجة المركزية: يقوم جهاز PCA9685 بإنشاء PWM بشكل مستقل. يرسل برنامج Python النصي أوامر I²C فقط في كل مرة تقوم فيها بتغيير الزوايا. بالنسبة للمواضع الثابتة، يمكن الخروج من البرنامج النصي - تحتفظ الماكينات بالموضع الأخير طالما يتم تطبيق الطاقة.
1. مكونات النظام- لوحتان PCA9685، 20 سيرفو، مصدر طاقة 5 فولت/15 أمبير، مكثفات 1000 ميكروفاراد.
2. اختبار مع مضاعفات واحدة- قم بتوصيل جهاز مؤازر واحد إلى PCA9685 الأول، وقم بتشغيل رمز المسح.
3. أضف مصدر الطاقة- قم بتوصيل 5V/15A خارجي بسكة V+، وتحقق من تحركات المؤازرة بقوة.
4. مقياس إلى 5 الماكينات- إضافة المزيد من السيرفرات تدريجياً، مع مراقبة درجة حرارة أسلاك إمداد الطاقة.
5. أضف PCA9685 الثاني- اضبط العنوان على 0x41، وقم بتوصيل 4 أجهزة، واختبار.
6. اختبار كامل لـ 20 مؤازرة– قم بتشغيل الكود المقدم لتحريك جميع الماكينات إلى 90 درجة، ثم مسح بطيء لجميع القنوات.
لا يمكنك التحكم في 20 جهازًا مباشرًا من GPIO الخاص بـ Raspberry Pi - استخدم لوحات تشغيل PCA9685 PWM مع مصدر طاقة مخصص عالي التيار 5 فولت.يتم استخدام هذه الطريقة في الآلاف من الرسوم المتحركة الحقيقية والروبوتات السداسية ومشاريع الأتمتة. إنها موثوقة وقابلة للتطوير وموثقة جيدًا. ابدأ باختبار صغير، وتحقق من استقرار الطاقة، ثم قم بتوسيع نطاقه. يعتمد نجاحك على التأريض المناسب والتيار الكافي - وكلاهما غير قابل للتفاوض.
اتخذ الإجراء الآن: قم بتوصيل PCA9685 واحد بمزود مؤازر واحد ومصدر خارجي بجهد 5 فولت. بمجرد أن ينجح ذلك، قم بإضافة الباقي. سيكون لديك نظام مستقر مكون من 20 مؤازرة خلال ساعتين من التجميع.
وقت التحديث: 2026-04-08