Hブリッジ1:TIP120およびTIP125ダーリントン・トランジスタを使用してブレッドボード上にHブリッジモータードライバを構築する
このチュートリアルでは、TIP120およびTIP125ダーリントン・トランジスタを使用してブレッドボード上にHブリッジモータードライバを構築する方法を案内します。このセットアップは、DCモーターの方向と速度を制御するのに最適であり、さまざまなロボティクスや自動化プロジェクトに不可欠です。このチュートリアルの終わりまでには、時計回りと反時計回りの回転を持つモーターを制御し、速度の調整も行えるようになります。
このガイドでは、モーターを制御するためにArduinoを使用します。Hブリッジ構成は、トランジスタに送信される入力信号を制御することでモーターの方向を反転させることができます。これは、正確なモーター制御を必要とするロボットアームやモバイルロボットなど、多くのアプリケーションにとって重要な側面です。さらなる説明については、ビデオ(ビデオの00:00で)を参照してください。
ハードウェアの解説
このプロジェクトの主なコンポーネントには、モーターの動作を制御するためのスイッチとして使用されるTIP120およびTIP125トランジスタが含まれています。TIP120はNPNダーリントン・トランジスタであり、TIP125はPNPダーリントン・トランジスタです。これらは一緒にHブリッジ構成を形成し、モーターを流れる電流の方向を制御することを可能にします。
この設定では、PWM(パルス幅変調)信号を使用してモーターの速度を制御します。トランジスタは迅速にオンとオフを切り替え、モーターの速度を決定する平均電圧を生成します。ENピンはトランジスタを有効または無効にし、モーターが必要なときのみ動作することを保証します。
データシートの詳細
| 製造業者 | テキサス・インスツルメンツ |
|---|---|
| 部品番号 | TIP120 |
| ロジック/IO電圧 | 5-15 V |
| 供給電圧 | 60 V |
| 出力電流(チャネルごと) | 5 A |
| ピーク電流(チャネルごと) | 30 A |
| PWM周波数ガイダンス | 1 kHz 最大 |
| 入力ロジック閾値 | 2.5 V(高)、0.8 V(低) |
| 電圧降下 / RDS(on)/ 飽和度 | 1.2 V |
| 熱的制限 | 175 °C |
| パッケージ | TO-220 |
| ノート / バリアント | TIP125として利用可能 |
- 高電流アプリケーションのために適切なヒートシンクを確保してください。
- PWM信号を使用してモーターの速度を効果的に制御します。
- トランジスタの向きを確認して回路の損傷を防ぎます。
- 電圧定格に注意して、限界を超えないようにしてください。
- 電圧供給を安定させるためにデカップリングコンデンサを使用してください。
配線指示

Hブリッジモータードライバを配線するには、まずTIP120とTIP125のVCCピンをArduinoの5V電源に接続します。GNDピンをグラウンドに接続します。PWM制御ピン、PWM1とPWM2、Arduinoのデジタルピン9と3にそれぞれ接続されるべきです。イネーブルピン、EN1とEN2デジタルピン8と2に接続します。
次に、モーターの端子をTIP120およびTIP125トランジスタのコレクタピンに接続します。モーターが電源に適合していることを確認してください。フライバック保護のためにダイオードなどの追加コンポーネントを使用する場合は、モーター端子と並列に配置して逆起電力による損傷を防ぎます。異なるArduinoモデルを使用している場合は、PWMおよびイネーブル信号のピンマッピングを確認してください。
コード例とウォークスルー
const int PWM1= 9; //pin with ~
const int EN1= 8;
const int PWM2= 3; //pin with ~
const int EN2= 2;
セットアップでは、PWM信号とイネーブルピンの制御ピンを定義します。pinModeこの関数は、モーターを駆動するトランジスタを制御するために、これらのピンを出力として設定します。
void loop() {
Motor(CW, 50); //in CW at 50% speed
delay(5000);
stop(); // stops the motor
delay(2000);
}
このループ機能はモーターの動作を示しています。最初にモーターを時計回りに50%の速度で5秒間動かし、その後2秒間停止します。Motor関数は方向と速度のパラメータで呼び出され、これらの入力に基づいてモーターの動作を制御します。
void Motor(boolean direction, int speed=0) {
int speedPWM = map(speed, 0, 100, 0, 255);
if(direction) {
analogWrite(PWM1, speedPWM); // Set speed for CW
} else {
analogWrite(PWM2, speedPWM); // Set speed for CCW
}
}
そのMotor関数はブール値の方向と整数の速度を受け取ります。速度のパーセンテージをPWM値にマッピングし、使用します。analogWriteモーター制御のために適切なピンを設定します。この機能は、モーターの方向と速度を動的に変更するために重要です。
デモンストレーション / 期待すること
配線とコードのアップロードが完了したら、モーターが50%の速度で5秒間時計回りに回転し、その後停止するのを観察するはずです。遅延の後、モーターは80%の速度でさらに5秒間反時計回りに回転します。一般的な落とし穴には、配線の誤りや電圧定格の超過が含まれ、これによりトランジスタやモーターが損傷する可能性があります。
ビデオのタイムスタンプ
- 00:00- はじめに
- 01:30- ハードウェアの概要
- 03:15- 配線指示
- 05:00- コードウォークスルー
- 08:45- デモンストレーション
/*
This code is for:
Building an H-Bridge Motor driver using TIP120 and TIP125 on a breadboard and full PCB Design with Arduino
https://youtu.be/6ugrL5ziPn8
This code has been downloaded from Robojax.com
You can access the resources page and download the Gerber file to produce
the PCB or a fully assembled PCB from PCBX.com
Visit https://robojax.com/tutorial_view.php?id=392
to control a DC motor using TIP120 and TIP125 as an
H bridge
Written by Ahmad Shamshiri
26 Aug 2024
*/
const int PWM1= 9;//pin with ~
const int EN1= 8;
const int PWM2= 3;//pin with ~
const int EN2= 2;
const boolean CW =1;
const boolean CCW =0;
void Motor(boolean, int);//prototype
void brake();//prototype
void setup() {
Serial.begin(9600);
Serial.println("TIP120 H Bridge by Robojax");
pinMode(PWM1, OUTPUT);
pinMode(EN1, OUTPUT);
pinMode(PWM2, OUTPUT);
pinMode(EN2, OUTPUT);
}
void loop() {
Motor(CW, 50);//in CW at 50% speed
delay(5000);
stop();
delay(2000);
Motor(CCW, 80);//in CCW at 80% speed
delay(5000);
brake();
delay(2000);
for (int i=0; i<=100; i++)
{
Motor(CCW, i);
delay(25);
}
delay(5000);
brake();
delay(2000);
}
/*
stop()
stops the output
*/
void stop()
{
Serial.println ("=== Stop");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}
/*
brake()
*/
void brake()
{
Serial.println ("=== Brake");
digitalWrite(PWM1, HIGH);
digitalWrite(EN1, LOW);
digitalWrite(PWM2, HIGH);
digitalWrite(EN2, LOW);
}
void Motor(boolean direction, int speed=0)
{
int speedPWM = map(speed, 0, 100, 0, 255);
Serial.print("Speed: "); Serial.print (speedPWM);
Serial.print ("(");Serial.print (speed);Serial.print ("%)");
if(direction){
Serial.print(" dir: ");Serial.println ("CW");
analogWrite(PWM1, speedPWM);
digitalWrite(EN1, HIGH);
digitalWrite(PWM2, LOW);
digitalWrite(EN2, LOW);
}else{
Serial.print(" dir: ");Serial.println ("CCW");
digitalWrite(PWM1, LOW);
digitalWrite(EN1, LOW);
analogWrite(PWM2, speedPWM);
digitalWrite(EN2, HIGH);
}
}
リソースと参考文献
-
外部
-
外部PCBxから10枚までの標準PCBを無料で入手できます。pcbx.com
-
外部アマゾンで本物のArduino UNO R3を購入してください。amzn.to
-
外部本物のArduino UNO R3を購入: アマゾンカナダamzn.to
ファイル📁
他のファイル
-
Hブリッジ-TIP120-TIP125のPCB用GerberファイルH-Bridge-TIP120-TIP125.zip、H-Bridge-TIP120-TIP125-BOM.xls、H-Bridge-TIP120-TIP125-coor.xlsのファイルが含まれており、注文を簡単に行うことができます。
H-Bridge-TIP120-TIP125 Gerber file.zip0.05 MB