نحوه استفاده از 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 Motor driver code
Serial.begin(9600);
Serial.println("Robojax LR7834 , Arduino");
pinMode(MOTOR_OUT_PIN, OUTPUT);
digitalWrite(MOTOR_OUT_PIN, HIGH);
}
// the loop routine runs over and over again forever:
void loop() {
// Robojax XY-GMOS MOSFET Motor driver code
} // loop end
# include <Arduino_LSM6DS3.h>
/*
* Lesson 108-2: In this lesson we learn how to use the module with FR120N , LR7843 and D4184 MOSFET to turn ON/OFF DC load up to up to 10A. HW-532 optically isolated from 5V to 30V load up to 10A depending on the module. Schematic shown, wiring diagram explained, different
* method of wiring with push button and potentiometer also shown.
* Video https://youtu.be/eqXaqRFAWrA
* Get code for this project from https://robojax.com/RJT797
*
* Written by Ahmad Shamshiri for RoboJax.com
* // Published on Aug 25, 2022 in Aajx, ON, Canada.
*
*
* Project 1: Turning ON/OFF a motor or load (this project)
* Project 2: Controlling Speed using Arduino code
* Project 3: Controlling Speed using potentiometer and a push button
* Watch Video instruction for this code:https://youtu.be/eqXaqRFAWrA
*
* This code is part of Arduino Step by Step Course which starts here: https://youtu.be/-6qSrDUA5a8
*
* for library of this code visit http://robojax.com/
*
* If you found this tutorial helpful, please support me so I can continue creating
* content like this. Make a donation using PayPal by credit card https://bit.ly/donate-robojax
* * 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 download 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/>.
*/
const int MOTOR_OUT_PIN = 3;
const int SPEED_MAX = 100; // in %
const int SPEED_MIN = 0; // in %
const int STOP=0;
const int RUN=1;
int motorState=RUN;
int motorSpeed = 0; // between 0 to 100%.
// video instruction https://youtu.be/eqXaqRFAWrA
void setup() {
// Robojax XY-GMOS MOSFET Motor driver code
Serial.begin(9600);
Serial.println("Robojax XY-GMOS Motor, Arduino");
pinMode(MOTOR_OUT_PIN, OUTPUT);
} // setup ends
// the loop routine runs over and over again forever:
void loop() {
// video https://youtu.be/eqXaqRFAWrA
motorControl(50); // run motor at 50%
delay(5000); // keep it running for 5000ms or 5 seconds
stopMotor(); // stop the motor
delay(3000); // keep it stopped for 5000ms or 5 seconds
for(int i=0; i<100; i++)
{
motorControl(i);
delay(200);
}
stopMotor(); // stop motor
delay(3000); // keep it stopped for 5000ms or 5 seconds
for(int i=100; i >0; i--)
{
motorControl(i);
delay(200);
}
// Robojax LR7843 MOSFET Motor driver code
} // loop end
/*
* motorControl(int s)
* @brief controls the motor with the value s
* @param return nothing
* @param "type" is character
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void motorControl(int s)
{
// Robojax LR7843 MOSFET Motor driver code
// video 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);
} // motorControl
/*
* stopMotor()
* @brief stops the motor
* @param return nothing
* @param
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void stopMotor(){
// Robojax XY-GMOS MOSFET Motor driver code
analogWrite( MOTOR_OUT_PIN, 0);
Serial.println("STOPPED");
} // stopMotor()
/*
* درس ۱۰۸-۳: کنترل سرعت موتور با استفاده از مقاومت متغیر (پتانسیومتر) و استفاده از دکمه شروع/توقف با آردوینو.
*
* در این درس یاد میگیریم که چگونه از ماژول با ماسفتهای 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; // can change
const int MOTOR_OUT_PIN = 3; // ~
const int START_STOP_PIN=2; // for push button switch
const int SPEED_MAX = 100; // in %
const int SPEED_MIN = 0; // in %
// video instruction https://youtu.be/eqXaqRFAWrA
const int STOP=0;
const int RUN=1;
int motorState=RUN;
int motorSpeed = 0; // between 0 to 100%.
void pushButton();
void setup() {
// Robojax XY-GMOS MOSFET Motor driver code
Serial.begin(9600);
Serial.println("Robojax XY-GMOS Motor, Arduino");
pinMode(START_STOP_PIN, INPUT_PULLUP);
pinMode(MOTOR_OUT_PIN, OUTPUT);
// video instruction https://youtu.be/eqXaqRFAWrA
}
// the loop routine runs over and over again forever:
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 Motor driver code
// video instruction https://youtu.be/eqXaqRFAWrA
} // loop end
/*
* motorControl(int s)
* @brief controls the motor with the value s
* @param return nothing
* @param "type" is character
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void motorControl(int s)
{
// Robojax LR7843 MOSFET Motor driver code
// video instruction 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);
} // motorControl
/*
* stopMotor()
* @brief stops the motor
* @param return nothing
* @param
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void stopMotor(){
// Robojax XY-GMOS MOSFET Motor driver code
// video instruction https://youtu.be/eqXaqRFAWrA
analogWrite( MOTOR_OUT_PIN, 0);
Serial.println("STOPPED");
} // stopMotor()
/*
* pushButton()
* @brief reads the push button
* @param return nothing
* @param
* on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
*/
void pushButton()
{
// Robojax XY-GMOS MOSFET Motor driver code
// video instruction https://youtu.be/eqXaqRFAWrA
if(digitalRead(START_STOP_PIN) ==LOW)
{
motorState =!motorState;
delay(100);
}
} // pushButton()
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
ایبیخرید درایور موتور 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