کال

تجربیات کامپیوتر، الکترونیک و لینوکس عبد

درایور موتور پله‌ای برای CNC (قسمت دوم)

۲۵ مرداد ۱۳۸۷ در دسته CNC٬ الکترونیک

همان طور که در پست قبلی گفتم موتور‌های پله‌ای من ۵ سیم دارند و تنها می‌توانند با درایور تک‌قطبی کار کنند. خوب من هم یک درایور تک قطبی درست کردم!

اگر پست قبلی را مطالعه کرده‌باشید (البته اگر هم نخوانده‌اید چیز خاصی را از دست نداده‌اید!) شکل کلی یک درایور تک‌قطبی به این صورت است:

توان تلف شده در ترانزیستور‌ها توان

کلید‌های این درایور در واقع ترانزیستور‌های توان هستند که وظیفه عبور دادن جریان را از سیم‌پیچ‌های موتور به عهده دارند. دو خانواده از ترانزیستور‌ها برای این منظور مناسب هستند، ترانزیستور‌های BJT و ترانزیستور‌های Power MOSFET. حالا اینکه کدام یک بهتر است و ویژگی‌های هر کدام چیست، از حد سواد من خارج است. ولی من نمی‌دانم چرا علاقه خاصی به این MOSFET دارم! شاید چون سخت‌افزاری هستم و سر و کار ما ترانزیستور nmos و pmos است& لاجرم به نوع Power شان هم علاقه دارم!
جدا از علاقه قلبی به ماسفت، تلف توان در این نوع ترانزیستور‌ها کمتر از مشابه BJT است. به صورت خیلی ساده توان تلف شده در حالت DC و در حالتی که ترانزیستور‌ها به عنوان کلید عمل می‌کنند، به صورت زیر محاسبه می‌شود:

P_{BJT}=I\times V_{CE(sat)}

P_{MOSFET}=I^2\times R_{DS(on)}

پارامتر مهم برای محاسبه توان DC تلف شده در ترانزیستور BJT ولتاژ اشباع بین کلکتور و امیتر است (Vce) که تقریبا برای یک محدوده از جریان ثابت است. در ترانزیستور‌های MOSFET هم پارامتر مهم مقاومت بین سورس و درین در حالت ON است که به آن Rds گفته می‌شود. اگر بخواهیم یک مقدار دیگر به صورت ریاضی بررسی کنیم شرایط کمتر بودن توان تلف شده در ماسفت نسبت به ترانزیستور قطبی (BJT) با یک محاسبه ساده به این صورت بدست می‌آید:

I<\frac{V_{CE(sat)}}{R_{DS(on)}}

همان طور که مشخصه تا وقتی که جریان عبوری از نسبت ولتاژ اشباع به مقاومت کانال (همان مقاومت بین سورس و درین در زمان روشن بودن ترانزیستور) کمتر باشد، توان تلف شده در ترانزیستورهای ماسفت کمتر است. برای یک محاسبه سر انگشتی، ولتاژ اشباع معولا از حدود ۲۰۰ میلی‌ولت شروع می‌شوند تا چند ولت (این ولتاژ با جریان عبوری نسبت مستقیم دارد) به عنوان مثال در ترانزیستور محبوب 2N3055 برای جریان حدود ۱۰ آمپر ۱.۲ ولت است. مقاومت کانال در ترانزیستور‌های ماسفت‌ هم بسته به اندازه ترانزیستور و کیفت آن از ۱۰۰۰ میلی‌اهم تا چند میلی‌اهم متغیر است. به عنوان مثال ترانزیستور IRFZ46 مقاومت ۲۰ میلی‌اهمی در کانل خود دارد. در جریان ۱۰ آمپر توان تلف شده در ترانزیستور قطبی (۱۲ وات) نسبت به ترانزیستور ماسفت (۲ وات) ۶ برابر بزرگ‌تر است!

راه‌اندازی ترانزیستور ماسفت

گیت ماسفت بر خلاف بیس ترانزیستور قطبی، جریان نمی‌کشد. به بیان دیگر گیت ماسفت یک خازن پارازیتی بزرگ (در حدود ۱۰-۱۰۰ نانو فاراد) است که باید تا ولتاژ آستانه شارژ شود. در نگاه اول این شکل درایو کردن خیلی عالی است چون جریانی از درایور کشیده نمی‌شود ولی دو نکته مهم در اینجا وجود دارد که کار را کمی مشکل می‌کند:

    1. ولتاژ گیت حداقل حدود ۱۰ ولت است و معمولا زیر این ولتاژ کانال به حداقل مقاومت خود نمی‌رسد.
    2. گیت یک خازن بزرگ است. برای شارژ و دشارژ سریع این خازن (قطع و وصل سریع ترانزیستور) باید مدار‌هایی با قابلیت جریان‌دهی بالا داشته باشیم. مدار‌هایی که مقاومت شارژ کردن خازن گیت را کوچک کنند و بتوانند پیک جریان بزرگی را تحمل کنند (این موضوع در مجموع باعث می‌شود که سرعت ترانزیستور‌های ماسفت از انواع قطبی کمتر باشد).

پس مدار‌هایی برای شارژ و دشارژ سریع خازن نیاز است به خصوص اگر بخواهیم درایور‌ موتور‌ در سرعت بالایی کار کند. انواع مختلفی از درایور‌های ماسفت وجود دارد. مدلی که من انتخاب کردم (در واقع در دسترس بود) چیپ SN75374 است. این تراشه می‌تواند تا ۴ ترانزیستور ماسفت را با حداکثر جریان پیک ۵۰۰ میلی آمپری درایو کند (قیمت این تراشه ۱۵۰۰ تومان در ۱۳۷۸). شکل این تراشه شبیه گیت‌های NAND با ۳ ورودی است. یکی از ورودی‌ها کنترل و دوتای دیگر پایه‌های enable هستند. از این پایه‌ها می‌توان برای درایورهای PWM و chopper استفاده کرد.

نکته‌ی دیگر در این تراشه تغذیه‌های آن است. در مجوع این تراشه ۳ ولتاژ می‌خواهد. VCC1 که ۵ ولتی است. VCC2 و VCC3 که ولتاژ درایو گیت هستند که می‌توانند تا حداکثر ۲۵ ولت باشند. اگر بخواهید که محدوده ولتاژ خروجی حداکثر باشد باید ولتاژ VCC3 کمی بالاتر از ولتاژ VCC2 باشد. البته اگر حداکثر ولتاژ خروجی کافی باشد می‌توان این دو پایه را به هم متصل کرد (من در طراحی خودم همین کار را انجام داده‌ام و این دو پایه‌ را به ولتاژ ۱۲ ولت متصل کرده‌ام که احتمالا خروجی حداقل ۱۰ ولت خواهد بود).

طراحی درایور

ممکن است موتور را بر اساس مشخصات مورد نظرتون تهیه کنید ولی شاید هم مثل من چندتا موتور دسته دوم قدیم داشته باشید که بدر این مورد باید به برچسب روی موتور دقت کنید (البته اگر بر چسبی وجود داشته باشد!). دو پارامتر مهم معمولا در این برچسب نوشته می‌شود، یکی جریان و دیگری ولتاژ کار موتور است. البته ولتاژ نامی خیلی مهم نیست چون به عنوان مثال در درایور‌های chopper این ولتاژ اصلا مطرح نیست بلکه اهمیت اصلی جریان عبوری از موتور است. جریان‌های بیشتر از مقدار ذکر شده ممکن است باعث گرم شدن بیش‌ از حد موتور و سوختن آن شود. جریان‌های کمتر نیز حداکثر گشتاور ممکن را تولید نمی‌کند. پس درایور باید به شکلی طراحی شود که جریان عبوری برابر جریان نامی موتور شود. در این درایورهای ساده دو گزینه وجود دارد، یکی ولتاژ تغذیه را جوری قرار دهیم که جریان عبوری برابر جریان مورد نظر شود به عنوان مثال از یک مبدل DC/DC استفاده کنیم. دوم استفاده از یک منبع با ولتاژ بالاتر و استفاده  از یک مقاومت برای کاهش ولتاژ است.  دقت کنید که در هر دو حالت باید مقاومت ترانزیستور را نیز در نظر بگیرم.

محاسبات

خوب موتور من ۱.۲ آمپر و ۸.۵ ولتی است و به عبارت دیگر یک مقاومت 8.5/1.2=7.08 اهمی است. مقاومت Rds ترانزیستور (IRFS610) نیز  ۱.۵ اهم است (چرا این قدر مقاومت این آشغال-ماسفت زیاد است، داستانی دارد که بعدا خدمتتان عرض می‌کنم!). ولتاژ تغذیه هم ۱۲ ولت است (پاور کامپیوتر). حالا با این داده‌ها محاسبه‌ی مقاومت Rx (کاهش دهنده ولتاژ) خیلی ساده است.

در مسیر درایور سه مقامت به صورت سری وجود دارد. مقاومت معادل موتور، مقاومت کاهش‌دهنده ولتاژ و مقاومت ترانزیستور. مجموع این سه مقاومت از منبع ۱۲ ولتی ۱.۲ آمپر جریان می‌کشند. خوب در این حالت با یک KVL ساده مقدار مقاومت مجهول ۱.۴۲Ω به دست می‌آید. توانی که در این مقاومت تلف می‌شود نیز تقریباً برابر ۲ وات است. مقاومتی که در دسترس من بود چند عدد مقاومت ۲.۷Ω با توان ۲ وات بود. اگر دوتا از این مقاومت‌ها با هم موازی شوند یک مقاومت ۱.۳Ω با توان ۴ وات درست می‌کنند. ولی من چون می‌خواستم کمی موتورم را زجر دهم (!) سه عدد از این مقاومت‌ها را با هم موازی کردم که مقاومت به دست آمده ۰.۹Ω ‌شود.

محافظت ترانزیستور از ولتاژ معکوس

اگر از فیزیک دبیرستان یاد داشته باشید، یک سلف در مقابل تغییرات جریان مقاومت می‌کند. این مقاومت هم به شکل یک ولتاژ معکوس در دو سر سلف ظاهر می‌شود. موتور پله‌ای نیز از سیم‌پیچ تشکیل شده است و برای چرخش  موتور این سیم‌پیچ‌ها را باید قطع و وصل کرد. با توجه به نکته گفته شده قطع جریان‌ِ سیم‌پیچ یک ولتاژ بزرگ در دو سر سیم‌پیچ ایجاد می‌کند. این ولتاژ معمولا می‌تواند خیلی بزرگ باشد (در حدود چند کیلو ولت! برای امتحان کردن می‌توانید مستقیم منبع ولتاژ را به یکی سیم‌های استپر متصل کنید. هنگام جدا کردن ولتاژ منبع، یک جرقه کاملا مشخص بین سیم‌ها خواهید دید!). ولتاژ بزرگ می‌تواند به ترانزیستور‌ها آسیب برساند به خصوص ترانزیستور‌های ماسفت که گفته می‌شود نسبت به over-voltage درین-سورس حساس هستند. برای از بین بردن این مشکل معمولا چندین روش وجود داره که سه روش ساده به این صورت است:

    1. استفاده از یک دیود در حالت معکوس: این دیود در حالت معکوس بایاس شده ولی وقتی که ولتاژ معکوس القایی در دو سر سیم‌پیچ ایجاد می‌شود (این ولتاژ به مراتب بزرگ‌تر از ولتاژ تغذیه است) این دیود در حالت وصل قرار می‌گیرد و جریان معکوس را به سمت تغذیه هدایت می‌کند.
    1. استفاده از یک دیود به همراه مقاومت: مشکل روش قبلی این است که جریان معکوس مدت زمان زیادی طول می‌کشد تا از بین برود (میرایی کمی دارد). در این حالت با اضافه شدن یک مقاومت جریان معکوس با سرعت بیشتری میرا می‌شود. ولی مشکل اینجا است که جریان عبوری بر روی مقاومت یک افت پتانسیل ایجاد می‌کند. پس باید مقاومت را جوری انتخاب کرد که حداکثر افت پتانسیل ناشی از حداکثر جریان، کمتر از ولتاژ قابل تحمل برای ترانزیستور باشد. به عنوان مثال در ترانزیستورهایی که من استفاده می‌کنم حداکثر ولتاژ قابل تحمل ۲۰۰ ولت است. حداکثر جریان در مدار هم حدود ۲ آمپر خواهد بود. ولتاژ معکوس دیود‌ها هم حدود نیم ولت (که البته مهم نیست)  است. حالا من باید مقاومت را طوری محاسبه کنم که مجموع ولتاژهای تغذیه، افت‌ پتانسیل روی مقاومت و ولتاژ دیود زیر ۲۰۰ ولت شود.

      \begin{align*}<br /> V_{DS(max)} \leq V_{R} + Vdd + V_{Diode}\\<br /> \frac{V_{DS(max)} - Vdd - V_{Diode}}{I_{max}} \leq R\\<br /> \end{align*}
      با این محاسبات حداکثر اندازه مقاومت در مدار من حدود ۱۰۰ اهم می‌شود (نمیدانم چرا این مقاومت را در مدار ۵۰ (دو مقاومت ۱۰۰ اهمی موازی) در نظر گرفته‌ام!)

    2. استفاده از دیود به همراه زنر: این روش از دو روش قبلی سریع‌تر است و همچنین حداکثر ولتاژ از قبل مشخص هست (که برابر ولتاژ دیود زنر به همراه ولتاژ دیود است).

در هر سه روش بالا دیود‌ها باید از نوع سریع شاتکی باشند تا بتوانند به سرعت قطع و وصل شوند (به عنوان مثال 1N5819). من در یک تجربه در ابتدا دیود‌های معمولی سری 1N4001 استفاده کرده بودم. در آن مدار حداکثر سرعت به 60RPM می‌رسید. بعدا مدار را با دیود‌های شاتکی به همراه مقاومت بستم (البته در آن مدار یک خازن هم موازی با مقاومت قرار داده بودم) که در این مدار جدید سرعت به حدود 100RPM رسید!

مدار درایور

شماتیک

شماتیک این مدار رو بر اساس ترانزیستور IRFS610 (در واقع می‌شه گفت که فروشنده این آشغال ماسفت رو به من انداخت!)، راه‌انداز SN75374، موتور ۸.۵ولت/۱.۲آمپری و تغذیه ۱۲ ولت طراحی کردم. شکل زیر شماتیک این درایور است (رنگ‌های عکس زیر دقیقا مثل محیط خود برنامه gschem که شماتیک را در آن رسم کرده‌ام).

بورد

در طراحی بورد اولا باید دقت کرد که خط‌هایی که از آنها جریان عبور می‌کند، تا حد امکان پهن باشند، زمین هم به همین صورت باید بزرگ باشد (که البته به خوبی در مدار من رعایت نشده که یکی از دلایل آن تک لایه بودن بورد است). ثانیا اگر شما برای ترانزیستور‌ها و یا قطعات دیگر می‌خواهید خنک کننده در نظر بگیرید باید ابعاد آن را نیز در نظر داشته باشید چون ممکن است، بعد از طراحی بورد متوجه شوید که جایی برای خنک کننده ندارید و یا خنک کننده به قطعات دیگر و یا به بورد‌های کناری برخورد می‌کند.

نکته: شما اگر از این مدار می‌خواهید استفاده کنید حتماً ترانزیستور‌های بهتری تهیه کنید. اکثر این ترانزیستور‌ها از نظر پین با هم مطابقت دارند (pin compatible) و شما مشکلی در استفاده از بورد نیز نخواهید داشت.

من در این مدار ۴ سری کانکتور قرار دادم. سری اول ترمینال ۵ پین‌ (که پیچ دارند و سیم در داخل آنها با پیچ‌گوشتی محکم می‌شود) که ۵ سیم موتور به آن وصل می‌شود. سری دوم ترمینال ۲ پین برای ولتاژ تغذیه موتور. سومین سری ترمینال ۸ پین برای اتصال تغذیه مدار، درایور ماسفت و ۴ سیم کنترل موتور. چهارمین کانکتور هم از نوع IDC است (۱۰ پین 2×5) که همان ۴ سیم کنترل موتور را حمل می‌کند. این کانکتور کمک می‌کند سیم‌کشی کمتر  و راحتتر شود و بتوان با یک کابل ریبون، کنترلر را به این مدار متصل کرد.

بعد از ساخت و لحیم کردن بورد بالا، در اولین تست به نظرم ترانزیستور‌های خیلی داغ می‌شدند (البته این امر به علت Rds بالای این ترانزیستور‌ها امری بدیهی بود). احساس کردم حتما نیاز هست که یک خنک کننده (Heat Sink) به ترانزیستور‌ها متصل کنم.  البته خنک‌کننده‌ای در دسترس من نبود! ایده‌ای که به ذهنم رسید استفاده از یک تکه آلومنیوم به عنوان خنک‌کننده است. ساده‌ترین و بزرگ‌ترین آلومنیوم در دسترس چوب پرده است. خوب ما هم در خانه یک تکه از این چوب پرده‌ها داشتیم. سریع یه اندازه‌گیری بعد بریدن با اره و سپس هم سوراخ‌کاری. حالا دیگر من یک خنک‌کننده ارزان قیمت دارم!

بورد این مدار با gEDA و PCB طراحی شده است. دو مدار داخل متن، اینجا و اینجا با برنامه xcircuit کشیده شده‌اند. این تصویر هم در اینجا با برنامه Dia کشیده شده است (قبل از اینکه برنامه خوب xcircuit را پیدا کنم!).

(+) فایل شماتیک مدار به فرمت پی‌دی‌اف.

(+) فایل بورد مدار به فرمت پی‌دی‌اف.

(+) فایل فشرده به فرمت tar.bz2 حاوی فایل‌های شماتیک و بورد و همچنین پی‌دی‌اف‌های تولید شده.

۳ نظر به “درایور موتور پله‌ای برای CNC (قسمت دوم)”

  • نوید
    ۴ اسفند ۱۳۸۷ at ۷:۰۴ ب.ظ

    با عرض سلام.
    رشته ی اصلی من کامپیوتر نرمافزار است و از الکترونیک زیاد نمیدونم ولی در مورد این بورد این سوال برام پیش اومده که ترانزیستوری که روی برد فیزیکی قرار داره روی شماتیک برد وجود نداره اگر توضیح بدید ممنون میشم.
    عبد
    تعجب می‌کنم چطور ترانزیستور‌ها را پیدا نکردید. شاید چشم شما به دنبال ترانزیستور‌های BJT بود ولی روی شماتیک ترانزیستور‌های mosfet قرار دارد.

  • شهرام
    ۸ اردیبهشت ۱۳۸۸ at ۱۰:۴۴ ق.ظ

    درایور کامل (شماتیک) برای cnc چوب البته من دبیر فیزیک هستم خیلی ممنون

  • شهرام
    ۱۵ خرداد ۱۳۸۸ at ۱۱:۵۷ ق.ظ

    خیلی ممتون مشکل حل شد فقط ترازیستئرها خیلی داغ میشن (کارت درسته)

نوشتن نظر