ملخص سريع
دليل محرك سيرفو Arduino يغطي الماكينات الصغيرة SG90 وأساسيات إشارة PWM والتحكم متعدد المؤازرة مع برنامج التشغيل PCA9685 I2C. يمشي عبر أجهزة توصيل الأسلاك مباشرة إلى دبابيس Arduino، ويتحكم في الزاوية باستخدام مكتبة Servo، ويوسع ما يصل إلى 16 جهازًا أو أكثر باستخدام وحدة PCA9685. تم تضمين التعليمات البرمجية التي تم اختبارها لجميع التكوينات.
هل تريد أن تجعل محرك سيرفو يتحرك بدقة إلى أي زاوية باستخدام Arduino الخاص بك؟ سواءً كنت تبني ذراعًا روبوتية أو حامل كاميرا قابل للإمالة أو قفل باب آلي, تحكم مؤازر أردوينو هي واحدة من المهارات الأولى التي تستحق التعلم. ومع ذلك، يواجه العديد من المبتدئين نفس المشكلات: الحركة المتوترة، والأسلاك الخاطئة، والارتباك بشأن إشارات PWM ومتطلبات الطاقة.
في هذا البرنامج التعليمي، ستتعلم كيف تعمل المحركات المؤازرة فعليًا من الداخل، وكيفية توصيل وبرمجة أجهزة SG90 أو MG996R باستخدام Arduino، وكيفية التوسع في التحكم في العديد من الماكينات باستخدام لوحة التشغيل PCA9685. ونتيجة لذلك، ستكون في النهاية قد أكملت ثلاثة مشاريع عملية واكتسبت ما يكفي من الثقة لوضع الماكينات في أي إصدار.
بالإضافة إلى ذلك، تم تضمين جميع مخططات الأسلاك وأمثلة التعليمات البرمجية أدناه، حتى تتمكن من المتابعة خطوة بخطوة. وإذا كنت تريد رؤية هذه المشاريع على أرض الواقع، يوجد فيديو تعليمي في أعلى هذه الصفحة.
ما يغطيه هذا البرنامج التعليمي المؤازر
وعلى وجه التحديد، بنهاية هذا الدليل، سوف تكون قادرًا على:
- فهم كيفية عمل محركات المؤازرة داخليًا (محرك التيار المستمر، والتروس، ومقياس الجهد، والتحكم في الحلقة المغلقة)
- اشرح أيضًا كيف تتحكم إشارات PWM في موضع المؤازرة عند 50 هرتز
- بعد ذلك، قارن بين الماكينات SG90 وMG996R واختر الماكينة المناسبة لمشروعك
- توصيل وبرمجة مشروع مسح مؤازر أردوينو من الصفر
- Control a servo with a potentiometer using analogRead and map functions
- علاوة على ذلك، استخدم برنامج التشغيل المؤازر PCA9685 للتحكم في ما يصل إلى 16 سيرفو في وقت واحد
- قم بتشغيل عدة أجهزة مؤازرة بأمان دون الإضرار ب Arduino الخاص بك
- أخيرًا، قم باستكشاف مشكلات المؤازرة الشائعة وإصلاحها مثل الارتعاش والسخونة الزائدة والانقطاع عن العمل
كيف تعمل المحركات المؤازرة: الأساسيات
المحرك المؤازر هو نوع من المحركات التي تدور بزاوية محددة وتحتفظ بهذا الوضع. على عكس محرك التيار المستمر العادي الذي يدور بشكل مستمر، يستخدم المؤازرة نظام ردود فعل حلقة مغلقة لتحقيق التحكم الدقيق في الزاوية. ولهذا السبب، تعد الماكينات الاختيار الأمثل للتطبيقات التي يكون فيها تحديد الموقع الدقيق مهمًا، مثل الأذرع الآلية، وآليات التوجيه، ومحور الكاميرا.
المكونات الداخلية لمحرك سيرفو
إذا قمت بفتح جهاز هواية نموذجي، فستجد أربعة مكونات رئيسية تعمل معًا في الداخل:
- محرك تيار مستمر: أولاً، هذا هو المحرك الأساسي الذي يحول الطاقة الكهربائية إلى حركة دورانية. أنها توفر قوة الغزل الخام.
- قطار التروس: بعد ذلك، مجموعة من تروس التخفيض (البلاستيك في SG90، والمعدن في MG996R) التي تقلل من عدد دورات المحرك العالية في الدقيقة إلى إنتاج أبطأ وعزم دوران أعلى عند العمود.
- مقياس الجهد: ثم يتم توصيل مقاومة متغيرة صغيرة بعمود الخرج. يقوم باستمرار بإبلاغ الزاوية الحالية للعمود إلى دائرة التحكم.
- دائرة التحكم: أخيرًا، يوجد PCB صغير داخل المؤازرة يقارن الموضع المطلوب (من إشارة PWM) بالموضع الفعلي (من مقياس الجهد) ويدفع المحرك لسد الفجوة.


التحكم في الحلقة المغلقة: كيف يعرف المؤازرة أين يذهب
كل سيرفو يعتمد عليه التحكم في الحلقة المغلقة. باختصار، إليك كيفية العمل خطوة بخطوة:
- أولاً، يرسل Arduino إشارة PWM التي تشفر الزاوية المطلوبة.
- بعد ذلك، تقوم دائرة التحكم في السيرفو بقراءة عرض النبضة وتحسب موضع الهدف.
- بعد ذلك، تقوم دائرة التحكم بقراءة مقياس الجهد لتحديد الوضع الحالي للعمود.
- بعد ذلك، إذا كان هناك اختلاف بين الهدف والموضع الحالي، تقوم الدائرة بتشغيل محرك التيار المستمر في الاتجاه الصحيح.
- أخيرًا، بمجرد أن تتوافق قراءة مقياس الجهد مع الهدف، يتوقف المحرك ويحتفظ بوضعه.
ونتيجة لذلك، يقوم المؤازرة بتصحيح نفسه بشكل مستمر، مع الاحتفاظ بالزاوية الدقيقة حتى تحت الحمل الخارجي. حلقة التغذية الراجعة هذه هي ما يجعل الماكينات موثوقة جدًا في مجال الروبوتات.

شرح إشارة PWM المؤازرة: كيف يتحكم عرض النبضة في الزاوية
تعديل عرض النبض (PWM) هو الطريقة التي يتحدث بها Arduino مع محرك سيرفو. بدلاً من إرسال مستوى الجهد، يرسل الأردوينو سلسلة من النبضات الرقمية بتردد ثابت. في جوهر الأمر، فإن عرض كل نبضة يخبر المؤازرة بالزاوية التي يجب الانتقال إليها.
بالنسبة لماكينات الهوايات القياسية، تعمل إشارة PWM عند 50 هرتزمما يعني أن نبضة واحدة تخرج كل 20 مللي ثانية. وفي كل نافذة مدتها 20 مللي ثانية، لا يهم إلا الجزء العالي (عرض النبضة). عادةً، يتم تعيين عرض النبضة بين 1.0 مللي ثانية و2.0 مللي ثانية إلى النطاق الكامل لحركة المؤازرة من 0 إلى 180 درجة.

عرض نبض PWM مقابل جدول موضع المؤازرة
يوضح الجدول أدناه كيفية تعيين عروض النبض المختلفة لمواضع مؤازرة محددة. ضع في اعتبارك أن القيم الدقيقة يمكن أن تختلف قليلاً اعتمادًا على طراز المؤازرة:
| عرض النبض (مللي ثانية) | موضع المؤازرة | دورة التشغيل عند 50 هرتز |
|---|---|---|
| 0.5 مللي ثانية | 0 درجة (الحد الأدنى، بعض الماكينات) | 2.5% |
| 1.0 مللي ثانية | 0 درجة (الحد الأدنى القياسي) | 5% |
| 1.25 مللي ثانية | 45° | 6.25% |
| 1.5 مللي ثانية | 90 درجة (وضع الوسط) | 7.5% |
| 1.75 مللي ثانية | 135° | 8.75% |
| 2.0 مللي ثانية | 180 درجة (الحد الأقصى القياسي) | 10% |
| 2.5 مللي ثانية | 180 درجة (كحد أقصى، بعض الماكينات) | 12.5% |
تتعامل مكتبة Arduino Servo مع معظم هذا تلقائيًا. على سبيل المثال، عند الاتصال سيرفو.اكتب(90)، تولد المكتبة نبضة تبلغ 1.5 مللي ثانية عند 50 هرتز لتحريك المؤازرة إلى الموضع المركزي. ومع ذلك، فإن فهم إشارة PWM الأساسية يساعد كثيرًا عند استكشاف أخطاء الارتعاش وإصلاحها، أو معايرة النطاقات المخصصة، أو العمل مع برنامج التشغيل PCA9685.
SG90 vs MG996R: اختيار المؤازرة المناسبة لمشروعك
إن جهاز مؤازر صغير SG90 و المؤازر القياسي MG996R هما أكثر خدمات الهوايات شيوعًا في مشاريع Arduino. يعتمد الاختيار الذي تختاره على احتياجات عزم الدوران والحجم والمتانة لمشروعك. فيما يلي مقارنة جنبًا إلى جنب:

| المواصفات | جهاز مؤازر صغير SG90 | مؤازر MG996R |
|---|---|---|
| عزم دوران المماطلة | 1.2 كجم-سم عند 4.8 فولت، 1.6 كجم-سم عند 6 فولت | 11 كجم-سم عند 4.8 فولت، 13 كجم-سم عند 6 فولت |
| جهد التشغيل | 3.5 إلى 6 فولت | 4.8 إلى 7.2 فولت |
| تيار عدم التحميل | 100 مللي أمبير | 220 مللي أمبير عند 4.8 فولت، 250 مللي أمبير عند 6 فولت |
| تيار المماطلة | 650 مللي أمبير | 900 مللي أمبير عند 4.8 فولت، 1400 مللي أمبير عند 6 فولت |
| سرعة التشغيل | 0.12 ثانية لكل 60 درجة عند 4.8 فولت | 0.15 ثانية لكل 60 درجة عند 4.8 فولت |
| الوزن | 9 g | 55 g |
| نوع العتاد | تروس بلاستيكية | تروس معدنية |
| نطاق الدوران | 180° | 180° |
| حالة الاستخدام المثالية | مشاريع خفيفة الوزن، وإمالة عمومية، وروبوتات صغيرة الحجم | أذرع روبوتية ومفاصل عالية التحميل ومركبات RC |
| الإيجابيات | رخيصة وخفيفة الوزن ومنخفضة السحب للطاقة | عزم دوران عالي، تروس معدنية متينة، دقيقة |
| السلبيات | عزم الدوران المنخفض، يمكن أن تتجرد التروس البلاستيكية | أثقل وزناً، وسحب تيار أعلى، وأغلى ثمناً |
باختصار، استخدم SG90 عندما يكون الوزن والمساحة محدودين والأحمال خفيفة. اختر MG996R عندما تحتاج إلى عزم دوران حقيقي، على سبيل المثال في مشروع الذراع الروبوتية 6-DOF حيث تحمل مفاصل الكتف والمرفق أحمالاً ثقيلة. تستخدم الكثير من تصميمات الأذرع الآلية، بما في ذلك أذرعنا، مزيجًا من الاثنين معًا: MG996R لمفاصل القاعدة الثقيلة وSG90 للمعصم والمقبض الأخف وزنًا.
أجهزة اختبار المؤازرة: أداة معايرة مفيدة
قبل توصيل جهاز مؤازر إلى Arduino الخاص بك، أ جهاز اختبار المؤازرة هي أداة مستقلة سهلة الاستخدام للتحقق بسرعة من عمل المؤازرة. على وجه الخصوص، تتيح لك هذه الوحدات الرخيصة (عادةً بضعة دولارات فقط) مسح النطاق الكامل أو الاتصال في مواضع محددة باستخدام مقبض، دون أي كود أو وحدة تحكم دقيقة. إنها مفيدة بشكل خاص عند معايرة أجهزة متعددة لبناء الروبوتات.

تشغيل الماكينات بأمان: السحب الحالي والإمدادات الخارجية
أحد الأخطاء الأكثر شيوعًا التي يرتكبها المبتدئون هو تشغيل الماكينات مباشرة من طرف Arduino 5 V. على الرغم من أن هذا قد يعمل مع SG90 واحد تحت حمل خفيف، إلا أنه ليس فكرة جيدة لمعظم المشاريع. هنا هو السبب، وماذا تفعل بدلا من ذلك.
لماذا لا يتم تشغيل الماكينات من طرف Arduino 5 V؟
يمكن لمنظم Arduino Uno 5 V توفير حوالي 500 مللي أمبير فقط. ومع ذلك، يمكن لجهاز SG90 واحد سحب ما يصل إلى 650 مللي أمبير في حالة التوقف، ويمكن أن يصل جهاز MG996R إلى 1400 مللي أمبير. لذلك، إذا كان المؤازرة تتطلب تيارًا أكبر مما يمكن للمنظم توفيره، فسوف ترى انخفاضًا في الجهد يؤدي إلى إعادة ضبط Arduino أو التصرف بشكل غير متوقع.
توصيات إمدادات الطاقة الخارجية
لتشغيل الماكينات بشكل موثوق، استخدم مصدر طاقة خارجيًا مخصصًا بجهد 5 إلى 6 فولت مع تيار كافٍ. على سبيل المثال، يعمل محول 5 فولت 2 أمبير بشكل جيد مع واحدة أو اثنتين من أجهزة SG90، في حين أن مصدر الطاقة 5 فولت 10 أمبير أفضل للمشروعات التي تحتوي على ستة أجهزة أو أكثر، مثل الذراع الآلية.
اتبع دائمًا قواعد الأسلاك هذه للتحكم في محرك سيرفو Arduino:
- أرضية مشتركة: أولاً، قم بتوصيل أرضي مصدر الطاقة الخارجي بـ Arduino GND. بدون أرضية مشتركة، لن يكون لإشارة PWM أي مرجع ولن يستجيب المؤازرة.
- قضبان طاقة منفصلة: بعد ذلك، قم بتوصيل سلك (الطاقة) الأحمر الخاص بالسيرفو بالطرف الموجب للمصدر الخارجي، وليس بمنفذ Arduino 5 V.
- سلك الإشارة فقط: أيضًا، يجب أن يكون الاتصال الوحيد بين Arduino وservo هو سلك الإشارة (PWM).
- مكثفات الفصل: أخيرًا، ضع مكثفًا كهربائيًا بسعة 100 فائق التوهج عبر قضبان الطاقة بالقرب من الماكينات لتقليل ارتفاع الجهد والارتعاش.
الرسم الحالي مرجع سريع
| نموذج المؤازرة | تيار عدم التحميل | تيار المماطلة | الإمداد الموصى به لكل جهاز مؤازر |
|---|---|---|---|
| SG90 | 100 مللي أمبير | 650 مللي أمبير | 5 فولت، 1 أمبير على الأقل |
| MG996R | 220 مللي أمبير | 1400 مللي أمبير | 6 فولت، 2 أمبير على الأقل |
على سبيل المثال، يمكن لمشروع به ستة أجهزة تعمل في وقت واحد أن يتجاوز بسهولة ذروة تيار 3 أمبير. هذا هو السبب في أن مصدر الطاقة الخارجي القوي مهم جدًا لأي مشروع أجهزة Arduino جاد.
أسلاك محرك سيرفو: فهم الأسلاك الثلاثة
قبل توصيل سيرفو الخاص بك بـ Arduino، تحتاج أولاً إلى فهم الموصل ثلاثي الأسلاك الذي تستخدمه جميع سيرفو الهوايات القياسية:
| دبوس | الإشارة | لون السلك |
|---|---|---|
| 1 | أرضي (GND) | أسود أو بني |
| 2 | الطاقة (VCC، 4.8 إلى 6 فولت) | أحمر |
| 3 | إشارة التحكم (PWM) | برتقالي أو أصفر |
تتبع معظم الماكينات نفس pinout بغض النظر عن الشركة المصنعة. على وجه التحديد، يكون السلك الأرضي دائمًا على حافة واحدة، والطاقة في المنتصف، والإشارة على الحافة الأخرى. إذا لم تكن متأكدًا من أي وقت مضى، فما عليك سوى التحقق مرة أخرى من ورقة البيانات الخاصة بنموذج المؤازرة الخاص بك.
المشروع 1: عملية المسح المؤازرة لـ Arduino – أول مشروع مؤازر لك
إن رسم الاجتياح هو المشروع الكلاسيكي للمبتدئين لـ تحكم مؤازر أردوينو. في الأساس، فهو يجعل المؤازرة تدور ذهابًا وإيابًا بين 0 و180 درجة بشكل مستمر. ونتيجة لذلك، يعلمك هذا المشروع أساسيات مكتبة Arduino Servo ويؤكد أيضًا أن توصيلاتك صحيحة.
الأجزاء اللازمة لمشروع الاجتياح
- أردوينو أونو (أو أي لوحة أردوينو)
- مؤازرة صغيرة SG90 (أو ما شابهها)
- مزود طاقة خارجي 5 فولت للمُؤازر (موصى به)
- اللوح وأسلاك التوصيل
اتصالات الأسلاك الاجتياح
| سلك مؤازر | يتصل بـ |
|---|---|
| بني أو أسود (GND) | GND لـ Arduino وGND للإمداد الخارجي |
| أحمر (VCC) | مصدر إمداد خارجي 5 فولت موجب |
| برتقالي أو أصفر (إشارة) | دبوس أردوينو الرقمي 9 |

اكتساح كود اردوينو
للبدء، افتح Arduino IDE وانتقل إلى ملف، أمثلة، مؤازرة، مسحأو فقط انسخ الكود أدناه. يأتي مثال Sweep مدمجًا في مكتبة Arduino Servo القياسية.
/* Sweep
by BARRAGAN http://barraganstudio.com
This example code is in the public domain.
modified 8 Nov 2013
by Scott Fitzgerald
https://www.arduino.cc/en/Tutorial/LibraryExamples/Sweep
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15 ms for the servo to reach the position
}
}
كيف يعمل رمز الاجتياح سطرًا تلو الآخر
على الرغم من أن رسم Sweep قصير، إلا أنه يغطي جميع المفاهيم الأساسية لـ محرك سيرفو PWM أردوينو التحكم:
#include <Servo.h>– أولاً، يقوم هذا الخط باستيراد مكتبة Arduino Servo، التي تتولى جميع توقيتات PWM نيابةً عنك.سيرفو ماي سيرفو;- هذا ينشئ كائن مؤازر. يمكنك إنشاء ما يصل إلى 12 كائن مؤازر على Arduino Uno.myservo.attach(9);- بعد ذلك، يخبر هذا المكتبة بإرسال إشارات PWM على الدبوس الرقمي 9.myservo.write(pos);- ينقل هذا الأمر المؤازر إلى الزاوية المخزنة في المتغيرنقاط البيع. تتراوح القيمة من 0 إلى 180.- وأخيراً الاثنان
لـتمسح الحلقات الزاوية من 0 إلى 180 ثم تعود من 180 إلى 0، مع تأخير 15 مللي ثانية بين كل خطوة للحصول على حركة سلسة.
إذا تحرك المؤازرة في الاتجاه الخاطئ أو لم يصل إلى النطاق الكامل، فحاول ضبط التأخير أو التحقق من مصدر الطاقة لديك. وبالمثل، إذا لاحظت اهتزازًا عند نقاط النهاية، فهذا يعني عادةً أن المؤازرة لا يمكنها الوصول فعليًا إلى تلك الزوايا القصوى.
المشروع 2: التحكم في المؤازرة باستخدام مقياس الجهد (المقبض)
يستغرق مشروع المقبض التحكم في محرك سيرفو أردوينو خطوة أخرى عن طريق إضافة مقياس الجهد كجهاز إدخال. بشكل أساسي، يؤدي تدوير المقبض إلى التحكم مباشرة في زاوية المؤازرة في الوقت الفعلي. ستتعلم في هذا المشروع كيفية قراءة المدخلات التناظرية وتعيينها لمواضع مؤازرة، وهو النمط الذي ستستخدمه في جميع أنواع مشاريع الروبوتات.
الأجزاء اللازمة لمشروع المقبض
- أردوينو أونو (أو أي لوحة أردوينو)
- مؤازرة صغيرة SG90 (أو ما شابهها)
- مقياس جهد 10 كيلو أوم
- مزود طاقة خارجي 5 فولت للمُؤازر (موصى به)
- اللوح وأسلاك التوصيل
توصيلات الأسلاك المقبض
| المكوّن | دبوس أو سلك | يتصل بـ |
|---|---|---|
| GND المؤازر (بني/أسود) | GND | GND لـ Arduino وGND للإمداد الخارجي |
| مؤازر VCC (أحمر) | VCC | مصدر إمداد خارجي 5 فولت موجب |
| إشارة المؤازرة (برتقالي/أصفر) | الإشارة | دبوس أردوينو الرقمي 9 |
| دبوس مقياس الجهد 1 | دبوس خارجي | أردوينو 5 فولت |
| ممسحة مقياس الجهد | الدبوس الأوسط | دبوس أردوينو التناظري A0 |
| دبوس مقياس الجهد 3 | دبوس خارجي | شبكة GND للأردوينو |

مقبض رمز اردوينو
بعد ذلك، افتح Arduino IDE وانتقل إلى ملف، أمثلة، مؤازر، مقبض، أو استخدم الرمز أدناه:
/*
Controlling a servo position using a potentiometer (variable resistor)
by Michal Rinott http://people.interaction-ivrea.it/m.rinott
modified on 8 Nov 2013
by Scott Fitzgerald
http://www.arduino.cc/en/Tutorial/Knob
*/
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = A0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 180); // scale it for use with the servo (value between 0 and 180)
myservo.write(val); // sets the servo position according to the scaled value
delay(15); // waits for the servo to get there
}
كيف يعمل رمز المقبض: القراءة التناظرية والخريطة
في الأساس، الوظيفتان الرئيسيتان في هذا المخطط هما analogRead() و رسم خريطة():
analogRead(A0)- أولاً، يقرأ هذا جهد مقياس الجهد ويعيد قيمة بين 0 و1023 (دقة ADC 10 بت).خريطة (فال، 0، 1023، 1023، 0، 180)- بعد ذلك، يقوم هذا بتحويل النطاق من 0 إلى 1023 إلى نطاق من 0 إلى 180 درجة للمؤازرة.myservo.write(val)– أخيرًا، يتم إرسال الزاوية المعينة إلى المؤازرة.
إذا كنت تريد تحكماً أدق في موضع المؤازر، يمكنك استخدام myservo.writeMicroseconds() بدلاً من myservo.write(). يتيح لك هذا ضبط عرض النبض مباشرة بالميكروثانية (على سبيل المثال، من 1000 إلى 2000)، مما يمنحك دقة أعلى بكثير من النطاق من 0 إلى 180 درجة. وأيضًا، إذا لم يصل المؤازرة إلى النطاق الكامل عند تدوير مقياس الجهد بالكامل، فحاول تعديل قيم الخريطة قليلاً، على سبيل المثال خريطة(val, 0, 1023, 1023, 10, 170).
برنامج تشغيل مؤازر PCA9685: يمكنك التحكم في ما يصل إلى 16 سيرفو باستخدام Arduino
إن التحكم في واحد أو اثنين من الماكينات مباشرة من منافذ Arduino يعمل بشكل جيد، ولكن ماذا يحدث عندما تحتاج إلى المزيد؟ يحتوي Arduino Uno على ستة أطراف قادرة على تشغيل PWM فقط، وكل مؤازرة تستخدم واحدًا. علاوة على ذلك، فإن تشغيل أكثر من اثنين من الماكينات يمكن أن يسبب تعارضًا في التوقيت وعدم الاستقرار. هذا هو المكان محرك سيرفو PCA9685 يأتي.

ما هو PCA9685 ولماذا استخدامه؟
إن PCA9685 عبارة عن شريحة مشغل PWM ذات 16 قناة و12 بت تتصل مع Arduino عبر ناقل I2C. بدلاً من استخدام أطراف Arduino PWM، يقوم PCA9685 بإنشاء جميع إشارات PWM الستة عشر بمفرده. ونتيجة لذلك، يمكنك تحرير دبابيس Arduino لأجهزة الاستشعار والمهام الأخرى، ويمنحك جهاز PWM المخصص إشارات ثابتة للغاية بدون أي اهتزاز.
علاوة على ذلك، يمكنك ربط ما يصل إلى 62 لوحة PCA9685 في سلسلة تعاقبية على ناقل I2C واحد، والذي يمنحك نظريًا 992 قناة مؤازرة. ومن الناحية العملية، تعد لوحة واحدة تحتوي على 16 قناة أكثر من كافية لمعظم المشاريع.
شرح توصيلات اللوحة PCA9685
تحتوي لوحة الاختراق PCA9685 على هذه التوصيلات الرئيسية:
- VCC: الطاقة المنطقية (3.3 فولت أو 5 فولت من Arduino). هذا يشغّل رقاقة PCA9685 فقط، وليس الماكينات.
- GND أرضي، يجب مشاركته مع Arduino ومصدر طاقة المؤازر.
- SDA: خط بيانات I2C. وصِّل بـ Arduino A4 (Uno) أو دبوس SDA.
- SCL: خط ساعة I2C. وصِّل بـ Arduino A5 (Uno) أو دبوس SCL.
- V+: مدخل طاقة المؤازرة. قم بتوصيل مصدر طاقة خارجي من 5 فولت إلى 6 فولت هنا. يعمل هذا على تشغيل جميع قنوات المؤازر ال 16.
- OE: تمكين الإخراج. اتركه مفصولاً (مسحوب منخفض داخلياً) لإبقاء جميع المخرجات نشطة.
متى يجب استخدام PCA9685 بدلاً من التحكم المباشر في Arduino
باختصار، استخدم PCA9685 عندما تحتاج إلى ذلك التحكم في أجهزة مؤازرة متعددة باستخدام الأردوينو (أكثر من اثنين أو ثلاثة)، عندما تريد حركة خالية من الاهتزاز، أو عندما يحتاج مشروعك إلى دبابيس Arduino PWM لأشياء أخرى مثل تعتيم LED أو التحكم في سرعة المحرك. بالنسبة للمشاريع البسيطة ذات المؤازرة الواحدة، يعمل التحكم المباشر من Arduino بشكل جيد.
المشروع 3: التحكم المؤازر المزدوج باستخدام PCA9685 ومقاييس فرق الجهد
يوضح هذا المشروع كيفية التحكم في سيرفرين بشكل مستقل باستخدام لوحة التشغيل PCA9685 ومقياسي فرق الجهد. بمعنى آخر، فهو يجمع كل ما تعلمته حول الإدخال التناظري، وPWM المؤازر، واتصالات I2C في تصميم عملي واحد.
الأجزاء اللازمة لمشروع المؤازرة المزدوجة PCA9685
| المكوّن | الكمية |
|---|---|
| أردوينو أونو | 1 |
| لوحة محرك سيرفو PCA9685 | 1 |
| مؤازرة صغيرة SG90 (أو ما شابهها) | 2 |
| مقياس جهد 10 كيلو أوم | 2 |
| مصدر طاقة خارجي 5 فولت أو 6 فولت (2 أمبير على الأقل) | 1 |
| اللوح وأسلاك التوصيل | حسب الحاجة |
PCA9685 الأسلاك المؤازرة المزدوجة
| الاتصال | من | To |
|---|---|---|
| بيانات I2C | أردوينو A4 (SDA) | PCA9685 SDA |
| ساعة I2C Clock | أردوينو A5 (SCL) | PCA9685 SCL |
| قوة المنطق | أردوينو 5 فولت | PCA9685 VCC |
| أرضية مشتركة | شبكة GND للأردوينو | PCA9685 GND GND والإمداد الخارجي GND |
| طاقة مؤازرة | مصدر إمداد خارجي 5 فولت موجب | محطة PCA9685 V+ الطرفية PCA9685 |
| المؤازر 1 | موصل 3 سنون | القناة PCA9685 القناة 0 |
| المؤازرة 2 | موصل 3 سنون | قناة PCA9685 القناة 15 |
| ممسحة مقياس الجهد 1 | الدبوس الأوسط | أردوينو A0 |
| ممسحة مقياس الجهد 2 | الدبوس الأوسط | أردوينو A1 |
| دبابيس مقياس الجهد الخارجي | المسامير الخارجية | أردوينو 5 فولت و GND |

كود اردوينو PCA9685 مزدوج المؤازرة
بالنسبة لهذا المخطط، تحتاج إلى مكتبة Adafruit PWM Servo Driver. يمكنك تثبيته من Arduino Library Manager من خلال البحث عن "Adafruit PWM Servo Driver". يقرأ الكود كلاً من مقاييس الجهد ويعين قيمها لعرض النبضة المؤازرة:
/**
* Author: Omar Draidrya
* Date: 2024/05/07
* This code controls servos using the PCA9685 PWM driver and potentiometers.
*/
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
// Initialize the PCA9685 using the default address (0x40).
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
void setup() {
Serial.begin(9600); // Start serial communication for debugging purposes.
pwm.begin(); // Initialize the PCA9685 module.
// Set the frequency to 60 Hz, good for servo control.
pwm.setPWMFreq(60);
// Setup the analog pins as input.
pinMode(A0, INPUT);
pinMode(A1, INPUT);
}
void loop() {
// Read the potentiometers.
int potVal0 = analogRead(A0); // Read the first potentiometer.
int potVal1 = analogRead(A1); // Read the second potentiometer.
// Map the potentiometer values to servo pulse lengths.
int servoPos0 = map(potVal0, 0, 1023, 150, 600); // Change values 150 to 600 depending on your servo specifications.
int servoPos1 = map(potVal1, 0, 1023, 150, 600);
// Set the servo positions.
pwm.setPWM(0, 0, servoPos0); // Set servo on channel 0.
pwm.setPWM(15, 0, servoPos1); // Set servo on channel 15.
delay(20); // Small delay to reduce jitter.
}
فهم قيم نطاق النبض PCA9685
في الشيفرة أعلاه، ستلاحظ تمرير قيم مثل 150 و600 إلى تعيينPWM(). هذه ليست درجات أو ميلي ثانية. بدلاً من ذلك، فهي عبارة عن عدد PWM 12 بت من إجمالي 4096 علامة في كل دورة. على سبيل المثال، القيمة 150 تبلغ تقريبًا 0.73 مللي ثانية عرض النبضة، والقيمة 600 تساوي 2.93 مللي ثانية تقريبًا. بالنسبة لمعظم الماكينات القياسية، هناك مجموعة من 150 إلى 600 يغطي الدوران الكامل من 0 إلى 180 درجة. ومع ذلك، قد تحتاج إلى تعديل هذه القيم لمضاعفتك المحددة لتجنب طنين التوقف النهائي.
لاختبار الإعداد، قم بتحميل الكود ثم قم بتشغيل كل مقياس الجهد ببطء. تأكد من أن كل أجهزة تستجيب بشكل مستقل. إذا لم يتحرك المؤازرة، فتحقق جيدًا من اتصالات I2C وتأكد من توصيل مصدر الطاقة الخارجي بـ V+ على اللوحة PCA9685.
استكشاف أخطاء أجهزة Arduino الشائعة وإصلاحها
حتى المصنعين ذوي الخبرة يواجهون مشكلات مؤازرة بين الحين والآخر. فيما يلي المشاكل الأكثر شيوعًا وحلولها.
ارتعاش المؤازرة أو الوخز
إذا اهتز جهاز المؤازرة الخاص بك أو ارتعش بدلاً من الحفاظ على وضع ثابت، فإن السبب الأكثر ترجيحًا هو عدم استقرار مصدر الطاقة. عندما يسحب المؤازرة طفرات التيار، ينخفض جهد الإمداد للحظات، ونتيجة لذلك تفقد دائرة التحكم مرجعيتها. لإصلاح ذلك، استخدم مصدر طاقة خارجيًا مخصصًا بتيار مناسب وأضف مكثفًا كهربائيًا بسعة 100 إلى 470 فائق التوهج عبر قضبان الطاقة المؤازرة. بالإضافة إلى ذلك، يمكن أيضًا أن تسبب إشارات PWM المزعجة الصادرة عن التحكم المؤازر القائم على البرامج ارتعاشًا، وهو سبب وجيه آخر للنظر في برنامج تشغيل PWM لجهاز PCA9685.
السيرفر لا يتحرك نهائيا
إذا لم يستجب المؤازرة للأوامر، فتحقق أولاً من هذه الأشياء: تأكد من توصيل سلك الإشارة بمنفذ Arduino الصحيح القادر على PWM، وتأكد من أن الأرض مشتركة بين Arduino ومصدر طاقة المؤازرة، وتأكد من أن مصدر الطاقة قيد التشغيل فعليًا ويقدم الجهد الصحيح. تأكد أيضًا من تضمين مكتبة المؤازرة ومن إرفاق المؤازرة بشكل صحيح في الكود الخاص بك سيرفو.إرفاق(دبوس).
ارتفاع درجة حرارة المؤازرة
يحدث ارتفاع درجة حرارة المؤازرة عادةً عندما يكون المحرك متوقفًا، مما يعني أنه يحاول الحفاظ على موضعه مقابل حمل يتجاوز معدل عزم الدوران الخاص به. في هذه الحالة، يسحب المحرك تيارًا متوقفًا بشكل مستمر، مما يؤدي بالتالي إلى توليد الكثير من الحرارة. لمنع ذلك، قم إما بتقليل الحمل الميكانيكي، أو استخدام مؤازرة ذات عزم دوران أعلى، أو إضافة فترات راحة في الكود الخاص بك عن طريق فصل المؤازرة عندما لا تحتاج إلى الاحتفاظ بموضعها. على سبيل المثال، الدعوة مؤازرة.فصل() يوقف إشارة PWM ويسمح للمحرك بالاسترخاء.
مصدر طاقة صاخب وانقطاع التيار الكهربائي
عندما تتحرك أجهزة متعددة في نفس الوقت، يمكن أن يؤدي سحب التيار المدمج إلى انخفاض الجهد على مصدر طاقة ضعيف. ونتيجة لذلك، قد تتم إعادة ضبط Arduino، أو قد تومض مصابيح LED، أو قد تتحرك الماكينات بشكل متقطع. لذلك، استخدم مصدر طاقة بتصنيف تيار أعلى وأضف سعة كبيرة (470 فائق التوهج على الأقل) بالقرب من الماكينات. بالإضافة إلى ذلك، حافظ على أسلاك إمداد الطاقة قصيرة وسميكة قدر الإمكان لتقليل انخفاض الجهد.
نطاق نبض خاطئ أو دوران محدود
إذا لم يصل مؤازرك إلى النطاق الكامل من 0 إلى 180 درجة، فمن المحتمل أن تكون المشكلة هي حدود عرض النبضة في الكود الخاص بك. نظرًا لأن نماذج المؤازرة المختلفة يمكن أن تحتوي على نطاقات نبض مختلفة قليلاً، فقد تحتاج إلى تعديلها. للتحكم المباشر في Arduino، يمكنك تحديد حدود مخصصة باستخدام مؤازرة(دبوس، نبضة صغيرة، نبضة صغيرة، نبضة قصوى)على سبيل المثال مؤازرة(9، 544، 2400). وبالمثل، بالنسبة لـ PCA9685، قم بضبط الحد الأدنى والحد الأقصى لقيم عدد PWM (على سبيل المثال، 125 إلى 625 بدلاً من 150 إلى 600).
الأسلاك الأرضية خاطئة
بدون أرضية مشتركة بين Arduino ومصدر الطاقة المؤازر، لن يكون لإشارة PWM جهد مرجعي صالح. وبالتالي، قد يتجاهل المؤازرة الأوامر تمامًا أو يتصرف بشكل غير متوقع. لذا قم دائمًا بتوصيل جميع الأسلاك الأرضية معًا، سواء كنت تستخدم مصدر طاقة واحدًا أو مصادر منفصلة للأجهزة المنطقية والمؤازرة.
الأسئلة المتداولة (الأسئلة الشائعة)
كم عدد الماكينات التي يمكنني التحكم بها باستخدام جهاز Arduino Uno واحد؟
باستخدام مكتبة Servo القياسية، يمكنك التحكم في ما يصل إلى 12 جهازًا على Arduino Uno. ومع ذلك، يستخدم كل سيرفو مؤقتًا، لذا فإن تشغيل العديد من السيرفو قد يتداخل مع PWM على منافذ معينة. إذا كنت بحاجة إلى المزيد، تضيف لوحة PCA9685 16 قناة دون أي تعارض في المؤقت.
هل يمكنني استخدام محرك سيرفو بدون مكتبة؟
نعم، يمكنك فعل ذلك تقنيًا باستخدام الدالة digitalWrite() وdelayMicrothans(). لكن هذا الأسلوب أقل دقة ويمنع وحدة المعالجة المركزية. نظرًا لأن مكتبة Servo تتعامل مع التوقيت تلقائيًا، فلا يوجد سبب وجيه للقيام بذلك يدويًا.
ما الفرق بين servo.write() و servo.writeMicroMicroseconds()؟
تأخذ الدالة servo.write() زاوية درجة (0 إلى 180) وتحولها إلى عرض النبضة. في المقابل، يتيح لك servo.writeMicrothans() ضبط عرض النبض الدقيق (عادةً من 1000 إلى 2000 لنا)، حتى تحصل على تحكم أفضل في الموضع.
لماذا تصدر المؤازرة طنيناً أو اهتزازاً في مواضع معينة؟
يعني هذا عادةً أن المؤازرة قريبة من الحد الميكانيكي أو أن الإشارة غير مستقرة قليلاً. ونتيجة لذلك، تستمر حلقة التحكم في محاولة تصحيح خطأ بسيط في الموضع. ولإصلاح هذه المشكلة، اضبط نطاق نبضك لتجنب التطرف واستخدم مصدر طاقة ثابتًا.
هل يمكنني تشغيل جهاز مؤازر من بطارية 9 فولت؟
بطارية 9 فولت ليست خيارًا جيدًا للماكينات. تحتاج معظم ماكينات الهوايات إلى 4.8 إلى 6 فولت، وبالإضافة إلى ذلك، فإن بطاريات 9 فولت لها سعة تيار محدودة للغاية (حوالي 500 مللي أمبير). استخدم مصدرًا مناسبًا بجهد 5 فولت بدلاً من ذلك.
إلى ماذا يرمز PCA9685؟
PCA9685 هو رقم جزء NXP Semiconductors لوحدة تحكم PWM ذات 16 قناة و12 بت مع واجهة I2C. في مجتمع المصنعين، يتم استخدامه بشكل أساسي كمحرك مؤازر، على الرغم من أنه يمكنه أيضًا التحكم في مصابيح LED وأجهزة PWM الأخرى.
هل يمكنني استخدام الماكينات MG996R وSG90 معًا في نفس المشروع؟
نعم، وفي الواقع فإن العديد من تصميمات الأذرع الآلية تفعل ذلك بالضبط. إنهم يستخدمون ماكينات MG996R لقاعدة عزم الدوران العالي ومفاصل الكتف، وماكينات SG90 للمعصم والمقبض الأخف وزنًا. فقط تأكد من أن مصدر الطاقة الخاص بك يتعامل مع التيار المشترك.
كيف يمكنني التحكم في مؤازر الدوران المستمر باستخدام Arduino؟
تعمل أجهزة التدوير المستمر بشكل مختلف لأن عرض النبضة يتحكم في السرعة والاتجاه بدلاً من الزاوية. تقوم نبضة تبلغ 1.5 مللي ثانية بإيقاف المحرك، وتقوم النبضات الأقصر بتدويره في اتجاه واحد، وتقوم النبضات الأطول بتدويره في الاتجاه الآخر. لا يزال بإمكانك استخدام مكتبة Servo: توقف servo.write(90)، وservo.write(0) بأقصى سرعة في اتجاه واحد، وservo.write(180) بأقصى سرعة في الاتجاه الآخر.
لماذا تتم إعادة تعيين الأردوينو الخاص بي عندما يتحرك المؤازر؟
يحدث هذا لأن المؤازرة تسحب الكثير من التيار، مما يتسبب في انخفاض الجهد الذي يؤدي إلى إعادة ضبط Arduino. الحل بسيط: قم بتشغيل المؤازرة من مصدر خارجي منفصل ومشاركة الأرض فقط مع Arduino.
هل يمكنني التحكم في مؤازر عبر البلوتوث باستخدام Arduino؟
نعم. من خلال إضافة وحدة Bluetooth HC-05 أو HC-06، يمكنك إرسال أوامر زاوية مؤازرة لاسلكيًا من الهاتف أو الكمبيوتر. يستقبلهم Arduino عبر التسلسل ويحرك المؤازرة. للحصول على إرشادات كاملة، راجع دليل وحدة Bluetooth HC-05.
المصادر والمكتبات والتنزيلات
فيما يلي مرجع سريع لجميع الأدوات والمكتبات والملفات التي تحتاجها للمشاريع في هذا البرنامج التعليمي:
مكتبات الاردوينو المستخدمة
- سيرفو.ح - مدمج في Arduino IDE. لا حاجة للتثبيت. يُستخدم للمشروع 1 (الاجتياح) والمشروع 2 (المقبض).
- برنامج تشغيل مؤازر PWM PWM من Adafruit - التثبيت من مدير مكتبة Arduino. ابحث عن “Adafruit PWM Servo Driver”. يُستخدم للمشروع 3 (المؤازر المزدوج PCA9685).
- Wire.h - مدمج في Arduino IDE. مطلوب لاتصال I2C مع PCA9685.
تنزيل الكود ومخططات الأسلاك
يتم تضمين جميع رموز المشاريع الثلاثة مباشرة في هذه المقالة أعلاه. يمكنك أيضًا العثور على الملفات المصدرية ومخططات الأسلاك على موقعنا مستودع GitHub. بالإضافة إلى ذلك، يتوفر كل مخطط توصيلات في هذا البرنامج التعليمي كصورة عالية الدقة، لذلك فقط انقر بزر الماوس الأيمن ثم احفظه.
الموصى بها الدروس القادمة على OmArTronics
بمجرد أن تشعر بالراحة مع التحكم الأساسي بمؤازرة Arduino، إليك بعض المشاريع الأكثر تقدمًا التي تستحق الاستكشاف بعد ذلك:
- بناء الذراع الروبوتية ذات 6 أبعاد مختلفة - بناء ذراع روبوتية كاملة باستخدام ستة أجهزة مؤازرة يتم التحكم فيها بواسطة مقاييس الجهد.
- ذراع روبوتية يتم التحكم فيها عن طريق البلوتوث - أضف تحكماً لاسلكياً عبر البلوتوث إلى ذراعك الآلية باستخدام وحدة HC-05 وتطبيق Android مخصص.
- تحكم مؤازر مع ذراع تحكم وشاشة OLED - تحكم في الماكينات باستخدام عصا التحكم مع تغذية راجعة للموضع في الوقت الحقيقي على شاشة OLED.
- ذراع الروبوت المتحرك (OmObiArm) - اجمع بين الذراع الروبوتية وقاعدة عربة جوالة متحركة للحصول على منصة مناورة متحركة بالكامل.
- البرنامج التعليمي الكامل لوحدة البلوتوث HC-05 وحدة بلوتوث كاملة - تعلّم كل شيء عن الاتصال التسلسلي بالبلوتوث مع Arduino.
الخاتمة
في هذا البرنامج التعليمي، تعلمت كيفية عمل المحركات المؤازرة من الداخل: محرك التيار المستمر، ومجموعة التروس، وردود فعل مقياس الجهد، ونظام التحكم في الحلقة المغلقة. أنت الآن تفهم أيضًا كيف تترجم إشارات PWM عند 50 هرتز عرض النبضة إلى موضع زاوي دقيق. وأخيرًا، لقد أكملت ثلاثة مشاريع عملية: رسم Sweep للحركة الأساسية، ومشروع Knob للتحكم في الإدخال التناظري، ومشروع PCA9685 ثنائي المؤازرة للتوسيع إلى أجهزة متعددة.
على طول الطريق، تعلمت أيضًا كيفية الاختيار بين الماكينات SG90 وMG996R، وكيفية تشغيل الماكينات بأمان باستخدام الإمدادات الخارجية، وكيفية استكشاف المشكلات الشائعة وإصلاحها مثل الارتعاش، والانقطاع عن العمل، وارتفاع درجة الحرارة. باختصار، تظهر هذه المهارات في كل مشروع للروبوتات تقريبًا.
إذن ما هي خطوتك التالية؟ ضع ما تعلمته في مشروع حقيقي. على سبيل المثال، بناء أ الذراع الروبوتية التي تصنعها بنفسك هي واحدة من أفضل الطرق لتعزيز مهارات التحكم في المؤازرة لديك، وسيرشدك دليلنا خطوة بخطوة خلال عملية البناء بأكملها.
3 رأي حول “Arduino Servo Control Guide: SG90, PWM, and PCA9685”