月別アーカイブ: 2016年7月

本当にBAT81?

外袋に「BAT-81」と書かれたダイオードを入手したのですが、巷で手に入る BAT81 とは外観が異なるように見えます。

Dscf0795
今回入手した BAT81。

他の BAT81 は普通のダイオードのケースだったり、青色ケースだったりするようです。

そこで、以前製作した USB デバイスアナライザを使ってデバイスの特性を測定してみます。

Vf-If

実測した VF-IF グラフを上図に示します。
比較のため、1S2076A の測定値を同じグラフに表示しています。
グラフで特徴的なのは逆 S 字カーブを示していることで、これは等価直列抵抗値が大きいことを示しています。
また、VF の値も全体的に SBD としては大きめです。

BAT81_DS

Philips 社の BAT81 データシートから抜粋した、VF-IF グラフが上図で、実測値と良く一致しています。
このことから、このダイオードは BAT-81 と考えて問題ないようなので、安心して使用できます。

TTL で PSG 音源を作る その2

今回は矩形波生成ブロックを設計します。

AY-3-8910 の矩形波生成ブロックは、12bit の分周比 N によって クロックを分周させ、さらに 1/16 のプリスケーラと組み合わせることで、fck/16/N の周波数を生成します。
・・・とデータシートに書かれているのですが、出力のデューティー比は 50% にするため、回路上は 1/8 のプリスケーラと 1/2 のポストスケーラによって構成されているものと思います。

PSG 音源にはデューティー比を可変する機能はないので、これは単なる 1/N 分周器(プログラマブル分周器)によって構成できます。

プログラマブル分周器はいろいろな回路が考えられますが、
TTL IC を組み合わせて作るので、部品点数、在庫、価格など
いろいろ考えて設計しなければいけません。

divider_1

上図は 74LS161 を使用した完全同期式のプログラマブル分周器で、プリセットに N の論理反転を入力することで、1/(N+1) 分周器として働きます。
(上図ではデューティー 50% にするため、さらに 1/2 していますが。)
161 は 4bit カウンタなので、8bit や 12bit で動作させる場合、複数個組み合わせて使用します。
上図のように CO 端子から出力を取ろうとすると、複数個組み合わせた場合ひげが出てしまうので、一度元のクロックで同期してやる必要があります。

divider_2

74LS197 のような、安価な非同期式のカウンタで構成した例が上図です。74LS197 にはキャリー出力がないので、MSB の立下りエッジでカウンタをロードしています。ロードは非同期なので、出力周波数はひとつ上の回路と同様になります。

今回は 1/(N+1) ではなく 1/N の分周器を作る必要があります。上記回路では、論理反転のほかに算術 -1 する回路を追加せねばならず、不適です。

divider_3

1/N カウンタの実現方法のひとつは、ダウンカウンタを使用することです。74LS191 を使用した 1/N 分周器を上図に示します。74LS193 でも同様です。この回路でも動くと思いますが、MSB のCO 出力はマルチバイブレータ等でパルス拡張した方がベターでしょう。

divider_4

もう一つの構成として、ディジタルコンパレータを使用する回路が考えられます。上記は 74HC4040 によるリプルカウンタの出力を 74LS688 によるコンパレータで比較して、一致でカウンタにリセットをかけています。リセットは非同期なので、結果として出力周波数は 1/N となります。
コンパレータが比較的高価で、配線数も多くなるのでこの方式はあまり採用されませんが、今回は手持ち部品の都合上、この回路をベースに設計します。

square_1

そういうわけで、矩形波生成ブロックは上図のような回路になりました。AY-3-8910 には 3 系統の矩形波ブロックが存在するので、上記回路を3つ作ることになります。

TTL で PSG 音源を作る その1

AY-3-8910_ds

今回からしばらく、74 シリーズの TTL 汎用ロジック IC を使って PSG 音源を作ってみようと思います。
動作や仕様はオリジナルの PSG 音源、つまり GI 社 AY-3-8910  と同等に動くことを目標とします。
もちろんデータシートをもとにして、回路は新規に設計することになります。
全体で TTL IC 100 個くらいあれば構成可能と予想しています。

bus_if_1

まずは、バスインタフェース部分から設計します。
AY-3-8910 は 16 個のレジスタを持ち、8bit IO によるパラレルインタフェースを使用してアクセスします。
アドレスは IO にマルチプレクスされており、レジスタライト、リード、アドレスラッチは 3 本の信号線により行います。

bus_if_2

信号線はすこし特殊で、GI の CP1610 マイコンのインタフェースになっています。
すなわち、BDIR、BC2、BC1 の 3 本の信号線の組み合わせにより、上表のようにレジスタライト、リード、アドレスラッチが選択されます。
内部的に必要な WR, RD, ALE 信号は、74LS138  と 74LS10 により取り出すことにします。

AY-3-8910 は 16 個のレジスタを持つので、4bit のアドレスを占有します。
アドレスの上位 bit (ラッチされる 8bit の他に、外部から上位 2bit を与えることができる) に 0 をセットすると、IC へのレジスタアクセスが有効になります。
この仕様は複数個の IC をバスに接続する場合やや不便ですが、データシートによると、アドレス上位 bit は IC の注文時に書き換えることができたようです。

というわけで、バスインタフェースは以下のような回路になります。

bus_if_3 bus_if_4

また、8bit のレジスタは以下のような回路でよいでしょう。
(場合によって 244 は 373 にすべき)
ただし、いまどきの IC でコントロールするならレジスタの Read しないでしょうから、製作では配線を減らすために IO レジスタ以外の Read を省くことにします。

bus_if_5

 

ミリオーム計の製作

配線や接触抵抗など、1オーム未満の値を測定しようとすると、一般のテスタでは難しいことが多いです。
高価な市販のミリオーム計ほどの精度はいらないけれど、おおよその値を知りたい・・・というシチュエーションは意外に多いものです。
そこで、簡単なミリオーム計を作ってみました。

Dscf0781

写真の左側の基板がミリオーム計部分で、オシレータとAC増幅器、AC-DC コンバータから構成されます。
右側の基板は、以前製作したランプ型 ADC です。赤いアクリル板をつけて LED を見やすくしています。
分解能は 1ミリオーム(直読)で、4線式計測となっており、短絡で 0.000 オームになるように調整しています。

Dscf0782

上記写真では、単三電池ボックスの接触抵抗を測定しています。
ばね式の安価な電池ボックスは、- 極側 1 箇所でおよそ 100 ミリオームの抵抗を示します。
これは電池動作機器には無視できない値です。

この電池ボックス、ラグ板に半田付けすると熱でプラスチックが溶けて使い物にならなくなります。困ったものです。

millli_ohm_schematics
上記は回路図です。
すべて OPAMP とロジック IC で構成されています。
+5V 単電源で動作させるために、少しイレギュラーですが MAX232 を DC-DC コンバータとして使用しています。

抵抗計は被測定抵抗 (DUT) に電流を流して、発生する電圧を増幅することで抵抗値を得るわけですが、抵抗値が小さいと電圧も微弱になります。
したがって、DC のまま抵抗計を構成すると、増幅器の DC オフセットが精度にとって大きな問題となります。
そこで、1kHz の AC 電流を DUT に流し、交流のまま増幅することで、増幅器のDC オフセットを無視できるようにしています。

Dscf0783

ブレッドボードワイヤは、個体により 50-100 ミリオームを示しました。

Dscf0784

1 オームの抵抗を測定しています。