Keyestudio Micro Bit DRV8833 Motor Driver Expansion Board
BBC micro:bit 用 2ch ブラシ付きDCモータードライバー拡張ボード
BBC micro:bit 用 2ch ブラシ付きDCモータードライバー拡張ボード
- keyestudio / Keyestudio Micro bit DRV8833 Motor Driver Expansion Board KS4033
- keyestudio / wiki / KS4033
- AMS1117
- Texas Instruments / モーター・ドライバ / ステッパ・モーター・ドライバ / DRV8833 電流レギュレーション機能搭載、10.8V、2A、デュアル H ブリッジ・モーター・ドライバ
公式の wiki のサンプルプログラムとそのコメントでは P1, P2 で AOUT1,2 BOUT1,2 の速度調整が出来そうな書きぶりだが、そのような効果は認められなかった。
ドライバー IC である DRV8833 のデータシートを当たってみたところ、AIN1, AIN2 や BIN1, BIN2 に直接 PWM 叩き込めとのこと。
Makecode の「入出力端子」のパーツに「アナログ出力 パルス周期を設定する端子[P1▼]周期(マイクロ秒) (20000)」を見つけたので、もしやと思いヘルプを確認してみると、まさに PWM 用の機能だった。
DRV8833 は 100kHz の PWM をサポートしてるらしいので、最小パルス幅は 10 μs だろうから、あとは量子化レベルに合わせてパルス周期を適当に決めてやれば良さそうな雰囲気。
とりあえず
fast decay の方は
一方、slow decay の方は
一応、speed をどちらか max まで増やした後、反転させると所望の動作を始めるのだが、どこでバグってるのか理解できずに悩み中。
まさか、まだDCモーターにノイズ対策用のコンデンサ実装してないので、ノイズで暴走してる可能性とかある?
ドライバー IC である DRV8833 のデータシートを当たってみたところ、AIN1, AIN2 や BIN1, BIN2 に直接 PWM 叩き込めとのこと。
Makecode の「入出力端子」のパーツに「アナログ出力 パルス周期を設定する端子[P1▼]周期(マイクロ秒) (20000)」を見つけたので、もしやと思いヘルプを確認してみると、まさに PWM 用の機能だった。
- Microsoft / MakeCode / Docs / リファレンス / 入出力端子 / Analog Set Period
DRV8833 は 100kHz の PWM をサポートしてるらしいので、最小パルス幅は 10 μs だろうから、あとは量子化レベルに合わせてパルス周期を適当に決めてやれば良さそうな雰囲気。
とりあえず
変数[PWM_period▼]を(1000)にする もし<(speed)[>▼](0)>なら 変数[forward▼]を(1)にする でなければ 変数[forward▼]を(0)にする もし<(speed)[<▼](0)>なら 変数[backward▼]を(1)にする でなければ 変数[backward▼]を(0)にするみたいにしておくと、
fast decay の方は
アナログで出力する端子[P13▼]値 (((speed)[×](forward))の絶対値) アナログ出力 パルス周期を設定する端子[P13▼]周期(マイクロ秒) (PWM_period) アナログで出力する端子[P12▼]値 (((speed)[×](backward))の絶対値) アナログ出力 パルス周期を設定する端子[P12▼]周期(マイクロ秒) (PWM_period)みたいな感じで無事 PWM 制御することができた。
一方、slow decay の方は
変数[forward_w▼]を(1023)にする 変数[backward_w▼]を(1023)にする もし<(0)[<▼](forward)>なら 変数[backward_w▼]を((1023)[-▼]((speed)の絶対値))にする もし<(0)[<▼](backward)>なら 変数[forward_w▼]を((1023)[-▼]((speed)の絶対値))にする アナログで出力する端子[P13▼]値 (forward_w) アナログ出力 パルス周期を設定する端子[P13▼]周期(マイクロ秒) (PWM_period) アナログで出力する端子[P12▼]値 (backward_w) アナログ出力 パルス周期を設定する端子[P12▼]周期(マイクロ秒) (PWM_period)みたいにしてみたところ、なぜか起動直後、0 から±1したところで全開運転になってしまう。
一応、speed をどちらか max まで増やした後、反転させると所望の動作を始めるのだが、どこでバグってるのか理解できずに悩み中。
まさか、まだDCモーターにノイズ対策用のコンデンサ実装してないので、ノイズで暴走してる可能性とかある?
タグ
コメントをかく