CATEGORY:電動ガン

2017年08月26日

ブレーキ付き自作FCUの纏め(uki)

ようやく、、完成しました。

それで、、、いつもこういうの作っては、完成纏めメモを紛失し、後日問題が起こった時に買い替えるしかない。そういうパターンを辿ってきました。
なので纏め。


■初号機
ブレーキ付き自作FCUの纏め(uki)
電動ガンの自作FETスイッチでおなじみのMOS-FET1つによる自作電子トリガーをarduino microで駆動させるもの。
こちらのスケッチ(動作プログラム)で駆動させるも、チャタリングを拾いまくった挙句、セミがバーストになったり、トリガーを戻す動作で弾が出たりする暴虐な銃に変貌。
いつの間にかICをショートさせてしまいタヒ亡。

■2号機
ブレーキ付き自作FCUの纏め(uki)
MOS-FETを2つにして、ハーフブリッジドライバも搭載。
イメージ的には、自作FETスイッチにMOS-FETをもう一つ足して、回生ブレーキを付けたもの。
テスト回路では大成功。
小型化を目論み、arduinoはmini pro(の互換品)に変更。
しかし、実装時に右往左往する中で、バッテリーを逆に繋いでしまい、無事タヒ亡。

■そして、3号機
ブレーキ付き自作FCUの纏め(uki)
コンデンサがとても、、、大きいです、、、、。
スイッチユニットも要りませんから、スペースを贅沢に使えます。
arduino miniじゃなくて、USB直刺しできるタイプにした方が、現地で調整できたりして良かったのでは、、、。とりあえずコネクタ付けようかな、、。
表面実装タイプにしてズラッと並べた方が良いかも。
そうすればSIG552にも組み込めそう。
基盤オーダーいっときますか。STRIKE HOUNDロゴも入れるぜ?


■要らなくなった部品。
ブレーキ付き自作FCUの纏め(uki)
カットオフレバーや、逆回転防止ラッチ等のカチャカチャ鳴るものが根こそぎ無くなり、とても、、、静かです、、、、。
また、トリガーはマイクロスイッチですので、トリガーバーも必要ありません。
トリガープルの改善効果も絶大であります。


■部品リスト
ゴールにたどり着くまでに右往左往したおかげで、ASCU買えるくらい使ってしまったYO!
マイコン(arduino pro miniの互換品) 265円
マイコンにプログラムを書き込むための部品 245円
ホールセンサー DN6851 2x80=160円
マイクロスイッチ V-101-A5 100円
モーター制御のためのハーフブリッジドライバ IR2302 230円
固定抵抗 47Ω 2x10=20円
固定抵抗 47kΩ 2x10=20円
ダイオード 1N4148 2x20=40円
ダイオード 1N4001 3x20=60円
セラコン 0.1uF 2x15=30円
MOS-FET H7N0308 2x200=400円
電解コン 470uF 2x50=100円(チップコンデンサ100uFをたくさん並べる方が省スペースかも、、)

モーター用電線 赤と黒1mずつ 500円
信号用電線セット 200円
信号線コネクタ オスメス 100円
基盤 100円

合計 2570円
※膨大な手間はプライスレス。初回なら楽しく勉強しながら味わえるはず。2回目からはお金積まれてもやりたくないレベルの苦行となります。陽炎さん買う。
arduino pro miniへの書き込みはこうするとできます。
ブレーキ付き自作FCUの纏め(uki)


■実装のポイント
基盤系はなんとでもなります。
問題は配線。最短でつながるように、半田しやすいように、メンテできるように、、、
この苦労を味わうと、陽炎の設計の凄さをより深く味わえるようになります。マァンダム、、


■回路図
こっちの記事の回路図が最終形です。
もっと単純な回路があるよ!って方、ぜひ教えてください。
いわゆる自作系FETスイッチにブレーキIC挟んだだけです。
小型化が今後の目標の一つになりそう。


■動作プログラム
ArduinoでAEGを動かしてる海外勢も参考にしつつ、最終的なスケッチはこれに落ち着きました。
#define GATE_PIN A0 //
#define LED 13 //
#define T_pin 2 //Y TRIGGER
#define S_pin 3 //BR Sin
#define Svcc 4 //R Svcc
#define C_pin 6 //Y Cin
#define Cvcc 7 //O Cvc
#define chata 5000 //トリガーオフ時のチャタリング防止(us)
#define cook 5 //プリコック(us)3~16000にする セクターギア1/8回転=5000us=5ms

int TRIGGER = HIGH;
int old_TRIGGER = HIGH;
int BULLET = 0;
int Cmag = LOW;
int old_Cmag = LOW;
int Smag = LOW;

void setup() {
pinMode(LED, OUTPUT);
pinMode(GATE_PIN, OUTPUT);
pinMode(T_pin, INPUT_PULLUP);
pinMode(Cvcc, OUTPUT);
digitalWrite(Cvcc, HIGH);
pinMode(C_pin, INPUT);
pinMode(Svcc, OUTPUT);
digitalWrite(Svcc, HIGH);
pinMode(S_pin, INPUT);
}

void loop() {

TRIGGER = digitalRead(T_pin);
Cmag = digitalRead(C_pin);
Smag = digitalRead(S_pin);

//入れておくと何故か誤動作しない
if (Cmag == HIGH) {
digitalWrite(LED, HIGH);
}
if (Cmag == LOW) {
digitalWrite(LED, LOW);
}
//入れておくと何故か誤動作しない

//BULLET pre
if (BULLET > 1) {
digitalWrite(GATE_PIN, HIGH);
//CUT OFF
if (Cmag == HIGH && old_Cmag == LOW) {
BULLET = BULLET - 1;
}
if (Cmag == LOW && old_Cmag == HIGH) {
}
old_Cmag = Cmag;
}
if (BULLET == 1) {
digitalWrite(GATE_PIN, HIGH);
//CUT OFF
if (Cmag == HIGH && old_Cmag == LOW) {
delayMicroseconds(cook);
digitalWrite(GATE_PIN, LOW);
BULLET = 0;
}
if (Cmag == LOW && old_Cmag == HIGH) {
}
old_Cmag = Cmag;
}

if (BULLET == 0) {
digitalWrite(GATE_PIN, LOW);
//Semi Auto Shot
if (Smag == LOW) {
//MAX BULLET
if (BULLET > 1) {
BULLET = 1;
}
//TRIGGER pre
if (TRIGGER == LOW && old_TRIGGER == HIGH) {
BULLET = BULLET + 1 ;
}
if (TRIGGER == HIGH && old_TRIGGER == LOW) {
delayMicroseconds(chata);
}
old_TRIGGER = TRIGGER;
}

//Burst Shot
if (Smag == HIGH) {
//MAX BULLET
if (BULLET > 3) {
BULLET = 3;
}
//TRIGGER pre
if (TRIGGER == LOW && old_TRIGGER == HIGH) {
BULLET = BULLET + 3 ;
}
if (TRIGGER == HIGH && old_TRIGGER == LOW) {
delayMicroseconds(chata);
}
old_TRIGGER = TRIGGER;
}
}

if (BULLET < 0) {
BULLET = 0;
}

}

ザックリとした方向性としては、トリガーを引くとBULLETが蓄えられ、BULLETが1以上の時にモーターが作動。
カットオフの検出でBULLETが1ずつ減っていくというものです。

つまり、一般的な電動ガンや電子制御のように、トリガーを引いている間だけ通電しモーターを回すのではなく、ガスガンやエアコキガンのように、一瞬でも一度トリガーを引くと、途中でトリガーを戻しても発射動作を行うというようになっています。
こうしておくと、セミをタップした際にも体感上のキレが上がり、セミロックが掛かることなく、気持ちの良い射撃フィーリングになるというもの。

ブレーキ付きFETデバイスというものもありますが、こちらは一般的な電動ガンと同じく、トリガーユニットとカットオフレバーに頼った制御となるため、セミ射撃の際はきっちりと引ききる必要があります。
(とはいえ、ブレーキ制御があるだけでもかなり気持ち良いです)

また、自作FCUの部品構成は、トリガーがマイクロスイッチ=機械スイッチとなっており、必ずチャタリングが発生します。
通常ならばディレイを掛ければよいのですが、エアガンなので設計条件が少し特殊です。
条件1、トリガーON時にディレイやカウント等で空白時間は作りたくない(レスポンス重要!)
条件2、トリガーOFF時はなんでも良い
つまり、条件1だけ気にすれば良いというわけです。

というわけで、条件1の解決のため、トリガー入力でBULLET=1へ。
BULLET=1の間はトリガー入力を受け付けませんので、機械側でチャタリングしようが問題無し。
トリガーOFFの際はdelayMicrosecondsにて行いました。
これは、delayと違って、他の平行して進んでいる処理を止めずにdelayを掛けられるようです。
μs単位で設定しますので、適当に5msくらいに。

ところで、「//なぜか入れておくと誤動作しない」の所。
何でこれを入れておくと、カットオフがバッチリ決まるの??


もう1点。
■プリコックの調整
電動ガンの場合、常にバッテリーの電圧が一定でない(徐々に下がってくる)ため、この辺はどれだけ使えるのやら、、。
細けぇことはいいんだよ!がコンセプトなので気にしてないのですが、すっきりするために以下。

一応、セクターギアの様子。
ブレーキ付き自作FCUの纏め(uki)
P90のメカボは何故か色んな位置に小窓が空いていて、そこからセクターギアの側面が見えます。
ここにマーキングをしておくと、メカボを開けなくてもギアの停止位置が分かりますから、ホールセンサーの位置調整やプリコックの調整がやりやすいという訳です。
こちらの3ケ所を書き入れました。こちらの印が、ギア芯の真下に来ているときに、、、
・青線:ピストンが解放された瞬間(通常、カットオフレバーはここで跳ね上げられる
・点小:タペットプレートを引き始める点
・点大:ピストンを引き始める点

モーターの方は、ショートブレーキを掛けているためキュッと止まるのですが、、、
バッテリー満充電(リポ2セル1800mAh)において、カットオフセンサー検知からギア停止までおよそ1/3回転程度しているみたいです。
これを見越して設定すればいいのですが、バッテリー電圧の低下に伴い、ギア停止までの距離が変わるのではと思っています。
この辺はこれからお試しで。
とりあえず、タペットを引き始める直前の位置に調整しました。
毎回、同じ位置に止まっていぃよ~~

こんな図を書いて、考えてみたりもしました。
う~ん。
ブレーキ付き自作FCUの纏め(uki)


■今後の方向性
・省電力化を図る→スリープ機能を持たせられるらしい。コッキングで起動もできる!!
       →Arduinoの消費電力
・コンパクト化→一部だけでも表面実装、、、メカボ筐体をヒートシンクにする等
・回路、スケッチ(動作プログラム)の簡略化
・バッテリーの電圧低下時に、動作ストップをする機能
・PWM出力を活かして何かできるかも?
・ブラシレスモーター、、って美味しいんですかね、、、



□追記
STINGER Airsoft P90用ショートストロークスイッチという大変に便利なものも発売されました。
トリガーの改善だけであれば、正直な所、このパーツの組み込みだけでも十分ではと。
検討してみてください~



自作FCUに関する記事一覧はこちらです
電動ガン P90 のための FCU 電子制御 電子トリガー ユニットを自作する




~ 便利な道具 ~

フィールドでも使える電池式はんだごて、失敗した時のはんだ吸い取り線、細くて使いやすいはんだ、こて台、テフロン銀線も楽々はんだできるようになるフラックス。



タグ :FCUuki

同じカテゴリー(電動ガン)の記事

Posted by strike hound  at 14:59 │Comments(4)電動ガン

COMMENT
BULLET絡みのところにある

if (Cmag == LOW && old_Cmag == HIGH) {
}

にはどうのような意味があるのでしょうか?
Posted by tes at 2017年12月05日 21:35
if (Cmag == LOW && old_Cmag == HIGH) {
}

この検出では何もしないよ!という意味です。
無くても上手く動くかもしれませんが、念のため。
Posted by strike houndstrike hound at 2017年12月06日 10:23
初めまして、ps90HCを最近購入して同じようなことをしようとしている者です。
電子工作についての知識が浅くて回路図など色々参考にさせていただいています。
既出だったら申し訳ないのですが、なぜSvccとCvccでピンを用いてカットオフレバーとセレクターのホールセンサーの電源を出力するのですか?後々セーフティー機能かなんかを搭載するためですかね?
Posted by a at 2018年01月14日 17:08
はじめまして。
今後使っていて動作エラーが起こった際に、原因の特定が簡単だからという理由です。
ただ、ホールセンサーたった2個なので、+5Vのピンから直接電源供給してしまっても良いと思いますよ!
Posted by strike houndstrike hound at 2018年01月17日 16:04
上の画像に書かれている文字を入力して下さい
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。