- ما هو محرك سيرفو؟
- ربط المحركات المؤازرة بوحدات التحكم الدقيقة:
- برمجة محرك سيرفو مع متحكم PICF877A PIC:
- مخطط الرسم البياني:
- إعداد المحاكاة والأجهزة:
هذا هو البرنامج التعليمي الحادي عشر الخاص بنا لتعلم الميكروكونترولر PIC باستخدام MPLAB و XC8. في هذا البرنامج التعليمي سوف نتعلم كيفية التحكم في محرك سيرفو باستخدام متحكم PIC. إذا كنت قد عملت بالفعل مع محركات مؤازرة ، فيمكنك تخطي النصف الأول من هذا البرنامج التعليمي ولكن إذا كنت جديدًا في محرك سيرفو نفسه ، فاستمر في القراءة.
حتى الآن ، قمنا بتغطية العديد من البرامج التعليمية الأساسية مثل وميض LED مع الموافقة المسبقة عن علم ، والمؤقتات في الموافقة المسبقة عن علم ، وواجهات LCD ، والتفاعل مع الأجزاء السبعة ، و ADC باستخدام PIC وما إلى ذلك. إذا كنت مبتدئًا تمامًا ، فيرجى زيارة القائمة الكاملة لدروس الموافقة المسبقة عن علم هنا و ابدا بالتعلم.
في برنامجنا التعليمي السابق تعلمنا كيفية إنشاء إشارات PWM باستخدام متحكم PIC ، تم إنشاء الإشارات بناءً على القيمة التي تمت قراءتها من مقياس الجهد. إذا كنت قد فهمت جميع البرامج ، فتهانينا ، لقد قمت بالفعل بترميز محرك سيرفو أيضًا. نعم ، تستجيب محركات المؤازرة لإشارات PWM (التي نقوم بإنشائها باستخدام أجهزة ضبط الوقت هنا) وسوف نتعلم لماذا وكيف في هذا البرنامج التعليمي. سنقوم بمحاكاة وبناء إعداد الأجهزة لهذا المشروع ويمكنك العثور على الفيديو التفصيلي في نهاية هذا البرنامج التعليمي.
ما هو محرك سيرفو؟
محرك سيرفو هو نوع من المشغلات (دائري في الغالب) يسمح بالتحكم الزاوي. هناك العديد من أنواع المحركات المؤازرة المتاحة ولكن في هذا البرنامج التعليمي دعنا نركز على محركات الهواية المؤازرة الموضحة أدناه.
تعد أجهزة الهوايات شائعة لأنها طريقة غير مكلفة للتحكم في الحركة. أنها توفر حلاً جاهزًا لمعظم احتياجات R / C والهواة الآلي. كما أنها تلغي الحاجة إلى تصميم نظام تحكم مخصص لكل تطبيق.
تحتوي معظم محركات الهواية المؤازرة على ملاك دوراني يتراوح من 0 إلى 180 درجة ولكن يمكنك أيضًا الحصول على محرك مؤازر 360 درجة إذا كنت مهتمًا. يستخدم هذا البرنامج التعليمي محرك مؤازر من 0 إلى 180 درجة. هناك نوعان من المحركات المؤازرة يعتمدان على الترس ، أحدهما محرك بلاستيك جير سيرفو والآخر هو ميتال جير سيرفو موتور. يتم استخدام الترس المعدني في الأماكن التي يتعرض فيها المحرك لمزيد من البلى ، ولكنه يأتي فقط بسعر مرتفع.
يتم تصنيف المحركات المؤازرة بالكيلوغرام / سم (كيلوغرام لكل سنتيمتر) ، ويتم تصنيف معظم محركات الهوايات بمعدل 3 كجم / سم أو 6 كجم / سم أو 12 كجم / سم. يخبرك هذا كجم / سم مقدار الوزن الذي يمكن لمحرك سيرفو رفعه على مسافة معينة. على سبيل المثال: يجب أن يكون محرك سيرفو 6 كجم / سم قادرًا على رفع 6 كجم إذا تم تعليق الحمولة على بعد 1 سم من عمود المحرك ، فكلما زادت المسافة كلما قلت قدرة تحمل الوزن. تعلم هنا أساسيات محرك سيرفو.
ربط المحركات المؤازرة بوحدات التحكم الدقيقة:
من السهل جدًا ربط محركات هواية مؤازرة مع MCU. الماكينات لها ثلاثة أسلاك تخرج منها. سيتم استخدام اثنين منها للتزويد (موجب وسالب) وسيتم استخدام واحد للإشارة التي سيتم إرسالها من MCU. في هذا البرنامج التعليمي ، سنستخدم محرك MG995 Metal Gear Servo Motor والذي يستخدم بشكل شائع في سيارات RC الروبوتات الروبوتية وما إلى ذلك. تظهر صورة MG995 أدناه:
قد يختلف الترميز اللوني لمحرك المؤازرة الخاص بك ، وبالتالي تحقق من ورقة البيانات الخاصة بك.
تعمل جميع محركات المؤازرة بشكل مباشر مع قضبان الإمداد + 5V الخاصة بك ولكن علينا توخي الحذر بشأن مقدار التيار الذي سيستهلكه المحرك ، إذا كنت تخطط لاستخدام أكثر من محركين مؤازرين ، فيجب تصميم درع مؤازر مناسب. في هذا البرنامج التعليمي ، سنستخدم محرك سيرفو واحدًا لإظهار كيفية برمجة PIC MCU للتحكم في المحرك. تحقق من الروابط أدناه لتوصيل محرك سيرفو بوحدة تحكم دقيقة أخرى:
- محرك سيرفو يتفاعل مع متحكم 8051
- التحكم في محرك سيرفو باستخدام اردوينو
- راسبيري باي محرك سيرفو تعليمي
- محرك سيرفو مع متحكم AVR
برمجة محرك سيرفو مع متحكم PICF877A PIC:
قبل أن نبدأ في البرمجة لمحرك سيرفو ، يجب أن نعرف نوع الإشارة التي سيتم إرسالها للتحكم في محرك سيرفو. يجب أن نبرمج MCU لإرسال إشارات PWM إلى سلك إشارة محرك سيرفو. توجد دائرة تحكم داخل محرك سيرفو تقرأ دورة عمل إشارة PWM وتضع عمود محركات المؤازرة في المكان المناسب كما هو موضح في الصورة أدناه
يعمل كل محرك مؤازر على ترددات PWM مختلفة (التردد الأكثر شيوعًا هو 50 هرتز والذي يتم استخدامه في هذا البرنامج التعليمي) لذا احصل على ورقة البيانات الخاصة بمحركك للتحقق من فترة PWM التي يعمل بها محرك سيرفو.
يتم عرض التفاصيل الخاصة بإشارة PWM لجهاز Tower pro MG995 أدناه.
من هذا يمكننا أن نستنتج أن محركنا يعمل بفترة PWM تبلغ 20 مللي ثانية (50 هرتز). لذلك يجب ضبط تردد إشارة PWM لدينا على 50 هرتز. كان تردد PWM الذي حددناه في البرنامج التعليمي السابق 5 كيلو هرتز ، ولن يساعدنا استخدام نفس التردد هنا.
لكن لدينا مشكلة هنا. و PIC16F877A لا يمكن أن تولد منخفضة إشارات التردد PWM باستخدام وحدة CCP. وفقًا لورقة البيانات ، فإن أقل قيمة ممكنة يمكن تعيينها لتردد PWM هي 1.2 كيلو هرتز. لذلك علينا التخلي عن فكرة استخدام وحدة CCP وإيجاد طريقة لعمل إشارات PWM الخاصة بنا.
ومن ثم ، في هذا البرنامج التعليمي ، سوف نستخدم وحدة المؤقت لتوليد إشارات PWM بتردد 50 هرتز وتغيير دورة عملهم للتحكم في ملاك محرك سيرفو. إذا كنت جديدًا على أجهزة ضبط الوقت أو ADC مع PIC ، فالرجاء الرجوع إلى هذا البرنامج التعليمي ، لأنني سأتخطى معظم الأشياء نظرًا لأننا قمنا بالفعل بتغطيتها هناك.
نقوم بتهيئة وحدة Timer الخاصة بنا بمقياس مسبق يبلغ 32 ونجعله يفيض لكل 1us. وفقًا لورقة البيانات الخاصة بنا ، يجب أن يكون لـ PWM فترة 20 مللي ثانية فقط. لذلك يجب أن يكون وقتنا في الوقت المحدد ووقت الراحة سويًا يساوي 20 مللي ثانية.
OPTION_REG = 0b00000100 ، // Timer0 مع التكرار الخارجي و 32 كمقياس مسبق TMR0 = 251 ؛ // قم بتحميل القيمة الزمنية لـ 1us delayValue يمكن أن تكون بين 0-256 فقط TMR0IE = 1 ؛ // تمكين بت مقاطعة المؤقت في سجل PIE1 GIE = 1 ؛ // Enable Global Interrupt PEIE = 1 ؛ // تمكين المقاطعة الطرفية
لذلك داخل وظيفة المقاطعة الروتينية الخاصة بنا ، نقوم بتشغيل الدبوس RB0 للوقت المحدد وإيقاف تشغيله لوقت التوسيع (20 مللي ثانية - وقت التشغيل). يمكن تحديد قيمة الوقت المحدد باستخدام مقياس الجهد ووحدة ADC. المقاطعة مبينة أدناه.
oid interrupt timer_isr () {if (TMR0IF == 1) // Timer قد فائض {TMR0 = 252 ؛ / * قم بتحميل قيمة المؤقت ، (ملاحظة: قيمة Timervalue هي 101 instaed من 100 حيث يحتاج TImer0 إلى دورتين من التعليمات لبدء زيادة TMR0 * / TMR0IF = 0؛ // Clear timer interrupt flag count ++؛} if (count> = on_time) { RB0 = 1 ؛ // أكمل قيمة وميض المصابيح} if (count> = (on_time + (200-on_time))) {RB0 = 0؛ count = 0؛}}
داخل حلقة while الخاصة بنا ، قرأنا للتو قيمة مقياس الجهد باستخدام وحدة ADC وقمنا بتحديث وقت PWM باستخدام قيمة القراءة.
بينما (1) {pot_value = (ADC_Read (4)) * 0.039 ؛ on_time = (170-pot_value) ؛ }
بهذه الطريقة ، أنشأنا إشارة PWM وهي فترة 20 مللي ثانية ولها دورة عمل متغيرة يمكن ضبطها باستخدام مقياس الجهد. تم إعطاء الرمز الكامل أدناه في قسم الكود.
الآن ، دعنا نتحقق من المخرجات باستخدام محاكاة البروتيوس وانتقل إلى أجهزتنا.
مخطط الرسم البياني:
إذا كنت قد صادفت بالفعل البرنامج التعليمي PWM ، فستكون مخططات هذا البرنامج التعليمي هي نفسها باستثناء ما سنضيف إليه محرك مؤازر بدلاً من ضوء LED.
إعداد المحاكاة والأجهزة:
بمساعدة محاكاة Proteus ، يمكننا التحقق من إشارة PWM باستخدام راسم الذبذبات وكذلك التحقق من الملاك الدوار لمحرك Servo. يتم عرض لقطات قليلة من المحاكاة أدناه ، حيث يمكن ملاحظة تغيير الملاك الدوار للمحرك المؤازر ودورة العمل PWM بناءً على مقياس الجهد. تحقق كذلك من الفيديو الكامل للدوران عند PWM مختلفة في النهاية.
كما نرى ، يتم تغيير ملاك دوران المؤازرة بناءً على قيمة مقياس الجهد. الآن دعنا ننتقل إلى إعداد أجهزتنا.
في إعداد الأجهزة ، أزلنا للتو لوحة LED وأضفنا محرك سيرفو كما هو موضح في المخططات أعلاه.
الجهاز موضح في الصورة أدناه:
في الفيديو أدناه يبين كيف يتفاعل أجهزة السيارات إلى مواقف مختلفة من الجهد.
هذا هو!! لقد قمنا بتوصيل محرك مؤازر بوحدة تحكم دقيقة PIC ، والآن يمكنك استخدام إبداعك ومعرفة التطبيقات الخاصة بذلك. هناك الكثير من المشاريع التي تستخدم محرك سيرفو.