تم النشر 2026-04-02
يشرح هذا الدليل كيفية التحكم في المعيارمضاعفاتالمحرك باستخدام إشارات تعديل عرض النبض (PWM). سوف تتعلم معلمات PWM الدقيقة (الفترة وعرض النبض ودورة العمل) اللازمة لتعيين أمضاعفاتإلى أي زاوية من 0 إلى 180 درجة. تعتمد التعليمات على منصات التحكم الدقيقة المتاحة على نطاق واسع وتم التحقق منها باستخدام التناظرية والرقمية الشائعة بتردد 50 هرتزمضاعفاتتستخدم في هواية الروبوتات. باتباع أمثلة التعليمات البرمجية خطوة بخطوة وطرق المعايرة، يمكنك تحديد موضع المؤازرة بشكل موثوق دون اهتزاز أو انحراف.
يتوقع محرك سيرفو قياسي إشارة PWM ذات الخصائص الثابتة التالية:
فترة الإشارة: 20 مللي ثانية (ملي ثانية)، وهو ما يعادل تردد50 هرتز.
عرض النبض (الوقت العالي): يختلف بين1.0 مللي ثانيةو2.0 مللي ثانية.
دورة العمل= (عرض النبضة / 20 مللي ثانية) × 100%.
ملاحظة: قد تقبل بعض الماكينات 0.5 مللي ثانية إلى 2.5 مللي ثانية للنطاق الممتد، ولكن المعيار 1.0-2.0 مللي ثانية يعمل مع جميع الماكينات الشائعة تقريبًا.
تعمل بنية التعليمات البرمجية التالية على أي نظام أساسي يوفر PWM للأجهزة (على سبيل المثال، Arduino وSTM32 وESP32 وRaspberry Pi مع PWM للأجهزة). نحن نستخدم الكود الكاذب العام حتى تتمكن من تكييفه مع وحدة التحكم الدقيقة الخاصة بك.
اختر طرفًا يدعم PWM.
اضبط تردد PWM على50 هرتز(الفترة = 20 مللي ثانية).
اضبط الدقة على 8 بت (0–255) أو 16 بت على الأقل للتحكم بشكل أفضل.
بالنسبة لـ PWM 8 بت (0 = 0% واجب، 255 = 100% واجب):
دورة العمل لمدة 1.0 مللي ثانية = (1.0 / 20.0) × 255 = 12.75 → تقريبًا إلى13
دورة العمل لمدة 1.5 مللي ثانية = (1.5 / 20.0) × 255 = 19.125 → تقريبًا إلى19
دورة العمل لمدة 2.0 مللي ثانية = (2.0 / 20.0) × 255 = 25.5 → تقريبًا إلى26
الصيغة العامة لأي زاوية (0-180 درجة):
عرض النبضة = 1.0 + (الزاوية / 180.0)(2.0 - 1.0) قيمة الواجب = (pulse_width_ms / 20.0)(2^الدقة - 1)
مثال لدقة 8 بت و45 درجة:
![]()
عرض النبضة = 1.0 + (45/180)1.0 = 1.25 مللي ثانية
Duty_value = (1.25/20)255 = 15.9375 → عدد صحيح16
// الكود الزائف pwm_set_frequency(PWM_PIN, 50); // 50 هرتز pwm_set_resolution(PWM_PIN, 8); // 8 بت زاوية int = 90؛ // زاوية الهدف int Duty = Map(angle, 0, 180, 13, 26); // استخدام الحد الأدنى/الأقصى للواجب المحسوب مسبقًا pwm_write(PWM_PIN, Duty);
نظرًا لعدم وجود سيرفرين متطابقين تمامًا، قم دائمًا بقياس حدود عرض النبضة الفعلية:
1. اكتب نبضة تبلغ 1.0 مللي ثانية – ولاحظ موضع المؤازرة. إذا لم يصل إلى التوقف الفعلي، قم بزيادة عرض النبض بخطوات قدرها 0.05 مللي ثانية حتى يتوقف عن الحركة (سجل كـmy_pulse).
2. اكتب نبضة تبلغ 2.0 مللي ثانية - وبالمثل ابحث عن الحد الأقصى لعرض النبضة الذي يعطي الدوران الكامل (max_pulse).
3. استخدم هذه القيم المُقاسة في الكود الخاص بك بدلاً من القيمة النظرية 1.0/2.0 مللي ثانية.
حالة شائعة: مطلوب جهاز مؤازر صغير نموذجي من طراز Tower Pro SG90min_pulse = 0.9 مللي ثانيةوmax_pulse = 2.1 مللي ثانيةلنطاق حقيقي 0-180 درجة. قم دائمًا بالمعايرة لكل نموذج مؤازر.
// التحكم المؤازر باستخدام PWM - لا توجد مكتبات خارجية مطلوبة // يعمل على أي لوحة تحتوي على أجهزة PWM (على سبيل المثال، Uno، Nano، Mega، ESP32) const int servoPin = 9; // دبوس PWM const int freq = 50; // 50 هرتز const intsolution = 8; // 8 بت (0-255) // حدود النبضة التي تمت معايرتها مسبقًا (بالميكروثانية) const int minPulseUs = 1000; // 1.0 مللي ثانية = 1000 ميكروثانية const int maxPulseUs = 2000; // 2.0 مللي ثانية = 2000 ميكروثانية void setup() { // تكوين PWM ledcSetup(0, freq,solution); // القناة 0 ledcAttachPin(servoPin, 0); } void setServoAngle(int angle) { // تقييد الزاوية إلى 0-180 angle = constrain(angle, 0, 180); // تحويل الزاوية إلى عرض النبضة (ميكرو ثانية) intpulseUs = minPulseUs + (angle(maxPulseUs - minPulseUs)) / 180؛ // تحويل عرض النبضة إلى دورة العمل (0-255) int Duty = (pulseUs255) / 20000؛ // 20000 μs = 20 مللي ثانية فترة ledcWrite(0, Duty); } حلقة باطلة() { setServoAngle(0); // الانتقال إلى 0 درجة تأخير (1000)؛ setServoAngle(90); // الانتقال إلى 90 درجة تأخير (1000)؛ setServoAngle(180); // الانتقال إلى 180 درجة تأخير (1000)؛ }
1. قم دائمًا بمعايرة كل جهاز على حدة- حتى اثنين من الماكينات من نفس النموذج يمكن أن يكون لهما تباين قدره ±0.1 مللي ثانية. اكتب رسمًا اختباريًا بسيطًا يمتد من 0.5 مللي ثانية إلى 2.5 مللي ثانية ولاحظ عرض النبض الدقيق عند 0° و180°.
2. استخدم مصدر طاقة منفصلًا– لا تقم مطلقًا بتشغيل المؤازرة مباشرة من دبوس 5V الخاص بوحدة التحكم الدقيقة (يمكن للطفرات الحالية إعادة ضبط اللوحة). يعمل الإمداد المنظم 5V/2A أو 4 بطاريات NiMH (4.8V) بشكل موثوق.
3. أضف مكثفًا كهربائيًا بسعة 100–470 ميكروفارادعبر محطات الطاقة في المؤازرة بالقرب من المؤازرة. هذا يمتص انخفاضات الجهد الناتجة عن بدء تشغيل المحرك المفاجئ.
4. تجنب تأخير البرامجأثناء تحرك المؤازرة. استخدم التوقيت غير المحظور (على سبيل المثال، أجهزة الحالة المعتمدة على millis()) حتى يتمكن برنامجك من التعامل مع المهام الأخرى.
5. للتطبيقات عالية الدقة (مثل الأذرع الآلية)، استخدم مؤقت PWM 16 بت والاستيفاء الخطي بين النقاط التي تمت معايرتها. ضع في اعتبارك أيضًا إضافة مقياس الجهد الراجع التناظري 10 بت لإغلاق الحلقة.
الوجبات الجاهزة الأساسية: يعد التحكم في المؤازرة باستخدام PWM أمرًا مباشرًا بمجرد تثبيت التردد عند 50 هرتز وتعيين الزاوية لعرض نبضة يتراوح بين 1.0 و2.0 مللي ثانية. ومع ذلك، فإن الموثوقية في العالم الحقيقي تأتي من المعايرة المناسبة، والطاقة الكافية، واستخدام الحدود المقاسة بدلاً من القيم النظرية. قم بتطبيق طريقة المعايرة الموضحة في القسم 2.4 على كل أجهزة مؤازرة جديدة تقوم بدمجها، وستحقق مشروعاتك حركة سلسة ودقيقة في كل مرة.
وقت التحديث:2026-04-02