راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و AVR

راه اندازی و کنترل موتور پله ای

در این بخش دانلود پروژه راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و میکروکنترلر AVR, توسط تیم الکترونیک و برنامه نویسی الکترونیک ۹۸ برای شما علاقه مندان به پروژه های میکروکنترلر AVR آماده شده است. در این پروژه از پورت پرینتر کامپیوتر شخصی, به عنوان یک واسطه همه منظوره استفاده کرده ایم تا بین کامپیوتر و تجهیزات الکترومکانیک, به عنوان یکی از ملزومات ورود به عرصه روباتیک, ارتباط برقرار کنیم. در ادامه, چگونگی عملکرد و استفاده از پورت پرینتر را شرح می دهیم. زبان برنامه نویسی C را برای برنامه نویسی پورت انتخاب کرده ایم. این زبان, امکانات بسیار خوبی را برای برنامه نویسی و دسترسی به I/O های مختلف, از جمله پورت پرینتر یا همان پورت موازی (LPT) در اختیار کاربر قرار می دهد.

دانلود پروژه راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و میکروکنترلر AVR

موتور پله ای

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

مزایا و معایب موتورهای پله ای

مزایای موتورهای پله ای بدین شرح می باشد:

1- وابستگی مقدار چرخش شفت به پالس های ورودی

2- امکان ثابت نگاه داشتن محور در موتورهای پله ای، به شرط تحریک شدن سیم پیچ ها با جریانی مناسب.

3- مکان یابی دقیق

4- پاسخ بسیار عالی به دستورهای حرکت، توقف و چرخش معکوس

5- عمر طولانی در اینگونه موتورها، به دلیل فقدان جاروبک/براشر (Brusher)

6- امکان کنترل حلقه باز (Open Loop Control) با پاسخ موتور به پالس های دیجیتال ورودی

7- دستیابی به سرعت های بسیار پایین

معایب عمده موتورهای پله ای نیز عبارتند از:

1- در صورت کنترل نادرست، ممکن است موتور به حالت تشدید در آید. در این حالت، محور موتور به جای چرخش شروع به لرزیدن می کند.

2- با موتور پله ای نمی توان به سرعت های بالا دست سافت.

انواع موتورهای پله ای

:: موتور پله ای با رتور (Rotor) مغناطیس شونده

:: موتور پله ای مغناطیس دائم

:: موتور پله ای هیبرید (Hybrid)

راه اندازی موتورهای پله ای

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

پارامترهای مهم در موتورهای پله ای

هر موتور پله ای دارای ویژگی ها و پارامترهای مشخصی است که توسط سازنده ارائه می شود و تعدادی از مهمترین آنها عبارتند از:

1- ولتاژ و جریان اسمی موتور

2- زاویه پله (پله در دور)

3- گشتاور مکانیکی نگهدارنده و چرخشی

معمولا ولتاژ، جریان و زاویه پله به شکل بر چسبی روی موتور درج می شوند.

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

سخت افزار پروژه راه اندازی موتور پله ای

اکنون با کسب اطلاعاتی درباره عملکرد موتورهای پله ای، آماده ایم تا وارد مرحله اجرای پروژه شویم. در این پروژه از پورت پرینتر کامپیوتر شخصی، به عنوان یک واسط همه منظوره استفاده کرده ایم تا بین کامپیوتر و تجهیزات الکترومکانیک، به عنوان یکی از ملزومات ورود به عرصه روباتیک، ارتباط برقرار کنیم. در ادامه، چگونگی عملکرد و استفاده از پورت پرینتر را شرح می دهیم. زبان برنامه نویسی C را برای برنامه نویسی پورت انتخاب کرده ایم. این زبان امکانات بسیار خوبی برای برنامه نویسی و دسترسی به I/O های مختلف، از جمله پورت پرینتر یا همان پورت موازی (LPT) در اختیار کاربر قرار می دهد.

پورت پرینتر

پورت پرینتر, معمولا به صورت یک رابط 25 پایه روی کامپیوترهای شخصی وجود دارد. یکی از مزایای این پورت, ارسال 8 بیت اطلاعات به صورت همزمان است, به همین دلیل گاهی این پورت را با نام پورت مواری (Parallel) نیز می خوانند. مزیت دیگر این پورت, مطابقت با سطوح منطقی TTK است که در نتیجه آن می توان این پورت را بدون هیچ واسطی به میکروکنترلر متصل کرد. شکل زیر ترتیب پایه ها و شکل ظاهری این پورت را نشان می دهد.

دانلود پروژه راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و میکروکنترلر AVR

ترتیب پایه های پورت پرینتر DB25 نیز در جدول زیر گنجانده شده است.

دانلود پروژه راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و میکروکنترلر AVR

برای دسترسی به پورت موازی و کنترل آن, سه رجیستر (Register) هشت بیتی وجود دارند:

1- رجیستر داده (Data Register)

2- رجیستر کنترل (Control Register)

3- رجیستر وضعیت (Status Register)

برای دستیابی به هریک از رجیسترهای یاد شده, باید آدرس آن را بدانیم, جدول زیر, آدرس دستیابی به رجیسترهای پورت پرینتر را نشان می دهد.

دانلود پروژه راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و میکروکنترلر AVR

در کامپیوتر های مختلف ممکن است تعداد و آدرس پورت ها متفاوت باشند. برای دسترسی به آدرس پورت, می توان از این روش استفاده کرد :

در محیط ویندوز, روی آیکون My Computer کلیک راست کنید و گزینه Properties را انتخاب نمایید. از پنجره باز شده که با عنوان System Properties مشخص شده است, برگه Hardware و سپس گزینه Device Manager را انتخاب کنید. در پنجره باز شده, گزینه Ports را انتخاب نمایید. روی گزینه LPT1 دو بار کلیک کنید و از پنجره باز شده, گزینه Resources را انتخاب نمایید. می توان آدرس مورد نظر را از قسمت I/O Range به دست آورید. به این ترتیب, می توان به هریک از رجیسترهای مربوط به پورت پرینتر دست یافت. همان طور که گفته شد, در این پروژه از زبان C برای دستیابی به پورت پرینتر استفاده شده است. برای مثال می توان با دستور Outp (0X0378.0X55) مقدار 55Hex را به پورت پرینتر فرستاد. اکنون با کسب اطلاعات لازم درباره پورت پرینتر, آماده ایم تا وارد مرحله انجام پروژه شویم. در این پروژه, به دو طریق می توان چرخش موتور پله ای را کنترل کرد:

1- با چرخاندن یک ولوم

2- توسط صفحه کلید کامپیوتر

نقشه شماتیک پروژه راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و AVR

شکل زیر, شماتیک کامل مدار پروژه را نشان می دهد. موتور پله ای استفاده شده, یک موتور تک قطبی چهار فاز با ولتاژ اسمی 5V و جریان 500mA است. زاویه پله در این موتور 1/8 است, بنابراین لازم است برای یک چرخش کامل شفت, 200 پله طی شود.

توسط ولوم RV1, می توان موتور را در دو جهت و با سرعت های متفاوت چرخاند. در حقیقت, طراحی برنامه طوری است که با چرخاندن پیچ ولوم به هر جهت و با هر سرعت (البته سرعت چرخش نمی تواند خیلی زیاد باشد), محور موتور نیز در همان جهت و با همان سرعت می چرخد. به این ترتیب چرخش پیچ ولوم, روی شفت محور منعکس می شود. همچنین می توان محور موتور را از طریق برنامه نوشته شده به زبان C, که روی کامپیوتر بارگذاری می شود, و پورت پرینتر به حرکت در آورد.

با توجه به جریان 500mA موتور, از ترانزیستور BC338 استفاده شده است تا راه اندازی به درستی صورت پذیرد و محدودیت جریان رسانی به سیم پیچ ها مطرح نباشد. شایان ذکر است که منبع تغذیه مدار نیز باید به گونه ای انتخاب شود که بتواند جریان مورد نیاز برای راه اندازی موتور را تامین کند. در ارتباط کامپیوتر با میکروکنترلر AVR, از سه سیم رابط استفاده شده است که عبارتند از : پایه شماره یک از پورت پرینتر (پایه Strobe), پایه شماره 2 از پورت پرینتر (پایه Data0) و پایه 18 تا 25 که همگی به زمین متصل می شوند و در اصل یک پایه به شمار می روند.

برنامه به زبان C طوری طراحی شده است که در جهت چرخش موتور توسط پایه Data0 معین شود (اگر Data0=0 باشد, چرخش به سمت چپ و اگر Data0=1 باشد, چرخش به سمت راست خواهد بود) و توسط پایه Strobe, پال سهای زمانبندی شده به پایه Int0 میکروکنترلر اعمال گردد.

نقشه شماتیک پروژه راه اندازی و کنترل موتور پله ای توسط پورت پرینتر و AVR

برنامه میکروکنترلر در محیط نرم افزار Bascom AVR

شرح برنامه میکروکنترلر به زبان بیسیک

در این پروژه از روش راه اندازی کامل (دو بیتی) استفاده کرده ایم. متغیر A همان ابتدا بایت کنترلی است که در قسمت راه اندازی کامل در مورد آن صحبت کردیم. همانطور که گفته شد، در ابتدای برنامه، مقدار 33H را در بایت کنترلی بار می کنیم. با چرخش این بایت، می توان سیگنال مناسب را برای راه اندازی موتور تولید کرد.

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

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

طبق معمول، برنامه میکروکنترلر از یک حلقه Do…Loop به عنوان بدنه اصلی و چند زیر روال وقفه تشکیل شده است. در بدنه اصلی، موقعیت فعلی پتانسیومتر بررسی می شود تا در صورت تغییر موقعیت، موتور نیز در موقعیت جدید قرار گیرد. متغیر Ref موقعیت فعلی پتانسیومتر و متغیر Place موقعیت فعلی محور موتور را نشان می دهد. اختلاف این دو مقدار در هر چرخه حلقه Do…Loop کنترل می شود تا در صورت تغییر، عمل مناسب چرخش محور موتور انجام گیرد.

مقدار آنالوگ در خروجی پتانسیومتر به صورت مداوم از طریق مبدل ADC داخلی میکروکنترلر ATmega8 به روزرسانی می شود. اینکار، با زمانبندی مشخص از طریق تایمر صفر صورت می گیرد. تایمر صفر طوری برنامه ریزی شده است که در هر ثانیه حدود 15 بار سرریز اتفاق بیفتد، در واقع در هر ثانیه 15 بار از مقدار آنالوگ موجود در خروجی پتانسیومتر نمونه برداری می شود.

زیر روال وقفه خارجی، مخصوص دریافت اطلاعات کنترلی ارسال از طریق پورت پرینتر کامپیوتر است. برحسب مقدار منطقی موجود روی پایه Pind.0 با اعمال وقفه یاد شده موتور یک پله در جهت چپ یا راست حرکت می کند. اگر پایه مورد بحث برابر یک باشد، جهت چرخش به سمت چپ و در صورت صفر بودن پایه، جهت چرخش به سمت راست خواهد بود.

برنامه به زبان C

شرح برنامه به زبان C

دو تابع inp () و outp (), برای دسترسی به پورت پرینتر در زبان C طراحی شده اند که اولی برای خواندن اطلاعات از پورت و دومی برای نوشتن اطلاعات روی آن به کار می رود. این دو تابع در کتابخانه dos.h قرار دارند, بنابراین لازم است برای استفاده از آن ها در برنامه, هدر فایل dos.h را در اول برنامه وارد کنیم.

آدرس پورت پرینتر شماره یک, 378H (LPT1) می باشد که در حقیقت همان آدرس رجیستر داده است. آدرس رجیستر کنترل, با اضافه کردن دو رقم به آدرس مذکور به دست می آید. همان طور که گفته شد, ما از دو پایه پورت استفاده کرده ایم, یکی Data0 که بیت شماره صفر از رجیستر داده می باشد و دیگری Strobe که بیت شماره صفر از رجیستر کنترل است. در ابتدای برنامه, آدرس رجیستره داده و کنترل به ترتیب با نام های Dataport و Controlport به صورت دو مقدار ثابت تعریف شده اند.

با اجرای برنامه, از کاربر درخواست می شود تا به ترتیب سه پارامتر تعداد پله بر حسب ثانیه و جهت چرخش را وارد کند. پس از وارد کردن مقادیر, سیگنال مناسب جهت راه اندازی موتور به میکروکنترلر اعمال می شود و موتور در جهت خواسته شده و به میزان مناسب حرکت خواهد کرد. با زدن یکی از کلید های صفحه کلید, برنامه دوباره از ابتدا اجرا خواهد شد و با زدن کلید Esc از برنامه خارج می شویم.

 اطلاعات پروژه

 رمز فایل : www.electronics98.com

 حجم فایل : 356 کیلو بایت

 محیط برنامه نویسی : CPP | BASCOM-AVR

 برنامه نویسی شده به زبان : C | BASIC

 نویسنده : فرهاد اکبری

 تاریخ انتشار : 16 آگوست 2014

 شرایط و قوانین ثبت دیدگاه

 فارسی بنویسید و از کیبورد فارسی استفاده کنید.

 لطفاً بیش‌از‌حدِ معمول، شکلک یا ایموجی استفاده نکنید و از کشیدن حروف یا کلمات با صفحه‌کلید بپرهیزید.

 به کاربران و سایر اشخاص احترام بگذارید. پیام‌هایی که شامل محتوای توهین‌آمیز و کلمات نامناسب باشند، حذف می‌شوند.

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