ラベル Projects の投稿を表示しています。 すべての投稿を表示
ラベル Projects の投稿を表示しています。 すべての投稿を表示

2020年12月30日水曜日

Philips HQ482 バッテリ交換

年末年始の mission #1、古いシェーバ(ひげ剃り)の充電池交換に挑戦! 
これは相当古いもので、現在ほとんど充電できず、ACケーブルをコンセントに差し込んでようやく弱弱しく使える程度でした。見た目がキタナイのはご容赦を。
筐体は特殊な六角ネジ(T8)1個で閉じられているだけでした。専用ドライバでネジを取り外し、プラスチックの爪を折らないように注意しながら筐体を開けます。
なんと、★1997年製★でした。よくも23年も捨てずに置いてあったものだ。基板は見るからに古いけれど、電解コンデンサの液漏れもありません。
ちなみに、矢印の上に見えるDIP IC(PHILIPS製)は、マイコンとかそんな上等なものではなく、100~240Vの商用電源に対応するバッテリ制御用のICのようです。

充電池はNiMH電池で、電極はラグで基板に半田付けされています。あらかじめ同一規格(1.2V、2200mAh)の代替電池をinternetで入手(税込300円)してありました。

基板を裏返し、バッテリの電極ラグのランドから吸い取り機を使って半田を吸い取り、ラグを起こします。
無事取り外せました。入手した新しい電池が外観的にも全く同じサイズであることを確認したので、基板に装着します。(+極の茶色いのはただの保存用保護カバーです)
とても綺麗に換装できました!!
この後、筐体を閉じてシェーバの快調な動作を確認しました。充電できない電池のままACにつないで使うよりも全然力強い回転です。きっとこのシェーバは交直両用ではなく、充電専用だったのでしょう。

それにしても、このシェーバが自分と「23年間」もの人生を共にしたとは・・・、振り返ると感慨深いです。23年振りに元気を取り戻したこのシェーバのように、私もこれから頑張りたい!!

(免責事項)
シェーバの内蔵バッテリを自分で交換することは、ご自身の責任において行ってください。メーカも筆者も責任を持ちません。

2015年1月10日土曜日

SparkFun Geiger CounterのArduino化

先日設計上の不具合を何とか改修する事が出来たSparkFunのGeiger Counter SEN-09848だが、software(firmware)も製品購入時には非常に単純な物しか入っておらず、時間線量の算出・表示すら出来ない。

折角直したので、これを機会にいろいろprogramを書いて遊んでみたいので、ひとまずArduino化することにした。

ICSP pinheadersの取り付け

本品にはご覧のようにprocessorとしてATmega328P(flat package)、USB-TTL変換としてFT232RLが使われている。買った状態ではICSP端子にpin headersはついていないので、まず下図のように取り付けた。1番pinには細い線でmarkingされている。
ATmega328Pには外部発振子が付いていないので、内部RC発振を利用しているようだ。

さて、ICSP端子からbootloaderやfirmwareを書き込むには、ISP用のprogrammerが必要である。専用で安価なAVRISP mkII3,200円@秋月電子)をお勧めしたいが、持っていなければ別のArduinoにISP用のsketch(Arduino IDEに付属)を入れてprogrammerにする方法や、FT232Rから必要な端子が出ていればFT232R Bit Bangingという方法でprogrammingする事も出来る。詳しいやり方は他所で解説されているので、「Arduino ブートローダ 書き込み」等で検索してみてください。

本品はFT232RLを使用してはいるものの、Bit Bangingに必要なCTS、DSR、DCD、RIが結線されていないので、本品のFT232RLを使ってのBit Bangingは出来ないと考えた方が良いだろう。やるならCTS、DSR、DCD、RI端子が出ている別のFT232R搭載Arduino等を持ってきて、本品のICSP端子に接続して使う形になる。

なおICSP端子にはVCC/GND線も有りますが、AVRISP mkIIはここからtargetに電源を供給しません。逆にtargetが通電しているかどうかの検出に使っているようです。従って、targetには別途(本品の場合USB端子から)電源を供給して下さい。

Fuseの設定

早速programmerを繋いで、SEN-09848の購入時のfuseの状態を調べてみたところ、次のようだった。

 Extended   0xF8 (0x00) 
 High    0xDF 
 Low   0xE2 
なお拡張byteの3~7 bit目は使用されていないので、そこが1と見れば0xF8、0ならば0x00という事である。書き込みsoftwareにより、未使用bitsの表現が異なっている事がある。
AVR processorのfusesは「ONが0、OFFが1」と、通常とは逆になっているので、設定変更時十分注意しよう。間違ったfuse設定を書き込んでしまうと、AVR processorが2度と使用できなくなる恐れがある。

こちらの便利なsiteで上記bitsを解釈すると、fuseの状態は次の様になっていることが判る。
  • 内蔵 RC回路 8MHz 発振、起動遅延時間 65msec
  • Boot用flash領域 256words、Boot Reset Vector OFF
  • 電圧降下検出 VCC=4.3V (*)
(*) なおここの拡張byteにある電圧降下検出(BODLEVEL)のbitsは間違っていて、本来有り得ない組み合わせになっている。
さて、bootloaderを使用するため、fusesを書き換えてみよう。筆者はAtmel Studio 6.2(旧AVR Studio)とAVRISP mkIIの組み合わせで行った。
Optibootを使用する予定なので、BOOTSZ = 256W(512bytes)のままとし、clockの設定(SUT_CKSEL)も変更しない。変更するのは、下記2箇所のみとした。
  • BOOTRSTをON(0)に(bootloaderを使用するのだから当然)
  • BODLEVELを2.7Vに(変更しなくても良いが、正しい値にしておく。他の値でも良い)
他のbootloaderを使用する場合は、sizeに合わせてBOOTSZを調節して下さい。そのbootloaderを使用しているboards.txtの項目を参照し、fuseの設定やupload.maximum_sizeの値からbootloaderのsizeが推測できます。(32768や16384といった値からupload.maximum_sizeを引いてみます。)

先程も述べたように、絶対に間違ったfuse設定を書き込まない事。特に、外部発振の設定にしてしまうと、Ceralockや水晶発振子を(flat packageに!)外付しないと動作しなくなり、programmerによるaccessも出来なくなります。またRSTDISBL、SPIENも絶対に変更してはいけません

間違いが無い事をしっかり確認できたら、上記fusesの値を書き込み(Programし)ます。

Bootloaderの書き込み

Fusesの次はいよいよbootloader本体の書き込みです。まず、Optibootの開発siteから最新版v5.0aをdownloadしてきます。Desktopに解凍し、その中の「optiboot_atmega328.hex」というのをFlashに書き込み(Programし)ます。
以上で書き込み作業は終了です。ProgrammerからSparkFun Geiger Counterを取り外します。

Arduino IDEの設定

Arduino IDEの個人用Sketchbook location(Preferencesを見ると判ります。通常はDocuments folderのArduino配下)に「hardware」というsub folderが無ければ作って、その下にこのzip fileを解凍して出来た「SparkFun Geiger Counter」というfolderをそのまま置きます。

中に入っているのはboards.txtだけで、その中身はこれです。
##############################################################
# Sparkfun Geiger Counter w/optiboot
#  ATmega328P, Int RC Osc 8MHz
##############################################################
sfgeigero.name=[Optiboot] Sparkfun Geiger Counter (8MHz Internal)
sfgeigero.upload.protocol=arduino
sfgeigero.upload.maximum_size=32256
sfgeigero.upload.speed=57600
sfgeigero.bootloader.low_fuses=0xE2
sfgeigero.bootloader.high_fuses=0xDE
sfgeigero.bootloader.extended_fuses=0x05
sfgeigero.bootloader.path=optiboot
sfgeigero.bootloader.file=optiboot_atmega328.hex
sfgeigero.bootloader.unlock_bits=0x3F
sfgeigero.bootloader.lock_bits=0x0F
sfgeigero.build.mcu=atmega328p
sfgeigero.build.f_cpu=8000000L
sfgeigero.build.core=arduino:arduino
sfgeigero.build.variant=arduino:standard
##############################################################
この後、Arduino IDEを起動すると、Tools -> Board menuに追加した項目が現れます。

13番pin LEDの追加

さて早速Blink sketchをuploadしてみたいところなのですが、SparkFun Geiger CounterはPB5、つまりArduino 13番pinにLEDが結線されていません。ですが幸い、このpin(PB5)はSPI clock用としてICSP端子に出ていますので、それを利用します。
つまり上図のようになっていますので、SCK pinとGND pinとの間にLED(と抵抗)を入れればOKです。
このようにすればBlink sketchの動作確認が出来る他、13番pin LEDはRESET buttonを押下した時にもbootloaderの動作で点滅するようになっているので、bootloaderが正しく書き込まれているかの確認にも使用出来ます。

Sketchのupload

さていよいよsketchのuploadです。しかしここにちょっと問題があって、筆者の所有しているSparkfun Geiger CounterのSEN-09848というversionにはauto-reset回路が無いのです。後継のSEN-10742SEN-11345(現行)にはauto-reset回路が付いています。

Auto-reset回路というのは、FT232RLのDTR端子から0.1uFを介してATmega328PのRESET端子に結線されているだけなのですが、これを追加するのは両ICsともflat packageのため面倒かつかなり見た目が悪くなります。

そこで筆者は手動resetで我慢することにしました。

ところがこのreset button押下のtimingがかなり微妙で、慣れが必要です。

Arduino bootloaderはresetされると、ごく短時間serial通信を待機します。このtimingに丁度うまくArduino IDEから通信の試行が行われるようにしなければなりません。

まず、通信のやりとりを見えるようにするため、Arduino IDEの「環境設定(Preferences)」で書き込み時の詳細表示を選択します。
コンパイル(compilation)の方は詳細表示にしなくても良いでしょう。

Sketchをuploadしようとすると、「Uploading...」の終盤になって次のような橙色文字の表示が現れます。ここがresetのtimingです。
うまくやるためには「Uploading...」の途中からreset buttonを押したままにして、上の橙色文字が見えたらすかさず指を離して下さい。上図のようにmessage領域を大きく広げておくと見易いです。

成功するとdataのやりとりが行われ、uploadが無事完了します。
これがuploadが成功した時の表示です。またuploadしたsketchに従ってLEDがblinkしていると思います。

Blink sketchのloop内のdelay()値をその都度変更すれば、新しいsketchが動作しているかどうかが判ると思います。またsketch内の「13」pin指定を「A5」に変更する事により、先ほどわざわざ外付したLEDではなく、本体上の「Counter」のLEDをblinkさせる事が出来ます。外付けLEDでの動作が確認できたら、blink sketchをそのように変更し、外付けLEDは外してしまいましょう。

Arduino IDEのserial通信とreset button押下のtimingが合わないとuploadに失敗し、以下の様な表示となります。
stk500_getsync(): not in sync: resp=0x00」というのが通信の同期に失敗した事を示しています。失敗していても、「Thank you.」「Done uploading.」等成功した時と同じような表示も出る事には注意して下さい。

筆者はbaud rateを他に色々変えて試しましたが、何故か57600bps以外では成功していません。また他のOptibootの.hex filesも用いてみましたが、成功したのはこの「optiboot_atmega328.hex」だけでした。

実際のresetのtimingはかなり微妙(体感では200~300msec位の範囲)ですが、慣れればわりと確実にupload出来るようになります。練習して下さい。

現行のArduinoは殆どauto-resetになっているので、通信待機時間を長く取る必要が無くなり、現行のbootloaderではそれが極端に短くなっているようです。本機のような手動reset用には、きっとbootloaderを再compileして待機時間を長く取るようにすれば良いのかもしれませんが、筆者にはまだその方法が判らないところです。

また先も述べたように後継機種であるSEN-10742SEN-11345をお持ちの方は、auto-resetに対応していますので、reset buttonのtimingで苦労することは無い筈です。

他のbootloaderを用いる

Optiboot以外でも実はやってみました。本家TutorialのこちらからBreadboard.zipをdownload、展開し、前述の個人用Sketchbook locationのhardware folder配下に置きます。

Programmerを用いて、fusesとbootloaderをそれぞれ書き込みます。
  • Fuse設定は、Low 0xE2、High 0xDA、Extended 0x05(0xFD)
    • bootloaderのsizeは1024W(2048 bytes)
  • bootloaderはArduino IDEに付属の「ATmegaBOOT_168_atmega328_pro_8MHz.hex
IDEのTools -> Board menuには「ATmega328 on a breadboard (8 MHz internal clock)」という名称で現れます。

試してみたところ、こちらのbootloaderの方がOptibootよりもややtimingに余裕がある感じでした。Optibootでどうしてもtimingが掴めない方にはお勧めかもしれません。なお通信速度はやはり57600bps以外では動作しませんでした。

Arduino化完了!

何とかSparkFun Geiger CounterをArduino IDEで簡単に扱えるように出来ました。

製品版のfirmwareのsourcesはGitHubにあります。取り敢えず、製品に入っていた検知間隔に応じて0と1を出力するだけの非常に単純なfirmware(v12)を、Arduinoのsketchに書き直してみました。
/*
  SparkFun Geiger Counter
  Official v12 firmware on Arduino
  
 created 10 Jan 2015
 by Rin FUKUDA 
 jg1vgx@jarl.com
 */

// Constants
#define LEDPIN A5  // Counter LED (green)

// Variables
volatile long j=0;      // Interval since the last count
volatile long jlast;    // previous interval
byte cbit;     // '0' or '1' for char output on terminal

void setup() { 
  // pin I/O settings
  pinMode(LEDPIN, OUTPUT);
  
  // Interrupts on INT0 (OUT)
  attachInterrupt(0, onCount, RISING);

  //Initialize serial and wait for port to open:
  Serial.begin(9600); 

  // Wait to settle
  delay(1200);
  interrupts();


void loop() { 
  // turn off the LED (HIGH is the voltage level)
  digitalWrite(LEDPIN, HIGH);
  // wait for a short while for counting
  delay(30);
  j++;


void onCount() {
  // blink LED
  digitalWrite(LEDPIN, LOW);
  delay(10);

  // check intervals  
  if(jlast < j) cbit = 0;
  if(jlast > j) cbit = 1;
  
  // send byte char to console
  Serial.print(cbit);
  
  // reset intervals
  jlast = j;
  j = 0;
}
たったこれだけです。こちらにも置きました。Sketchをuploadしたところ、ちゃんとArduino化以前と全く同じ動作で検出~countする事を確認しました。Arduino IDEにはSerial Monitor機能が付いているので、別のsoftwareを起動せずに動作確認が出来、大変便利です。
さらに、dotによる簡易bar graphで時間線量(CPM, counts per minute)をserial出力するsketchを書いてみたのでここに置きます。

2015年1月3日土曜日

SparkFun Geiger Counterの改修

震災の年にback-orderで注文し数ヶ月待って入手してあったSparkFunのSEN-09848というGeiger Counterだが、いざ届いて使おうとする前に、同製品のComments欄で「回路設計に重大な問題があり、そのままで使うと貴重なGeiger管に定格(450~650V)を超える過大な電圧(1,000~1,500V)がかかっている」という事が指摘され、物議を醸していた。

そこではいろいろ回路修正方法が議論されていたが、ともかく修正しない事には使えない代物だという事が判り、少しガッカリするとともに、いつか修正しようとして箱にしまったまま、忙しさに紛れて早3年以上過ぎてしまった。

しかし気になって仕方がなかったので、この正月休みに遂にその修復を試みてみる事にした。

SparkFun Geiger Counterの世代

  
SparkFunのGeiger Counterは原発事故後に当然ながら注目を浴びたが、これから述べる不具合をusersから指摘されたためその後改版を繰り返している。当方が入手したのは震災当時販売されていたSEN-09848という一番左の物である。

SEN-10742では、見て判る通り真ん中左の高圧印加用のswitchがより耐圧のある適正な物に変更されたが、過大電圧の問題や、後に述べる検出回路の誤りはここでも修正されていない。

現行品のSEN-11345になり、高圧回路には本来あるべき定電圧回路が挿入され(右端に新しく増えた黒い部品がZener diodes)、また検出回路がanode検出からcathode検出に変更され正しいpulsesを拾うようになった。SEN-11345の回路には問題は無いので、これから買われる方は安心して注文されて良いと思う。

一方、SEN-10742迄の製品をお持ちの方は、これから述べる回路修正が必要である。さもないとGeiger管を過大電圧により壊してしまう事になるかもしれない。なおSEN-09848の前にさらに古いversion(SEN-09298)もあるが、当然ながら不具合品である。

問題点

これは主に2つある。
  • (1)Geiger管に定格(450~650V)を超える高圧(1,000~1,500V)がかかっている。
    • 高圧系の定電圧回路が省略されていることと、恐らく作者が設計時にtesterの誤用により適正な電圧であると誤解した事が原因と推測されている。
  • (2)検出回路の極性に誤りがあり、適正にpulseを検出できない。
    • anode検出を採用しているにもかかわらず、NPN transistorでinterfaceを組んでいる。
他にもswitchの耐圧の問題とかあるのだが、省略する。

SparkFunの製品siteのComments欄では主に(1)の問題しか議論されていないが、日本の「がた老AVR研究所」のblogで、(2)の問題とその対策が詳細に解説されていた。

当方は、この「がた老」さんの方法を参考に修正しようと考えていたが、基板のresistを削ったり、遠方から配線を引き回したりという手順がやや複雑に見え、そのまま放置してしまっていた訳である。


修正作業


修正前の状態

それでは修正作業について解説していきたいが、その前に修正前の状況をoscilloscope(DSO Nano v2)で確認しておく。SEN-09848の修正前の検出回路周りは次の様になっている。
OUTがATmega MPUに入る、transistorで整形された(はずの)trigger出力である。

まず、Geiger管のanode出力であるSIGTP1で見てみる。
これが正規のpulseなのだろうが、高圧過ぎるためか雪崩効果(avalanche effect)が起き、次のような連続pulsesも頻繁に観測される。
実際にはSEN-09848のoriginalの状態では、上の正規pulseの方をcountしているのではなく、下の雪崩効果の連続pulsesをQ4の出力(collector)側の大容量capacitor C9で平滑してOUTに出力しているらしい。TP2OUT)での観察結果を見てみよう。
このように雪崩効果の持続時間にもよるのだろうが、50~100msecの矩形pulseとなってQ4から出力され、これがATmega MPUに入力されていた。

しかしこれでは、本来のGeiger管のpulsesを計測しているのではなく、「雪崩効果」の数を計測している事になってしまう。そもそも0.1秒なんて長さのpulseは線量計測としてはどう考えてもおかしい。

途中経過

「がた老AVR研究所」の方法が正しいことは最初から判っていたが、blogに記載されているresistを削ったりする方法が面倒に思えてしまい、他の2、3の部品の交換だけで何とかならないか、最初試行錯誤していた。

問題(1)の高圧を適正化する方法は、C2 10uFを 0.5~1uFにすることで良いのだという。まずそれを行い、また検出回路のQ4のcollector側の平滑用のC9を0.33uFに下げてみた。しかしそれではpulseを殆ど全くcountしなくなってしまった。Oscilloscopeで見てみると、まずQ4のbase(TP1)ではこのような物が見られた。
Geiger管のpulseは真ん中の大きなnegative pulseであるが、それ以外に小さな周期性pulse(1.6msec周期くらい)を見るようになった。(なぜこういうのが出るようになったのかは今でもよく分からない。)Geiger管のpulseもovershootがあり、何だか不思議な形だ。

Q4の出力側(TP2)で見ると、それなりにpulseらしい波形であったが、何故かこのpulseではMPUが殆ど全くcountしてくれないのだった。Firmwareのsourceを見てみると、ちゃんとfalling edgeで入力pinをtriggerするようにprogramされているのだが。

最終修正

高圧の修正と平滑capacitorの値の修正だけでは結局駄目だと分かったので、意を決して検出回路の修正もすることにした。

やった事は、「がた老AVR研究所」のblogを参考に、こちらのsiteの「アノード検出方式のインターフェース回路」ほぼそのままに改めたのである。より具体的には、上に引用したSparkFunの回路図上で説明すると、下記のように修正を行った。
  • Q4 MPSA18(NPN)→ 2SA1015(PNP)に変更
  • R9 1k → 56k に変更
  • Q4 Emitter を VCC に配線
  • SIG と VCC 間に、R 2MとC 100pFを並列に挿入
  • R10 1k8 は削除
  • C9 47uF は R 100k に置換
お手本にした回路と少し抵抗値が違うのは、手持ち部品の都合である。

Resistを削るのはやや面倒だから、横着をしてtransistorの脚を1本空中配線して誤魔化した。
この修正により、見事にGeiger Counterとして正規のpulseをcountするようになった。もし「がた老AVR研究所」の記事がなかったら、筆者の知識だけでは到底修正し得なかった事である。「がた老」さんにはこの場を借りて心より御礼申し上げる次第である。

その正常動作を再びoscilloscopeで見てみよう。まずTP1だが、transistorをPNPに変えたためVCC基準で測定した。 
先ほどの途中経過での不思議なpulseと違い、美しい正規pulseが入るようになった。周期性の小さなpulse(原因不明)は見られているが、これらはMPUでのcountに全く影響を与えないので気にしないことにする。C2 capacitorを都合で1uFにしてしまったためまだ電圧がやや高いのか2枚めの写真のような連続pulseを時に見ることがあるが、それほど計測に影響はないようである。C2は0.47~0.68uFが良いと思う。

検出transistorを通過したTP2での出力は次のように綺麗な100usec前後の矩形波pulseとなり、ATmega MPUできちんとcountされるようになった。
但しfirmwareではまだfalling edgeで検出するようにprogramされているようなので、rising edgeに修正するのが良いかも知れない。どちらでも同じようにはcountするけれど。

なおSparkFunがSEN-11345で行った検出回路の修正は、Q4はNPN transistorのまま、検出方式をanode検出からcathode検出に変更している。このためOUTでの出力はactive low(negative pulse)であり、falling edgeでのtrigger検出のままでprogram上も問題ない。同じ方式で修正するにはGeiger管周りの回路変更が必要で大がかりになりすぎるため、筆者は「がた老」さんと同じくPNP transistorによる検出方式とした。

あとがき

因みにこのGeiger Counterを設計したAaronという人は、もう転職してしまってSparkFunに居ないそうである。彼(a1ronzo)は最初問題に気付いていなかったようで、製品のComments欄で「電圧も高くないし、製品はずっと正常に動作している」としきりに不具合を否定していた。

このGeiger Counterは元々放射線量計測を目的としたというよりは、乱数発生器として企画された面がある。だから元から入っているfirmwareには時間線量を出力する機能は無く、ただpulseのcountに応じて0か1かを出力するだけの単純なprogram(countの間隔が前の間隔より長い時0、短い時1)となっている。

彼がこのGeiger Counterを設計・販売後に日本の原発事故が起こり、本製品が世界中から注目を集めることになり、結果的に設計ミスが白日の下に晒されることになったのは、彼にとっては不遇だったと言えよう。

日本のmakerだったら、非を認めて製品を無償交換するくらいの設計ミスだと思うが、海外には日本のような「謝罪文化」は無いので、問題点が指摘されても交換は行われないし、買った人もそれを強く要求するわけでもない。

日本人の感覚だとAaronの立場に立たされれば、責任を取って退職したのではないかと思う。

Aaronは途中から設計ミスを認める発言をするようになっていたし、結果的にSparkFunは設計ミスとみられる部分を完全に修正して現行品をreleaseしている。最後の改修品がAaronの手によるものかどうかは筆者には判らない。

筆者は、Aaronは日本人ではないから引責退職したわけではなかろうけど、自身の設計ミスがこれだけ大きく取り沙汰されてしまった事の責任を痛感してはいたと思う。だから彼は転職という形でそれを清算した(早く言えば「逃げた」?)のではないか、というのは上記の改修作業をしながらの筆者の空想である。

2012年1月26日木曜日

受信機過入力保護回路

Skimmer Serverとか160m用受信antennasの設置を考えていたら、どうしても受信機やSDRのfront end保護が必要になった。

PTT lineで制御するrelayを使った既製品のT/R switchもある(例:ELAD SwitchBoxWX0B QSK-MasterMFJ-1708MFJ-1707)が、高価だったり入手がやや難しい。

もっと単純な製品でDEO Receiver Guard 2000というのがある。受信機の前に入れると、一定以上のRF入力をcutしてくれる代物だ。PTTによる制御は要らないから、contest stationsなどmulti TX環境での受信機保護に向いている。

調べたところ先のUniversal Radio (US)でしか取り扱いが無いようだが、北米以外への発送は行なっていないらしく入手できない。が幸運にもK8ND(PJ2T)のページに本品の写真回路図が公開されていた。QS1RのFAQでも受信機過入力保護として同様の回路が言及されているが、全く同じものである。

動作原理としては、逆方向接続された1N4148の順方向電圧(約0.7V ≒ S9+83dB)以上のRF信号をclipするという単純なものである。6.3V, 150mAの豆電球はfuseとして使っている。

DEOではReceiver Guardという商品名だが、動作原理からはRF clipperRF limiterと言った方が分かりやすいだろうか?

試作してみた。



ご覧のように非常に単純な構造だ。部品表は以下の通り。部品代合計は607円

部品 規格・型番等 単価(円) 個数 入手先 備考
ユニバーサル基板 72x48mm 60 1 秋月 P-00517
BNCジャック DIP化キット 200 2 秋月 K-05362
豆電球 6.3V 150mA 73 1 マルツ パイロ電子 G11E106.3V
電球ソケット E10形ベース付 52 1 マルツ パイロ電子
汎用スイッチングダイオード 1N4148 100(50本) 2 秋月 他で代用しないほうが良い
セラミックコンデンサ 1uF 50V 100(10本) 1 秋月 P-03093
セラミックコンデンサ 0.1uF 50V 100(10本) 1 秋月 P-02211

コンデンサは容量比が約10:1なら0.1uFと0.01uFのpairにしても良いそうです。

もちろん本当はshieldされたcaseに入れるべきですが、とりあえず良好なclipping動作を確認しました。豆電球が光るほどの強電界下での実験はまだしていません。

(追記 2012.1.30)1kW出力antennaから約10mの至近の受信antennaに使ってみましたが、過入力時も豆電球は光りません。豆電球が光るとしたら相当な過入力ですね。Clip動作は良好で、SDRの前段に安心して使えました。

2011年5月3日火曜日

GM管LND-712の寿命

「GM管には寿命がある」という噂を聞いたような気がしたので、LND-712のmakerであるLND社にemailで問い合わせてみた。寿命は 5E10 counts だそうである。

これは50,000,000,000回なので、今のbackground値(15cpm)程度の放射線を計数し続けたとしても、5E10/(15*60*24*365.25)=6338年の寿命があることになる。仮に今のbackground値の100倍の放射線であったとしても63年である。
LND-712の寿命は事実上ない
と言って良さそうだ。(mica面を割ったりしない限り。)
makerのspec sheetにも寿命は記されていない。

寿命がこのように長いのは、Wikipediaによれば、最近のGM管は一度電離されると元に戻らない希ガス(Neon)の電離ではなく、少量混入されたHalogenの電離により電流が流れる仕組み(Halogenは電離後元の状態に戻る)だからだそうである。

2011年5月1日日曜日

Strawberry LinuxのGeiger Counter ★★★★☆


入荷連絡が来てから10分間で売り切れるという争奪戦を何とか制し、入手できたStrawberry LinuxのUSB Geiger Counter Kit。早速組み立ててみた。

USB接続、電源(USB/外部両用)、LCD表示までがcompactにまとめられている良いkitだと思う。
欲を言うなら、マイコンがCypressでなくPICとかAVRだったら書き換えて遊び易かった。あと、付属のsoftwareがもう一つかな。Libraryが公開されているようなので、いろいろ作ってくれる人がいると良いけど。(参考:米Black Cat SystemsのGeiger Countersの方が、softwareはやや充実しているようだ。)

CypressのCY7C63723CというMPU。MouseなどのUSB applications用らしい。確かにこんなに小さいDIP版でUSB内蔵の物はPICやAVRには無いよね。誰か高機能firmwareを作ってくれないかな。

Mica面を傷付けないようにGM管の取り扱いには細心の注意を払って組み立てた後、専用caseに入れる。Mica面の正面に穴開け加工はされていないから、caseに入れるとα線は測れなくなるが、まあいいだろう。GM管は単芯銅線を捩って基板に固定した。

専用caseの蓋を閉めて完成。都内の自宅では13~14cpm位の値を示していた。

良く分からないのが、cpm→μSv/hへの変換。Net上のいろいろなGeiger mapsを見ていると、測定器によりかなりばらつきがあることが分かる。一桁位違う。

そもそも、γ線だけを計測する機器もあれば、α、β、γ全て測っている物もある。全部一緒に比べて良いのか?到達距離を考えれば、γ線だけを測れば良いのだろうけど。(ところで計測できたα、β線は至近距離から出ていることになるけど、そんなに放射性物質が身の回りに在るのだろうか?)

某Geiger mapではこのGM管 LND-712の場合は、1cpm=0.00233μSv/hを用いている所が多い。が、ほぼ同類のGM管を使っていると思われるBlack Cat Systemsのsiteによると、Cs137については1cpm=0.00833μSv/hだそうだ。線源によっても換算値が異なるらしい。もちろん、GM管の大きさによっても、cpmは変わってくるだろう。

つまり、GM管・線種・線源を特定しなければ、単に係数だけでcpm→μSv/hへの変換は出来ないようだ。結局はcpm値でtrendを見ていくのが確実と思われる。

いまいちのsoftwareしか付いていないなあ、と思っていたら、pachube並みの素晴らしいdata共有・表示siteを発見!早速登録させていただいた。

2011年2月20日日曜日

eJackino-MiniとeJackino-Pico

eJackino-Mini(左)とeJackino-Pico(右)
基板付き書籍「アーデュイーノ互換マイコン・ボードを作る」にもCQ出版社サイトにも明確に記されていないが、eJackino-Mini(写真左)とeJackino-Pico(右)とは回路的には全く同じ物。部品配置とpin headersへのpin取り出し方が違っている位である。あと、基板スペースの関係か、Miniでは在るpin名称のsilk印刷が、Picoでは省略されている。

回路図・配線図は見付けがたいが、CQ出版社のここからEagle CAD dataがdownload出来ます。少しcomment修正したがのがこれ。
eJackino-Miniの回路図
eJackino-Picoの回路図
eJackinoはCQ出版社や小坂 貴美男氏によるものです(Creative Commons Lisence, BY-SA 2.5)。

2011年2月15日火曜日

電子部品・マイコン系通販の送料比較

都内に住んではいても、わざわざ半日~1日がかりで秋葉原に買物に行くことは交通費と時間の無駄になり、身体的にも疲れる。
実際店頭ではWebで見るよりじっくり品物を選べなかったり、折角行ったのに店頭に物が無いという馬鹿な思いをすることがある。

時間の無駄といえば休日の秋月電子秋葉原店などはその好例で、1~2品が目的ならともかく、部品リストを持って買い出しに行こうものなら、素人には何処に何が陳列してあるか分からず、人だかりを避けて部品を探し集めるのに随分時間がかかることもある。ここがいつも混んでいるのは、そんな「部品探し難民」が中に何人もいるからではないか?レジの店員さんはとても手際良いのに。

というわけで、最近では電子部品やマイコン・ボードの入手には専ら通販を利用することが多いが、送料が気になるので比較してみることにした。

 基本送料  送料無料  運送業者  メール便  定形外  支払い方法
 電子部品系
 秋月電子  500  -  佐川、ヤマト  -  -  ク、銀
 千石電商  420  10,000  ヤマト、佐川、JPEX  -  -  ク、銀
 マルツパーツ館  472  5,250  ヤマト  -  -  ク、銀
 共立エレショップ  380  7,500  ヤマト、佐川  -  120(50g以下、3,000円未満)  ク、銀、郵
 若松通商・電子部品通販  504  -  ゆうパック  -  240(250g以下)  銀
 若松通商・eマート  504  -  ヤマト、ゆうパック  -  -  ク、銀
 サトー電気  200~500  8,001  普通郵便、ゆうパック  -  左記  郵
 RS Components  460  8,000  佐川  -  -  ク、銀
 マイコン系
 Switch Science  180  3,000  ヤマト  自動選択  -  銀、PayPal
 Strawberry Linux  400  -  佐川など  -  -  銀、郵
 メカロボショップ  530~  10,000  ヤマト  80  -  ク、銀
 マイクロファン  315~525  -  ヤマト  自動選択  -  銀
 マイコンキット・ドットコム  650  10,000  佐川  -  -  ク、銀
 aitendo  690  -  ヤマト  -  -  ク、銀
 Soliton Wave  800~  -  佐川  -  -  ク、銀、郵
 galileo 7  180  3,000  ヤマト  自動選択  -  銀
(注意)私の場合、代引きは使わない(←手数料を節約したい)ので「支払い方法」には含まれていない。本日現在Webから集めた情報だが、正確さの保証はないので、買物の際にはご自身でご確認ください。

部品なら何でも安い秋月を一番利用するが、送料は割高で、注文の変更・キャンセルが難しく、一品買い忘れたりした時のショックが大きい。
一方、輸入系のマイコン・ボード(Arduino等)はほぼ横並び価格なので、送料の安い所を選んだ方が良い。

2011年2月7日月曜日

JYE Techオシロのfirmware更新

秋月電子などで入手できる、中国JYE Techの激安Oscilloのfirmwareを更新する方法。本家の文書を参考にしてます。

更新には二通りのやり方があります。
  • ICSPで直接書き込む方法
    • この方法でfirmwareを書き込むと、bootloaderが消えてしまう。
    • 普通はbootloaderを書き込む時用ですね。
  • bootloaderによる自己書き込み機能を使ってserial通信で書き込む方法
    • 当然ですが、bootloaderは消えません。
後者でやってみました。
まず、ここにserial通信のためのpin headersを増設します。私は2 x 10 pins全て増設しましたが、使うのは4 pinsだけです。(なおこれは私の所有する緑液晶versionの場合ですが、青白液晶versionの場合は基板が少し違い、pin headersの位置も異なりますので本家の文書等でよく確認してください。)
PCとserial通信で接続します。Serial変換器としては、秋月電子のArduino Duemilanove互換ボード AE-ATmegaのを使いました。配線が出来れば、別に他の何でもかまいません。TxDとRxDは反転させてcrossで結線すること。

JYE Tech Oscilloには電源スイッチもresetボタンもありませんので、+5Vはまだ結線しないでOFFの状態にしておきます。

あとは、本家の文書通りにavrubd.exeというソフトを立ち上げてfirmwareを転送します。転送コマンドに当たる "Operate - Download" をclickし、すぐに+5Vを結線(つまりOscilloのボードをON)したらうまく行きました。
再起動させると、本日現在の最新版 ver.113-06201-200(2010.09.26版)に無事更新されました。
新機能のFFTです。Sampleの500Hz pulseが見えています。