موتورهای DC جاروبکی، یکی از پرکاربردترین و درعینحال ارزانترین انواع موتور در صنعت محسوب میشوند. این موتورها به دلیل ساختار ساده، قیمت مناسب و عمر قابلقبول توانستهاند جایگاه ویژهای نزد تولیدکنندگان دستگاههای صنعتی، پزشکی و بسیاری کاربردهای دیگر پیدا کنند.
وقتی صحبت از “حرکت” و “موتور” به میان میآید، محاسبه و پایش سرعت چرخش موتور یکی از پارامترهای اصلی در طراحی سختافزار و سیستم کنترلی به شمار میرود.

روشهای متنوعی برای اندازهگیری سرعت موتور وجود دارد؛ از جمله:
هر کدام از این روشها هزینه، پیچیدگی و نیازمندیهای خاص خود را دارند.
یکی از روشهای نسبتاً ارزان و کمهزینه برای تخمین دور موتور، استفاده از ولتاژ Back-EMF است. این روش، همانطور که مزایایی مانند حذف نیاز به سنسور مکانیکی یا مغناطیسی دارد، معایب و محدودیتهای خاص خود را نیز به همراه خواهد داشت.
در این مقاله ابتدا به بررسی ساختمان داخلی موتورهای DC جاروبکی میپردازیم، سپس مفهومBack-EMF را توضیح میدهیم و در ادامه روش استفاده از آن برای تخمین سرعت موتور را با جزئیات بررسی خواهیم کرد.

موتورهای جریان مستقیم (DC) بهطورکلی از چهار بخش اصلی تشکیل شدهاند که هر کدام نقش مشخصی در عملکرد موتور ایفا میکنند:
رتور بخش چرخنده موتور است. سیمپیچهای موتور روی این قسمت پیچیده میشوند و با عبور جریان از آنها، میدان مغناطیسی ایجاد میشود. تعامل این میدان با میدان مغناطیسی استاتور، باعث ایجاد گشتاور و در نهایت چرخش رتور میشود.
کوموتاتور وظیفه تغییر جهت جریان در سیمپیچها را بر عهده دارد. این تغییر جهت باعث میشود قطبهای مغناطیسی سیمپیچها به طور مداوم عوض شوند و موتور بتواند چرخش پیوسته و کامل داشته باشد. بدون کوموتاتور، موتور پس از رسیدن به یک زاویهٔ خاص متوقف میشد.
براشها وظیفه انتقال انرژی الکتریکی از منبع تغذیه به کوموتاتور و در نهایت به سیمپیچهای رتور را دارند.
در موتورهای DC جاروبکی، براشها معمولاً نقطهٔ ضعف اصلی موتور محسوب میشوند؛ زیرا به دلیل تماس مستقیم و اصطکاک مداوم با کوموتاتور، بهمرورزمان دچار سایش شده و پس از مدتی کارایی خود را از دست میدهند.
آهنرباها بخش ثابتی از موتور هستند و نقش ایجاد میدان مغناطیسی ثابت را ایفا میکنند. این میدان مغناطیسی با میدان ایجادشده توسط سیمپیچهای رتور برهمکنش کرده و باعث جذب و دفع لازم برای چرخش موتور میشود. در موتورهای DC، این آهنرباها میتوانند از نوع دائمی یا الکترومغناطیسی باشند.
پیشازاین در مقاله «راهاندازی موتور براشلس» به طور مختصر به مفهوم Back-EMF اشاره کردهایم .
اما بهطورکلی، هر زمان که صحبت از موتور، سیمپیچ و میدان مغناطیسی میشود، یک عامل چهارم نیز به طور اجتنابناپذیر وارد ماجرا میشود و آن چیزی نیست جز ولتاژ Back-EMF (ولتاژ القایی برگشتی).
Back-EMF ولتاژی است که در اثر حرکت سیمپیچ درون میدان مغناطیسی ایجاد میشود.
مطابق قانون القای الکترومغناطیسی، این ولتاژ:
به بیان سادهتر، هرچه موتور سریعتر بچرخد، نرخ تغییر شار مغناطیسی بیشتر شده و در نتیجه دامنه ولتاژ Back-EMF افزایش پیدا میکند.
در اینجا ارتباط مهمی شکل میگیرد:
اگر ولتاژ Back-EMF متناسب با سرعت موتور است، پس با اندازهگیری این ولتاژ میتوان سرعت موتور را تخمین زد.
همین ویژگی باعث شده است که Back-EMF بهعنوان یک روش کمهزینه و بدون نیاز به سنسور اضافی برای تخمین سرعت موتور موردتوجه قرار بگیرد.
برای استفاده از Back-EMF در اندازهگیری سرعت موتور، باید:
یکم ایده رو باز کنیم:
بزارید یکم عمیقتر و روی شکل موج با هم صحبت کنیم.
فرض کنید مدار زیر رو آماده کردیم:

ولتاژ +VC با مقدار 4 ولت تغذیه میشه و ترانزیستور با دیوتی سایکل 12.5% سوئیچ میکنه.
در شکل زیر میتونیم شکل موجی که از نقطه BEMF_TO_ADC دیده میشه رو مشاهده کنیم:

همونطور که مشخص هست با خاموششدن ماسفت یک ولتاژ زیادی از سمت موتور باتوجهبه سلفی بدون بار در مدار القا میشه که خوب توسط ِD2 حذف میشه (که همه خوب بلدن این چه کاری انجام میده)
ولی کار ما با بقیه قسمتهای زمان خاموش بودن ماسفت هست. همونطور که مشخص هست ما در ادامه زمان خاموشی (بعد از Spike) میتونیم ولتاژ Back-EMF را مشاهده کنیم.
حالا اگر کمی بار روی شفت موتور اعمال کنیم و به اصلاح سرعت موتور رو بهصورت مکانیکی کم کنیم همچین شکل موجی رو میتونیم مشاهده کنیم:

همونطور که در شکل موج مشخص هست با کاهش دور موتور، ولتاژ back-emf کم شده.
در این روش، اندازهگیری سرعت چرخش موتور (RPM) با استفاده از مبدل آنالوگ به دیجیتال (ADC) میکروکنترلر ATmega168 انجام میشود. ایده اصلی روش برایناساس است که در بازههایی که خروجی PWM خاموش است، ولتاژ Back‑EMF تولیدشده توسط موتور اندازهگیری شود.
بااینحال، در طراحی این روش دو محدودیت مهم وجود دارد که حتماً باید در نظر گرفته شوند:
علت وجود این محدودیتها آن است که ADC میکروکنترلر برای انجام هر تبدیل به زمان مشخصی نیاز دارد. اگر زمان خاموش بودن PWM از این مقدار کمتر باشد، عملاً امکان نمونهبرداری صحیح توسط ADC وجود نخواهد داشت.
بهعنوانمثال، در میکروکنترلر ATmega168، واحد ADC برای انجام هر تبدیل به ۱۳ سیکل کلاک ADC نیاز دارد.
(که معمولاً بهصورت ۱۲ سیکل کاری بهعلاوه سیکل راهاندازی در نظر گرفته میشود)
در این طراحی:
در نتیجه:
که حداقل زمان لازم برای یک تبدیل ADC برابر است با: 140µs=13*8µs
علاوه بر زمان تبدیل ADC، لازم است یک زمان مرده کوتاه (در حد چند میکروثانیه) نیز در نظر گرفته شود تا نویزها و پیکهای ناشی از القای سیمپیچ موتور و ناپایداریهای لحظهای پس از خاموششدن PWM کاهشیافته و ولتاژ Back‑EMF به حالت پایدار برسد.
در نتیجه حداقل زمان برای PWM باید بیشتر از 120 میکرو ثانیه باشد . اگر این زمان کمتر از مقدار فوق باشد، ADC فرصت کافی برای خواندن و نمونهبرداری صحیح از سیگنال Back‑EMF را نخواهد داشت.
البته این محدودیت به این معنا نیست که در PWMهای بالا (مثلاً بالاتر از 90٪ یا حتی 100٪) امکان استفاده از این روش وجود ندارد.
در چنین شرایطی میتوان از یک راهکار ساده و عملی استفاده کرد:
ممکن است این سؤال مطرح شود که آیا در این مدت کوتاه، گشتاور موتور کاهش پیدا نمیکند؟
پاسخ این است که باتوجهبه کوتاهبودن این بازه زمانی، تأثیر محسوسی روی گشتاور و عملکرد مکانیکی موتور نخواهد داشت.
برای تولید سیگنال PWM از Timer1 بهعنوان مولد PWM استفاده میکنیم. علاوه بر این، وقفه OCIE1A (Output Compare Interrupt) این تایمر فعال میشود تا بهعنوان نقطه تریگر برای شروع اندازهگیری ADC مورداستفاده قرار گیرد.
در این روش، بهمحض وقوع وقفه OCIE1A، تبدیل ADC بلافاصله آغاز میشود. البته برای سادهسازی پیادهسازی نرمافزاری، یک یا چند نمونه ابتدایی ADC نادیده گرفته میشوند.
نادیدهگرفتن نمونههای اولیه دو مزیت مهم دارد:
بلافاصله پس از خاموششدن PWM، ولتاژ دو سر سیمپیچ هنوز حاوی نویزها و پیکهای ناشی از اندوکتانس موتور است. با صرفنظرکردن از چند نمونه ابتدایی، فرصت کافی برای پایدار شدن ولتاژ Back‑EMF فراهم میشود.
شروع فوری تبدیل ADC و حذف نمونههای اولیه، نیاز به پیادهسازی تایمرهای تأخیری یا منطق کنترلی پیچیده را از بین میبرد و ساختار کد را سادهتر و قابلاعتمادتر میکند.
در نهایت، نمونههایی که پس از این بازه گذرا ثبت میشوند، نمایانگر ولتاژ واقعی Back‑EMF بوده و میتوان از آنها برای تخمین سرعت چرخش موتور استفاده کرد.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
//------------------------ Init Timer 1 as PWM -------------------------------------------- void InitTimer1(void){ TCCR1A = (1<<COM1A1)|(1<<WGM11); // Toggle OC1A on compare 9Bit TCCR1B = (1<<WGM12); // 9bit TCCR1B = (1<<CS10)|(1<<CS11); // clk/64 8Mhz/64 = 125kHz 125kHz/9bit = 244Hz TIMSK1 |= (1<<OCIE1A); // on compare to trigger ADC OCR1A = 10; // initial pwm value } //---------------------------- Init ADC ------------------------------------ void InitADC(void){ ADCSRA |= (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // enable ADC, prescaller 8000000 hz / 64 = 125kHz ADMUX |= (1<<REFS0); // reference AVCC DIDR0 = (1<<ADC0D); // disable digital input } |
برای افزایش دقت در تخمین سرعت موتور، معمولاً ولتاژ Back‑EMF در چند نمونه متوالی اندازهگیری و سپس میانگین گرفته میشود. این کار باعث کاهش نویزهای ناشی از PWM، جاروبکها و نویز کوانتیزاسیون ADC میشود، اما در عوض نرخ بهروزرسانی مقدار RPM کاهش مییابد. این کاهش نرخ نمونهبرداری در کاربردهایی مانند کنترل سرعت موتور با استفاده از کنترلکننده PID نهتنها مشکلساز نیست، بلکه مفید نیز هست، زیرا سیگنال سرعت نرمتر و پایدارتر بوده و از نوسانات ناخواسته در خروجی کنترل جلوگیری میکند. کنترل سرعت موتور در این ساختار میتواند به طور کامل با استفاده از PWM و یک H‑Bridge بهعنوان طبقه توان انجام شود.
کد پیوست شده مقادیر سرعت محاسبهشده از طریق رابط USART به یک دستگاه دیگر ارسال میشوند، هرچند در کاربردهای عملی میتوان این مقادیر را مستقیماً داخل خود میکروکنترلر ATmega168 و در حلقه کنترل استفاده کرد.
نکته مهم در این روش آن است که در صورت استفاده از منبع ولتاژ بالاتر برای تغذیه موتور، باید دقت شود که ولتاژ Back‑EMF از محدوده مجاز ورودی ADC فراتر نرود. در غیر این صورت، احتمال آسیبدیدن واحد ADC و در نهایت خود میکروکنترلر وجود دارد؛ بنابراین استفاده از مدارهای محدودکننده یا تقسیم ولتاژ برای محافظت از ورودی ADC ضروری است.
وبسایت: http://typhoonic.ir
.:: علاقهمند به حوزهی سختافزار و طراحی و توسعهی درایوهای موتورهای براشلس (BLDC) و موتورهای AC ::.
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.