ساخت شیلد موتور درایور برای رزبری پای (هت کنترل موتور)
هت های رزبری پای مانند شیلد های آردوینو هستند. هت های رزبری پای را میتوان همان شیلد های رزبری پای بحساب آورد زیرا دارای ابعادی مشابه با برد رزبری پای هستند و به طور مستقیم بالای برد قرار میگیرند. هت های مختلفی در بازار موجود است و هر کدام عملکرد خاص خود را دارند. در این آموزش ما میخواهیم یک هت (شیلد) موتور درایور برای رزبری پای طراحی کنیم که با آن بتوانیم موتور های DC و استپ موتور ها را کنترل کنیم. از این هت میتوانید برای پروژه های رباتیک استفاده کنید.
محتویات
مدار هت درایور موتور رزبری پای
شماتیک کامل درایور موتور L293D با Raspberry Pi در زیر نشان داده شده است. شماتیک با استفاده از EasyEDA ترسیم شده است.
این HAT متشکل از IC درایور موتور L293D ، ماژول صفحه نمایش LCD 16 * 2 و چهار دکمه فشاری است. ما همچنین پین هایی را برای ماژول SIM800 با تنظیم کننده 3.3V تهیه کرده ایم که با استفاده از تنظیم کننده متغیر LM317 برای پروژه های آینده طراحی شده است. شیلد موتور درایور رزبری پای مستقیماً در بالای Raspberry Pi قرار خواهد گرفت و کنترل ربات ها با استفاده از Raspberry Pi را آسان تر می کند.
قطعات مورد نیاز شیلد موتور درایور رزبری پای
- رزبری پای
- آی سی L293D
- دکمه * 4
- مقاومت های نصب سطحی (1 × 10 کیلو اهم و 12 × 1 کیلو اهم)
- پتانسیومتر 1 × 10 کیلو اهم
- 4 × LED SMD
- رگولاتور ولتاژ LM317
- 2 × ترمینال پیچ
- ال سی دی کاراکتری 16*2
آی سی درایور موتور L293D
L293D یک آی سی موتور درایور با 16 پین است. همانطور که از نام آن پیداست، از این آی سی برای کنترل سروو موتور ها، استپر موتور ها، موتور های DC و … استفاده میشود. IC L293D می تواند همزمان دو موتور DC را هدایت کند. همچنین سرعت و جهت این دو موتور بصورت مستقل قابل کنترل است. این آی سی با دو پایه ورودی برق یعنی “Vcc1” و “Vcc2” ارائه می شود. Vcc1 برای تغذیه مدار منطقی داخلی که باید 5 ولت باشد ، و پایه Vcc2 برای تأمین انرژی موتورهایی که می توانند 4.5 ولت تا 36 ولت باشند استفاده می شود.
- حداکثر جریان پیک موتور: 1.2A
- حداکثر جریان مداوم موتور: 600mA
- زمان انتقال: 300 نانومتر (در 5 ولت و 24 ولت)
ساخت PCB برای شیلد موتور درایور
شما میتوانید هم به صورت معمولی این مدار شیلد موتور درایور را طراحی کنید و هم میتوانید مدار را در یک برد PCB چاپ کنید. فایل های مورد نیاز برای چاپ PCB در فایل دانلودی انتهای صفحه قرار داده شده اند. اگر میخواهید PCB طراحی کنید، در نهایت چیزی مانند تصویر زیر را بدست خواهید آورد:
پیکربندی رزبری پای برای موتور درایور
قبل از برنامه نویسی Raspberry Pi ، باید کتابخانه های مورد نیاز را نصب کنیم. برای این منظور ابتدا سیستم عامل Raspberry Pi را با استفاده از دستورات زیر به روز کنید:
Sudo apt-get update Sudo apt-get upgrade
اکنون کتابخانه Adafruit_CharLCD را برای ماژول LCD نصب کنید. این کتابخانه مخصوص برد های LCD Adafruit است ، اما با سایر صفحه های LCD نیز کار می کند.
sudo pip3 install Adafruit-CharLCD
در اینجا در این پروژه ، ما Raspberry Pi را برای رانندگی دو موتور DC در جلو برنامه ریزی میکنیم. ما موتور ها را به جلو، به عقب، به راست و به چپ میرانیم و جهت را در نمایشگر ال سی دی نمایش میدهیم. کد کامل در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا قسمت های مهم کد را بررسی میکنیم.
طبق معمول ، کد را با وارد کردن همه کتابخانه های مورد نیاز شروع میکنیم. از ماژول RPi.GPIO برای دسترسی به پین های GPIO با استفاده از پایتون استفاده می شود. از ماژول time برای ایجاد تاخیر در برنامه استفاده می شود.
import RPi.GPIO as GPIO import time import board import Adafruit_CharLCD as LCD
پس از آن ، پایه های GPIO را برای نمایشگر LCD و درایور موتور L293D تعریف میکنیم.
lcd_rs = 0 lcd_en = 5 lcd_d4 = 6 Motor1A = 4 Motor1B = 17 Motor1E = 12
حالا 6 پایه موتور را به عنوان پایه خروجی تنظیم میکنیم. چهار پین بعدی پین های خروجی هستند که از دو تای اول برای کنترل موتور راست و دو پین بعدی برای موتور چپ استفاده می شود. دو پایه بعدی نیز برای فعال کردن موتور راست و چپ هستند.
GPIO.setup(Motor1A,GPIO.OUT) GPIO.setup(Motor1B,GPIO.OUT) GPIO.setup(Motor1E,GPIO.OUT) GPIO.setup(Motor2A,GPIO.OUT) GPIO.setup(Motor2B,GPIO.OUT) GPIO.setup(Motor2E,GPIO.OUT)
درون حلقه while ، دو موتور DC را در جهت جلو، عقب، چپ و راست در یک بازه دو ثانیه به طور همزمان حرکت میکنند.
GPIO.output(Motor1A , 0) GPIO.output(Motor1B , 0) GPIO.output(Motor2A , 1) GPIO.output(Motor2B , 0) lcd.message ('Left') print ("Left") sleep(2) #Forward GPIO.output(Motor1A , 1) GPIO.output(Motor1B , 0) GPIO.output(Motor2A , 1) GPIO.output(Motor2B , 0) lcd.message ('Forward') print ("Forward") ……………………………………
تست هت کنترل موتور با رزبری پای
پس از پایان کار مونتاژ PCB ، هت موتور درایور را بر روی Raspberry Pi نصب کرده و کد را اجرا کنید. اگر همه چیز خوب پیش برود ، موتورهای DC متصل به Raspberry Pi هر دو ثانیه در جهت چپ ، جلو ، راست و معکوس حرکت می کنند و جهت موتور بر روی صفحه نمایش LCD نمایش داده می شود.
موارد موجود در فایل : سورس کامل، فایل PCB