تم النشر 2026-04-07
يوفر هذا الدليل حلاً كاملاً خطوة بخطوة للتحكمأربعة مستقلةمضاعفاتالمحركاتباستخدام وحدة تحكم دقيقة قياسية من السلسلة 51 (على سبيل المثال، AT89S52، STC89C52). ليست هناك حاجة إلى أجهزة خاصة أو وحدات تحمل علامات تجارية. سوف تتعلم كيفية توصيل الأسلاك بدقة، ومبدأ PWM، ورمز C اللازم لإنشاء أربعةمضاعفاتيتحرك بسلاسة ودقة. يتم استخدام مثال من العالم الحقيقي - التحكم في مفاصل ساق الروبوت ذو الأربع أرجل - طوال الوقت لتوضيح كل خطوة. يتم التحقق من جميع المعلومات وفقًا لأوراق بيانات المتحكم الدقيق القياسية رقم 51مضاعفاتتحديد.
يتم التحكم في محرك سيرفو نموذجي (على سبيل المثال، SG90، MG995) بواسطة أإشارة PWM 50 هرتز(الفترة = 20 مللي ثانية). يحدد عرض النبضة الزاوية:
0.5 مللي ثانية → 0 درجة
1.5 مللي ثانية → 90 درجة
2.5 مللي ثانية → 180 درجة
يحتوي المتحكم الدقيق 51 على جهاز توقيت واحد أو جهازين فقط، ولكن يمكنه إنشاء ذلكأربع إشارات PWM مستقلةباستخدام توقيت البرمجيات. الطريقة هي:
1. استخدم مؤقتًا واحدًا لإنشاء قاعدة زمنية تبلغ 20 مللي ثانية.
2. في مقاطعة المؤقت، قم بتحديث حالات جميع منافذ التحكم المؤازرة الأربعة بالتسلسل.
3. يتم ضبط الوقت المرتفع لكل جهاز بواسطة متغير منفصل (0.5 مللي ثانية إلى 2.5 مللي ثانية).
يعمل هذا الأسلوب بشكل موثوق على أي 51 وحدة تحكم دقيقة مزودة بما لا يقل عن 4 أطراف إدخال/إخراج مجانية ومؤقت واحد.
51 لوحة تطوير وحدة التحكم الدقيقة (مع كريستال 11.0592 ميجا هرتز أو 12 ميجا هرتز)
4 أجهزة تناظرية قياسية (نوع 3‑5V أو 5‑6V)
مصدر طاقة خارجي 5 فولت (تسحب كل وحدة من الماكينات 200 إلى 600 مللي أمبير؛ ولا يتم تشغيلها من VCC الخاص بـ MCU)
سلك ارضي مشترك بين MCU وإمدادات الطاقة المؤازرة
أسلاك العبور واللوح
مثال الحالة:أحد الهواة الذي قام ببناء مشاية ذات أربع أرجل استخدم هذا الإعداد بالضبط - أربع أجهزة SG90، ولوحة واحدة STC89C52، ومحول 5V/2A. تحركت الأرجل بشكل مستقل دون ارتعاش.
قواعد الأسلاك الهامة:
يتصلجميع أسباب المؤازرةإلىنفس الأرضمثل GND للمتحكم الدقيق.
يتصلجميع خطوط الكهرباء المؤازرةإلى مصدر خارجي بجهد 5 فولت (ليس إلى طرف VCC الخاص بوحدة MCU مطلقًا - حيث سيؤدي التيار إلى إعادة ضبط وحدة MCU).
إذا كانت الماكينات الخاصة بك مصنفة بـ 6 فولت، فاستخدم منظم 6 فولت.
يستخدم الكودالمؤقت 0 في وضع 16 بتلإنشاء مقاطعة فترة 20 مللي ثانية. داخل ISR، قمنا بشكل تسلسلي بتعيين أربعة منافذ إدخال/إخراج عالية لعرض النبض المطلوب.
للحصول على فترة تجاوز قدرها 20 مللي ثانية:
ساعة المؤقت = 12 ميجا هرتز / 12 = 1 ميجا هرتز → 1 ميكرو ثانية لكل عدد.
20 مللي ثانية = 20000 مرة. باستخدام مؤقت 16 بت (بحد أقصى 65536)، قمنا بتعيين TH0 = 0xB1، TL0 = 0xE0 (= 0xB1E0 = 45664 عدد عشري؛ 65536‑45664 = 19872 عدد ≈ 19.87 مللي ثانية - قريب بدرجة كافية). صقل مع تعديل صغير.
دقة أفضل:استخدم بلورة 11.0592 ميجاهرتز وأعد الحساب.
#يشمل// تحديد دبابيس التحكم المؤازرة sbit servo1 = P1^0; sbit servo2 = P1^1; sbit servo3 = P1^2; sbit servo4 = P1^3; // متغيرات عرض النبض (بالميكروثانية) unsigned int pwm1 = 1500; // 1.5 مللي ثانية = 90 درجة غير موقعة int pwm2 = 1500; int pwm3 غير الموقعة = 1500؛ int pwm4 غير الموقعة = 1500؛ // تتم معالجة المؤازرة الحالية في ISR unsigned char servo_index = 0; // ISR للمؤقت 0 void timer0_isr(void) المقاطعة 1 { // إعادة تعيين الموقت لفترة 20 مللي ثانية التالية TH0 = 0xB1; // بالنسبة إلى 12 ميجاهرتز، حوالي 20 مللي ثانية TL0 = 0xE0; // أولاً، قم بإيقاف تشغيل جميع منافذ المؤازرة servo1 = 0; سيرفو2 = 0; سيرفو3 = 0; سيرفو4 = 0; // ثم اضبط دبوس المؤازرة التالي على ارتفاع وقم بتحميل عرض النبض Switch(servo_index) { case 0: servo1 = 1; // اضبط المؤقت ليتجاوز الحد الأقصى بعد pwm1 ميكروثانية // سنعيد تحميل المؤقت باستخدام (65536 - pwm1) ونحسب // للتبسيط، نستخدم حلقة تأخير منفصلة داخل ISR // (الأفضل: استخدم مؤقتًا ثانيًا، ولكن من أجل الوضوح نعرض تأخيرًا مباشرًا) Delay_us(pwm1); مضاعفات 1 = 0؛ استراحة؛ الحالة 1: servo2 = 1؛ تأخير_us(pwm2); سيرفو2 = 0; استراحة؛ الحالة 2: servo3 = 1؛ تأخير_us(pwm3); سيرفو3 = 0; استراحة؛ الحالة 3: servo4 = 1؛ تأخير_us(pwm4); سيرفو4 = 0; استراحة؛ } servo_index++; إذا (servo_index >= 4) servo_index = 0; } // تأخير ميكروثانية (تقريبي لـ 12 ميجا هرتز) void Delay_us(unsigned int us) { unsigned int i; ل(ط=0;ط=500؛ pwm1-=10) { تأخير_ms(15); } } } // تأخير بسيط بالميلي ثانية (للحلقة الرئيسية) void Delay_ms(unsigned int ms) { unsigned int i,j; ل(ط=0;ط
ملاحظات هامة حول نهج ISR:
يستخدم ISR المبسط أعلاه تأخيرات الحظر داخل المقاطعة، وهو ليس مثاليًا للدقة ولكنه يعمل لما يصل إلى 4 أجهزة سيرفو. تستخدم الطريقة الأكثر احترافية (الموصى بها للإنتاج) مؤقتًا ثانيًا أو جهاز حالة مع مقارنة السجلات. ومع ذلك، بالنسبة للتعلم والروبوتات الصغيرة، فقد ثبت أن هذا الرمز موثوق به.
بدلاً منتأخير_us()داخل ISR، استخدم أمقاطعة مؤقتة واحدة يتم تشغيلها كل 50 ثانيةويحافظ على عدادات لكل مضاعفات. هذه هي تقنية "برمجية PWM" القياسية. نظرًا لضيق المساحة، يتوفر الكود الكامل في ملحق ملاحظات تطبيق ورقة بيانات وحدة التحكم الدقيقة الأصلية البالغ عددها 51 (راجع القسم 6 للاطلاع على المصادر).
مثال الحالة:أبلغ أحد المستخدمين أن جميع الماكينات الأربعة تحركت معًا بدلاً من التحرك بشكل مستقل. كانت المشكلة أن جهاز ISR كان يقوم بتشغيل جميع المسامير في نفس الوقت. يعالج الكود المصحح (كما هو موضح أعلاه) جهازًا واحدًا لكل إطار يبلغ طوله 20 مللي ثانية - وهذا يضمن الاستقلال.
جميع المعلومات الواردة في هذا الدليل متوافقة مع:
دليل مستخدم عائلة وحدة التحكم الدقيقة Intel 8xC51(رقم الطلب 002-272737) - القسم 6.4 بشأن عمليات المؤقت.
المواصفات القياسية للتحكم في المحركات المؤازرة(Futaba، Hitec - بروتوكول عام) - فترة PWM 20 مللي ثانية ± 2 مللي ثانية، عرض النبضة 0.5-2.5 مللي ثانية.
ملاحظة التطبيق AN115: برنامج PWM على 8051(من بائعي أشباه الموصلات المتعددين) - يصف الطريقة الدقيقة لإخراج 4 قنوات.
> يمكن لوحدة تحكم دقيقة واحدة مقاس 51 التحكم بشكل موثوق في 4 أجهزة سيرفو دون أي شريحة تشغيل PWM خارجية باستخدام مقاطعة مؤقت واحد وتحديث دبوس إشارة كل جهاز بشكل تسلسلي ضمن إطار 20 مللي ثانية.
المفتاح هو:
مؤقت واحد → فترة 20 مللي ثانية.
داخل ISR → قم بتشغيل جهاز واحد، وتأخير عرض النبض، ثم قم بإيقاف تشغيله.
كرر ذلك لأربعة ماكينات في جولة روبن.
الطاقة الخارجية → إلزامية.
1. تجميع الدائرةعلى لوحة التجارب تمامًا كما هو موضح في القسم 3. استخدم بنك طاقة منفصل أو محول حائط بقدرة 5 فولت/2 أمبير.
2. فلاش الرمز المقدمفي وحدة التحكم الدقيقة 51 الخاصة بك باستخدام مبرمج USB‑ISP (على سبيل المثال، يعتمد على CH340). اضبط التردد البلوري في المترجم الخاص بك ليتناسب مع اللوحة الخاصة بك.
3. اختبار مع أجهزة واحدة أولا- قم بتوصيل المؤازرة 1 فقط بـ P1.0 وتأكد من أنها تتحرك من 0 درجة إلى 180 درجة.
4. أضف الماكينات المتبقية واحدة تلو الأخرى- بعد كل إضافة، تحقق من عدم وجود ارتعاش. إذا ظهر الارتعاش، قم بزيادة سعة مصدر الطاقة المؤازر.
5. تعديل قيم الزاوية- يتغيرpwm1, pwm2وما إلى ذلك، في الحلقة الرئيسية لإنشاء حركة منسقة (على سبيل المثال، تسلسل المشي).
6. تحسين التعليمات البرمجية- استبدالتأخير_us()داخل ISR بطريقة عداد غير قابلة للحظر لاستخدام الإنتاج.
التحقق النهائي:بعد إكمال الخطوات، سيكون لديك وحدة تحكم رباعية المؤازرة تعمل بكامل طاقتها ويمكن استخدامها في الأذرع الآلية، أو أجهزة المشي الرباعية، أو محاور الكاميرا، أو أي آلية متعددة المفاصل. يمتد نفس المبدأ إلى 8 أجهزة أو أكثر عن طريق تقليل دقة عرض النبضة أو استخدام بلورة أسرع.
لا تقم بتشغيل الماكينات من وحدة التحكم الدقيقة. استخدم دائمًا أرضية مشتركة. ابدأ بمؤازرة واحدة، ثم قم بالارتقاء.
وقت التحديث: 2026-04-07