電子標的

スリングショット用の電子標的の製作


2018-08-22

コピー用紙に7.4mmの鋼球を打ち込んだもの。これを10m先に置くとどこに当たったのか全く見えない。弾が丸く速度が遅いので破れるだけ。紙の繊維が長く丈夫であるのもきれいに穴が開かない原因。射撃用の的は繊維の短い脆い紙で作られている。スリングショット用なら3mm程度の分解能があれば十分。的が小さいエアライフルの電子標的は0.1mmの分解能があるはず。10点は0.5mmしかない

R0038832.jpg

実験回路。赤外線LEDと赤外線フォトダイオードを対向させて配置したシンプルな構成。黄色矢印がLED,水色がセンサー。センサーとLEDは距離が離れているのでオペアンプで増幅している。これを100組程度配置して弾丸の通過点を割り出す。エアライフルのように的が小さい場合は光源を1つにして幾何学的に精度を上げる必要がある。X軸Y軸2組必要なのでセンサーは200個になる。センサーとLEDが接近配置されるので相互干渉しないように遮光が必要。うまくいかなければ音響式にする。音響式は的の4隅にマイクを配置し弾丸が当たった時の音の時間差から三角測量で位置を割り出す。マイクは3つで足りるが4つにして精度を上げる。的に大きな穴が開いてしまうと使えない欠点があるがセンサーの数が少なくて済むので安上がりになる。スリングショットなら帆布のような丈夫な布を使えば長持ちする的を作ることはできる。光学式も音響式も実際の射撃競技で使われている

R0038843.jpg

鋼球をスリングショットで至近距離から打ち込んだ時の実験回路の波形。オペアンプでセンサーの交流成分だけを増幅している。増幅率が大きいので電源電圧の5Vで波形はクリップしている。弾の速度はセンサーの反応速度と比べると非常に遅い。音速の2倍で飛ぶライフル弾も電子回路の動作速度から見ると非常にゆっくり移動しているように見える

R0038841.jpg

弾がかするとこんな波形

R0038839.jpg

2018-08-23

直径5mmのセンサーを互いに干渉しないように配置するとこんな感じ。弾が赤矢印のように水平に飛んでくれば問題ないが青矢印のように入射角があると計測誤差になる。これは弾速の影響を大きく受けるので弾速計を先に作ることにする。平行光線ではなく的の中心付近で交差するレイアウトにすれば精度が必要になる的の中心部付近では弾の入射角を無視できるようになるが工作がやりにくくなる

sensorlayout.png

2018-09-11

センサーの配置は センサー<->遮光版<-標的->遮光版<->赤外LED となる。センサーと遮光版の距離近すぎても遠すぎても本来対になるセンサーと赤外線LED以外の組み合わせが出来てしまう。LEDやセンサーの半減角、輝度、感度、サイズ(5mm/3mm)、遮光版穴サイズの最適解を出すのは難しい

R0039064.jpg

変速的な配置での検討。いろいろ考えたが先ずセンサーとLED特性の現物調査をやらないとダメという結論。センサーとLEDを注文したので到着待ち

R0039065.jpg

2018-09-12

幾何学的にはこれで相互干渉しなくなる。分解能は2mm。黒丸がセンサー、赤丸がLED。センサーとLEDを片側にまとめて配置すると互いの距離が近く干渉しやすくなるのでLED、センサー混在。φ27は光源側の遮光版を通過したLEDの光束。受光側に到達するまでに直径27mmに広がる。実際は中心部が明るく周辺部は暗い。茶色いハッチングはその光が受光側の遮光版を通過した後の光束。この光束がセンサーに入ると誤作動の原因になる

R0039068.jpg

2018-09-13

LED半減角の基礎実験。中国製データシート無し。センサー、LED共にφ3mm

R0039076.jpg

このレベルは水平でゼロ表示になるので90-65.9=24.1度が光束の広がりの半分の角度。半減角の2倍程度に光束は広がっているので半減角推測値は24度

R0039082.jpg

長さ13mmの熱収縮チューブを被せた。当たり前だが光束は絞られる。90-76.8=13.2度

R0039085.jpg

OSIR5113A。5mmLED。秋月電子で販売。半減角はデータシート上15度。90-76.1=13.9度に光束が広がっている。ほぼデータシート通り

R0039089.jpg

2018-09-14

遮光板はセンサー<->LED間に4枚入れないと干渉を防げない。作図は鍋CADのスクリプトをエクセルで生成した。水色の丸は1つのLEDが遮光板を通過し受光板を照らした物。4枚ある遮光板をそれぞれ単独で使用した時の物で丸の大きさも4種ある。4種の領域が重なったところにセンサーの黒〇がある箇所を弾丸が通過するとセンサーが反応する。中心線を書いた一か所以外にそれがあってはならない

kansyo.png

2018-09-15

100x100mm基板。4回路入りのオペアンプを2個レイアウトした。全部で6個は入りそうもない。隙間に2個入りタイプを埋め込むように変更する。このサイズにこだわるのは製造費用が圧倒的に安いから。1mmでも大きくなると高くなる。上下反転して向かい合わせにして使う。300x300mmの標的に6組必要。部品代は装置の枠などを含め2万円を少し超えると思う

R0039100.jpg

2018-09-20

音響式の座標計算式。的に弾が当たった音を最初に検知したのが左下のマイク。そのマイクからどれだけ遅れて音を検知したのかがA,B,C。音の伝わる速度を一定とすると時間は距離にそのまま置き換えられる。マイクの位置と標的面に奥行方向のずれがあると式はもっと複雑になる。音速も気温で大きく変化するので温度センサーも必要。音速を340m/sとすると64MHzクロックのPICで0.02mm/命令。高精度に計算するなら割り込み処理の中にif文を入れる時間的余裕は無い。音響式を自作している人 マイク->オペアンプ->時間差記録用MPU->Arduinoの形式だと思う(追記:回路が簡単すぎるので入力側はアンプではなくコンパレータ)。Arduinoは単発現象の高速計測は出来ないのでPCとの通信インターフェース(シリアルUSB変換機)としてだけ使っていると思われる。現時点の構想は マイク->アンプ->Dフリップフロップ->PIC。フリップフロップはソフトの処理をできるだけ高速にするため

onkyozahyo.png

マイクは最低3個。一直線上に並んでいても問題ない。赤丸がマイク。中央の赤丸と半径A,Bの円に外接する円は一つしかないので弾の当たった座標は計算できる。これは初歩的な三角関数では座標を割り出せないような気がする。マイク3個方式の市販品中央に1個余計にあるが弾速計測用と思われる。弾が的に当たった音では弾速計測はできないので衝撃波を使っているようだ

hyotekizahyo2.png

座標は力業で「半径を一定量ずつ大きくして円の交点間距離が最小になるところ」という理屈で割り出したほうが良さそう。方程式で書けたとしても半年たったら式の意味が理解できなくなっているはず

hyotekizahyo3.png

2018-09-21

マイク3個一直線方式の計算式。Ra,Rb,Rcは計測した時間差。実際にはRa,Rb,Rcのうち一つはゼロになる。中央のマイクが座標(0,0)の原点
R=((Xa^2)Xc+(Rb^2)Xc-(Ra^2)Xc-Xa(Xc^2)-(Rb^2)Xa+(Rc^2)Xa)/2(RbXa-RcXa-RbXc+RaXc)
半径Rが解れば着弾点は円の交点座標の計算式そのものなので省略。ネット上にいくらでもある。上記の方程式も
半径(Ra+R)と(Rb+R)の円の交点X座標=半径(Rc+R)と(Rb+R)の円の交点X座標
として立てたもの

zahyokeisan4.png

2018-09-26

マイクが届いたので音響式の実験。
室温:23.4度
その時の音速345.58m/s
左マイクと弾痕(丸く囲ってある所)の距離187mm
右マイクと弾痕の距離125mm

R0039245.jpg

計算上の遅れ179.4μ秒。黄色が左マイク、水色が右マイク。オシロスコープ上の縦黄色点線が179μ秒。波形が立ち上がる所(この回路では立下り)をとらえる必要がある。増幅率を上げると余計なものまで増幅するのでうまくいきそうな気はするが簡単ではなさそう。弾痕から遠いほうのマイクは波形の変化が緩やか。回路とマイクの間は容量の小さいコンデンサで結合されているので高い周波数成分を増幅している

R0039247.jpg

2018-09-27

スリングショットの弾が当たった時の音は周波数5kHz程度のようなので回路をシンプルにした。周波数は弾速や的の材質で変化するがマイクの周波数特性が可聴域に合わせてあるのであまり高くはできない。弾が当たる前にすでに波形に変化がみられるがブレッドボードの振動が増幅されているのではないかと思う。マイクよりブレッドボードのほうが標的に近い距離にある。アルミ板の上にプラスチックのブレッドボードを張り付けているので振動が伝わる速度は空気よりも1桁以上速いはず

R0039255.jpg

発射音に反応しない増幅率にする必要がある。中央が的に当たった音、その左約50msec前が発射音。聞き慣れたゴムパッチンの音

R0039249.jpg

2018-09-28

計測部回路構想。表示部とは有線。LANコネクターは流用。電気的にはRS422。通信方式はRS232。実験回路なので双方向通信にしてある。表示部は計測部が完成してから。実際に射撃の練習をしてみると分かるがグラフィック表示は必須ではない。黒丸標的の場合は何時方向の何点に当たったのかが解れば十分。グラフィック表示は複数弾のグルーピングを見るときに分かりやすいがリアルタイムでそれを知る必要があるかは疑問

densihyotekionkyo1sch.png

2018-09-29

アンプを経由していないマイクが拾ったそのままの波形がこれ。適当な閾値を設定してコンパレーターで比較すればそのまま使える。英語のwikiElectronic scoring systemの一番下に学生が製作した装置の論文があるがアンプを使わずにコンパレータで比較している。ソフトも論文内にあるが計測部の命令数が多すぎて精度が出ない気がする。音響式電子標的の記事を見かけたのは今から25年程度前だったと記憶しているがwikiには特許を取ったのが1975年、1982年に国際大会で使用されたとある。スイスSIUS社の物だと思う。Z80が4MHzクロックで動いていた時代からあった古いアイデア。最新型は音響式ではなくレーザーを使っている。ラインレーザーモジュールとフォトダイオードアレイの間を弾が通過する方式ではないかと思う。価格は高くなるようで中心部がレーザー、周辺部は音響式のハイブリッド型もある

R0039254.jpg

表示部。右上のLEDリングが弾の当たった方向。3桁の7セグメントLEDが点数。スリングショットは公式標的が無いので中心からの距離mm。グラフィック表示する場合はTX,RXからデータを横取りしてPCで表示

R0039259.jpg

2018-09-30

電源IC等を入手性の良い部品に変えた

R0039261.jpg

モバイルバッテリーは電圧降下が大きい。10Ω抵抗4本直列。電流は125mAで4.7V。これでは使えない。LEDだけだとほぼ5V。但し数秒後に電源が切れる。消費電力が小さい時は電源を切る仕様になっている。時々瞬断するようだしバッテリー機器でないと正常動作しないのかもしれない

R0039265.jpg

仕様上は1A以上のはず

R0039267.jpg

2018-10-01

立ち上がり波形の保持回路を追加。手前の14ピンが74HC74Dフリップフロップ。MPUでも同じことは出来るが単純動作なら速度が圧倒的に早い

R0039286.jpg

水色が標的に弾が当たった音。黄色が保持回路通過後。波形を保持すると計測時に余計な割り込みがかからないので計測精度が向上する。割り込みがかかりすぎると「時々おかしな着弾点を表示することがある」といった症状になって表れる。一旦保持されると外部からリセットしないと元には戻らない。3個(または4個)のマイクすべてが着弾音を検知した後にリセットする。ブレッドボードでのテストは完了。試作基板を作る

R0039289.jpg

2018-10-02

試作基板完成。この回路は没になるかもしれないので表示部との通信回路は部品を実装していない。実験ソフトはPCのグラフィック表示が必要。最終的には不要になるが実際の着弾点と計算値が一致していることを確認するためにグラフィック表示が無いと検証効率が悪い

R0039293.jpg

競技用の価格を調べてみた。低価格帯の製品を作っているELITE。約15万円。銃を含めエアライフル射撃用品を一式そろえると50万円程かかる。それと比べるとそれほど高価ではない。精度は0.1mm。エアライフル(Feinwerkbau M601)の精度は距離10mで1mmを少し超える程度

R0039291.jpg

2018-10-04

テストプログラムが完成したので試射

R0039299.jpg

赤矢印はマイク。水色矢印は計算エラー。計算式のバグではない。着弾が左寄りになると正しく計算できていないので右アンプの増幅率が足りない感じ。もっと高い周波数成分を拾わないといけないような気もする。スリングショットは早打ちできないのでテスト効率が悪すぎる。トイガンを注文しておいた。マイクが3つなので3現象オシロが欲しい

R0039300.jpg

2018-10-04

6mmプラスチック弾でカッターマットを撃ってみた。増幅回路は高い周波数成分を増幅するように変更してある

R0039307.jpg

その時の波形。固い物を撃つと的がスピーカーになって着弾音の前からマイクが音を拾っている。的に出来るのは減衰率が高い物だけ。周波数は20kHz程度。テスト回路のハイパスフィルターのカットオフ周波数は約48kHz。近くで手をたたけば反応するがマイクから10cmの距離で大声を出しても反応しない

R0039305.jpg

2018-10-07

送料込み約¥3000のトイガン。マルイのグロック17L。1発ずつスライドを引いて発射するシンプルな物。発射音がかなり大きく要回路変更。離れれば問題ないが至近距離で撃てないと作業効率が上がらない。2.5ms/DIV。発射音から12.5ms後に着弾。弾速に比べると音速はずっと早いのでマイクは発射音を先に拾ってしまう。スリングショットより高い周波数成分の音が大きい感じ。トイガンは何たら条例で10歳以上用と18歳以上用に分かれている。これは18歳以上用。同モデルの10歳以上用を買ったほうが良かった。たぶんバネも弱く音も小さいはず

R0039313.jpg

室内では反響もするので完全に影響が無くなるのは約0.15秒後。弾速を60m/sとすると0.15秒で9m弾丸は飛ぶ

R0039316.jpg

2018-10-08

アンプの特性を決めるために500発程撃った。着弾音はかなり高い周波数のようなのでフィルターをかけて高周波(電気の世界では低周波域、可聴域としては高周波という意味)成分を増幅するとマイクの近くでは十分な増幅率になるが40cmも離れると十分な増幅率が得られない。最終的にはマイクの帯域周波数の上限付近20kHzで落ち着いた。標的から1.5m以内の至近距離だと発射音を拾ってしまう

R0039338.jpg

的の枠を作った

R0039341.jpg

回路を変更して試射。プリンターがボロなので汚い筋が入っている。1cm方眼。6mmのプラスチック弾をA4コピー用紙に打ち込んでいる

R0039344.jpg

プログラムの表示結果。着弾点を直接計測しているわけではないので着弾音の到達時間から計算した推測値。上のほうは切れてしまっている。誤差5mm以内には収まっているような気がする。センサーが3個だと着弾座標は数学的にただ一カ所だけになる。センサー(=マイク)のどれか一つが余計な音を拾ってもエラー補正は不可能。センサーが4個になるとそのうち3個の組み合わせは4C3=4になり4カ所の着弾点が計算できる。6個なら6C3=20になる。計測が完璧であればそれらすべてが同一の座標になるがあり得ないので少しばらついたグルーピングを持つ。着弾点のグルーピングが小さくなるようにいくつかのセンサーの計測値を除外すれば着弾点の推測値を補正できる。大口径ライフルの遠距離射撃のように大型の標的ならセンサー数を増やすことはかなり有効だと思う。スリングショット用でそこまでの精度が必要になるかは疑問

R0039343.jpg

2018-10-09

再テスト

R0039370.jpg

プログラムでCADのスクリプトを生成しOHPフィルムに実寸印刷。標的にOHPフィルムを重ねてズレを確認

R0039364.jpg

大体合っているが対応する弾痕が見つからない物が有る。赤矢印は木枠に弾が当たり振動をマイクが拾った可能性有り。青矢印はぎりぎり枠には当たっていないと思う

R0039366.jpg

全体的な傾向としては
・同じ所に当たると大きく位置がずれる
  ->紙の的を使う限り避けようが無い。競技用はロール紙やゴムシートを使っている
・マイクから遠いと計算上の弾痕がマイク側にずれる
  ->遠ざかると音が小さくなり波形の立ち上がりは遅くなる
     音の到達時間差が実際より大きくなる
     時間差が大きくなると2018-09-21の記事の半径が小さくなり計算上の弾痕はマイクに接近する
・右側のズレが大きい
  ->マイクの感度が対照ではない(たぶん)

R0039367.jpg

2018-10-10

布を的にして実験

R0039371.jpg

至近距離から撃っているので実際は1cm以内に集弾しているはず。低い音は苦手か。

R0039372.jpg

高い音が出るようにOHPフィルムを張ってみた

R0039373.jpg

集弾しているが実際の着弾点より10cm程度下に表示されている

R0039374.jpg

感度を上げてローパスフィルターは止めた。ハイパスフィルターは回路の構成上いやでも入ってしまう。行方不明の弾痕は無くなったが全体的に中央下側に寄っている

R0039380.jpg

左右マイクの個体差の影響を確認するためマイク回路を左右入れ替えた。中央下側に寄る傾向は変わらず。若干個体差の影響はある感じ。互いに近くにある弾痕同士の相対距離はほぼ正確。近くの着弾音と遠くのそれでは波形の山の高さが変わるので絶対制度を上げるためには衝撃波のピーク同士の時間差を計測しないとうまくいかない気がする

R0039381.jpg

2018-10-11

音のピークを見つけるのは難しいので「適当な電圧を横切った時間の中間付近を音圧の頂点とする」というかなりテキトーなロジックで補正してみた

R0039389.jpg

結果余計ひどいことに。赤丸が補正後。黒丸より赤丸が放射状に外側に広がることを期待していたが全く逆になってしまった。マイクの特性などの影響を受けているのではないかと思う

R0039392.jpg

マイクを4個以上にしないとダメなような気がする。3個でも幾何学的に補正してしまうことは可能であるがたぶん弾速が変わると音圧も変化してずれの量が変わってくる。弾種、弾速や的の材質ごとに設定が必要になるくらいなら雑に使える光学式のほうが便利。マイク4個までは現行回路でもなんとかなるがそれ以上になると処理遅れが大きくなるのでPIC24シリーズに変更したほうが良い。PIC24シリーズは時間差計測のためのタイマーキャプチャー機能(データシート上ではinput capture)が強化されている。ためしにTTLで回路を組んでみたが10x10cmに収まりきらないのでボツ。部品単価は低いので¥1000にもならない

R0039401.jpg

インターフェースはArduinoのFT232に変えて中国製のCH340Gモジュールに変更。1個$1しない

R0039398.jpg

2018-10-13

マイクの数が増えると着弾点の座標計算式は少し複雑になる。方程式はWikipediaの「アポロニウスの問題」の代数学的解法の式そのもの。これを解けばよい。3つの円(この図では1,2,3を中心とした半径32.462、22.801、26.158の円)の外接円の中心が着弾点。解き方も式の下に全部書いてある

apollonius.png

長い式なのでEXCELワークシートに入れて検算
緑:計測結果とマイクの座標
水色:これを計算で求める
黄色:途中式の結果
オレンジ:計算結果
それ以外は方程式の右辺と左辺が成立しているか確認のための計算
半径の式が2次式なので解が2つ出る。半径がマイナスのほうはあり得ないので使わない
正しい解が2つになることもある。例えばマイクが一直線上に並んでいる時は外接円が2つ有り得る。2つの解のうち一方は的の外にある
3つの時間差は同じだけ数値を減らしても着弾点の座標は変わらないので一番小さい物をゼロとしてしまうと計算は速くなる。3つのマイク座標のどれかを原点にしても計算は速くなる

apollonius2.png

計算式残骸。電気工作で数学を使うことは多くは無いが電気は一番数学を使う分野。やっている事のレベルが低いと数学は使わない。工学やコンピューターの世界でも同じ

R0039407.jpg
着弾座標計算EXCELワークシート
ファイル ファイルタイプ 添付ファイルの解説
zahyo.zip ----- シート名「アポロニウス」がそれ。マイクの座標によってゼロ除算が起こるのでその時は0.0001等実用上問題ない小さな誤差を入れて逃げる。このワークシートはX1=X3、Y1=Y3の時ゼロ除算が起こる。解の式は複数あるがこれはそのうちの一つ。他の式の中にゼロ除算が起こらないものが必ずある。マイクの番号は適当に振った物なのでゼロ除算が起こらない組み合わせになるように座標を入れ替えても良い。原点にマイクがあるときはそれを2番マイクにするとX1=X3、Y1=Y3にならない。マイクが一直線上に並ぶのは特殊な例なので上の(2018-09-21)にある式を使う

2018-10-14

気温の違いによる予想着弾点のずれを確認してみた。黒丸が20度、赤丸が25度。気温が高いと下がる。ずれの大きいところで約4mm。温度センサーに直射日光が当たると使えなくなるので超音波センサーで音速を実測したほうが良さそう

R0039422.jpg

マイクの中心がどこにあるのか分解して確認。両面テープで貼り付けてあるフィルターを取ると小さい穴が開いている。穴の下約1mmの場所に振動板がある

R0039408.jpg

振動版は非常に薄い。中央がそれ。雑に分解したので破れてしまった

R0039418.jpg

2018-10-15

予想着弾点のずれはどの程度の計測誤差により起こるのか作図してみた。一番大きくずれる左右の上側が8.5mmずれたとき中央マイクが1.6mm=4.7μsec、右マイクが0.9mm=2.6μsec。観測した波形を見ると大体10~15μsecで波形が立ち上がるので4.7μsecの誤差は非常に大きい。但しこの時間は長さに換算すると1.6mmしかない。マイクの位置が僅かにずれていても大きな誤差になる

R0039431.jpg

マイクに定規をあてて...

R0039429.jpg

片側の隙間を見てみると2mm程度浮いている。合板がそれだけ反っている

R0039427.jpg

今度は逆に中央のマイクを1mm上にずらしたときどれだけ予想着弾点がずれるか作図。結果は8.19mm。マイクの高さは正確に合わせる必要がある。分解しないと分からないマイクの振動板の位置が0.1mmずれていたら予想着弾点は1mm近くずれることになる

R0039435.jpg

2018-10-16

反ってない板に変更して再テスト。マイクの間隔が広いほうが精度が高くなるので150mm->200mmに変更

R0039443.jpg

今度はほぼ一致。音速はプログラムに決め打ちしているので音速を計測する仕組みを追加する。超音波センサーを注文しておいた。計測チャネルが4つ以上必要になるのでPICを24シリーズに変更する。

R0039441.jpg

2018-10-17

光学式の基板をレイアウト。分解能は2mm。MPUは2個。上下ともに同じ回路。センサーやLEDの不良個所を発見するのが困難な回路。プログラムが単純であるのが利点。もう少し基礎実験をしてから設計しなおす

R0039452.jpg

2018-10-19

光学式の赤外線LEDをダイナミック点灯回路に変更。計測中は常時点灯。初期起動時に1個ずつ点灯させ対になるセンサーが反応するか確認する。全部で288個あるので自己診断機能が無いと問題個所の発見が困難になる

R0039459.jpg

アンプ回路の見直し。特に変更箇所無し。距離700mmで赤外線LEDに流す電流は4.6mA以上必要。Vfは1.5V

R0039457.jpg

音響式の的に使うものを探す。合板は想像していたよりきれいな波形が出る。安いが着弾音が大きく跳ねるのが欠点

R0039461.jpg

厚さ5mmのソルボセイン。本来はもっと鮮やかな青色をしているが20年以上前に買った物なので紺色に変色している

R0039466.jpg

ソルボセインを撃った時の波形

R0039462.jpg

動かないように台所スポンジにセロハンテープで張り付け更に上から紙を貼った。紙はソルボセインのべたつきで張り付いている。合板に直接ソルボセインを貼ると衝撃を吸収しきれずに弾が跳ねる

R0039474.jpg

その時の波形。上の波形とは時間軸/divが異なる。波形の立ち上がりの鋭さは木材の方が優秀。衝撃吸収シートは高価なのが欠点。300x300x5が約¥4000。木材に長期間張り付けておくと油分が木材に染み込む。6mmプラスチック弾は50cmほど跳ねて手前に落ちるので回収は容易。着弾音も小さい

R0039470.jpg

スポンジに紙を貼っただけの物はダメ。どれが着弾音なのか不明

R0039476.jpg

2018-10-22

赤表示は目が疲れるので緑LEDを買ってみた。ちょっとくらい

R0039498.jpg

5mmネオプレーンゴム+5mmソルボセイン+レジ袋(ロール状の薄い物)+紙 の順番に重ねて6mmプラスチック弾を撃つと50mm程度しか跳ね返ってこない。着弾音は低くなり使えなくなるが衝撃吸収性は抜群

R0039490.jpg

低反発スポンジは弾が埋まる。衝撃吸収ゴムとは逆特性で使えない

R0039478.jpg

2018-10-28

WindowsXpでプログラムが実行できるか試してみた。古い.netフレームワーク4.0を使うように設定してからビルドすると動く。Windows10は4.6なのでそのままだと動かない。試作1号機の動画を作った。Youtube動画 電子標的 音響式試作1号機テスト

R0039578.jpg

2018-11-08

PIC24シリーズの実験。先ずLED点滅プログラムから。PIC24FJ64GA002。秋月電子で売っているのでこれを選択したがインプットキャプチャーが5チャンネルしかないので後で別の物に置き換える。6ch以上欲しい。xc16コンパイラーは無料で使えるがすごく古臭い。PIC24はネットに情報が少なくこんな小さなプログラムで結構てこずってしまう。PIC16,18のようにMCLRは共用PINではなく初期のPIC16のようにリセット専用になっている。プルアップしないと動かない。電源電圧が3.3Vで有る点を除けば特に考慮点は無い。デジタル入力のみ5Vを直接受けられる。特定のピンだけが5Vトレラントになっている物もあるのでデータシートを見る必要がある

R0039769.jpg
一番シンプルな PIC24FJ64GA002 のLED点滅プログラム。xc16コンパイラー
0001  #define p24FJ64GA002
0002
0003 #define FOSC 32000000
0004 #define FCY (FOSC/2)
0005
0006 #include <xc.h>
0007 #include <stdbool.h>
0008 #include <libpic30.h>
0009
0010 #pragma config POSCMOD = HS
0011 #pragma config FNOSC = PRIPLL
0012 #pragma config OSCIOFNC = OFF
0013 #pragma config FWDTEN = OFF
0014 #pragma config FCKSM = CSDCMD
0015
0016 #define PORT_INPUT 1
0017 #define PORT_OUTPUT 0
0018
0019 void main(void) {
0020 TRISBbits.TRISB15 = PORT_OUTPUT;
0021
0022 while( true ) {
0023 __delay_ms(500);
0024 LATBbits.LATB15 = 1;
0025 __delay_ms(500);
0026 LATBbits.LATB15 = 0;
0027 }
0028 return;
0029 }
行番号
解説
1
PICの型番を#defineするとxc.hの中でp24FJ64GA002.hをインクルードしてくれる
4
PIC24シリーズはFOSC/4ではなくFOSC/2
20
この記述はTRISBを2回もタイプさせるのでもっとシンプルに書けるようにしてほしい

2018-11-09

LED点滅プログラムにシリアル通信機能(UART)を追加
・ライブラリーはコンパイラーとは別になっているので別途ダウンロードしてインストールする必要がある
・PIC24(dsPICも同じ)は周辺I/Oの日本語データシートがある
・コンパイラーのプリプロセッサ(ヘッダファイルをソースの中に展開するプログラム)は1パスなのでヘッダファイルの中で使われる定義は#includeより前に定義する必要がある(プリプロセッサの前方参照禁止はC言語では当たり前のこと)

R0039772.jpg
上の点滅プログラムにシリアル通信機能を追加
0001  #define p24FJ64GA002
0002
0003 #define FOSC 32000000
0004 #define FCY (FOSC/2)
0005
0006 #define USE_AND_OR
0007
0008 #include <xc.h>
0009 #include <stdbool.h>
0010 #include <libpic30.h>
0011 #include <uart.h>
0012 #include <PPS.h>
0013
0014 #pragma config POSCMOD = HS
0015 #pragma config FNOSC = PRIPLL
0016 #pragma config OSCIOFNC = OFF
0017 #pragma config FWDTEN = OFF
0018 #pragma config FCKSM = CSDCMD
0019
0020 #define BAUD_RATE 9600
0021 #define UxBRG_ARG (((FCY/BAUD_RATE)/16)-1) // = 103
0022
0023 #define PORT_INPUT 1
0024 #define PORT_OUTPUT 0
0025
0026 void main(void) {
0027 char txdata[] = {'T','E','S','T','0','1','2','3','4','5','6','7','8','9', NULL};
0028
0029 TRISBbits.TRISB15 = PORT_OUTPUT;
0030
0031 iPPSOutput( OUT_PIN_PPS_RP14, OUT_FN_PPS_U1TX );
0032 iPPSInput( IN_FN_PPS_U1RX, IN_PIN_PPS_RP13 );
0033
0034 OpenUART1( UART_EN, UART_TX_ENABLE, UxBRG_ARG );
0035
0036 while( true ) {
0037
0038 putsUART1( (unsigned int *)txdata );
0039 while(BusyUART1());
0040 WriteUART1( 0x0a ); // LF
0041
0042 __delay_ms(500);
0043 LATBbits.LATB15 = 1;
0044 __delay_ms(500);
0045 LATBbits.LATB15 = 0;
0046 }
0047
0048 return;
0049 }
行番号
解説
6
これは34行目に効いてくる。uart.hを見るとその理由はすぐ分かる
21
ボーレートの定義は式で書いたほうが良い。この式はデータシートにある
31、32
PIC16,18シリーズではRX,TXピンは固定されているがPIC24シリーズは周辺I/Oのピン割り当てを自由に決められる。このサンプルでは受信はしていないので32行目は必要ない
39
送信バッファが空になるのを待っている

2018-11-10

マイクは標的面より手前にあるので少し前に作った座標計算のEXCELにZ軸を追加した。マイクがある平面をZ=0とすると式は
(Xs-Xa)^2 + (Ys-Ya)^2 + (Zs-Za)^2 = (Rs+Ra)^2
(Xs-Xb)^2 + (Ys-Yb)^2 + (Zs-Zb)^2 = (Rs+Rb)^2
(Xs-Xc)^2 + (Ys-Yc)^2 + (Zs-Zc)^2 = (Rs+Rc)^2
Za=Zb=Zc=0
これを解けば良い
a,b,cが3つのマイクの座標
Ra,Rb,Rcが着弾音の時間差から計算した着弾点との距離差
Zsが着弾点のマイクからの奥行
Xs,Ysが着弾点(=標的面)の正面から見た座標、Rsが外接球の半径。この3つが未知数

zahyoZ.png
着弾座標計算EXCELワークシート Z軸追加版
ファイル ファイルタイプ 添付ファイルの解説
zahyoZ.zip ----- シート名「アポロニウスZ軸あり」がそれ。Z軸があると3つの球の外接球の計算になるが、
マイクは全部同一平面上にあるので円の計算式と大きな違いは無い。
マイクのZ軸位置が全部違っていると少し計算が面倒になる

2018-11-15

試作2号機の基板。2号機はプログラムの殆どをarduinoで書くことにした。タイマーキャプチャー機能はatmega328に無いのでPIC24。
[マイクアンプ]->[PIC24タイマーキャプチャー]->[RS485通信]->[arduino]->[液晶シールド]
RS485はハードがMAX485になるだけでソフトから見るとシリアル通信そのもの。理想的には無線にしたいが無線はソフトが複雑になる。表示は何時方向の何点なのか分かれば良いので試作段階では文字表示。液晶シールドを注文しておいた。液晶ディスプレイとスイッチがいくつか付いて¥300程度

R0039791.jpg

2018-11-19

超音波測距モジュールが届いたので実験。距離500mmで3mm程度の誤差が出る。100回計測した平均を取っても誤差は無くならない。仕様を見るとこの超音波モジュールは距離に応じたパルス幅が出力されるものだった。時間差はMPUのタイマーで計測するのではなくこのモジュール自体が時間差を計測してくれる。つまりこの精度の悪さは改善できない。音速は気温1度で約0.18%変化する。距離500mmで0.9mm。精度は0.2mm程度が欲しい。センサー単体を購入して回路は自作しないとダメ。センサーを注文しておいた。モジュールは¥85、センサーは1ペア¥76。センサー単体は割高

R0039819.jpg

2018-11-22

液晶キーパッドシールドが届いたので動作確認。液晶の反応速度が遅く表示が切り替わるのに1秒かかる。スイッチは抵抗ラダー回路に繋がっていてarduinoのアナログ入力電圧で押したキーを判断する。同時に複数のスイッチを押したことに対応出来ないのが欠点であるがポート1つで多数のスイッチに対応できる

R0039847.jpg

2018-11-23

音速計測回路を設計する前に超音波測距モジュールの波形を観測しておく。コンデンサや抵抗がたくさんついているほうが受信回路。すっきりしているほうが送信回路

R0039853.jpg

送信波形。トランスミッターの両端端子にかかっている電圧。圧電スピーカーと同じようだ。交互に5Vの電圧をかけている

ADS00003.png

水色がレシーバーセンサーの波形。回路がつながっているので生波形とは違っていると思う。送信は8発パルスを送っているが受信側は8発で収まっていない

ADS00009.png

水色は受信増幅回路の最終出力。赤矢印間が距離によって変わる。40kHzの音波なのでパルス間隔は25μ秒。距離にして340000mm/40000Hz=8.5mm。黄色矢印までと緑矢印までとでは約8.5mmの距離差がある。往復なのでその半分の4.25mm。音速を使って気温を計測するためには1発目を確実に捕まえる必要がある。これを正確にとらえることができれば0.5mm、送受信機間距離500mmなら気温にして0.5度程度の精度で計測が可能。この測距モジュールの精度がせいぜい1cmの実用精度しか持っていないのは1発目の補足に時々失敗しているためと思われる

R0039857.jpg

2018-12-13

超音波マイクとスピーカーが届いたので実験。出力が弱く良好な反応を示すのは150mm以内。後で電圧を上げる

R0039969.jpg

PIC16F1508を使用したがコンフィグレーションワードの変更が出来ず。このリストの下3種類に変更できない。他の物には変更可能。たぶんmikrobaseic PROのバグ。旧バージョンはバグが多かったがこのバージョンでは初。この選択肢定義ファイルが間違っている感じは無いのでWindows10との組み合わせで発生する問題かもしれない。XMLフォーマットファイルの読み書きがうまくできていない感じ

R0039965.jpg

mikrobasicを終了させ。このコンフィグレーションワード定義ファイルを直接テキストエディターで編集して。mikrobasicを再起動させると問題を回避できる

R0039964.jpg

受信波形。最初の1発目をとらえるのは無理そう。超音波マイクとスピーカーの距離を500mmとすると10度の気温の変化で送信側と受信側の位相が360度ずれるので温度計で大雑把に気温を計測してから位相のずれを計測するほうが良さそう。距離は長いほうが精度が上がる。マイクとスピーカー間の距離が倍になると半分の気温変化で同じだけ位相がずれる。音速計測は長くなりそうなのでこのページから切り離す

R0039967.jpg

2020-09-27

音響式を組み立てた。マイクは6個あるがPIC24のinput capture機能の制約上5個だけ有効。この5個は28ピンのDIPタイプの物の制約で多ピンの面実装タイプはもっとチャンネル数が多い

R0047955.jpg

回路は5V,3.3V共存。PICは3.3Vであるが灰色のピンは入力5.5Vに対応している。電源電圧が3.3Vなのでアナログ入力ではなくデジタル入力のみ5V対応になる

R0047952.jpg

2020-10-09

電源はarduinoから供給。電線はきし麺LANケーブルを流用している。AVRにもPIC同様インプットキャプチャー機能はあるがatmega328はチャンネル数不足atmega2560はインプットキャプチャーピンが2チャンネル分しか配線されていないので使えない。テスト用のハードはこれで完成なので後は地味なソフト開発が続く

R0047980.jpg

2020-10-19

Excelで計算した結果と合わないので途中計算結果をダンプして確認。どうやら32ビット浮動小数点の精度の問題。Excelはたぶん64ビット

ketaochi.png

式を立て直す

R0047989.jpg

2020-10-22

座標計算は手書きでやっていたが単純繰り返しの式が多いのでOpenOfficeWriter(マイクロソフト製品のMS-Wordに相当する)を使ってみた。面倒なところもあるが十分使える。入力は手書きより遅いがコピペ出来るので所要時間はあまり変わらず。電子データである分だけ保存性に優れる

oowriter.png

2020-10-26

式を見直してみたが浮動小数点誤差から逃げるのは面倒。マイクと着弾点間の距離は精度よく計算できるので計算に使った3つのマイクの中から任意に2つのマイクを選びこれを中心とする球と標的平面との交点から着弾点座標を計算すれば誤差問題からは逃げられる。解は2つになるが大抵の場合一方は標的の外にある。だたしマイクが標的の対角線上にあると計算によって求められた2つの着弾点は両方とも標的の中に納まる可能性がある。3つのマイクの中から2つを選び出すときこの問題が起こらないマイクを選ぶ必要がある。この方法の一番の問題はプログラムを作ってからしばらくするとどうやって計算したのかを忘れてしまう事。式や計算ロジックは単純であってほしいので64ビット演算できるArduino dueを使って回避することにする。純正品は高価であるが中国製の互換品なら¥1300

R0048017.jpg

2020-11-08

Arduino due が届いた。MPUが32ビットなので互換性は低いが数値計算と通信だけできれば良いので移植はそれほど面倒ではない。但しdueの情報は極端に少ない。移植で動かなかったものは
SoftwareSerial:dueはシリアル通信ポートが4ポートあるのでSoftwareSerialは必要ないので存在しない
dtostrf:これも存在しないようだ。これはAtmega328のarduinoでdoubule変数のsprintfが正しく動作しないための回避策で使ったので素直にdueではsprintfを使えばよい
64ビット浮動小数点数計算は桁落ちせずに計算できることが確認できた。これでarduino、PIC共に3.3V環境になったので通信用ドライバーも3.3V対応の物に変更することにする。aliexpressで安く買えるMAX3485を注文しておいた

R0048063.jpg

2020-11-11

マイク5個バージョンのソフトの骨組みが完成したので実射テスト。通信用ドライバーは5Vのままなので抵抗を入れて5V->3.3V変換している

R0048074.jpg

その結果。着弾点の計算はマイクが3個必要なのでその組み合わせは5C3=10通り。理論上、座標は全部同じにならなければいけないが現物は当然ずれる。マイクの座標が正しく計測出来ているか等、詰めの作業が必要。マイクが直線状に並ぶ場合はそれを除外したほうがよさそうなことは少ないデータからもわかる

micx5.png

2020-11-12

マイクは四隅の4個で十分という結果になった。理屈の上でも弾痕を出来るだけ広い角度で取り囲むほうが計測に有利になる。マイク4個の場合は4C3=4で4個の着弾点が計算できる。上から5行がマイクが計測した時間差。ハードウェア上マイクが5個あるので計算には上から2番めを取り除いている。その下4行が着弾点座標X,Y,Xの平均値からの偏差,yの平均値からの偏差。半径1mm以内に収まっている。標的の中央付近は精度が高くなる。但し弾着が重なると数ミリの誤差が出る。紙標的では回避方法は無い

micx4result.png

カッターマットを撃ってみる

R0048076.jpg

結果。使い物にならない。弾が当たった瞬間の音ではなくマットを伝達して届いた音を拾っている可能性もある。物質中の方が空気中より早く音を伝えてしまう。当たった瞬間の音の方が十分に大きいのでマイクアンプの感度を下げればうまくいくはず。的の材質を選ぶのが音響式の最大の欠点

cuttermat.png

マットにヒビが入る

R0048078.jpg

合板でも実験

R0048080.jpg

合板の結果。カッターマット同様。紙標的なら問題ないので表示側を少し考えることにする。射手側はarduinoなので安い液晶シールドをいくつか注文しておいた。射撃競技をやってみればわかるが着弾点のリアルタイムグラフィック表示はあまり意味が無い。何時方向の何点だったかが分かれば良い。グラフィック表示は弾着のグルーピングを見る時に意味がある。着弾点は引き金を引いた後に弾丸が物理法則に従って飛んでいった結果でしかない。引き金を引くまでの動作を着弾点によって評価することが出来ないなら一発毎に着弾点を確認することに意味は無い

gouhan.png

少し凹む

R0048081.jpg

2020-11-13

紙以外でうまくいかない原因を探す。これは合板。黄色はマイクの信号波形。マイクには直列にコンデンサが入っているのでGND電位より低い負の電圧になりうる。これを増幅したのが水色のアンプ出力。着弾点座標は水色の最初の立ち上がりである赤矢印をとらえて計算している。アンプは反転出力回路なのでマイクの出力が負になった部分を増幅している。

gouhan3mm.png

これは紙

paper.png

OHPフィルム。合板は怪しげな白矢印部分があるので上手く計算できないのは理解できるがこれは紙と似たような波形。OHPフィルムも同様に上手く計算できない

ohp.png

OHPフィルムは案外丈夫で穴が開かない

R0048086.jpg

トイレットペーパー

R0048088.jpg

トイレットペーパーの結果。OHPフィルムや合板より良い結果が出る。実験数が少ないので定かではないが貫通する物の方が良い結果が出るという傾向がある。OHPフィルムや合板は紙と比べると非常に大きな音が出るが波形を見る限りそれは弾が当たった瞬間に出たものではなく合板やフィルムの振動によるものと見て良さそうだ。うまくいかない原因にはマイクの周波数特性の影響もあるのではないかと思う

R0048087.jpg

実弾用では音響式や光学式に加えて圧電効果を利用した製品も出てきている。三角測量であることは音響式と変わらないが空気ではなく的そのものを伝ってセンサーに届くまでの時間差を使用して計測している。エアライフル用ではポリカーボネート板を使用しているらしいが鉛弾がポリカ板にダメージを与えないのは意外である。エアライフルで10000発の耐久性があるらしい。メーカーの技術説明。センサーはピエゾ素子を使っているらしい。YouTube動画 センサーは四隅ではなく的を中心とした十字配置になっているようだ。
レビュー記事。価格は27万円

R0048089.jpg

海外の大口径ライフル用。形状から防水型の超音波センサーと思われる。市場がそれなりに大きいのかメーカーも多い。価格はどれも10万円以下。精度はどれも4~5mmと良くないが大口径ライフルの標的は巨大なので実用上問題ないAccurate Shooter.com

R0048090.jpg

2020-11-14

マイクが標的の方を向くように変更した。着弾点計測の精度もやや向上する。斜めにマイクを取り付ける分だけマイク位置を正確に測ることが難しくなる

R0048093.jpg

2020-11-15

OHPフィルムに印刷して弾痕と計算上の弾痕を比較。実際の弾痕は計算上のそれよりもやや外側にある。木枠に当たると大きくずれた位置に計算される。横に縞があるのはプリンターがボロだから。丸の中にある小さな丸は計算上求められた着弾点。一つの弾痕に付き4個の小さな丸がある。木枠に当たると4つはばらばらの位置に計算されるのでソフトでこれを除外することは出来る

R0048094.jpg

音圧による影響かと思って波形を見てみた。これはマイクの近くに着弾したとき。水色がマイクの出力。黄色がアンプによる増幅結果

ADS00004_near.png

これは遠くに着弾したとき。近くに着弾したほうが音圧が高いので波形の立ち上がりも早くなる。波形を見る限りせいぜい5μ秒でこれは計算上1mm程度しか誤差を生まないはず。しかも計算上の着弾点はより近くに着弾したマイクに引き寄せられるのでOHPフィルムの物とは逆の結果になる

ADS00005_far.png

OHPフィルムでは相対的なずれしか分からないので計算値と弾痕を1つずつ比較。4か所計測してこの程度。右下は8と読めるが3mm。縦方向は無視している。横方向で大体2.0~3.0mm中央寄りに当たっていると計算される。
原因は音速計算式の誤りだった。現在の室温は20℃、計算式はほぼ0℃の時の物になっていた。室温が20℃違っていたら数ミリの誤差が出るということになる

R0048099.jpg

2020-11-16

音速計算式を修正して再実験。今度は大体合う。4隅はマイクが近すぎるのか誤差が大きい。マイクはもう少し遠ざけたほうがよさそうだ。木枠に当たったものは矢印の位置に偽の着弾点を計算してしまっている

R0048107.jpg

マイクは小さいほうが良いのではないかと情報を探しているとmemsマイクというものを見つけた。秋月電子にもあった。マイクが射手側を向いているとことを見ると超音速弾による衝撃波(マッハコーン)をとらえているようだ。スモールボアライフルやトイガンには使えない。ShotMakerという製品

R0048100.jpg

memsマイクは携帯電話用として普及しているらしくマイク+アンプ+デジタルインターフェース回路が小型のチップ内に収められている。アナログ出力の物は少ない。超音波周波数帯に感度があるものはdigikeyで探してもこれ一つしか無かった

R0048103.jpg

音響式は部品到着待ちなので光学式を再検討。平行光線は遮光版が必要になるので高い工作精度が必要。点光源なら雑に作っても問題ない。但し的の大きさの割に装置が大きくなる

kougakutriangle2.png

光源から離れるほど幾何学的に計測精度が低くなるのが欠点であるが2軸の組み合わせ方を工夫すれば的の領域を可変できる。小さな的では高精度、大きな的では低精度になりこの特性はむしろ都合が良い

kougakutriangle.png

2020-11-17

基板レイアウト。これをX,Y各軸3枚使う。回路自体はデイジーチェーン接続なので何枚でも連結できる

R0048113.jpg

2020-11-18

音速計算を間違えていたのでマイク5個でも再テスト。結果は変わらず。やみくもにマイクを増やしても効果は上がらない。マイクの組み合わせによって計算された着弾点の色と大きさを変えているが全ての弾痕で傾向が同じなので多分マイクの位置が正確に計測出来ていない

R0048118.jpg

上側中央は使用されていない。中央下の黄色丸のマイクを使ったとき唯一正確に計算できるのは上の2つのマイクとの組み合わせ。正確に計測するためには幾何学的に出来るだけ広い角度で弾痕を囲む必要があるという結論は変わらず。マイク3個なら的の中心から等距離に120度ずらして配置するのが理想

R0048119.jpg

光学式は赤外線LEDが1個になる。1つのLEDで広範囲に光を拡散させる必要があるので普通の砲弾型では多分出力が足りない。3Wのパワー赤外線LEDは防犯カメラの光源としての市場があるので安価に入手できる。半減角120度の物を注文しておいた。回路は電流制限回路。0~480mAに電流を調節できる

R0048117.jpg

2020-11-21

温度センサーDS18B20を追加。アナログ出力式と比べると絶対精度が高い。中国製なら価格も安い。インターフェースが1-wireなのでデータ取得に0.2~0.3秒かかるのが欠点。アナログ式は相対精度は必要十分なものを持っているが絶対精度がそれほど高くないので正確な温度計を基準にした校正が必要になる。このセンサーは校正なしにそのまま使える。絶対精度の高いアナログ式センサーは価格も高い

R0048130.jpg

2020-11-22

衝撃吸収材ソルボセインにOHPフィルムを張り付けた。フィルムを密着させれば使える。間に紙をはさんだりするとダメ。OHPフィルムも材質がいろいろあるようでこれは割れてしまう。弾が当たった時の衝撃を減衰させるものなら的として使えそうだ

R0048134.jpg

計測結果

R0048135.jpg

2020-11-23

紙に丸い穴を開けて裏にソルボセインを張った物。一番下の弾痕は裏に何もないので貫通している。ソルボセインに当たると高確率で張り付く。紙は50~60cm跳ね返る

R0048143.jpg

計測結果

sp;boandkami.png

2020-11-24

3.3V版のRS485通信ICが届いたので載せ替え。MAX3485。電源を繋ぎ変えレベル変換抵抗を取り去る。MAXIM製品は中国と何か関係があるようでaliexpressで安価入手可能。通信ICはこれに限らず電力大食いなので電源容量は全部の部品がそろったところで現物合わせで再設計する。通信ICは低抵抗のターミネーターを使うので電力消費量は案外大きい。3.3Vで120Ωのターミネーター抵抗を2本使えば電流は50mAになる。ターミネーターは通信線の両端に並列接続されるので120Ωのターミネーターなら60Ωの抵抗値になる

R0048145.jpg

2020-11-25

LED<->センサー間距離350mm、センサー間隔2mm、的の直径100mmの時の分解能を作図で求める

bunkainou1.png

結果1.78mm。X,Y方向は1mm程度の分解能でも対角線方向は約√2倍よりやや大きくなる

bunkainou2.png

赤い直径6mmの弾丸の1つ外側に弾痕を書くとこうなる。
交点の座標は弾痕の中心を通る2本の直線の交点になるので計算はとても簡単
Y=aX+b
X=cY+d
この方程式を解くだけ。的の中心を原点とするとb,dはそれぞれ光源のY切片とX切片つまり的の中心から光源までの距離。a,cは直線の傾き

bunkainou3.png

光源から一番遠い部分で光線が直交するようにしたほうが光源から遠い部分の精度は上がる。逆に赤丸部の的円接線方向の分解能は2.6mmに大きくなる。但し同心円ターゲットの場合、円の中心からの距離の計測精度が重要で接線方向の精度は得点に影響しない

bunkainou4.png

2020-12-02

液晶シールドが届いたのでサンプルプログラムを書き込んでテスト。ノイズが入っている。液晶の故障という感じではなくノイズのように見える

R0048155.jpg

裏側のICの半田をやり直してみたが...

R0048157.jpg

少し状況が変わったがこれでは使えない

R0048158.jpg

プログラムを修正して黒丸を書いてみる。液晶がおかしいのかソフトのタイミングの問題かarduino側の問題か判別できないので液晶シールドをもう1個注文しておいた。1個¥1000しない。この液晶シールドを載せてしまうと他のI/Oピンを引き出せない。開発がやりにくいので基板を発注することにする。積み重ねる場合、部品が上下に配置されるので片面基板では都合が悪い

R0048160.jpg

2020-12-03

vcap端子は何かの新機能だと思って空きピンにしていたが内部コアのオンチップ電源用のコンデンサを接続する必要がある。内部コアは3.3Vではなく2.5Vで動いている。但し今まで空きピンのまま正常に動いていた。動いてしまっていた原因は不明?

R0048168.jpg

DISVREGはオンチップレギュレータ用の制御ピン。オンチップレギュレータを使う時はGNDに接続する。外部に2.5V電源を用意できるなら3.3V電源に接続

R0048164.jpg

コンデンサを追加

R0048167.jpg

液晶シールド用の基板を発注した

R0048169.jpg

2020-12-07

描画速度の確認。これを1画面描くのに50msecかかる。速くは無いが実用上十分な速度。但し得点などこれに加えて文字を書く必要がある。バックライトの消費電力が大きく液晶表面がそこそこ熱くなる。USB給電は少し無理がある感じ

R0048190.jpg

2020-12-08

ノイズはソフトの問題だった。LCDライブラリーが複数のドライバーICをサポートしていた

R0048194.jpg

デフォルトでは一番上のHX8357Bが有効になっている。ILI9481に変更したら動いた。ドライバーICが異なれば全く動かないのが普通。両者には共通箇所が多いのだろう

R0048193.jpg

接近撮影すると視野角の影響を受けて影が出来るが実際はこう見えている。望遠拡大して撮影しないと肉眼で見たものと一致しない。若干青く写っているが実際はもっと灰色に近い。ソフトの定義上も背景はGREY

S2970019.jpg

2020-12-09

実験用に連射できる電動ガンを買った。引き金を引いてからモーターが回りだして発射するので弾が出るまで若干の遅れがある。充電器はラジコン用を使う。バッテリーは特殊なコネクター形状なので買った。これが約¥2300と高価。単5サイズのニッケル水素電池を6本直列にしたもの。端子をVVFケーブルの銅線で挟んで充電している

R0048208.jpg

標的に使う防振ゴム。ハネナイトとハネナイトスポンジ。ソルボセインのほうが衝撃吸収力は大きいと思う。当たるとそれなりに跳ね返る。スポンジはかなり硬質で弾が当たっても貫通しない。ソルボセインは青いのが欠点。硬度はソルボセインのほうがかなり柔らかい

R0048199.jpg

2020-12-11

同心円標的は連射に向いていないという結論になった。連射の場合は物理的に的が倒れる方式の物の方が良い。発注した基盤が届くまでまだしばらくかかるので可倒式標的の回路実験。手元の有線スイッチで操作するのは間抜けなので赤外線リモコンを使う。手前の回路は赤外線リモコンで倒した的を立てるモーター駆動回路。奥は標的を倒したときにストップウォッチを止める回路。これは5Vで実験しているがマブチモーターとの相性が悪いので3Vで動くようにしたい。3Vでは5V用リレーが動作してくれない。3V用リレーと昇圧DC-DCコンバーターを注文しておいた。これも届くまで中断

R0048237.jpg

2020-12-12

機械式標的の回路構想。倒れた標的は赤外線リモコン操作に反応するモーター回路で引き起こす。LEDをいくつか使用しているが必要なのは射撃開始可能を意味する1つだけ。他はセンサー等が動いているかの確認用。スイッチの回路図記号はマイクロスイッチ。モーターを所定の位置で停止させるものと標的が倒れた時に押されるもの。最後の標的を倒したらストップウォッチを止める。標的を倒したときに回路は反応するので1標的につき1発発射するルールには対応できない。所定の時間内に倒した的の数を数えるならマイコン回路を使うべき。赤外線リモコン用センサーのピン並びは左からOUT,GND,VCC。回路図は入力側を左、出力側を右に書きたいのでピン配列を逆転させている

kikaishikitgt.png

2020-12-14

arduinoシールドにすると回路は単純になる。ピンを使い切っているので拡張性は無い。シフトレジスタでピン節約は出来るが余ったピンの使い道は今のところ思いつかない。プログラムで赤外線リモコンのデコードが出来るのでスイッチは必要無い。初期設定モードへは「電源を入れてから標的を1秒以内に倒したら」という仕組みにすれば別途初期設定モードへ移行するためのスイッチは必要ない

kikaihyoutekiarduino.png

試作は片面基板でいける

R0048240.jpg

2020-12-15

7セグメントLEDはこれを使おうと思う。TM1637という中国製のドライバーICを使った物。I2C類似インターフェースになっているので使用するピン数を大幅に節約できる。桁ストローブや輝度調節機能を持っているのでソフトは表示したい文字パターンを送り込むだけで済む

R0048244.jpg

標的を引き起こすモーター。田宮の楽しい工作シリーズ。モーターは定番のFA-130をさらに小さくしたような形状。FA-130モーターが使えるギヤボックスはテクニクラフトという別シリーズ。なぜ分けているのか不明

R0048245.jpg

ウォームギヤ。これはどうやって作ったのか謎。金型のつなぎ目が無い。金型をねじって抜いたのだろうか。ねじるとランナーとのつなぎ目が切れそうだし

R0048242.jpg

2020-12-16

上のアナログ式のワンショット回路をNPNトランジスターに置き換えた物。動作は同じ

npn1shotkairo.png

リモコンで標的を起こすのではなく一定時間経過したら自動で引き起こす回路。電源を入れてから数秒経過するとリレーがONする。電源を切らないとリレーはOFFしない。コンデンサの放電に時間がかかるので電源をすぐに入れ直すとリレーが早くONしてしまう

chienkairo.png

注文していた液晶が届いた。接続すると色が違う

R0048257.jpg

液晶面は同じに見えるが...

R0048259.jpg

裏を見るとドライバーのシルク印刷が違っている。見た目が全く同じでドライバーが異なる物が存在するようだ。HX8357BとILI9481。HX8357Bはソフトの定義上HX8357Cにしないと正しい色にならない

R0048258.jpg

2020-12-17

書き換え容易なソフトと違って機械式は作り替えの手間が大きいので電子回路部を機能ブロック化。標的の機械的構造に合わせて組み替える

R0048260.jpg

ユニバーサル基板配線。後は3Vリレーが届いてから

R0048261.jpg

2020-12-18

LED表示のストップウォッチはaliexpressを探してもなかったので回転計にストップウォッチ機能を追加した。時計が動いていると目障りなのでストップボタンを押すまでタイム表示しないモードも追加した

R0048263.jpg

2020-12-21

基板到着。年末は動画を数本作るのでしばらく中断。たぶん1~2週間

R0048268.jpg

的に当たった振動をピエゾセンサーで検知すれば引き起こし機構が不要になる。電子回路はすこしだけ複雑になるが機械工作より電気工作の方が寸法精度要求がずっと低くなるので作りやすい。実験用のピエゾセンサーを注文しておいた。物理的に的が倒れないと「当たった感」が得られないかもしれない。当たった時はLEDを点灯させるがそれで当たった感じがするのかか問題。これは作ってみないとわからない。この方式がうまくいけば的を分散配置できるのが利点。跳弾を考慮するならむしろできるだけ離して配置したい。引き起こし機構は的が一直線上に並んでないと製作が面倒になる

R0048269.jpg

2020-12-24

パワーLED到着。何処が光る?

R0048273.jpg

点灯。赤外線なので肉眼では発光を確認できない。赤外線に感度のあるデジカメで確認

R0048272.jpg

2020-12-26

3Vリレー到着。これは2回路。1回路の安い物も注文してあるがまだ到着しない。電圧が5V->3Vになるとアナログ回路は設計が難しくなる。トランジスターやダイオードが動き始めるのは電圧差0.6Vから。残り2.4Vの電圧変化で動く回路を作らなければならない。電力で動くリレーは電圧が下がると電磁石動作のための電流が余計に必要になる。5V用の電流では全く動作しなかった

R0048275.jpg

2020-12-31

アンプ以外を組み立ててテスト。特に問題なし

R0048279.jpg

計測回路。基板上の4割の部品は今のとこと使用されていない

R0048280.jpg

2021-01-01

LED輝度調節回路。ブレッドボードの接点抵抗が大きくなりすぎて電圧降下してしまう。これはサンハヤト製。穴が丸くピンヘッダー等太いものを挿すと抜けなくなる。ブレッドボードは10年使ったら交換したほうが良いと思う。3枚使用しているが一番古いものは15年以上使っている。中国製を注文しておいた。安物を数年で更新していくのが一番良いと思う。デジタル回路は多少電圧降下しても問題無いがアナログ回路では致命的

R0048285.jpg

2021-01-02

パワーLED回路はユニバーサル基板で作った。計算上は480mA流れるはずだが実測400mA。電源電圧も少し落ちている

R0048287.jpg

LEDは半田面

R0048288.jpg

配線パターンはEAGLEを使って決めている。自分で配線経路を考えるより速い

R0048290.jpg

回路図。抵抗は発熱するので3.3Ω1/4Wを並列。R1を変更するだけで電流最大値は変更出来る

R0048291.jpg

2021-01-03

光学式センサーの動作確認

R0048293.jpg

LEDの電流は140mA

R0048295.jpg

機械式標的のストップウォッチSTART/STOP回路

R0048297.jpg

ストップウォッチのスイッチを動作させるだけなのでリレーは短時間しかONしない

R0048298.jpg

2021-01-04

光学式は点光源である利点を生かし折り畳み式にする。赤丸を軸に折りたたむ。赤線は着弾点の計算式をイメージするために描いたもの。あまりにも単純なのでソフトはハードが出来てから書いたほうが良いという結論になった

kougakukouzou.png

2021-01-08

光学式基板1枚ほぼ完成。テストはこれ1枚あればよい。最終的には8枚構成にする。PIC16F18857は比較的新しいのでpickit2やpickit3(ソフトのほう)では書き込めない。X IDEに付属してくるIPEのV3.55で書き込んだ。IPE V2.XXは古くてダメ。音響式は別ページに最終形をまとめた

R0048316.jpg

2021-01-09

光学式。オペアンプの最終出力段。酷いノイズ。一つずつ機能を削って発生源を特定する。周期的に発生しているのでソフトで何かやってはいけないことをしている気がする

R0048319.jpg

2021-01-10

計測器側のプログラムは完成。最終的に6個所回路修正

R0048330.jpg

配線長が短くなるようにセンサーが配置されているのでソフトから見たとき都合の良い順番でデータは送られてこない。確認のためのワークシートを作った。最下行が40個のセンサーの並び順。一つ飛ばしてセンサーが反応するという事があってはならない。この例はLEDの近くを弾丸が通過した場合。センサーの近くを弾丸が通過すると4個程度反応する。LED間隔は2mm。弾丸直径は6mmなので最小で3個になる

R0048327.jpg

2021-01-12

ワークシートはデータの書き写しが面倒であまり役に立たなかったのでarduinoでプログラムを書いた

R0048332.jpg

屋外テストでうまく動けば残り6枚を作る。太陽光の赤外線が強い条件の厳しい屋外では部品の製造上のばらつきが出てうまくいかないことも考えられる。ノートパソコンが無いのでデスクトップ機を外に出してテストしないといけない

R0048334.jpg

2021-01-13

昼間室内で使用したら使い物にならないくらい性能が悪化していた。直射日光は当たっていないが明らかに影響を受けている。太陽光の影響でセンサーが飽和しかけて反応しにくくなっているのではなく本来反応してはいけないセンサーが反応する。弾速計の製作で経験したように弾丸に当たる赤外線の影響を受けているのかもしれない。波形は黄色がセンサー直列抵抗を10k->4.7kΩに変更したもの。水色が10k。高速移動するものにはこのように反応しにくくなるがゆっくり遮ると逆の特性になる

R0048342.jpg

2021-01-15

LEDの出力が足りないようなので電流を上げる。電流制御回路のトランジスターの発熱が大きいのでLEDは2個直列にした。赤外線パワーLEDのVfは0.2A流して実測1.25V。写真は2個直列で2.5V

R0048346.jpg

フォトダイオードの回路。シンプルな電流電圧変換回路。コンデンサーの充放電電流が出力になる。これじゃダメなような気もしている。今のところ安定して動作するのは室内でも太陽光の影響を受けなくなる時刻。実験している場所は昼頃まで近くの窓から日が入るので安定動作するのはPM3:00以降

R0048348.jpg

ピエゾセンサーが届いたので実験。電線は自分で配線するタイプ。1個¥10。鉄板に瞬間接着剤で貼り付けた

R0048349.jpg

エアガンで鉄板を撃った時の電圧。端子間は解放。peak-to-peakで100V近くある

R0048350.jpg

解放電圧が大きすぎるので端子間に0.1μFのコンデンサーを入れた。適当な閾値電圧を設定して弾着判断するだけで実用になる

R0048352.jpg

2021-01-16

下側の基板には日が当たっていないがセンサーが飽和していた。しばらく抵抗値の見直しをする

R0048358.jpg

プレートターゲットの実験回路。瞬間接着剤で貼り付けたセンサーは剥がれてしまった。弾着の衝撃で取れやすくなる。ホットボンドで貼り付け直した。鉄板を撃つと弾が割れるので木片を両面テープで貼り付けてある。的の材質は多分固い物なら何でもいけると思う

R0048354.jpg

高電圧が発生するのでダイオードでクランプしておく。オペアンプの電源が入っていないときに撃つと多分オペアンプが飛ぶ。初段は電流-電圧変換回路。ダイオードでクランプしているので電圧増幅しようとするとセンサーで発生した電力のほとんどがダイーオードで消費されてしまう。電流-電圧変換回路ならセンサー両端子間はバーチャルショートするのでダイオードに電流は流れない。R2,C3はローパスフィルター。ローパスフィルターを通すと振幅が小さくなるので次段の非反転増幅回路で20倍

R0048366.jpg

波形。上が回路の出力。下段は初段のローパスフィルター通過前の波形

R0048355.jpg

構想。標的を相互にデイジーチェーン接続して多標的システムを構築できるようにする。通信するので遅れが発生するが固定長データなら遅れ量は一定なので大きな誤差は出ないはず。デイジーチェーンの利点は標的数をいくらでも増やせること。欠点は各標的にMPUが必要になることと上記の通信による遅れ

R0048360.jpg

一基¥1000以下に収まるがプリント基板が無いと作るのが面倒。センサーアンプ回路だけならユニバーサル基板でも作りやすい

R0048365.jpg

2021-01-17

簡易シューティングタイマー。回路は別ページにまとめた

R0048372.jpg

2021-01-23

抵抗値は変更してもあまり変化がないが1kΩでしばらく実験を続ける

R0048388.jpg

背景に太陽光が当たっているとダメ

R0048407.jpg

赤外線LEDが遠方にあると広い範囲を遮光しないといけないので鏡を置いてみた。表面鏡ではないので時々歯抜けになるが全く使えないという事はない。表面鏡にすれば問題は起こら無くなるはず

R0048421.jpg

2021-01-27

厳重に遮光しないと動きそうもない。段ボールを古紙回収に出してしまったのでスーパーでもらってくる予定

R0048459.jpg

プレートターゲット用の回路も設計しておいた。何かのついでに基板を発注する

R0048466.jpg

2021-01-29

プレートターゲット。5mmソルボセイン2枚重ねでもセンサーは反応する。音は劇的に小さくなるが跳ね返りは抑え込めない

R0048477.jpg

2021-01-30

CH340もFT232もWindows10で自動インストールされず。FT232はドライバーがどれなのかわからない。秋月電子の商品説明を見てやっとわかった。FT232はVCPドライバー。そもそもメーカーのページが分かりにくいのが原因ではあるが最近のGoogleはなかなか目的のページにたどり着けなくなってきている。特に技術情報はbing等別の検索エンジンの併用が必要

R0048478.jpg

これで正常に動作する。弾受けと遮光段ボールの隙間から直射日光が入ってしまうので合板を立てかけてある。正面は開いていて問題無い。段ボール箱は1個だけ。2個目は使わなかった

R0048484.jpg

2021-01-31

段ボール箱2個でも実験。1個と2個では状況が少し変わる

R0048495.jpg

赤外センサーも熱収縮チューブで遮光したものと遮光無しで実験

R0048488.jpg

段ボール1個。左チューブ遮光有り、右無し。遮光無は歯抜け

R0048486.jpg

段ボール2連結。チューブ遮光ありはだいたい3個反応。チューブ無は4個反応が多い。光源に近い位置を弾が通過すると多く反応するが大体同じ位置を撃っている

R0048492.jpg

2021-02-01

センサーの周囲に隙間が無く遮光がやりにくいので基板を作り替えることにした

R0048497.jpg

遮光板に電源回路を移した。センサー基板の上にこの遮光基板を段重ねする。プレートターゲット用のarduinoMINIが届いたら他の基板と一緒に発注する

R0048496.jpg

2021-02-05

arduino pro mini が届いたので動作確認。特に問題無し。基板の発注は春節で工場が休みなので2週間待つ必要がある

R0048506.jpg

2021-02-22

春節が終わったので基板を発注。これはプレートターゲットの子機。工場は明日から動き出すらしいが春節明けは溜まった注文の処理に時間がかかる

R0048656.jpg

2021-03-06

基板が届いた

R0048668.jpg

一か所誤配線があった。しばらくソフト開発が続く

R0048677.jpg

2021-03-21

RJ45コネクターは表示装置側との接続用なので実装していない

R0048760.jpg

2021-04-04

ピエゾセンサーの電線を5.5mにしてテスト。特に動作に問題無し。たぶん10mでも動く。LEDの輝度は低く屋外では見えない。室内専用

R0048826.jpg

2021-05-18

数珠つなぎテスト。子機のプログラムは全部同じ。子機は自分が何番目につながっているかを認識していない。親機方向にデータを送信するときにデータに含まれるID番号に1加算する。親機から子機方向へはID番号を1減算する。この仕組みでどの標的に弾が当たったか識別できる

R0049015.jpg

2021-05-19

ソフト完成。基板を捨てるのももったいないので子機¥600/台,親機¥800程度でキット化販売する。但しArduino、電源、LANケーブル、標的板などは含まないので総額では親機¥2200、子機¥1100/台程度の価格になる。LEDディスプレイは屋外では数値が読めないので室内専用。子機はソフトウエア上最大31個接続できる。LANケーブルを電力ケーブルとして使っているのでせいぜい1Aが限界。子機は1個で100mA流れるので子機10個がハード上の上限。電源を分ければ31まで使える

R0049018.jpg

2021-05-21

ピエゾセンサーは脆い。プラスチック弾の衝撃が1.6mm鉄板を貫通して裏側に張り付けたセンサーを破壊した

R0049021.jpg

剥離しやすい

R0049023.jpg

磁石経由に変更。ダイソーの30個¥110のフェライト磁石。感度がかなり落ちてしまったのでアンプの抵抗値を変更

R0049024.jpg