« 2015年1月 | トップページ | 2015年3月 »

2015.02.25

まもなく発行、月刊特電Vol7

大変お待たせいたしました。

happy01

まもなく、月刊特電のVol7「平成27年2月号」が発行されます。

今回も豪華フルカラー8pのオフセット印刷です。コート135kgの高級紙です。

Gettoku7


本日、すべての記事の執筆を終え、印刷所にデータを送りました。明日、印刷所から出荷されて、明後日には特電に届きます。

皆様のお手元には、2月28日ごろから届きはじめると思います。

今回の記事の内容は、

  • MITOUJTAGセミナーのご案内
  • Cosmo-Z開発の目的と目標
  • みんなのMITOUJTAG質問コーナー
  • ZYNQのFPGAからCPUへ割り込みをかける方法
  • 科学的な価格の決定方法
  • 新しい差動信号企画「SLVS」って何?
  • 読者のひろば

です。

前回が平成26年11月ですから、だいたい3か月かかりました。なかなか月刊では出せないですね・・

でも、その分、どの記事も手を抜かずに、他では読めない記事を詰め込んで頑張りました!

ブログや書籍、雑誌には書いていない未公開で新鮮なネタでいっぱいです。

お楽しみに!

| | コメント (0)

2015.02.23

Cosmo-Zで100MHz 8chの連続サンプリングに成功!

ZYNQ搭載のADCボード「Cosmo-Z」で100MHz 8chの連続サンプリングに成功しました。

Csz_tube_2

昨日は3chまでしか同時にサンプリングして記録できなかったのですが、本日、8chすべて同時サンプリングして記録できるようになりました。

どうしたかというと、AXI HPポートのクロックを250MHzにしました。それだけです。

Csz_dma8_ok

といっても、AXI Masterポートなどはそのまま100MHzで動くように残しておかねばならないので、クロックを2つに分けたという感じです。

100Mサンプリングだと、1.28usごとに32 QWORD×8ch分のデータが溜まってきます。

これをどんどんAXI HPポートに投げ込みます。FIFOからAXI HPポートに入れる時間は、1つのチャネルあたり128nsかかっています。

Csz_dma8_ok2


8ch分のデータをAXI HPに転送する時間は1.024usで、データがやってくる間隔は1.28usですから、時間的にはもう少し余裕がありそうです。

どれくらいの長さのデータをサンプリングできるのかというと、現在ではDDR3メモリに蓄えるのが精いっぱいです。DDR3メモリは1GB積んでいて、半分はLinuxのOSが管理しているので、FPGAが使えるのは512MBということになります。

8chのデータが来たとすると、1chあたり64MB。1つのデータが12bit(将来的には16bit版Cosmo-Zも作る予定)だから、32Mサンプルのデータを蓄えるのが限度となります。

結論を言うと、Cosmo-Zでは12bit 100MHz 8chのデータを、33554432ポイント分溜めることができます。

8個の100MHz、12bit ADCからのデータなので1200MB/secもの速度になります。これをリアルタイムに保存できる記憶装置はありません。SATA3でも600MB/secが限度です。

したがって、Cosmo-Zでは、生データをそのまま溜め込むのではなく、リアルタイムに特徴量を抽出してデータ量を削減して記録していくことになります。

| | コメント (1)

2015.02.22

Cosmo-Zのマルチチャネル・サンプリング

Cosmo-Zで複数のチャネルのデータをDDR3 SDRAMにDMA転送できるようにしています。

FIFOにデータが32 QWORD (=128 Word)溜まったらAXI HPポートに送ります。ですから、100MHzでサンプリングする場合、1.28usごとにDMA転送が発生します。

まず、サンプリングするチャネルが1chの場合。

Csz_dma1

サンプリングしたデータはFIFOに入った後、問題なくAXI HPポートに送れています。

次は3chの場合。

Csz_dma3

3ch分のデータをAXI HPポートに転送する時間は1.24usでした。ぎりぎりです。

32 QWordのデータ転送を3つで0.96us。ステートマシンの遷移で0.05nsくらい。後は、AXI HPポートからのBREADY待ちです。BREADYは、つまり、DDR3 SDRAMの書き込み完了待ちです。

次は4chの転送です。

Csz_dma4

4ch分のデータをAXI HPポートに送るには、1.55μ秒かかっていますから、完全にアウトです。FIFO以上のサイズのデータをキャプチャしようとすると、いずれ、あふれてしまうでしょう。

8chにしてみると、AXI HPポートに送るのに2.87usかかっています。FIFOに溜まっているデータもどんどん増えていっています。

Csz_dma8

というわけで、現在のシステムでは100MHzでサンプリングしたとき、3chまでしか連続して保存できないことがわかりました。

その理由は、AXIのAWVALIDを与えたりする時間のほか、BREADYが返るのを待つ時間が合わせて27クロックくらいあるからです。AXI HPポートは意外と遅いですね。

やはり、AXI HPポートのクロックを250MHzくらいまで上げる必要があります。

| | コメント (2)

2015.02.20

Cosmo-ZでDDR3メモリにキャプチャデータを入れる

ZYNQ搭載ADCボード「Cosmo-Z」でDDR3メモリにキャプチャデータを入れることができるようになりました。

いままでのCosmo-ZのサンプルFPGAでは、ブロックRAMにデータをためてUSBやイーサで読み出すというものだったので、数kバイトのデータしか溜められませんでした。

ZYNQのAXI HPを通じてDDR3に投げればいいんだろうなとは思っていたのですが、なかなか億劫で手がでなかったところ、優秀なスタッフがこの機能を作ってくれました。

Csz_ddr3_1

数十~数百MBの長いデータを連続サンプリングして、AXI HP経由のDMA転送でDDR3メモリに入れらるようになりました。そして、キャプチャが終了したら割り込みを発生させてユーザプログラムに通知し、SDカードに保存するようにしました。

Csz_ddr3_2


つまり、サンプリングしたデータをDMAと割り込みをつかってメインメモリに格納し、それをファイルとして保存できるようになったということです。

サンプリングしているときの波形はこんな感じ。

Csz_ddr3_3

12bit 100MHzでサンプリングしたデータを16bitに拡張してFIFOに入れ、256バイト(128個分)溜まったらAXI HPに投げます。だから128クロックに1回、AXIのリクエストが発生します。

一方、AXIバスは64bit 100MHzで動かしているので、32クロックで転送を完了させます。しかし、アドレスの設定などが入るので、32クロックでは128個分のデータを転送できません。

したがって、データを落とさずにサンプリングするなら、1つの100MHz AXI HPポートに投げられるADCは3個までということになります。これでは少し足りないので、とりあえずはクロックを133MHzくらいまで上げ、最終的にはAXIのクロックを266MHzくらいまで上げてみることにします。そうすればAXI HPポート1個で8ch分のADCからデータを投げられるはずです。

AXI HPを4つ使えば、12bit 80MHzのADC結果を32ch全部入れられる計算になります。

| | コメント (0)

2015.02.19

Cosmo-Zのケースを作成

アクリルを削って、Cosmo-Zのケースを作成しました。

Cszenc1

横からみると、SMAのコネクタ側はこうなっていて、

Cszenc2

イーサとかが出ている側はこうなっています。

Cszenc3

アクリルの蓋は1mmの厚さしかなく、私は工作が下手なので、パキパキ割ってしまいました。

円柱の直径は90mm。今後、このCosmo-Zの上と下に拡張基板がついて、全部で32ch+ディジタル入出力のごっついシステムになります。

なんで、円柱に入っているかというと、細い穴の中に入れることを想定しているからなのです。人間が近寄れないような場所で使われるのです。

もちろん、本番はステンレス製のケースに入るのでしょうが、特電社内で使うものは展示用に透明なアクリルケースで作っています。

Cszenc4

ある種の極限環境に置かれた32ch 125MHz ADCがいったいどのように人類の科学の発展に寄与してくれるでしょうか。楽しみです。

| | コメント (0)

2015.02.16

Cosmo-Zの拡張基板の設計

ZYNQ搭載の高速ADCボード「Cosom-Z」は、拡張基板を重ねることで32chまでチャネル数を増やすことができることを目指しています。

ようやく、拡張基板の設計が佳境に入ってきました。

Csz_ext1

このようなボードをメイン基板の上に1枚、下に2枚重ねます。

サブ基板の幅が82mm、基板の厚さが1.6mm×4、基板間のスタック高さが10mmですから、対角線の長さは89.716mm。

なんとかぎりぎりで直径90mmの円柱に収まるはずです。

図面を描いてみたところ、ちゃんと直径90mmの円柱に収まっていますが、ぎりぎりですね。

Csz_ext2

| | コメント (0)

2015.02.12

Cosmo-Zの新基板を設計中

Cosmo-Zの新基板を鋭意設計しています。

Np1068a

主な変更点は以下のとおりです。

  • GTX用SMAコネクタの間隔をあける
  • アナログ±5V電源には、LT3439ではなく既製品のモジュールを使う
  • アナログ入力用SMAコネクタの下に保護ダイオードを付ける(光電子増倍管の接続間違えをしてHVをかけても平気にする!)
  • 差動OPアンプの省電力モード対応
  • 1.0Vコア電源を太くして電圧降下を減らす
  • SRSTのリセット信号をプルアップしJTAGコネクタにもつなぐ
  • スライドスイッチで、SDカードとJTAGブートを切り替えられるようにする(変更前は、SDカードとSPI ROM)
  • GbE PHYのロジック電源を1.8Vにする
  • FPGAが起動前でもクロックドライバが誤動作しないように抵抗を追加

設計者から見て細かい変更点としては、

  • ADCのSPIポートの配線間違いを修正
  • サイドマウント型のSMAコネクタに対応
  • VREF生成回路をちゃんと動くようにした
  • 実装スペースの都合でSATAコネクタとJTAGコネクタを縦にした
  • PoE用電源回路用の高耐圧コンデンサを実装できるように部品の配置を変えた
  • 高価なわりに意味のない分圧用抵抗を替えた
  • ダイオードの向きをシルクで入れた
  • GTXコネクタとSATAコネクタの静電気対策を行った
  • シルクと穴やパッドが被っていたところをたくさん修正した

です。

明日までにアナログ拡張基板が間に合えば、一緒に面付けして出図しようと思います。

Kyujin_banner

| | コメント (0)

2015.02.10

ZYNQにSATAをつないだ

ZYNQのギガビットトランシーバ「GTX」にSATAのSSDをつないでみました。

Csz_sata

以前、Spartan-6LXT用に作ったGTPの1.5GbpsのSATAコアがあったので、これをZYNQのGTXに移植してみたのですが、最初、どうしてもうまくいかなくて苦労していたのですが、3.0Gbpsにしたらあっさりつながりました。うーん、謎・・・

リンクアップした後、RegD2Hというパケットが送られてきたときの様子です。

Csz_sata_d2h

34005001 01000000 …

というシーケンスが読めます。この34というのが、RegDHというパケット(FIS)のタイプで、Statusが50、Errorが01です。Status=50が送られてきたということは、ターゲット(SSD)の初期化が完了したことを意味します。Error=01は、エラーなしを意味します。

Device IDコマンドを実行してみたところ。

Csz_sata_pio1

先頭部分は46000000 4000ff3f  37c81000  00000000  3f000000と読めます。

全体でみると、データは固まってくるのではなく、ばらけてやってきています。

Csz_sata_pio2

MITOUJTAGのFPGA内蔵ロジアナで解読すると、

46000000 4000ff3f  37c81000  00000000  3f000000 32313330 39303638 39300000  30353030 30303030 45310000 31313131 38312020 50534343 53206c6f  64695320 61746574 44207369 426b3832 20202020 20202020

と読めます。

シリアル番号 "2130906890"

デバイスタイプ "Solid State Disk"

と読めそうな感じです。

ロジアナの画面を解析しながら文字列を組み立てていくのは大変なので、EXPARTAN-6Tに実績のあるSATAコアを入れて、DeviceIdentifyコマンドを発行してみると・・

Csz_sata_idCsz_sata_id2

なるほど、こう読むのですか。

シリアル番号は"1203098609500000001E"、デバイスタイプは"SPCC Solid State DiskB28"と読めるので、エンディアンの読む順番がロジアナではわかりにくいです。

とにかく、特電のSATAコアが3Gbpsでも動いたということで、今日のところはヨシとしましょう。

1.5Gbpsだとダメで、3.0Gbpsだと良いというのが謎なのですが、GTXは1.5Gbpsくらいの低い速度が苦手!?まさか、そんなことはないと思いますが・・

| | コメント (0)

2015.02.09

RXduinoをCubeSuite+で使う(その1)

RXduinoライブラリをお買い上げいただいたお客様から、カスタムボードでCubeSuite+を使ってRXduinoを使いたいというご要望をいただきました。

そこで、自分でもCubeSuite+をインストールして、カスタムボードに移植する方法を確かめてみました。

one CubeSuite+のダウンロード

まず、CubeSuite+をダウンロードしてくるのですが、昨年から名前が変わっていて「統合環境CS+」となっていました。

CS+の評価版を入手するには、http://japan.renesas.com/products/tools/ide/csp/index.jsp から「無償評価版を入手」のボタンを押して入ります。そして、一番上にある 【無償評価版】 統合開発環境 CS+ for CC V3.00.00 (一括ダウンロード版) のリンクをクリックします。あとは300MBくらいをじっとダウンロードします。

Cs3rxduino_1

two RXduino V1.20をダウンロード

特電のダウンロードページから、RXduino V1.20のソースコード一式をダウンロードします。V1.20は、V1.08の正式な後継バージョンなので、ライブラリの動作も旧V1.08版と互換性があり、安定しています。

Cs3rxduino_1_1

上のZIPファイルをダウンロードしたら解凍します。デスクトップにrxduino-src-v120cshewというディレクトリが出来上がったはずです。

three ライブラリプロジェクトの作成

ここではRX63N/RX631用のカスタムボードを起こしたと仮定して、RX63N用の新しいライブラリを作る方法を紹介します。

まず、解凍したフォルダのrxduino-src-v120cshew\cslibを見ます。

中に"RXduinoライブラリ構築(GR).mtpj" というファイルがあるので、これを開きます。このプロジェクトがひな形となります。

Cs3rxduino_2


mtpjファイルを開くと細かいサブプロジェクトがいっぱい出てくるので、CPUの型番をクリックして、「マイクロコントローラを変更」をします。そして、実際に使うCPUの型番に変更します。

ここでは特電のAD360というボードに変更しようと思うので、R5F563NBDxFB(144pin)を選びます。

Cs3rxduino_4

全部のプロジェクトのCPUを目的のものに変更します。

そうしたら次は、すべてのプロジェクトのCC-RXをクリックして選択し、プロパティを開きます。

Cs3rxduino_5

そして、共通オプションの中のマクロ定義を開くと、

TARGET_BOARD=BOARD_GRSAKURA

と書いてある部分があるので、これを自分のボード名に変えます。

Cs3rxduino_6

AD360というボードなので、

TARGET_BOARD=BOARD_AD360

にしましょう。

そして、名前を付けてプロジェクトを保存します。 ここでは、"RXduinoライブラリ構築(AD360).mtpj" にします。

four ボード定義ファイルを作る

rxduino-src-v120cshew/core/tkdnhal/

にbrd_ad360.hというファイルを作ります。内容は、brd_grsakura.hをそのままコピーしてきて、下記の部分を書き換えるといいでしょう。

/**************************************************************************//**
 * @file    brd_ad360.h
 * @brief   Precision 18bit 20ch A/D data logger
 * @version	V1.00
 * @date	9. Feb 2015.
 * @author	Tokushu Denshi Kairo Inc.
 * @note	Copyright © 2011-2015 Tokushu Denshi Kairo Inc. All rights reserved.
 * @details これはボード固有のカスタマイズを行うためのヘッダファイルです
 ******************************************************************************/


#define  CPU_IS_RX63N                   //!< @brief CPUがRX63Nである
#define  ROMSIZE           (1024*1024)  //!< @brief ROMの容量(1MB)
#define  RAMSIZE           (128*1024)   //!< @brief RAMの容量(128kB)
#define  DEFAULT_SERIAL     SCI_USB0    //!< @brief Serial.beginで使うデフォルトのシリアルポート
#define  USBVCOM_VID        0x2129      //!< @brief USB仮想COMポートのベンダID
#define  USBVCOM_PID        0x050f      //!< @brief USB仮想COMポートのデバイスID

#define  USB_STRING_DESCRIPTOR_DATA \
'R', 0x00, 'X', 0x00, 'd', 0x00, 'u', 0x00, \
'i', 0x00, 'n', 0x00, 'o', 0x00, ' ', 0x00, \
'U', 0x00, 'S', 0x00, 'B', 0x00, ' ', 0x00, \
'V', 0x00, 'C', 0x00, 'O', 0x00, 'M', 0x00, \
' ', 0x00, 'p', 0x00, 'o', 0x00, 'r', 0x00, \
't', 0x00,
#include "tkdn_hal.h" // ボードに応じた定数の設定 #ifndef TARGET_BOARD   #define TARGET_BOARD      BOARD_AD360 #endif #define CPU_TYPE            RX63N       //!< @brief CPUの種類 #define  BOARD_NAME        "AD360"  //!< @brief ボードの名前
 

① USBのベンダID,プロダクトIDを2129:050fにすると、RXduino汎用仮想COMポートとなります。

② USB_STRING_DESCRIPTOR_DATAは、USBを最初にパソコンに挿したときに表示される名前です。

③ #define TARGET_BOARD      BOARD_AD360

というのは、先ほどCS+のGUIでマクロ設定した名前に合わせます。

④ BOARD_NAMEは、プロンプトや各種メッセージで使われるボード名です。

これら4か所を変更すれば、とりあえず動きます。

five ボード番号の割り当て

core/tkdnhal/tkdn_hal.h に、

・・・
#define BOARD_RAXINOI        0x56310541 //!< @brief ボードIDの定義。RaXino-i
#define BOARD_NP1055         0x56310551 //!< @brief ボードIDの定義。 future project
#define BOARD_YRDKRX63N      0x56380008 //!< @brief ボードIDの定義。YRDKRX63N
#define BOARD_AKIRX62        0x5621000a //!< @brief ボードIDの定義。AKI-RX62
#define BOARD_BBRX62         0x5628000b //!< @brief ボードIDの定義。BlueBoard RX62N

という場所があるので、

#define BOARD_AD360          0x56310711 //!< @brief ボードIDの定義。AD360 DataLogger

を追加します。この番号は、他のボードと重ならないようにします。

six tkdnhalのboarddef.hを作る

この作業はGCC用なので、本来はいらないのですが、念のためやっておきます。

まず、 core/tkdnhal/boarddef.hを開きます。

#include "tkdn_hal.h"

#if (TARGET_BOARD == BOARD_YRDKRX62N)
  #include "brd_yrdkrx62n.h"
#endif
#if (TARGET_BOARD == BOARD_YRDKRX63N)
  #include "brd_yrdkrx63n.h"
#endif
#if (TARGET_BOARD == BOARD_RAXINO)
  #include "brd_raxino.h"
#endif
#if (TARGET_BOARD == BOARD_GRSAKURA)
・・・
・・・
・・・
#endif
#if (TARGET_BOARD == BOARD_AKIRX62)
  #include "brd_akirx62.h"
#endif
#if (TARGET_BOARD == BOARD_BBRX62N)
  #include "brd_bbrx62n.h"
#endif
#if (TARGET_BOARD == BOARD_RXMEGA)
  #include "brd_rxmega.h"
#endif

という箇所があるので、最後に

#if (TARGET_BOARD == BOARD_AD360)
  #include "brd_ad360.h"
#endif

という行を追加します。BOARD_AD360と、インクルードするファイルは上で作ったファイルにします。

seven ヘッダファイルのコピー

とてもややこしいのですが、以下のようにしてください。

  1. /core/tkdn_hal.hを/include/tkdnhal/tkdn_hal.hにコピー
  2. /core/board_ad360.hを/include/tkdnhal/board_ad360.hにコピー
  3. /core/board_ad360.hを/include/tkdnhal/boarddef.hにコピー

/include/tkdnhal/boarddef.hは、/include/tkdnhal/board_ad360.hと同じ内容になります。

eight ソースコードの一部書き換え

とてもややこしいのですが、

  • core/tkdnhal/tkdn_ether.c
  • core/tkdnhal/tkdn_spi.c
  • lib/fatfs/mmc_rspi.c
  • lib/sdmmc/mmc_rspi.c

の一部を書き換える必要があります。

上記のファイルには、

#if (TARGET_BOARD == BOARD_GRSAKURA) || (TARGET_BOARD == BOARD_RAXINOI) || (TARGET_BOARD == BOARD_NP1055)

のようなマクロ定義がたくさんあります。

これらのマクロ定義に、

|| (TARGET_BOARD == BOARD_AD360) 

を付け加えないと、コンパイルが通らないことがあります。ペリフェラルの使用状況に合わせて書き換えてください。

なお、この手順は面倒なので次のRXduino 1.50では改善します。

eight リビルド

CS+で、クリーン・プロジェクトをやってから、リビルド・プロジェクトを行います。1分くらいでリビルドできるはずです。

Cs3rxduino_8

nine 書き込み

これで、rxduino-src-v120cshew\cslib\RXduinoライブラリ構築(AD360)_12\DefaultBuildディレクトリに、userapp.motが出来上がっているので、書き込みます。

Cs3rxduino_7

書き込みにはE1エミュレータが便利です。

Cs3rxduino_9

これでCS+でRXduinoが動くようになるので、いままでの100倍くらいデバッグが楽になると思います。

sunsunsunsunsunsunsunsunsunsunsun

CS+を使うということは、コンパイラにGCCではなくCC-RXを使うことになるので、いくつかのプログラミング上の変更点が出てきてしまいます。移植の際には気を付けてください。

① printfをUSB仮想COMポートに出力するには

main()が始まったら、すぐに

     setbuf(stdout, NULL);
     setvbuf(stdout, (char *)NULL, _IONBF, 0);

を行ってください。そうしないと、Serial.printとprintfの表示タイミングがずれてしまいます。

② 変数の宣言はスコープの最初に書かなければならない

CC-RXでは、int x;みたいな宣言はスコープ({}で囲まれた範囲)の先頭になければなりません。C99オプションを付けても結果は同じで、好きな場所には書けません。

③ 配列の要素数は定数にしなければならない

CC-RXでは、

const int MAX=100;
int array[MAX];

のような書き方ができません。#define文で書いてください。

④ 長さゼロの配列が作れない

CC-RXでは、

int array[0];

のような長さゼロの配列が作れません。これが原因で、tkdnip.cをCC-RXに移植できないでいます。C99オプションを付けてもダメです。何のためのC99オプションかもはやわかりません。

だいたい以上のことに気を付ければ、RXduinoのプログラムをCubeSuite+で実行できるようになります。


| | コメント (0)

2015.02.06

新しいRXマイコン+FPGAボード

今年の春にリリースすることを目指して、いま、「RXマイコン&FPGA搭載のボード」を設計しています。

Rxfpga_1

Rxfpga_2

スペックは、

  • RX63N(もしくはRX62N)
  • Arduino互換形状部分を含む
  • Spartan-6(XC6SLX4-2TQG144C)とCyclone4(EP4CE6E22C8N)を搭載
  • NOR型Flash ROM(M29W160ET70N6E)を搭載
  • DDR2 SDRAM(AS4C32M16D2-25BCN)を搭載
  • イーサネット搭載 (LAN8720AI, Arduino子基板を重ねてもぶつからないように低Heightのコネクタを使っている)

です。

原価9900円くらいの、売価1万円を目指しています。

これは、構造だけみればRaXino♪にFPGAをくっつけただけのように思えるかもしれませんが、そうじゃありません。

過去に心に誓ったように、「安物系マイコンボード」からは撤退するhttp://nahitafu.cocolog-nifty.com/nahitafu/2012/12/raxinoraxino-i-.html) と決めたからです。

じゃあ、これは何?と思うかもしれません。

マイコン+FPGAの構造をしていますが、これは評価ボードではないのです。

オープンハードウェアとか、スマホにつなげるとか、BLEとか、誰にでも思いつくような、チープな話でもありません。

フィジカルコンピューティングにも興味はありません。

IoTも全く興味はありません。

またArduinoか?

と思うかもしれませんが、RXマイコンの部分は、弊社の過去の設計資産を使ったためArduino形状になっているだけです。

Arduinoが本質なのではありません。

もちろん、mbedとかでもありません。

じゃあ、何なのか。

詳しいことは次の月刊特電Vol7に書こうと思います。

Rxfpga_3

| | コメント (0)

2015.02.05

光電子増倍管の金属ケース

光電子増倍管の金属筐体を作りました。

昨日作った円筒状のアルミケースを、さらにアルミの四角柱の中に入れました。

Pmtmaking10

蓋の部分は5mmのアルミ板なのですが、特にBNCのコネクタの穴をリーマーで削るのが超大変でした。

でも、苦労して二重のアルミ箱にした結果、遮光は改善したようです。

この四角い箱の中に、丸い筒が入っています。

さて、前回のダンボール製光電子増倍管ケースと比べてどうでしょう!??下の写真はダンボール製のケースです。これも黒い箱が二重になっていて、遮光性は意外とよかったんですよ。

Pmtmaking11

今回、筐体をアルミにしたことで、なんと・・ノイズが増えました。

下の図は光電子増倍管の出力をオシロで見たものなのですが、ギザギザが乗っています。これは80MHzのノイズです。

ハイボルを切っても乗っているので、同軸ケーブルが拾ってしまっているようです。

Pmt_noise1

フォトマルは出力インピーダンスが目茶目茶高いので、どうしてもノイズを拾いやすいのですが、これはちょっと厳しいですね。

そもそもこの80MHzのノイズがどこから飛んできているのか、不明なのです。

従来のダンボール製のフォトマル筐体のほうがノイズが少なかったように思えます。金属筐体が電気的に浮いていて、ノイズを拾っているのでしょう。しかし、アースをつないでもノイズが消えるわけではないので、悩ましいところです。

| | コメント (0)

2015.02.04

インチキ工作でフォトマルの筐体を作成

私は金属加工は苦手なので、当初はアルミ加工業者さんに外注しようと思っていたのですが、こんなものを一点物で加工しても業者さん的には儲けにならないのでしょうね。

「丸いものをおさえる治具がなくて・・」「外注先から見積もりの返事がなくて・・」「1式5万8千円になります」「大きな旋盤がなくて・・」「量産できるなら・・」

何社かに問い合わせたのですが、そんな感じでやんわり断られてしまいました。

手元にあるのは電動ドリルが1つと、リーマーくらい。ボール盤もない。

そんな状態でフォトマルの筐体を作りました。

スーパーインチキ工作の開始です。

oneまず、CADで図面を描いて、印刷して切って、アルミに貼り付けます。そして、けがき針や、ポンチでしるしを付けます。

Pmtmaking1

two ドリルで穴開けします。下穴は2mm。

Pmtmaking2

蓋の部分は3.2mmで穴あけし、パイプの淵の部分は2.5mmで穴あけします。

three パイプに穴あけしたら、タップでM3のネジを切ります。

これで、パイプと蓋ががっちり固定できます。

Pmtmaking3

パイプと蓋の間には厚さ0.5mmのフッ素ゴム(別にフッ素ゴムでなくても、本当はなんでもいい。名前がかっこいいからフッ素ゴムを選んだ)をはさみ、光が入り込むのを防ぎます。

four こんな蓋を両面作ります。

five いよいよ光電子増倍管の挿入です。プラスチックシンチレータのまわりにアルミホイルを巻き、その上からフッ素ゴムを巻きます。パイプの内径が80mmで、プラスチックシンチレータの外形が76mm程度なので、その間を薄いゴムで埋めるためです。

Pmtmaking4

にゅるるん。なんか、ワープコアみたい。

Pmtmaking5

six 蓋にも端子用の穴をあけておき(やはりインチキ工作で)、配線をつなぎます。

Pmtmaking6

そして、ゴムを挟んで蓋を閉めます。蓋には中の配線を描いておきます。落書きのように。

Pmtmaking7

seven ハイボルをつないでいざ測定!

Pmtmaking8

結果は・・あまり芳しくありませんでした。

容器の上のほうに手をかざすと出力電圧が変わる・・・つまり光が漏れ入っているようです。

金属工作の部分は問題なさそうなのですが、コネクタから光が漏れて入ってきてしまっているようです。コネクタから光が入り込まない工夫をしないといけないようです。

| | コメント (0)

« 2015年1月 | トップページ | 2015年3月 »