كيفية استخدام MOSFET مع عازل بصري HW-532 للتحكم في سرعة أو حمل محرك تيار مستمر حتى 30 فولت باستخدام أردوينو
يوضح دليل المشروع هذا كيفية بناء منظم سرعة لمحرك تيار مستمر متعدد الاستخدامات باستخدام أردوينو ووحدة MOSFET معزولة بصريًا HW-532. قد يكون الـ MOSFET...FR120N، LR7843 أو D4184.يتيح لك ذلك التحكم في سرعة وحالة التشغيل (تشغيل/إيقاف) لمحرك تيار مستمر بجهد يصل إلى 30 فولت. توفر وحدة HW-532 الحماية والعزل، مما يجعلها أكثر أمانًا وموثوقيةً من توصيل المحرك مباشرةً بالأردوينو.

هذا المشروع ذو قيمة لتطبيقات متنوعة. فيما يلي بعض الأمثلة:
- التحكم بدقة في سرعة ذراع روبوتية
- بناء مروحة ذات سرعة متغيرة لأنظمة التبريد
- إنشاء آلات مؤتمتة ذات حركة قابلة للتعديل
- تطوير نظام تحكم بصمام محركي لأنظمة الموائع
الأجهزة/المكونات
المكونات الأساسية هي الأردوينو، ووحدة MOSFET معزولة ضوئيًا HW-532 (مع خيارات MOSFET مثل D4184 أو LR7843 أو FR120N)، ومحرك تيار مستمر (تصنيف الجهد ≤ 30V)، وأسلاك توصيل، وبشكل اختياري، مقاوم متغير (بوتنشيومتر) وزر ضغط للتحكم المتقدم (في الفيديو عند 19:34).
يعتمد اختيار MOSFET داخل وحدة HW-532 على متطلبات التيار لديك (في الفيديو عند 01:24). يقدم الفيديو مقارنة مفصّلة بين أنواع MOSFET المختلفة (في الفيديو عند 06:50) ومدى ملاءمتها لمختلف التطبيقات (في الفيديو عند 09:45). تذكر تضمين دايود للأحمال الحثّية مثل المحرّكات ذات التيار المستمر لحماية الوحدة (في الفيديو عند 06:00 و22:02).
دليل الأسلاك
التوصيل الأساسي يربط الطرف الموجب للمحرك بمخرج HW-532، والطرف السالب للمحرك بأرضي HW-532، ودبوس التحكم في HW-532 بدبوس رقمي في Arduino (في الفيديو عند 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] كود أردوينو مع مقاوم متغير وزر ضغط
/*
* الدرس ١٠٨-١: في هذا الدرس، نتعلم كيفية استخدام الوحدة مع ترانزستورات MOSFET FR120N وLR7843 وD4184 لتشغيل/إيقاف حمل تيار مستمر حتى ١٠ أمبير. HW-532 معزول بصريًا من حمل ٥ فولت إلى ٣٠ فولت حتى ١٠ أمبير، حسب الوحدة. يُعرض الرسم التخطيطي، ويُشرح مخطط الأسلاك، كما يُعرض طرق توصيل مختلفة باستخدام زر ضغط ومقياس جهد.
*
* فيديو: https://youtu.be/eqXaqRFAWrA
*
* كتبه أحمد شمشيري لموقع RoboJax.com
* // نُشر في ٢٥ أغسطس ٢٠٢٢ في آجكس، أونتاريو، كندا.
*
* المشروع ١: تشغيل/إيقاف محرك أو حمل (هذا المشروع)
* المشروع ٢: التحكم في السرعة باستخدام شفرة أردوينو
* المشروع ٣: التحكم في السرعة باستخدام مقياس الجهد وزر ضغط
*
* شاهد فيديو تعليمي لهذا الكود: https://youtu.be/eqXaqRFAWrA
*
* هذا الكود جزء من دورة أردوينو خطوة بخطوة، والتي تبدأ من هنا: https://youtu.be/-6qSrDUA5a8
*
* للحصول على مكتبة لهذا الكود، تفضل بزيارة http://robojax.com/
*
* إذا وجدت هذا الشرح مفيدًا، يُرجى دعمي لأستمر في إنشاء محتوى مماثل. تبرع عبر باي بال أو ببطاقة الائتمان: https://bit.ly/donate-robojax
*
* هذا الكود "كما هو" دون أي ضمان أو مسؤولية. الاستخدام مجاني طالما حافظت على هذه الملاحظة سليمة.*
* تم تنزيل هذا الكود من Robojax.com
* هذا البرنامج برنامج حر: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة جنو العمومية كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الرخصة، أو (حسب رغبتك) أي إصدار لاحق.
*
* يُوزع هذا البرنامج على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ حتى دون الضمان الضمني لقابلية التسويق أو الملاءمة لغرض معين. راجع رخصة جنو العمومية لمزيد من التفاصيل.
*
* من المفترض أنك استلمت نسخة من رخصة جنو العمومية مع هذا البرنامج. إذا لم تكن قد استلمتها، فراجع <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()
/*
* الدرس ١٠٨-٣: التحكم في سرعة المحرك باستخدام المقاومة المتغيرة (مقياس الجهد) واستخدام زر التشغيل/الإيقاف مع أردوينو.
*
* في هذا الدرس، نتعلم كيفية استخدام الوحدة مع ترانزستورات MOSFET FR120N وLR7843 وD4184 لتشغيل/إيقاف حمل تيار مستمر حتى ١٠ أمبير. HW-532 معزول بصريًا من حمل ٥ فولت إلى ٣٠ فولت حتى ١٠ أمبير، حسب الوحدة. يوضح الرسم التخطيطي، ومخطط الأسلاك، وطرق التوصيل المختلفة باستخدام زر التشغيل ومقياس الجهد.
*
* فيديو: https://youtu.be/eqXaqRFAWrA
*
* احصل على أكواد هذا المشروع من https://robojax.com/RJT797
* كتبه أحمد شمشيري لموقع RoboJax.com
* // نُشر في ٢٥ أغسطس ٢٠٢٢ في آجكس، أونتاريو، كندا.
*
* المشروع ١: تشغيل/إيقاف محرك أو حمل
*
* المشروع ٢: التحكم في السرعة باستخدام كود أردوينو
*
* المشروع ٣: التحكم في السرعة باستخدام مقياس الجهد وزر ضغط (هذا المشروع)
*
* شاهد فيديو تعليمي لهذا الكود: https://youtu.be/eqXaqRFAWrA
*
* هذا الكود جزء من دورة أردوينو خطوة بخطوة، والتي تبدأ من هنا: https://youtu.be/-6qSrDUA5a8
*
* للحصول على مكتبة لهذا الكود، تفضل بزيارة http://robojax.com/
*
* إذا وجدت هذا الشرح مفيدًا، يُرجى دعمي لأستمر في إنشاء محتوى مماثل. تبرع عبر باي بال أو ببطاقة الائتمان: https://bit.ly/donate-robojax
*
* هذا الكود "كما هو" دون أي ضمان أو مسؤولية. الاستخدام مجاني طالما حافظت على هذه الملاحظة سليمة.*
* تم تنزيل هذا الكود من Robojax.com
* هذا البرنامج برنامج حر: يمكنك إعادة توزيعه و/أو تعديله بموجب شروط رخصة جنو العمومية كما نشرتها مؤسسة البرمجيات الحرة، إما الإصدار 3 من الرخصة، أو (حسب رغبتك) أي إصدار لاحق.
*
* يُوزع هذا البرنامج على أمل أن يكون مفيدًا، ولكن دون أي ضمان؛ حتى دون الضمان الضمني لقابلية التسويق أو الملاءمة لغرض معين. راجع رخصة جنو العمومية لمزيد من التفاصيل.
*
* من المفترض أنك استلمت نسخة من رخصة جنو العمومية مع هذا البرنامج. إذا لم تكن قد استلمتها، فراجع <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()
الأشياء التي قد تحتاجها
-
أمازوناشترِ HW-532 من أمازونamzn.to
-
إي باياشترِ محرك FR120N من eBayebay.us
-
علي إكسبريساشترِ سائق المحرك FR120N من علي إكسبريسs.click.aliexpress.com
الموارد والمراجع
لا توجد موارد حتى الآن.
ملفات📁
ورقة البيانات (pdf)
-
انفينون-IRLR7843 LR7843 ورقة بيانات MOSFET
infineon-irlr7843-datasheet-en.pdf0.37 MB
Fritzing File
-
HW-532B وحدة موس فوت
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