蛍光表示管時計


珍しい表示管が手に入った。まずはフォントをみてほしい。よくある日の字型7セグメントではなく、丸みを帯びた感じがどこかニキシー管に似ている。ヤフオクで落としたジャンク電卓基板より取り外した伊勢電子の表示管DG10Lである。この電卓基板は搭載されたLSI品番と基板デザインからシャープのEL-8と思われる(このEL-8は世界初の電池駆動の電卓で、1970年11月発売とのこと)。LSIのデートコードは7047-7053で、70年のかなり遅い時期ということになる。集合抵抗に71.01とあり、これは71年の1月なのか第1週なのかだ。これらから電卓自体の製造年は1971だと思う。35年以上前の電卓ということになる。

さて、表示管とくると時計である。いちいち仕様を考える必要もなく、日常的に動くので特殊な表示管ほど時計に良いと思う。表示が動く様子がまたおもしろく、秒表示のある6桁が適当と思う。

入手した基板(左ロジック、右表示。管はすでに取り外してます)

フォントが特殊なので通常の7セグデコーダーや時計専用LSIは使用できない。必然的にマイコン制御となるわけだ。IOの多いワンチップCPUのPIC16F873Aを使ったマイコン時計としてまとめてみた。

28ピンの16F873A 300mil幅なので細いです


あえて工夫といえば、CDSを使ったディマー機能とオンボードPWMを使った昇圧回路くらい。PWMといってもフリーランしていて、フィードバックをかけていない。古い表示管なので電圧は高めだろうということでアノード電圧は設計上40Vとしている。(カソードバイアスに約5Vかけるため、昇圧回路出力は約45V。)ダイナミックドライブを行うので、そのぶん電圧を高くしている。表示管の輝度は導通時間(デューティ)と印加電圧の2.5乗に比例するとのこと(伊勢電子の資料より)。

昇圧回路

マイコンにPWMが内蔵されているため、部品点数削減からこれを信号源にしてパワーMOS FETを駆動し、トランスで昇圧している。必要な電力はせいぜい1W程度なので簡易的にすませ、二次側はチョークなしのコンデンサインプットとした。このため、PWM制御は回路的にできない。フィラメントにはバイアスをかけるため、トランスに独立した巻線をもうけてある。こちらは整流していないので高周波点灯となる。

ディマー回路

CDSによる電圧変化をA/Dコンバータで読み出し、ダイナミックドライブのデューティ比を変化させてディマーとしている。ディマー調整もソフトでできるので融通がききます。電圧を下げる方式もありますが、ムラができてしまいますのであまり暗くできません。

ドライバ

5V制御できるソース出力(エミッタフォロワ)トランジスタアレイTD62783を使用。レベルシフトとドライバが1つでまとまるため蛍光表示管用として非常に使いやすい。このシリーズはプルダウン抵抗つきのものもある(TD62784か5だった)ようなので、入手できれば部品点数が減ります。

基板

穴あきでも良いが、きれいにまとめるためプリントにした。いつものolimexである。最近決済をUSDからEURに変えたため、結果としてえらい値上げである。100x80のサイズなので、DSSオーダーで2枚とれます。DG10F1など別の管もあるので、もう一台作れそうなんですが、フィラメント電圧の大きい物だと今回のように全部直列につなぐと輝度ムラの原因になってしまいます。この管はフィラメントが0.8Vくらいでした。輝度ムラ問題はソフトで明るい管のデューティを下げる、という手もあります。

発振器は昔秋月で買ったTCXOのTCO-703A(12.8MHz)。今は京セラ製の少し小さくなったTCXOが売られている(KTXO-18S)。これら発振器はDCカット出力のため、直流的に出力が浮いている。1/2 VCCになるよう直流オフセットをかけてからPICに接続する必要がある。アラームにもなるよう、電子ブザーをつけた。ちょうどPICのIOを使い切った。

トランス下の電線はフィラメント電流を測定するためのループ。ここにオシロのカレントプローブをかましてフィラメント電流をみるためのもの。後で外します。

フィラメント電流波形
設計値はバラスト12オーム、デューティ50%なのですが、手持ちの抵抗が10オームだったこともあり、デューティを下げました。RMSで30mAになっています。マイナス方向が駆動期間、プラス側はトランスのインダクタンスによるエネルギ放出です。アノード電圧はコンデンサインプット整流のため、デューティ比には依存していません。PWMでフィラメント電流だけ調整できるので結構便利です。

消費電流 at 5V

輝度最大:100mAくらい
輝度最小:40mAくらい
表示OFF:15mAくらい

のようです。実験に使用する電源はもちろんこれです。


ソフトウェア

時計だから一定の間隔で処理する部分が必要になってくる。いろいろな作り方があるが、ハードウェアタイマーを使用するのが現実的だ。各命令の実行サイクルを全部積算し、どのような分岐が発生しても一定の処理時間とする方法も理論上は可能だが、こんな作り方をしていたら頭が痛くなる。タイマーを使用し、精度に関する部分をタイマー内に押し込んで他とは独立させるアプローチが正しい。

16F873Aにはタイマーが3つあり、PWMで1つ使用されるため残り2つを計時用と表示管のダイナミックドライブ用として使用した。

計時用には16ビットタイマーのTMR1を使用した。12.8MHzを1/4した内部命令サイクルの3.2MHzを1/64000して50Hzの割り込みがかかるようになっている。これを割り込みハンドラで1/50すると1秒が得られる。タイマーはオーバーフローする際に割り込みがかかるから、各割り込み内でタイマーに65536-64000の1536をセットすれば良いが、ダイナミックドライブのタイマー割り込みがサービス中であったり、割り込みハンドラが呼ばれるまでの遅延があったりするので1536をセットするのではなく、足すようにしている。割り込みがサービスインするまでの遅延はタイマーのカウントアップとなっているから、これを足しておくと、次回の割り込みがそれだけ短くなる。つまり、積算すると遅延がゼロになる。

2008/02/02
1536では日に約2秒遅れました。1538をセットすると非常に正確です。
+1はADD命令だとして、もう1は何?

ダイナミックドライブにはTMR0を使用。こちらは8ビットのタイマーで、プリスケーラを1/32とすることで1ms程度の割り込みがかかる。CDSから読み取った電圧でタイマー値を変化させ、デューティを変えることで輝度の調節をしてます。現在真っ暗の時、3/256のデューティです。実際には6管ありますので、デューティは3/1536になります。これでも真っ暗だと十分な輝度です。目など感覚器官は物理量に対してリニアに感じず、対数をとった量を感じます。これほど小さなデューティとなっても十分な輝度なのです。代表的なのが星の明るさです。1等かわる毎に2.5倍光量は変化しています。音量もデシベルですね。

#電子ブザーがあるのでアラームなんかも作れるのだけど、とりあえずこのままになりそうだなぁ。


Eagle CADデータ (※集合抵抗ライブラリが間違ってます。ピン1がコモンです。基板では部品を逆につけてます。)
回路図
PICソース(最新版はsvn管理下なので古い可能性あり)


[戻る]