ذات مرة في مجرة بعيدة بعيدة كتبت مقالة قصيرة حول وحدة التحكم Piccolo المتخصصة من Texas Instruments ، والتي صممت للتحكم في محولات الطاقة والمحركات الكهربائية. أدوات التحكم هذه أدوات تطوير قوية جدًا في العديد من المهام وأردت أن أكتب شيئًا آخر عنها ... بسيط ومفيد.
لقد شعرت بالحيرة مؤخرًا لتطوير وحدة تحكم للتحكم في المحركات ، وبناءً على ذلك ، تم تشكيل موضوع لهذه المقالة - اليوم سأتحدث عن عملية تشكيل PWM ثلاثية الطور للتحكم في المحركات ، وكذلك شرح الاختلافات المفيدة بين TMS320F28 ووحدات التحكم الأخرى مثل STM32F334 و STM32G484 و XMC4200 وغيرها.
كحامل ، سأستخدم وحدة التحكم قيد التطوير ، للأسف ، لا أستطيع التحدث عن الجزء الحديدي بالتفصيل. ومع ذلك ، إذا قلت أن وحدة التحكم مبنية على أساس حزمة TMS320F28027 + DRV8353RSRGZT ، فيمكنك الاطلاع على ورقة بيانات برنامج التشغيل ورؤية مفهوم الدائرة العامة + هناك تصحيح الأخطاء على هذا الحجر والتصميم المرجعي مفتوح عليه.

من حيث المبدأ ، على نفس النوع من الدوائر ، من الممكن التحكم في محركات BLDC التي تستهلك مستويات الجهد و 3 مراحل العادية ، والتي تريد بالفعل إخراج الجيبية. سأعرض كلا الخيارين ، كما الطريق إلى الجيب يكمن في تشكيل مستويات الجهد.

قليلا عن الحديد
يتكون الجزء القوي للسائق من الناحية الأيديولوجية من 3 محولات نصف جسر ، وربما يتم تصنيع جميع أجهزة التحكم والتحكم في محركات BLDC في جميع المروحيات بطريقة مماثلة:

فرق واحد - ليس لدي المعدل المدخلات ، لأنه يتم تشغيل وحدة التحكم في البداية بجهد ثابت. مصدر الطاقة في حالتي هو مجموعة من بطاريات li-ion في شكل 18650 خلية ، يمكن للسائق DRV8353RSRGZT المستخدم التحكم في 3 جسور نصف فقط من الطاقة ، وكذلك في الإصدار المستخدم من الحجر ، كما يوجد أيضًا مضخمات صوتية مدمجة للعمل مع shunts كمستشعرات حالية مدمجة العاصمة / العاصمة ، والتي يمكن أن تهضم ما يصل إلى 70 ... 80V ويتم تكوين كل هذا بمرونة كبيرة عبر SPI. على سبيل المثال ، من المريح للغاية أن تكون قادرًا على ضبط الحد الأقصى الحالي لنبض التحكم في الترانزستور.
أيضًا في هذه السلسلة ، توجد برامج تشغيل مع مجموعة مختلفة من الوظائف ، على سبيل المثال ، هناك مع التحكم التناظرية ، وليس SPI أو بدون العاصمة / العاصمة وبدون المرجع أمبير. بالنسبة للسعر ، فهي ليست مختلفة تمامًا وأخذت أكثر "جرأة" كما قد تكون فهمت بالفعل. هذا الأمر كله يبدو جميلًا جدًا ، لكنني اقتربت تصميمًا ملائمًا من تصميم السائق وتسببت في مشكلتين كبيرتين. في الواقع ، هناك مشكلة واحدة فقط - وهذه مشكلة ارتفاع درجة الحرارة:

ولكن سبب هذه المشكلة سببان. في الواقع جوهر المشكلة هو ارتفاع درجة حرارة السائق نفسه. على الرسم البياني ، يتم تحميل السائق مع تيار 5A (بالنسبة له هو تقريبا الخمول) ولا شيء سوى السائق و MK نفسه يتم تسخينها قليلا. الترانزستورات ليست واضحة حتى ، لديهم درجة حرارة ثنائي الفينيل متعدد الكلور ، في 5A هناك خسائر حرارة ضئيلة.
- خطأ رقم 1
لقد طلب مني صديق لي ، بصراحة ، كنت أفكر في هذا الأمر باعتباره آخر شيء - لدى السائق وحدة تحكم تيار مستمر / تيار مستمر ، والذي يستقبل 15 ... 50V مدخلات ومخرجات 3.3 فولت لتشغيل MK ، والمنطق ، والمقارنة ، ومكبرات الصوت التشغيلية. يبدو أن مشاريعي تحتوي على رقائق LM5008 و LM5017 في شكل رقائق منفصلة وقد خفضت بهدوء 60 فولت إلى 3.3 فولت دون تسخين ملحوظ بمعدل 100-150 مللي أمبير ، لكن تبين أن كل شيء أصبح أكثر صعوبة - تحولت الكفاءة الإجمالية للمحول إلى حوالي 65-70٪ في الوقت الحالي 300 مللي أمبير! والحقيقة هي أن المحول نفسه يمكن أن يعطي 3.3V ، ولكن الكفاءة ستكون ضئيلة ، فمن الأفضل لضبط الجهد الناتج 10-12-15V. عندما كان الناتج 12V 100 مللي أمبير ، توقف السائق عن الاحماء عملياً ، وبلغت الكفاءة 88٪. يكمن حل المشكلة في خفض المدخلات 15 ... من 50 فولت إلى 12 فولت مع العاصمة / العاصمة المدمجة ، ومن ثم خفضها من 12V إلى 3.3V مع العاصمة / العاصمة الخارجية رخيصة بالفعل.
- خطأ رقم 2
الخطأ الثاني هو أكثر وضوحا وأول ما أخطأت فيه هو ما استطعت. والحقيقة هي أنه بالنسبة للرقائق الموجودة في حزمة QFN ، تتم إزالة الحرارة الرئيسية من خلال "البطن" ، وعادةً ما يتم وضعها على GND ، ومن خلال عدة vias (عبر) ، تتمسك بالأرض وتنتقل الحرارة إلى هناك بهدوء. في البداية ، لم أضع في الحسبان الكفاءة الهزيلة للتيار المدمج / المستمر مع اختلاف الجهد الكهربائي الكبير ، لذلك لم يزعجني أن القطرة الحرارية ("البطن") تشبثت بمضلع GND صلب على الطبقة الداخلية ، على الطبقة الخارجية التي لم يكن فيها النحاس تحت البطن كمضلع GND. نتيجة لذلك ، اتضح أن حوالي 0.5 واط من الحرارة يتم إطلاقها على الرقاقة ، وأنها تتبدد في الطبقة الداخلية للوحة ، أي أن الكفاءة رديئة للغاية. يكمن حل المشكلة في أنك تحتاج إلى إجراء اختبار أرضي على الطبقة الخارجية (الطبقة السفلية) وعدم القيام بذلك:

نتيجةً لذلك ، في المراجعة الثانية للحديد ، تم تصحيح هذه الأخطاء: تمت إضافة محول تيار مستمر / تيار 12-3.3V وتم إضافة مضلع GND بشكل إضافي على الطبقة السفلية وتم زرع وسادة الرقاقة عليه + وتم الحفاظ على مضلع الأرضية الصلبة الداخلي. بعد هذه التحسينات ، انخفضت درجة الحرارة في التشغيل المستمر من +82 إلى +43 درجة مئوية:

كما ترون ، نظرًا لانخفاض الفقدان ، انخفضت درجة الحرارة بشكل كبير في ظل نفس الظروف ، كما أن الحرارة موزعة الآن بشكل أكثر توازناً على مساحة اللوحة ولا تسخن محلياً إما السائق أو المتحكم الدقيق. من حيث المبدأ ، كان كل شيء من الحديد ، ولم يحدث شيء أكثر إثارة للاهتمام وعمل بشكل مستقر. نتيجة لذلك ، قد يوصون باستخدام برنامج التشغيل DRV8353 .
تنفيذ مرحلة التحول الأجهزة من 120 س
تتمثل إحدى ميزات الشبكة ثلاثية الطور في أن التيار في المراحل ليس متزامنًا ، ولكن يتم إزاحته بمقدار 120 o بالنسبة إلى المرحلة المجاورة. ما هو هذا التحول 120 س المرحلة بشكل عام؟ بعبارات بسيطة ، هذا هو تحول نقطة بداية الجيل بمقدار 1/3 من هذه الفترة. من وجهة النظر الرياضية ، تكون فترة الإشارة 2π ، مما يعني أنه يجب تحريك الإشارة الثانية بمقدار 2π / 3 ، والثالثة بمقدار 4π / 3. من وجهة نظر إلكترونية ، يتم تعيين الفترة من خلال فترة العد التنازلي لجهاز ضبط الوقت. على سبيل المثال ، عند تسجيل الوقت بتردد 60 MHz ، نريد الحصول على PWM بتردد 50 كيلو هرتز ، مما يعني أن فترة العد التنازلي المؤقت ستكون من 0 إلى 1200 (60000 Hz / 50 000 Hz = 1200). الآن ، للحصول على 3 مراحل مع التحول من 120 درجة ، لا نحتاج إلى لمس المرحلة الأولى ، إضافة +400 إلى القيمة الحالية للمرحلة الثانية ، إضافة + 800 إلى المرحلة الحالية.
إذا استخدمنا ميكروكنترولر على لب القشرة ، فيمكننا تنفيذ هذا التحول إما عن طريق كتابة صيغة رياضية أو باستخدام تزامن الأحداث. كان من المدهش دومًا بالنسبة لي أن ST و NXP وغيرهم لم يسجلوا فقط حيث سيتم كتابة قيمة التحول. لحسن الحظ ، فعلت TI هذا في TMS320F28xxx ، لتعيين التحول ، فقط اكتب سجل واحد! لن أخبركم عن السبب في أن حل البرنامج ليس هو الأمثل ، سأقول فقط أنه يعتبر صيغ MK غير سريعة جدًا. إن الموالية المزامنة من الأحداث أكثر ملاءمة بالفعل ، وفي هذا الوقت سأفعل ذلك ، لكن هذا الخيار لا يسمح بتغيير قيمة الطور أثناء الطيران ، أي بالنسبة لبعض الجسور التي تحولت طورًا مرة أخرى ، يبقى إصدار البرنامج فقط. هي ميزة القدرة على التحكم في أجهزة المرحلة؟ الأمر متروك لك لتقرير ، ومهمتي هي أن أقول لك أنه من الممكن. بالنسبة لي ، تعد هذه ميزة إضافية عندما نتحدث عن التحكم في محرك كهربائي أو محولات الجهد الكهربائي بإخراج ثلاثي الطور.
الآن دعونا تكوين توليد إشارات PWM في شكل 3 أزواج تكميلية مع الوقت الميت وتحول المرحلة. حتى الآن دون شرط. سأستخدم الأزواج التالية: EPWM1A + EPWM1B ، EPWM2A + EPWM2B و EPWM4A + EPWM4B. هذه هي الإشارات التي تنتقل من متحكم إلى السائق.
- الخطوة 1
من الضروري تكوين مُضاعِف GPIO بمساعدة سجل GPAMUX للعمل مع PWM وإيقاف عمليات سحب الإخراج إلى مصدر الطاقة ، بحيث عند تشغيل جميع الأرجل لا يكون لها سجل .1 ولا تفتح المفاتيح. بالتأكيد ستوفر الحماية الحالية ، لكن من الأفضل عدم القيام بذلك. تجدر الإشارة أيضًا إلى أنه للوصول إلى سجلات الإعداد ، تحتاج إلى الحصول عليها باستخدام الأمر EALLOW ثم إعادة تشغيل الحماية من الكتابة الفوقية باستخدام أمر EDIS .
void InitGPIOforPWM (void) { EALLOW; GpioCtrlRegs.GPAPUD.bit.GPIO0 = 1;
- الخطوة 2
إعداد توليد إشارة PWM. من الضروري الحصول على تردد قدره 50 كيلو هرتز وتحول طور قدره 120 درجة مئوية . في هذه الحالة ، يمكنني استخدام PWM المعتاد ، لأنه في وحدة التحكم هذه توجد أيضًا HRPWM ، من المهم تذكر ذلك. تم تسجيل الوحدة النمطية PWM في التردد الأساسي ، أي 60 ميجا هرتز ، وأظهرت كيفية ضبط تردد PLL في المقالة الأولى على TMS320 ، ولن أكرر ذلك ، ولكن في نهاية المقالة سيكون هناك أرشيف مع الرمز وسيكون من الممكن إلقاء نظرة خاطفة عليه.
void InitPWM (void) {
الآن ، المزيد من التفاصيل ... في سجل TBPRD ، اكتب الفترة ، أو بالأحرى ، "الفترة / 2" ، لأن يتم حساب الموقت في كلا الاتجاهين ، واتضح أن الفترة 600 تتوافق مع تردد إشارة خرج PWM البالغة 50 كيلو هرتز في وضع الزوج التكميلي. في سجل TBPHS نكتب قيمة المرحلة التي نحتاج إلى تحويلها ، في هذه الحالة 400 من 600 ، أي ما يعادل 2π / 3. تجدر الإشارة إلى أننا لا نتحرك في المرحلة الأولى ، لذلك التحول هو 0 ، بالنسبة للمرحلة الثانية ، يكون التحول 400 ، على التوالي ، ولكن بالنسبة للمرحلة الثالثة ، من المنطقي أن تكتب 800 ، ولكن 800 من 600 بطريقة ما ليس حقًا ... لذلك يكتبون التحول غير المتعلق بالمرحلة الأولى ، ولكن بالنسبة إلى المرحلة السابقة ، أي المرحلة الثانية. نتيجة لذلك ، حصلنا على ذلك في المرحلة الثالثة نكتب 400 ، وهذا يقابل 2π / 3 بين المرحلة 2 و 3 ، وبما أن المرحلة الثانية قد تحولت بالفعل ، فسيكون هناك "2π / 3 + 2π / 3 = 4π" بين المرحلتين 1 و 3 / 3 "ومن وجهة نظر الإلكترونيات كل شيء يبدو منطقيا.
من أجل أن تفهم المراحل من يتحرك بالنسبة لمن ، هناك حاجة إلى رئيس ، لذلك تم تعيين EPWM1 باستخدام بت PHSEN لإتقان الوضع ، و EPWM2 و EPWM4 ، على التوالي ، كعبيد. باستخدام بت SYNCOSEL ، يتم أيضًا ضبط "نقطة" التزامن ، أي من أين تقرأ التحول من. تتم مزامنة EPWM1 مع بداية المؤقت ، أي مع فترة الصفر ، ومزامنة EPWM2 و EPWM4 بالفعل بالنسبة لحافة إشارة القناة السابقة: القناة السابقة لـ EPWM2 هي EPWM1 ، وهي EPWM2.
الآن يبقى لتشغيل أزواج تكميلية وتعيين مدة الميت. باستخدام بتات POLSEL ، قمنا بتعيين PWM غير معكوس ، أي عند الوصول إلى القيمة المحددة للمقارنة (المرجع) ، يتم إنشاء سجل عند الإخراج. 1. في OUT_MODE ، حددنا توليد الوقت الموقت على الحافة وسقوط الإشارة. وفقا لذلك ، في سجلات DBFED و DBRED اكتب مدة الوقت الميت في القراد.
- الخطوة 3
الآن يبقى لكتابة قيمة عامل الواجب في سجل CMPA المقابلة لكل قناة ويمكنك مراقبة النتيجة.
EPwm1Regs.CMPA.half.CMPA = 300;

فويلا! ترتبط تحقيقات الذبذبات بإخراج برنامج التشغيل. القناة الصفراء هي EPWM1 لدينا ، وهذا هو ، سيد. القناة الزرقاء هي EPWM2 ويتم إزاحتها 2π / 3 (أو 400 عينة) نسبة إلى القناة الصفراء ، ويتم إزاحة القناة الخضراء 400 عينة أخرى. وبالتالي نحصل على 3 مراحل ، حيث يتم تبديل كل مرحلة بمقدار 120 درجة مئوية .
دعنا الآن ننقل تحقيقات الذبذبات من مخرج جسر القدرة إلى إشارات التحكم التي تخرج من المتحكم الدقيق وتأكد من وجود وقت وفاة داخل الزوج التكميلي:

كما ترون ، فإن الوقت الميت المحدد يتوافق مع الوقت الحقيقي. مدة العينة الواحدة هي 1 / 60،000،000 هرتز = 16.6 نانوثانية ونحصل على 20 عينة ، أي ما يعادل الوقت الميت 20.6 16 نانوثانية = 332 نانوثانية ، * وهو ما يقرب من ما لوحظ على الذبذبات.
في الواقع حيث يمكن أن يأتي هذا في متناول يدي ، في الشكل الذي هو عليه الآن. الخيار الأكثر وضوحًا هو محولات dc / dc متعددة الأطوار ، للراغبين في google بمحول dc / dc المتداخل . هذا هو حل تقني مثير للاهتمام للغاية يمكن أن يقلل بشكل كبير من حجم محاثات الطاقة ، ويقلل من السعة الإخراج للمكثفات ، وكذلك زيادة الكفاءة. على TMS320F28027 بسيط ، يمكنك تنفيذ محول من 4 مراحل وسيتم تنفيذ كل هذا ببساطة في الكود وفي الأجهزة فقط.
نحن نولد جهد التيار المتردد ثلاثي المراحل
في العديد من المشاكل ، لن يكون كافياً للحصول على قيم منفصلة من 0 أو VCC عند الخرج ؛ هناك حاجة إلى موجة جيبية. لدي مقال يتحدث عن تشكيل جهد التيار المتردد أحادي الطور ويتم استخدام الطريقة "المجدولة" هناك ، أي تم حساب قيم الموجة الجيبية في البداية. من حيث المبدأ ، يمكن القيام بذلك أيضًا من أجل المراحل الثلاث ، لكنني أرغب في عرض خيار بديل ، ألا وهو حساب قيمة الواجب في الوقت الفعلي أو أثناء الطيران.
هناك ميزة واحدة. تردد PWM في هذه الحالة هو أيضًا 50 كيلو هرتز ويتم ضبط إزاحة الطور بين فترات هذه الإشارة. وفقًا لذلك ، عندما نقوم بتعديل الجيوب الأنفية بتردد 50 هرتز ، سيتم "تغيُّر" مرحلة طور الأجهزة ، وستظل موجودة بين PWMs ، ولكن ليس داخل الجيوب الأنفية ، لذلك يجب أن يتم ذلك برمجيات. علم المثلثات هو شيء ثقيل بالنسبة إلى TMS320F28027 ، لكنه ليس مشغولًا جدًا معي ، لذلك دعه يحسب. إذا كان لديك مهمة تتطلب الكثير من العمليات الحسابية ، فأنت بحاجة إلى وحدة تحكم مع TMU و FPU ، على سبيل المثال ، TMS320F280049 ، والتي يمكن أن تحول الرياضيات بشكل أسرع.
لتحميل قيم الواجب في PWM ، نحتاج إلى مؤقت ، ستحدد الفترة الزمنية تردد أخذ العينات. أحتاج إلى فترة 20 مللي ثانية (1/50 هرتز = 20 مللي ثانية) وسأخذ عدد الخطوات في الجيوب الأنفية ، دعنا نقول 20 ، ونتيجة لذلك ، يجب إنشاء مقاطعة بتردد قدره 0.02 ثانية / 20 = 0.001 مللي ثانية = 1 كيلو هرتز وفي هذه المقاطعة سأكتب القيمة إلى PWM . للبساطة ، سأستغرق مؤقت CPU0 مؤقتًا وأهيئه :
void InitTimer0ForGenerator (void) { EALLOW; PieVectTable.TINT0 = &cpu_timer0_isr; EDIS; InitCpuTimers(); ConfigCpuTimer(&CpuTimer0, 60, 1000); CpuTimer0Regs.TCR.bit.TIE = 1; CpuTimer0Regs.TCR.bit.TSS = 0; IER |= M_INT1; PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
تعد وظائف InitCpuTimers و ConfigCpuTimer قياسية ، وجميع الإعدادات موجودة فيها ، نحتاج فقط إلى نقل التردد الأساسي (60 ميجاهرتز) وفترة الحساب بالميكروثانية (1000 μs = 1 مللي ثانية) ، أي ما يعادل 1 كيلو هرتز ، ونحن في حاجة إليها. لذا ، في وظيفة التكوين ، يمكننا تمكين المقاطعات وتمرير عنوان معالج المقاطعة ، حيث سيحدث كل شيء.
من الضروري الآن "اختراع" صيغة الجيب مرة أخرى ، لذلك تحتاج إلى معرفة علم المثلثات المدرسية وهذا كل شيء. وهكذا ... لدينا وظيفة y = sin (x) لنرسم هذه الوظيفة:

كما ترون في الرسم البياني ، تتراوح سعة y من -1 إلى 1 ، لكننا نريد من 0 إلى 1 ، لأن مع الحد الأدنى من السعة لدينا 0V ، وبحد أقصى (أي ما يعادل 1) لدينا + VCC. "لرسم" -1 ... + 1 نحتاج إلى تغذية ثنائية القطب ، لكن الأمر ليس كذلك. تحتاج إلى تحويل المخطط في اتجاه إيجابي. إذا قمنا برفعها فقط ، فسيصبح من 0 إلى +2 ، ويمكننا فقط +1. لذلك تحتاج إلى القسمة على 2 وشيء فقط! لنبدأ بمجرد القسمة والتخطيط لـ y = (sin (x) / 2):

آها! يحتوي الرسم البياني الآن على نطاق من -0.5 إلى +0.5 ، أي أن السعة هي 1. إنه بالفعل أفضل ، لكننا لم نتخلص بعد من القيم السلبية ، لذلك دعونا نحول الرسم البياني إلى 0.5 ، لذلك نحن بحاجة فقط إلى إضافة هذه القيمة إلى النتيجة والحصول على الصيغة y = 0.5 + (sin (x) / 2) ورسم الرسم البياني لهذه الوظيفة:

الآن أصبح كل شيء مثاليًا تمامًا: الجيوب الأنفية لها سعة 0 إلى 1 ، والقيم السلبية غائبة. تصف الصيغة y = 0.5 + (sin (x) / 2) المرحلة الأولى ، والآن من الضروري إضافة تحول مرحلة للحصول على المرحلتين 2 و 3. للقيام بذلك ، قم بطرح 2π / 3 و 4π / 3 من x ، على التوالي ، والحصول على الصيغ المتبقية المراحل y = 0.5 + (sin (x-2π / 3) / 2) و y = 0.5 + (sin (x-4π / 3) / 2). نحن نبني 3 رسوم بيانية ونرى ما إذا كانت تبدو الحقيقة:

ليس سيئا! تشبه الصورة ما يتم رسمه عادة في كتب الهندسة الكهربائية عندما يتحدثون عن شبكة ثلاثية الطور أو محركات غير متزامنة. بالمناسبة ، 2.0943 هي 2π / 3 ، و 4.1866 هي 4π / 3 ، على التوالي ، لقد عدتها للتو على الفور وتظهر في شفرتي. المجموع لدينا 3 معادلات:
- المرحلة أ - ص = 0.5 + (الخطيئة (س) / 2)
- المرحلة ب - ص = 0.5 + (الخطيئة (x-2π / 3) / 2)
- المرحلة C - y = 0.5 + (sin (x-4π / 3) / 2)
من جانب الرياضيات ، يبدو أن كل شيء بسيط وواضح ، ولكن يجب الآن تكييفه ليتناسب مع حقائق المتحكم الدقيق. موجة الجيب الخاصة بنا ليست تناظرية ، ولكنها تحتوي على "خطوات" ، أي أنها منفصلة ، لأننا لا نستطيع ضبط الجهد الكهربائي أو الجهد الكهربي فقط إلا على 0V أو + 15V (VCC) في حالتي. في وقت سابق ، كتبت أنه سيكون لدي 20 خطوة ، لذلك سيكون لدي 20 حسابًا لفترة واحدة.
أولاً ، لنقرر ما يجب استبداله بـ x . فترة الجيبية هي 2π ، مما يعني أن خطوة أخذ العينات ستكون 2π / 20 . وفقًا لذلك ، سيتألف الجيوب الأنفية من 20 نقطة ، كما لو كنا نبني رسمًا بيانيًا على النقاط ، ونقارب بينهما. نتيجة لذلك ، ستكون القيمة في الخطوة الأولى هي sin (2π * (1/20) ، في الخطوة الثانية sin (2π * (2/20)) ، في الخطوة الثالثة * sin (2π (3/20)) وهكذا ، عندما نكون إذا وصل إلى 20/20 ، فإن هذا يعني نهاية الفترة وسيكون من الضروري البدء في الحساب مرة أخرى ، وبناءً على البيانات الواردة ، فلنصحح الصيغ:
- المرحلة A - y = 0.5 + (sin (2π * (n / N)) / 2)
- المرحلة ب - ص = 0.5 + (الخطيئة (2π * (n / N) -2π / 3) / 2)
- المرحلة C - y = 0.5 + (sin (2π * (n / N) -4π / 3) / 2)
الآن ، نعتبر الآن قيمة الجيب في كل نقطة محددة على الرسم البياني. وفقًا لذلك ، n هي الخطوة الحالية ، N هي الخطوة الكلية (20). بعد هذه الصيغ ، نحصل على قيمة من 0 إلى 1 ، ولكن في الواقع نحن لا نعمل بسعة مجردة. السعة في حالتنا تعتمد على دورة العمل ، لأن يختلف الواجب من 0 إلى 600 (من إعدادات PWM) ، ثم 0 تساوي 0 وواحد يعادل 600. وبناءً على ذلك ، دعنا نعيد حسابه في صيغة حقيقية للحصول على القيمة التي سيتم تحميلها في سجل CMPA PWM :
- المرحلة A - الواجب 1 = A (0.5 + (sin (2π (n / N)) / 2))
- المرحلة B - الواجب 2 = A (0.5 + (sin (2π (n / N) -2π / 3) / 2))
- المرحلة C - الواجب 4 = A (0.5 + (sin (2π (n / N) -4π / 3) / 2))
وفقًا لذلك ، A هي القيمة القصوى للسعة ، أي 600 ، n هي الخطوة الحالية ، N هو العدد الإجمالي للخطوات (20). قيم الواجب 1 ، الواجب 2 ، الواجب 4 هي القيم الحقيقية المحولة لعامل الواجب ، والتي يتم تحميلها في CMPA. الآن دعنا نكتب الكود الخاص بمعالج المقاطعة المحدث ونعلن عن كل المتغيرات الضرورية:
float activeStep = 0.0; float amplitude = 600.0; float allStep = 20.0; const float pi = 3.1415;
الشفرة ، كما ترى ، هي أبسطها ، إذا فهمت ما هو مطلوب للقيام به والرياضيات البسيطة في المشكلة التي يتعين حلها. في كل مرة يتم استدعاء المقاطعة ، نقوم بزيادة متغير activeStep ، الذي يحتوي على رقم الخطوة ، ويتغير من 0 إلى 20 ثم تتم إعادة تعيينه. اتضح أننا في فترة واحدة نقوم بتنفيذ 20 خطوة و 20 عملية حسابية لكل مرحلة. لكي لا أحسب 2π / 3 و 4π / 3 في الصيغة طوال الوقت ، أحسبهم على الفور لاستخدامهم في الثوابت.
تحولت الحسابات إلى الحد الأدنى ، لهذا MK هو لا شيء على الإطلاق. إذا رغبت في ذلك ، يمكن زيادة عدد النقاط بشكل كبير ، على سبيل المثال ، ما يصل إلى 200. كل هذا يتوقف على المهمة. يحدث تغيير تردد PWM عن طريق تغيير تكرار مكالمة المقاطعة وعدد الخطوات. يمكنك أيضًا تغيير السعة المتغيرة وتغيير الجهد عند إخراج محول الطاقة.
بعد تنزيل الرمز إلى متحكم ، سوف تحصل على الصورة المقابلة:

إذا قمت بتمديد الرسم البياني على طول Y ، فسيصبح من الأفضل رؤية عيوب الإشارة. هذا ناتج عن قلة عدد خطوات أخذ العينات ، يتم تطبيق قاعدة شرطية: كلما زاد عدد النقاط ، زاد عدد الإشارة.

استنتاج
تحدثت اليوم عن عملية تشكيل تحول المرحلة في الأنظمة متعددة المراحل ، لا يوجد شيء معقد من حيث المبدأ ، خاصة عند استخدام TMS320F28. الباقي يعود إلى الخوارزميات ، من حيث المبدأ ، على شبكة الإنترنت ، وهناك العديد من المقالات التي تحكم المضغ والمحركات بدون فرش ، وغير متزامن وجميع أنواع الآخرين ، يمكنك فقط تحويل المنطق.
آمل أن تكون هذه المواد مفيدة وليست مملة بشكل خاص للقراءة. كما هو الحال دائمًا ، يتم إرفاق المصدر:
أرشفة مع المشروع ل Code Composer Studio