検索コード

Arduinoを使って20A DC PWMモータースピードコントローラーを改造する

Arduinoを使って20A DC PWMモータースピードコントローラーを改造する

このチュートリアルでは、20A DC PWMモーター速度コントローラーをArduinoとシームレスに作動させる方法を学びます。この修正により、ポテンショメーターまたはArduinoからの直接コマンドを使用してモーターの精密な速度制御が可能になります。その結果、さまざまなプロジェクトに統合できるより多様なモーター制御システムが実現します。

20A DC PWMモーター速度コントローラー: 左側前面ビュー
20A DC PWMモーター速度コントローラー:左側前面ビュー

このプロジェクトでは、PWMコントローラーをArduinoに接続し、ユーザーの入力に基づいてモーターの速度を管理するためのコードを使用します。この設定は、ロボティクスや自動化システムなどの可変速度制御を必要とするアプリケーションで有利です。さらに明確にするために、このチュートリアルに付随するビデオを参照できます(ビデオは00:00にあります)。

ハードウェアの解説

このプロジェクトの主な構成要素には、Arduinoボード、20A DC PWMモーター速度コントローラー、そしてポテンショメーターが含まれます。Arduinoはシステムの脳として機能し、モーターの速度を調整するためにモーターコントローラーにPWM信号を送信します。モーター速度コントローラー自体は、モーターの電力を調整するMOSFETのゲートを制御するPWM信号を生成するために555タイマーICを利用しています。

20A DC PWMモーター速度コントローラー:寸法
20A DC PWMモーター速度コントローラー:寸法

ポテンショメーターは入力デバイスとして機能し、ユーザーが希望する速度を手動で設定できるようにします。ポテンショメーターを回すことで抵抗が変化し、それに応じた電圧がArduinoに送信されます。Arduinoはこの電圧を読み取り、モーターコントローラーに送信されるPWM信号を調整します。

データシートの詳細

製造業者 不明
部品番号 20A DC PWMモーター速度コントローラー
論理/入出力電圧 5 V
供給電圧 10-60 V
出力電流(チャネルごと) 20 A
ピーク電流(チャンネルごと) 40 A
PWM周波数ガイダンス 通常1 kHz
入力論理しきい値 0.2 V (低), 2.0 V (高)
電圧降下 / RDS(on)/ 饱和 0.1 V
熱的限界 85°Cまで
パッケージ 標準PCB
ノート / バリアント さまざまなモデルが利用可能です。

  • 高電流用途に対して適切なヒートシンクを確保してください。
  • システムに電源を入れる前に、配線が正しい極性であることを確認してください。
  • 電源端子の間にデカップリングキャパシタを使用してください。
  • 最適なパフォーマンスのためにPWM周波数を約1 kHzに維持してください。
  • 入力電圧制限(10-60 V)に注意してください。
20A DC PWMモーター速度コントローラー:ポテンショメーター(可変抵抗器)
20A DC PWMモーター速度コントローラー:ポテンショメーター(可変抵抗器)

配線指示書

20A DC PWMモーター速度コントローラーをArduinoに接続するには、まず電源を接続します。電源の正端子はモーターコントローラーのV+入力に接続し、負端子はコントローラーのグラウンド(GND)に接続します。次に、モーターをコントローラーの出力端子に接続し、目的の回転のために極性が正しいことを確認します。

PWM信号の場合、コントローラー上のPWM出力ピンを特定し、これをArduinoの指定されたPWMピンに接続します(この場合、ピン5). さらに、Arduinoのグランドをモーターコントローラーのグランドに接続して、共通の基準を確保します。最後に、ポテンショメータを使用する場合は、一端をArduinoの5Vピンに接続し、中間ピンをアナログピンに接続します(例えば、A0)、最後のピンをグラウンドに接続します。

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

コードは、PWM出力ピンとポテンショメータの制御ピンを定義することから始まります。setup()関数はPWMピンを出力として初期化し、デバッグ用のシリアル通信を開始します。

#define pwmPin 5
#define controlPin A0

void setup() {
  pinMode(pwmPin, OUTPUT);
  Serial.begin(9600);
}

空白loop()関数では、ポテンショメーターから値を読み取り、その値をモーターコントローラーに適したPWM範囲にマッピングします。この値はPWMピンに書き込まれ、モーターの速度を制御します。

void loop() {
  int potValue = analogRead(controlPin);
  int pwm = map(potValue, 0, 1023, 0, 255);
  analogWrite(pwmPin, pwm);
  Serial.print("PWM:");
  Serial.println(pwm);
  delay(500);
}

最後に、関数が定義されており、PWM値をパーセンテージに変換することで、ユーザー入力に基づいてモーターの速度をより理解しやすくしています。完全なコードは、記事の下(00:00のビデオ内)に読み込まれます。

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

すべての配線が接続され、コードがアップロードされると、モーターがポテンショメーターの位置に応じて反応することが期待できます。ポテンショメーターを回すことで、Arduinoから送信されるPWM信号に応じてモーターの速度が増減します。電源が必要な電圧範囲内であることと、モーターが加えられた電圧に耐えられることを確認してください。

一般的な落とし穴には、配線の誤りが含まれ、これはモーターの回転が逆になるか、始動しない原因になる可能性があります。常に接続を再確認し、Arduinoとモーターコントローラーのグラウンドが一緒に接続されていることを確認してください(動画の04:30で)。

動画のタイムスタンプ

  • 00:00 開始
  • 00:40 イントロダクション
  • 04:07 配線の準備(修正する)
  • 06:55 配線の説明
  • 08:40 コードの説明
  • 13:15 デモンストレーション

画像

20A DC PWMモーター速度コントローラー: メイン
20A DC PWMモーター速度コントローラー: メイン
20A DC PWMモータースピードコントローラー:上面図
20A DC PWMモータースピードコントローラー:上面図
20A DC PWMモーター速度コントローラー: 寸法
20A DC PWMモーター速度コントローラー: 寸法
20A DC PWMモータースピードコントローラー:ポテンショメーター(可変抵抗器)
20A DC PWMモータースピードコントローラー:ポテンショメーター(可変抵抗器)
20A DC PWMモーター速度コントローラー:前面図
20A DC PWMモーター速度コントローラー:前面図
20A DC PWMモーター速度コントローラー:右側前面ビュー
20A DC PWMモーター速度コントローラー:右側前面ビュー
20A DC PWMモーター速度コントローラー:左側前面図
20A DC PWMモーター速度コントローラー:左側前面図
20A DC PWMモーター速度コントローラー:ボトム PCBビュー
20A DC PWMモーター速度コントローラー:ボトム PCBビュー
20A DC PWMモータースピードコントローラ:正ライン共通
20A DC PWMモータースピードコントローラ:正ライン共通
222-Hack: Control a 20A DC Motor with an Arduino using 20A DC 10-60V PWM
言語: C++
/*
 * Modify 80NF70 PWM 20A Module to control with Arduino
 * Modify the "DC 10-60V 20A Motor Speed Control Regulator PWM Motor Speed Controller Switch"
 * 
 * 
 * Written by Ahmad Shamshiri
 * on Saturday, July 27, 2019 at 18:23
 * in Ajax, Ontario, Canada
 * www.Robojax.com
 * Watch the video instruction: https://youtu.be/ipFxYQkB5uw
 * See the module on eBay. Get this module from eBay:
 https://www.ebay.com/sch/i.html?&_nkw=20A+DC10-60V+PWM&_sacat=0
 * or search for "DC 10-60V 20A Motor Speed Control Regulator PWM Motor Speed Controller"
 * Watch full review of this module: https://youtu.be/kgs_FILyppk
 */
 
#define pwmPin 5
#define controlPin A0

void setup() {
  pinMode(pwmPin,OUTPUT);
  Serial.begin(9600);

}

void loop() {
  int potValue = analogRead(controlPin);

  int pwm =map(potValue, 0,1023, 0, 255);

    //pwm = toPWM(0);

  analogWrite(pwmPin,pwm);
  Serial.print("PWM:");  
  Serial.print(pwm);
  Serial.print(" it is:");  
  Serial.print(pwmToPercent(pwm));  
  Serial.println("%");    
  
  delay(500);
}

/*
 * @brief converts % value from 0 to 100% to 0-255
 * @param v is integer value representing % from 0-100
 * @return will return value from 0 to 255
 * Written by Ahmad Shamshiri for robojax.com
 * on July 30, 2019 in Ajax, Ontario, Canada
 */
int toPWM(int v){
  return map(v, 0,100,0,255);
}//

/*
 * @brief converts Arduino PWM value which is 0 to 255 to 0-100%
 * @param p is integer value representing  from 0-255
 * @return will return value from 0 to 255
 * Written by Ahmad Shamshiri for robojax.com
 * on July 30, 2019 in Ajax, Ontario, Canada
 */
int pwmToPercent(int p)
{
 return map(p, 0,255,0,100); 
}

ファイル📁

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