デジタルテスター
■ 概要
- ・分圧された電圧をA/Dで計ることで簡易的に抵抗値を計る装置です。
■ 特徴
- 精度は2桁程度ですが、応答が速いです。(ジャンクや福袋的に購入した抵抗の選別等に使用)
- 一応、0〜5Vの電圧計にもなります。
- というよりはATmega88のA/D変換の個人的な演習課題です。(実は非常に簡単だった)
- 前フリとして、A/D変換を使わずに、アナログ比較器と16bit Timerの捕獲器を用いてRC回路のキャパシタ充電時間を図ることによる抵抗計を作成しました。こちらのほうは多分ATtiny2313でも作れると思います。
■ 写真
■ 回路図
- ・ATmega88はクリスタル発振モード、20MHzクリスタルを接続します。
- ・ファームはそのままAVRライターで焼いても結構ですが、bootloadHIDを 最初に焼いておくと、AVRライターを使わずにUSB経由でプログラムの差し替え が出来るのでお勧めです。
- ・測定可能なレンジは 10Ω程度〜100kΩ程度となります。
- ・有効桁は2桁程度です。
- ・測定は参照抵抗の精度に依存しますので、DMM等で選別することをお勧めします。
- ・選別しなくてもDMMであらかじめ計っておいて、補正計算を入れることも可能です。
- ・電源投入直後にPROBEをショート(0Ω)させた場合に、電圧測定モードに移行します。
- ・電圧測定レンジは0〜5Vです。
- ・電圧測定時は、' 0.00' あるいは ' 5.00' のような固定小数3桁表示になります。
- ・抵抗測定時は、オープン時に'- - - -'表示になり、抵抗値が測定されると、浮動小数 の表示になります。
- ・クロックはクリスタル発振である必要はありませんし、20MHzである必要もあり ません。クロックを変更された場合は、LEDのダイナミック点灯が遅くなりますので main()関数内のtimer_init()の初期値を変更し、A/D変換クロックのCPUクロック に対する分周比(1/64)も適度に変更してみてください。
- ・ファームサイズは現在2kB程度なので拡張が可能です。 たとえばRxD経由のコマンドによって7セグの点灯を設定する表示器の機能を持たせたり モード設定によってデジタル時計の機能を持たせたりが可能かと思われます。
- ・設定スイッチの設け方としては、LEDドライブコモン信号{PD5,PB3,PB4,PB5}を10kΩ程度
を挟んでスイッチあるいはジャンパーでPullDownするような回路を設けます。
- ・LEDドライブコモン信号は抵抗プルダウンを行っても表示器にはほとんど影響はありません。 抵抗プルダウンの あり/なし を検出するには、LEDダイナミック点灯のごく短い合間に、 LEDの7セグ側出力を全てHi-Zにして、LEDドライブコモン信号をAVR内部PullUpの入力 モードに設定することで、検出可能ですので、4個のスイッチを読み取ることが出来ます。
- ・USB経由のbootloaderを使用しない場合はさらに、PD2,PD3,PD4も使用可能となります。
■ 配線
ATmega88/168 ___ ___ (PCINT14/_RESET)PC6*[1 |__| 28]-PC5(ADC5/SCL/PCINT13) (PCINT16/RxD)PD0 [2 27]-PC4(ADC4/SDA/PCINT12) (PCINT17/TxD)PD1 [3 26]-PC3(ADC3/PCINT11) (PCINT18/INT0)PD2*[4 25]-PC2(ADC2/PCINT10) (PCINT19/OC2B/INT1)PD3*[5 24]-PC1(ADC1/PCINT9) (PCINT20/XCK/T0)PD4 [6 23] PC0(ADC0/PCINT8) Vcc [7 22] GND GND [8 21] AREF (5V) (PCINT6/XTAL1/TOSC1)PB6*[9 20] AVcc (5V) (PCINT7/XTAL2/TOSC2)PB7*[10 19]+PB5(SCK/PCINT5) -------> SCK (PCINT21/OC0B/T1)PD5+[11 18]+PB4(MISO/PCINT3) -------> MISO (PCINT22/OC0A/AIN0)PD6 [12 17]+PB3(MOSI/OC2A/PCINT3)-------> MOSI (PCINT23/AIN1)PD7 [13 16]-PB2(_SS/OC1B/PCINT2) (PCINT0/CLKO/ICP1)PB0-[14 15]-PB1(OC1A/PCINT1) ~~~~~~~~~~
PD7(AIN1) ===> --R10K--+ | PD6(AIN0) ===> --R1K---+ | PD1 ===> --R220--+ | | PC0 ===> -----+--R10K--+-------*------<PROBE>---+ | | R?K === 0.047uF | | +----*------<PROBE>---+ | GND GND | PD0(RxD) ===> N.C. PD4 ===> boot jumper --o o-----------------GND close=user mode / open = boot mode PC5 ===> ---- 220Ω ---> LED_h(-) PC4 ===> ---- 220Ω ---> LED_g(-) PC3 ===> ---- 220Ω ---> LED_f(-) PC2 ===> ---- 220Ω ---> LED_e(-) PC1 ===> ---- 220Ω ---> LED_d(-) PB2 ===> ---- 220Ω ---> LED_c(-) PB1 ===> ---- 220Ω ---> LED_b(-) PB0 ===> ---- 220Ω ---> LED_a(-) PB5 ===> LED_COMMON_4(+) PB4 ===> LED_COMMON_3(+) PB3 ===> LED_COMMON_2(+) PD5 ===> LED_COMMON_1(+) --------------------------------------- USB: PD3 ===> ---- 75Ω ---> USB D- <----2.2kΩ---- +5V pullup PD2 ===> ---- 75Ω ---> USB D+ XTAL: XTAL1,2 => Crystal 20MHz ---------------------------------------
★ 7Seg 赤 LED 大 (commonは+5Vで点灯 a〜g はGNDで点灯)
-------------------------------------------------------- 10 9 8 7 6 10 g +--------------+ 9 f a 8 COMMON(+) ------ 7 a f| |b 6 b | g | ------ e| |c 5 h | | 4 c ------ 3 COMMON(+) d h 2 d +--------------+ 1 e 1 2 3 4 5 上から見た図. --------------------------------------------------------
回路図(測定プローブの部分抜粋)
ファームウェア公開