So-net無料ブログ作成

ゲイテッドレーザーサイト その7 (とりあえずソフトウェアの2) [PIC]

ちょっとあいちゃったけど続きで。

今木が付いたんだけど、インクルードのところ <と>の話は、HTMLでかぶるので消えるんだね、
知らなかった。

で、今日は48行目から。

48行目ここからプログラムを開始する。83行目まではプログラムを開始するまでの設定
50行目から53行目ここでは、クロックの設定をしてる。ここでは、4Mに設定
58行目から60行目1番ピンを入力に使うのでそれをアナログとして使えるように設定
63行目から65行目入出力方法の設定。アナログ(コンパレータ入力で使う場合も、亜デジタル入力として設定しておく必要がある。
73行目から75行目コンパレータの入力電圧を決める。
78行目から81行目割り込みの設定。PEIEで周辺割り込みを有効にして、CMIEとGIEで割り込みを有効にする。CMIFを0でリセットしないと、次にコンパレータの状態が変化しても割り込みがかからない。
83行目から86行目プログラムが開始された直後にレーザを500mS間点灯させ、起動処理が完了したことを使用者に通知する
90行目から99行目whileのループに1を設定し、このブロックを永久に繰り返す。
91行目ゲート信号がオンになったら、ライトの点灯を開始し、1500mS間のまち、その後消灯する。その後500mS間ガードタイムとして時間を経過させる。再度ループ処理を繰り返す。 gate信号は、コンパレータ割り込みがかかったときに、コンパレータの状態により設定する。

コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その5 (いつのまにか復活) [PIC]

しばらく、沈黙しておりましたが、こっそり続けてた。

電源の問題は、あるものの、とりあえずおいておいて、まずは作ってみることにした。
以前回路図を出してたけど、いろいろにつめるというか、 削っていくと、以下のようになる。

circuit1.png

マイクのゲインが思いのほかよく、これだけで、いけそうなので、マイクの出力をアナログ比較器で比較するとマイクからの信号をPICのコンパレータ入力に直結できる。

コンパレータで閾値電圧以上の信号を検出したら、トランジスタをON にして、LASERを光らせる。


プロトタイプはこれ。
image-20150328000023.png


回路図がクロスしてて醜いけど、使い方がわからんので、このまま。

コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザサイト しばらく休みます。 [PIC]

電力の制御に問題があることが発覚しました。
CR2032一個で使おうと思ってましたが、どうも電圧が足りない。
なので、電源を含めえ最探索中です。

5Vだったらちゃんと動くんだけど、それでレーザー壊しちゃった。
きっちりレギュレートされた3Vを作らないといけない。

これが意外と難しい。
しかも部品をおけるサイズは決まっている。どうしたものか。。。。

コメント(0) 
共通テーマ:趣味・カルチャー

弾速計再び [PIC]

APS-3につけて使うUSB接続の弾速計を使ってて、Androidに使うには、割と問題なかった。
Google SpreadSheet上で作ったシート上に計測結果を記述しその日の点数とともに記述してたんだけど、
携帯をIPHONEからAndroidにかえて使ってみると、動かない!

まずは、SpreadSheetの仕様が違うので、カーソル移動方法を変更していたが、なんとPC上での使用と同じ様にタブで右に動けるようになった。
しかし、弾速を入力するときたとえば、80.25とかが入力されるときに、80までしか入らない。
わざわざUSBの普通のキーボードを買ってきて、同じストロークを入れると、ちゃんと表示される。

USBデータをキャプチャしてみてみると、キーボードが押されたイベントと、離されたイベントが交互に出るのが本当であるが、どうも離されたイベントが連打されているバグが、弾速計の擬似キーボード処理にあったので、これが、問題なのかなと思って、修正。でも改善しない。

いろいろやったが、改善しないので、一度SpreadSheetをあきらめ、メモ帳とかに入れてみると、 なんとちゃんとはいってる!

そういうことかと、Excelをダウンロードしてみたら、これまたちゃんと動く。
弾速を入力後次のセルにちゃんと移動する。

てめー、SpreadSheet、俺の時間を返せー

と叫んでみたところで、強者が応じてくれるわけも無く。

ということでしばらくExcelで弾即計。
弾速.png

間違い


コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その4 (改めて射撃音を考えよう) [PIC]

冒頭:あまり関係ないとは思うけど、まだAPSと直接関係無いので、過去の記事も含めてカテゴリをPICに変更。順調に読む人も減ってるし。

入力回路として以下の回路を使う。

headRoom.png

前にも書いたとおりマイクとしては、シリコンマイクを使う。物としては、SP01030NCという中華なシリコンマイクだ。このマイクの面白いところは、ゲインコントロールがマイク自体にあり、ゲインコントロールに抵抗とコンデンサをつなげることで、増幅率とハイパスフィルタのカットオフ周波数を調整できる。といっても
6db/Octだから普通のQのあまり高くない1次のフィルタではあるが。
ここに10Kの半固定と0.47uFのコンデンサをつけて、実際にAPS3のシリンダをマイクのすぐうえにおいて
撃発してみる。このときのオシロスコープで観測した画像をいかにしめす。

iphone/image-20150213192241.png

画面の写真なのでちょっと見にくいけど、この信号は、マイクの3番の信号を直接観測している。
画像において少し太めの白の点線が二本あるが下のほうの白の点線は、0Vを表し、上の白い点線は、2.25V付近においており、たてのDivisionは1ブロックあたり0.5Vである。横のDivisionは5mである。

このシリコンマイクには、3Vのリチウム電池(CR2032)が電源として接続されている。であるので、電源的なフルレンジは、1番上のDivisionと、1番したのDivisionの間となる。
このマイクのバイアスはこの絵から約0.8Vであると読める。

下側は0Vでサチッているし、上側は2.5Vでサチッテいる。

先ほどもしめしたように、半固定抵抗によりゲインコントロールが可能であり、感度を落とすことも可能だ。

感度調節によりもっとレベルを低くすることも可能であるので、たとえば、2V越えを検出することにより、この信号が入力されたこととできそうだ。

ただし、コンプレストコッキングによる音声を確認する必要がある。コッキングは”そっと”行うことも可能であるので、そこで、対応するか。



コメント(0) 

ゲイテッドレーザーサイト その3 (ハードウェア) [PIC]

ハードウェアについて考える。
なるべく小さい回路を作りたいので、PICは12F683を使う。
509でもいいけど、どうせならなるべ、サイズが小さくて、中身がでかいほうがいい。
最近は6ピンのもあるけど、そこまでは。。。って感じで。

circuit.png


回路図には描いてないけど、12F683はICSPによる書き込みができるので、ICSPポートを併設しそれを使って書き込む。こうすると、基板上に展開した後も変更が可能になる。

入力としては今回シリコンマイクを使う。まあ、コンデンサマイクと変わらないんだけど、小さく作るのが目的とする。
マイクからの音声をいったんトランジスタでうけ、直列に接続された抵抗により電流を変更し、ゲインを調整する。
トランジスタのhfeは、200ぐらいであるので、2kぐらいのプルアップをかけておけば、0Vまできっちり落ちてくれると想像する。
本当は12f683の内部抵抗値の影響も受けるので、プルアップ抵抗については、カットアンドトライが必要。
#ちゃんとしたプロならば、ここも計算で出すんだろうけど。

出力はトランジスタで電流をいくらでも流せるようにして、40mAをレーザダイオードに流すようにする。電流制限抵抗値も計算する必要があるが、電池が3Vなので、たぶん不要でいいとおもう。

コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その2 (動作状態遷移) [PIC]

deli氏により、とってもナイスな提案をしていただいたが、部品代が上がってしまうので、今回はパスをさせていただくことにした。実際に作るところまで行ってどうしてもほかに手がなかったら、それも含めて再検討するかもしれない。

3軸加速度センサからのデータを、銃身方向の回転、銃身に水平方向の回転を検出し、ある程度の範囲に来たときに、すべての動作を許容する事になるが、今回使用予定のコンピュータは、8pinの格安仕様で、メモリ容量が少ないので、難しいかなと判断したためである。

18F14k50 位のサイズが使えれば、もう少しいけると思うんだけど。

今回のお題は、なるべく小さく作らないといけないので、サイズも結構重要。

ということで、今回使用するコンピュータは、PIC12F683というもの。初めて使うものなので、うまく動かせるかどうかも不明ではあるが。

それでは、話を戻そう。

昨日、提示した状態遷移を表に起こすと以下のようになる。

GatedLaserSightStates.png

ここで、横軸は、状態、縦軸はそのとき入力された信号を示し、それぞれ、

名前意味動作
stIdleアイドル状態。すべての処理の基底状態音声入力があるまで待機する
stGateゲート状態。レーザを発光させた状態レーザを発光させ、フォロースルータイマを開始する
stGuardガード状態。レーザ消灯後、すべてのイベントから動作を保護するレーザを消灯させ、ガードタイマ満了を待ち、ガードタイマ満了を持って、アイドル状態に移行する
stCancel検出禁止状態すべての動作をキャンセルタイマ満了するまで無視する。
evSound音声入力検出された音声。アイドル状態では、ゲート状態に移行し、ゲート状態では、検出禁止状態に移行する
evGateフォローする時間満了レーザを発光を停止し、ガード状態に移行する
evGuardガード時間満了ゲート時間中に音声を検出したときは、しばらく のイベント検出を無効化するガード状態が満了したことを示す。アイドル状態に移行する


状態遷移型プログラムとして、上記を記述するといいことになる。
stGuardとstGateは良く見ると時間だけが異なるだけで、タイマー以外のイベントをすべて無視するという動作は同じなので、状態によりタイマー値を変更することも可能であるが、プログラムの構造を簡単にするために、別々の状態として考えることにしよう。



コメント(0) 
共通テーマ:趣味・カルチャー

ゲイテッドレーザーサイト その1 (トリガーの検出のために) [PIC]

一般的なレーザーサイトは、常時点灯しており、撃発の前後で動作をかえることはない。
ディレイドレーザーサイトと名をつけたが、何かに関して遅延して発光するわけではないので、良く考えると間違いなので、これからは、ゲイテッドレーザーサイト(Gated Laser Sight)ということにする。
#いきなり仕様変更などとは言わないように。
ゲイテッドとは、門で囲われたということで、昔のシンセドラムのゲイテッドリバーブ(時間幅を限定したリバーブ)という音もあったし、発想は良く似てるので。

レーザーサイトの発光時間に幅を持たせるには、まずトリガーの時刻を検出する必要がある。時刻といっても何時何分何秒みたいな数字が必要なのではなく、

”いま、発射した”

がわかればいいだけではあるが。

APS-3で、検出できそうなトリガーの検出方法は、

・ストライカーがレシーバへ接触したことを電気的に検出する(いわゆるスイッチ)
・ストライカーがレシーバへ激突したことを音響的に検出する(マイクによるスイッチ)
・ストライカー、レシーバを改造し、光学的に検出する
・トリガーの位置を工学的に読み取り、撃発後最終位置を検出する
があげられる。

あげたけど、実質的には、激突音を音響的に検出する以外は、APS-3に対しての改造が必須になるので、不適である。

そこで、銃近傍で、録音した音声により、は、以下のようになっている。

singleshot.png

これは、プレートの第一ターゲットへ射撃時の周囲音を、銃近傍で、録音したものである。
開始から、”プレートスタンバイレディ”の音声
3.5秒付近からプレートブザー音
6.4秒付近からストライカー音と、銃の共振音
8.0秒付近からコッキング音

が観測される。

検出しなければいけない音声は、6.4秒付近で観測されるが、問題はそれ以外の音も聞こえてしまうことだ。ストライカー打撃音だけでしか聞こえないのであれば、スレッショルドを超えた音が検出された時点から数秒発光するようにすればいいだけ出会った。

しかし、今回の音をみてみると撃発とほぼ同じ量の音が存在する。コッキング動作だ。

コッキング動作の音は、質量の大きな部品がきっちり動いた結果なので、これを消すことは至難の業となりそうだ。そこで、この波形をみながら、何回も何回も聞きなおして、対策を考えることとしよう。

音の特性を見てみると、撃発を終わり、コッキング操作を終わるまで、約4秒。コッキング動作だけを見ると約2秒となっている。
ということは、フォロースルーを3秒に設定し、直後に5秒間の音声検出禁止区間をつけることで、うまく避けることができそうである。

つまり、
撃発検出後、 フォロースルー時間経過後、音声検出禁止区間を得て、検出待ち状態に戻る。
これを案1とする。

一見、案1はうまく動作するように見える。しかし、弾を発射する動作の前には、必ずコッキングをしなければいけないので、そこで検出されて、フォロースルー期間が開始される。コッキングを開始してあと、ふぉロスルー時間3秒、撃発禁止時間5秒間は、使えないことになる。高々8秒間なので、このままでもいいかもしれないが、もう少し短くしたい。

そこで、
撃発検出後、1秒以内に音を検出した場合、そこで、即座に消灯し、2秒間の音声禁止区間を置いた後、検出開始、すなわち、案1の初期状態に戻ることとする。

これを状態遷移図に示すと以下のようになる。

gatedSightStates.png
ここで、この状態遷移図の記載方法はちょっと一般的なものと違うが、わかると思う。


これをどのように実装するかを次回以降で考える。
メモリが少ないからこれは大きすぎるかもしれないが。



コメント(2) 
共通テーマ:趣味・カルチャー

14k50 のデバッグ [PIC]

デバッガが使えないからめんどくさい。
だれか便利なやりかたしってたら、教えてください。

追記


コメント(0) 
共通テーマ:趣味・カルチャー

ケース加工でなんてこったい (シューティングタイマー) [PIC]

というわけで、分解した電卓からシューティングタイマーにすべくケースを加工するわけだが、まあ難しい。

加工前のケースは、これ。
CIMG2641.jpg

問題は、スピーカー。開口面積を多くしたいので、なるべく大きく取れるように最初は3mmのドリルで穴をいっぱい開ける計画だったけど、きれいに並ばないので、ヤスリで削ったら、まあ、不恰好になった。

CIMG2642.jpg


一応この穴の明け具合で、本体に取り付けると、

CIMG2643.jpg
こんな感じ

というので、これはMODELAを使って切削だ! といって、CADで図面書いて、もう一個あるケースをつかってMODELAにかけてみた。一晩掘っておいて朝見ると、あるはずのケースが無い!

なんと削りカスがエンドミルに絡み付いて、それがケースを引っ張りあげて、全部抜けきらないときに、ほかの位置に動こうとして斜めにきっかり貫通筋がいれる。そうすると位置が微妙にずれるので。。。を繰り返して保持用の捨て板から外れたらしい。
CIMG2645.jpg

この写真は、ためしに削られるように取り付けられた、ケース。

これに化粧板つけるんならそれでもいいとは思ったけど、ちょっと悔しいので、四角穴と丸穴をMODELAで開けるプログラムをエクセルで作成!
これでどうだ。


まあ、保持用の捨て板がスタイロフォームなので、何回かゆすってるとへっこむんだけどね。

結果は明日、削ってみることにする。

#またケース買ってこないと。

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。