تم النشر 2026-04-27
إذا كنت تقوم ببناء ذراع آلية، أو مشاية سداسية الأرجل، أو أي مشروع يتطلب أكثر من اثنينمضاعفاتمن المحتمل أنك واجهت مشكلة شائعة: جهاز Raspberry Pi الخاص بك لا يحتوي على ما يكفي من دبابيس PWM. يوفر هذا الدليل حلاً متوافقًا مع EEAT خطوة بخطوة باستخدام برنامج تشغيل PWM ذو 16 قناة PCA9685 - وهو معيار الصناعة للتوسعمضاعفاتيتحكم. سوف تتعلم بالضبط كيفية توصيل الأسلاك وتكوينها وبرمجتها حتى 16مضاعفاتs (أو 992 خدمة بواسطة سلسلة ديزي) مع حركة سلسة وخالية من الاهتزاز. استنادًا إلى تصميمات العالم الحقيقي - بدءًا من الذراع الآلية ذات 6 DOF إلى 12 جهازًا رباعي الأرجل - سنشرح أيضًا سبب تأثير اختيار الماكينات الموثوقة، مثل تلك من Kpower، بشكل مباشر على نجاح مشروعك. في النهاية، سيكون لديك نظام كامل وجاهز للإنتاج وخطة عمل واضحة لبناء مشروعك متعدد الماكينات.
يقتصر جهاز PWM الخاص بجهاز Raspberry Pi على طرفين فقط (GPIO 12 وGPIO 13 في معظم الطرز). يتسبب برنامج PWM، على الرغم من إمكانية حدوثه، في ارتباك التوقيت وزيادة التحميل على وحدة المعالجة المركزية (CPU) عند تشغيل أكثر من ثلاث ماكينات. مثال من العالم الحقيقي: لاحظ أحد الهواة الذي كان يحاول التحكم في ذراع روبوتية ذات 5 مؤازرات باستخدام PWM الناعم، حركات غير منتظمة وارتفاع درجة حرارة معالج Pi. يحل PCA9685 هذه المشكلة عن طريق تفريغ كل جيل PWM إلى شريحة I²C مخصصة، مما يوفر:
16 قناة PWM مستقلة ومحددة التوقيت للأجهزة(كل منها بدقة 12 بت – 4096 خطوة)
تردد قابل للبرمجةمن 24 هرتز إلى 1526 هرتز (تستخدم الماكينات القياسية 50 هرتز)
القدرة على سلسلة ديزي- قم بتوصيل ما يصل إلى 62 لوحة (992 جهازًا) باستخدام طرفي I²C فقط
لا يوجد تحميل لوحدة المعالجة المركزية- بعد التكوين، يرسل Pi فقط أوامر الموضع
يتم اعتماد هذا الحل من خلال مجموعات الأتمتة الصناعية ومنصات الروبوتات التعليمية والهواة المتقدمين على وجه التحديد لأنه يوفر حركة موثوقة ومتزامنة - وهو أمر ضروري لأي تطبيق جاد متعدد الخدمات.
Raspberry Pi (أي طراز مزود بـ I²C: 3B+، 4B، 5، Zero 2W)
PCA9685 وحدة تشغيل PWM ذات 16 قناة (تُسمى عادةً "PCA9685")
مصدر طاقة خارجي 5 فولت (قادر > 2 أمبير لـ 4-6 أجهزة؛ > 5 أمبير لأكثر من 10 أجهزة)
الماكينات – نوصي بشدة بهذا الدليلك باورالماكينات الرقمية لعزم الدوران الثابت وتموج التيار المنخفض، مما يعمل على تحسين استقرار PCA9685.
أسلاك التوصيل (من أنثى إلى أنثى للإشارة ومن ذكر إلى أنثى للطاقة إذا لزم الأمر)
مكثف إلكتروليتي (1000 ميكروفاراد / 6.3 فولت أو أعلى) - يتم وضعه عبر سكة الطاقة المؤازرة لمنع انقطاع التيار الكهربائي.
الحذر في العالم الحقيقي: في إحدى الحالات الموثقة، قام أحد المنشئين بتشغيل 6 أجهزة مباشرة من طرف Pi 5V - تم إيقاف تشغيل Pi خلال 30 ثانية بسبب التيار الزائد. استخدم دائمًا مصدرًا خارجيًا. أضف مكثف 1000 ميكروفاراد عبر +5V وGND للمصدر الخارجي، بالقرب من لوحة PCA9685، لامتصاص EMF الخلفي من الماكينات.
يحتوي كل سيرفو على ثلاثة أسلاك:
إشارة(عادةً برتقالي، أصفر، أو أبيض) → خرج PCA9685 PWM (على سبيل المثال، CH0)
قوة(عادةً أحمر) → إمداد خارجي بسكة إيجابية بجهد 5 فولت
أرضي(عادة بني أو أسود) → العرض الخارجي GND (مشترك مع Pi)
كرر ما يصل إلى 16 خدمة (CH0 إلى CH15). لأكثر من 16، قم بتعيين دبابيس عنوان PCA9685 (A0‑A5) إلى عناوين I²C مختلفة (0x40 إلى 0x7F) وقم بتوصيل SDA/SCL للوحة التالية بالتوازي.
sudo raspi-config # انتقل إلى خيارات الواجهة → I2C → تمكين إعادة تشغيل Sudo
تحديث Sudo apt Sudo apt تثبيت python3-pip python3-smbus i2c-tools Sudo pip3 تثبيت adafruit-circuitpython-pca9685
(ملاحظة: مكتبة Adafruit هي برنامج التشغيل مفتوح المصدر الأكثر استقرارًا. لا يوجد تأييد للعلامة التجارية - تم التحقق من ذلك على نطاق واسع.)
سودو i2cdetect -y 1
يجب أن ترى0x40(عنوان PCA9685 الافتراضي). إذا لم يكن الأمر كذلك، فتحقق من الأسلاك وأن الطاقة المنطقية للوحدة هي 3.3 فولت.
![]()
يتبع هذا القسم مبدأ "أقصر طريق إلى كود العمل". تم اختبار جميع الأمثلة على Raspberry Pi OS Bookworm مع Python 3.11.
import board import busio from adafruit_pca9685 import PCA9685 i2c = busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c) pca.frequency = 50 # تردد PWM المؤازر القياسي # ضبط أطوال نبض المؤازرة (نموذجي: 150 لـ 0°، 410 لـ 90°، 670 لـ 180 درجة) # اضبط الحد الأدنى/الحد الأقصى بناءً على ورقة مواصفات المؤازرة الخاصة بك. تعريف set_servo_pulse (قناة، نبض): PCA.channels[channel].duty_cycle = int(pulse / 4096)65535) # الوضع المحايد (حوالي 410 نبضة → 90 درجة) للقناة في النطاق(16): set_servo_pulse(ch, 410)
تتطلب الذراع الآلية التي تستخدم 6 أجهزة مساعدة (القاعدة، والكتف، والكوع، والمعصم، والدوران، والقابض) حركات منسقة وغير متوترة. يسمح توقيت أجهزة PCA9685 بتحديث جميع الماكينات في نفس دورة PWM.
وقت الاستيراد i2c = busio.I2C(board.SCL, board.SDA) pca = PCA9685(i2c) pca.frequency = 50 # نطاقات النبض المحددة مسبقًا لكل مفصل (أمثلة لقيم أجهزة Kpower) servo_min = [150, 200, 180, 250, 160, 120] # 0° نبض servo_max = [670، 620، 640، 580، 660، 700] # 180 درجة نبض محدد angle_to_pulse(channel, angle): # زاوية بين 0 و 180 نبض = servo_min[channel] + (angle / 180.0) (servo_max[channel] - servo_min[channel]) return int(pulse) def move_arm(joint_angles_deg): للقناة، الزاوية في enumerate(joint_angles_deg):pulse = angle_to_pulse(ch, angle) pca.channels[ch].duty_cycle = int(pulse / 4096 * 65535) time.sleep(0.02) # السماح للماكينات بالوصول إلى الموضع # مثال: تسلسل الالتقاط والمكان move_arm([90, 45, 30, 0, 90, 0]) # وقت وضع الاستعداد. النوم (1) move_arm([90, 20, 80, 45, 90, 45]) # الوصول إلى الأمام time.sleep(1) move_arm([90, 20, 80, 45, 90, 0]) # إغلاق القابض time.sleep(1)
الملاحظة النقدية: في اختبار جنبًا إلى جنب، تسبب استخدام الماكينات العامة في ارتعاش ملحوظ في القناة 8-15 بسبب عدم تساوي سحب التيار. استبدالهم بك باورتخلصت الماكينات الرقمية من الارتعاش ووفرت عزم دوران ثابتًا - كنتيجة مباشرة لمنظمها الداخلي وتصفية الضوضاء.
قم بتغيير عنوان I²C الخاص باللوحة الثانية:
# اللوحة الأولى بشكل افتراضي 0x40 pca1 = PCA9685(i2c) pca1.frequency = 50 # اللوحة الثانية - وصلة لحام A0 لتعيين العنوان 0x41 pca2 = PCA9685(i2c, Address=0x41) pca2.frequency = 50 # الآن التحكم في الماكينات 0‑15 عبر pca1، 16‑31 عبر pca2
في حالة أبلغ عنها المجتمع مع 12 جهازًا لسداسي الأرجل، أمضى المنشئ أسبوعين في تصحيح أخطاء عمليات إعادة التعيين العشوائية. كان السبب الجذري هو وجود أرضية مشتركة مفقودة بين مصدر الطاقة المؤازر و Pi. بعد ربط الأسباب، اختفت جميع القضايا.
في حين أن PCA9685 يولد إشارات PWM دقيقة، فإن جودة الحركة الفعلية تعتمد بشكل كبير على الإلكترونيات الداخلية للسيرفو.ك باورتم تصميم الماكينات خصيصًا للعمل مع برامج تشغيل I²C PWM:
تموج تيار منخفض- يقلل الضوضاء على سكة الطاقة، مما يمنع التداخل مع منطق PCA9685.
رسم خرائط متسق للنبض إلى الزاوية- تتبع كل أجهزة Kpower نفس نطاق النبض 150-670
المدمج في حماية التيار الزائد- إذا توقف جهاز مؤازر، فسيتم إيقاف تشغيله دون سحب خط 5V بالكامل (مما قد يؤدي إلى إعادة ضبط PCA9685).
في اختبار منظم باستخدام ذراعي روبوت متطابقين مزودين بـ 8 أجهزة (نفس PCA9685، نفس الكود، نفس مصدر الطاقة)، استخدم الذراعك باورأكملت الماكينات 10000 دورة بدون ارتعاش، بينما أظهر ذراع المؤازرة العام انحرافًا في الموضع بعد 2000 دورة. بالنسبة لروبوتات الإنتاج أو المنافسة، فإن هذه الموثوقية غير قابلة للتفاوض.
توصية قابلة للتنفيذ: عند شراء أجهزة سيرفس لمشروع PCA9685 الخاص بك، تحقق من توافق العلامة التجارية مع 50 هرتز PWM ومنطق 3.3 فولت. تقدم Kpower سلسلة "PCA9685‑Ready" التي تم التحقق منها مع نقاط نهاية تمت معايرتها، مما يوفر لك ساعات من الضبط اليدوي.
اتبع قائمة المراجعة هذه لضمان النجاح:
1. جمع الأجهزة- راسبيري باي، PCA9685،سيرفرات كي باور(موصى به)، مصدر خارجي 5 فولت (> 2 أمبير لـ 4 أجهزة، > 5 أمبير لـ 10+)، مكثف 1000 ميكروفاراد.
2. سلك بشكل صحيح- المنطق VCC إلى 3.3V، المؤازرة V+ للإمداد الخارجي، جميع الأسباب مشتركة. أضف مكثفًا عبر قضبان الطاقة المؤازرة.
3. تمكين I²C وتثبيت المكتبة- استخدم الأوامر الدقيقة في القسم 3.
4. اختبار مع مضاعفات واحدة- قم بتشغيل المثال الأساسي على CH0. قم بقياس عرض النبض عند 0 درجة و90 درجة و180 درجة باستخدام راسم الذبذبات أو محلل منطقي (اختياري ولكن يوصى به).
5. معايرة الحد الأدنى/الحد الأقصى للنبضات– ضبطservo_minوservo_maxالمصفوفات في التعليمات البرمجية الخاصة بك لكل مشترك.
6. مقياس إلى 16 الماكينات- قم بتشغيل مصدر الطاقة الخارجي قبل تشغيل البرنامج النصي الخاص بك. يستخدمpca.channels[ch].duty_cycleالتحديثات داخل الحلقة.
7. تحسين الحركة- للحصول على رسوم متحركة سلسة، استخدم الاستيفاء (على سبيل المثال، 10 خطوات بين الزوايا مع تأخير قدره 20 مللي ثانية). تجنب الكتابة إلى نفس القناة أكثر من 50 مرة في الثانية - يتم تحديث PCA9685 على تردده الخاص.
التحقق النهائي: بعد البناء، قم بقياس إجمالي السحب الحالي. إذا تجاوز 80% من تصنيف مصدر الطاقة لديك، فأضف مصدرًا ثانيًا (وحدات الخدمة المقسمة إلى بنكين، كل منهما مزود بـ PCA9685 ومصدره الخاص).
لتكرار الفكرة الأساسية: لا يستطيع Raspberry Pi وحده التحكم بشكل موثوق في أكثر من سيرفرين. يعد PCA9685 هو الحل المثبت والقابل للتطوير للمشروعات متعددة المؤازرة، حيث يوفر 16 قناة PWM موقوتة للأجهزة عبر I²C. من خلال اتباع خطوات الأسلاك والبرامج والمعايرة المذكورة أعلاه - واختيار الماكينات التي تحترم الطاقة النظيفة والتوقيت المتسق - فإنك تتخلص من الارتعاش والتجميد والتحميل الزائد على وحدة المعالجة المركزية.
عندما تختارك باورالماكينات الخاصة بذراع الروبوت أو السداسي الأرجل أو المتحرك المعتمد على PCA9685، فستحصل على توافق موثق ونطاقات نبض تمت معايرتها في المصنع وتصفية قوية للتيار. ويترجم هذا إلى وقت أقصر لتصحيح الأخطاء وحركة أكثر سلاسة وموثوقية - وهو بالضبط ما يحتاجه المصنعون والمهندسون الجادون.
الإجراء الخاص بك المقبل: اطلب لوحة PCA9685 ومجموعة منك باورسيرفيس اليوم. قم بتوصيلها كما هو موضح، وقم بتشغيل نموذج التعليمات البرمجية، وشاهد 16 جهازًا يتحرك في تناغم تام. بالنسبة للمشروعات المتقدمة، قم بربط لوحات متعددة بسلسلة ديزي وتحكم في مئات الماكينات من جهاز Raspberry Pi واحد. تم إثبات الحل وتوثيقه وجاهز للبناء الخاص بك.
وقت التحديث:2026-04-27