注釈

こんにちは、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以上

Newton Lab Kit

以下のリンクから個別に購入することもできます。

SN

コンポーネント

数量

リンク

1

Raspberry Pi Pico 2

1

購入

2

Micro USBケーブル

1

3

ブレッドボード

1

購入

4

ジャンパーワイヤー

数本

購入

5

IC L293D

1

6

DCモーター

1

購入

7

電源モジュール

1

8

9V電池

1

回路図

sch_motor

L293Dはモータードライバーチップで、ENはL293Dが動作するために5Vに接続されます。1Aと2AはそれぞれGP15とGP14に接続された入力で、1Yと2Yはモーターの両端に接続された出力です。

Y(出力)はA(入力)と位相が同じなので、GP15とGP14にそれぞれ異なるレベルが与えられた場合、モーターの回転方向を変更することができます。

配線図

wiring_motor

この回路では、ボタンがRUNピンに接続されているのが見られます。これは、モーターが多くの電流を使用して動作するため、Picoがコンピュータから切断される可能性があり、ボタンを押す必要がある(Picoの RUN ピンが低レベルを受け取る)ためです。

DCモーターは高電流を必要とするため、安全性を考慮してここでは電源モジュールを使用してモーターに電力を供給します。

コードの書き方

注釈

  • ファイル 3.5_small_fan.inonewton-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秒間回転します。

  • このサイクルは無限に繰り返されます。

コードの理解

  1. 制御ピンの定義:

    const int IN1 = 15; // Input 1Aに接続
    const int IN2 = 14; // Input 2Aに接続
    
  2. ピンモードの設定:

    void setup() {
      pinMode(IN1, OUTPUT);
      pinMode(IN2, OUTPUT);
    }
    
  3. モーター方向の制御:

    • 時計回りの回転:IN1をHIGHにし、IN2をLOWに設定することで、モーターが一方向に回転します。

    digitalWrite(IN1, HIGH);
    digitalWrite(IN2, LOW);
    
    • 反時計回りの回転:IN1をLOWにし、IN2をHIGHに設定することで、モーターが反対方向に回転します。

    digitalWrite(IN1, LOW);
    digitalWrite(IN2, HIGH);
    
  4. モーターの停止:

    両方の入力をLOWに設定し、モーターを停止します。

    digitalWrite(IN1, LOW);
    digitalWrite(IN2, LOW);
    

さらなる探求

  • 速度制御:

    PWM対応のGPIOピンにEN1ピンを接続し、デューティサイクルを変化させることでモーターの速度を制御します。

  • 複数モーターの制御:

    L293Dは2つのモーターを制御できます。別のモーターを追加して独立して制御してみてください。

  • センサーの統合:

    より高度なモーター制御システムを作るために、リミットスイッチやエンコーダーなどのセンサーを組み込みます。

安全上の注意

  • 電源:

    • 外部電源の電圧がモーターの定格電圧と一致することを確認してください。

    • Picoの3.3Vピンから直接モーターを駆動しないでください。

  • 電流の引き出し:

    • モーターは特に起動時や停止時に大きな電流を引き出すことがあります。

    • 電源がモーターの電流要件に対応できることを確認してください。

  • Picoのリセット:

    • 場合によっては、モーターの電流引き出しが原因で電圧が低下し、Picoがリセットされたり、接続が切断されたりすることがあります。

    • モーターの実行後にコードのアップロードに問題が生じた場合は、RUNピンを瞬時にGNDに接続してPicoを手動でリセットできます。

    wiring_run_reset

結論

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