درس 52-1: شِفر (کود) پایه: کنترل یک موتور DC با یک ریلی با استفاده از آردوینو
در این درس، یاد خواهیم گرفت که چگونه با استفاده از دو ریلی و یک آردوینو، جهت یک موتور DC را کنترل کنیم. با تغییر قطبیت ولتاژ تامین شده به موتور، میتوانیم جهت آن را معکوس کنیم. این پروژه ساده است و برای مبتدیانی که به دنبال درک کنترل ریلی با آردوینو هستند، ایدهآل میباشد. حتماً ویدئو را برای بینشهای اضافی و Demonstrations تماشا کنید (در ویدئو در 00:00).
در این دوره آموزشی، ما از دو ریلی برای تغییر قطبیت منبع برق به موتور استفاده خواهیم کرد. وقتی یک ریلی فعال میشود، اجازه میدهد تا جریان در یک جهت جریان پیدا کند و موتور در یک جهت بچرخد. وقتی ریلی دیگری فعال میشود، جریان معکوس میشود و باعث میشود موتور در جهت مخالف بچرخد. ریلیها به عنوان سوییچهایی عمل میکنند که توسط آردوینو کنترل میشوند.
توضیحاتی درباره سختافزار
اجزای اصلی این پروژه شامل یک برد آردوینو، دو ریلی، یک موتور DC و یک منبع تغذیه است. برد آردوینو مغز عملیات است که سیگنالهایی به ریلیها ارسال میکند تا جهت موتور را کنترل کند. هر ریلی سه پایه دارد: مشترک (COM)، معمولاً بسته (NC) و معمولاً باز (NO). هنگامی که فعال میشود، ریلی پایه COM را به یکی از پایههای NC یا NO متصل میکند و در واقع مدار را قطع و وصل میکند.
تصویر بالا نشان میدهد که چگونه سیمهای یک موتور را به یک باتری متصل کنیم، موتور به عنوان مثال در جهت خلاف عقربههای ساعت (CCW) چرخش میکند.
تصویر بالا نشان میدهد که اگر سیمهای + و - را به پایههای مختلف موتور وصل کنید، به عنوان مثال در جهت عقربههای ساعت (CW) میچرخد.
ما نمیتوانیم ریلی را به صورت مستقیم به بوردهای آردوینو، ESP32 یا Raspberry Pi متصل کنیم زیرا موتور برای کار کردن به جریان بسیار بالایی نیاز دارد.
ما به یک درایور موتور نیاز داریم که بین آردوینو و موتور قرار گیرد.
ریلیها مهم هستند زیرا به آردوینو اجازه میدهند تا دستگاههای پرقدرت مانند موتورها را بدون اتصال مستقیم به آنها کنترل کند. این موضوع حیاتی است زیرا پایههای خروجی آردوینو تنها میتوانند جریان محدودی را تحمل کنند. با استفاده از ریلیها، ما میتوانیم بهطور ایمن عملیات موتور را از آردوینو کنترل کنیم.
ما میتوانیم دو ریلی را همانطور که در بالا نشان داده شده به هم متصل کنیم تا جهت چرخش موتور را کنترل کنیم. اگر ریلی-۱ روشن و ریلی-۲ خاموش باشد، در این صورت موتور در جهت ساعتگرد (CW) میچرخد.
تصویر بالا مسیر جریان را نشان میدهد.
ما میتوانیم دو ریلی را همانطور که در بالا نشان داده شده است، متصل کنیم تا جهت چرخش موتور را کنترل کنیم. ریلی-۱ اگر OFF باشد و ریلی-۲ اگر ON باشد. اکنون موتور در جهت عکسگرد (CCW) میچرخد. به فلشی که بالای موتور است نگاه کنید.
تصویر بالا مسیر جریان را نشان میدهد.
جزئیات برگه داده
| سازنده | سونگل |
|---|---|
| شماره قطعه | SRD-05VDC-SL-C |
| ولتاژ کویل | ۵ ولت (DC) |
| رتبه تماس | ۱۰ آمپر / ۲۵۰ ولت AC |
| جریان متناوب | ۱۵ A حداکثر |
| ولتاژ سوئیچینگ | ۳۰ ولت دیسی / ۲۵۰ ولت ایسی |
| مقاومت تماس | ≤ ۱۰۰ میلیاهم |
| مقاومت عایق | ≥ 1000 مگا اهم |
| دمای عملیاتی | -40 تا +70 درجه سانتیگراد |
| پکج | ماجیول ریلی با ۲ ریلی |
- اطمینان حاصل کنید که ریلیها برای ولتاژ و جریان موتور مناسب هستند.
- از یک زمین مشترک بین آردوینو و ماجیول ریلی استفاده کنید.
- در صورت لزوم از دیودهای فلیک بک مناسب استفاده کنید تا آردوینو را از EMF برگشتی محافظت کنید.
- طول سیمها را کوتاه نگهدارید تا مقاومت و تداخل کاهش یابد.
- قبل از روشن کردن سیستم، اتصالات ریلی را دوباره بررسی کنید.
- با ولتاژهای پایین، مدار را امتحان کنید قبل از اینکه توان کامل را به موتور اعمال کنید.
- کابلها را برای شناسایی آسان در حین عیبیابی برچسبگذاری کنید.
دستورالعملهای سیمکشی


نمونههای شِفر (کود) و راهنمایی
در شِفر (کود)، ما دو پایه برای ریلیها تعریف میکنیم با استفاده ازint relay1 = 2;وint relay2 = 3;. این پایهها عملکرد ریلیها را کنترل خواهند کرد.setup()این تابع این پایهها را به عنوان خروجی تنظیم میکند و با تنظیم هر دو ریلی به حالت بالا، موتور را خاموش نگه میدارد.
void setup() {
pinMode(relay1, OUTPUT); // set pin as output for relay 1
pinMode(relay2, OUTPUT); // set pin as output for relay 2
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
}در توloop()عملکرد، ما جهت موتور را کنترل میکنیم. برای چرخش موتور به سمت چپ (CCW)، ما تنظیم میکنیمrelay1به پایین وrelay2بسیار بالا. این اجازه میدهد که جریان در یک جهت عبور کند.
digitalWrite(relay1, LOW); // turn relay 1 ON
digitalWrite(relay2, HIGH); // turn relay 2 OFF
Serial.println("Rotating in CCW");
delay(3000); // wait for 3 secondsبرای متوقف کردن موتور، هر دو ریلی را با دوباره بالا بردن تنظیمات آنها خاموش میکنیم. سپس با تغییر وضعیت ریلیها، جهت چرخش موتور را معکوس کرده و به موتور اجازه میدهیم که به سمت ساعتگرد (CW) بچرخد.
digitalWrite(relay1, HIGH); // turn relay 1 OFF
digitalWrite(relay2, LOW); // turn relay 2 ON
Serial.println("Rotating in CW");
delay(3000); // wait for 3 secondsشِفر (کود) کامل این پروژه در زیر مقاله بارگذاری شده است. حتماً ویدیو را برای توضیح دقیق شِفر (کود) مشاهده کنید (در ویدیو در ۰۰:۰۰).
نمایش / چه انتظاری باید داشت
زمانی که تنظیمات کامل و شِفر (کود) بارگذاری شد، موتور ابتدا به مدت سه ثانیه در جهت خلاف عقربههای ساعت میچرخد، سپس به مدت دو ثانیه متوقف میشود، و سپس دوباره به مدت سه ثانیه در جهت عقربههای ساعت میچرخد و نهایتاً دوباره متوقف میشود. این چرخه به طور مداوم تکرار خواهد شد. مشکلات رایج شامل سیمکشی نادرست ریلیها یا اتصال مستقیم موتور به آردوینو است که میتواند به بورد آسیب بزند. برای تأیید بصری رفتار مورد انتظار به ویدئو مراجعه کنید (در ویدئو در 00:00).
زمانبندی ویدئوها
- ۰۰:۰۰ مقدمه
- چطور کار میکند :27
- 08:05 توضیحاتی در مورد سیمکشی
- ۱۱:۴۵ توضیح شِفر (کود) پایه
- شِفر (کود) پیشرفته توضیح داده شده 15:25
- ۱۸:۴۰ نمایش با دو ریلی تکتایی
- ۱۹:۴۳ نمایش با ماجیول ریلی دوگانه
تصاویر
++
/*
* Lesson 52: Control a DC motor with Relay using Arduino | Arduino Step By Step Course
Basic code
* Arduino code to change the direction of rotation
* of a DC motor with 2 relays.
*
* This is basic code. I have advanced code which can be used in both
* for Low-level trigger and High-level trigger relay with clean code.
Please watch video explaining this code: https://youtu.be/2n0vUa0cZOI
*
* Written by Ahmad Shamshiri for Robojax.com on
* Sunday, August 18, 2019
* at 20:22 in Ajax, Ontario, Canada
*
This code is available at http://robojax.com/course1/?vid=lecture52
with over 100 lectures free on YouTube. Watch it here: http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339
or make a donation using PayPal: http://robojax.com/L/?id=64
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
int relay1 = 2;
int relay2 = 3;
void setup() {
pinMode(relay1, OUTPUT);// set pin as output for relay 1
pinMode(relay2, OUTPUT);// set pin as output for relay 2
// keep the motor off by keeping both HIGH
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax Motor Direction of Rotation");
Serial.println("Using 2 Relays");
delay(2000);
}
void loop() {
// Rotate in CCW direction
digitalWrite(relay1, LOW);// turn relay 1 ON
digitalWrite(relay2, HIGH);// turn relay 2 OFF
Serial.println("Rotating in CCW");
delay(3000);// wait for 3 seconds
// stop the motor
digitalWrite(relay1, HIGH);// turn relay 1 OFF
digitalWrite(relay2, HIGH);// turn relay 2 OFF
Serial.println("Stopped");
delay(2000);// stop for 2 seconds
// Rotate in CW direction
digitalWrite(relay1, HIGH);// turn relay 1 OFF
digitalWrite(relay2, LOW);// turn relay 2 ON
Serial.println("Rotating in CW");
delay(3000);// wait for 3 seconds
// stop the motor
digitalWrite(relay1, HIGH);// turn relay 1 OFF
digitalWrite(relay2, HIGH);// turn relay 2 OFF
Serial.println("Stopped");
delay(2000);// stop for 2 seconds
Serial.println("===============");
}// loop end
مواردی که ممکن است به آنها نیاز داشته باشید
-
ایبی
منابع و مراجع
-
خارجیریلی دو کاناله (اَمه زون کانادا)amzn.to
-
خارجی
-
خارجی
-
خارجی
فایلها📁
هیچ فایلی موجود نیست.