- المكونات مطلوبة
- وصف الدبوس لمحرك سيرفو
- مخطط الرسم البياني
- التحكم في محرك سيرفو مع AVR ATmega16
- برمجة Atmega16 باستخدام USBasp
تُستخدم المحركات المؤازرة على نطاق واسع حيث يلزم التحكم الدقيق مثل الروبوتات والآلات الآلية والذراع الآلي وما إلى ذلك ، ومع ذلك ، لا يقتصر نطاق محرك المؤازرة على هذا القدر ويمكن استخدامه في العديد من التطبيقات. لمعرفة المزيد عن الأساسيات والنظرية ومبدأ العمل للمحرك المؤازر ، اتبع الرابط.
لقد قمنا سابقًا بتوصيل محرك مؤازر مع العديد من وحدات التحكم الدقيقة:
- ربط محرك سيرفو مع ARM7-LPC2148
- ربط محرك سيرفو مع MSP430G2
- ربط محرك سيرفو مع STM32F103C8
- ربط محرك سيرفو مع متحكم PIC باستخدام MPLAB و XC8
- توصيل محرك سيرفو مع اردوينو اونو
- محرك سيرفو يتفاعل مع متحكم 8051
في هذا البرنامج التعليمي ، سنقوم بواجهة Micro Servo Motor مع Atmega16 AVR Microcontroller باستخدام Atmel Studio 7.0. تم تصنيف محرك سيرفو للعمل في 4.8-6V. يمكننا التحكم في زاوية الدوران والاتجاه من خلال تطبيق قطار النبض أو إشارات PWM. لاحظ أن محركات المؤازرة لا يمكنها التحرك لدوران كامل بمقدار 360 درجة ، لذلك يتم استخدامها حيث لا يلزم الدوران المستمر. زاوية الدوران هي 0-180 درجة أو (-90) - (+90) درجة.
المكونات مطلوبة
- SG90 تاور برو مايكرو سيرفو موتور
- متحكم Atmega16 IC
- 16 ميجا هرتز الكريستال المذبذب
- اثنين من المكثفات 100nF
- مكثفتان 22pF
- اضغط الزر
- أسلاك توصيل
- اللوح
- USBASP v2.0
- Led (أي لون)
وصف الدبوس لمحرك سيرفو
- أحمر = مصدر طاقة إيجابي (4.8 فولت إلى 6 فولت)
- بني = أرضي
- البرتقالي = إشارة التحكم (PWM Pin)
مخطط الرسم البياني
قم بتوصيل جميع المكونات كما هو موضح في الرسم البياني أدناه لتدوير محرك سيرفو باستخدام متحكم AVR. هناك أربعة دبابيس PWM ، يمكننا استخدام أي دبوس PWM من Atmega16. في هذا البرنامج التعليمي ، نستخدم Pin PD5 (OC1A) لتوليد PWM. PD5 متصل مباشرة بالسلك البرتقالي لمحرك سيرفو وهو دبوس إشارة الإدخال. قم بتوصيل أي لون أدى لمؤشر الطاقة. أيضًا ، قم بتوصيل زر ضغط واحد في إعادة تعيين دبوس لإعادة تعيين Atmega16 كلما لزم الأمر. قم بتوصيل Atmega16 بدائرة مذبذب بلورية مناسبة. سيتم تشغيل النظام بالكامل بواسطة مصدر طاقة 5 فولت.
سيبدو الإعداد الكامل كما يلي:
التحكم في محرك سيرفو مع AVR ATmega16
مثل Stepper Motor ، لا يحتاج المحرك المؤازر إلى أي محرك خارجي مثل ULN2003 أو L293D. يكفي فقط PWM لتشغيل محرك سيرفو ومن السهل جدًا إنشاء PWM من متحكم دقيق. يبلغ عزم محرك السيرفو 2.5 كجم / سم ، لذلك إذا كنت بحاجة إلى عزم دوران أكبر ، فإن هذه الماكينة غير مناسبة.
كما نعلم أن محرك سيرفو يبحث عن نبضة كل 20 مللي ثانية وأن طول النبضة الموجبة سيحدد زاوية دوران محرك السيرفو.
التردد المطلوب للحصول على نبضة 20 مللي ثانية هو 50 هرتز (f = 1 / T). لذلك بالنسبة لمحرك المؤازرة هذا ، تقول المواصفات أنه من أجل 0 درجة نحتاج إلى 0.388 مللي ثانية ، ول 90 درجة نحتاج إلى 1.264 مللي ثانية و 180 درجة نحتاج إلى 2.14 مللي ثانية نبضة.
لتوليد نبضات محددة ، سنستخدم Timer1 من Atmega16. تردد وحدة المعالجة المركزية هو 16 ميجاهرتز ولكننا سنستخدم 1 ميجاهرتز فقط لأننا لا نمتلك الكثير من الأجهزة الطرفية المتصلة بوحدة التحكم الدقيقة ولا يوجد حمل كبير على وحدة التحكم الدقيقة ، لذا فإن 1 ميجاهرتز ستؤدي المهمة. تم ضبط Prescaler على 1. لذا فإن الساعة مقسمة على 1Mhz / 1 = 1Mhz (1uS) وهو أمر رائع. سيتم استخدام Timer1 كوضع PWM السريع ، أي الوضع 14. يمكنك استخدام أوضاع مختلفة من المؤقتات لتوليد قطار النبض المطلوب. تم تقديم المرجع أدناه ويمكنك العثور على مزيد من الوصف في ورقة البيانات الرسمية Atmega16.
ل استخدام Timer1 كما PWM سريع وضع سنحتاج قيمة TOP من ICR1 (القبض على المدخلات Register1). للعثور على أعلى قيمة استخدم الصيغة الواردة أدناه:
f pwm = f cpu / nx (1 + TOP)
يمكن تبسيط هذا إلى ،
TOP = ( f cpu / ( f pwm xn)) - 1
حيث ، N = قيمة مجموعة Prescaler
f cpu = CPU بشكل متكرر
f pwm = عرض نبض محرك سيرفو وهو 50 هرتز
الآن احسب قيمة ICR1 لأن لدينا جميع القيم المطلوبة ،
N = 1 ، f cpu = 1MHz ، f pwm = 50Hz
فقط ضع القيم في الصيغة أعلاه وسنحصل عليها
ICR1 = 1999
هذا يعني أن الحصول على الدرجة القصوى أي 180 0 يجب أن يكون ICR1 1999
بالنسبة إلى الكريستال 16 ميجاهرتز و Prescaler لتعيين 16 ، سيكون لدينا
ICR1 = 4999
الآن دعنا ننتقل إلى مناقشة الرسم.
برمجة Atmega16 باستخدام USBasp
يرد أدناه رمز AVR الكامل للتحكم في محرك سيرفو. الكود بسيط ويمكن فهمه بسهولة.
هنا قمنا بترميز Atmega16 لتدوير محرك سيرفو من 0 0 إلى 180 0 والعودة مرة أخرى من 180 0 إلى 0 0. سيكتمل هذا الانتقال في 9 خطوات ، أي 0 - 45 - 90 - 135 - 180 - 135 - 90 - 45 - 0. للتأخير ، سنستخدم المكتبة الداخلية لـ Atmel Studio ie
قم بتوصيل USBASP v2.0 واتبع التعليمات الواردة في هذا الرابط لبرمجة Atmega16 AVR Microcontroller باستخدام USBASP و Atmel Studio 7.0. ما عليك سوى إنشاء الرسم وتحميله باستخدام سلسلة أدوات خارجية.
الكود الكامل مع الفيديو التوضيحي مذكور أدناه. تعرف أيضًا على المزيد حول محركات المؤازرة من خلال معرفة أهميتها في الروبوتات.