شِفر (کود) جستجو

نحوه استفاده از MOSFET اپتوکوپل‌شده HW-532 برای کنترل سرعت یا بار موتور DC تا 30V با استفاده از آردوینو

نحوه استفاده از 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).

Arduino wriing for HW-532 MOFET motor driver
برای کنترل پیشرفته‌تر با استفاده از پتانسیومتر و دکمه فشاری، نقشه سیم‌کشی مفصل در ویدیو نشان داده شده است (در :44).

توضیح شِفر (کود)

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

Schematic for HW-532 using FR120N MOSFET
  1. کنترل روشن/خاموش:این شِفر (کود) ساده (در ویدئو در 15:05) از یک پایه دیجیتال برای روشن و خاموش کردن موتور استفاده می‌کند. بخش قابل پیکربندی توسط کاربر عبارت است ازMOTOR_OUT_PINثابتی که تعیین می‌کند کدام پایهٔ آردوینو ماجیول HW-532 را کنترل می‌کند.
  2. کنترل سرعت PWM:این شِفر (کود) (در ویدئو در 15:39) از مدولاسیون پهنای پالس (PWM) برای کنترل سرعت موتور استفاده می‌کند. کاربر می‌تواند آن را تنظیم کندSPEED_MAXوSPEED_MINبرای تعیین حد بالایی و پایینی کنترل سرعت، وmotorControl()وstopMotor()این توابع به‌ترتیب برای کنترل موتور و متوقف کردن آن استفاده می‌شوند.
  3. کنترل با پتانسیومتر و دکمه فشاری:این شِفر (کود) (در ویدیو در 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] شِفر (کود) آردوینو با پتانسیومتر و دکمه فشاری

تصاویر

سکیم برای HW-532 با استفاده از MOSFET FR120N
سکیم برای HW-532 با استفاده از MOSFET FR120N
HW-532_driver_module-1
HW-532_driver_module-1
HW-532_driver_module-2
HW-532_driver_module-2
HW-532_driver_module-4
HW-532_driver_module-4
HW-532_driver_module-5
HW-532_driver_module-5
Arduino wriing for HW-532 MOFET motor driver
Arduino wriing for HW-532 MOFET motor driver
792-Code 1- Switch: Optocoupled HW-532 to control using MOSFET FR120N , LR7843
زبان: C++
/*
 * درس ۱۰۸-۱: در این درس یاد می‌گیریم که چگونه از ماجیول با ماسفت‌های 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
793-Code 2- PWM: Optocoupled HW-532 to control using MOSFET FR120N , LR7843
زبان: C++
# 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()

794-Code 3- Potentiometer: Optocoupled HW-532 to control using MOSFET FR120N , LR7843
زبان: C++
/*
 * درس ۱۰۸-۳: کنترل سرعت موتور با استفاده از مقاومت متغیر (پتانسیومتر) و استفاده از دکمه شروع/توقف با آردوینو.
 * 
 * در این درس یاد می‌گیریم که چگونه از ماژول با ماسفت‌های 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()

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

هنوز هیچ منبعی موجود نیست.

فایل‌ها📁

برگه مشخصات (pdf)

فایل فریزینگ

سایر فایل‌ها