### プロジェクト 8: モーター駆動と速度制御
#### **(1)説明:**
モーターを駆動する方法は多数あります。このスマートカーでは、L298Pと呼ばれる最も一般的なソリューションを使用しています。STマイクロエレクトロニクス社製のL298Pは、高出力モーターを駆動するために特別に設計された優れた駆動チップです。DCモーター、2相および4相モーターを直接駆動でき、駆動電流は2Aに達します。また、モーターの出力端子には保護用として8個の高速ショットキーダイオードが採用されています。L298P回路をベースにした拡張ボードを設計しており、積層設計によりUNO R3ボードに直接差し込んで使用できるため、ユーザーがモーターを使用・駆動する際の技術的な難しさを軽減しています。
拡張ボードをボードに重ね、BATに電源を供給し、DIPスイッチをON端に切り替えると、外部電源から拡張ボードとUNO R3ボードに同時に電力が供給されます。配線を容易にするため、拡張ボードには逆接続防止インターフェース(PH2.0 -2P -3P -4P -5P)が装備されており、モーター、電源、センサー/モジュールを直接接続できます。ドライブ拡張ボードのBluetoothインターフェースは、Keyestudio HM-10 Bluetoothモジュールと完全に互換性があります。したがって、接続時にHM-10 Bluetoothモジュールを対応するインターフェースに挿入するだけで済みます。同時に、ドライブ拡張ボードは2.54ピンヘッダーを使用して、使用可能なデジタルポートとアナログポートを一部拡張しており、他のセンサーを追加して拡張実験を続けることができます。
拡張ボードには4つのDCモーターを接続できます。デフォルトのジャンパーキャップ接続モードでは、AとA1、BとB1インターフェースのモーターが並列接続され、動作パターンは同じになります。8個のジャンパーキャップを使用して、4つのモーターインターフェースの回転方向を制御できます。例えば、モーターAインターフェース前の2つのジャンパーキャップを水平接続から垂直接続に変更すると、モーターAの回転方向は元の方向と反対になります。


#### **(2)パラメーター:**
- ロジック部入力電圧: DC 5V
- 駆動部入力電圧: DC 7-12V
- ロジック部動作電流: ≤36mA
- 駆動部動作電流: ≤ 2A
- 最大消費電力: 25W (T=75℃)
- 制御信号入力レベル:
ハイレベル: 2.3V ≤ Vin ≤ 5V
ローレベル: 0V ≤ Vin ≤ 1.5V
- 動作温度: -25℃~+130℃
#### **(3)ロボットを動かす:**
Aモーターの方向ピンはD2、速度制御ピンはD5です。Bモーターの方向ピンはD4、速度制御ピンはD6です。
以下の表から、デジタルポートとPWMポートを通じて2つのモーターの回転を制御することで、ロボットの動きを制御する方法がわかります。PWM値の範囲は0〜255で、値が大きいほどモーターの回転が速くなります。
| 機能 | D4 | D6(PWM) | モーター(左)B | D2 | D5(PWM) | モーター(右)A |
| :------: | :--: | :-------: | :-------------: | :--: | :-------: | :-------------: |
| 前進 | HIGH | 0 | 左回転 | HIGH | 0 | 左回転 |
| 後退 | LOW | 255 | 右回転 | LOW | 255 | 右回転 |
| 左折 | LOW | 255 | 右回転 | HIGH | 100 | 左回転 |
| 右折 | HIGH | 100 | 左回転 | LOW | 255 | 右回転 |
| 停止 | LOW | 0 | 停止 | LOW | 0 | 停止 |
#### **(4)接続図:**

注意:
4ピンコネクターにはA、A1、B1、Bの表記があります。右後方のモーターは8833ボードのBに接続し、左前方のモーターはAポートに接続します。
#### **(5)テストコード:**
以下のようにブロックをドラッグしてコードを編集することもできます。
(1)
(2)
(3)
(4)
**完全なテストコード**
(**注意:** コードをアップロードする前にBluetoothモジュールを接続しないでください。コードのアップロードにもシリアル通信を使用するため、Bluetoothシリアル通信と競合が発生し、アップロードが失敗する可能性があります。)

#### **(6)テスト結果:**
図に従って配線し、テストコードをアップロードして電源を入れます。

スマートカーは前進2秒、後退2秒、左折2秒、右折2秒、停止2秒の動作を行います。