GWのガイガーカウンタ自作チャレンジ(2台目)(4) 一旦終了
やっと、GM管から、パソコンまで、回路的につながりました。GM管の出力信号も、なんとか記録されることも確認できました。これで、秋葉原のパーツショップの商品(電子部品類)のみで、ガイガーカウンタが作れることも確認できた。
なお、出力パルスの録音アプリは、フリーウェアAudacity(MacOSX版)を使って、32KHzサンプリングで、signed 8bit AIFFファイルに書き出してます。このデータから、パルスの数を自作プログラム(下記)で、計数したところ、通常ケースは、7CPM(換算0.058μsV/h)、マントルを付けたケースは、52CPM(換算0.433μsV/h)となりました。オーダ的には、SDM2000Uと同じだったので、出来はまあまあかな。
GM管の出力パルスに、細いのと太いのがあるのが分かったが、細いのは、ノイズ(音として多めにバリバリ鳴ってる)かしら? しかし、GWのほとんどを費やしてしましった(T^T)ウック! あとは、定時定点観測用のブラシュアプだが、これは、後日、やろう。回路図は、昨日と同じ、、、、
こんな感じだが、幾つかの電子部品(電源トランスなど)は、定格以上で使用しているので、要注意です。47Ω/5Wが意外に熱くなっている。現状の回路ベースでの改善の方向性としては、測定するときだけ、発信器を稼働させて、当該抵抗器の発熱時間(連続最長数分間ぐらい)を短くするとかな。
【AIFFファイルからパルスカウントプログラム】 (MacOSX 10.6.7/XCODE)
// 入力ファイルが1分間分で、32KHzサンプリングで、signed 8bit AIFF形式という前提のプログラムです。
// また、電圧が低過ぎるパルスは、回路の仕様上無いはずなので、ノイズとして、カウントしません。
//
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
struct HEADER_CNK {
u_int32_t ckID;
int32_t ckSize;
u_int32_t formType;
};
struct HEADER_COM {
u_int32_t ckID;
int32_t ckSize;
short numChs;
u_int32_t numSam;
short samSize;
char samRate[10];
};
struct HEADER_SSND {
u_int32_t ckID;
int32_t ckSize;
u_int32_t oft;
u_int32_t blkSize;
};
main( int argc, char **argv )
{
int fp;
int ret;
struct HEADER_CNK hCnk;
struct HEADER_COM hCom;
struct HEADER_SSND hSsnd;
char sd;
char sd_prev;
char sd_prev_prev;
double svh = 0.0;
int cnt = 0;
fp = open( argv[1], O_RDONLY );
if (fp == -1) {
fprintf( stderr, "ERROR(%d), %s\n", __LINE__, argv[1] );
return -1;
}
ret = read( fp, &hCnk, sizeof(hCnk) );
ret = read( fp, &hCom, sizeof(hCom) );
ret = read( fp, &hSsnd, sizeof(hSsnd) );
for ( cnt=0, sd = sd_prev = sd_prev_prev = 0; ; ) {
ret = read( fp, &sd, sizeof(sd) );
if ( ret < 1 ) break;
if ( sd < 0 ) sd =0;
if ( (sd > 0) && (sd_prev > 0) && (sd_prev_prev == 0) ) cnt++;
sd_prev_prev = sd_prev;
sd_prev = sd;
}
close( fp );
// CPMからμsV/hへの変換は、0.00833をかけ算すれば良いみたいだ。
svh = 0.00833 * (double)cnt ;
fprintf( stderr, "%d, %d, %d, count = %d, sv/h = %e\n",
hSsnd.ckSize, hSsnd.oft , hCom.samSize, cnt, svh );
}
【まとめ】
【AIFFファイルからパルスカウントプログラム】 (MacOSX 10.6.7/XCODE)
// 入力ファイルが1分間分で、32KHzサンプリングで、signed 8bit AIFF形式という前提のプログラムです。
// また、電圧が低過ぎるパルスは、回路の仕様上無いはずなので、ノイズとして、カウントしません。
//
#include <stdio.h>
#include <sys/types.h>
#include <fcntl.h>
struct HEADER_CNK {
u_int32_t ckID;
int32_t ckSize;
u_int32_t formType;
};
struct HEADER_COM {
u_int32_t ckID;
int32_t ckSize;
short numChs;
u_int32_t numSam;
short samSize;
char samRate[10];
};
struct HEADER_SSND {
u_int32_t ckID;
int32_t ckSize;
u_int32_t oft;
u_int32_t blkSize;
};
main( int argc, char **argv )
{
int fp;
int ret;
struct HEADER_CNK hCnk;
struct HEADER_COM hCom;
struct HEADER_SSND hSsnd;
char sd;
char sd_prev;
char sd_prev_prev;
double svh = 0.0;
int cnt = 0;
fp = open( argv[1], O_RDONLY );
if (fp == -1) {
fprintf( stderr, "ERROR(%d), %s\n", __LINE__, argv[1] );
return -1;
}
ret = read( fp, &hCnk, sizeof(hCnk) );
ret = read( fp, &hCom, sizeof(hCom) );
ret = read( fp, &hSsnd, sizeof(hSsnd) );
for ( cnt=0, sd = sd_prev = sd_prev_prev = 0; ; ) {
ret = read( fp, &sd, sizeof(sd) );
if ( ret < 1 ) break;
if ( sd < 0 ) sd =0;
if ( (sd > 0) && (sd_prev > 0) && (sd_prev_prev == 0) ) cnt++;
sd_prev_prev = sd_prev;
sd_prev = sd;
}
close( fp );
// CPMからμsV/hへの変換は、0.00833をかけ算すれば良いみたいだ。
svh = 0.00833 * (double)cnt ;
fprintf( stderr, "%d, %d, %d, count = %d, sv/h = %e\n",
hSsnd.ckSize, hSsnd.oft , hCom.samSize, cnt, svh );
}
【まとめ】
- アキバでも、必ずしも、予定している電子部品が手に入るとは限らない。代用品も、知恵を絞ろう。
- 携帯型スロレージオシロDSO nano v2は、便利。
トラックバック(0)
このブログ記事を参照しているブログ一覧: GWのガイガーカウンタ自作チャレンジ(2台目)(4) 一旦終了
このブログ記事に対するトラックバックURL: http://the.nerd.jp/blogs/cgi-bin/mt-tb.cgi/4584