検索コード

YYNMOS-4 4チャネルMOSFETを使用して5Aから20AのDCモーターまたはLEDライトストリップを制御する方法

YYNMOS-4 4チャネルMOSFETを使用して5Aから20AのDCモーターまたはLEDライトストリップを制御する方法

このチュートリアルでは、YYNMOS-4 4チャネルMOSFETモジュールを使用して、モーターやLEDライトストリップなどのさまざまなDC負荷を制御する方法を探ります。このモジュールを使用すると、ライトの明るさやモーターの速度を効果的に管理できます。5Aから20Aの負荷を処理できる能力を備えているため、電子プロジェクトにおける重要なコンポーネントとなるでしょう。

YNMOS-4: with Arduino 1

MOSFETモジュールをArduinoに接続し、PWM(パルス幅変調)を通じて負荷を制御できるようにします。このアプローチにより、モーターやライトの動作をスムーズに制御できます。視覚的なガイドとして、関連するビデオを見ることをお勧めします(ビデオは:00にあります)。

ハードウェアの説明

YYNMOS-4モジュールは、大きな電流を扱える4つのMOSFETを含んでおり、さまざまな負荷を駆動するのに理想的です。各MOSFETは低抵抗(オン時に10〜16ミリオーム)で動作し、効率的な電力供給を可能にします。最大5Aの電流を持つデバイスを最大4台接続でき、適切なヒートシンクを使用すれば、これを20Aに増加させることができます。

MOSFETに加えて、このモジュールには制御信号用の入力端子と負荷を接続するための出力端子があります。入力は3Vから20Vの信号を受け付けることができ、Arduinoを含むほとんどのマイコンと互換性があります。また、このモジュールには各出力の状態を示すLEDも含まれており、操作中に視覚的なフィードバックを提供します。

データシートの詳細

製造業者 YYNMOS
部品番号 YYNMOS-4
論理/IO電圧 3-20 V
供給電圧 5-36 V
出力電流(チャネルごと) 5 A
ピーク電流(チャンネルごと) 20 A
PWM周波数ガイダンス 約1 kHz
入力ロジック閾値 高: > 3 V, 低: < 1 V
電圧降下 / RDS(on)/ 飽和度 10-16 mΩ
熱的制限 85°Cまで
パッケージ 標準PCBモジュール
ノート / バリアント PLCと互換性があります

  • 5Aを超える電流については、適切なヒートシンクを確保してください。
  • 負荷を接続する前に電圧定格を確認してください。
  • 速度または強度の制御にはPWM信号を使用してください。
  • 熱阻止の限界に注意して、過熱を防いでください。
  • ショート回路を防ぐために配線を再確認してください。

配線指示

YNMOS-4: Arduino Wiring with an LED Strip
YNMOS-4: LEDストリップを使用したArduino配線 — YNMOS-4: Arduino Wiring with an LED Strip
robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6

YYNMOS-4モジュールを配線するには、まず電源を接続します。電源の正端子を接続してください。DC+モジュールの端子と負極端子へDC-ターミナル。制御したい各負荷は、出力ペアのいずれかに接続されます。たとえば、負荷の正端子を対応する出力ターミナルに接続し、負荷の負端子をグラウンドに接続します。

robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6

制御信号については、ArduinoのPWM対応ピンをYYNMOS-4モジュールの対応する入力ピンに接続します。たとえば、Arduinoのピン3、5、6、および9を使用する場合、これらをモジュールのPWM入力に接続します。また、ArduinoのグラウンドもYYNMOS-4モジュールのグラウンドに接続して、共通の基準点を維持してください。

コード例とウォークスルー

次のコードスニペットは、必要なピンを定義し、PWM信号を使用してモーターまたはLEDを制御する方法を示しています。変数motorは、簡単に参照できるようにピン番号を保持する配列です。


int pin1 = 3; // PWM pin for motor 1
int pin2 = 5; // PWM pin for motor 2
int pin3 = 6; // PWM pin for motor 3
int pin4 = 9; // PWM pin for motor 4
int motor[]={NULL,pin1, pin2, pin3, pin4};

この抜粋では、各モーターまたはLEDを制御するための4つのPWMピンを定義します。配列motorこれにより、後でコード内でこれらのピンを簡単に参照できるようになります。

Theloop()この関数は、異なる速度でモーターを起動する方法を示します。


void loop() {
   motorON(1, 75); // Run motor 1 at 75% speed
   delay(4000); // Wait for 4 seconds
   stop(1); // Stop motor 1
   delay(3000); // Wait for 3 seconds
}

このコードのセグメントは、モーター1を75%の速度で4秒間動作させ、その後3秒間停止します。速度とタイミングを調整することで、負荷の柔軟な制御が可能になります。

記事の下に読み込まれた完全なプログラムを参照してください。

デモンストレーション / 期待できること

Arduinoへの配線を完了し、コードをアップロードすると、モーターやLEDがPWM信号に反応するのを観察できるはずです。モーターは定義された速度で始動し、動的に停止または調整できます。問題が発生した場合は、極性の逆転や配線ミスを確認してください。これらは一般的な落とし穴です(ビデオの12:30で)。

動画のタイムスタンプ

  • 00:00 開始
  • ハードウェアの解説
  • 07:53 配線の説明
  • 10:13 YYNMOS-4のためのArduinoコードの説明
  • 14:51 Arduinoなしのデモンストレーション
  • 16:32 Arduinoを使ったデモンストレーション

画像

YNMOS-4: 準備完了
YNMOS-4: 準備完了
YNMOS-4:Arduino 1付き
YNMOS-4:Arduino 1付き
YNMOS-4: Arduino 2と一緒に
YNMOS-4: Arduino 2と一緒に
YNMOS-4: Arduino配線のクローズアップ
YNMOS-4: Arduino配線のクローズアップ
YNMOS-4: LEDストリップを使用したArduino配線
YNMOS-4: LEDストリップを使用したArduino配線
robojax_YYNMOS-4-img6
robojax_YYNMOS-4-img6
YNMOS-4 4-Channel MOSFET Red
YNMOS-4 4-Channel MOSFET Red
343-Arduino code YYNMOS-4 4-Channel MOSFET to Control 5A DC or LED light control
言語: C++
++
/*
 * This is Arduino code to control 4 DC motors' speed or 4 LED light strips or other DC loads
 * by utilizing a YYNMOS-4 4-channel MOSFET module.

We can control 4 DC motors with voltage from 5V to 35V and 5A each.
Get the code and wiring from https://robojax.com/RJT338

 * Written by Ahmad Shamshiri on July 13, 2020
 * in Ajax, Ontario, Canada. www.robojax.com
 * 
 * 
 * Watch video instructions for this code: https://youtu.be/G9uHVcITHf8
 * 

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64

 * 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 pin1 = 3;//pwm
int pin2 = 5;//pwm
int pin3 = 6;//pwm
int pin4 = 9;//pwm
int ON = HIGH;
int OFF = LOW;
int motor[]={NULL,pin1, pin2, pin3, pin4};


void setup() {
  Serial.begin(9600);
  Serial.println("Robojax.com 4 DC Motor or LED");
  pinMode(motor[1], OUTPUT);
  pinMode(motor[2], OUTPUT);
  pinMode(motor[3], OUTPUT);
  pinMode(motor[4], OUTPUT);    

}

void loop() {
   motorON(1, 75);//run motor 1 at 75% speed
   delay(4000);//for 4 seconds

   motorON(4, 100);//run motor 4 at 100% speed (or 100% light intensity)
   delay(4000); //for 4 seconds

   stop(1);//stop motor 1
   delay(3000);//keep it stopped for 3 seconds

   stop(4);//stop motor 4 
   delay(3000);  //keep it stopped for 3 seconds 
   for(int i=0; i<=100; i++)
   {
     motorON(1,i); //change speed of motor 1  
     delay(100);
   }
  delay(3000);//keep running for 3 seconds
  stop(1);//stop motor 1
  delay(3000);//keep it stopped for 3 seconds
  
     for(int i=100; i>=0; i--)
   {
     motorON(1,i);  //change speed of motor 1    
     delay(100);
   }
   delay(3000); //keep it running for 3 seconds

    
   for(int i=0; i<=100; i++)
   {
     motorON(4,i);    
     delay(100);
   }
  delay(3000);//keep it at for 3 seconds
  
    for(int i=100; i>=0; i--)
   {
     motorON(4,i);    
     delay(100);
   }   
  
}// loop


/*
   motorON(int n, int sp)
 * @brief Runs the specific motor n with speed sp
 * @param n, is an integer from 1 to 4
 * @param sp, is speed in % from 0 to 100
 * @return does not return anything
 * Written by Ahmad Shamshiri
 * www.Robojax.com code July 13, 2020 in Ajax, Ontario, Canada
 */
void motorON(int n, int sp)
{
  if(n >=1 && n <=4)
  {
  int speed=map(sp, 0, 100, 0, 255);
  analogWrite(motor[n],speed);
  Serial.print("Load ");
  Serial.print(n);
  Serial.print(" @");
  Serial.print(sp);
  Serial.println("%");
  
  }else{
    Serial.println("Motor/load number should be between 1 and 4");
    while(1);// stop forever
  }
    
}//motorON(int n)


/*
   stop(int n)
 * @brief Stops the specific motor
 * @param n, is an integer from 1 to 4
 * @return does not return anything
 * Written by Ahmad Shamshiri
 * www.Robojax.com code July 13, 2020 in Ajax, Ontario, Canada
 */
void stop(int n)
{
  if(n >=1 && n <=4)
  {

  digitalWrite(motor[n], LOW);
  Serial.print("Load ");
  Serial.print(n);
  Serial.println(" Stopped");

  }else{
    Serial.println("Motor/load number should be between 1 and 4");
    while(1);// stop forever
  }
    
}//stop(int n)

必要かもしれないもの

ファイル📁

ファイルは利用できません。