هذا الدليل جزء من: محركات سيرفو
جميع الفيديوهات المتعلقة بمحركات السيرفو مدرجة هنا. روابط الفيديوهات الأخرى موجودة أسفل هذه المقالة.
كود أردوينو وفيديو لمتحكم السيرفو PCA9685 ذو 16 قناة و12 بت V1
في هذا الدرس، سنستعرض كيفية استخدام متحكم السرفو PCA9685 ذي 16 قناة وبدقة 12 بت من شركة NXP Semiconductor. تتيح لك هذه الوحدة التحكم بما يصل إلى 16 محرك سرفو أو تعتيم مجموعة من مصابيح LED بدقة باستخدام تعديل عرض النبضة (PWM). بنهاية هذا الدرس، سيكون لديك إعداد عملي قادر على التحكم في عدة محركات سرفو بشكل فردي أو بشكل متزامن.

لتوضيح محتوى الشرح بشكل أكبر، أشجعك على مشاهدة الفيديو المصاحب (في الفيديو عند 00:00) للحصول على عرض مرئي لعملية الإعداد والبرمجة.
شرح الأجهزة
وحدة PCA9685 هي لوحة مدمجة يمكنها التحكم في عدة محركات سيرفو عبر اتصال I2C. تحتوي على 16 قناة، مما يتيح لك توصيل ما يصل إلى 16 محرك سيرفو، لكلٍ منها إشارة تحكم خاصة. تعمل الوحدة بجهد تغذية 5V ومصممة للتعامل مع إشارات PWM، الضرورية للتحكم بدقة في موضع محركات السيرفو.
تحتوي اللوحة على دبابيس مخصصة للطاقة (VCC) والأرضي (GND) والاتصال (SDA وSCL). يُستخدم دبوس SDA لنقل البيانات، بينما يمثل دبوس SCL إشارة الساعة، ويتصلان بالدبابيس التناظرية للأردوينو A4 وA5 على التوالي. يضمن هذا الإعداد تواصلاً موثوقاً بين الأردوينو ووحدة PCA9685.
تفاصيل ورقة البيانات
| المصنّع | إن إكس بي لأشباه الموصلات |
|---|---|
| رقم القطعة | PCA9685 |
| جهد المنطق/الإدخال/الإخراج | 3.3 V إلى 5.5 V |
| جهد التغذية | 2.3 V إلى 5.5 V |
| تيار الإخراج (لكل قناة) | 25 mA كحد أقصى |
| التيار الأقصى (لكل قناة) | 100 mA كحد أقصى |
| إرشادات تردد PWM | 24 هرتز إلى 1.6 كيلوهرتز |
| عتبات منطقية للإدخال | 0.3 V (منخفض) / 0.7 V (مرتفع) |
| هبوط الجهد / Rالمصرف-المصدر (عند التشغيل)/ التشبع | 0.5 فولت كحد أقصى |
| الحدود الحرارية | -40 °C إلى 125 °C |
| حزمة | HTSSOP-28 |
| ملاحظات / متغيرات | متحكم PWM ذو 16 قناة |
- تأكد من وجود مصدر طاقة بقيمة 5 فولت وبتيار كافٍ (يوصى بتيار 1 أمبير).
- لا تزود محركات السيرفو بالطاقة مباشرة من الأردوينو لتجنب التلف.
- استخدم دبابيس I2C الصحيحة: SDA إلى A4 و SCL إلى A5.
- عدل قيم عرض النبضة وفقًا للسرفوهات الخاصة بك.
- افحص توصيل الأسلاك للتأكد من القطبية الصحيحة: GND وVCC والإشارة.
- ضع في اعتبارك استخدام مشتت حراري للتطبيقات ذات التيار العالي.
تعليمات الأسلاك

لتوصيل PCA9685 بـ Arduino، ابدأ بتوصيل مصدر الطاقة والأرضي. وصل دبوس VCC في PCA9685 بمخرج 5V في الـ Arduino. ثم وصل دبوس GND في PCA9685 بالأرضي (GND) في الـ Arduino. بعد ذلك، وصل دبوس SDA في PCA9685 بالدبوس A4 في الـ Arduino، ودبوس SCL بالدبوس A5.
بالنسبة للسيرفو، قم بتوصيل سلك الإشارة بالقناة المقابلة على PCA9685 (مثلاً CH0 للسيرفو الأول)، وسلك الطاقة بمزود طاقة منفصل (لأن السيرفو قد يتطلب تياراً أكثر مما يمكن لأردوينو توفيره)، وسلك الأرضي بالأرضي المشترك مع PCA9685. تأكد من أن أسلاك الإشارة والطاقة والأرضي مصطفة بشكل صحيح لتجنب تلف المكونات.
أمثلة برمجية وشرح تفصيلي
في قسم الإعداد في الشيفرة، نهيئ وحدة PCA9685 باستخدامpwm.begin()واضبط تردد PWM باستخدامpwm.setPWMFreq(60);. يحدد هذا تردد الاتصال لمحركات السيرفو.
void setup() {
Serial.begin(9600);
Serial.println("16 channel Servo test!");
pwm.begin();
pwm.setPWMFreq(60); // Analog servos run at ~60 Hz updates
}داخل الحلقة، نتحكم في محركات السرفو عن طريق ضبط قيم PWM المطابقة للزوايا المطلوبة. الدالةangleToPulse(int ang)يحوّل الزاوية إلى عرض نبضة مناسب، وهو أمر أساسي لتحقيق تموضع دقيق للسيرفو.
void loop() {
for( int angle =0; angle<181; angle +=20){
delay(500);
pwm.setPWM(0, 0, angleToPulse(angle) );
}
}أخيرًا، الدالةangleToPulse(int ang)يحوّل الزاوية إلى عرض النبضة باستخدام أطوال النبضة الدنيا والقصوى المحددة. يتيح لك ذلك التحكم بسهولة في موضع السرفو بناءً على الزاوية التي تريد تحقيقها.
int angleToPulse(int ang){
int pulse = map(ang,0, 180, SERVOMIN,SERVOMAX);
Serial.print("Angle: ");Serial.print(ang);
Serial.print(" pulse: ");Serial.println(pulse);
return pulse;
}عرض توضيحي / ما المتوقع
بمجرد توصيل كل شيء بشكل صحيح ورفع الكود، يجب أن ترى محرك السيرفو يتحرك عبر الزوايا المحددة بزيادات مقدارها 20 درجة. إذا لم يتصرف محرك السيرفو كما هو متوقع، فافحص الأسلاك للتأكد من الاتصالات الصحيحة وتأكد من أن مصدر الطاقة كافٍ (في الفيديو عند 12:30).
علامات زمنية للفيديو
- 00:00- مقدمة عن PCA9685
- 02:30- تعليمات الأسلاك
- 05:00- استعراض الكود
- 10:15- عرض توضيحي للتحكم في محرك السيرفو
- 12:30- استكشاف الأخطاء الشائعة وإصلاحها
هذا الدليل هو جزء من: محركات سيرفو
- التحكم في محرك سيرفو بأزرار ضغط باستخدام أردوينو
- Control a Servo Motor with a Push Button: Move Servo and Return SPB-1
- Control a Servo Motor with a Push Button: Move Servo in One Direction SPB-2
- Controlling a Servo Motor with a Push Button: Move Servo While Button Is Pressed (SPB-3)
- التحكم في محرك سيرفو باستخدام مقاوم متغير (بوتنشيوميتر) مع أردوينو
- التحكم في محرك سيرفو بواسطة بوتنشيوميتر وشاشة LCD1602 باستخدام أردوينو
- تحكم في محركات سيرفو باستخدام جهاز تحكم عن بُعد بالأشعة تحت الحمراء مع أردوينو
- تحكم في محرك سيرفو باستخدام مقاومة متغيرة
- التحكم في موضع السيرفو بإيماءات اليد لاردوينو
- Controlling Two or More Servos with Potentiometers Using an Arduino
- How to Control a 360° Servo with Three Push-Button Switches
- How to Use Continuous 360° Servo with Arduino
- Build an Arduino Servo Toggle Switch with a Push Button
الموارد والمراجع
لا توجد موارد حتى الآن.
ملفات📁
لا توجد ملفات متاحة.