● 実験テーマ61
「PIC32MX_モノクロ単CHオシロの、REによるトリガレベル調整の実験」
(RE:ロータリエンコーダによりトリガ調整する実験です。今回、良い結果が得られたので報告します)
・以下、この実験の顛末記です。
■ 2014.11.1
・以前、実験テーマ30で、タクトSWを使っての、トリガレベル直接入力の実験はしているのだが、
SWなので、なにせ操作性が悪い。
この操作性がよくならないものかと考え、RE(ロータリエンコーダ)に置換えたらどうかと、
思いついた。
しかし、応答性とかが心配なので、実験にて試してみることにした。
<最初に考えた実験仕様>
@ トレーニング基板使用
A REには、安価なメカ接点式のものを使う。(秋月で、80円で販売している、「EC12E2420801」)
A RE治具を、ポートに接続( RE-A出力を、RF5、RE-B出力を、INT0(RF6)に接続)
B RE-Bの立下りで、外部割込み(INT0)を起動し、そこで読込み処理を行う。
C 時間軸は、0.1mS/div固定にする。
D 肝心な、トリガ仕様は以下の通り。
D-1: 可能な限り、0〜1023(0〜3V)fullレンジを可変できるようにする。
D-2: 初期値=512(センター:1.5V相当)、1STEP
±5(約15mV相当)として、10bitfullレンジを
出来るだけカバーすると、センター:512を中心に、±102ステップになる。
103ステップ目は、±共に、フルスケール値をオーバーするので+103側は、強制的に1022にし、
-103側は、2にする。
D-3: トリガ設定値が判るように、液晶画面、右隅に、その値を表示する。(例:Trg:0512)
■ 2014.11.3
・REを外部割込みで読込む方式で、ソフトを書き上げた。
HEXを書込んで、動作チェックするも、オシロ動作がおかしい。何か、波形表示が違う。
これは、イージーミスだった。
0.1mS/div固定としたため、イニシャライズの、プリスケーラの値を、PR3=
399;から、PR= 79;に変更
したが、ここを書く時に、PR3= PR3= 79;と、元々書いてあった、PR3=を残したまま書いてしまったこと
に気が付かずコンパイル。
これでも、コンパイルエラーは出ない。
もちろん普通こんな書き方はしない。
PR3= 79;と修正し、オシロ表示はOKとなる。
■ 2014.11.4
・昨日いろいろやって、基本的に動かすことは出来た。
昨日のソースは、このようになっています→ Scope_PIC32MX_RE_TRG_TEST_141103_2.c
しかし、メカ式の弱点なのか、チャッター対策をソフトでしても、完全には上手く行かず時々数値飛びを起こす。
今日、REの各相のタイミング波形を取ってみたが、なんだが、相の出方が違う??
これでも、回転方向と、数値増減の関係は合っていたので、波形を見るまでは、疑わなかった。
ただ、右回転の場合、これじゃB相の立下りエッに対して、A相の立下りが殆ど同じになっているので、
誤動作の可能性が大!!
※ この原因は、治具の配線ミス
BとC((コモン)がテレコになっていた。
違う型番の、REのピン配置を見ていたようだ。
・早速誤配線を修正し、位相関係を再確認した。
・チャタリングは実測したところでは、目立っては発生してない感じ。
時々立下りの方に多く発生している模様(1mS以下)
REの規格では、チャタリング:3mSmax, バウンズ:2mSmaxとなっていたが、チャタリングが立上りで、
バウンズが立下がりと考えて良いのだろうか、今のところ不明である。
トータルで考えて、5mSmaxとすれば、今、B相の立上りに入れているウエイト値は、100mSであるが、
50mSに変更しても大丈夫と思い変えてみた。
結果、そんなに変わらない感じだったので、これにFIXした。
また、昨日の配線ミスの状態でも動いていたのだが、数値飛びが目立っていた。
配線ミス修正で、良くなるのかなと思いきや、期待するほどではなかった。
時々発生する数値飛びの幅が少なくなってはいる。
REのリードは、ほぼ、波形更新間隔(0.3秒)の間で行われるので早く回した場合の応答性はあまり良くない。
まあ、アナログVRにはかなわない。
操作的には、トリガポイントをうんと端に寄せた場合、これをセンターに戻す時、何回も回さなければならない
ので操作が煩わしい感はある。
これを改善するには、プッシュSW付きの、REを使い、プッシュしたら強制的にセンター値の戻す機能を付けれ
ばよいかもしれない。
メカ接点式のREを使う限り、ある程度の、数値飛びは、しょうがないかもしれない。
光学式のを使えば、かなりよくなるはず。
但し高価:80円に対し、1800円
■ 2014.11.5
・何も割込みで、REを読込まなくても、メインループで、読込んでもよいはずである。
割込みで読込む場合、波形描画更新中のところで、RE割込みが入ると、表示が、おかしく(はっきりとチラツク)
なるので、その間は、外部割込みを禁止して、更新が終ったら、再許可するような記述が必要であるが、
メインループで読込めば、その必要はなくなる。
メインループで、波形描画更新間隔の、0.3秒ウエイトのところで、エッジセンスを、1mS間隔で、300回実施
させるように、forループを追加してみた。
こうすれば、波形描画更新間隔の、0.3秒ウエイトも兼ねることになる。
つまり、300回サンプル(RE-B相の立下りのエッジセンス)のまとめ読みを行う訳だ。
あと、まだ気になっているところもある。
トリガ値を表示する方法は、上手く行ったが、
直感的ではないし、波形表示の邪魔にもなる。
前考えた、5ステップのトリガレベルでは、細かい(約14mV)ステップの
トリガ電圧を与えることが出来るが、
液晶右端にバー表示した場合、液晶Y方向のドット数(64ドット)と合わず、目安程度の表示となってしまう。
なので、ステップ分解能は下がってもよいので、Y方向のドット数=64
に合わせて、ステップ数を決めることにした。
1ドット当たりは、1024/64= 16(3/64= 0.047V相当)のステップ値になる。
<今回のトリガ値の直接入力仕様>
@ 初期値=512(センター:1.5V相当)、1STEP ±16(約47mV相当)
センター:512を中心に、±側は、31テップ、-側は32ステップになる。(計64ステップ)
32ステップ目は、+側は、フルスケール値:1023をオーバー(1024)するので、1008(2.95V相当)とし
−側は、0なので、そのまま0とする。
−側は、33ステップ目に、フルスケール値:0をオーバー(-16)するので、0とする。
A トリガ設定レベルが視覚的に判るように、液晶画面、右端に、バー(マーカー)表示する。
B 最初やったトリガ値表示記述は、デバッグ用として残す。(コメントアウトしておく)
・この修正で上手く行く!!
結果は良好である。
@ 64テップ(0〜 1008)を可変するのに、そんなに時間が掛らない。(300回まとめ読みの効果)
A 数値飛び(マーカーの移動)も殆ど問題ない範囲に落ち着いた。
300回まとめ読みと言っても、波形描画更新間隔の、0.3秒の間でしか読んでないので、
REを回した時の、バー(マーカー)表示の反応が心配だったが、それほどでもなかった。
■ 2014.11.6
・これで、ロータリエンコーダーで、トリガ調整を行っても、ほぼアナログVRと同じ感覚で調整を
行うことが出来ることを確認できた。
今日はいくつかの画面サンプル取りを行った。
実験風景と、画面サンプルのついては、このページトップの写真を参照してください。
<最終回路図>
・こちらから、どうぞ→ 「PIC32MX_モノクロ単CHオシロ_REトリガ実験」
<最終ソース>
・こちらから、どうぞ→ Scope_PIC32MX_RE_TRG_TEST.c
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ62へ →