dポイントプレゼントキャンペーン実施中!

 放射線をGM管を使ってパルス信号に変換し、そのパルス時間間隔を測定しようとしています。
 パルス信号に変換するまでは成功し、H8/3069Rを搭載したイエローソフト社のYH3069RU-1ボードを購入してマイコンの使い方を学んだのですが、マイコンだけでなく電気回路においても初心者なのでボードのどの機能を用いて回路を設計すればいいのかわかりません。

A 回答 (6件)

>(1)16ビットITUでオーバーフロー割り込みが可能なら、割り込みでカウントアップする事で16ビット以上の桁のカウントが出来ます。


>イエローソフトさんが教えてくれた方法とどちらが一般的な方法ですか?
どちらかと言うと外部クロックでタイマ周期を適正にする方が正解だと思います。外部クロックを用意する手間がありますが。

>またまた見当違いなことを言っていたらごめんなさい。もし外部クロックを使っての測定の場合は外部SRAMを使う必要ってなくなりますか?
USBで転送が間に合うなら確かに大きなバッファは必要ないですね。

>マイコンボードに複数の穴がありすぎてどれがIOポートでどこにパルス信号を送る線をつなげればいいかわかりません。
インプットキャプチャできる端子に接続する必要があります。
TIOCA2~0,TIOCB2~0の端子に接続してください。CN2の
19 PA7/TP7/TIOCB2/A20
20 PA6/TP6/TIOCA2/A21
21 PA5/TP5/TIOCB1/A22
22 PA4/TP4/TIOCA1/A23
23 PA3/TP2/TIOCB0/TCLKD
24 PA2/TP2/TIOCA0/TCLKC
です。どれでも良いと思うんですがH8マイコンは概要しか知らないんで罠があるかも知れません。とりあえずは実験なのでダメなら接続しなおすだけですからね。兼用端子なので、入力端子の切替とかでレジスタ設定が必要なのでお忘れなく。

この回答への補足

先ほど書き忘れたのですがイエローソフトさんによればマイコン自体に外部クロックの機能が付いているそうなのでそれを使ってみます。正直説明書を読んでも外部クロックのことはよくわかりませんがとにかく頑張ります!

補足日時:2009/02/07 19:13
    • good
    • 0
この回答へのお礼

度々ありがとうございます!!

おかげ様で説明書の端子の見方が何となくわかってきました!
説明書によると
23 PA3/TP2/TIOCB0/TCLKD
24 PA2/TP2/TIOCA0/TCLKC
を使えば外部クロックを使って測定できそうです。

zwiさんのおかげでようやくプログラミングのほうに突入できそうです。なんせ初めてのプログラミングなので相当苦労すると思いますがとにかく頑張ります!

またお世話になる可能性がありますがその時はよろしくお願いいたします。本当に本当にありがとうございました!!!!

お礼日時:2009/02/07 18:49

すいません、教えてgooを使っているのですが書き込まれたときの通知メールが届きません。

今お礼が書かれていることに気づきました(^_^;)
ってokwaveの通知メールに障害があったと返事が来ましたね。あはは(^_^;)

じゃあ、気になるポイントを書くと。
(1)16ビットITUでオーバーフロー割り込みが可能なら、割り込みでカウントアップする事で16ビット以上の桁のカウントが出来ます。
(2)10万点測定って事で256KBでは足りませんが、512KBでは足りそうな感じですのでメモリを増設することを考えた方が解決が簡単です。
(3)転送の問題ですが、転送速度を計測速度が上回るとやがてはオーバーフローします。RS232Cだとかなり不安ですね。USBでバースト転送すれば間に合いそうな気もしますが今度は割り込み等でじゃまをして計測の精度を下げないか不安です。このあたりは実験して妥協点を探ってみた方が良さそうです。

今後更に精度等が必要になった場合は、計測マイコンとパソコンへの通信マイコンを分ける(マイコン同士は高速なリンクで接続)とか手も有りますので状況に合わせて考えて行けば良いと思います。

この回答への補足

何度もお答え頂きありがとうございます。
本日イエローソフトさんへ電話をしさまざまなお話を頂きました。
まずそのことについて書かせていただきます。

・外部クロックを3kHz~4kHz程度に設定し、内部クロックに接続することにより数十秒の測定も可能とのこと。
・インプットキャプチャを使うことによりパルス時間間隔の測定をする。
・USBでデータ送信を行い割り込みで時間間隔を測定するだけならばCPUへの負担も少なくミリセックオーダーならば測定できる。

とのことでした。

>(1)16ビットITUでオーバーフロー割り込みが可能なら、割り込みでカウントアップする事で16ビット以上の桁のカウントが出来ます。

イエローソフトさんが教えてくれた方法とどちらが一般的な方法ですか?

>(2)10万点測定って事で256KBでは足りませんが、512KBでは足りそうな感じですのでメモリを増設することを考えた方が解決が簡単です。

またまた見当違いなことを言っていたらごめんなさい。もし外部クロックを使っての測定の場合は外部SRAMを使う必要ってなくなりますか?

>3)転送の問題ですが、転送速度を計測速度が上回るとやがてはオーバーフローします。RS232Cだとかなり不安ですね。USBでバースト転送すれば間に合いそうな気もしますが今度は割り込み等でじゃまをして計測の精度を下げないか不安です。このあたりは実験して妥協点を探ってみた方が良さそうです。

バースト転送ですね。勉強しておきます。


あと追加で質問させていただきます。
マイコンボードに複数の穴がありすぎてどれがIOポートでどこにパルス信号を送る線をつなげればいいかわかりません。H8マイコンのハードウェアマニュアルとボードの説明書を読んでみたのですが全く理解できませんでした。恐らく初歩的すぎる質問だと思いますが教えて頂けると幸いです。

補足日時:2009/02/05 21:56
    • good
    • 0

>ごめんなさい。

パルス幅ですよね…。勘違いして平均パルス時間間隔を記述してしまいました。パルス幅は本日中にオシロスコープで測定してからご報告します。

私なりの想像として計測と言うことで、パルスの幅とパルスの時間間隔を記録する必要があると勝手に思っているのですが違いますか?
で、パルスの幅を最低単位1msで計測するとして最大幅が2秒以上と言うことで想定すると値の範囲は1~2000と成りますので2バイトのメモリを1パルスに付き必要とします。
更にパルス間隔と言うことで、「最大でも数10秒」と想定しますが最低単位1msだと1~40000ですか。2バイトだと最大65535msが上限と成りますので2バイトだと足らなくなる可能性があります。
とりあえず合わせて4バイトで、これは1パルス分の記録に必要なメモリ量としてみます。

>256秒ぐらいですね。これで足りますでしょうか?
私が気にしたのは、何パルス記録したいかです。
1msのパルス幅とパルス間隔でパルスが連続した場合は、256KB/4バイト*2msで約128秒でメモリを使い果たします。まぁ、ここまで極端な例は無いのでそれ以上に使えるとは思いますが。こういう設計の問題は作り出す前に色々と考えておく必要がありますね。

>あと思いついたのですがパソコンにデータを送信せずにボードにSDカード等のフラッシュメモリを取り付けて測定して方が処理速度はあがりますか?
フラッシュの記録もとても高速とは言えません。
SRAM > フラッシュ > USB > RS232C
って感じでしょうか。SRAMが一番早いです。SDフラッシュは書き込み専用ハードじゃないマイコンが制御すると遅いので実測してみないと実用になるかは良くわからんです。SDフラッシュへの書き込みライブラリや回路が既に使った実績が有るなら難しくはないでしょうが、実績が無いと苦労すると思いますよ。イエローソフト社だとSDフラッシュのパーツとライブラリが有るみたいなので、多少難易度は低いかなと思いますが導入してみないと難易度は分りませんしね。記録停止後、RS232Cでパソコンに転送するのが一番簡単だと思います。
それとフラッシュを使うかどうかは、SRAMで足りるかどうか、電源断などの記録保護のために必要かどうか、技術的・時間的に可能かどうかで判断されると良いと思います。

この回答への補足

>私なりの想像として計測と言うことで、パルスの幅とパルスの時間間隔を記録する必要があると勝手に思っているのですが違いますか?

パルスの時間間隔のみを測定しようとしています。確かにパルス幅も測定できれば理想的なのですが。ちなみにオシロスコープで計測したところ波形整形する前のパルス幅は約1msでした。

>私が気にしたのは、何パルス記録したいかです。

申し訳ありません。パルス時間間隔を最低1000点、ゆくゆくは10万点測定したいと考えています。ですので全然足りません…。


ごめんなさい。頭が混乱してきたのでzwiさんに教えて頂いたことも含めて私が考えているプランを書かせていただきます。

1.整形されたロジックパルスをマイコンボード(IOポート)に接続、IOポートからパルスを検知
2.16ビットITUにより(L->H)を計測
3.私の計算では分周回路を使ってもTCNTは21ミリ秒でオーバーフーを起こすので外部SRAMに時間間隔を記録
4. 次の(L->H)までの時間(パルス幅くらいと考えています)にRS232Cで外部SRAMに記録されたデータをパソコンに転送(ゆくゆくはUSB)及びカウンタ(外部SRAM)リセット
5.次の(L->H)を検知…

と考えています。恐らくご指摘頂いたとおり256KBでは足りないので測定するたびにパソコンに送信するしかないのかと思い上記にのように考えてみました。

何度も何度も本当にありがとうございます。
私なりに考えたプランの間違い、もっとこうするべきなどのご指摘を頂けると幸いです。

補足日時:2009/02/04 19:01
    • good
    • 0

H8では無くPICマイコンですが参考例を見つけました。


http://www.asahi-net.or.jp/~gt6s-sbic/electro/gm …
この例では、カウントしてるだけですが回路とかは参考になると思います。

>また質問となってしまうのですが割り込みを使えばパソコンにデータを送信しつつパルス幅を連続で測定することができるということでしょうか?
パルス入力に割り込みを使う事でパルスが立ち上がるときに自動的に他の事を中断してパルス処理に移れます。その分ほかの事が後回しになりますけど。
遅れても良い処理、例えばパソコン等に情報を送っている処理を後回しにします。ただ、プログラムの難易度が高くなるので最初は避けた方がよいでしょう。

>平均パルス幅は文献によると約2秒なのですが長いものは数秒、短いものでは数ミリ秒とかなり幅が広いです。おそらくオーバーフローを起こしてしまうので外部SRAMを使おうと考えているのですが…。的外れなことを言っていたらごめんなさい。
そうですね・・・。最初は無理せず外部SRAMに溜め込んで、パルスの計測止めてからパソコンに転送する仕組みにした方が簡単だと思います。パソコンへの転送はUSBの方が早いですが難易度が高いので、最初はRS232Cをお勧めします。

それと気になるのは512KBの外部SRAMで足りる計測時間かです。最悪1ms1パルスとして、1パルスを2バイトだとすると256x1024ミリ秒ぐらい計測できます。256秒ぐらいですね。これで足りますでしょうか?

この回答への補足

本当にありがとうございます。私自身このサイトを初めて使わせて頂いたのですがここまで親切に対応してくださる方がいらっしゃるのですね。本当に感謝しています。

>平均パルス幅は文献によると約2秒なのですが長いものは数秒、短いものでは数ミリ秒とかなり幅が広いです。おそらくオーバーフローを起こしてしまうので外部SRAMを使おうと考えているのですが…。

ごめんなさい。パルス幅ですよね…。勘違いして平均パルス時間間隔を記述してしまいました。パルス幅は本日中にオシロスコープで測定してからご報告します。


>それと気になるのは512KBの外部SRAMで足りる計測時間かです。最悪1ms1パルスとして、1パルスを2バイトだとすると256x1024ミリ秒ぐらい計測できます。256秒ぐらいですね。これで足りますでしょうか?

度々ごめんなさい。これはパルス時間間隔のお話ですよね?恐らく最大でも数10秒なので問題ないです。

あと思いついたのですがパソコンにデータを送信せずにボードにSDカード等のフラッシュメモリを取り付けて測定して方が処理速度はあがりますか?

質問ばかりで申し訳ないです。

補足日時:2009/02/04 14:57
    • good
    • 0

あっ、パルス時間間隔でしたね。


だとすると付け加えで、(H->L)を検知したあと、(L->H)に戻る時間もタイマで計ってください。それでパルスの間隔が得られます。

ガイガー=ミュラー計数管って使った事が無いので、どんなパルス幅の信号が流れるの実感が無いので最適な方法を書いてないかもしれません。パルス幅って何ミリ秒台なんでしょうか?それともマイクロ秒ですか?

この回答への補足

ごめんなさい!数マイクロ秒じゃなくて数ミリ秒です。
    

補足日時:2009/02/03 21:05
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます。
私の担当教授がこの分野にあまり詳しくないのでできるだけ自力で頑張ってみます!

平均パルス幅は文献によると約2秒なのですが長いものは数秒、短いものでは数マイクロ秒とかなり幅が広いです。おそらくオーバーフローを起こしてしまうので外部SRAMを使おうと考えているのですが…。的外れなことを言っていたらごめんなさい。

お礼日時:2009/02/03 20:37

ここで回路まで語るのは難しいんで概要だけ。


[回路側]
・パルスがロジックパルスに電気回路で整形されている必要があります。
・整形されたロジックパルスをIOポートに接続します。
[プログラム側]
・接続されているIOポートをINに設定します。
・タイマを初期設定してパルス時間計測の準備をします(タイマ周期と精度は必要に応じて調整してください)。
・IOポートを監視して(L->H)を検知したら、タイマをスタートします。
※L->HなのかH->Lなのかはパルス回路の都合で変わります。
・IOポートを監視して(H->L)を検知したら、タイマ値を得ます。これがパルス幅です。
・パルス幅をパソコン側にRS232C等で送信します。が、送信中はパルス幅が計れなくなるので割り込みを使うなど工夫が必要です。
・タイマを停止して初期化。またIOポートの監視に戻ります。
出来ればIOポートの監視も割り込みで行ったほうが良いです。

話が難しいと感じたら、荷が重いと思いますので学校なら先生や先輩、会社なら上司等に相談した方が良いです。
    • good
    • 0
この回答へのお礼

丁寧な回答ありがとうございます。
正直難しいお話ですが全くわからないというわけでもないのでがんばります!

また質問となってしまうのですが割り込みを使えばパソコンにデータを送信しつつパルス幅を連続で測定することができるということでしょうか?

お礼日時:2009/02/03 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!