- ما هو SPWM (تعديل عرض النبض الجيبي)؟
- كيف يعمل العاكس SPWM
- المكونات المطلوبة لبناء SPWM العاكس
- بناء الدائرة العاكس SPWM
- برنامج Arduino لمحول SPWM
- اختبار حلبة العاكس TL494 PWM
غالبًا ما تكون هناك حاجة إلى دارات العاكس حيث لا يمكن الحصول على مصدر التيار المتردد من الشبكة. تُستخدم دائرة العاكس لتحويل طاقة التيار المستمر إلى طاقة التيار المتردد ويمكن تقسيمها إلى نوعين هما محولات موجة جيبية نقية أو محولات موجة مربعة معدلة. محولات الموجة الجيبية النقية هذه باهظة الثمن ، حيث تكون محولات الموجة المربعة المعدلة غير مكلفة. تعرف على المزيد حول أنواع مختلفة من العاكس هنا.
في مقال سابق ، لقد أوضحت لك كيفية عدم عمل محول موجة مربعة معدل من خلال معالجة المشكلات المرتبطة به. لذلك في هذه المقالة ، سأقوم بصنع عاكس بسيط لموجة جيبية نقية باستخدام Arduino ، وسأشرح مبدأ عمل الدائرة.
إذا كنت تقوم بعمل هذه الدائرة ، فالرجاء ملاحظة أن هذه الدائرة لا تتميز بأي ردود فعل ، ولا حماية ضد التيار الزائد ، ولا توجد حماية ماس كهربائى ، ولا حماية لدرجة الحرارة. ومن ثم تم إنشاء هذه الدائرة وعرضها للأغراض التعليمية فقط ، ولا يُنصح مطلقًا ببناء واستخدام هذا النوع من الدوائر للأجهزة التجارية. ومع ذلك ، يمكنك إضافتها إلى دائرتك إذا لزم الأمر ، مثل دوائر الحماية الشائعة الاستخدام
تمت مناقشة حماية الجهد الزائد ، وحماية التيار الزائد ، وحماية القطبية العكسية ، وحماية الدائرة القصيرة ، ووحدة التحكم في التبديل السريع ، وما إلى ذلك بالفعل.
تنبيه: إذا كنت تقوم بعمل هذا النوع من الدوائر ، فيرجى توخي مزيد من الحذر بشأن ارتفاع الجهد والجهد الناتج عن إشارة التبديل إلى الإدخال.
ما هو SPWM (تعديل عرض النبض الجيبي)؟
وكما يوحي اسمها، SPWM تقف على S inusoidal P ulse W idth M odulation. كما تعلم بالفعل ، فإن إشارة PWM هي إشارة يمكننا من خلالها تغيير تردد النبضة وكذلك في الوقت المحدد ووقت الراحة ، وهو ما يُعرف أيضًا بدورة العمل. إذا كنت تريد معرفة المزيد عن PWM ، يمكنك قراءتها هنا. لذلك ، من خلال تغيير دورة العمل ، نقوم بتغيير متوسط جهد النبض. توضح الصورة أدناه أن-
إذا أخذنا في الاعتبار إشارة PWM التي تقوم بالتبديل بين 0 - 5V والتي لها دورة عمل بنسبة 100٪ ، فسنحصل على متوسط جهد خرج يبلغ 5 فولت ، مرة أخرى إذا اعتبرنا نفس الإشارة مع دورة عمل بنسبة 50٪ ، فسنحصل الحصول على جهد الخرج 2.5 فولت ، ودورة العمل 25٪ ، نصف ذلك. هذا يلخص المبدأ الأساسي لإشارة PWM ، ويمكننا الانتقال إلى فهم المبدأ الأساسي لإشارة SPWM.
A الجهد شرط هو في المقام الأول الجهد القياس الذي يغير في حجم مع مرور الوقت، ويمكننا أن إنتاج هذا السلوك من موجة جيبية التي تتغير باستمرار دورة العمل من موجة PWM ، أدناه يبين صورة ذلك.
إذا نظرت إلى المخطط أدناه ، فسترى أن هناك مكثفًا متصلًا بإخراج المحول. هذا المكثف مسؤول عن تجانس إشارة التيار المتردد من تردد الموجة الحاملة.
سوف تقوم إشارة الإدخال المستخدمة بشحن وتفريغ المكثف وفقًا لإشارة الإدخال والحمل. نظرًا لأننا استخدمنا إشارة SPWM عالية التردد جدًا ، فستكون لها دورة عمل صغيرة جدًا مثل 1 ٪ ، ودورة العمل هذه 1 ٪ ستشحن المكثف قليلاً ، ودورة العمل التالية هي 5 ٪ ، وهذا سوف يشحن مرة أخرى المكثف أكثر من ذلك بقليل ، سيكون للنبضة التالية دورة عمل بنسبة 10٪ وسيشحن المكثف أكثر قليلاً ، وسنطبق الإشارة حتى نصل إلى دورة عمل بنسبة 100٪ ومن هناك ، سنعود للأسفل إلى 1٪. سيؤدي هذا إلى إنشاء منحنى سلس للغاية مثل موجة جيبية عند الإخراج. لذلك ، من خلال توفير القيم المناسبة لدورة العمل عند الإدخال ، سيكون لدينا موجة جيبية للغاية عند الإخراج.
كيف يعمل العاكس SPWM
تُظهر الصورة أعلاه قسم القيادة الرئيسي لعاكس SPWM ، وكما ترى ، فقد استخدمنا اثنين من وحدات MOSFET ذات القناة N في تكوين نصف الجسر لقيادة محول هذه الدائرة ، لتقليل ضوضاء التحويل غير المرغوب فيها وحماية MOSFET ، لقد استخدمنا 1N5819 الثنائيات المتوازية مع MOSFETs. لتقليل أي طفرات ضارة تم إنشاؤها في قسم البوابة ، استخدمنا مقاومات 4.7 أوم موازية لثنائيات 1N4148. وأخيرا، و يتم تكوين BD139 وBD 140 الترانزستورات في دفع سحب التكوينلقيادة بوابة MOSFET ، لأن هذا MOSFET لديه سعة بوابة عالية جدًا ويتطلب ما لا يقل عن 10 فولت عند القاعدة للتشغيل بشكل صحيح. تعرف على المزيد حول عمل مكبرات الصوت Push-Pull هنا.
لفهم مبدأ عمل الدائرة بشكل أفضل ، قمنا بتقليصها إلى نقطة حيث يكون هذا القسم من MOSFET قيد التشغيل. عندما يكون MOSFET في التيار ، يتدفق أولاً عبر المحول ثم يتم تأريضه بواسطة MOSFET ، وبالتالي سيتم أيضًا إحداث تدفق مغناطيسي في الاتجاه الذي يتدفق فيه التيار ، وسيقوم قلب المحول بتمرير التدفق المغناطيسي في الملف الثانوي ، وسوف نحصل على نصف دورة موجبة للإشارة الجيبية عند الخرج.
في الدورة التالية ، يكون الجزء السفلي من الدائرة في الجزء العلوي من الدائرة متوقفًا ، ولهذا السبب قمت بإزالة الجزء العلوي ، والآن يتدفق التيار في الاتجاه المعاكس ويولد تدفقًا مغناطيسيًا في هذا الاتجاه ، وبالتالي ينعكس اتجاه التدفق المغناطيسي في القلب. تعرف على المزيد حول عمل MOSFET هنا.
الآن ، نعلم جميعًا أن المحول يعمل عن طريق تغيرات التدفق المغناطيسي. لذا ، فإن تشغيل وإيقاف تشغيل كل من MOSFETs ، أحدهما مقلوب إلى الآخر والقيام بذلك 50 مرة في الثانية ، سيولد تدفقًا مغناطيسيًا متذبذبًا لطيفًا داخل قلب المحول وسيؤدي التدفق المغناطيسي المتغير إلى إحداث جهد في الملف الثانوي مثل نعرفه بقانون فاراداي. هذه هي الطريقة التي يعمل بها العاكس الأساسي.
دائرة العاكس SPWM الكاملة المستخدمة في هذا المشروع مذكورة أدناه.
المكونات المطلوبة لبناء SPWM العاكس
SL. لا |
القطع |
نوع |
كمية |
1 |
Atmega328P |
IC |
1 |
2 |
IRFZ44N |
موسفيت |
2 |
3 |
139 دينار بحريني |
الترانزستور |
2 |
4 |
140 دينار بحريني |
الترانزستور |
2 |
5 |
22pF |
مكثف |
2 |
6 |
10 آلاف ، 1٪ |
المقاوم |
1 |
7 |
16 ميجا هرتز |
كريستال |
1 |
8 |
0.1 فائق التوهج |
مكثف |
3 |
9 |
4.7R |
المقاوم |
2 |
10 |
1N4148 |
الصمام الثنائي |
2 |
11 |
إل إم 7805 |
منظم ضغط كهربي |
1 |
12 |
200 فائق التوهج ، 16 فولت |
مكثف |
1 |
13 |
47 فائق التوهج ، 16 فولت |
مكثف |
1 |
14 |
2.2 فائق التوهج ، 400 فولت |
مكثف |
1 |
بناء الدائرة العاكس SPWM
بالنسبة لهذا العرض التوضيحي ، تم إنشاء الدائرة على Veroboard ، بمساعدة التخطيطي ، عند إخراج المحول ، ستتدفق كمية هائلة من التيار عبر الاتصال ، لذلك يجب أن تكون وصلات التوصيل سميكة قدر الإمكان.
برنامج Arduino لمحول SPWM
قبل المضي قدمًا والبدء في فهم الكود ، دعنا نوضح الأساسيات. من مبدأ العمل أعلاه ، تعلمت كيف ستبدو إشارة PWM عند الإخراج ، والآن يبقى السؤال كيف يمكننا إنشاء مثل هذه الموجة المتغيرة عند دبابيس الإخراج في Arduino.
لعمل إشارة PWM المتغيرة ، سنستخدم مؤقت 16 بت 1 مع إعداد مقياس مسبق 1 ، والذي سيمنحنا 1600/16000000 = 0.1 مللي ثانية لكل عدد إذا أخذنا في الاعتبار نصف دورة واحدة لموجة جيبية ، هذا يناسب 100 مرة بالضبط خلال نصف دورة الموجة. بعبارات بسيطة ، سنتمكن من اختبار الموجة الجيبية 200 مرة.
بعد ذلك ، يتعين علينا تقسيم الموجة الجيبية إلى 200 قطعة وحساب قيمها مع ارتباط السعة. بعد ذلك ، يتعين علينا تحويل هذه القيم إلى قيم عداد المؤقت بضربها بحد العداد. أخيرًا ، يتعين علينا وضع هذه القيم في جدول بحث لإدخالها إلى العداد وسنحصل على الموجة الجيبية.
لتبسيط الأمور قليلاً ، أستخدم رمز SPWM مكتوب جيدًا من GitHub والذي تم إنشاؤه بواسطة Kurt Hutten.
الكود بسيط للغاية ، نبدأ برنامجنا بإضافة ملفات الرأس المطلوبة
# تضمين # تضمين
بعد ذلك ، لدينا جدولا بحث لدينا سنحصل من خلاله على قيم عداد المؤقت.
int lookUp1 = {50، 100، 151، 201، 250، 300، 349، 398، 446، 494، 542، 589، 635، 681، 726، 771، 814، 857، 899، 940، 981، 1020، 1058، 1095 ، 1131 ، 1166 ، 1200 ، 1233 ، 1264 ، 1294 ، 1323 ، 1351 ، 1377 ، 1402 ، 1426 ، 1448 ، 1468 ، 1488 ، 1505 ، 1522 ، 1536 ، 1550 ، 1561 ، 1572 ، 1580 ، 1587 ، 1593 ، 1597 ، 1599 ، 1600 ، 1599 ، 1597 ، 1593 ، 1587 ، 1580 ، 1572 ، 1561 ، 1550 ، 1536 ، 1522 ، 1505 ، 1488 ، 1468 ، 1448 ، 1426 ، 1402 ، 1377 ، 1351 ، 1323 ، 1294 ، 1264 ، 1233 ، 1200 ، 1166 ، 1131 ، 1095 ، 1058 ، 1020 ، 981 ، 940 ، 899 ، 857 ، 814 ، 771 ، 726 ، 681 ، 635 ، 589 ، 542 ، 494 ، 446 ، 398 ، 349 ، 300 ، 250 ، 201 ، 151 ، 100 ، 50 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ،0 ، 0 ، 0} ؛ int lookUp2 = {0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 50 ، 100 ، 151 ، 201 ، 250 ، 300 ، 349 ، 398 ، 446 ، 494 ، 542 ، 589 ، 635 ، 681 ، 726 ، 771 ، 814 ، 857 ، 899 ، 940 ، 981 ، 1020 ، 1058 ، 1095 ، 1131 ، 1166 ، 1200 ، 1233 ، 1264 ، 1294 ، 1323 ، 1351 ، 1377 ، 1402 ، 1426 ، 1448 ، 1468 ، 1488 ، 1505 ، 1522 ، 1536 ، 1550 ، 1561 ، 1572 ، 1580 ، 1587 ، 1593 ، 1597 ، 1599 ، 1600 ، 1599 ، 1597 ، 1593 ، 1587 ، 1580 ، 1572 ، 1561 ، 1550 ، 1536 ، 1522 ، 1505 ، 1488 ، 1468 ، 1448 ، 1426 ، 1402 ، 1377 ، 1351 ، 1323 ، 1294 ، 1264 ، 1233 ، 1200 ، 1166 ، 1131 ، 1095 ، 1058 ، 1020 ، 981 ، 940 ، 899 ، 857 ، 814 ، 771 ، 726 ، 681 ، 635 ، 589 ، 542 ، 494 ، 446 ، 398 ، 349 ، 300 ، 250 ،201 ، 151 ، 100 ، 50 ، 0} ؛
بعد ذلك ، في قسم الإعداد ، نقوم بتهيئة سجلات التحكم في عداد المؤقت لتكون واضحة في كل منها. لمزيد من المعلومات ، تحتاج إلى تصفح ورقة البيانات الخاصة بـ atmega328 IC.
TCCR1A = 0b10100010 ؛ / * 10 واضح عند التطابق ، مضبوط في الأسفل من أجل compA. 10 واضح عند المباراة ، مضبوطة في الأسفل لـ compB. 00 10 WGM1 1: 0 للشكل الموجي 15. * / TCCR1B = 0b00011001 ؛ / * 000 11 WGM1 3: 2 للشكل الموجي 15. 001 لا يوجد مقياس مسبق على العداد. * / TIMSK1 = 0b00000001 ؛ / * 0000000 1 تمكين مقاطعة إشارة TOV1. * /
بعد ذلك ، نقوم بتهيئة سجل التقاط المدخلات بقيمة محددة مسبقًا تبلغ 16000 حيث سيساعدنا ذلك في إنشاء 200 عينة بالضبط.
ICR1 = 1600 ؛ // فترة بلورة 16 ميجا هرتز ، لتردد تبديل 100 كيلو هرتز لكل 200 تقسيم فرعي لكل دورة موجة جيبية 50 هرتز.
بعد ذلك ، نقوم بتمكين المقاطعات العالمية من خلال استدعاء الوظيفة ،
سي () ؛
أخيرًا ، قمنا بتعيين Arduino pin 9 و 10 كإخراج
DDRB = 0b00000110 ؛ // تعيين PB1 و PB2 كنواتج.
هذا يمثل نهاية وظيفة الإعداد.
يظل قسم الحلقة في الكود فارغًا لأنه برنامج يعمل على مقاطعة عداد المؤقت.
حلقة فارغة(){؛ /*لا تفعل شيئا…. إلى الأبد!*/}
بعد ذلك ، حددنا متجه تجاوز timer1 ، تحصل وظيفة المقاطعة هذه على مكالمة بمجرد تجاوز المؤقت 1 وتوليد مقاطعة.
ISR (TIMER1_OVF_vect) {
بعد ذلك ، نعلن عن بعض المتغيرات المحلية كمتغيرات ثابتة وقد بدأنا في تغذية القيم للقبض ومقارنة المقاوم.
عدد كثافة العمليات الثابتة ؛ مثلث شار ثابت // تغيير دورة العمل كل فترة. OCR1A = lookUp1 ؛ OCR1B = lookUp2 ؛
أخيرًا ، نقوم بزيادة العداد مسبقًا لتغذية القيم التالية للالتقاط ومقارنة المقاومات ، مما يمثل نهاية هذا الرمز.
if (++ num> = 200) {// Pre-increment num ثم تحقق من أنها أقل من 200. num = 0 ؛ // إعادة تعيين الأسطوانات. حساب المثلثات = حساب المثلثات ^ 0b00000001 ؛ digitalWrite (13 ، حساب المثلثات) ؛ }
اختبار حلبة العاكس TL494 PWM
من أجل اختبار الدائرة ، يتم استخدام الإعداد التالي.
- بطارية الرصاص الحمضية 12 فولت.
- محول يحتوي على 6-0-6 صنبور و 12-0-12 صنبور
- 100W المصباح المتوهج كحمل
- Meco 108B + TRMS Multimeter
- ميكو 450B + TRMS المتعدد
إشارة الإخراج من Arduino:
بمجرد تحميل الكود. قمت بقياس إشارة خرج SPWM من دبابيس Arduino التي تشبه الصورة أدناه ،
إذا قمنا بالتكبير قليلاً ، يمكننا أن نرى دورة العمل المتغيرة باستمرار لموجة PWM.
بعد ذلك ، تُظهر الصورة أدناه إشارة الخرج من المحول.
دائرة العاكس SPWM في الحالة المثالية:
كما ترون من الصورة أعلاه ، فإن هذه الدائرة ترسم حوالي 13 واط أثناء التشغيل بشكل مثالي
جهد الإخراج بدون تحميل:
يظهر أعلاه جهد الخرج لدائرة العاكس ، وهذا هو الجهد الخارج عند الخرج دون أي حمل متصل.
استهلاك طاقة الإدخال:
توضح الصورة أعلاه طاقة الإدخال التي تستهلكها ic عند توصيل حمل 40 واط.
استهلاك الطاقة الناتجة:
توضح الصورة أعلاه طاقة الخرج التي تستهلكها هذه الدائرة ، (الحمل عبارة عن لمبة إضاءة متوهجة 40 وات)
مع ذلك ، نختتم جزء الاختبار من الدائرة. يمكنك مشاهدة الفيديو أدناه للحصول على مظاهرة. أتمنى أن تكون قد أحببت هذه المقالة وتعلمت القليل عن SPWM وتقنيات تنفيذه. استمر في القراءة ، استمر في التعلم ، استمر في البناء وسأراكم في المشروع التالي.