تم النشر 2026-07-04
01إجابة سريعة
نعم يمكنك التحكم بمضاعفاتمحرك يستخدم متحكم STM32 عن طريق توليد إشارة PWM بتردد دقيق قدره 50 هرتز ودورة عمل متغيرة بين 1 مللي ثانية و 2 مللي ثانية. توفر الأجهزة الطرفية للمؤقت STM32، خاصة في وضع إخراج PWM، الدقة اللازمة للسلاسةمضاعفاتتحديد المواقع. تعمل هذه الطريقة مع معظم الهوايات القياسيةمضاعفاتs والعديد من برامج تشغيل المؤازرة الصناعية، ولكن يجب عليك التحقق من مستويات الجهد وحدود التيار وتوافق الإشارة قبل الاتصال. يعد اختيار تكوين المؤقت المناسب ودبوس GPIO أمرًا ضروريًا للتشغيل الموثوق، خاصة عند التحكم في العديد من الماكينات في وقت واحد.
02مقدمة
أنت تقوم ببناء نظام للتحكم في الحركة، والمحرك المؤازر لا يستجيب كما هو متوقع. يهتز الذراع، أو ينحرف الوضع، أو يرفض المحرك التحرك ببساطة. تشير هذه الأعراض غالبًا إلى سبب جذري شائع: توليد إشارة PWM غير مناسبة من وحدة التحكم الدقيقة. بالنسبة للمهندسين الذين يعملون مع STM32، لا يتمثل التحدي في كتابة التعليمات البرمجية فحسب، بل يتمثل في فهم كيفية عمل أجهزة المؤقت فعليًا، وقيم التكوين المهمة، ولماذا قد يفشل الإعداد الذي يبدو صحيحًا.
العديد من المشاريع التنموية تتوقف في هذه المرحلة. يمكن للمؤازرة التي تتصرف بشكل غير متوقع أثناء الاختبار أن تؤخر الجداول الزمنية للإنتاج، وتزيد من تكاليف تصحيح الأخطاء، وتخلق حالة من عدم اليقين بشأن بنية التحكم بأكملها. نادرا ما تكون المشكلة في المؤازرة نفسها. هو دائما تقريباتوليد إشارة PWMمن STM32. بدون تردد أساسي ثابت يبلغ 50 هرتز وتحكم دقيق في عرض النبضة، حتى أفضل الماكينات سيكون أداؤها ضعيفًا.
هذه المقالة مكتوبة للمهندسين وقادة المشاريع وصناع القرار الفنيين الذين يحتاجون إلى دمج التحكم المؤازر في نظام قائم على STM32. سنغطي تكوين الأجهزة وإعداد المؤقت والأخطاء الشائعة والفحوصات العملية التي تفصل النموذج الأولي العامل عن الفشل الميداني.
03جدول المحتويات
1. لماذا تعتبر دقة إشارة PWM مهمة للتحكم المؤازر
2. اختيار مؤقت STM32 المناسب لـ Servo PWM
3. تكوين مؤقت خطوة بخطوة لإشارة مؤازرة 50 هرتز
4. حساب قيم Prescaler والفترة
5. أخطاء التكوين الشائعة وأعراضها
6. التحكم في العديد من الماكينات بمؤقت واحد
7. يوصى باختيار دبوس GPIO
8. الأسئلة التي يطرحها المهندسون غالبًا حول التحكم المؤازر STM32
9. اختيار المؤازرة المناسبة وزوج STM32 لتطبيقك
04لماذا تعتبر دقة إشارة PWM مهمة للتحكم في المؤازرة
يفسر محرك سيرفو قياسي إشارة PWM عن طريق قياس مدة النبض العالي. عادةً ما يأمر عرض النبضة البالغ 1 مللي ثانية المؤازرة بالانتقال إلى 0 درجة، بينما يأمر 2 مللي ثانية بـ 180 درجة. ويجب أن تتكرر الإشارة بتردد ثابت قدره 50 هرتز، أي نبضة جديدة كل 20 مللي ثانية.
إذا قام مؤقت STM32 بتوليد تردد ينحرف، أو إذا تغير عرض النبضة حتى بمقدار 100 ميكروثانية، يصبح موضع المؤازرة غير قابل للتنبؤ به. وفي التطبيقات الدقيقة، يتفاقم هذا الخطأ. يمكن أن يترجم ارتعاش يبلغ 50 ميكروثانية في عرض النبضة إلى عدة درجات من الخطأ الموضعي، وهو أمر غير مقبول بالنسبة للأذرع الآلية، أو الكاميرات ذات المحورين، أو أنظمة تحديد المواقع الصناعية.
توفر أجهزة المؤقت STM32، عند تكوينها بشكل صحيح، دقة على مستوى الميكروثانية. ومع ذلك، يجب حساب إعدادات الساعة الافتراضية وقيم المقياس المسبق وسجلات إعادة التحميل التلقائي لتردد ساعة النظام المحدد لديك. يعد عدم التطابق هنا هو السبب الوحيد الأكثر شيوعًا لحدوث خلل في سيرفو أثناء الاختبار الأولي.
05اختيار مؤقت STM32 المناسب لـ Servo PWM
ليست كل أجهزة ضبط الوقت الموجودة على STM32 متساوية في التحكم المؤازر. يُفضل استخدام مؤقتات الأغراض العامة مثل TIM2 وTIM3 وTIM4 وTIM5 لأنها توفر قنوات مستقلة، كل منها قادر على توليد إشارة PWM منفصلة. يمكن أيضًا أن تعمل الموقتات المتقدمة مثل TIM1 وTIM8 ولكنها غالبًا ما تكون مخصصة لمهام التحكم الحركي الأكثر تعقيدًا.
عند اختيار مؤقت، ضع في اعتبارك ما يلي:
عدد القنوات: كل قناة يمكن أن تقود سيرفو واحد. إذا كنت بحاجة إلى ستة أجهزة، فاختر مؤقتًا بأربع قنوات على الأقل واستخدم مؤقتًا ثانيًا للاثنين المتبقيين.
دقة الموقت: مؤقت 16 بت يكفي للماكينات القياسية. جهاز ضبط الوقت 32 بت غير ضروري ويزيد من تعقيد التكوين.

مصدر الساعة: تأكد من توصيل المؤقت بساعة تظل ثابتة أثناء التشغيل. يعد استخدام مذبذب HSI أو HSE الداخلي أمرًا نموذجيًا، ولكن تحقق من التردد.
الاختيار العملي الشائع هو TIM3 على سلسلة STM32F103 أو STM32F4، والذي تم تكوينه في وضع PWM على القناة 1 حتى القناة 4. يوفر هذا الإعداد أربعة مخرجات مؤازرة مع الحد الأدنى من استخدام الموارد.
06تكوين مؤقت خطوة بخطوة لإشارة مؤازرة 50 هرتز
الهدف هو توليد إشارة PWM بفترة 20 مللي ثانية ودورة عمل متغيرة بين 1 مللي ثانية و 2 مللي ثانية. فيما يلي تسلسل التكوين بالكود الكاذب، بافتراض أن تردد ساعة النظام هو 72 ميجاهرتز:
1. تمكين ساعة الموقت
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
2. اضبط المقياس المسبق
يقوم المقياس المسبق 71 بتقسيم الساعة 72 ميجاهرتز إلى 1 ميجاهرتز، مما يعطي علامة مؤقت كل 1 ميكروثانية.
TIM_TimeBaseInitStructure.TIM_Prescaler = 71;
3. اضبط فترة التحميل التلقائي
فترة 19999 تؤدي إلى دورة 20 مللي ثانية (20000 علامة × 1 ميكروثانية).
TIM_TimeBaseInitStructure.TIM_Period = 19999;
4. تكوين وضع PWM
اضبط عرض النبضة للقناة 1. القيمة 1500 تقابل نبضة تبلغ 1.5 مللي ثانية، والتي تركز على المؤازرة.
TIM_OCInitStructure.TIM_Pulse = 1500;
5. تمكين إخراج PWM
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM3, ENABLE);
TIM_Cmd(TIM3, ENABLE);
6. اضبط دبوس GPIO على الوظيفة البديلة
قم بتكوين الدبوس كمخرج دفع وسحب AF لتوصيل مخرج المؤقت بالدبوس الفعلي.
بعد هذا التكوين، يتم تغيير عرض النبضة عن طريق تحديث سجل CCRx:
TIM_SetCompare1(TIM3, 1000);// 1 مللي ثانية نبض لمدة 0 درجة
07حساب قيم Prescaler والفترة
الصيغ واضحة ولكن يجب تطبيقها بشكل صحيح على ساعة النظام لديك.

تردد الموقت= ساعة النظام / (المقياس المسبق + 1)
فترة PWM= (قيمة التحميل التلقائي + 1) / تردد المؤقت
بالنسبة لساعة 72 ميجا هرتز وتردد المؤقت المطلوب 1 ميجا هرتز:
المقياس الأولي = 72,000,000 / 1,000,000 - 1 = 71
لمدة 20 مللي ثانية عند 1 ميجاهرتز:
قيمة إعادة التحميل التلقائي = 20,000 - 1 = 19,999
إذا كانت ساعة النظام لديك تبلغ 168 ميجاهرتز، كما هو الحال في بعض أجهزة STM32F4، يصبح المقياس المسبق 167، وتظل قيمة إعادة التحميل التلقائي 19,999. تحقق دائمًا من هذه الأرقام في بيئة التطوير الخاصة بك، حيث أن خطأ مكون من رقم واحد في المقياس المسبق سيؤدي إلى تغيير التردد بهامش كبير.
08أخطاء التكوين الشائعة وأعراضها
يواجه العديد من المهندسين هذه المشكلات أثناء الاختبار الأولي:
إذا كان سلوك المؤازرة غير منتظم بعد بضع ثوانٍ، فإن المشكلة المحتملة هي تغيير مصدر الساعة أو تجاوز مؤقت لإخراج PWM. قم بتعطيل المقاطعات غير الضرورية على قناة المؤقت أثناء تصحيح الأخطاء.
09التحكم في العديد من الماكينات بمؤقت واحد
يمكن لمؤقت STM32 واحد تشغيل ما يصل إلى أربع أجهزة باستخدام قنواته الأربع المستقلة. كل قناة لها سجل مقارنة خاص بها، مما يسمح بالتحكم في عرض النبضة الفردية مع مشاركة نفس التردد الأساسي.
للتحكم في ستة أو ثمانية أجهزة، استخدم مؤقتين. على سبيل المثال، TIM3 للقنوات 1-4 وTIM4 للقنوات 1-4. تأكد من مشاركة كلا المؤقتين في نفس المقياس المسبق والفترة للحفاظ على توقيت ثابت عبر جميع الماكينات.
من الأخطاء الشائعة تعيين أجهزة متعددة لنفس القناة عن طريق توصيل أسلاك الإشارة الخاصة بها بنفس الدبوس. هذا لا يعمل. يتطلب كل جهاز مؤازر دبوس إخراج مؤقت مخصص. خطط لتخصيص الدبوس الخاص بك مبكرًا في مرحلة تصميم ثنائي الفينيل متعدد الكلور لتجنب تعارضات التوجيه.
10يوصى باختيار دبوس GPIO
تحدد ورقة البيانات STM32 دبابيس GPIO المتصلة بقنوات المؤقت. بالنسبة إلى TIM3 على STM32F103:
القناة 1: PA6
Channel 2:PA7
Channel 3: PB0
Channel 4: PB1
These pins must be configured as alternate function push-pull output. Do not use a standard GPIO output mode, as that will not produce the PWM waveform.
When selecting pins, consider the voltage levels. The STM32 GPIO outputs 3.3 V logic. Most standard servos accept this signal, but some industrial servo drivers require 5 V logic. In that case, use a level shifter or a dedicated servo driver IC. Do not connect a 5 V servo signal directly to an STM32 pin without checking the datasheet for 5 V tolerance.
11 Questions Engineers Often Ask About STM32 Servo Control
Q: Can I use any STM32 timer for servo control?
Yes, but general-purpose timers like TIM2 through TIM5 are the easiest to configure. Basic timers like TIM6 and TIM7 do not have PWM output channels.
Q: What is the minimum system clock required?
A 16 MHz clock is sufficient for standard servos. Higher clock speeds like 72 MHz give finer resolution for the pulse width.
Q: How many servos can one STM32 control?
It depends on the number of timer channels. A typical STM32F103 has up to four channels per timer, and you can use multiple timers. With four timers, up to 16 servos are possible.
Q: Do I need an external power supply for the servos?
Yes. Do not power servos directly from the STM32 board. Use a separate 5 V or 6 V power supply rated for the total current draw of all servos.
Q: What happens if the pulse width exceeds 2 ms?
Some servos may attempt to move beyond their mechanical limits, causing damage. Always clamp the pulse value between your servo's specified range.
Q: Can I use interrupt-based timing instead of hardware PWM?
Technically yes, but it is not recommended. Software PWM consumes CPU cycles and introduces jitter. Hardware PWM is always more reliable.
Q: Why does my servo work with an Arduino but not with STM32?
The Arduino library hides the timer configuration. On STM32, you must manually set the prescaler and period. The most common reason is an incorrect prescaler value.
Q: How do I test if the PWM signal is correct?
Use an oscilloscope to measure the signal on the GPIO pin. Check the frequency (50 Hz) and the pulse width (1–2 ms). A logic analyzer is also sufficient.
Q: Is it possible to control a servo using DMA?
Yes, but it adds complexity. DMA can update the CCR register without CPU intervention, useful for multi-servo synchronized movements.
Q: What should I do if the servo still does not work?
Check the power supply voltage under load. A drop below 4.8 V can cause intermittent behavior. Also verify that the signal ground is connected to the servo ground.
12 Selecting the Right Servo and STM32 Pair for Your Application
Your choice of servo depends on the torque, speed, and precision requirements of your application. A small plastic-gear servo works for lightweight prototypes, but for industrial or continuous-duty applications, consider a metal-gear servo with feedback capability.
The STM32 you choose should have enough timer channels for your servo count. For a project with four servos, an STM32F103C8T6 is sufficient. For sixteen servos, move to an STM32F407 or STM32F429 with more timers and pins.
Before finalizing your design, verify the servo torque requirements against your mechanical load. If the servo stalls under load, the STM32 cannot fix it. Similarly, if the power supply cannot deliver the peak current, the servo will lose position.
For buyers comparing options, ask your supplier for the servo's operating voltage range, stall current, and recommended PWM specifications. Also confirm the STM32's timer capabilities for your specific model. A custom servo solution from a manufacturer like kpowerمضاعفات can provide application-specific tuning, but always validate the signal interface with your STM32 before committing to volume production.
When you are ready to move forward, send your servo specificationsومتطلبات عزم الدوران to your supplier. Request an engineering review of your PWM configuration to confirm compatibility. This step alone can eliminate weeks of debugging and ensure your motion control system performs as designed.
وقت التحديث: 2026-07-04