akasaka が 2024年04月11日21時18分00秒 に編集
コメント無し
本文の変更
*今回の実験に高電圧が使用されています。再現する方は十分ご注意ください。*
*今回の実験は高電圧が使用されています。再現する方は十分ご注意ください。*
# はじめに 最近、とあるオークションサイトに面白そうな行先看板を発見しました。 
VFDなどの表示管が好きで、購入しようだと思いましたが… 制御はめっちゃめんどくさいのようですね!
VFDなどの表示管が好きで、購入しようと思いましたが… 制御はめっちゃめんどくさいようですね!
と思っていたところ、出品者さんのプロフィールを確認したら8085ベースの制御基板も出品されていた。  8251AFCのUARTが付いてるから、ROMを解析できれば恐らくシリアルで入力するだけで何とか表示することができるでしょう。 というわけで、安心して落札しました。 # もちろん、このままで動かない
数日後、両方ともの品物が届きました。
数日後、両方とも品物が届きました。
 基板に書いてる型番(森尾電機 6M06056)をググって見たら結果なし。やっぱりこれから自分で解析しないとダメなんですね…
通電する前にROMをバックアップしようだとしたら、00 しか読みだせない。
通電する前にROMをバックアップしようとしたら、00 しか読みだせない。
…どういうこと (゜U。)…
…??どういうこと (゜U。)??…
ROMをもとに戻して基板に5Vを通電してみたらも、CPUクロックは正常なのに、データバスとかは静かのままで一部のICが大変熱くなるだけです。 硬いコーティングが掛かってるから修理も難しくて、この基板はとりあえず撤退しかないです… # ディスプレイ基盤の修理 ## 表示管ドライバー基板 というわけでディスプレイ自体に載ってる基板を確認しましょう。型番は MD 16101DS-CONT82 06であり、ググると同様に結果なし。  左から4桁目にあるMN2114はSRAMですので、やっぱりフレームバッファみたいに書き込んだ画像データを一時的に保存し、ディスプレイのリフレッシュをしてくれる設計です。リフレッシュ回路を作るのは一番めんどくさいなのでとても助かります。 下のデータバスコネクターまで引いてる回路をテスターで調べたら、どれが入力とどれが出力ぐらいがわかる。  ピン1~8(上列)は、74LS257によって4本ずつ切り替わってるので、そこはデータ入力らしい。ピン9~15はバッファーとして使用されたインバーターに引いてるから入力5本と出力2本があるのようです。 手元にあったパーツからテストジグを作ります。  右下の電源コネクターは昔のHDDと同様の4pinタイプMOLEXとなってるので、もしかしてパソコンの電源をそのままで使えるかな?と思って通電してみた。 …もちろん、画面は点灯しませんでした。(泣) ## 表示管の構造 今までは、今回の表示管がVFD(蛍光表示管)であると思いました。 VFDの構造だと、以下の画像通りです:  *https://www.futaba.co.jp/product/vfd から引用* だが、手元にある表示管を近くから見ると…  フィラメントも、グリッドも全然見当たらない。 というわけで、これはニキシー管の兄弟機、プラズマディスプレイです!構造を簡単に描いてみた:  ニキシー管のように高圧から照らすつもりです。 その上に、 - Molex端子の12V(だったはず)回路に250Vまでの電解コンデンサーが載ってる。 - 表示管への出力周辺にあるトランジスター(2SC1473)も250Vまでの仕様です。 手元にあったELワイヤー用電源にダイオードブリッジをつけて160VDC出力をゲット。そして菅の端子に直接繋いでみたら…  生きてる!生きてるんだ!! それではまともな高圧電源を用意して、Molex端子に5Vと150Vを入れたら… 動かない。 ## ロジック回路の診断 まずは5V側に電流を確認しましょう。  74LSシリーズはかなり電気食ってるけど、38個あたりに1A近い値は確実に多すぎる。基板の一番左の74LS107-1は通電させる瞬間に+60°Cほど熱くなることもあやしい。 基板の裏面を見たところ、一部ICのGNDピンの半田は灰色っぽくなってたり山のように積もれてる。故障した際に電流が多すぎて半田を溶かすぐらいに熱くなったのだろう?  それではこういう現象のあるICをスコープで確認しましょう。[HP 10529A](https://www.radiomuseum.org/r/hewlett_pa_logic_comparator_10529a.html)みたいな道具があれば便利けど今回はスコープで頑張る。  うーn…0の方が高すぎて1の方が低すぎてまともなデジタル信号として見えない。  これ、もしかして、昭和時代の3値ロジックの例?それとも異世界の74シリーズ?  結局全てのICを確認したところ結果は以下でした。 - 107-1 (JKトリガー): 大変熱い、出力は入力にショートされている - 107-2: 出力~入力の抵抗は低い(4kΩ)、出力値はデータシートと合ってない - 107-3: 出力~入力は2kΩ - 393-1, 393-2: CLK~VCCは2kΩでカウントしてない ## 遂に生きてる 上記のICを交換しました。発振器は遅くて撮影する際にフリッカーが酷くなる可能性があるのでそれも 5.12→12.8MHzに交換。  電源を入れて、テストジグの入力値を0xFFに設定。そしてデータバスのピン10を触ってみたら…  遂に点灯しました!!(光らない行は、テストジグに断線があったのせい) # 制御方法 いろいろ実験してみたらデータバスのピンアサインは以下のように検出できました。(1~8は上列の右から左、9~16は下列の左から右) - 1~8: 入力、ピクセルデータ - 9: 出力、不明(リフレッシュクロック?) - 10: 入力、#CLK(データクロック) - 11: 入力、#RST(リセット) - 12: 入力、#RTZ(アドレスカウンター初期化) - 13: 出力、#RDY(準備シーケンス中に1、入力可能なときは0) - 14: 入力、BRIGHT(0にすると明るさは半分ほどまで下がる) - 15: 入力、SHOW(0にするとリフレッシュは続けたままで書き込んだ画像は表示されなくなる) - 16: GND まずは電源立ち上がってから#RDYが0になるまで待機する。 そのあと、1~8にピクセルデータを設定して#CLKを0にパルスする。これで設定したピクセルデータ(8ピクセル分)はアドレスカウンターに従った位置に書き込みます。0になってるピクセルは消灯、1は点灯です。そしてアドレスはカウントアップします。偶数のアドレスは上の8行、奇数のアドレスは下の8行となります。  ディスプレイの解像度は101x16pxであるため、アドレスカウンターは201を超えたら0(画面の左上)に戻ります。 出力途中で左上からやり直したい場合は#RTZをパルスすることでアドレスカウンターを初期化する。ディスプレイ内容を消去して初期化したいとき#RSTをパルスしてリセットを行う。 # 何とか描いてみよう 制御方法をわかるからESP32に接続させる簡単のレベルシフト基板を作ってみた。   ソースコードはかなり長いのでGithubでご参照ください: [動作確認スケッチ](https://github.com/vladkorotnev/plasma-clock/blob/fbfe900f27db0df48946fac754faa7f631b76bf3/src/main.cpp) [](https://www.youtube.com/watch?v=VG0H--4KytI) *[動画はこちら](https://www.youtube.com/watch?v=VG0H--4KytI)* # 最後に これから画像処理などを作ってアイコンなどを準備して、時計・天気予報表示器にしました。
ファームウェアはかなり大きくてそんなに面白くはないだと思いますので、後日に記事を書いておくかもしれません。
ファームウェアはかなり大きくてそんなに面白くはないと思いますので、後日に記事を書いておくかもしれません。
今回は良かったら、完成物の写真と動画をご覧くささい。 **[→動画←](https://www.youtube.com/watch?v=D4MiHmhhjeQ)** *アニメーション中の時計モード。背景に雨が降るのようなエフェクトがあります。*  *屋内温湿度表示モード*  *天気予報表示モード*  *裏側*  *温湿度センサー*  *箱作り中の写真* 
# 参照リンク - [完全版のソースコード](https://github.com/vladkorotnev/plasma-clock/tree/develop/src) - [実験中のEEVBlogスレッド(英語)](https://www.eevblog.com/forum/repair/trying-to-figure-out-if-a-vfd-displaydriver-is-broken-(74-series-logic)/)