2024年4月19日
━━目次(ジャンプリスト)━━
1. ビットパック・ミニカーとは
■bitPak:Minicarの組立方法を紹介した動画 / 2019/11/16
■仕様
micro:bit使用ピン番号
P0 :回転サーボモーターを接続(CCWで前進)
P8 :回転サーボモーターを接続(CWで前進)
角度 0~89 のとき:時計回り(CW;0に近いほど速い)
角度 90 のとき:停止します
角度 91~180 のとき:反時計回りに回転(CCW;180に近いほど速い)
P1 :予備IO
P2 :予備IO
2. 回転サーボモーターとは
■主要部品
回転サーボモーターFS90R
(サーボホーンセット付き:ミニカーへの応用では使わない)
https://learn.switch-education.com/microbit-md-tutorial/10-servo.html
・回転サーボモーター
360°連続回転可能なサーボです。ギヤードモーターとして使うことができます。
500円@秋月通商
仕様
・電源電圧min.:4.8V
・電源電圧max.:6V
・スピードmax.:130rpm
・トルクmax.[kgf・cm]:1.5kgf・cm
・無限回転:可能
・制御信号:PWMキャリア周波数=50Hz, 0度=500us, 90度=1.5ms, 180度=2.5ms
制御コマンド
・90度:停止(*)
(*)停止しない場合には本体の可変抵抗器を再度調整。停止コマンドを発行するプログラムを動作させた状態でサーボを外し、小型ドライバーで左右に回し、停止させる。停止範囲は広く無いので慎重に行う。温度依存性があるようなので気温の変化する時期には再調整が必要となるようだ。
・0度:CW最高速度、
・180度:CCW最高速度。
・CW(when 1500~700 µsec)90度~18度
・CCW(when 1500~2300 µsec)90度~162度
・外形寸法
・長辺:22.5mm
・短辺:12.1mm
・高さ:27.7mm
3. 制御信号の生成
この回転サーボへの動作指令は、MS MakeCodeのblock「サーボ出力する端子P0角度180度」を用いて生成することができるようだ。
■MS MakeCodeで生成されて端子P0から出力される信号の波形
この関数は、ブロック表現のプログラムに示したように、最初に一度実行すると、P0から信号が出力され続けていると言う特徴がある。
P0端子から出力された信号の波形をオシロスコープで観測する。この関数は、PWM(pulse width moduration)信号を出力している。この信号のキャリア周波数は50Hz、周期は20msである。
出力角度が0度と180度の時の波形を比較すると、周期は20msと同じであるが、パルス幅は、0度のとき0.5ms、180度のとき2.5msというように、角度に比例してパルス幅が増えていて、これがPWM信号と呼ばれる所以である。
このパルス幅y[s]と角度[度]の関係式は、
ラジコン業界のデファクトスタンダードなのか、MS MakeCodeのblock「サーボ出力する端子P0角度180度」もこれに従っているので問題無く使える。
ただし、連続的ではなく、周期20msを1024分割した1.953E-05s刻みの階段状(下図の青線)の値をとる。
例えば、1024段階の128段階に位置する2.5ms(180度)は正確だが、0.5ms(0度)は、1つ下の段0.488msとなる。
━━ちょっと脇道だが━━
■デジタル出力ポートを用いて、「サーボ関数」と同様な信号が出せるか試してみよう。
「デジタル出力」を1、「一時停止関数」を0ms(最小値)とし、次に「デジタル出力」を0、最小の停止時間0msとしたうえ、その全体を「ずっと関数」で継続したときの波形である。「サーボ関数」のような50HzのPWM信号を作ることはできないことがわかった。
また、この観測によって、「一時停止関数」と「ずっと関数」の作動時間がそれぞれ、4ms、20ms程度であることがわかった。
4. サンプル・プログラム
スイッチサイエンス社で公開しているサンプル・プログラムは以下のとおり。
■ラジコンカーのプログラム例
bitPak:Minicarでラジコン(車側)
https://makecode.microbit.org/S20530-97245-18768-90724
bitPak:Minicarでラジコン(コントローラー側)
https://makecode.microbit.org/S69684-77434-37510-38606
0度(最高速)と90度(停止)の2通りの値だけでミニカーを走らせている。
(=オン・オフ2値制御)
■課題の設定
ジョイスティックとは、下図のようなもので、レバーの倒れ角でものを制御するものであるが、マイクロビットに簡単に取り付けて使えるものとして、スイッチサイエンスの企画したものを採用する。レバーはなく、黒いボタンが横ずれするようなものになっている。
5. ジョイスティック・コントローラー
スイッチサイエンスの企画したジョイスティックには、レバーではなく、黒いボタンが横ずれするようなものになっている。それが、左右に配置されている。それぞれが上下左右にスライド操作が可能である。
■仕様(ここで使うmicro:bitのピン)
以下に特性を示す。ボタンの横ずらし操作であるが、ここでは「レバー角度」と記している。
量子化の様子を図示している。実際には0度前後で細かな操作はできない。
■ジョイスティックコントローラーの読み取りプログラム
Joy-Tx-number-dsp / 2024年4月21日澤田昌宏
https://makecode.microbit.org/S50134-14202-97660-11293
このプログラムは、左右のジョイスティックの縦方向の操作量を読み込み表示する。仕様では、0~1023とされているが、実測する必要がある。
6. 送信機のプログラム
■ジョイスティックコントローラーの送信側プログラム
Joy-Tx-Min-R2 / 2024年4月21日澤田昌宏
https://makecode.microbit.org/S42380-40602-03918-98383
左右のジョイスティックの(縦方向)指示値を読み込み、送信する。ジョイスティック出力仕様は、0~1023。観測では、0~1018、中立点の値は、490~530であった。中立点で停車するには、受信側に不感帯を設ける必要がある。
7. 受信機のプログラム
■ビットパックミニカー自動車側の受信プログラム
Joy-Rx-Mini-R2 / 2024年4月21日澤田昌宏
https://makecode.microbit.org/S53300-37324-98033-42023
受信されたジョイスティック値に応じて、サーボモジュールへ指令値を出力する。
ただし、ジョイスティックの中立値に変動があるので、不感帯(6度)を設ける。上記計算値が、90度±6度の範囲では、指令値としては90度を与える。
サーボモーターの回転数に左右の差がある場合は、この角度計算の際に使う量子化数の項に調整代を加えると良いだろう。
8. 加速度計*で操縦
[ *加速度計の説明はこちらを参照してください ]
加速度Y軸を計測して数値を表示するプログラムを実行して、その値を観測する。
▲加速度Y軸(正立:+1023)
▲加速度Y軸(水平:0)
▲加速度Y軸(倒立:-1023)
このような静止画では、LEDマトリックスのダイナミック点灯表示される数値を読み取ることができない。倒立-1023、水平0、正立1023(公称値)。これをグラフで現わすと下図のようになる。
▲加速度Y軸信号 vs X軸周り回転角
スイッチサイエンス社の公開しているサンプルプログラム
コントローラー側
車側
このようなon/off制御から、アナログ的な多段階の制御としたい。なかなか考えにくいので、例えば、加速度xyを左右のサーボへ割付たらどうだろう。(下図)
やってみると、操作し難いが、一応、操作可能であった。
9. 制御器を切り替える
スイッチサイエンス社の企画したビットパックミニカーを題材に、その概要と2通りの制御器の作り方を検討してきた。そこで、それらを統合して、切り替えて利用できるようにしたプログラムを制作してまとめとする。
自動車側のプログラム
Rx-Acc&Joy-mini #2
https://makecode.microbit.org/S51776-05309-39263-09272
コントローラー側プログラム
Tx-Acc&Joy-mini
https://makecode.microbit.org/S63695-58027-65821-84195
■制御器の切り替え方
プッシュボタンスイッチBを押しながら電源をonにしたときに、ジョイスティックコントローラーモードとなる。そうではないときには、加速度計により操作するものとなる。無意識に基板が傾いたために走り出すことのないように、プッシュボタンスイッチAを押しているときだけ動くようにした。
こちらは、左右のサーボを左右のジョイスティックへ割り当ててある
こちらは、P0(左側サーボ)に加速度計X軸を割り当て、P8(右側サーボ)に加速度計Y軸を割り当ててある。斜め右上を下方へ傾けると前進する。後退はその逆方向を下げる。それと直交する方向の傾斜で方向も選べるが、操作性は低い。
…ゲームとしては楽しめるかな?
━━━この項の記述はこれでおしまいです━━━
あなたもジンドゥーで無料ホームページを。 無料新規登録は https://jp.jimdo.com から