آموزش استفاده از سنسورها برای کنترل جهت و سرعت Brushed Motors و راه‌اندازی Stepper Motor دو قطبی

قسمت 51
آردوینو 51
مشاهده سایر جلسات آموزش
18 بازدید
۱۴۰۵-۰۳-۰۳
9 دقیقه
  • نویسنده: Arduino captain
  • درباره نویسنده: من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!

در آموزش راه‌اندازی یک Brushed Motor با Transistor و کنترل جهت و سرعت با H-Bridge از آموزش آردوینو به راه‌اندازی یک Brushed Motor با استفاده از Transistor، کنترل جهت یک Brushed Motor با H-Bridge و کنترل جهت و سرعت یک Brushed Motor با H-Bridge پرداختیم. در این قسمت قصد داریم درباره استفاده از سنسورها برای کنترل جهت و سرعت Brushed Motors و راه‌اندازی یک موتور پله‌ای (Stepper) دو قطبی صحبت کنیم.

استفاده از سنسورها برای کنترل جهت و سرعت Brushed Motors

فرض کنید می‌خواهید جهت و سرعت Brushed Motorها را با استفاده از بازخوردی که از حسگرها می‌گیرید کنترل کنید. به‌ عنوان مثال، می‌خواهید دو حسگر نوری سرعت و جهت یک موتور را کنترل کنند تا ربات به سمت یک پرتو نور حرکت کند. این راه‌حل از اتصالات موتوری مشابه آنچه در راه‌اندازی یک Brushed Motor با Transistor و کنترل جهت و سرعت با H-Bridge نشان داده شده استفاده می‌کند، اما دو photoresistors نیز اضافه شده‌اند؛ این اتصال در شکل ( 1 ) قابل مشاهده است. برای خازن‌های ۰٫۱ µF از خازن‌های سرامیکی استفاده کنید.

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

شکل 1- دو موتور که با استفاده از سنسورها کنترل می‌شوند

این sketch سطح نور روی حسگرها را بررسی می‌کند و موتورها را به گونه‌ای راه می‌اندازد که به سمت حسگری که نور بیشتری دریافت کرده است هدایت شوند:

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

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

نور از طریق ورودی‌های آنالوگ و با استفاده از تابع analogRead اندازه‌گیری می‌شود. هنگامی که برنامه شروع می‌شود، نور محیط اندازه‌گیری و این مقدار به عنوان آستانه‌ای برای حداقل نور مورد نیاز جهت حرکت ربات استفاده می‌شود. حاشیه‌ای به اندازه ۱۰۰ به میانگین سطح دو حسگر اضافه می‌شود تا ربات به دلیل تغییرات جزئی در نور محیط حرکت نکند. مقدار نور که با analogRead اندازه‌گیری می‌شود، با استفاده از تابع map به مقدار PWM تبدیل می‌شود. MIN_PWM را روی مقداری قرار دهید که تقریباً باعث حرکت ربات شما می‌شود (مقادیر کم گشتاور کافی را فراهم نمی‌کنند؛ این مقدار را با آزمون و خطا روی ربات خود پیدا کنید). MAX_PWM را روی مقداری (حداکثر تا ۲۵۵) قرار دهید که سریع‌ترین سرعت مطلوب شما برای ربات است.

شاید برای شما مفید باشد:
()analogReference در آردوینو

سرعت موتور در تابع setSpeed کنترل می‌شود. برای هر موتور دو پایه برای کنترل جهت و یک پایه دیگر برای کنترل سرعت استفاده می‌شود. شماره پایه‌ها در آرایه‌های leftPins و rightPins نگهداری می‌شود. اولین مقدار در هر آرایه پایه مربوط به سرعت است و دو مقدار دیگر برای جهت استفاده می‌شوند.

جایگزین L293، تراشه Toshiba TB6612FNG است. از این تراشه می‌توان در هرکدام از مثال‌های این بخش که از L293D استفاده شده است بهره برد. شکل ( 2 ) نحوه سیم‌کشی این تراشه روی برد Pololu (کد کالای ۷۱۳ Pololu) را نشان می‌دهد.

سیم‌کشی H‑Bridge روی برد Pololu

شکل 2- سیم‌کشی H‑Bridge روی برد Pololu

شما می‌توانید با افزودن سخت‌افزار جانبی تعداد پایه‌های مورد نیاز را کاهش دهید. در این روش برای هر موتور تنها یک پایه برای کنترل جهت استفاده می‌شود و با استفاده از یک ترانزیستور یا گیت منطقی سطح ورودی دیگر H‑Bridge معکوس می‌شود. نمودارهای مداری این روش در ویکی آردوینو موجود است؛ اما اگر بردی آماده می‌خواهید می‌توانید از شیلد‌های H‑Bridge مانند Arduino Motor Shield (شناسه ۷۶۳۰۰۴۹۲۰۰۳۷۱) یا Ardumoto از SparkFun (DEV‑09213) استفاده کنید. هر دو این بردها بر اساس تراشه L298 هستند که جایگزینی برای L293 بوده و جریان بیشتری را می‌تواند راه‌اندازی کند. این شیلدها مستقیماً روی آردوینو قرار می‌گیرند و فقط نیاز به اتصال به منبع تغذیه موتور و سیم‌پیچ‌ها دارند.

در ادامه sketch اصلاح‌شده برای استفاده از Arduino Motor Shield (ورودی‌های آنالوگ برای اندازه‌گیری جریان به کار می‌روند، بنابراین sketch از A2 و A3 استفاده می‌کند) آورده شده است:

تابع loop دقیقاً مشابه sketch قبلی است. تابع setSpeed به دلیل اینکه سخت‌افزار روی شیلد اجازه می‌دهد تنها یک پایه جهت موتور را کنترل کند، کد کمتری دارد.

شیلد Ardumoto از پایه‌های متفاوتی استفاده می‌کند؛ بنابراین باید کد را مطابق زیر تغییر دهید:

همان کارایی را با استفاده از Adafruit Motor Shield V2 پیاده‌سازی کرده‌ایم؛ شکل ( 3 ) را ببینید. برای استفاده از این شیلد باید کتابخانه‌ای به نام Adafruit_MotorShield را با استفاده از مدیر کتابخانه نصب کنید.

استفاده از Adafruit Motor Shield

شکل 3- استفاده از Adafruit Motor Shield

شیلد Adafruit چهار اتصال برای سیم‌پیچ‌های موتور فراهم می‌کند؛ sketch زیر موتورها را به کانکتورهای ۳ و ۴ متصل کرده است:

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

اگر شیلد دیگری غیر از آن‌هایی که در این دستورالعمل ذکر شده دارید، باید به دیتاشیت آن مراجعه کنید و مطمئن شوید مقادیری که در اسکچ استفاده شده با پایه‌های مربوط به PWM و جهت تطبیق دارند.

راه‌اندازی یک موتور پله‌ای (Stepper) دو قطبی

فرض کنید یک موتور پله‌ای دو قطبی (چهار سیم) دارید و می‌خواهید آن را با استفاده از یک H‑Bridge تحت کنترل برنامه حرکت دهید. این sketch، موتور را با توجه به دستورات سریال حرکت می‌دهد. یک مقدار عددی که با علامت + دنبال شود موتور را در یک جهت پله قرار می‌دهد؛ علامت - موتور را در جهت دیگر می‌چرخاند. برای مثال، «۲۴+» یک موتور ۲۴ پله‌ای را یک دور کامل در یک جهت می‌چرخاند و «۱۲‑» نصف دور را در جهت دیگر حرکت می‌دهد. قطعات را مطابق شکل ( 4 ) متصل کنید. برای خازن‌های ۰٫۱ µF از خازن‌های سرامیکی استفاده کنید. در ادامه sketch آمده است:

شاید برای شما مفید باشد:
آموزش میکروکنترلر STM32 : وقفه رابط سریال
موتور پله‌ای چهار سیم دو قطبی با استفاده از L293 H‑Bridge

شکل 4- موتور پله‌ای چهار سیم دو قطبی با استفاده از L293 H‑Bridge

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

موتور دارای چهار سیم است و هر جفت سیم مربوط به یک فاز است. برای اطمینان از اینکه ولتاژ و تعداد پله‌ها (define STEPS#)با موتور شما مطابقت دارد باید به دیتاشیت یا مستندات دیگر آن مراجعه کنید، اما اگر ترتیب سیم‌بندی آن را نمی‌دانید می‌توانید با یک مولتی‌متر آزمایشی ساده انجام دهید، مقاومت بین جفت‌های مختلف سیم را اندازه بگیرید؛ دو جفت سیم وجود خواهد داشت که مقاومت یکسانی دارند و تمامی جفت‌های دیگر مقاومت بی‌نهایت خواهند داشت، زیرا ارتباطی بین آن‌ها وجود ندارد.

اگر موتور پله‌ای شما به جریان بیشتری نسبت به آنچه L293 می‌تواند فراهم کند (۶۰۰ میلی‌آمپر برای L293D) نیاز داشت، می‌توانید از تراشه SN754410 برای جریان تا ۱ آمپر با همان سیم‌کشی و کد L293 استفاده کنید. برای جریان تا ۲ آمپر می‌توانید از تراشه L298 استفاده کنید. تراشه L298 می‌تواند از همان sketch نشان‌داده‌شده در راه‌حل این بخش استفاده کند و باید مطابق شکل ( 5 ) متصل شود. برای خازن‌های ۰٫۱ µF از خازن‌های سرامیکی استفاده کنید.

موتور پله‌ای Unipolar با L298

شکل 5- موتور پله‌ای Unipolar با L298

ساده‌ترین راه برای اتصال یک L298 به آردوینو استفاده از Arduino Motor Shield (شناسه ۷۶۳۰۰۴۹۲۰۰۳۷۱) است. این شیلد روی برد آردوینو نصب می‌شود و تنها نیاز به اتصال خارجی به سیم‌پیچ‌های موتور دارد؛ توان موتور از پین Vin (ولتاژ ورودی خارجی) آردوینو تأمین می‌شود. پایه‌های In1/2 توسط پایه ۱۲ و پایه ENA توسط پایه ۳ کنترل می‌شوند. پایه‌های In3/4 به پایه ۱۳ و ENB به پایه ۱۱ متصل‌اند. برای استفاده از sketch قبلی با Arduino Motor Shield تغییرات زیر را اعمال کنید:

سپس تمام کد داخل تابع setup() را با موارد زیر جایگزین کنید:

کد تابع loop همان کد sketch قبلی است.

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

شیلد موتور دارای heat sink و تحمل حرارتی مناسب برای این کاربرد است. اگر می‌خواهید توان مصرفی را کاهش دهید، می‌توانید زمانی که موتورهای پله‌ای استفاده نمی شوند آن‌ها را با صفر کردن پایه‌های ENA و ENB خاموش کنید. این کار یعنی موتور موقعیت خود را در جای خود، و در بین پله‌ها نگه می‌دارد).

اطلاعات
18
0
0
اشتراک و حمایت
جلسات دیگر
آردوینو

آموزش راه‌اندازی یک Brushed Motor با Transistor و...

profile نویسنده: Arduino captain متخصص الکترونیک

من کاپیتان آردوینو، اسمم میلاده و اینجا هستم تا تجربیاتم در رابطه با آردوینو رو با شما به اشتراک بزارم!


ویراستار: حسین زنجانی زاده
مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

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

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله