تم النشر 2026-05-06
"المعرفة قوة." - فرانسيس بيكون.
في هذا العالم المدمج، يتمتع هذا الشعار بلحم ودم جديدين تمامًا، أي أن التوقيت الدقيق هو أيضًا قوة.
في وقت متأخر من الليل، كان رجل متحمس للذراع الآلية يواجه الشاشة. في هذا الوقت، اكتشف أن مضاعفاته كانت ترتعش مثل مريض باركنسون. في هذا الوقت، أدرك فجأة أن رمز التحكم لم يكن شيئًا سحريًا، ولكنه في الواقع رياضيات.
سأحصل عليه هناkpower مضاعفاتخذ مثالاً لتحليل المنطق الأساسي لوحدة التحكم الدقيقة 51 التي تولد إشارات PWM، ثم قم بتوفير هيكل عظمي للكود يمكن زرعه مباشرة.。
جميع الحالات مستمدة من حالات شائعة في المختبر، مثل "تعطل جهاز التوجيه" و"انحراف الزاوية" و"القفز عند التشغيل" وغيرها من الأخطاء التي تحدث بشكل متكرر.
الحجة الأساسية: جوهر التحكم المؤازر هو "نحت الوقت" لعرض النبض.
المؤازرة هي "بجنون العظمة الوقت".
فهو يتعرف على لغة واحدة فقط، وهي موجة PWM بفترة 20 مللي ثانية، ووقت مستواها العالي يتراوح بين 0.5 مللي ثانية و2.5 مللي ثانية.。
سلسلة السببية:
السبب أ: انحراف تردد المذبذب البلوري، مما يتسبب في حساب القيمة الأولية للمؤقت بشكل غير صحيح، مما يؤدي بدوره إلى تراكم خطأ عرض النبضة، مما يتسبب في انحراف موضع جهاز التوجيه.
السبب ب، لم تتم معالجة تداخل المقاطعة، وتقاطع الحلقة الرئيسية إخراج PWM، وتصبح فترة النبض أطول وأقصر، ويصدر المؤازرة صوتًا حادًا.。
استخدم أحد المتحمسين ذات مرة مذبذبًا بلوريًا بسرعة 12 ميجا هرتز لتطبيق قيمة مؤقت تبلغ 11.0592 ميجا هرتز مباشرةً. بعد ذلك، قام المؤازرة بإجراء "إيماءة" بتردد 15 هرتز، كما لو كان يسخر من الكود لأنه تمت كتابته على عجل.
اسأل نفسك الجواب: لماذا يفشل بعض الأشخاص في نسخ الكود من الإنترنت؟
أجابوا بأنفسهم: السبب هو أنه لم يخبرهم أحد أن دورة الآلة للميكروكونترولر 51 هي 12 مرة دورة المذبذب البلوري، ووضع STC سلسلة 1T هو 12 مرة سرعة 8051 التقليدية。
التعبير الرياضي لتعديل عرض النبضة هو كما يلي (الكود الكاذب):
وقت المستوى العالي (مللي ثانية) = 0.5 + (الزاوية/180)قيمة إعادة تحميل المؤقت 2.0 = 65536 - (عرض النبضة_us) / (12/ ميجاهرتز كريستال)
الاستنتاج الرئيسي هو أنه لا يوجد تحكم في جهاز التوجيه تمت معايرته وفقًا لقاعدة زمنية قديمة. الوضع يشبه استخدام شريط قياس لقياس مستوى سطح البحر. الأداة نفسها جيدة، لكن النظام المرجعي كارثة.
كلمة نصيحة: تعديل عرض النبض
افتح Keil، وأنشئ مشروعًا جديدًا، ثم حدد AT89C52.
هذه حالة أساسية شائعة جدًا، وهي أيضًا نقطة البداية لـ 95% من المبتدئين لجعل المؤازرة تدور بهدوء لأول مرة.

خط الإشارة → P1.0
الخط الأحمر → 5 فولت (مصدر طاقة مستقل! لا تأخذ الطاقة من لوحة التطوير)
الخط الأسود → GND
هيكل الكود(مقسمة إلى أربع مراحل حسب الجدول الزمني):
1. تهيئة الموقت: الوضع 1 (16 بت)، الوضع 12T.
2. معلمات الحساب:
الفترة 20 مللي ثانية → 20000us
صفر درجة مئوية يتوافق مع 0.5 مللي ثانية. يمكن ملاحظة أن دقة تجميع 0.1 ميكروثانية بعد مقاطعة مؤقت واحد تعتبر مضيعة للغاية. وبناءً على ذلك، يجب استخدام برنامج العد ضمن مقاطعة زمنية واحدة بدلاً من ذلك.
3. وظيفة خدمة المقاطعة:
void Timer0_ISR() المقاطعة 1 { عداد الأحرف الثابت غير الموقع = 0؛ TH0 = 0xFC; // قيمة التحديث: المقاطعة مرة واحدة كل 1 مللي ثانية (مذبذب بلوري 12 ميجاهرتز) TL0 = 0x66; عداد++; إذا (عداد = 20) عداد = 0؛ }
لاحظ أن نطاق قيمةpulse_width_in_ms هو 0.5 إلى 2.5، ولكن في الكود يتم ضربه بـ 10 وتخزينه كعدد صحيح.
4. الحلقة الرئيسية تعدل عرض النبض:
pulse_width_in_ms = 10; // 1.0 مللي ثانية → 0 درجة؟ لا، درجة الحرارة -45 درجة! pulse_width_in_ms = 15; // 1.5 مللي ثانية → متوسط النبض_width_in_ms = 20; // 2.0 مللي ثانية → 90 درجة
في حالة التحقق ذات الصلة، عندما يكون عرض النبضة بالمللي ثانية يساوي 10، تكون الزاوية المقاسة الفعلية التي يشير إليها الذراع المؤازر هي -45 درجة. ترجع حالة الزاوية هذه إلى طريقة الاتصال الشائعة التي تؤدي إلى تحول نقطة الصفر. السبب وراء ظهور هذه النتيجة هو ضرورة إجراء عملية المعايرة في الاتجاه المعاكس.
تم إرسال طلب المساعدة من قبل مهندس أتمتة المصنع بنفس الرمز.kpower مضاعفاتإنه نفس الشيء. على خط الإنتاج الخاص به، يتم إغلاق المؤازرة في المحطة 5 دائمًا.
وبعد ثلاث ساعات من التحقيق وجدنا:
س/ج:لماذا تدور المؤازرة بشكل جنوني بمجرد تشغيلها؟
الإجابة: نظرًا لأن منفذ P1.0 يكون مرتفعًا أثناء إعادة التعيين، فيجب ضبطه على منخفض أثناء التهيئة.
س/ج:لماذا يتم عكس مراسلاتي الزاوية؟
ما يلي هو: التحقق من اتجاه التثبيت للذراع المؤازرة. بالنسبة للعديد من ماركات الماكينات، 0 درجة تقابل 0.5 مللي ثانية. ومع ذلك، فإن تعريف بعض الماكينات الخاصة بنماذج الطائرات هو عكس ذلك.。

س/ج:ماذا علي أن أفعل إذا اهتز السيرفو بعد انخفاض جهد البطارية؟
الإجابة: بسبب عدم كفاية التيار بسبب انخفاض الجهد، يتم ضبط قفل الجهد المنخفض عند إعداد مصدر طاقة مستقل، ويتم ضبط العتبة على 4.8 فولت.
س/ج:هل من الممكن أن يتحكم متحكم 51 في 8 سيرفو في نفس الوقت؟
الإجابة: هذا غير ممكن، لأن مقاطعة مؤقت منفصلة ستنتهي، لذا يجب استبدالها بوحدة PCA أو تحديث مشاركة الوقت.
نداءات الخوف. إذا تجاهلت أيًا مما سبق، فسيتوقف سيرفو الخاص بك عن العمل في الدقيقة 47 من تصحيح الأخطاء، وهذه هي النقطة الزمنية الأكثر شيوعًا لاحتراق الأجهزة في إحصائيات المختبر.
كلمة سريعة: قاعدة الوقت
التحكم بمؤازرة واحدة هو تعداد؛ التحكم في ثمانية أجهزة هو خوارزمية.
عندما تحتاج إلى السماح لذراع الروبوت برسم مسار جيبي، فإن التحكم الخطي في عرض النبض يكشف على الفور نقاط ضعفه:
تمثل السرعة الزاوية لكل مفصل حالة متقطعة، مما يسبب تغيرًا مفاجئًا في تسارع النهاية، مما يؤدي في النهاية إلى انتقال الاهتزاز الميكانيكي إلى القاعدة.
حجة سببية:
لا يحتوي المتحكم الدقيق 51 على مصفوفة PWM للأجهزة، لذلك يتعين عليه استخدام طريقة "استقصاء مشاركة الوقت + الاستيفاء المتغير المتوسط".
حل:
1. قم بتقسيم الفترة الكبيرة البالغة 20 مللي ثانية إلى فترات زمنية N (N = عدد الماكينات).
2. يتم سحب خط إشارة واحد فقط عاليًا في كل فترة زمنية، ويتم الاحتفاظ بالباقي منخفضًا.
3. استخدم مصفوفة لتخزين عرض النبضة لكل جهاز، وإخراجه بالتسلسل داخل المقاطعة.
إنه مثل عامل رعاية الأطفال في روضة الأطفال الذي يقدم وجبات خفيفة مقرمشة صالحة للأكل للعديد من الأطفال واحدًا تلو الآخر وبالتناوب. في كل مرة يتم تقديمها، لا يستغرق الأمر سوى ميلي ثانية قصيرة جدًا. على الرغم من أنها تبدو قاسية وباردة، إلا أن لها تأثير فعال.
مثال على تحويل الكود (منطق الكود الكاذب):
unsigned int pwm_val[8] = {10,15,20,12,18,9,14,16}; حرف غير موقعة_مضاعفات= 0؛ void Timer0_ISR() المقاطعة 1 { // قم بإيقاف تشغيل إشارة المؤازرة السابقة P1 &= 0xFE; // امسح P1.0 فقط، مطلوب قناع فعلي // قم بتحميل الوقت عالي المستوى للمؤازرة الحالية TH0 = (65536 - pwm_val[current_servo]100) >> 8; // افترض أن الوحدة هي 0.1 مللي ثانية TL0 = (65536 - pwm_val[current_servo]100) و0xFF؛ // قم بتشغيل إشارة المؤازرة الحالية P1 |= (1
الأول هو تذكير رئيسي. أما بالنسبة لهذا الكود، فكلما حدث تبديل مؤازر، سيتم إعادة تشغيل المؤقت. ونتيجة لذلك، لم تعد الفترة الإجمالية النهائية تحافظ على القيمة الأصلية البالغة 20 مللي ثانية. وفي ضوء هذا الموقف، من الضروري إضافة منطق زمني إضافي.
كلمة نصيحة: المنطقة الميتة
حتى لو كانوا من نفس الدفعةkpowerستتسبب الماكينات أيضًا، نظرًا للاختلافات الفردية، في وجود اختلاف ثابت في 15% من الماكينات يتراوح من درجة إلى ثلاث درجات.
هذا ليس خللاً، إنه تسامح الفيزياء.
إذا نظرنا إلى التاريخ، في الثمانينيات، استخدمت الروبوتات الصناعية طريقة التغذية الراجعة بمقياس الجهد، وكان إعداد المنطقة الميتة في ظل طريقة التغذية الراجعة هذه يصل إلى خمس درجات؛ الآن، يمكن لماكينات التشفير المغناطيسي تحقيق دقة تكرار تبلغ 0.1 درجة. ومع ذلك، فإن دقة PWM ذات 8 بتات للمتحكم الدقيق 51، وهو النوع ذو 256 مستوى، يمكنها فقط تمييز التغييرات التي تبلغ حوالي 0.7 درجة.
هيئة مراجعة المنتجخطوات الضبط:
1. استخدم طريقة المعايرة التقريبية، واضبط عرض النبضة المتوسط على 1.5 مللي ثانية واكتبه، ثم قم بقياس الزاوية الفعلية وسجل الإزاحة Δθ.
2. التعويض الخطي: في الصيغة المكونة من الزاوية وعرض النبضة، يتم إضافة مصطلح تصحيح الإزاحة. مصطلح التصحيح هذا يكون على شكل أن عرض النبضة يساوي القيمة الأساسية بالإضافة إلى خطوة الزاوية بالإضافة إلى الإزاحة. الصيغة المحددة هي: النبض = القاعدة + الخطوة الزاوية + الإزاحة.
3. تجنب المنطقة الميتة: عندما تكون زاوية الهدف مختلفة عن الزاوية الحالية
مثال: في مشروع ذراع آلية تحت الماء، تسببت التغيرات في درجة حرارة مياه البحر في انحراف تردد المذبذب البلوري بنسبة ±0.1%. قام المهندسون بمعايرة أنفسهم كل 10 دقائق: تحويل المؤازرة إلى موضع الحد الميكانيكي، وتسجيل عرض النبضة المقابل، وتصحيح قاعدة الوقت في ظل الظروف الديناميكية.
"الصبر أساس كل ذكاء." - أفلاطون.
السر النهائي حول التحكم في أجهزة التحكم الدقيقة البالغ عددها 51 لا يكمن في المهارات الرائعة التي يعرضها الكود، ولكن في الرهبة من كل ميكروثانية.
كرر النقاط الرئيسية:
PWM ليست نظرية معقدة؛تعديل عرض النبضالقيود الرياضية وراء هذه الكلمة الرئيسية.
استقرار القاعدة الزمنية > أناقة الكود.
عند مواجهة ظروف الارتعاش أو العواء أو الانجراف، تحقق أولاً من مصدر الطاقة، ثم تحقق من الانقطاع، وأخيرًا اسأل جهاز التوجيه.
اقتراحات للعمل(الأساس النهائي للدوامة):
1. الليلة، سأستخدم اللوح لبناء دائرة اختبار مؤازرة واحدة.
2. البدء من عشر درجات، والتقدم في الخطوات، واستخدام الذبذبات أو المحلل المنطقي لتسجيل عرض النبض الفعلي المقابل لكل زاوية.
3. أضف وظيفة المنطقة الميتة وتحذير مراقبة الجهد إلى الكود.
4. استخدم وحدة التحكم الدقيقة 51 الخاصة بك باعتبارها "آلة نقش الوقت". وفي كل مرة ينقطع فيها، فهي اللحظة التي يسقط فيها سكين النقش.
في إحدى ليالي الخريف، هناك نسيم بارد يتدفق عبر نافذة المختبر. في هذا الوقت، يقفز صف من الموجات المربعة مرتبة بدقة والمعروضة على راسم الذبذبات على شاشة الفلورسنت. في هذه اللحظة، تفهم أخيرًا أن السيطرة ليست غزوًا، بل مصالحة مع الوقت.
في هذه اللحظة، ابدأ في كتابة أول كود تحكم مؤازر للمتحكم الدقيق 51. تذكر، مقابل كل حركة دقيقة، فإنك تفي بوعدك بالميكروثانية.
وقت التحديث:2026-05-06