سلام دوستان! امروز درباره یه قابلیت جالب تو تایمرهای میکروکنترلرهای STM32 حرف میزنیم که بهش میگن brake function. اگه با STM32 کار کرده باشین، میدونین تایمراش خیلی قوین و پر از امکاناتن. یکی از این امکانات که تو تایمرهای Advanced-Control مثل TIM1 و TIM8 هست، همین brake function هست که تو کنترل موتور و سیستمهای ایمنی خیلی به کار میاد. تو این مقاله میخوایم بگیم این ویژگی چیه، چطور کار میکنه، کجا میتونین ازش استفاده کنین و چطور فعالش کنین. بریم سراغش!
Brake Pin چیه و چه کاری میکنه؟
خب، brake pin یه ورودی سختافزاریه تو تایمرهای پیشرفته STM32 که کارش اینه خروجیهای PWM (مثل سیگنالهایی که برای موتور میفرستین) رو فوری متوقف کنه. این قابلیت برای مواقع اضطراری طراحی شده که اگه مشکلی مثل جریان زیاد، دمای بالا یا خطای خارجی پیش بیاد، سریع خروجی تایمر رو قطع کنه و نذاره سیستم آسیب ببینه.
تصور کنین یه موتور DC یا BLDC رو با PWM کنترل میکنین. اگه سنسور بگه موتور داره زیادی داغ میشه، brake pin میتونه PWM رو همون لحظه قطع کنه. نکته جالبش اینه که این کار تو سطح سختافزار انجام میشه و نیازی به CPU نداره، برای همین سرعتش بالاست و میشه روش حساب کرد.
به زبان ساده، brake pin یه جور دکمه توقف اضطراریه
چطور کار میکنه؟
بریم یه کم فنیتر نگاه کنیم. تو تایمرهای پیشرفته STM32 مثل TIM1 و TIM8، یه بخش به اسم Break Function هست. این بخش به یه پایه ورودی به اسم BKIN (Break Input) وصله. وقتی یه سیگنال خاص (مثلاً 0 یا 1، بسته به تنظیمات) به این پایه برسه، تایمر این کارها رو میکنه:
- قطع خروجیها: همه کانالهای PWM (مثل CH1، CH2 و مکملهاشون) رو غیرفعال میکنه.
- تنظیم حالت خروجی: میتونین بگین وقتی brake فعال شد، خروجیها HIGH بشن، LOW بشن یا برن تو حالت High-Impedance (شناور).
- وقفه (Interrupt): اگه بخواین، میتونین یه وقفه هم فعال کنین که به CPU خبر بده.
این اتفاقها تو کسری از ثانیه تو سختافزار میافته و نیازی به کد زدن برای واکنش اولیه نداره. برای همین تو موقعیتهای حساس خیلی کاربردیه.
کاربردهای Brake Pin
حالا که فهمیدیم brake pin چیه، بیاین ببینیم کجا به کار میاد:
- کنترل موتور: تو سیستمهای موتوری مثل درایوهای صنعتی، رباتها یا ماشینهای برقی، اگه خطایی مثل اضافهجریان یا دمای بالا پیش بیاد، brake pin موتور رو سریع خاموش میکنه.
- منابع تغذیه سوئیچینگ (SMPS): تو طراحی پاور، اگه ولتاژ یا جریان از حد بگذره، این قابلیت PWM رو قطع میکنه و جلوی خرابی رو میگیره.
- سیستمهای ایمنی: هر جا که نیاز به یه راه مطمئن برای توقف اضطراری باشه، brake pin هست.
- رباتیک و CNC: تو دستگاههایی که ایمنی و دقت مهمه، میتونه حرکتهای اشتباه رو متوقف کنه.
خلاصه اینکه هر جا نیاز به واکنش سریع و مطمئن داشته باشین، brake pin به دادتون میرسه!
خب حالا چطوری ازش استفاده کنیم؟ ما در این مثال، تایمر 1 از میکروکنترلر STM32F103C8T6 خودمون رو به گونه ای تنظیم میکنیم که روی کانال 1 یک سیگنال PWM با فرکانس 10 کیلوهرتز و دیوتی سایکل 50 درصد داشته باشیم. همچنین، قابلیت BRAKE رو هم برای این تایمر فعال میکنیم و اون رو روی حالت LOW تنظیم میکنیم. بدین معنی که وقتی سیگنال روی پایه BKIN از حالت HIGH به حالت LOW تغییر وضعیت بده، حالت ترمزی فعال میشه!
تو تصاویر زیر شما میتونین، تنظیمات مربوطه و کد نوشته شده رو مشاهده بکنین.
دقت کنید که در اینجا فرکانس میکرو و همچنین تایمر روی 8 مگاهرتز تنظیمه بنابراین برای فرکانس 10کیلو باید ARR = 800 و برای دیوتی سایکل 50 درصد باید PERIOD = 400 تنظیم بشه، به همین راحتی.
نکات مربوط به قابلیت brake
- تو تب Parameter Settings، بخش Break and Dead-Time رو پیدا کنین.
- Break Enable: اینو فعال کنین تا brake کار کنه.
- Break Polarity: مشخص کنین که brake با HIGH (1) فعال بشه یا LOW (0). مثلاً اگه سنسورتون موقع خطا 1 میده، HIGH بذارین.
- Break Filter: میتونین یه فیلتر بذارین که نویزهای کوتاه رو نادیده بگیره.البته در بعضی از سری های STM32 این ویژگی ممکنه وجود نداشته باشه.
- Automatic Output Enable: اگه بخواین بعد از رفع خطا خروجیها خودکار برگردن، اینو روشن کنین و روی حالت enable قرار بدین. در صورتی که روی disable باشه، یا میکرو باید ریست شه تا خروجی ها برگرده و یا مجدد داخل کد به محض رفع خطا خودتون خروجی ها رو باز برگردونین.
نتیجه اجرای کد در نرم افزار Proteus
یادتون باشه brake pin فقط تو تایمرهای Advanced-Control (مثل TIM1 و TIM8) هست، تایمرهای معمولی ندارنش.
مطمئن شین سیگنال ورودی به BKIN تمیزه و نویز نداره، وگرنه ممکنه خروجی تایمر بیخودی خاموش بشه.
امیدواریم از این آموزش استفاده برده باشید!
با سایر آموزش های اصفهان درایو همراه باشید!