MCU 72:ラダー式(A/D変換)電圧計
avr [AT90S2313]


 以前「ラダー式(はしご:2R-R)A/D変換を作った時、後で電圧計を作ろう」と考えた事がありました。その後A/D変換はもっぱらIC式にし(10bitの物が出回っている)、少し時代遅れになってしまったラダー式のA/D変換は使わなくなりました。
 先日引き出しからavrを出していた時、「古い周波数カウンター」と共にA/Dコンバーターが出て来たので、このラダーを使って「電圧計を作ろう」と思い、作る事にしました。
 「ICを差し替えれば少しの改造で出来るだろう」と当時の「2005年頃作ったAT90S1200を外し、AT90S2313を差して動かす」事にしました。同じ20Pinで問題はなさそうです(古い設計なので発信器は内蔵していない)
 …で、4MHzのセラロック追加して作動させた。AT90S1200は1MHzの内臓発振で動作していた物です。

 [ 6Bit式 ]

 コンパレーターを使うので初め「4bitの0から15Vにしよう」としたのですが、これでは少し荒っぽいというので、6bitにして電圧も0から31Vで、0.5V単位にする事にしました。
 これで24Vまでは表示出来ます。

Kairozu

 [ 精度 ]

 ラダー式のA/Dコンバーターは使う抵抗の精度はそのまま「全体の精度」になります。市販の安価な抵抗を使うので公表5%誤差の物をテスターで選別して1%程度にして使います。従って誤差は結構発生します。
 他に基準電圧も多少関係します、電源の5.0Vも本当は2系列の5.12Vが必要ですがまあ良いでしよう。誤差0.5Vで何とか吸収出来るかなー。
 少し高い電圧[20.0V]で調整すると、本当は全部合うはずですが乾電池の表示が[2.0]と低い方で少しおかしい結果になりました。
 後で抵抗を調べると、この辺で少し抵抗のバラツキが大きかったようです。ここを越えると大体正常に表示されました、結果はまあまあという事になります[回路図は単にアナログコピーです、手を抜いています]

 [ Soft ]

 A/D変換の方法はbit毎にチエックする方法と、0から1/2/3と順にカウントアップしてコンパレーターの変化を調べる方法があり、前者はbit数が多い場合有利ですが今回は「原始的な0からUPする方法」で調べる事にしました。
 SoftはavrでもPICでもあまり変わらない感じです、でも細かい設定は違います…。

 [ 表示はLCD ]

 今回は表示をLCDにしました、ライブラリーがあるのでこれを使えば良いと安易に考えStartしました。結果は予想以上にメモリーを食っています。汎用性があるので仕方が無いのですが…。
 場合によっては作り直した方が良いかも知れません、2KBMaxなので少し複雑なプログラムは無理かも知れません。
 それとコマンドで文字列の表示が何故か出来ません、LCDが悪い(秋葉出身の安物!)のかも知れません。
 今回は電圧表示程度なので問題ありませんが、それでも[プログラム]は1.2KBを越えています(多いなー)。
(もしかして、不要ライブラリーを入れてコンパイルしているからかも…?)


Foto

[ 動作 ]

 以前の基板をリユースしたもので、単にA/D変換してLCDで表示するという物です。半固定の抵抗はLCDのコントラストと入力部分のレベルコントロールです。
 電圧は5V動作で4MHzのセラロックを使いました。動作はほとんど待ち時間です。
 精度の必要があるものには使えません。
 基板は使ってない部品も付いています、部品は後ほど外す予定です。

2011/3/8 作成



 [MENU] [MAIN MENU]

inserted by FC2 system