2024年11月7日
002-1.NXT ソフトウェア入門-第3回「モーター制御のプログラム」
レゴマインドストームNXTのプログラム開発環境「NXTソフトウェア」について紹介していくコーナーです。
今回はモーターの制御について紹介します(文/松原 拓也)。

モーターの動かし方については、まずNXTソフトウェアの「ヘルプ」をご覧ください。このヘルプはどんな本よりも丁寧に解説しています。
ヘルプと同じことを書いてもしかたないので、ここでは、実際に動かしてみた場合について紹介します。
◆ モーター制御のプログラム

では、実際にロボットを作ってみましょう。
写真は1個のモーターだけで動くロボットです。
これは五十川さんの「メカメカ入門」の第1回目に登場した
ロボットを参考に作ってみました。後輪はモーターに
直結しています。あと、パーツを間に合わせた都合で、
前輪がちょっと違ってます。

プログラムをしてみましょう。
「モーター」ブロックを置いてください。
右側にある「待つ(3秒)」ブロックは無くてもかまいません。

「モーター」ブロックを設定します。赤いワクで囲んだ部分が、
修正箇所です。待機時間を「603度」にしてみました。
これでロボットが30cm進むはずです
(タイヤの円周を17.9cmとした場合)。
パワーは「30」にしました。ロボットの動きを確認しやすく
させるためです。
以上でプログラムは完成です。
[DOWNLOAD]作成したプログラム(NXTソフトウェア用)
◆ モーター制御の実行

さっそく実行してみましょう。

実行中です。

プログラムどおり、30cm動いて止まりました。
パワーが「30」の場合、ゴールまでに3秒ほどかかりました。
ちなみに、パワーを標準の「75」にすると、あっというまに
ゴールしてしまいます。

「次の動作」という項目を「惰性運転」にセットしてみます。
一体、どうなるでしょうか。
[DOWNLOAD]作成したプログラム(NXTソフトウェア用)

30cmを少し飛び越した状態でロボットが止まりました。
モーターが急には止まらず、惰性で余分に回転したわけです。
もし、正確に動かしたい場合には「惰性運転」を使わない方が
よさそうです。
◆ パワーのコントロール

今度は板を傾けて、坂道を作ってみました。ゴールまでの距離は同じく30cmです。

突然ですが、モーターにおける「パワー」とは何でしょうか?
「パワー」というのは力(ちから)のことです。自転車に乗った場合、
坂道では平坦な道に比べてペダルを強くこぐと思います。
これをモーターに置き換えて考えてみましょう。

最初に作成したプログラムを実行してみました。
、、、なんと、ロボットの動きが遅くなり、ゴールまでに6秒も
かかってしまいました(前回は3秒)。
どうやら、坂道に必要な量に対して、パワーが足りなくなって
しまったようです。

そこで対策として、「コントロール」という項目のモーターパワーのチェックをオンにします。
[DOWNLOAD]作成したプログラム(NXTソフトウェア用)

実行してみると、ロボットは3秒で昇り終わりました。
坂の角度をいろいろと変化させても、ほぼ均一に3秒でゴールします。
これはどういうことかと言うと、 NXTインテリジェントブロックが「回転速度を一定に保とう」と制御(コントロール)を行っているからです。たとえば、坂道でモーターの回転が遅くなった場合には、マイコンが「パワーが足りない」と判断し電気の流す量を増やしているのです。
ちょっとややこしい話ですが、「モーターパワー」をオン(チェック状態)にすると「パワー」の項目は「速度」という意味になります(パワーはマイコンが決定します)。
逆に「モーターパワー」をオフ(空白)にすると「パワー」の項目は純粋に「モーターに流す電気の量」という意味になります。
なお、この「コントロール」機能は万能というわけではなく、電池やモーターの性能以上のパワーは出せません。
あと、回転量を計測してからパワーを決定しますので、一定時間以上モーターを回さないといけません。
さらにガクガクしたムラのある回転になってしまいます。
◆ おまけ

「移動」ブロックを使うと2つのモーターを均一に回すことが
できます。この機能を使うと、ロボットをまっすぐ走らせることができます。
当ブログの内容は、弊社製品の活用に関する参考情報として提供しております。
記載されている情報は、正確性や動作を保証するものではありません。皆さまの創意工夫やアイデアの一助となれば幸いです。