نحوه استفاده از MOSFET اپتوکوپلشده HW-532 برای کنترل سرعت یا بار موتور DC تا 30V با استفاده از آردوینو
این راهنمای پروژه نشان میدهد چگونه یک کنترلکننده سرعت موتور جریان مستقیم همهمنظوره با استفاده از Arduino و ماجیول MOSFET اپتوکوپلشده HW-532 بسازید. MOSFET ممکن استFR120N، LR7843 یا D4184.این به شما اجازه میدهد سرعت و وضعیت روشن/خاموش یک موتور DC را در ولتاژهای تا 30V کنترل کنید. ماجیول HW-532 حفاظت و ایزولاسیون فراهم میکند که آن را ایمنتر و قابلاطمینانتر از اتصال مستقیم موتور به Arduino میسازد.

این پروژه برای کاربردهای متنوع ارزشمند است. در اینجا چند مثال آورده شده است:
- کنترل دقیق سرعت یک بازوی رباتیک
- ساخت یک فن دارای سرعت متغیر برای سیستمهای خنککننده
- ایجاد ماشینآلات خودکار با حرکت قابل تنظیم
- توسعه کنترل شیر موتوری برای سیستمهای سیال
سختافزار/قطعات
اجزای اصلی عبارتند از آردوینو، ماجیول MOSFET اپتوکوپلشده HW-532 (با گزینههای MOSFET مانند D4184، LR7843 یا FR120N)، یک موتور DC (ولتاژ نامی ≤ 30V)، سیمهای اتصال، و بهطور اختیاری یک پتانسیومتر و کلید فشاری برای کنترل پیشرفته (در ویدئو در 19:34).
انتخاب MOSFET در ماجیول HW-532 بستگی به نیازهای جریان شما دارد (در ویدیو در 01:24). ویدیو مقایسهای دقیق بین MOSFETهای مختلف را ارائه میدهد (در ویدیو در 06:50) و تناسب آنها برای کاربردهای گوناگون را بررسی میکند (در ویدیو در 09:45). به یاد داشته باشید برای بارهای القایی مانند موتورهای جریان مستقیم یک دیود اضافه کنید تا ماجیول محافظت شود (در ویدیو در 06:00 و 22:02).
راهنمای سیمکشی
سیمکشی پایه پایه مثبت موتور را به خروجی HW-532، پایه منفی موتور را به زمین HW-532 و پایه کنترل HW-532 را به یک پایه دیجیتال آردوینو متصل میکند (در ویدئو در 11:16).

توضیح شِفر (کود)
شِفر (کود) ارائهشده سه سطح کنترل را فراهم میکند:

- کنترل روشن/خاموش:این شِفر (کود) ساده (در ویدئو در 15:05) از یک پایه دیجیتال برای روشن و خاموش کردن موتور استفاده میکند. بخش قابل پیکربندی توسط کاربر عبارت است از
MOTOR_OUT_PINثابتی که تعیین میکند کدام پایهٔ آردوینو ماجیول HW-532 را کنترل میکند. - کنترل سرعت PWM:این شِفر (کود) (در ویدئو در 15:39) از مدولاسیون پهنای پالس (PWM) برای کنترل سرعت موتور استفاده میکند. کاربر میتواند آن را تنظیم کند
SPEED_MAXوSPEED_MINبرای تعیین حد بالایی و پایینی کنترل سرعت، وmotorControl()وstopMotor()این توابع بهترتیب برای کنترل موتور و متوقف کردن آن استفاده میشوند. - کنترل با پتانسیومتر و دکمه فشاری:این شِفر (کود) (در ویدیو در 22:12) امکان کنترل سرعت موتور با یک پتانسیومتر و راهاندازی/توقف آن با یک دکمه فشاری را فراهم میکند. بخشهایی که کاربر میتواند پیکربندی کند عبارتند از:
POT_PIN(پایه پتانسیومتر),MOTOR_OUT_PIN(پایه کنترل PWM)،START_STOP_PIN(پایه دکمه فشاری),SPEED_MAX، وSPEED_MIN.
پروژه زنده/نمایش
ویدیو عملکرد هر سه نمونهٔ شِفر (کود) را نشان میدهد. کنترل روشن/خاموش (در ویدیو در 11:41) نمایش داده میشود، بهدنبال آن کنترل سرعت PWM (در ویدیو در 16:53) و در نهایت کنترل با پتانسیومتر و دکمه فشاری (در ویدیو در 23:02) نشان داده میشود.
فصلها
- [00:00] مقدمه و مروری بر پروژه
- [01:24] ماجیول HW-532 و گزینههای MOSFET
- [03:23] شماتیک مدار و توضیح
- [05:11] جزئیات مؤلفه
- [06:50] تحلیل مشخصات فنی MOSFET
- [11:16] سیمکشی پایه و نمایش روشن/خاموش
- [15:05] شِفر (کود) آردوینو برای کنترل روشن/خاموش
- [15:39] شِفر (کود) آردوینو برای کنترل سرعت PWM
- [19:34] سیمکشی با پتانسیومتر و دکمه فشاری
- [22:12] شِفر (کود) آردوینو با پتانسیومتر و دکمه فشاری
/*
* درس ۱۰۸-۱: در این درس یاد میگیریم که چگونه از ماجیول با ماسفتهای FR120N، LR7843 و D4184 برای روشن/خاموش کردن بار DC تا ۱۰ آمپر استفاده کنیم. HW-532 بسته به ماجیول، از ۵ ولت تا ۳۰ ولت و بار تا ۱۰ آمپر به صورت نوری ایزوله شده است. شماتیک نشان داده شده، نمودار سیمکشی توضیح داده شده، روشهای مختلف سیمکشی با دکمه فشاری و پتانسیومتر نیز نشان داده شده است.
*
* ویدئو https://youtu.be/eqXaqRFAWrA
*
* نوشته شده توسط احمد شمشیری برای RoboJax.com
* // منتشر شده در ۲۵ آگوست ۲۰۲۲ در Aajx، ON، کانادا.
*
*
* پروژه ۱: روشن/خاموش کردن موتور یا بار (این پروژه)
* پروژه ۲: کنترل سرعت با استفاده از کد آردوینو
* پروژه ۳: کنترل سرعت با استفاده از پتانسیومتر و یک دکمه فشاری
*
* فیلم آموزشی این کد را تماشا کنید: https://youtu.be/eqXaqRFAWrA
*
* این کد بخشی از دوره گام به گام آردوینو است که از اینجا شروع میشود: https://youtu.be/-6qSrDUA5a8
*
* برای مشاهده کتابخانه این کد به http://robojax.com/ مراجعه کنید.
*
* اگر این آموزش برای شما مفید بود، لطفاً از من حمایت کنید تا بتوانم به تولید محتوایی مانند این ادامه دهم. با استفاده از پیپال و از طریق کارت اعتباری https://bit.ly/donate-robojax کمک مالی کنید.
*
* این کد "همانطور که هست" است و هیچ ضمانت یا مسئولیتی ندارد. استفاده از این برنامه تا زمانی که این یادداشت را دست نخورده نگه دارید، رایگان است.*
* این کد از Robojax.com دانلود شده است.
* این برنامه یک نرمافزار رایگان است: میتوانید آن را تحت شرایط مجوز عمومی گنو که توسط بنیاد نرمافزار آزاد منتشر شده است، چه نسخه ۳ مجوز و چه (به انتخاب شما) هر نسخه بعدی، مجدداً توزیع و/یا اصلاح کنید.
*
* این برنامه به امید مفید بودن توزیع شده است، اما بدون هیچ گونه ضمانتی؛ حتی بدون ضمانت ضمنی «قابلیت فروش یا مناسب بودن برای یک هدف خاص». برای جزئیات بیشتر به «مجوز عمومی گنو» مراجعه کنید.
*
* شما باید یک نسخه از مجوز عمومی گنو را همراه با این برنامه دریافت کرده باشید. در غیر این صورت، به <https://www.gnu.org/licenses/> مراجعه کنید.
*/
const int MOTOR_OUT_PIN=2;
void setup() {
// کد درایور موتور Robojax MOSFET
Serial.begin(9600);
Serial.println("Robojax LR7834 , Arduino");
pinMode(MOTOR_OUT_PIN, OUTPUT);
digitalWrite(MOTOR_OUT_PIN, HIGH);
}
// روال حلقه بارها و بارها برای همیشه اجرا میشود:
void loop() {
// کد درایور موتور Robojax XY-GMOS MOSFET
} // پایان حلقه
# include <Arduino_LSM6DS3.h>
/*
* درس ۱۰۸-۲: در این درس یاد میگیریم که چگونه از ماژول با ماسفتهای FR120N، LR7843 و D4184 برای روشن/خاموش کردن بار DC تا ۱۰ آمپر استفاده کنیم. HW-532 بسته به نوع ماژول، از ۵ ولت تا ۳۰ ولت و بار تا ۱۰ آمپر به صورت نوری ایزوله شده است. شماتیک نشان داده شده، نمودار سیمکشی توضیح داده شده، روشهای مختلف سیمکشی با دکمه فشاری و پتانسیومتر نیز نشان داده شده است.
*
* ویدئو https://youtu.be/eqXaqRFAWrA
* کد این پروژه را از https://robojax.com/RJT797 دریافت کنید.
*
* نوشته شده توسط احمد شمشیری برای RoboJax.com
* // منتشر شده در ۲۵ آگوست ۲۰۲۲ در Aajx، ON، کانادا.
*
*
*
* پروژه ۱: روشن/خاموش کردن موتور یا بار (این پروژه)
*
* پروژه ۲: کنترل سرعت با استفاده از کد آردوینو
*
* پروژه ۳: کنترل سرعت با استفاده از پتانسیومتر و یک دکمه فشاری
* آموزش ویدیویی این کد را تماشا کنید: https://youtu.be/eqXaqRFAWrA
*
* این کد بخشی از دوره گام به گام آردوینو است که از اینجا شروع میشود: https://youtu.be/-6qSrDUA5a8
*
* برای مشاهده کتابخانه این کد به http://robojax.com/ مراجعه کنید.
*
* اگر این آموزش برای شما مفید بود، لطفاً از من حمایت کنید تا بتوانم به تولید محتوایی مانند این ادامه دهم. با استفاده از پیپال و کارت اعتباری https://bit.ly/donate-robojax کمک مالی کنید.
*
* * این کد "به همان شکلی که هست" است و هیچ ضمانت یا مسئولیتی ندارد. استفاده از آن تا زمانی که این یادداشت را دست نخورده نگه دارید، رایگان است.*
*
* این کد از Robojax.com دانلود شده است.
*
* این برنامه یک نرمافزار رایگان است: میتوانید آن را تحت شرایط مجوز عمومی گنو که توسط بنیاد نرمافزار آزاد منتشر شده است، چه نسخه ۳ مجوز، یا (به انتخاب شما) هر نسخه بعدی، مجدداً توزیع و/یا اصلاح کنید.
*
* این برنامه به امید مفید بودن توزیع شده است،
*
* اما بدون هیچ گونه ضمانتی؛ حتی بدون ضمانت ضمنی قابلیت فروش یا مناسب بودن برای یک هدف خاص. برای جزئیات بیشتر به مجوز عمومی گنو مراجعه کنید.
*
* شما باید یک نسخه از مجوز عمومی گنو را همراه با این برنامه دریافت کرده باشید. در غیر این صورت، به <https://www.gnu.org/licenses/> مراجعه کنید.
*/
const int MOTOR_OUT_PIN = 3;
const int SPEED_MAX = 100; // به درصد
const int SPEED_MIN = 0; // به درصد
const int STOP=0;
const int RUN=1;
int motorState=RUN;
int motorSpeed = 0; // بین 0 تا 100 درصد.
// آموزش تصویری https://youtu.be/eqXaqRFAWrA
void setup() {
// کد درایور موتور Robojax XY-GMOS MOSFET
Serial.begin(9600);
Serial.println("Robojax XY-GMOS Motor, Arduino");
pinMode(MOTOR_OUT_PIN, OUTPUT);
} // پایان تنظیمات
// روال حلقه بارها و بارها برای همیشه اجرا میشود:
void loop() {
// ویدیو https://youtu.be/eqXaqRFAWrA
motorControl(50); // موتور را با ۵۰٪ توان روشن کنید
delay(5000); // آن را به مدت ۵۰۰۰ میلیثانیه یا ۵ ثانیه در حال اجرا نگه دارید
stopMotor(); // موتور را متوقف کنید
delay(3000); // آن را به مدت ۵۰۰۰ میلیثانیه یا ۵ ثانیه متوقف نگه دارید
for(int i=0; i<100; i++)
{
motorControl(i);
delay(200);
}
stopMotor(); // موتور را متوقف کنید
delay(3000); // آن را به مدت ۵۰۰۰ میلیثانیه یا ۵ ثانیه متوقف نگه دارید
for(int i=100; i >0; i--)
{
motorControl(i);
delay(200);
}
// کد درایور موتور ماسفت Robojax LR7843
} // پایان حلقه
/*
* motorControl(int s)
* @brief موتور را با مقدار s کنترل میکند. @param چیزی برنمیگرداند. @param "type" یک کاراکتر است.
* در تاریخ ۸ می ۲۰۲۰، ساعت ۰۲:۳۶ در آژاکس، انتاریو، کانادا
*/
void motorControl(int s)
{
// کد درایور موتور ماسفت Robojax LR7843
// ویدیو https://youtu.be/eqXaqRFAWrA
int k = map(s, SPEED_MIN, SPEED_MAX, 0, 255);
Serial.print("Speed: "); Serial.print(s);Serial.println("%");
analogWrite(MOTOR_OUT_PIN, k);
} // کنترل موتور
/*
* stopMotor()
* @brief موتور را متوقف میکند
* @param هیچ چیزی برنمیگرداند
* @param
* در ۸ مه ۲۰۲۰، ساعت ۰۲:۳۶ در آژاکس، انتاریو، کانادا
*/
void stopMotor(){
// کد درایور موتور Robojax XY-GMOS MOSFET
analogWrite( MOTOR_OUT_PIN, 0);
Serial.println("STOPPED");
} // توقف موتور()
/*
* درس ۱۰۸-۳: کنترل سرعت موتور با استفاده از مقاومت متغیر (پتانسیومتر) و استفاده از دکمه شروع/توقف با آردوینو.
*
* در این درس یاد میگیریم که چگونه از ماژول با ماسفتهای FR120N، LR7843 و D4184 برای روشن/خاموش کردن بار DC تا ۱۰ آمپر استفاده کنیم. HW-532 بسته به ماژول، از ۵ ولت تا ۳۰ ولت و بار تا ۱۰ آمپر به صورت نوری ایزوله شده است. شماتیک نشان داده شده، نمودار سیمکشی توضیح داده شده، روشهای مختلف سیمکشی با دکمه فشاری و پتانسیومتر نیز نشان داده شده است.
*
* ویدئو https://youtu.be/eqXaqRFAWrA
* کدهای این پروژه را از https://robojax.com/RJT797 دریافت کنید.
*
* نوشته شده توسط احمد شمشیری برای RoboJax.com
* // منتشر شده در ۲۵ آگوست ۲۰۲۲ در Aajx، ON، کانادا.
*
*
* پروژه ۱: روشن/خاموش کردن موتور یا بار
* پروژه ۲: کنترل سرعت با استفاده از کد آردوینو
* پروژه ۳: کنترل سرعت با استفاده از پتانسیومتر و یک دکمه فشاری (این پروژه)
*
* آموزش ویدیویی این کد را تماشا کنید: https://youtu.be/eqXaqRFAWrA
*
* این کد بخشی از دوره گام به گام آردوینو است که از اینجا شروع میشود: https://youtu.be/-6qSrDUA5a8
*
* برای مشاهده کتابخانه این کد به http://robojax.com/ مراجعه کنید.
*
* اگر این آموزش برای شما مفید بود، لطفاً از من حمایت کنید تا بتوانم به تولید محتوایی مانند این ادامه دهم. با استفاده از پیپال از طریق کارت اعتباری https://bit.ly/donate-robojax کمک مالی کنید.
*
* این کد "همانطور که هست" است و هیچ ضمانت یا مسئولیتی ندارد. استفاده از این برنامه تا زمانی که این یادداشت را دست نخورده نگه دارید، رایگان است.*
* این کد از Robojax.com دانلود شده است.
* این برنامه یک نرمافزار رایگان است: میتوانید آن را تحت شرایط مجوز عمومی گنو که توسط بنیاد نرمافزار آزاد منتشر شده است، چه نسخه ۳ مجوز و چه (به انتخاب شما) هر نسخه بعدی، مجدداً توزیع و/یا اصلاح کنید.
*
* این برنامه به امید مفید بودن توزیع شده است، اما بدون هیچ گونه ضمانتی؛ حتی بدون ضمانت ضمنی «قابلیت فروش یا مناسب بودن برای یک هدف خاص». برای جزئیات بیشتر به «مجوز عمومی گنو» مراجعه کنید.
*
* شما باید یک نسخه از مجوز عمومی گنو را همراه با این برنامه دریافت کرده باشید. در غیر این صورت، به <https://www.gnu.org/licenses/> مراجعه کنید.
*/
const int POT_PIN =A0; // میتواند تغییر کند
const int MOTOR_OUT_PIN = 3; // ~
const int START_STOP_PIN=2; // برای سوئیچ دکمه فشاری
const int SPEED_MAX = 100; // به درصد
const int SPEED_MIN = 0; // به درصد
// آموزش تصویری https://youtu.be/eqXaqRFAWrA
const int STOP=0;
const int RUN=1;
int motorState=RUN;
int motorSpeed = 0; // بین 0 تا 100 درصد.
void pushButton();
void setup() {
// کد درایور موتور Robojax XY-GMOS MOSFET
Serial.begin(9600);
Serial.println("Robojax XY-GMOS Motor, Arduino");
pinMode(START_STOP_PIN, INPUT_PULLUP);
pinMode(MOTOR_OUT_PIN, OUTPUT);
// آموزش تصویری https://youtu.be/eqXaqRFAWrA
}
// روال حلقه بارها و بارها برای همیشه اجرا میشود:
void loop() {
pushButton();
int potValue =analogRead(POT_PIN);
int speedPercent = map(potValue, 0, 1023, 0, 100);
if(motorState ==RUN)
{
motorControl(speedPercent);
}else{
stopMotor();
}
delay(500);
// کد درایور موتور Robojax XY-GMOS MOSFET
// آموزش تصویری https://youtu.be/eqXaqRFAWrA
} // پایان حلقه
/*
* motorControl(int s)
* @brief موتور را با مقدار s کنترل میکند. @param چیزی برنمیگرداند. @param "type" یک کاراکتر است.
* در تاریخ ۸ می ۲۰۲۰، ساعت ۰۲:۳۶ در آژاکس، انتاریو، کانادا
*/
void motorControl(int s)
{
// کد درایور موتور ماسفت Robojax LR7843
// آموزش تصویری https://youtu.be/eqXaqRFAWrA
int k = map(s, SPEED_MIN, SPEED_MAX, 0, 255);
Serial.print("Speed: "); Serial.print(s);Serial.println("%");
analogWrite(MOTOR_OUT_PIN, k);
} // کنترل موتور
/*
* stopMotor()
* @brief موتور را متوقف میکند
* @param هیچ چیزی برنمیگرداند
* @param
* در ۸ مه ۲۰۲۰، ساعت ۰۲:۳۶ در آژاکس، انتاریو، کانادا
*/
void stopMotor(){
// کد درایور موتور Robojax XY-GMOS MOSFET
// آموزش تصویری https://youtu.be/eqXaqRFAWrA
analogWrite( MOTOR_OUT_PIN, 0);
Serial.println("STOPPED");
} // توقف موتور()
/*
* تابع pushButton()
* @brief مقدار دکمه فشاری را میخواند
* @param مقدار برگشتی ندارد
* @param
* در تاریخ ۸ می ۲۰۲۰، ساعت ۰۲:۳۶ در آژاکس، انتاریو، کانادا
*/
void pushButton()
{
// کد درایور موتور Robojax XY-GMOS MOSFET
// آموزش تصویری https://youtu.be/eqXaqRFAWrA
if(digitalRead(START_STOP_PIN) ==LOW)
{
motorState =!motorState;
delay(100);
}
} // دکمه فشاری()
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
ایبیخرید درایور موتور FR120N از eBayebay.us
-
علیاکسپرسدرایور موتور FR120N را از علیاکسپرس خریداری کنیدs.click.aliexpress.com
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
برگه مشخصات (pdf)
-
برگه مشخصات MOSFET IRLR7843 LR7843 اینفیئون
infineon-irlr7843-datasheet-en.pdf0.37 MB
فایل فریزینگ
-
ماجیول HW-532B Mosfot
HW-532B.fzpz0.01 MB
سایر فایلها
-
infineon-irfr120n-datasheet-en
infineon-irfr120n-datasheet-en.pdf0.39 MB -
alpha-and-Omega-AOD4184A_datasheet
alpha-and-Omega-AOD4184A_datasheet.pdf0.43 MB