モーターアクセルバレルをつくる 〜 ボトルマンでプログラミング Vol.2 〜

プログラミングによるボトルマン強化。第二弾はキャップをモーターで加速して打ち出す『モーターアクセルバレル』です。

開発経緯

前作『レーザーサイトバレル』は『狙い』をコントロールするアイテムだったので、今度は『弾(キャップ)』をコントロールできないかなと考えました。スピードとか、スピンの掛け方等々。それで、ピッチングマシーンの要領で弾を打ち出すプロトタイプを最初に作って色々試してみたのですが、正直あんまり差がなく、打ち出し方を微調整したところであんまり面白くないなという結論になりました。そこで、割り切って『とにかく高速で弾を打ち出す』という方針を立てて、『モーターアクセルバレル』を作ることにしました。

特徴

前作『レーザーサイトバレル』同様、ボトルマンの前面に取り付ける、バレルタイプのアイテムです。にしても巨大。

前が見えませぬ。

 

DXコアキャップに取り付けたボタンを押すと、バレル内の2個のタイヤがモーターで高速回転。この状態でボトルマンから弾(キャップ)を発射すると、キャップがタイヤの隙間に挟まり、タイヤの回転によって高速に打ち出されます。シンプル。もう一度ボタンを押すとタイヤが停止します。

『レーザーサイトバレル』同様、弾道補正用のバレルを継ぎ足しできるようにしています。さらに、上部にボトルキャップを取り付けられるようにしてあるので…

『DXコアキャップ』と『レーザーサイトバレル』を追加することで、高精度で狙いをつけつつ高速で弾を打ち出す究極兵器が誕生します。昔懐かしい戦隊・ロボットアニメのような合体形態です。漢のロマン。

検証

機能紹介したところで、どれほどの成果が得られたのかを検証してみたいと思います。

開発時点で公式のパワー最強機体はおそらく『コーラマル・エナジーDX』ですので、この機体の弾速を超えることを目標としたいと思います。

以下、計測のルールです。

  • 以下の機体・セッティングの弾速を評価する:
    • ライフルガーディワンDX(ショートバレル装備)
    • コーラマルDX(通常打ち)
    • コーラマルDX(締め打ち)
    • コーラマル・エナジーDX
    • ライフルガーディワンDX(モーターアクセルバレル装備)
  • 10発分計測し、最大値、最小値、平均値、標準偏差を算出する
  • 計測ポイントは、各機体・セッティングの射出口とする

計測には『BeeSpi V』を使用します。

過去に玩具としての販売は終了になりつつ、計測器としての価値が見出され、今も細々と販売が継続されているスゴいヤツです。

 

以下、結果だけ載せますが、計測風景については動画の方で確認できますので、必要な方はご参照くださいませ。なお、単位は全て『km/h』になります。

①ライフルガーディワンDX

今回の計測のベース機です。まず基準値として、ガーディワンのデフォルトセッティングであるショートバレル装着状態での速度を計測します。

15.96
15.50
15.53
15.13
15.25
15.48
15.60
15.49
15.65
15.69
最大値 15.96
最小値 15.13
平均値 15.53
標準偏差 0.22

平均時速15.53km。これを基準におけば、パワータイプと呼ばれるコーラマル(エナジー)やモーターアクセルバレルの性能を定量的に評価できます。

②コーラマルDX

続いて、初代パワータイプのコーラマルDXです。『エナジー』の出現でパワー最強の座は譲りましたが、それでも充分強い部類です。まずは通常打ちでの結果です。

18.63
18.23
18.42
18.62
18.66
18.96
18.28
18.52
18.26
18.23
最大値 18.96
最小値 18.23
平均値 18.48
標準偏差 0.23

やはり通常打ちでガーディワンより充分速いです。なお、コーラマルDXは締め打ちによって明確に弾速が上がるので、こちらも計測してみます。

21.36
21.40
21.23
20.73
21.24
21.60
21.63
21.12
20.12
20.31
最大値 21.63
最小値 20.12
平均値 21.07
標準偏差 0.49

締め方に多少バラツキがあるので弾速もバラツキがちですが、平均2.6km/hぐらい速くなりました。

③コーラマル・エナジーDX

対戦相手の本命、コーラマル・エナジーDXです。強力スプリング搭載でホールドパーツの開きが抑えられるため、特に締め打ちをしなくても充分に速い弾が打てます。

27.32
27.28
28.67
27.00
28.50
27.77
28.34
28.86
27.15
26.89
最大値 28.86
最小値 26.89
平均値 27.78
標準偏差 0.71

さすがの性能です。コーラマルDXの締め打ちを余裕で凌いでいます。

ちなみに、締め打ちでも計測はしてみたのですが、あまり変わりませんでした。私が締め打ちが下手なだけかもしれませんが。

④ライフルガーディワンDX+モーターアクセルバレル

最後に、モーターアクセルバレルです。結果やいかに。

32.96
34.14
34.77
35.55
36.60
30.98
30.26
30.08
30.33
29.90
最大値 36.60
最小値 29.90
平均値 32.56
標準偏差 2.42

無事に目標であるコーラマル・エナジーDXを超えることができました。良かった良かった。

 

ちなみに、モーターアクセルバレル+レーザーサイトバレルにすると、こうなります。

バレルが長くなる分、多少速度は落ちていますが、それでも「狙いが正確なコーラマル・エナジーDX」と考えれば充分脅威です。

 

さて、性能も確かめられたところで、以下から解説に入りますか、ここで注意事項です。上の結果を見て頂いてわかるように、軽いペットボトルキャップとはいえ、時速30km程度で打ち出すようなシロモノです。本記事を参考に同様のものを作成し、何かしら怪我やモノの破損が起こったとしても、こちらでは一切責任は取れませんので、予めご了承ください。

ハードウェア解説

バレルの設計はこんな感じです。

良い感じに弾を打ち出せるようにタイヤ間隔を微調整するのが大変でした。あと大きいので、3Dプリントするのに非常に時間がかかりました。

タイヤはミニ四駆の改造パーツを使っていますが、ミニ四駆は全然詳しくないので、近所のオモチャ屋さんで適当にあったものを買ってきました。

モーターはタイヤに直結するかたちで、2個使用しています。やはりミニ四駆は詳しくないのですが、キャップを打ち出すためには回転数よりトルクが強い方が良いのかなあと思って、トルクチューンモーターを使用しました。

電源には単四電池を3本使用しています。これで2個のモーターを動かすため、スイッチサイエンス製の『モータードライバ』を2個使用しています。

モータードライバを扱うのはほぼ初めてでよくわからず、上記を2個使う形になりましたが、2個のモーターを扱うためのデュアルモータードライバもたくさんあるので、素直にそれを使っても良いと思います。

回路図はこんな感じです。

実際の配線はこんな感じです。

なお、モーターは回転の向きとか種類そのものを簡単に変えられるように、コネクタで接続するようにしました。

ソフトウェア解説

今回もマイコンにはRP2040を採用しているので、プログラムはMicroPythonで記述しています。今回も短いので、ここで全文掲載してしまいます。

##########################################################################################################
"""
参考:
https://wiki.seeedstudio.com/XIAO-RP2040/
https://wiki.seeedstudio.com/XIAO-RP2040-with-MicroPython/

利用可能なPIN
               USB
26 ... A0/D0         SV(VBUS)
27 ... A1/D1         GND
28 ... A2/D2         3V3
29 ... A3/D3         3 ... MOSI/D10
 6 ... SDA/D4        4 ... MISO/D9
 7 ... SCL/D5        2 ... SCK/D8
 0 ... TX/D6         1 ... RX/CSn/D7

以下は割り当て済み;
11 ... NeoPixel (Power 0: OFF, 1: ON)
12 ... NeoPixel (Control)
16 ... 三色LED-G ( 0: 0N, 1: OFF)
17 ... 三色LED-R ( 0: 0N, 1: OFF)
25 ... 三色LED-B ( 0: 0N, 1: OFF)
"""
import utime
from machine import Pin, PWM
from neopixel import NeoPixel

LED_ON_BOARD_ON  = 0
LED_ON_BOARD_OFF = 1

PIN_LED_G = Pin(16, Pin.OUT)
PIN_LED_R = Pin(17, Pin.OUT)
PIN_LED_B = Pin(25, Pin.OUT)
PIN_NP_ON_BOARD_POWER = Pin(11, Pin.OUT)
PIN_NP_ON_BOARD_COLOR = Pin(12, Pin.OUT)

np_on_board = NeoPixel(PIN_NP_ON_BOARD_COLOR, 1)

##########################################################################################################

PIN_SW_MOTOR =  Pin(1, Pin.IN, Pin.PULL_UP)
PIN_MOTOR_R  =  PWM(Pin(3, Pin.OUT))
PIN_MOTOR_L  =  PWM(Pin(4, Pin.OUT))

PWM_FREQ = 1000
PWM_DUTY_MAX = 65536
PWM_DUTY = (PWM_DUTY_MAX // 100) * 100 # %

MOTOR_CONTROL_INTERVAL_MS = 500

SW_ON  = 0 # LOW
SW_OFF = 1 # HIGH

LED_ON  = 1
LED_OFF = 0

sw_motor = prev_sw_motor = SW_OFF

is_power_on = False

def control_motor(duty):
    PIN_MOTOR_R.duty_u16(duty)
    utime.sleep_ms(MOTOR_CONTROL_INTERVAL_MS)
    PIN_MOTOR_L.duty_u16(duty)

##########################################################################################################

# 基板上のRGB LEDを無効化
PIN_LED_R.value(LED_ON_BOARD_OFF)
PIN_LED_G.value(LED_ON_BOARD_OFF)
PIN_LED_B.value(LED_ON_BOARD_OFF)
# 基板上のNeoPixelの有効化
PIN_NP_ON_BOARD_POWER.value(1)

utime.sleep_ms(200)

np_on_board[0] = (0,128,0)
np_on_board.write()

PIN_MOTOR_R.freq(PWM_FREQ)
PIN_MOTOR_L.freq(PWM_FREQ)
control_motor(0)

while True:
    sw_motor = PIN_SW_MOTOR.value()

    if prev_sw_motor == SW_OFF and sw_motor == SW_ON:
        is_power_on = not is_power_on
        if  is_power_on:
            control_motor(PWM_DUTY)
        else:
            control_motor(0)

    prev_sw_motor  = sw_motor

    utime.sleep_ms(10)

ポイントは、2個のモーターを同時にONするのではなく、少しディレイを入れて順次ONにしているところです。ディレイを置かないと、2個のモーターに同時に大電流を流そうとしてしまい、供給不足になって上手く回ってくれませんでした。

おまけ

開発経緯のところでも触れていますが、今回もレーザーサイトバレルと同様、プロトタイプが存在します。それがコチラ。

デカい。要塞か。

モーターを使った工作はこれまであんまりしたことがなかったので、とりあえずRaspberry Pi Pico専用のモータードライバ基板と単四電池を4本も搭載してしまった結果、そもそものベースが大きくなってしまいました。さらに、2個のタイヤの回転を個別にON/OFF、出力調整もできるよう、スイッチ付きのアナログボリュームを搭載しているため、サイズがマシマシになっています。

これで実際試し打ちしてみてわかったことは、

  • タイヤを片方だけ回して打つと、スピンはかかるが弾速は遅い
  • わざわざタイヤの回転数を落とすようなユースケースはあまりない
  • 弾がバレルの内壁に接触してスピードが落ちている気がする

ということでした。この反省を踏まえ、機能を高速での弾の打ち出しに絞り込み、サイズを全体的に小型化する方針で作り直し、今の形に落ち着きました。

まとめ

以上、『モーターアクセルバレル』のご紹介でした。こういう駆動系の作品はこれまであまり作ったことがなく、かなり試行錯誤しましたが、最終的には良くできたかなと思っています。

ちなみに、今回使用したモーターよりもトルク・回転数共に強いモーターが存在することは承知していて、それを使えばもっと弾速を上げられる可能性はあります。ただ、強いモーターはそれだけ必要な電流が大きく、モータードライバもそれに併せて強力なものが必要となり、価格やサイズ、安全性の問題を考慮していく必要があるので、扱いやすさも考えて、今回はこれで一つの完成形としました。が、弾速を極めようと思ったらまだまだ改善の余地が残されているということなので、それはまた気が向いたら取り組もうかなと思います。

改造作品をたくさん作れるように、DXコアキャップを中心としたシステムにしてみたのですが、実は現状、まだこの2作品しかありません。オマケみたいなアイデアはなくはないので、まだ作れるものはありますが、それまで作っているといつまで経っても公開できないので、一旦ここまで作ったところで公開してみました。良くも悪くも、今のところ『仮面ライダーギーツ』絡みの作品を作る予定がないので、時間ができたタイミングでちょこちょこ作っていこうかなと思います。