電磁弁銃作成記 その6

2020年5月30日サバゲーサバゲー,エアガンカスタム

前回はとりあえず発射する機構はなんとかなった。↓

次は電磁弁に一瞬だけ電流を流す機構を作っていく。今回は少しジャンルの違う話題になるだろう。

電磁弁銃を自作する その6

電磁弁銃に必要な制御回路

普通の電動エアガンには物理的なスイッチのみで、制御回路はついていないようだ。ではなぜ電磁弁銃に制御回路が必要なのか。

「電磁弁を開いている時間」というのは「電磁弁に電流を流している時間」に準ずる。例えば普通のエアガンのようにトリガーにスイッチを直接つけてしまうと、「トリガーを引いている間ずっと電磁弁が開きガスが流れ続ける」ことになるがこれは望ましくない。理想なのは「トリガーを引いている時間に関わらず一瞬だけ一定量のガスが流れる」のが望ましい。

それを実現するためにこれからワンショットパルス回路と言う物を作成していく。これが無ければ電磁弁銃は初速が安定せず、きちんと動作しない。

ワンショットパルスはArduinoで作る

調べたところ方法はいくつもあるが、私はArduinoというもので作成することにする。ArduinoとはC言語などによってプログラミングできるマイクロコンピューターの一種である。操作が簡単で周辺機器が豊富、よく教育機関でも利用されている。

しかしいくら簡単だと言っても私は使用した経験がない。なので勉強しながら作業をしていきたい。実は前回の記事でぶち抜いた段ボールだが

秋月電子

中身はこのようになっている

電子部品

秋月電子からの荷物だったのだ。はんだや電子部品、スイッチ類など買いこんでおいた。その中でもこの足がいっぱい生えている部品がArduinoである。

Arduino

Arduinoを使ってみる

ArduinoIDEの入手

まず必要なのがIDEと呼ばれる開発環境である。これは無料で配布されているので下記サイトからダウンロードする↓

arduinoIDEダウンロード

私の環境では勝手に翻訳されてしまっているが本来は英語だ。赤枠の部分をクリックしてソフトをダウンロードする。

Arduino IDE

ダウンロードしたものを開くとこのような画面が出てきた。ここにプログラムを打ち込んでいくようだ。

Arduino IDE

実際に動かしてみる

まずブレッドボートという仮設回路を作る板にArduinoを突き刺す。

そして本体に ケーブルを接続する。ケーブルはAndroidスマホなどの充電用ケーブルと規格が同じだった。

アルディーノ

その後プログラムをArduinoに書き込む。今回は通称「Lチカ」と呼ばれる「LEDチカチカ」プログラムを書いた。一秒ごとに10PINの電圧を上げたり下げたりする。IDEで画像の赤丸部分をクリックすればプログラムをコンパイルして書き込んでくれる。

アルディーノ

その後下記のように配線を行うと 目論見通りLEDがチカチカし始めた、成功である。

回路図
Arduino

電磁弁銃用のArduinoプログラム

実際に電磁弁用のプログラムを書くことにする。下記が今回のプログラムだ。

ボタン読み込みは2ピンでプルアップ設定。電磁弁への出力は13ピン。それと変数を二つ定義しておいた。

基本的にボタンが押されたら電磁弁を一瞬開閉する。

また、ボタンが押されたことを検知したら0.02秒後にもう一度ボタンが押されていることを確認する処理を入れてる。これはスイッチがバウンドしてしまい、何度もボタンを叩いてしまう「チャタリング」を防止するためである。

//変数定義
const int botanpin = 2;
const int denzivenpin = 13;
int botanzyoutai = 0;
int matizikan =0;

//セットアップ
void setup() {
pinMode(denzivenpin, OUTPUT);
pinMode(botanpin, INPUT_PULLUP);
}

void loop() {
// ボタン読み込み
botanzyoutai = digitalRead(botanpin);
//ボタンが押されてた場合、一定時間後もう一度読み取り。そこでボタンが押されていたら確定
if (botanzyoutai == LOW) {
//チャタリング防止
delay(20);
if (botanzyoutai == LOW) {
//電磁弁を一定時間開
digitalWrite(denzivenpin, HIGH);
matizikan=analogRead(100);
delay(matizikan);
digitalWrite(denzivenpin, LOW);
//ボタンを離していなかった場合、離すまで待つ
while(botanzyoutai == LOW){
botanzyoutai = digitalRead(botanpin);
}
//チャタリング防止
delay(20);
}
}
}

これでひとまずokだろう。多分。

まとめ

これで初めての発射プログラムはなんとかなったぜ!

後の回路はまた今度。電圧変換したりトランジスタでスイッチ作ったりしなきゃだめだもんね。

次回は多分メカボックスの加工かな!ってことでよろしく。

Posted by mottiy