注釈
こんにちは、FacebookでのSunFounder Raspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Raspberry Pi、Arduino、ESP32についてもっと深く探求し、同じ興味を持つ人々と交流しましょう。
参加する理由
エキスパートサポート:コミュニティやチームからの支援を受けて、販売後の問題や技術的な課題を解決します。
学びと共有:スキルを高めるためのヒントやチュートリアルを交換します。
独占プレビュー:新製品の発表や先行公開に早期アクセスします。
特別割引:最新製品に対する独占割引を楽しみます。
祭りのプロモーションとギブアウェイ:ギブアウェイや祝祭のプロモーションに参加します。
👉 私たちと一緒に探索し、創造しませんか?[こちら]をクリックして今日から参加しましょう!
3.5 小型ファン(DCモーター)の制御
このレッスンでは、Raspberry Pi Pico 2と L293Dモータードライバー を使用して DCモーター (小型ファンのような)を制御する方法を学びます。L293Dを使えば、モーターの回転方向(時計回りと反時計回りの両方)を制御できます。DCモーターはPicoが直接提供できる電流よりも多くの電流を必要とするため、外部の電源を使用してモーターを安全に動かします。
必要なもの
このプロジェクトには、以下のコンポーネントが必要です。
全キットを購入する方が便利です。こちらがリンクです:
名前 |
このキットのアイテム |
リンク |
|---|---|---|
Newton Lab Kit |
450以上 |
以下のリンクから個別に購入することもできます。
SN |
コンポーネント |
数量 |
リンク |
|---|---|---|---|
1 |
1 |
||
2 |
Micro USBケーブル |
1 |
|
3 |
1 |
||
4 |
数本 |
||
5 |
1 |
||
6 |
1 |
||
7 |
1 |
||
8 |
9V電池 |
1 |
回路図

L293Dはモータードライバーチップで、ENはL293Dが動作するために5Vに接続されます。1Aと2AはそれぞれGP15とGP14に接続された入力で、1Yと2Yはモーターの両端に接続された出力です。
Y(出力)はA(入力)と位相が同じなので、GP15とGP14にそれぞれ異なるレベルが与えられた場合、モーターの回転方向を変更することができます。
配線図
この回路では、ボタンがRUNピンに接続されているのが見られます。これは、モーターが多くの電流を使用して動作するため、Picoがコンピュータから切断される可能性があり、ボタンを押す必要がある(Picoの RUN ピンが低レベルを受け取る)ためです。
DCモーターは高電流を必要とするため、安全性を考慮してここでは電源モジュールを使用してモーターに電力を供給します。
コードの書き方
注釈
ファイル
3.5_small_fan.inoをnewton-lab-kit/arduino/3.5_small_fanから開くことができます。またはこのコードを Arduino IDE にコピーしてください。
**Raspberry Pi Pico 2**ボードと正しいポートを選択し、「Upload」をクリックしてください。
const int IN1 = 15; // Input 1Aに接続されたGPIOピン
const int IN2 = 14; // Input 2Aに接続されたGPIOピン
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
}
void loop() {
// モーターを時計回りに回転
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
delay(2000); // 2秒間動作
// モーターを停止
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
delay(1000); // 1秒間停止
// モーターを反時計回りに回転
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
delay(2000); // 2秒間動作
// モーターを停止
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
delay(1000); // 1秒間停止
}
コードをアップロードした後:
モーターは一方向に2秒間回転します。
次に、1秒間停止します。
次に、反対方向に2秒間回転します。
このサイクルは無限に繰り返されます。
コードの理解
制御ピンの定義:
const int IN1 = 15; // Input 1Aに接続 const int IN2 = 14; // Input 2Aに接続
ピンモードの設定:
void setup() { pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); }
モーター方向の制御:
時計回りの回転:IN1をHIGHにし、IN2をLOWに設定することで、モーターが一方向に回転します。
digitalWrite(IN1, HIGH); digitalWrite(IN2, LOW);
反時計回りの回転:IN1をLOWにし、IN2をHIGHに設定することで、モーターが反対方向に回転します。
digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH);
モーターの停止:
両方の入力をLOWに設定し、モーターを停止します。
digitalWrite(IN1, LOW); digitalWrite(IN2, LOW);
さらなる探求
速度制御:
PWM対応のGPIOピンにEN1ピンを接続し、デューティサイクルを変化させることでモーターの速度を制御します。
複数モーターの制御:
L293Dは2つのモーターを制御できます。別のモーターを追加して独立して制御してみてください。
センサーの統合:
より高度なモーター制御システムを作るために、リミットスイッチやエンコーダーなどのセンサーを組み込みます。
安全上の注意
電源:
外部電源の電圧がモーターの定格電圧と一致することを確認してください。
Picoの3.3Vピンから直接モーターを駆動しないでください。
電流の引き出し:
モーターは特に起動時や停止時に大きな電流を引き出すことがあります。
電源がモーターの電流要件に対応できることを確認してください。
Picoのリセット:
場合によっては、モーターの電流引き出しが原因で電圧が低下し、Picoがリセットされたり、接続が切断されたりすることがあります。
モーターの実行後にコードのアップロードに問題が生じた場合は、RUNピンを瞬時にGNDに接続してPicoを手動でリセットできます。

結論
このレッスンでは、Raspberry Pi PicoとL293Dモータードライバーを使用してDCモーターを制御する方法を学びました。L293Dへの入力を制御することで、モーターの回転方向を変更できます。この基本的な概念は、ロボティクス、オートメーション、モーターを使用する多くのアプリケーションにおいて不可欠です。
