موتور DC -آموزش آردوینو{جلسه دوازدهم}

راه اندازي موتور DC

این جلسه قصد دارم در ادامه رسالت PWM یک موتور DC رو با هم راه اندازی کنیم. بین این جلسه و جلسه قبل تفاوت های سخت افزاری وجود داره وگرنه منطق کار عینا مثل روشن کردن ال ای دی RGB هست.

 

خب شروع می کنیم. قدم اول موتور DC چیه اصن؟
برای درک موتور DC و این که توش چه خبره یه سرچ کوچیک بزنید دنیای اطلاعات رو خواهید دید ولی علی الحساب این لینک یه توضیح جمع و جور و مناسب برای طرز کار این موتورها نوشته.

حالا قراره این موتورها رو با آردوینو کنترل کنیم. منطق کنترل موتورهای DC استفاده از PWM هست. یه کم موضوع رو باز کنیم.
ببینید ما با موتور مثل یک مقاومت یا هر المان دیگه ای رفتار می کنیم. اگه قرار باشه از یه مقاومت جریانی عبور کنه طبق قوانین مداری باید دو سر المان اختلاف ولتاژ وجود داشته باشه مثل شکل زیر:

 

موتور هم عین مقاومت ، برای این که جریان ازش عبور کنه (اصطلاحا موتور کار کنه) باید دو سر اون اختلاف ولتاژ بوجود بیاریم. خب موتور DC دو تا ورودی داره که باید بهشون ولتاژ بدیم تا موتور راه بیفته:

خب مسلمه که این ولتاژ باید از آردوینو تامین بشه. حالا به نظر شما کدوم پایه های آردوینو ؟ دیجیتال یا آنالوگ؟
جواب این سوال کاملا مشخصه: دیجیتال!
حالا سوالی که پیش میاد این هستش که آیا به هر پایه دیجیتالی یا پایه های PWM؟
در واقع به هر دوتاش میتونید وصل کنید فقط به این بستگی داره که از موتور چی بخواید. یه موقع براتون مهمه موتور با تمام توان روشن بشه و کار کنه، یه موقع براتون مهمه بتونید سرعت چرخش موتور رو کنترل کنید و هرجا که لازم بود تغییر بدید. برای مورد اول میتونید از هر 2 پایه دیجیتال دلخواه آردوینو می تونید استفاده کنید ولی در مورد دوم تنها و تنها استفاده از پین های دیجیتال PWM جوابگو خواهد بود.

پس تا این جا یه جمع بندی کوچیک:
1.برای راه انداختن موتورDC باید دو سر آن اختلاف ولتاژ ایجاد بشه.
2.برای ولتاژ دادن به موتور DC از 2 پین دیجیتال آردوینو استفاده میشه.

حالا سوالی جدیدی که پیش میاد اینه که چطوری با آردوینو این اختلاف ولتاژ رو بوجود بیاریم؟
خیلی خیلی خیلی سادست. بیاین فرض کنیم میخوایم موتور رو با نصف توان روشن کنیم ( یعنی کار دومی که نسبتا سخت تره ). طبق حرفی که پاراگراف قبل زدیم برای این کار نمی تونیم از هر پایه دیجیتالی استفاده کنیم و باید بریم سراغ پایه های PWM. طبق آموزش های جلسه قبل پین های دیجیتال PWM آردوینو uno عبارت بودن از: ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟(برید جلسه قبل مرور کنید).دستوری که باهاش به پین های PWM مقدار می دادیم چی بود؟؟ analogWrite.
حالا برای ایجاد اختلاف ولتاژی که احتیاج داریم از دو تا دستور زیر استفاده می کنیم:

;(9,127)analogWrite

;(10,0)analogWrite

طبق توضیحات جلسه قبل با این کار ولتاژ(دقت کنید ولتاژ) پایه شماره 10 برابر با 0 ولت و ولتاژ پایه شماره 9 حدود 2.5 ولت خواهد بود بنابراین تونستیم بین دو سر موتور اختلاف ولتاژ ایجاد کنیم. اگه خط اول دستور به جای عدد 127 عدد 255 رو می نوشتیم ولتاژ پایه 9 به 5 ولت می رسید و موتور با حداکثر توان کار می کرد.

خخخخخب حالا دو تا سوال اساسی دیگه پیش میاد:
1. آیا پین های دیجیتال شماره 9 و 10 آردوینو رو مستقیم به موتور وصل کنیم؟؟
2.کدوم پایه رو به کدام ورودی موتور بزنیم ؟ اصن فرق داره؟؟؟؟

اول جواب سوال دوم:ببینید موتور DC چپ گرد و راست گرد داره. یعنی هم میتونه موافق جهت عقربه های ساعت و هم میتونه مخالف جهت عقربه های ساعت بچرخه. اگه ترتیب پین ها در اتصال به موتور عوض بشه هیچ اتفاقی نمی افته فقط جهت چرخش موتور تغییر می کنه.

حالا جواب سوال اول:اکیدا خیر! ازجمله مهم تریم مشخصه های عملکرد هر قطعه الکترونیکی جریان کاری اون هست. یا به عبارت دیگه
ولتاژ x جریان = توان کار قطعه.
هر پایه آردوینو ماکزیمم ولتاژ 5 ولت و جریان 40 میلی آمپر تامین خواهد کرد که میشه 200 میلی وات. حالا فکر کنید یک موتور نه چندان قوی مثلا10 وات داشته باشیم و بخوایم با آردوینو کنترلش کنیم. اگه مستقیم پین های آردوینو رو به ورودی های موتور بزنیم، موتور 10 وات میخواد تا درست کار کنه در حالی که آردوینو خودشو بکشه 0.2 وات زور داره بنابراین نمیتونه موتور رو راه بندازه و تحت فشار قرار می گیره همین عاملی برای سوختن برد آردوینو میشه. خب پس چیکار کنیم ؟ اینجاست که نقش درایور موتور پررنگ میشه.
این درایور بنده خدا کاری که میکنه این هستش که توانی که آردوینو برای راه اندازی موتور کم داره رو براش جبران می کنه و اینطوری هم موتور تغذیه میشه هم آردوینو سالم و سلامت به زندگیش ادامه میده.
حالا یه نکته وجود داره. اگه درایور موتور DC رو سرچ کنید صدها مدل درایور پیدا می کنید. خب کدومش مناسب کار ماست؟ برای جواب دادن به این سوال باید بریم سراغ موتورمون و ببینیم که مشخصات الکترونیکیش چیه؟ (ولتاژ و جریان و توان نامیش) بعد بر اساس این مشخصات درایورمون رو انتخاب کنیم.
مثلا تو همین مثال قبلی موتور ما 10 وات بود بهتره برای این موتور درایوری در حدود 12 الی 15 وات انتخاب کنیم تا اگه یه موقع موتور در شرایط نا مساعدی قرار گرفت که بیشتر از توان نامیش ازش کشیده شد مشکلی پیش نیاد.
بنابراین شماتیک کلی اتصالات ما این شکلی میشه:

 

درایوری که من برای این پروژه انتخاب کردم این هست:

 

همونطور که معلومه این امکان رو داره که 2 تا موتور رو درایور کنه : MOTOR A و MOTOR B . شش تا هم پین هدر داره دوتا مربوط به کنترل موتور A، دوتا مربوط به کنترل موتور B و پایه ولتاژ و زمین. اگه توضیحات محصول رو بخونید (لینک فروشگاه) می بینید نوشته هر کانال فقط 800 میلی آمپر جریان خروجی داره (البته نسبت به آردوینو 40 میلی آمپر شاهی می کنه ها) بنابراین در انتخاب موتور دقت فراوانی کنید. تو این پروژه من از این موتور استفاده کردم:

شکل زیر نحوه اتصال درایور به آردوینو رو نشون میده:

این شکل چند تا نکته اساسی داره :
اول :اینکه وقتی موتور به ترمینال های MOTOR B وصل میشه باید پین هدرهای کنترلی B به آردوینو متصل بشن.
دوم:برای تامین ولتاژ درایور از یه منبع تغذیه بردبوردی استفاده شده که می تونه به جای آن هر منبع ولتاژی بین 5 تا 12 ولت قرار بگیره.
سوم:یه نکته مداری هست که حتما باید رعایت بشه و اون چیزی نیست به جز زمین مشترک. حتما باید بین منبع تغذیه و آردوینو پایه گراند مشترک باشه و گرنه مدار به درستی عمل نخواهد کرد.

خب خسته که نشدید؟
مدار رو بستید؟
الان سخت افزار پروژمون تموم شد و اما کد:

دوستان دقت کنید من تعمدا از کد عکس می زارم تا مجبور بشید کد رو بنویسید

در هدر برنامه پین هایی رو که به پین های کنترلی موتور درایور وصل کردیم معرفی شده.
در تابع setup اون پین ها به عنوان خروجی تعریف شدن چرا که ما ( آردوینو) قراره برای موتور دستور بفرستیم.
در تابع loop مقدار پین 10 برابر با 0 و مقدار پین 11 برابر با 150 در نظر گرفته شده با این کد نویسی موتور در یک جهت خاص (یا ساعت گرد یا پاد ساعت گرد) شروع می کنه به چرخیدن .
اگه بخواید موتور در جهت مخالف بچرخه کافیه ترتیب 0 و 150 رو در کد نویسی تغییر بدید یعنی پایه 10 مقدار 150 و پایه 11 مقدار 0.
اگه بخواید موتور نچرخه هم خب هر دوتاشو 0 می دید.
و در انتها اگه بخواید موتور با حداکثر توانش کار کنه می تونید به 2 طریق عمل کنید:
1.به جای 150 از 255 استفاده کنید
2.به جای استفاده از دستور analogWrite و دادن مقدار 255 مستقیم از دستور digitalWrite استفاده کنید.

برای دریافت آخرین مطالب سایت  و همچنین مطالب منحصر به فرد دیگر که در سایت منتشر نمی شوند میتوانید در کانال تلگرام ما عضو شوید و یا در اینستاگرام ما را فالوو کنید:

این جلسه یه کم طولانی شد ولی خب حرف برای گفتن خیلی زیاد بود.
پایان

منبع:http://blog.arduino.ir/

 

13 نظر

  • علی عاقبتی

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

    • حامد قاسمی

      خیر. این پورت یک مربوط به چیز دیگری است و همونطور هم که در تصویر ارسالی مشخص است مربوط به آردوینو نمی باشد. آردوینو پورت مخصوص به خود را دارد و در device manager هم با نام Arduino uno کاملا مشخص هست.

  • علی عاقبتی

    با سلام
    مهندس عکس مربوطه را خدمتتان ارسال می کنم
    لطفا نحوه اختصاص پورت com به اردینو را توضیح بدهید
    ممنونم

    • حامد قاسمی

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

  • علی عاقبتی

    با سلام
    جنال مهندس کم لطفی می فرمایید بله برد انوunoمدل r3میباشد

    • حامد قاسمی

      با سلام.
      یه عکس از device manager کامپیوترتون میگیرید.
      با تشکر

  • علی عاقبتی

    مهندس عکس ارور را هم می فرستم خدمتتان

    • حامد قاسمی

      با سلام. خدمت شما.
      یک بار برد رو قطع و وصل کنید ببینید آیا مشکل حل میشه.
      اگه حل نشد چک کنید ببینید برد انتخابی روی arduino uno هست یا خیر.
      منتظر پاسخ شما هستم.
      موفق باشید.

  • علی عاقبتی

    با سلام
    مهندس قاسمی نمیدانم چرا برنامه اول چشمکم زن را اپلود کردم اجرا شد ولی برنامه موتورdc اپلود نشد با بررسی پورتهای
    کام مشاهده شد که هیچ پورتی به اردینو اختصاص داده نشده من از ویندوز 7 استفاده می کنم.به نظر شما مشکل از کجاست؟
    ممنون میشوم اگر پاسخ بدهید

  • علی عاقبتی

    ممنون

    • حامد قاسمی

      خواهش میکنم.
      موفق باشید.

  • علی عاقبتی

    سلام مهندس قاسمی
    برنامه چشمک زن را در اردینو اپلود کردم و اجرا شد
    برنامه موتور dcرا نیز نوشتم و اپلود کردم ولی درست اجرا نشد
    بزرگوار باید برنامه چشمکم زن را پاک کنم تا برنامه موتور اجراء شود
    اگر پاسختان بله است نحوه پاک کردن برنامه قدیم را لطفا بفرمایید
    و در ضمن در شماتیک برنامه موتور dc برای بورد اردینو منبع تغذیه
    قرار نداده بودید ایا اردینو باید با منبع تغذیه متصل به درایو کار کند.
    یا خودش هم مستقلا به منبع تغذیه خودش اتصال یابد ممنون از
    پاسختان

    • حامد قاسمی

      با سلام.
      بله باید پاک شود. ولی برای پاک شدن به کار خاصی نیاز نیست و با آپلود برنامه جدید عملا برنامه قبلی پاک می شود.
      خیر نیاز نیست با منبع تغذیه متصل به درایور کار کند ولی حتما باید زمین های برد آردوینو و منبع تغذیه یکی باشید.

  • نوشتن نظر

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    Optionally add an image (JPEG only)