عاكس مع جيب نقي في 15 دقيقة أو "إلكترونيات كهربائية - للجميع"

ما هي إلكترونيات الطاقة؟ بدون شك - هذا هو العالم كله! حديثة ومليئة بالراحة. يتخيل الكثير من الناس أن إلكترونيات الطاقة هي شيء "سحري" وبعيد ، ولكن انظر حولك - كل شيء يحيط بنا تقريبًا يحتوي على محول طاقة: مزود طاقة للكمبيوتر المحمول ، ومصباح LED ، و UPS ، ومنظمات مختلفة ، ومنظمات الجهد ، ومقاييس التردد (IF) ) في التهوية أو المصعد وأكثر من ذلك بكثير. معظم هذه المعدات تجعل حياتنا مريحة وآمنة.

لعدة أسباب ، يعد تطوير إلكترونيات الطاقة أحد أصعب مجالات الإلكترونيات - سعر الخطأ مرتفع جدًا ، في حين أن تطوير محولات الطاقة اجتذب دائمًا عشاق ، عمال DIY وليس فقط. بالتأكيد تريد بناء مصدر طاقة قوي لمشروعك؟ أو ربما UPS عبر الإنترنت لبضعة كيلوواط وعدم كسر؟ أو ربما chastotnik في ورشة العمل؟

اليوم سأتحدث عن مشروعي الصغير المفتوح ، أو بالأحرى عن دوره ، والذي سيسمح لأي شخص يريد الدخول إلى عالم تطوير إلكترونيات الطاقة وفي الوقت نفسه البقاء على قيد الحياة. كدليل على الاحتمالات ، سأوضح كيفية تجميع عاكس الجهد من 12V DC إلى 230V AC مع خرج جيب في 15 دقيقة. مفتون؟ دعنا نذهب!




أسباب المشروع


في العامين الماضيين ، شكل تطوير محولات الطاقة حوالي 90 ٪ من أوامري ، وتذهب تكاليف العمالة الرئيسية بشكل رئيسي إلى تطوير البرمجيات والنماذج ، وتصميم الدوائر + تتبع اللوحة النهائية للتكلفة الإجمالية عادة لا تزيد عن 10-15 ٪. هنا يأتي الفهم بأن عملية النماذج الأولية ، والتي تتضمن تطوير البرامج ، يجب أن يتم تقليلها وتحسينها بطريقة أو بأخرى.

هناك طريقتان على الأقل كما هو الحال دائمًا: شراء تصحيح أخطاء جاهز ، على سبيل المثال ، من Texas Instrumets أو Infineon ، ولكن عادة ما يتم تصميمهما لمهمة محددة وتكلفتهما من 500 دولار إلى 5000 دولار ، في حين لا يوجد ضمان بأنه سيكون هناك طلب مماثل وهذا الاستثمار ذو الاحتمالية العالية أمر سهل لن يؤتي ثماره.
الخيار الثاني هو أن تفعل ذلك بنفسك ، ولكن القيام بذلك تمامًا يماثل تقريبًا إطلاق "مراجعة حديد 1+" ، مما سيؤدي إلى نفقات إضافية للعميل. إذا لم يتم ذلك بشكل كامل ، فعادةً ما يكون كل شيء على المخاط وفي مكان ما سوف يسقط شيء ما وحتى التخطيط والمكونات والتوقيت.
بعد مرور بعض الوقت ، لفتت الانتباه إلى الحل الأكثر وضوحًا. إنه أمر بسيط وواضح لدرجة أنني تساءلت لفترة طويلة لماذا لم يفعل نفس TI أو Infineon هذا بعد. الآن سأقول عن "التنوير".

دعونا نلقي نظرة على بعض طبولوجيا محول الطاقة الأكثر شعبية:







الآن انظر بعناية مرة أخرى. رسمت بشكل خاص بدون ربط ، فقط المكونات الرئيسية لجعلها أكثر وضوحًا. ما هو المشترك بين هذه الطوبولوجيا؟ أول شيء يلفت انتباهك هو سلسلة من النقاط المشتركة:
  • تشمل جميع الطوبولوجيا المكونات الرئيسية - المكثفات والترانزستورات والمحاثة (محث أو محول). هذه 3 حيتان من إلكترونيات الطاقة.
  • يتم تشغيل الترانزستورات في كل مكان بنفس الشكل وتشكل ما يسمى "نصف الجسر". يتم تقريبًا جميع طبولوجيا المحول منه ؛
  • لا يتغير خيار تشغيل مقرنة نصف الجسر + المكثف في جميع الهياكل. يتغير نوع الحث وخيارات التبديل على نصف الجسور.


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


القتال بين الخير والشر


لسوء الحظ ، فإن عددًا محدودًا من الساعات في اليوم والكسل العاديين يمليان ظروفهم. أصبحت بحاجة إلى إنشاء هذه الوحدة قبل عام ، ولكن تم نقل التنفيذ باستمرار تحت شعار - "سأفعل ذلك بالتأكيد في نهاية الأسبوع القادم!" .

ربما كانت الفكرة ستبقى على الرف ، لولا حدثين. أولاً ، جاءني زبونان في شهر واحد وكان الجميع يريد محولًا معقدًا ومثيرًا للاهتمام للتطبيق ، والأهم من ذلك ، أنهم كانوا على استعداد للدفع جيدًا. على الرغم من اعتباره من أوروبا ، إلا أنها قد تكون رخيصة بالنسبة لهم)) كان كلا المشروعين مثيرًا للاهتمام بالنسبة لي ، على سبيل المثال ، كان أحدهما "منظم جهد ثلاثي الطور مع عزل كلفاني (كذا!)" ، أي ، 3 مراحل PFC + 3 محولات جسر (تحول المرحلة) + مقوم متزامن + 3 مراحل العاكس. كل هذا على SiC ومدمجة للغاية. بشكل عام ، تلقيت طلبين كبيرين ، كل منهما ~ 800 ساعة عمل وفترة 6 أشهر. ونتيجة لذلك ، "اضطررت" للبحث عن طرق للتحسين.

ثانيًا ، كتب لي رجال من شركة PCBway بشكل غير متوقع ، وقد طلب الكثير منهم لوحاتًا منهم ، وعرضوا التعاون. إنهم يدعمون بنشاط مشاريع الأجهزة المفتوحة ، وهي مبادرة CERN - Open Source Hardware. التعاون بسيط ومفهوم لكلا الطرفين - يزودونني برسوم مجانية لمشاريعي ، ويفتحونها ويضعونها على موقعهم على الإنترنت ، في أماكن أخرى بالفعل حسب الطلب. بالنسبة لي أصبح دافعًا إضافيًا ، والأهم من ذلك ، ضميري واضح ، لأنه لقد طلبت ألواحًا للنماذج الأولية لعدة سنوات ، ولإنتاج كميات كبيرة ، أخبر الأصدقاء والشركاء عنها. الآن ، لهذا ، لدي أيضًا كعكة على شكل لوحات مجانية للمشاريع الصغيرة ، يمكنك غالبًا الكتابة على المحور))

ثم انكسر الجليد ، تقرر إنشاء ليس فقط الوحدة الموصوفة سابقًا ، ولكن مجموعة كاملة من مطور إلكترونيات الطاقة وجعلها مفتوحة ومتاحة للجميع.

هيكل المشروع


في بداية المقال ، ذكرت أنني سأخبرك فقط عن جزء واحد اليوم - هذه هي وحدة الطاقة للنصف جسر . يسمح لك وحده بإنشاء محول عن طريق الشد ببساطة في دائرة التحكم ، على سبيل المثال ، تصحيح أخطاء STM32-Discovery أو Arduino أو TMS320 أو TL494 أو أي شيء تملكه هناك. لا يوجد ملزم لأي منصة أو عضو الكنيست على الإطلاق.

فقط هذا ليس المشروع بأكمله ، ولكن الجزء)) مما يتكون محول الطاقة النهائي؟ بادئ ذي بدء ، تحتاج وحدة الطاقة إلى وحدة تحكم معينة للعمل ، لفهم ما يحدث ، هناك حاجة إلى إشارة ، وفهم ما يحدث من مسافة آمنة ، هناك أيضًا واجهة ، على سبيل المثال ، Modbus RTU أو CAN.

ونتيجة لذلك ، يبدو الهيكل العام للمشروع كما يلي:



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

وحدة طاقة نصف الجسر


حان الوقت الآن لإلقاء نظرة فاحصة على بطل اليوم. الوحدة النمطية عالمية وتسمح لك بالعمل مع ترانزستورات Mosfet و IGBT ، سواء مفاتيح الجهد المنخفض أو الجهد العالي حتى 1200 فولت.

ميزات الوحدة:
  • عزل كلفاني لعنصر التحكم (الرقمي) من الطاقة. انهيار الجهد العزل 3 كيلو فولت ؛
  • المفاتيح العلوية والسفلية مستقلة ، ولكل منها محركها المعزول جلفانيًا والعزل الجلفاني dc / dc ؛
  • يتم تطبيق برنامج التشغيل الحديث من Infineon - 1EDC60I12AHXUMA1. نبض فتح / إغلاق التيار هو 6A / 10A. أقصى تردد - 1 ميجا هرتز (تم اختباره حتى 1.5 ميجا هرتز مستقر) ؛
  • حماية الأجهزة الحالية: التحويلة + المرجع أمبير + المقارنة + optocoupler ؛
  • التيار الأقصى هو 20A. لا يقتصر على المفاتيح ، ولكن بحجم المبرد وسمك مضلعات النحاس.


تظهر المراجعة الأولى للوحدة النمطية في المقالة ، وهي تعمل بكامل طاقتها ، ولكن ستكون هناك مراجعة ثانية ، حيث سيتم التخلص من عيوب التصميم البحتة وسيتم استبدال الموصلات بأخرى أكثر ملاءمة. بعد الانتهاء من التوثيق ، ألقى جربر في PCBway وبعد 6 أيام طرق البريد على باب منزلي وسلمني مثل هذا السحر:



بعد أسبوع ، جلبت الكلاب أخيرًا مكونات من متجر محلي جميل. ونتيجة لذلك ، تم تحميل كل شيء:





قبل الانتقال ، دعنا نلقي نظرة على مخطط الدائرة للوحدة النمطية. يمكنك تنزيله هنا - PDF .

لا يوجد شيء معقد أو سحري. نصف الجسر المعتاد: مفتاحان في الأسفل ، مفتاحان في الأعلى ، يمكنك اللحيم في وقت واحد. السائق ، كما هو مكتوب أعلاه من عائلة 1ED ، شرير وخالد للغاية. في كل مكان على الطاقة ، يوجد مؤشر ، بما في ذلك + 12V عند خرج dc / dc. يتم تنفيذ الحماية على العنصر المنطقي AND ، إذا تم تجاوز التيار ، سيخرج المقارن + 3.3V ، وسوف يضيء optocoupler وسوف يرسم أحد مدخلات AND إلى الأرض ، مما يعني أن إنشاء log.0 وإشارة PWM من السائقين ستختفي. ومع استخدام 3 مدخلات على وجه التحديد ، في المراجعة التالية ، أخطط لتوفير الحماية من الحرارة الزائدة من قبل المبرد وبدء إشارة الخطأ هناك أيضًا. ستكون جميع المصادر في نهاية المقال.

نقوم بتجميع تخطيط العاكس


لقد فكرت لفترة طويلة في كيفية إظهار تشغيل الوحدة النمطية ، حتى لا تكون مملة للغاية ومفيدة وليست صعبة للغاية ، لذلك يمكن لأي شخص تكرارها. لذلك ، توقفت عند عاكس جهد ، يتم استخدامها للعمل مع الألواح الشمسية ، إذا كان هناك شيء يشم على جانب الجهد المنخفض ، فهو ليس مخيفًا ، ولكن على جانب الجهد العالي ، فقط عند تشغيله ، لا تضع يديك فيه.

العاكس نفسه بسيط بشكل قبيح ، بالمناسبة ، يتم تثبيت MAP Energy على هذا النحو ، هنا مثال على التنفيذ التجاري لهذه الفكرة. تتمثل وظيفة العاكس في تكوين متغير جيبي بتردد 50 هرتز من جهد تيار مستمر 12 فولت ، لأنه باستخدام هذا المحول التقليدي عند 50 هرتز يُستخدم للعمل. أستخدم نوعًا ما من السوفييت ، مثل OSM ، لف مصنع 220 فولت ويستخدم كطريقة ثانوية ، وجرح ~ 8 فولت الأساسي مع ناقل نحاسي. يبدو هذا:



وهذا الوحش 400 واط فقط! يبلغ وزن المحول حوالي 5-7 كجم ، وفقًا للأحاسيس ، إذا أسقطته على ساقك ، فلن يتم نقلهم بالتأكيد إلى الجيش. في الواقع ، هذا هو ناقص العاكسون مع محولات "الحديد" ، فهي ضخمة وثقيلة. زائدهم هو أن هذه المحولات بسيطة للغاية ، ولا تتطلب أي خبرة في الإنشاء ، وبالطبع فهي رخيصة.

الآن دعنا نربط الوحدات والمحولات. في الواقع ، يجب تقديم الوحدة النمطية للمطور ببساطة على أنها "صندوق أسود" يحتوي على مدخلات من 2 PWMs و 3 مخرجات طاقة: VCC و GND ومخرج نصف الجسر نفسه.



الآن ، من هذه "الصناديق السوداء" ، لنرسم العاكس الخاص بنا:



نعم ، استغرق الأمر 3 عناصر خارجية فقط: محول + فلتر LC. بالنسبة للأخيرة ، قمت باختناق ببساطة عن طريق لف السلك من الوحدة إلى المحول على حلقة من مادة Kool Mu ، حجم R32 مع نفاذية 60 ، وحثث حوالي 10 μH. بالطبع ، يجب حساب الخانق ، لكننا نحتاج إلى 15 دقيقة)) بشكل عام ، إذا كنت تقود شيئًا كهذا عند 400 واط ، فأنت بحاجة إلى حلقة بحجم R46 (هذا هو القطر الخارجي). السعة - 1-10 فيلم UF ، هذا يكفي. في الواقع ، لا يمكنك تعيين المكثف كاقتصاد ، لأن قدرة لف المحول صحية ... بشكل عام ، فعل الصينيون و MAP ذلك بالضبط)) يبدو المغو كما يلي:



يبقى رمي حمل اختبار على الإخراج ، لدي زوج من مصابيح W 20 LED (لم يكن هناك شيء آخر في متناول اليد) ، فهم يأكلون أنفسهم 24 واط ، ومع ذلك ، الكفاءة. أيضا ، تيار الدائرة المفتوحة للمحول حوالي 1A. مع البطارية سوف تأكل حوالي 5A. نتيجة لذلك ، لدينا مثل هذا الموقف:



أيضا ، يستخدم التخطيط بطارية Delta HR12-17 ، على التوالي ، بجهد 12 فولت وبسعة 17 أمبير * ساعة. سنتحكم في المحول من لوحة التصحيح STM32F469-Discovery.

كود


في البداية ، تم التخطيط لاستخدام STM32VL-Disco الخاص بي ، والذي تم استلامه في المعرض في عام 2010 ، من أجل التحكم ، ولكن حدث أنه في هذا التخطيط كان من المقرر أن يموت عندما تم كتابة جميع التعليمات البرمجية وتم إطلاق التخطيط. نسيت عن مجسات راسم الذبذبات والأرضين المجمعة آمين. ونتيجة لذلك ، تمت إعادة كتابة كل شيء على STM32F469NIH6 ، وكان هذا التصحيح في متناول اليد ، لذلك سيكون هناك مشروعان: لكل من F100 و F469 ، تم التحقق من كليهما. تم بناء المشروع من أجل TrueSTUDIO ، إصدار الكسوف من ST.

كود وسادة القدم
#include "main.h" /********************************************* Sinus table **********************************************************/ uint16_t sinData[240] = {0,13,26,39,52,65,78,91,104,117,130,143,156,169,182,195,207,220,233,246,258,271,284,296,309,321,333,346,358,370, 382,394,406,418,430,442,453,465,477,488,500,511,522,533,544,555,566,577,587,598,608,619,629,639,649,659,669,678,688,697, 707,716,725,734,743,751,760,768,777,785,793,801,809,816,824,831,838,845,852,859,866,872,878,884,891,896,902,908,913,918, 923,928,933,938,942,946,951,955,958,962,965,969,972,975,978,980,983,985,987,989,991,993,994,995,996,997,998,999,999,999, 999,999,999,998,997,996,995,994,993,991,989,987,985,983,980,978,975,972,969,965,962,958,955,951,946,942,938,933,928,923, 918,913,908,902,896,891,884,878,872,866,859,852,845,838,831,824,816,809,801,793,785,777,768,760,751,743,734,725,716,707, 697,688,678,669,659,649,639,629,619,608,598,587,577,566,555,544,533,522,511,500,488,477,465,453,442,430,418,406,394,382, 370,358,346,333,321,309,296,284,271,258,246,233,220,207,195,182,169,156,143,130,117,104,91,78,65,52,39,26,13,0}; uint16_t sinStep; uint8_t sinStatus; /******************************************** Used functions ********************************************************/ void StartInitClock (void) { RCC->CR |= RCC_CR_HSEON; // Enable HSE while (!(RCC->CR & RCC_CR_HSERDY)); FLASH->ACR |= FLASH_ACR_LATENCY_5WS; RCC->PLLCFGR = 0x00; RCC->PLLCFGR |= RCC_PLLCFGR_PLLM_3; // Div for HSE = 8 RCC->PLLCFGR |= RCC_PLLCFGR_PLLN_4 | RCC_PLLCFGR_PLLN_5 | RCC_PLLCFGR_PLLN_6 | RCC_PLLCFGR_PLLN_7; // PLL mult x240 RCC->PLLCFGR |= RCC_PLLCFGR_PLLSRC; // Source HSE RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0){} RCC->CFGR &= ~RCC_CFGR_SW; RCC->CFGR |= RCC_CFGR_SW_PLL; // Select source SYSCLK = PLL while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} // Wait till PLL is used RCC->CR |= RCC_CR_PLLSAION; while ((RCC->CR & RCC_CR_PLLSAIRDY) == 0) {} } void EnableOutputMCO (void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; // Enable clock port A GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Alternative PP GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR8; // Very high speed RCC->CFGR |= RCC_CFGR_MCO1; // Source PLL RCC->CFGR &= ~RCC_CFGR_MCO1PRE; // Div = 1 } void InitIndicatorLED (void) { /* * LED1 - PG6 * LED2 - PD4 * LED3 - PD5 * LED4 - PK3 */ RCC->AHB1ENR |= RCC_AHB1ENR_GPIOGEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOKEN; GPIOG->MODER &= ~GPIO_MODER_MODER6; GPIOG->MODER |= GPIO_MODER_MODER6_0; // Output PP GPIOD->MODER &= ~GPIO_MODER_MODER4; GPIOD->MODER |= GPIO_MODER_MODER4_0; // Output PP GPIOD->MODER &= ~GPIO_MODER_MODER5; GPIOD->MODER |= GPIO_MODER_MODER5_0; // Output PP GPIOK->MODER &= ~GPIO_MODER_MODER3; GPIOK->MODER |= GPIO_MODER_MODER3_0; // Output PP } void EnableIndicatorLED (void) { GPIOG->BSRR |= GPIO_BSRR_BR_6; GPIOD->BSRR |= GPIO_BSRR_BR_4; GPIOD->BSRR |= GPIO_BSRR_BR_5; GPIOK->BSRR |= GPIO_BSRR_BR_3; } void InitLowPWM (void) { /* * TIM1-CH1 - PA8 * TIM1-CH1N - PB13 */ RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; /*********** GPIO **********/ GPIOA->MODER &= ~GPIO_MODER_MODER8; GPIOA->MODER |= GPIO_MODER_MODER8_1; // Alternative output PP GPIOA->AFR[1] |= GPIO_AFRH_AFRH0_0; // Select TIM1-CH1 GPIOB->MODER &= ~GPIO_MODER_MODER13; GPIOB->MODER |= GPIO_MODER_MODER13_1; // Alternative output PP GPIOB->AFR[1] |= GPIO_AFRH_AFRH5_0; // Select TIM1-CH1N /*********** Timer *********/ TIM1->PSC = 2400-1; // div for clock: F = SYSCLK / [PSC + 1] TIM1->ARR = 1000; // count to 1000 TIM1->CR1 &= ~TIM_CR1_CKD; // div for dead-time: Tdts = 1/Fosc = 41.6 ns TIM1->CCR1 = 500; // duty cycle 50% TIM1->CCER |= TIM_CCER_CC1E | TIM_CCER_CC1NE; // enable PWM complementary out to PB15 and to PA10 TIM1->CCER &= ~TIM_CCER_CC1NP; // active high level: 0 - high, 1 - low TIM1->CCMR1 &= ~TIM_CCMR1_OC1M; TIM1->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1; // positiv PWM1_CH3 and PWM1_CH3N TIM1->BDTR &= ~TIM_BDTR_DTG; // clear register TIM1->BDTR |= TIM_BDTR_DTG_2 | TIM_BDTR_DTG_1 | TIM_BDTR_DTG_0; // value dead-time: = 31*Tdts = 32*41,6ns = 1.29us TIM1->BDTR |= TIM_BDTR_MOE | TIM_BDTR_AOE; // enable generation output and dead-time TIM1->CR1 &= ~TIM_CR1_DIR; // count up: 0 - up, 1 - down TIM1->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal: 00 - front; 01, 10, 11 - center TIM1->CR1 |= TIM_CR1_CEN; // start count } void InitSinusPWM (void) { /* * TIM3-CH1 - PB4 * TIM3-CH2 - PC7 */ RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOCEN; /*********** GPIO **********/ GPIOB->MODER &= ~GPIO_MODER_MODER4; GPIOB->MODER |= GPIO_MODER_MODER4_1; // Alternative output PP GPIOB->AFR[0] |= GPIO_AFRL_AFRL4_1; // Select TIM3-CH1 GPIOC->MODER &= ~GPIO_MODER_MODER7; GPIOC->MODER |= GPIO_MODER_MODER7_1; // Alternative output PP GPIOC->AFR[0] |= GPIO_AFRL_AFRL7_1; // Select TIM3-CH2 /*********** Timer *********/ TIM3->PSC = 5-1; // div for clock: F = SYSCLK / [PSC + 1] TIM3->ARR = 1000; // count to 1000 TIM3->CCR1 = 0; // duty cycle 0% TIM3->CCR2 = 0; // duty cycle 0% TIM3->CCER |= TIM_CCER_CC1E; // enable PWM out to PA8 TIM3->CCER &= ~TIM_CCER_CC1P; // active high level: 0 - high, 1 - low TIM3->CCER |= TIM_CCER_CC2E; // enable PWM complementary out to PA9 TIM3->CCER &= ~TIM_CCER_CC1P; // active high level: 0 - high, 1 - low TIM3->CCMR1 &= ~(TIM_CCMR1_OC1M | TIM_CCMR1_OC2M); TIM3->CCMR1 |= TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1; // positiv PWM1_CH1 and PWM1_CH2 TIM3->CR1 &= ~TIM_CR1_DIR; // count up: 0 - up, 1 - down TIM3->CR1 &= ~TIM_CR1_CMS; // aligned on the front signal: 00 - front; 01, 10, 11 - center TIM3->CR1 |= TIM_CR1_CEN; // start count } void InitStepSinus (void) { RCC->APB1ENR |= RCC_APB1ENR_TIM6EN; // enable clock for basic TIM6 TIM6->PSC = 5-1; // div, frequency 24 kHz TIM6->ARR = 1000; // count to 1000 TIM6->DIER |= TIM_DIER_UIE; // enable interrupt for timer TIM6->CR1 |= TIM_CR1_CEN; // start count NVIC_EnableIRQ(TIM6_DAC_IRQn); // enable interrupt TIM6_DAC_IRQn } /************************************* Main code *********************************************/ int main (void) { StartInitClock(); // EnableOutputMCO(); InitIndicatorLED(); InitLowPWM(); InitSinusPWM(); InitStepSinus(); EnableIndicatorLED(); while(1) { } } /****************************** Interrupts ******************************************************/ void TIM6_DAC_IRQHandler (void) { TIM6->SR &= ~TIM_SR_UIF; if (sinStatus == 0) {TIM3->CCR1 = sinData[sinStep];} if (sinStatus == 1) {TIM3->CCR2 = sinData[sinStep];} sinStep++; if (sinStep >= 240) { sinStep = 0; sinStatus = sinStatus ? 0 : 1; } } 


بشكل عام ، في مقال آخر ، وصف بالتفصيل وبوضوح كيفية توليد إشارة جيبية ، وكيفية كتابة التعليمات البرمجية ، وما إلى ذلك. يمكنك قراءتها هنا .

هل قرأت؟ تريد جمع؟ حافظ على المشروع:


نحن ندير الشفرة ، ونسلح أنفسنا بمذبذب الذبذبات وننتقل. بادئ ذي بدء ، نتحقق من وجود إشارة عند مدخلات السائقين ، يجب أن يكون مثل هذا:



من الجدير بالذكر أنني أعطي إشارتين ترسم جيبًا على نصف جسر واحد (وحدة) ، و 50 هرتز على إشارتين. علاوة على ذلك ، يكون أحد الأقطار "أحمر + أصفر" والآخر "أزرق + أخضر". في المقالة التي قدمتها أعلاه ، هذا مكتوب بالتفصيل ، إذا كنت لا تفهم فجأة. الآن ، عندما جاءت الإشارات ، قمنا بوضع كل من نصف الجسر + 12 فولت و GND من مصدر طاقة المختبر. على الفور لا تنصح البطارية ، إذا قمت بخطأ ما في مكان ما ، فقد يحترق شيء ما. يتم حفظ الحماية على اللوحة من التيار الزائد ، ولكن ليس من عضادات واضحة ، عندما يتم خلط الزائد والناقص ، ولكن فني المختبر يحفظ. 12V و 1 A كافية للاختبارات. نأخذ مسبار الذبذبات ، وسلكه الأرضي إلى إخراج نصف الجسر الأول ، والمسبار نفسه إلى إخراج نصف الجسر الآخر ، ويجب أن تكون هناك مثل هذه الصورة:



أين الجيب الذي تسأل عنه؟ والحقيقة هي أن مقاومة مدخلات الذبذبات كبيرة ولا تشكل حمولة ، لذلك لا يتدفق التيار ولا يوجد مكان للحصول على الجيب. إضافة حمولة ، قمت بعمل حمولة 90 أوم من 10 مقاومات أوم ببساطة عن طريق تشغيل 9 قطع في السلسلة. نقوم بتوصيل الحمل بمخرجات أنصاف الجسور ونرى الصورة التالية:



هل لديك نفس الشيء؟ لذا فقد حان الوقت لتوصيل المحرِّض والمحوِّل والتحميل ومحاولة البدء. Achtung! لا يمكنك تشغيل هذا النموذج بدون تحميل ، لأنه في وضع الخمول ، يمكن أن يصل الإخراج إلى 350 ... 380V. بحيث لا يحتاج هذا إلى تحميل أو نظام تشغيل. لن يكون لدينا آخر واحد ، وهذا هو موضوع مقال منفصل ، يمكنك تثبيت منظم P ببساطة مثل اختياري ، لديك بالفعل قالب مشروع.

الدمج


بعد التبديل ، نحصل على حوالي 230 فولت عند الإخراج ، ومن المؤكد أن الناتج غير مستقر وسوف يطفو 230 فولت + -30 فولت ، للاختبارات سوف يذهب ، في مقال آخر سننتهي من التصميم حيث أقرر التحدث عن وحدات التحكم P و PI وتنفيذها.

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



ربما لاحظت وجود تأخير بين "النقرة" ، أي تشغيل الاكتشاف وتشغيل المصابيح - هذا هو الوقت الذي قضاه عضو الكنيست في التهيئة. يمكن تقليل هذا التأخير عن طريق كتابة رقم واحد في السجل مرة واحدة ، بدلاً من تقسيم إدخال السجل إلى مجموعة من الأسطر. لقد سحقته لأغراض توضيحية فقط. على الرغم من أن هذا ليس مخيفًا ، مع رمز HAL ، فإن التأخير أطول 3 مرات ويعيش الناس معه بطريقة أو بأخرى))

حتى نسيت ، مصدر المشروع:

  • رسم تخطيطي - PDF
  • BOM - Excel
  • ملفات جربر - RAR


يبقى أن نرى كيف هو مع درجات الحرارة على اللوحة ، إذا كان هناك أي نقاط ساخنة بشكل خاص. 5-6A بالتأكيد ليست كافية ، ولكن إذا كان هناك خطأ من خلال التيار أو بعض الأخطاء الخطيرة ، فهذا يكفي لتحويل اللوحة إلى غلاية:



كما ترون ، فإن العنصر الأكثر سخونة هو وحدة dc / dc للعزل الجلفاني ، والتي تبلغ 2 واط ، وهي تسخن حتى 34 درجة ، أيضًا ، تحويلة أيضًا. الترانزستورات والمبرد لديهم درجة حرارة محيطة بعد 30 دقيقة من تشغيل المحول))

شكرا وخطط


أخطط في المستقبل القريب للكتابة عن لوحة DSP وإدارتها ليس من اكتشاف التصحيح ، ولكن من الوحدة "المتخصصة". جاءت لوحات المراجعة الثانية إليه من نفس PCBway ، أنتظر المكونات وأكتب على الفور.

آمل أن تكون قد استمتعت بالمقال والفكرة نفسها. في المستقبل ، على نفس الوحدات ، سأوضح كيفية تجميع chastotnik ، وحدة تحكم mppt ، أو شيء آخر مثير للاهتمام. إذا كانت لديك أسئلة ، فلا تتردد في طرحها في التعليقات أو في PM ، إذا لم يكن لديك فجأة حساب كامل ، فسأحاول الإجابة على جميع الأسئلة.

الآن بفضل PCBway ، من الجيد جدًا دعم محرك مفتوح المصدر. وقريبًا ، قد يتواصل صانعو الأجهزة مع كتاب البرامج من حيث عدد المشاريع المفتوحة المصدر وجودتها.

Source: https://habr.com/ru/post/ar428550/


All Articles