スポンサーサイト

上記の広告は1ヶ月以上記事の更新がないブログに表示されます。
新しい記事を書くことで、こちらの広告の表示を消すことができます。  
Posted by ミリタリーブログ at

2019年04月09日

電子トリガーを作る その2

その1の続き。
今回はセミオート射撃をできるようにします。

セミオート射撃のために、カットオフを検出できるようにします。
セクターギアに開いている穴に直径5mmの磁石を埋め込み、これをホールICで検出します。



メカボックス越しでは磁力を検出できなかったので、穴を開けます。


ユニバーサル基板にホールICを半田付けし、取り付けのためにメカボックスにネジを切りました。



プログラムは以下の通り。
//カットオフテスト用
//入出力ピンの名称変更
#define SEMI_SW 4 //セミオートスイッチ
#define CUTOFF_SW 3 //カットオフセンサー
#define MOTOR 9 //モーター制御出力
#define LED 13 //マイコンLED
//定数の宣言
const int Chata = 0; //チャタリング防止(マイクロ秒)
const bool ON = LOW; //スイッチ用定数、混乱防止のため
const bool OFF = HIGH;
//変数の宣言
int Fire = 0; //発射制御用変数
bool Coff = LOW; //カットオフセンサー用変数
bool Old_Coff = LOW;
bool SemiTrg = HIGH; //セミオートスイッチ用変数
bool Old_SemiTrg = HIGH;

void setup() {
   //入出力ピンの設定
   pinMode(SEMI_SW,INPUT);
   pinMode(CUTOFF_SW,INPUT);
   pinMode(LED,OUTPUT);
}
void loop() {

   //現在の各スイッチの状態を検知
   Coff = digitalRead(CUTOFF_SW);
   SemiTrg = digitalRead(SEMI_SW);
   
   //カットオフスイッチの状態をLEDで表示
   if(Coff == HIGH){
      digitalWrite(LED,HIGH);
   }
   if(Coff == LOW){
      digitalWrite(LED,LOW);
   }

   if(Fire >= 1){
      analogWrite(MOTOR,254); //変数Fireが1以上のときモーター作動
   }
   if(Fire > 1){
      //カットオフ処理
      if(Coff == HIGH && Old_Coff == LOW){
         Fire = Fire - 1;
         /*カットオフスイッチがLOWからHIGHなったときに
          *変数Fireの数字を1引く
          */
     }
     if(Coff == LOW && Old_Coff == HIGH){
        /*物理スイッチを使用する際のチャタリング防止用      
         */
     }
     Old_Coff = Coff;
   }
   if(Fire == 1){
      if(Coff == HIGH && Old_Coff == LOW){
         analogWrite(MOTOR,0);
         Fire = 0;
         /*変数Fireが1に等しい場合、
          *カットオフスイッチがLOWからHIGHになったとき
          *モーターを停止する
          */
      }
      if(Coff == LOW && Old_Coff == HIGH ){
        /*物理スイッチを使用する際のチャタリング防止用      
         */
      }
      Old_Coff = Coff;
   }
    
   if(Fire == 0){
      /*トリガー処理、変数Fireの値が0の時のみ
       *トリガー入力を受け付ける
       */
      analogWrite(MOTOR,0);
      if(SemiTrg == ON && Old_SemiTrg == OFF){
         Fire = 1;
         /*トリガーがOFFからONになったとき
         *変数Fireに1を代入する
         */
      }
      
      if(SemiTrg == OFF && Old_SemiTrg == ON){
         delayMicroseconds(Chata);
         /*トリガーがONからOFFになったとき
          *チャタリング防止のため
          *変数chataマイクロ秒停止する
          */
      }
      Old_SemiTrg = SemiTrg;
   }
    
   if(Fire < 0){
      Fire = 0;
   }
}
動かすとこんな感じ。
  

Posted by 名無しのナナシ at 22:11Comments(0)エアガンカスタムエアガンマイコン

2019年04月08日

電子トリガーを作る その1

電子トリガーに興味を持ち、色々と調べてみたら
こんなものを見つけて、自分でも作れそうだったので
作ってみることにしました。

以前、ガスガン内蔵ヒーター制御装置を作る際、テストに使ったArduino Nano互換機。
これを使います。
プログラム用のソフト他はこちらを参照してください。


まずはモーターを動かすモータードライバを作ります。
見つけた回路図をほぼそのまま流用して作りました。
詳細についてはこちらを参照してください。


回路図のマイコンVINと出力PINの所をスイッチで繋ぐとそのまま動かせます。


次はマイコンを繋いでテストします。
プログラムは以下の通り。

//モータードライバーテスト用
void setup() {
  pinMode(2,INPUT);
  pinMode(3,INPUT);
  pinMode(4,INPUT);
}

void loop() {
 if(digitalRead(2)==HIGH){
    analogWrite(5,255);   //出力100%、しばらくすると動かなくなる
 }
 else if(digitalRead(3)==HIGH){
    analogWrite(5,123);   //出力50%
 }
 else if(digitalRead(4)==HIGH){
    analogWrite(5,254);   //出力99%、連続使用できる限界
 }
 else{
 analogWrite(5,0);
 }
}
このプログラムをマイコンに書き込み、マイコンのD2,D3,D4にスイッチ、D5に出力PINの所を繋ぎ
動かすとこんな感じです。
このモータードライバーは連続して動かすことができないので、
PWM出力でブートストラップコンデンサを充電する時間を作る必要があります。


次回から電動ガンへの実装を行います。  

Posted by 名無しのナナシ at 23:26Comments(0)エアガンカスタムエアガンマイコン

2019年04月02日

NcStar ADO 3 – 9 x 42mmスコープ&レッドドットサイト

新しく買ったエアガン用にアマゾンに売っていた
NcStarというメーカーのスコープを買いました。




箱の中に専用ケースとスコープがありました。



スコープ本体の見た目。
近未来的なデザインが気に入っています。


スコープを覗くとこんな感じ。


付属している説明書等。
すべて英語で書かれています。



スコープのエレベーションとウィンデージダイヤル。
エレベーションは下に付いています。


ドットサイトのエレベーションとウィンデージダイヤル。
マイナスネジを回して調整します。


本体上部のコントロールパネル。
手前の四角ボタンがスコープ側、奥の丸ボタンがドットサイト側の光量調整です。
中央のボタンでスコープイルミネーションの色を変更できます。
スコープのイルミネーションをオンにするには+ボタンを長押し、 オフにするには+と-ボタンを同時押しします。




ドットサイトは可倒式で左側にロック解除レバーがあります。
ロックを解除すれば自動で立ち上がり、ドットサイトがオンになります。
手で倒せばオフになります。




スコープとドットサイト共通の電源としてCR123A電池を1つ使います。



新しく買ったエアガンに取り付けてみました。
  
タグ :NcStar

Posted by 名無しのナナシ at 00:06Comments(0)装備