Raspberry Pi Pico(ラズパイPico)でドローン用のブラシレスモーターを制御してみました。全部を自作するとなるとハード・ソフトともに結構大変なので、PicoからESC(アンプ)を経由してモーター制御を行います。Picoの開発環境はArduinoIDE前提です。
少し無理やりですがブレッドボードで準備してます。Picoで可変抵抗器(ポテンションメーター)のボリューム値を読み取って、モーター回転速度を制御します。
簡単にPicoの制御内容(ソース)を説明。(ArduinoIDE使用しているので記述はArduino言語です)
▼可変抵抗器の読み取り部分からです▼
raw += (analogRead(26) - raw) * 0.1;
PicoのGP26(ADC0)ピンからanalogRead
で読み取ってます。摺動部の影響で結構なノイズが乗るため、取得値を少し平滑化をしてます。相対的な値が読めればいいため、電圧値に変換はせずに、生値(ビット値)をそのまま使用してます。
▼ブラシレスモーター制御部分▼
digitalWrite(0, HIGH); ESCLoopTimer = micros(); ESC1_timer = raw + ESCLoopTimer; while (digitalRead(0) > 0) { ESCLoopTimer = micros(); if (ESC1_timer <= ESCLoopTimer)digitalWrite(0, LOW); }
モーター制御するためのPWM波形(信号)をループの中で生成してます。出力ピンはGP0。可変抵抗の値でHIGH時間を設定。単純に時間を関してHIGHからLOWへ変えてるだけです。
▼動かしてみました▼
ティッシュ着けて回転します。静止画なので分り難いですね。低速域は回転速度の可変が体感できるのですが中~高速域になってくると速度変化が体感では分り難いですね。可変抵抗器の特性のせいかもしれません。
コメント