2020年12月31日木曜日

PICのADC2格闘 その1

 PICマイコンにも当然の如くA/Dコンバーターが内蔵されております。
それが最近、「ADC2」という名称の新型が登場。
わざわざ名称を変えるくらいですから、単なるバージョンアップ以上の、
何か凄いものを感じまして、登場後まもなくして手を出しておりました。

はたして、期待を超える中身の難解さに頭を抱えつつも、
なんとかデーターを取得できるようになり、現在に至っておりました。
しかしあるキッカケでデーター取得ルーチンを改良を開始したところ、
急に雲行きが怪しくなってきまして、結構なボリュームの話になってしまいました。
その顛末を複数回に分割して記載します。

************************************************************

前述のADC2ですが、まだ割りと新しい部類に入るため、
積んでるPICマイコンは そんなに多くありません。
その中で私が使っている石はPIC18F47K40とPIC16F18456。
それぞれ、「かんたんスマートモニター」と「V/Aプローブ」に載っています。

先に使い出したのはPIC18F47K40の方ですが、
私がADC2に求めたのは平均化処理の簡便化。
センサーのアナログ値を取得する際にノイズの影響を軽減する為、
連続で複数個のデーターをサンプリングし、平均化して使用してます。
もちろんソフト上で処理することも可能なわけですが、
ADC2ならハードウェアで処理できると聞くと手を出したくなるわけです。

初見のADC2は非常にインテリジェントなデバイスに見えました。
マニュアルのボリュームが凄くて、非常な多機能さを感じたのです。
感覚としては従来のADCの5倍以上というところでしょうか。
しかしこの初見は、今回の騒動で的外れだったことに気付きました。

確かにADC2はADCに比べて多機能なのですが、
インテリジェンスさが不足している為、ユーザーへの負担が大きく、
その為にマニュアルのボリュームが増えてしまっていたのでした。
逆に言えば、機能の量に比べてマニュアルが難解すぎる感じ。
現時点の感想を言えば、無理して手を出すほどの代物ではなかったかも。



そんな私感はさておき、本題を進めます。

一応、「かんたんスマートモニター」にてADC2を動かしていた(つもり)わけですが、
「V/Aプローブ」用のファームを作るにあたり、再度ADC2を見直してみることに。

ならば、「かんたんスマートモニター」のハムノイズ対策を行ってみようと思いました。
通称ハムノイズというのはAC電源ラインからの誘導ノイズのこと。
つまり50Hzもしくは60Hzのノイズがアナログ信号に載ってくる現象です。
周波数が低いので、LPFで除去しずらいんですね。

ではどうするかといいますと、1波長分の時間に渡ってデーターサンプリングを行い、
それを平均化すれば除去できてしまいます。
当然のことながら この間に元の測定信号に変動が有っても
全て平均化されてしまいますので、急激に変化するアナログ信号に対しては使えません。

50Hzの場合、1波長の時間(=周期)は20msですので、
20ms使って1回のデーター取得するようしてみます。
ポイントは2点。
サンプリング回数は多い方が好ましいとい点と、
サンプリング間隔は極力揃っていることという点。
特に後者は大事ですね。

PICマイコン内蔵のA/Dコンバーターのデーターサンプリング時間は、
12μs~100μsというところ。
動作クロックと設定で変わってくるわけですが、最長でも 0.1msとなると、
20msもサンプリングを続けたらデーター数が200個以上に!!

しかしそんな時の為のADC2と思いきや、ADC2はそこまで高機能ではありませんでした。
平均化用のサンプル数を設定することは可能ですが、全体の時間というのは設定不可。

 

ここでADC2が持ってる機能について、さらっと説明。

まず、通常のADCと同様の動作をするレガシーモード。
レジスター構成は異なりますが、デバイスの動きはADCと同じです。

次に積算モード。
サンプリングしたデーターを単純に合算していきます。

次は平均化モード。
サンプリングしたデーターを合算し、サンプリング数で割ることで平均値を出力できます。

最後にバースト平均化モード。
先に書いた平均化モードと何が違うの?という疑問が出ますね。
一言で言うと、サンプリングのトリガーが1回だけなんです。
バースト平均化モードではサンプリングをスタートさせると、
設定回数のサンプリングを行った後に平均値の出力までを一気に実行します。
なので当然ながら動作終了まで そこそこ時間を要します。

ちなみに平均化モードの場合、トリガーを掛けるとサンプリングは1回のみ。
なので例えば16回サンプリングして平均を採りたい場合は、
16回トリガー掛けてやる必要があるわけですね。

ちなみに上記の他にローパスフィルターモードというのが有りますが、
私自身使ったことが無い為、詳しく調べていないので割愛させて頂きます。


さて、上記のように単純にサンプリングしたデーターを平均化したいだけならば、
バースト平均化モードがピッタリですね。
トリガー1回で平均値が出てくるわけですから。

しかし今回は20msに渡ってサンプリングを行うという主旨です。
バースト平均化モードには 時間幅を設定する機能はありません。

ならばプリチャージ時間とアクィジョンタイムを延ばしてみたらどうか、試してみました。
もし各サンプリング動作の前のプリチャージ時間とアクィジョンタイムが延びるなら、
全体のデーター収集時間を20ms近くに出来るかもしれません。

試してみると確かにデーター収集時間は延びるものの、
期待した程は延びてくれません。
どうやらプリチャージ時間とアクィジョンタイムの挿入は、
データー収集全体の前に1回だけっぽいです。
これだと、今回の目的に対して全く意味がありません。

ですのでまた別な手段が必要になりました。
(続く)

2020年12月9日水曜日

ハンディオシロ購入

 ちょこっと波形を見たい時や、現場へ気軽に持って行きたい時の為に、
ハンディタイプのオシロが欲しいと前々から思ってました。
先日、パルス出力の周波数をちょっと確認したいと思った時に、
DER EE製デジタルテスターの周波数測定部が死んでる事に目眩して、
この際、買ってしまうことにした次第。

7万円も出せば、METEX製のちゃんとした奴も手に入りますが、
まともに測定したい時は据え置きタイプを使えば良いので、
性能よりも値段で選ぶことに。

すると、SeeedのDSO Nanoか、JYEのDSO112A、WittigのMultiScope 22-321/22-320
辺りが候補に挙がってきます。
それぞれ一長一短があるわけですが、
今回はその中からWittigのMultiScope 22-321/22-320を選んでみました。 

この製品、既にディスコンになっているのみならず、メーカー自体が存在しないっぽい。
なので売り切れたらもう入手できないという代物。
壊れたら修理不可ですが、まぁその分 安いわけですし・・・・・

この製品の長所は2ch有る入力端子が絶縁されてる点と、
RS-232CによるPCとのインターフェース機能。
入力絶縁って、据え置き型オシロでも それなりの金額になってしまうので、
こんなハンディオシロで搭載しているのは ちょっと驚きです。
もっとも、私としては1ch入力での使い方しか想定していないので、
もったいない使い方になっちゃうのですが・・・・・・

PCとの接続についても、事実上使えません。
なにせ、対応OSがWindows95とWindows98!!
しかも、Windows用のアプリの動作安定性がイマイチという評判。
シリアルポートを用意することはできるものの、
わざわざ試すだけの価値は無さそうです。

実はもう1点、私が気に入ってることがありまして、
それは単3電池で動作可能というところ。

他の2機種はバッテリー内蔵の充電式なんですね。
頻繁に使用するならば それでも構わないと思いますが、
私のように稀にしか使用しないと思われる場合、
日頃の充電管理は ちょっとやっかいな問題になってしまいます。
急に現場で使いたくなったが、充電が切れてる!!
なんてトラブルは非常に困惑しちゃいます。
そういう点で、乾電池で使えるというのはとてもメリットがあるんですね。
ちなみに私のデジカメも似たような理由で乾電池式。

さて、秋月電子に注文かけまして、翌々日に到着。
何やらデカイ箱が届きました。
開封してみると・・・・・・・・












 

中からこんなパッケージが!!
イスの上に載せて撮った写真なのですが、サイズ感がわかるでしょうか?

なんじゃこのデカイ箱は・・・と思ったら、キャリングケースに入ってるんですね。










中を開けてみると、













なかなか立派なセットになっております。
見た目真っ当なプローブが2本付いてますし、PC接続用のシリアルケーブルも入ってます。
スイッチングタイプのACアダプターも入っておりますが、
秋月ブランド品なので、秋月にてACアダプターを差し替えてるかと思われます。
ちなみにDC12V 0.5A出力の物です。

マニュアルとPC用ソフトのCDも入ってますが、
マニュアルは30ページに満たない英語版のものだけ。

まぁともあれ、早速起動してみることに。

ACアダプターを繋ぎ、側面のスライドスイッチで電源ON。
このスライドスイッチ、本体のラバープロテクトのおかげで奥まってしまってる為、
指が太い人は操作しずらいかもしれません。
その場合は、ラバープロテクトを外して使うのも有りかも。

起動画面にはファームのバージョンが表示されます。
この製品にはVer2.1が入っていました。
たぶん最終バージョンと思われます。
おかげでマニュアルと画面表記に違いが有り、ちょっと難儀しました。
マニュアルの表記自体、量も少ない上に説明がわかりづらく、
この点は ちと閉口してしまいました。

直感的に操作できるようなUI体系になってるならともかく、
本体の操作も非常に解りづらく、これは人にはお勧めしづらい感じ。
頻繁に使用してれば まだマシかもしれませんが、
たまにしか使用しないような人は、使い方を忘れてワタワタしそうな雰囲気。

あと、罠なのが「STD BY」ボタン。
マニュアルによるとスタンバイモードに入るボタンだそうで、
確かに押すと動作が停止します。
と・こ・ろが、復帰できません!!
電源スイッチのON/OFFでも復帰できず、
結局ACアダプターを抜き刺しして、電源リセットにて復帰できました。
このボタンは絶対に押してはいけません。

そんなこんなで色々と格闘し、なんとか普通に波形を表示できるようになりました。
いやぁ、長かった・・・・・・
液晶の解像度が128×64なので、画面はお世辞にも綺麗とは言えないです。
当初から予想してたので、文句は言いませんが。

しかし波形の細かいところは潰れてしまうので、
そこが気になる方は、他の機種をお勧めします。

あと気になった点として、方形波のエッジ部。
入力のアナログ回路の問題なのでしょうか?
角が丸くなってしまいます。
1KHzの方形波を表示させたところ。










エッジに丸みが出ていますね。
プローブの位相調整のせいかと思いましたが、結果は変らず。
というか、付属プローブの位相調整、ほとんど効いてない雰囲気(笑)

ちなみに比較として、同時に別なオシロで表示した波形がこれ。










このハンディオシロ、一応そこそこの周波数まで対応してるものの、
1KHzの波形で これとは、ちょっと残念な感じですね。


最後にも1点、電源ジャックの接触がイマイチ甘いっぽいです。
稀に電源が落ちます(笑)
もしかしたら、付属してる秋月のACアダプターのDCプラグ、長さが短いのかも。
まぁとりあえず使用は可能なので、後日考えることにしましょう。

あと、測定に関する諸設定は保持されないため、
必要ならセーブ機能を利用する必要があるのかな?

MPASMが無くなった問題

 以前書いたかもしれませんが、Ver5.4以降のMPLAB Xには、MPASMが含まれなくなりました。
その為、私のようなガチアセンブラ勢は非常に困惑しております。

ただ幸いなことにMPASMは単独のフォルダーにインストールされる為、
Ver5.35のMPLAB XからフォルダーごとMPASMを取り出しておけば、
最新版のMPLAB Xと共存させることができます。
おかげで新しいMPLAB XをインストールしてもMPASMを使い続けてます。

しかしそもそもなぜ、MPASMが省かれることになったのか疑問でしたが、
今朝、その答えが見つかりました。

MPLAB XのVer5.4以降は、64bit版 OS専用になったんですね。
ところがMPASMは32bit版の為、共存不可!!
それでMPLAB XからMPASMが省かれるという流れになったんだそうです。

しかし単に無くしただけじゃまずいということにマイクロチップも気付いているようで、
MPASMが必要な場合はXC8に含まれているよ、とアナウンスしてました。
XC8に含まれているMPASMは64bit版だそうです。

とは言えアセンブラの為だけに、使いもしないCコンパイラーをインストールするというのは
ちょっと気が引ける感じなので、いよいよ64bit版MPASMが必要になってから、
XC8のインストールを検討することにしようかと。