PWM を使用して DC モーターの方向を制御するにはどうすればよいですか?
Nov 10, 2025
ちょっと、そこ!エレクトロニクスやロボット工学に興味がある方は、パルス幅変調 (PWM) を使用して DC モーターの方向を制御する方法を疑問に思ったことがあるでしょう。そうですね、あなたは正しい場所にいます! PWM サプライヤーとして、私はこの分野で豊富な経験を持っており、それを皆さんと共有できることを楽しみにしています。
PWMとは何ですか?
まず最初に、PWM とは何かについて話しましょう。 PWM は、電源のオンとオフを急速に切り替えることによって、電気デバイスに供給される電力を制御するために使用される技術です。電源がオンになっている時間とサイクルの合計時間の比率は、デューティ サイクルと呼ばれます。デューティ サイクルを変更することで、デバイスに供給される平均電力を制御できます。
たとえば、デューティ サイクルが 50% の 100Hz PWM 信号がある場合、電源は 10ms サイクルごとに 5ms 間オンになり、5ms 間オフになります。デューティ サイクルを 70% に増やすと、各サイクルで電源が 7ms オンになり、3ms オフになります。このようにして、DC モーターの速度と方向を制御できます。
PWM による DC モーターの方向制御
PWM を使用して DC モーターの方向を制御するには、次のものが必要です。
- DCモーター
- Hブリッジ回路
- PWM信号を生成できるマイクロコントローラー
Hブリッジ回路
H ブリッジは、モーターに印加される電圧の極性を反転することで DC モーターの方向を制御できる回路です。これは、「H」字型に配置された 4 つのスイッチ (通常はトランジスタ) で構成されます。スイッチのさまざまな組み合わせをオンにすることで、モーターをどちらの方向にも回転させることができます。
H ブリッジ回路の簡単な図を次に示します。
[簡単な H ブリッジ回路図をここに挿入]
スイッチ S1 と S4 が閉じると、電流がモーターに一方向に流れ、モーターが時計回りに回転します。スイッチ S2 と S3 が閉じると、モーターに逆方向に電流が流れ、モーターが反時計回りに回転します。
PWM信号の生成
モーターの速度を制御するには、PWM 信号を生成する必要があります。ほとんどのマイクロコントローラーには、これらの信号の生成に使用できる PWM モジュールが組み込まれています。 PWM 信号のデューティ サイクルを調整して、モーターに供給される平均電力、つまりモーターの速度を制御できます。
Arduino を使用して PWM 信号を生成する方法の例を次に示します。
// モーターに接続するピンを定義 const int motorPin = 9; void setup() { // モーターピンを出力として設定 pinMode(motorPin, OUTPUT); } void loop() { // デューティ サイクルを 50% に設定しますanalogWrite(motorPin, 127);遅延(1000); // デューティ サイクルを 70% に設定しますanalogWrite(motorPin, 180);遅延(1000); // デューティ サイクルを 30% に設定しますanalogWrite(motorPin, 76);遅延(1000); }
この例では、アナログ書き込み()関数は、PWM 信号のデューティ サイクルを設定するために使用されます。関数に渡される値の範囲は 0 (0% デューティ サイクル) ~ 255 (100% デューティ サイクル) です。
PWMで方向を制御する
PWM を使用してモーターの方向を制御するには、H ブリッジ回路を PWM 信号と組み合わせて使用する必要があります。 2 つの PWM 信号を使用して、H ブリッジの両側を制御できます。これらの信号のデューティ サイクルを調整することで、モーターの速度と方向を制御できます。
Arduino と H ブリッジを使用して DC モーターの方向を制御する方法の例を次に示します。
// H ブリッジに接続されているピンを定義します const int motorPin1 = 9; const int モーターピン 2 = 10; void setup() { // モーターピンを出力として設定 pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); } void loop() { // モーターを時計回りに 50% の速度で回転しますanalogWrite(motorPin1, 127);アナログ書き込み(モーターピン2, 0);遅延(2000); // モーターを反時計回りに 70% の速度で回転しますanalogWrite(motorPin1, 0);アナログ書き込み(モーターピン2, 180);遅延(2000); // モーターを停止analogWrite(motorPin1, 0);アナログ書き込み(モーターピン2, 0);遅延(2000); }
この例では、アナログ書き込み()関数は、2 つの PWM 信号のデューティ サイクルを設定するために使用されます。いつモーターピン1デューティサイクルがゼロではなく、モーターピン2デューティ サイクルがゼロの場合、モーターは時計回りに回転します。いつモーターピン2デューティサイクルがゼロではなく、モーターピン1デューティサイクルがゼロの場合、モーターは反時計回りに回転します。
当社のPWM製品
PWM サプライヤーとして、当社は DC モーターの制御に最適な高品質の PWM 製品を幅広く提供しています。私たちの30A PWM ソーラー充電コントローラー高電流容量を必要とするアプリケーションに最適です。バッテリーの充電電流の制御に使用できる PWM モジュールが内蔵されています。
より低い電流容量が必要な場合は、20A PWM ソーラー充電コントローラーそして10A PWM ソーラー充電コントローラーも優れたオプションです。コンパクトで効率的で使いやすいです。
結論
PWM を使用した DC モーターの方向の制御は、幅広いアプリケーションで使用できる強力で汎用性の高い技術です。 Hブリッジ回路を使用してPWM信号を生成することで、モーターの速度と方向を正確に制御できます。
当社の PWM 製品にご興味がある場合、または PWM を使用した DC モーターの制御についてご質問がある場合は、詳細についてお気軽にお問い合わせください。また、お客様の特定の要件についてもご相談いただけます。お客様のプロジェクトに最適なソリューションを見つけるお手伝いをいたします。
参考文献
- 「パルス幅変調 (PWM) の基礎」 - エレクトロニクス チュートリアル
- 「Hブリッジモータードライバー回路」 - 回路のすべて
- 「Arduino リファレンス -analogWrite()」 - Arduino ドキュメント
