PWMでD/A変換:アナログマルチプレクサの応用で
・2020年8月13日:Arduino、analogWriteは捨てちゃえ。ちゃんとしたPWMを使おう
ということで、過去、PWMを使ったDAC(D/A変換回路)を
さまざまなツールで使っています。
例えば、
・JIS C8708による充放電サイクル試験回路(トランジスタ技術2010年2月号)
・2020年4月10日:JIS C8708:2019対応ニッケル水素電池充放電実験回路(回路図とプログラム)
・2022年4月14日:Arduino IDEでRaspberry Pi Pico:PWMでD/A出力してA/D入力を試す
・2022年4月15日:Arduino IDEでRaspberry Pi Pico:A/D入力が…あれっ?
これらでは、PWM波からDC電圧を作るのに、
基準電圧ICを使っています。
Vref値とGND間をPWM波でマルチプレックスし、
LPFを通すことで直流に。
デューティ比に比例したDC電圧を得ています。
この応用ということで、Arduino UNOのマイコン
ATmega328PのAREF電圧を取り出した使った実験も
しています。
例えば、この記事。
・2022年10月5日:サーミスタ103JTで計った温度をシリアル出力
サーミスタの抵抗値を見るのに、AREF電圧を取り出して
A/D変換します。
※これはMPXとは関係なしの用例。
次のこの記事では、AREFをオペアンプでバッファして
PWMし、LPFを通してD/A変換しています。
・2022年4月22日:Arduino UNOのA/D入力:PWMでD/A出力してA/D入力を試す
ここで問題に気が付きました。
「なんじゃこれは?」の信号が見えたのです。
AREFをオペアンプでバッファして取り出します。
ATmega328Pに関してはこれでうまく基準電圧が
取り出せます。
そのオペアンプ出力を直にマルチプレクサの入力に
つないでいます。
外付け基準電圧ICを使った時のようにコンデンサを
入れたいところなのですが、発振の可能性があるので、
オペアンプの出力にコンデンサは入れられません。
たまたま、このPWM→D/A変換部の波形を見た所、
こんな信号になっていました。
AREF電圧を出力しているオペアンプ、そこにPWM波に
同期した負パルス(▼マーク位置)が出ているのです。
出力インピーダンスは低いはずなので、MPXの切換
ノイズが飛び込んでいるわけではありません。
そこで、こんな回路を使って実験してみました。
プラス側のIN1入力は1kΩで+5Vに。
マイナス側は1kΩでGNDに。
すると・・・・
まず、1ゲートタイプのマルチプレクサ TC7W53。
MPXパルスが変化したエッジでIN0、IN1に瞬間的な
電流が流れている様子が見えています。
AREF電圧をバッファした通常速度のオペアンプでは、
この短いパルス(150nsくらい)を抑えきることができない
のでしょう。
なぜこんなことが起こるのか・・・
TC7W53の内部回路を見ると分かってきます。
IN0とIN1の切換には、2直にしたインバータが
入っています。
IN1側がその後段につながっているので、IN0から
遅れて切換されます。
その一瞬、COM端子につながるOUT0とOUT1を通して
IN0とIN1が短絡するのです。
IN0はGNDにつながっていますので、オペアンプ出力を
つないでいるIN1が一瞬だけGNDに引っ張られることに
なってしまいます。
それがオペアンプ出力に現れた負パルスの原因です。
※観察のためIN0とIN1に1kΩの抵抗を入
れましたが、IN0、IN1とGND間に0.01uF以上、
0.1uF程度のコンデンサを入れると短絡パルス
は見えなくなります。
基準電圧ICを使った時のパスコンは有効という
ことがわかります。
対策案
・ATmega328PのAREFをオペアンプでバッファして
基準電圧を得るのはOKだが、それをPWM制御する
マルチプレクサにつなぐのは×。
・PWMするマルチプレクサでD/A変換する時は、
パスコンを付加できる基準電圧ICを使う。
こんなところでしょう。
※見えなくなるけど、それでも、短絡は発生してる。
ノイズ発生の要因になるか。
※注1
基準電圧ICに付加するパスコン、こんなことも
ありますので。
2019年9月14日:良かれと思って付けたコンデンサが・・・
※AD680・・・発振!
※どうなんだろう
多チャンネル入力A/Dコンバータ、たいていの場合
マルチプレクサが入力。
チャンネル切換時に今回のようなことが起こる心配
は無いのか?
入力に入れたCRフィルタが役立つかも。
※ブレッドボードで実験
クロック源はATmega328Pを使ったパルスジェネレータ
拡大。
| 固定リンク
「トラブル遭遇」カテゴリの記事
- Arduinoで「ボコスカハンマー」 あれれれれっ?!(2023.12.07)
- 今日の失敗:パーツクリーナーで「ポリスチレン」にダメージ(2023.11.10)
- 今日の修理:チャートレコーダ(2023.11.09)
- 愛用のハンダゴテ・・・コテ先が取れないゾ!(2023.10.27)
- 電磁石の接触面の状態で保持力が変わるの?(2023.09.28)
「Arduino」カテゴリの記事
- Arduinoで「ボコスカハンマー」 あれれれれっ?!(2023.12.07)
- Arduino UNO R3で±19.9V表示電圧計(2023.10.14)
- 「御詠歌プレーヤー」の製作 (MP3-TF-16Pモジュールの使用例)(2023.08.10)
- Arduino UNO R3のソケット・・思えば違和感がぁ(2023.07.07)
- 初めて買ったArduino UNO・・・今は(2023.05.25)
「AVRマイコン」カテゴリの記事
- ATmega4809のシリアルポート(2023.01.18)
- PWMでD/A変換:アナログマルチプレクサの応用で(2023.01.02)
- ガレージのLED表示デジタル時計がダウン(2022.12.20)
- FLUKE 87IV デジタルテスターのデータをIrDAで吸い上げる(2022.11.15)
- 数値をBCD出力(表示)するルーチン(2022.10.08)
コメント