ノイズ除去のはなし
ノイズ除去とは
一般的にマイコンでスイッチを読み取る場合、スイッチにはチャタリングといって切り替え時に接点が短い周期で ON/OFFする物理現象から、接点電圧が短時間にON/OFFする現象があります。これを正確に読み取りたい場合は、抵抗やコンデンサーで時定数を作って、波形をなまらせて対処したり、ソフトウェアで何回か読んで平均化するなどの手法をとります。
ハード的には
右図は私がかつて、衛星放送のアンテナアクチェーターの制御時に使ったリードスイッチ型の回転センサとそこから数10m延長した受信部でのパルス信号受信の回路です。
リードスイッチはモーターの回転に伴って動く磁石で ON/OFFしますが、このスイッチが切り替え時に短い周期でON/OFFするチャタリング動作をします。受信側で時定数を作ってフィルタリングしますが、何かの拍子で結構幅の広いノイズパルスが出る場合も多く、またモーターを動かすための大電流を流すリード線も一緒になっているので、切り替え時はもちろん、モーターの負荷がかかった時にもモーターからのノイズが紛れ込みます。このパルスを使ってアクチュエーターの動いた長さを測定してパラボラアンテナを信号の受信出来る位置まで動かすので、数パルス違っただけでも感度の最良点を外してしまうほどシビアな信号です。アンテナを端まで動かして戻ってくると数回に1回合わなくなる。古い電流を流さないと動かないアクチュエーターに変わるとズレやすいなど、もうすこしで完成するところで、完璧にならずに悩んでいました。
ソフトを見直す
どうしてもHigh期間中のノイズが取れないので、ソフトで何とかならないか考えました。この回路構成上ではスイッチが ON している時は配線がGND に繋がっているので比較的インピーダンスが低く、ノイズが乗りにくいことがわかります。それで3回続けて Lowだったら Lowと判定することにしました。では High はどうでしょう?普通だったらHighも3回連続でとなりますが、ノイズが多く、HighなのにLowパルスが混じる場合が出てきました。これは抵抗でプルアップしているだけなので、数百Ω程度ではノイズが乗りやすくなるのでした。では Highが3回中2回以上でいいかなと変えたのですが、Low期間になる時にけっこうタイミング的に3回中2回Highのノイズが出てミスカウントは続いてしまいました。
そこで発想を変えたのです。3回連続 Low 以外は Highと検知して Low期間の後の Lowは続行中、Low期間後Lowが3回連続しなかったら High 期間だとしたのです。3回中2回Lowがあっても High期間とするのです。これはパルス周期がある程度あるので、パルスの幅を正確につかむよりもHigh/Lowが変わったことを検出することが回転数の検出ミスをなくすために重要だったのです。
ちょっとした発想のきっかけと、ハードの性質を見極めた変更の後は素晴らしい追従性を誇って製品として結構業界でも一目置かれた製品になりました。
| 固定リンク
「アナログ」カテゴリの記事
- MIDAS Venice Mixerの修理(電源編)(2024.12.05)
- MIDAS Venice Mixerの修理(2024.12.04)
- 真空管のはなし(2024.05.21)
- パワーアンプ RAMSA WP-1200A の修理(2023.08.06)
- BOSE Power AMP 1701 の修理の話(2023.07.15)
コメント