اگر به فکر ساخت یک ربات افتادهاید، حتما به مقالهای نیاز خواهید داشت که در رابطه با انواع موتورها و نحوه راه اندازی آنها به شما کمک کند. ما در این مقاله نحوه راه اندازی موتور DC، استپر موتور و سروو موتور را به کمک شیلد درایور موتور L293D آردوینو به شما آموزش خواهیم داد.
اما چرا شیلد درایور موتور L293D آردوینو؟ دلیل این موضوع این است که راه اندازی انواع موتور با استفاده از این شیلد، روشی ساده و البته ارزان است. به علاوه این شیلد، بردی کامل و کارآمد برای اکثر پروژههای رباتیک و CNC به شمار میآید. برخی از تجهیزاتی که با استفاده از شیلد L293D میتوانید راه اندازی کنید، عبارتاند از:
- چهار عدد موتور DC دو جهته با انتخاب سرعت 8 بيتی (0-255)
- دو عدد استپ موتور (تک قطبی يا دوقطبی) با سیم پیچ تکی، سیم پیچ دوتايی، نیمپله و ریزپله
- دو عدد سروو موتور
درايور موتور L293D و شيفت رجيستر 74HC595
L293D، درايور موتوری با پل H دو كاناله است كه قابليت راه اندازی يک جفت موتور DC یا يک استپ موتور را دارد. از آنجایی که این شیلد دارای دو چیپ درایور موتور L293D است، از آن میتوان بهصورت جداگانه برای کنترل چهار موتور DC استفاده کرد. همین ویژگی، این شیلد را به گزینهای عالی برای ساخت رباتهای چهار چرخ تبدیل کرده است. شیلد درایور موتور L293D آردوینو دارای 4 پل H است و هر پل قابلیت جریان دهی 0.6 آمپر به موتور را دارد. علاوه بر این، بر روی شیلد، یک رجيستر 74HC595 وجود دارد که این امکان را به شما میدهد تا 8 پین چیپ L293D را با 4 پین آردوینو کنترل کنید.
منبع تغذيه
شما به سه روش میتوانید توان الکتریکی مورد نیاز موتورها را با شیلد درایور موتور L293D تامین کنید. در اینجا این سه روش را با هم بررسی میکنیم:
- استفاده از يک منبع تغذيه DC برای موتورها و آردوينو: اگر میخواهید از یک منبع تغذيه مشترک برای موتورها و آردوينو استفاده كنيد، كافی است منبع تغذيه را به جک DC آردوينو يا به بلوک دو پين EXT_PWR شيلد متصل كنيد و پس از آن، جامپر power را بر روی شيلد قرار دهيد. فقط باید توجه داشته باشید که تنها زمانی میتوانید از این روش استفاده کنید که ولتاژ تغذیه موتور کمتر از 12 ولت باشد.
- تغذيه آردوينو از طريق USB و تغذيه موتورها با استفاده از يک منبع تغذیه DC: اگر میخواهید آردوینو را با USB و موتورها را با یک منبع تغذیه DC، تغذیه کنید، كافی است كابل USB را به آردوینو متصل کنید و منبع تغذيه موتور را به بلوک EXT_PWR شيلد وصل نمائيد. در اين روش لازم است جامپر شيلد را حتما بردارید.
- استفاده از دو منبع تغذيه مجزا برای موتورها و آردوينو: اگر میخواهيد از دو منبع تغذيهی جداگانه برای موتور و آردوينو استفاده كنيد، كافی است يک منبع تغذيه را به جک DC آردوينو و منبع تغذيه ديگر را به بلوک EXT_PWR شيلد متصل كنيد. به این نکته حتما توجه داشته باشید که جامپر باید از روی شيلد برداشته شود.
هشدار:
هرگز بدون برداشتن جامپر شیلد، منبع تغذيه را به ورودی EXT_PWR متصل نكنيد. عدم رعايت اين نكته ممكن است به شیلد و آردوینو آسیب وارد کند.
برخی از ویژگیهای شیلد را در اینجا برای شما جمع آوری کردهایم:
- شيلد L293D دارای آرايهای از مقاومتهای pulldown است تا موتور را در هنگام روشن شدن شيلد، خاموش نگه دارد.
- نشانگر LED روی برد به شما نشان میدهد كه آیا تغذيه موتور بهدرستی انجام گرفته است یا نه. اگر LED روشن نباشد، موتورها نیز روشن نخواهند شد.
- کلید RESET این شیلد، همانند دکمه ریست آردوینو عمل میکند و تنها بهمنظور راحتی در استفاده، بر روی شیلد قرار داده شده است.
ترمینالهای خروجی شیلد درایور موتور L293D آردوینو
ترمینالهای خروجی هر دو چيپ L293D به شكل دو ترمينال پیچی 5 پایه در لبههای شيلد قرار داده شدهاند (M1، M2، M3 و M4). شما میتوانید چهار موتور DC خود را با ولتاژ کاری 4.5 تا 25 به این ترمینالها متصل کنید.
هر ترمینال خروجی این ماژول میتواند تا 600 میلی آمپر جریان به موتور DC بدهد. البته این نکته را همیشه باید به یاد داشته باشید که میزان جریانی که هر ترمینال به موتورها اعمال میکند، به منبع تغذیه بستگی دارد.
علاوه بر این، شما میتوانید این ترمینالها را به استپ موتور هم متصل کنید. کافی است یک استپ موتور را به دو ترمینال M1 و M2 و استپ موتور دیگر را به دو ترمینال M3 و M4HD متصل کنید. از ترمینال GND این ماژول نیز میتوانید برای استپ موتور تک قطبی استفاده کنید. برای اتصال این ترمینال به موتور، تپ مركزی هر دو استپ موتور را به این ترمینال وصل کنید.
شیلد L293D، پایههای 16 بیتی PWM آردوینو را به صورت دو دسته پین هدر سه تایی برای راه اندازی دو عدد سروو موتور در دسترس قرار داده است.
پایههای استفاده نشده شيلد درایور موتور L293D
همانطور که میبینید، پایههای ديجيتال شماره 2 و 13 و پایههای آنالوگ A0 تا A5 شيلد درایور موتور L293D مورد استفاده قرار نگرفتهاند. این پایهها در گوشه پایين سمت راست شیلد قرار دارند. اگر میخواهید از این پایهها استفاده کنید، میتوانيد به آنها هدر وصل کنید.
نصب كتابخانه AFMotor
برای اینکه بتوانید با شيلد درایور موتور L293D ارتباط برقرار کنید، لازم است كتابخانه AFMotor.h را نصب كنيد تا بتوانید بهراحتی موتور DC، استپ موتور و سروو موتور را کنترل نمایید.
برای نصب اين كتابخانه كافی است مسیر Sketch > Include Library > Manage Libraries را طی کنید و منتظر بمانيد تا Library Manager اقدام به دانلود و بهروزرسانی ليست كتابخانهها کند.
پس از اینکه مسیر بالا را طی کردید، کلمه motor shield را همانطور که در تصویر زیر میبینید، جستجو کنید و از بین کتابخانههایی که برای شما نمایش داده میشود، Adafruit Motor Shield library by Adafruit را نصب کنید.
راه اندازی موتور DC با شيلد درایور موتور L293D
اكنون كه اطلاعات لازم در مورد شيلد L293D را به دست آوردهاید، زمان راه اندازی موتور DC با شیلد درایور موتور L293D است. قطعات مورد نیاز این پروژه عبارت اند از:
- شیلد آردوینو MOTOR L293D
- درایور L293D
- ماژول جک آداپتور
- برد آردوینو UNO R3 CH340G
- موتور 12 ولت rf-370c-15370 DC
در قدم اول، شيلد را بر روی آردوينو نصب کنید.
در قدم بعدی، منبع تغذيه را به موتورها وصل کنید. با وجود اینکه میتوانید موتورهايی با رنج ولتاژی 4.5 الی 25 ولت را به شيلد وصل کنید، اما ما در این پروژه از موتورهای DC با ولتاژ 9 ولت استفاده میكنيم. به همین دلیل، منبع تغذيه خارجی 9 ولتی را به ترمينال EXT_PWR وصل میكنيم.
در مرحله سوم نیز، موتور را به يكی از ترمينالهای M1، M2، M3 یا M4 وصل کنید. در این پروژه ما موتور را به ترمینال M4 متصل میکنیم.
با به پایان رسیدن اتصالات، زمان آپلود کد است. نمونه كد زير، نحوه كنترل سرعت و جهت دوران موتور DC با شيلد درايور L293D را نشان میدهد و میتواند به عنوان مبنايی برای پروژههای كاربردیتر شما مورد استفاده قرار بگیرد.
#include <AFMotor.h>
AF_DCMotor motor(4);
void setup()
{
//Set initial speed of the motor & stop
motor.setSpeed(200);
motor.run(RELEASE);
}
void loop()
{
uint8_t i;
// Turn on motor
motor.run(FORWARD);
// Accelerate from zero to maximum speed
for (i=0; i<255; i++)
{
motor.setSpeed(i);
delay(10);
}
// Decelerate from maximum speed to zero
for (i=255; i!=0; i--)
{
motor.setSpeed(i);
delay(10);
}
// Now change motor direction
motor.run(BACKWARD);
// Accelerate from zero to maximum speed
for (i=0; i<255; i++)
{
motor.setSpeed(i);
delay(10);
}
// Decelerate from maximum speed to zero
for (i=255; i!=0; i--)
{
motor.setSpeed(i);
delay(10);
}
// Now turn off motor
motor.run(RELEASE);
delay(1000);
}
توضيح كد:
در اینجا بیایید نگاهی به نمونه کد بالا بیاندازیم. این کد ابتدا كتابخانه AFMotor.h را فراخوانی میکند.
خط دوم این کد با استفاده از دستور AF_DCMotor motor(motorPort#)، برای اين كتابخانه یک شی میسازد. در این دستور، باید شماره ترمينالی را كه موتور به آن متصل شده است، مشخص کنید. برای ترمينال M1 عدد 1، برای ترمينال M2، عدد 2، برای ترمینال M3، عدد 3 و برای ترمینال M4 عدد 4 را بنویسید. اگر میخواهيد چندين موتور را به شيلد درایور موتور L293D متصل کنید، لازم است برای هر موتور يک شی ایجاد کنید. به عنوان مثال، دستورات زير دو شی AFmotor میسازد:
AF_DCMotor motor1(1);
AF_DCMotor motor2(2);
در بخش setup و loop کد، از دو تابع زیر برای كنترل سرعت و جهت دوران موتور استفاده کنید:
- تابع setSpeed(speed) سرعت موتور را تنظيم میكند. رنج سرعت را میتوانید بين 0 تا 255 انتخاب کنید. 0 به معنای متوقف بودن موتور و 255 به معنای حداكثر سرعت موتور است.
- تابع run(cmd) مد كاری موتور را تنظيم میكند. مقادير قابل قبول برای cmd عبارتند از:
- FORWARD: موتور را در جهت مستقيم میچرخاند (جهت چرخش مستقيم موتور به سيم بندی موتور بستگی دارد).
- BACKWARD: موتور را در جهت عکس FORWARD میچرخاند.
- RELEASE: موتور را متوقف میکند. در اين حالت، تغذيه اعمالی به موتور برداشته میشود و معادل setSpeed(0) خواهد بود. از آنجایی که این شيلد دارای قابلیت ترمز ديناميكی نیست، با فرمان توقف، مدت زمانی طول میکشد تا موتور به طور کامل متوقف شود.
راه اندازی استپ موتور با شيلد درایور موتور L293D
در بخش قبلی راه اندازی موتور DC با شیلد L293D را باهم بررسی کردیم، اما در اینجا نحوه راه اندازی استپ موتور با این شيلد را با هم انجام خواهیم داد. علاوه بر شیلد درایور موتور و برد آردوینو، به یک استپ موتور هم نیاز خواهید داشت. میتوانید از استپر موتور 28BYJ-48-5V یا استپ موتور 24 ولت استفاده کنید.
برای آغاز این پروژه، ابتدا شيلد را بر روی آردوينو وصل کنید. اما پیش از اینکه ادامه پروژه را انجام دهید، باید در مورد نوع استپ موتوری که استفاده میکنید، کمی صحبت کنیم.
استپ موتور تک قطبی 28BYJ-48
اگر از استپ موتور 28BYJ-48 استفاده میکنید، باید بدانید که این موتور دارای ولتاژ نامی 5 ولت است و در طی یک دوره کامل، 48 پله را طی میکند. بنابراین، باید منبع تغذیه خارجی 5 ولتی را به بلوک EXT_PWR متصل کنید. فراموش نکنید که جامپر PWR را بردارید.
اکنون، موتور را به یکی از ترمینالهای M1-M2 يا M3-M4 وصل کنید. در این پروژه ما از پورت دوم یعنی ترمینالهای M3-M4 استفاده میکنیم.
طبق تصویر زیر این اتصالات را انجام دهید:
استپ موتور دو قطبی NEMA 17
اگر از استپ موتور دوقطبی NEMA 17 استفاده میکنید، باید به این نکته توجه داشته باشید که توان این موتورها 12 ولت است و طی یک دور کامل 200 پله را طی میکنند. به همین دلیل، منبع تغذیه خارجی 12 ولتی را به باید به بلوک EXT_PWR متصل کنید.
در اینجا هم فراموش نکنید که جامپر PWR را بردارید. پس از اتصال منبع تغذیه نیز، موتور را به یکی از ترمینالهای M1-M2 يا M3-M4 وصل کنید. در اینجا ما از پورت 2 یعنی ترمینالهای M3-M4 استفاده میکنیم.
اتصالات این موتور هم به شکل زیر خواهد بود:
كد آردوينو
اما اکنون زمان آن است که نمونه کد آردوینو را برای راه اندازی استپ موتور با درایور موتور L293D بررسی کنیم. كدی که در زير مشاهده میکنید، به طور کامل نحوه کنترل یک استپ موتور تک قطبی یا دو قطبی را با استفاده از شیلد L293D به شما نشان میدهد. این نمونه کد برای دو استپ موتوری که در بالا به آن اشاره کردیم، یکسان خواهد بود، اما در یک چیز با هم تفاوت دارند و آن پارامتر stepsPerRevolution است.
مقدار این پارامتر را پیش از اینکه کد را امتحان کنید، با توجه به نوع استپ موتور خود، تغییر دهید. مقدار این پارامتر را برای موتور NEMA 17، عدد 200 و برای استپ موتور 28BYJ-48، عدد 48 در نظر بگیرید.
#include <AFMotor.h>
// Number of steps per output rotation
// Change this as per your motor's specification
const int stepsPerRevolution = 48;
// connect motor to port #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);
void setup() {
Serial.begin(9600);
Serial.println("Stepper test!");
motor.setSpeed(10); // 10 rpm
}
void loop() {
Serial.println("Single coil steps");
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
Serial.println("Double coil steps");
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
Serial.println("Interleave coil steps");
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
Serial.println("Micrsostep steps");
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
}
توضيح كد:
در اینجا کد بالا را بیشتر بررسی میکنیم. این کد ابتدا كتابخانه AFMotor.h را فراخوانی میکند.
خط دوم این نمونه کد، بهوسيله AF_Stepper motor(48, 2) يک شی ايجاد میکند. در این دستور، شما باید تعداد گامهای موتور در هر دور كامل و شماره پورتی را كه موتور به آن وصل شده است، مشخص کنید.
در بخش setup و loop کد بالا، با فراخوانی دو تابع زير میتوانید سرعت و جهت دوران موتور را كنترل کنید:
- تابع setSpeed(rpm): این تابع میزان سرعت موتور را تعیین میكند كه در آن rpm مشخص كننده تعداد دور موتور در دقيقه است.
- تابع step(#steps, direction, steptype) : هرگاه میخواهید موتور شروع به حركت كند، باید اين تابع را فراخوانی کنید. آرگومان #steps نشان دهنده تعداد گامهای حركتی است كه موتور باید بردارد. آرگومان direction نیز يا بهصورت FORWARD یا BACKWARD خواهد بود. برای آرگومان steptype، میتوانید از گزینههای زیر استفاده کنید:
- SINGLE که در هر زمان يک سیم پیچ را فعال میکند.
- DOUBLE که برای ايجاد گشتاور بيشتر، دو سیم پیچ را فعال میکند.
- INTERLEAVE که حالتی بين single و double است و برای ايجاد يک نيم گام (نیم پله) كه سبب حركت نرمتر موتور میشود، مورد استفاده قرار میگیرد. اما به دلیل حرکت اضافی به صورت نیم پله، سرعت موتور نيز نصف خواهد شد.
- MICROSTEP: برای حرکت موتور به صورت ریز گام، جریان در دو سیم پیچ مجاور به صورت افزایشی و کاهشی خواهد بود. به این صورت که جریان به صورت ناگهانی از سیم پیچ اول به سیم پیچ دوم منتقل نمیشود. زمانیکه جریان در سیم پیچ اول ماکزیمم است، جریان سیم پیچ دوم از صفر تا مقدار ماکزیمم افزایش مییابد. سپس زمانیکه سیم پیچ دوم دارای بیشترین جریان است، جریان سیم پیچ اول به صفر کاهش پیدا میکند. بنابراین میتوانیم بگوییم که فاصله یک پله به تعداد زیادی پله کوچکتر تقسیم شده است. این روش راه اندازی استپ موتور، باعث بهبود رزولوشن و چرخش نرم موتور میشود. اما از طرفی نمیتوان گشتاور چندان زیادی داشت.
راه اندازی سروو موتور با شيلد درایور موتور L293D
برای این بخش، علاوه بر برد آردوینو و شیلد درایور موتور، به یک سروو موتور SG90 نیاز دارید. البته این سروو موتور تنها یک نمونه است، شما میتوانید از سروو موتورهای دیگری نیز استفاده کنید. راه اندازی سروو موتور با شیلد درایور موتور L293D مانند آب خوردن است! زیرا شیلد L293D، پینهای خروجی 16 بیتی PWM آردوینو (پين شماره 9 و 10) را با استفاده از دو عدد هدر سه پین، در لبههای شیلد قرار داده است. به علاوه، سروو موتور از رگولاتور 5 ولتی روی برد آردوینو تغذیه میشود. به همین دلیل نیازی نیست چیزی را به ترمینال EXT_PWR متصل کنید.
اتصالات شما باید چیزی شبیه تصویر زیر باشد:
از آنجایی که ما از پینهای PWM استفاده میکنیم، در نمونه کد زیر، از كتابخانه Servo نرم افزار آردوینو استفاده کردهایم.
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup()
{
// attaches the servo on pin 10 to the servo object
myservo.attach(10);
}
void loop()
{
// sweeps from 0 degrees to 180 degrees
for(pos = 0; pos <= 180; pos += 1)
{
myservo.write(pos);
delay(15);
}
// sweeps from 180 degrees to 0 degrees
for(pos = 180; pos>=0; pos-=1)
{
myservo.write(pos);
delay(15);
}
}
با انجام تمامی مراحی که گفته شد، میتوانید سروو موتور را هم با شیلد L293D راه اندازی کنید.
هدف ما در این مقاله این بود که شما بتوانید هر یک از موتورهای DC، استپ موتور و سروو موتور را با شیلد درایور موتور L293D آردوینو راه اندازی کنید و البته در کنار آن از کمک دوستان متخصص ما در این حوزه بهرهمند شوید. امیدواریم که در این راه موفق بوده باشیم. اگر به کمک بیشتری نیاز داشتید، لحظه ای درنگ نکنید و سوال خود را با ما مطرح کنید.
۲۰ دیدگاه. Leave new
سلام ممنون از اموزش خوبتون …
اگه بخوایم سه سروو موتور تو پروژه تعریف کنیم و یک استپ موتور و یک موتور Dc ، میشه با این ماژول راه اندازی بشن همگی؟
میشه لطفا یکم راهنمایی کنید برای این مورد یا لینک بدید ؟ 🙏❤
سلام تینای عزیز، مرسی از تو که همراه ما هستی
برای سرووموتورها نیازی به درایور نیست. پایه pwm موتور مستقیما به میکرو متصل میشه و مثبت و منفی هم مستقیم به تغذیه.
این ماژول دو تا آی سی L293D داره که هر کدوم میتونه ۲ موتور DC یا یک استپر رو راهاندازی کنه. پس با این ماژول، استپ موتور و موتور DC رو میتونی راهاندازی کنی.
لطف دارین مرسی 💕
ممنون که زود جواب دادین ..
دوتا مشکل دارم الان .. اول اینکه سروو ها سه تا هستن ولی روی این ماژول دوتا خروجی مستقیم داریم برای سروو . و دومی اینکه برای کد نویسیش ..
دقیق بخوام بگم اینکه یک ربات mearm استاندارد رو تصور کنین که با جوی استیک کنترل و چهار تا سروو توش استفاده میشه ..
اون پایه بیس که گردشی هست و کل ربات رو میچرخونه من میخوام با یک استپ موتور عوض کنم و ربات رو روی یک ریل و واگن که از پرینتر معمولی جدا کردم سوار کنم که اونم موتور دیسی هست…
پس تغییر کدهای پروژه میشه تغییر یک سروو به استپ موتور و اضافه شدن یک dc موتور ..
باید کتابخونه ای رو اضافه تر فراخوان کنم برای استپ موتور و dc احتمالا درسته؟
و اینکه چقدر کدها برای اون سروو پایه ویرایش بشن؟
میدونم این سوال من شاید خواهش زیادی باشه و توقع جواب با جزییات ندارم فقط اگه خطوط کلی رو هم مشخص کنید ممنون میشم ..
مرسی از زحمتی که میکشید و وقتی که میذارید ⚘
سلام مجدد به شما، خواهش میکنم، انجام وظیفه ست.
– برای کنترل سروو موتورها، حتما نیاز نیست اونها رو به این شیلد درایور متصل کنی. از هر کدام از پایههای ورودی خروجی دیجیتال آردوینو میتونی استفاده کنی.
پس یک راه حل اینه که هر چند تا سروو موتوری که داری رو به آردوینو متصل کنی و به تعداد اونها توی برنامه از کتابخانه servo.h شی تعریف کنی. (مثلا برای سه سروو موتور، سه شی تعریف کنی).
– در مورد استپ موتور و موتور DC هم، اونها رو به درایور متصل کن و دو شی از کتابخانه AFmotor.h براشون تعریف کن.
– طبیعتا باید در ابتدای کد کتابخانههای servo و AFmotor فراخوانی بشن.
– نکتهای که خیلی میتونه کمک کنه اینه که پروژه رو بخش بخش انجام بدی. اول یکی از سرووها رو راهاندازی کن، بعد مابقی سرووها رو و
مرحله به مرحله پیش برید تا همه موتورها در مدار قرار بگیرند.
– برای کدنویسی موتورها، این آموزش رو با دقت مطالعه کن. بسیاری از سوالاتی که ممکنه پیش بیاد رو در مقاله پاسخ دادیم. همچنین از مثالهای خود آردوینو هم میتونی استفاده کنی.
– در آخر اینکه به منبع تغذیه هم توجه کن. با توجه به اینکه تعداد موتورهای مورد استفاده شما نسبتا زیاده، از اینکه جریان کافی برای مجموعه فراهم میشه مطمئن شو.
خیلی خیلی ممنون دوست عزیز .. راهنمایی راهگشایی بود 🍃🌺🍃
هروقت تمام شد مستندات و فایلها رو میفرستم براتون که در صورت صلاحدید منتشر کنید در قالب یک پست بلکه یک تشکر کوچیک باشه از لطف شما
خواهش میکنم، انجام وظیفه بود.
اگه شرایطش باشه خیلی خوشحال میشیم که این کار رو انجام بدیم،
باعث افتخاره ماست که همراه ما هستی.
سلام
من برای روشن کردن ۴ موتور گیربکس ۹ ولت از طریق ماژول بلوتوث استفاده کردم و کد رو آپلود کردم ولی بعد از اتصال به ماژول بلوتوث و دادن فرمان اتصال ماژول بلوتوث قطع شده و فرمانی انجام نمیشود از باتری ۹ ولت برای منبع تغدیه استفاده کردم مشکل چیست؟
سلام و درود،
احتمال داره ولتاژ تغذیه ماژول بلوتوث به علت جریان کشی اولیه موتورها افت کنه و ماژول ریست بشه.
برای بررسی این موضوع میتونی بدون اتصال موتورها، بررسی کنی فرمان داده میشه یا نه.
همچنین قرار دادن یک خازن روی تغذیه ماژول بلوتوث میتونه مشکل رو رفع کنه.
به علاوه، در حالت کلی بهتره تغذیه مدارات منطقی (درایور، بلوتوث، میکروکنترلر و..) از تغذیه موتورها ایزوله باشه.
نمی دونم چرا سروو موتور بی وقفه فقط می چرخه ؟
سلام و درود،
احتمالا سروو موتور شما ۳۶۰ درجه هست. این نوع سرووها قابلیت تنظیم موقعیت ندارند و در اصل موقعیتی که بهشون میدیم، فقط سرعت چرخش رو مشخص میکنه.
سلام من با uno و L293d و hc05 یک ربات چهار چرخ درست کردم همه چیز درست است ولی در بعضی مواقع بعد از یک بار تاچ ربات به راه خود ادامه میدهد تا دوباره تاچ کنی تا بایستد. راهنمایی می فرمایید ایراد از کجاست؟ ممنون از محبت شما
سلام و درود به مهدی عزیز
در پاسخ به کامنت شما باید اشاره کرد که این موضوع میتونه دلایل متفاوتی داشته باشه و ریشه این مشکلات میتونه سخت افزاری یا نرم افزاری باشه، برای پیدا کردن مشکل بهترین روش این هست که شما هر بخش رو جداگونه تست کنید و سعی کنید مشکل رو ایجاد کنید، مثلا فقط ماژول بلوتوث رو متصل کنید و به جای موتورها چندتا LED رو روشن و خاموش کنید و ببینید مشکل در این حالت هم ایجاد میشه یا خیر؟ و همینطور ادامه بدید. البته اولین نکته ای که در این موارد حتما نیاز به بررسی داره، تغذیه است. مثلا آیا منبع شما توانایی تامین جریان لحظهای موتورها رو داره یا خیر؟، مسیرهای اتصال به حد کافی ضخیم هستند؟ و موضوعاتی از این دست.
متشکریم از همراهی شما دوست عزیز
مهندس جان سلام ممنون از راهنمایی و پاسخگویی شما شاید از ۱۰ منبع سوال کردم شما فقط محبت کردید پاسخ دادید مهندس جان چند نکته فرموده بودید رو انجام دادم اول اینکه سیمهای ارتباطی رو عوض کردم به جای باتری از پاور ساپلای ۲ آمپر استفاده کردم بازم نشد یک LED که روی پایه آندش یک مقاومت ۱۵۰ اهم بود رو روی پینهای rx و tx گذاشتم دیدم چند ثانیه چشمکهای ریز میزنه بهد چند ثانیه قطع میشه واین پریودیک ادامه داره توی زمانی که چشمک میزنه ارتباط با اندروید برقراره زمانی که چشمک نمیزنه تاچ کردن فایده نداره و ارتباط برقرار نیست اگه انگشت روی دکمه باشه و چشمک قطع بشه و تاچ نکنیم موتورها ادامه چرخش میدن تا دوباره چشمک بزنه و بفهمه تاچ قطع شده و موتورها رو خاموش میکنه ببخشید طولانی شد اگر امکان داره راهنمایی بفرمایید در ضمن در کد هیچ تاخیری نیست.
سلام و درود بر شما مهدی عزیز
به نظر میرسه اشکال نرم افزاری هست. برای اطمینان از این موضوع، اگر بدون اتصال موتورها تست نکردید حتما تست کنید و در صورت باقی بودن مشکل، سعی کنید از روشهای نرم افزاری استفاده کنید مثلا کد رو طوری بنویسید که وقتی دیتای سریال دریافت نمیکنه، حرکت موتورها رو متوقف کنه.
سپاس از همراهی شما
سلام عالی بود ممنون که زحمت میکشید و آگاهی میدین خدا خیرتون بده
متشکریم از شما کورش عزیز، رضایت شما مایهی خرسندی ماست 🙂
باسلام من نمیتونم کتابخانه رو پیدا کنم اگه ممکنه کتابخانه رو هم توی سایت قرار بدید ممنون
درود برشما امیر عزیز
کتابخونه رو از اینجا میتونید دانلود کنید:
https://www.arduino.cc/reference/en/libraries/adafruit-motor-shield-library/
سلام، میخواستم ببینم که چطور میتونم این شیلد را به اردینو متصل کنم طوری که سایر پین های اردینو را اشغال نکنم و جا برای اتصال یک سنسور MQ داشته باشم
درود بر شما محمدرضای عزیز
این شیلد به همه پایههای آردوینو به جز پایههایی که داخل مقاله آورده شده نیاز دارد. میتوانید از پایههای فوق با لحیم کردن سیم یا استفاده از پین هدر استفاده کنید.