測定

ICL7137 (5)

ICL7137 のセグメント出力をキャプチャするソフトウェアについて述べます。 表示の変化の途中でキャプチャすることを避けるには、それがセグメント出力の最後の変化であることを確認してから取り込まなければなりません。 しかし、現在の変化が「最終」であ…

ICL7137 (4)

ICL7137 の標準の回路のままでセグメント出力から信号を引き出すだけでは適切なロジック・レベルが得られないことを説明します。 ICL7137 のセグメント出力の内部回路と、外部の 7 セグメント LED との接続の様子を下に示します。

ICL7137 (3)

ハードウェア / ソフトウェアを合わせたブロック・ダイアグラムを下に再掲します。 図では、ICL7137 からの 7 セグメント LED への配線に「パラ」ってセグメント・パターンの信号を取り出していますが、標準の回路のままではロジック・レベルが合わず、正常…

ICL7137 (2)

5 セグメント・パターンから BCD (Binary Coded Decimal) への変換部分を、 PLD (Programmable Logic Device) である Lattice GAL16V8 を使って「ランダム・ロジック」によるハードウェアとして実現した例を示します。 GAL16V8 の OLMC (Output Logic MacroC…

ICL7137 (1)

V3340 の温度補償ずみ CV 出力 (アンチログ部の差動ペアのベースを駆動する電圧) は、最大で約 -180 mV から約 180 mV まで変化します。 マイコンでデータをロギングする場合、マイコン内蔵の ADC を使うためには、入力電圧の変化範囲を GND から電源電圧ま…

1/12 オクターブバンド・フィルタ (12)

DUT (Device Under Test: 被測定デバイス) をコンデンサだけに限らず、一般の 2 端子回路とすると、2 端子間の電位差と回路を流れる電流との関係を測定できれば、それらの商としてインピーダンス (およびアドミタンス) を求めることができます。 DUT 以外の…

1/12 オクターブバンド・フィルタ (11)

tan δ の値がマイナスになる問題は、データ処理の部分で「平均化」するサンプル・サイズを大きくしてもあまり改善されないので、「ランダム・ノイズ」によるものではなく、「系統的」な要因によるものと思われます。 ハードウェア部分を、あまり複雑にならな…

1/12 オクターブバンド・フィルタ (10)

ポリプロピレン・フィルム・コンデンサは 103 (10nF) をひとつしか持っていなかったので、他の容量についてもいくつか買ってきました。 インピーダンス・アナライザや LCR メータは持っていないので、簡易的な測定回路/ソフトウェアを作成して、各種コンデン…

Arduino 周波数/周期カウンタ (10)

前回の最後の図を下に再掲します。 このグラフは、 ある特定の ICR1 の値 (となるような CAPT タイミングを発生する OCR1B の設定) で、 CAPT 割り込みサービス・ルーチン内で TOV1 フラグの状態を観測し、記録するのを 10000 回繰り返すことにより発生頻度…

Arduino 周波数/周期カウンタ (9)

CAPT と OVF のタイミングの関係を推測するために行った実験のようすを説明したいと思います。 CAPT 割り込みの発生タイミングを、1 クロック単位で可変するために、同じタイマ 1 の PWM 出力である OC1B 端子とコンペアレジスタ OCR1B を使いました。 analo…

Arduino 周波数/周期カウンタ (8)

前回の最後の図、つまり、 OVF 割り込み要求の方が先に発生するが 実行中の命令が 2 サイクル (以上) かかるので 命令実行中に優先度の高い CAPT 割り込み要求に「追いつかれて」しまい、 命令終了時に優先度の高い CAPT 割り込みの方が先にサービスされてし…

Arduino 周波数/周期カウンタ (7)

以降の記事では、記述を簡略化するために、WinAVR (AVR 用 GCC) の割り込みベクトルの表記にしたがって、 「インプット・チャプチャ」を「CAPT」 「タイマ・オーバーフロー」を「OVF」 と略記します。 たとえば、「インプット・キャプチャ割り込み」は「CAPT…

Arduino 周波数/周期カウンタ (6)

LPF 出力部の OP アンプの直線性が気になったので、LMC662 を使った場合と、 TLC272 を使った場合との、出力電圧が小さい領域での直線性の測定を行い、比較してみました。 結果のグラフを下に示します。

Arduino 周波数/周期カウンタ (5)

前回とほぼ同じハードウェアで、XR2206 を自動測定してみました。 LM331 の結果と合わせてプロットしたグラフを下に示します。

Arduino 周波数/周期カウンタ (4)

周期測定ライブラリを利用してリニア VCO の特性を自動測定する Pakurino (Arduino) 用のスケッチを作成し、LM331 についてデータを取ってみました。 結果のグラフを下に示します。 20 Hz から 20 kHz までの 10 オクターブの範囲で、誤差は ±4 セント程度に…

Arduino 周波数/周期カウンタ (3)

12 月 7 日の記事の「PeriodCounter」ライブラリを使って、200 Hz の信号1〜2周期の測定を多数回繰り返してみたところ、やはり数千分の1程度の頻度でエラーが生じました。 エラー対策のための修正を施したバージョンで同じ測定を試すと、ほほ丸一日、数百…

Arduino 周波数/周期カウンタ (2)

周波数を計測するのに、基準クロックから作成した正確な 1 ms とか 1 s とかの一定時間幅のゲート信号を使って入力信号をカウントする「普通」の方式では、周波数の分解能はゲート・タイムの逆数に比例する形になります。 たとえば、ゲート・タイム 1 s では…

Arduino 周波数/周期カウンタ (1)

VCO などの発振周波数の自動測定を目的として、AVR マイコンでオーディオ帯域信号の周期を測定するライブラリの作成をしています。 プロトタイピングのツールとして Arduino (Pakurino) を使い、簡単な周波数/周期カウンタとして機能するサンプル・スケッチ…