注意:改造行為は本来の使い方ではないのでメーカー保証対象外になります。
この記事の内容を鵜呑みにし、事故や損失を招いた場合でも当方は一切の責任は負いかねます。自己責任でお願いします。
先日ヤフオクをさまよっていたらちょうどいい感じのキャラクタVFDモジュールを見つけました。
スペック的には
20文字x2行(横5x縦7ドット)、カタカナ、英文字、数字、記号、RS232C(UART)通信(9600bps)、電源24V、おまけ程度に下行に▼描画機能あり
マイコンでちょっとした文字を表示させたい時にはすごく使い勝手のよいVFDモジュールです。
ただ、致命的なのは、独自キャラクタ(CGRAM)がセットできないため、ひらがなが表示できません。(もしかしたらCGRAMにセットできるコマンドがあるかも?)
そこで今回はほんの少し改造してグラフィックVFDにしました。少し難しいところ、分かりにくいところ、間違っているところなどがあると思いますので、改造してみたい方は参考程度に見ていただければ幸いです。
それでは早速回路の部品構成を見ていきましょう。
割とシンプルな構成です。
今回もっとも重要なICのC1162、VFD用シフトレジスタです。
データシートもネット上に載っているので熟読することをオススメします。
「c1162 oki」と検索すると何件かヒットします。(怪しいサイトもあるのでアクセスは自己責任でお願いします。)
futaba 5P20A007-15 (シルクにワニスが被ってしまっているため間違っているかもしれません。) このVFDのメインコントローラです。今回の改造では使用しないので、そこまで気にする必要はありません。
MAX232 割と有名なRS232ドライバICです。
こちらも今回は使用しないので、気にする必要はありません。
リセットIC 957B M51957B
こちらは、描画に少し関係する(と言っても電源off時の動作)ので興味がある方は調べてみると良いです。
JRC NJM2360A
DC/DCコンバータ制御ICです。パワー系の回路とかやってるとちょくちょく使うICです。
ここで24Vから5Vにしていると思われます。
以上がこのVFDの主要なICです。
今回の改造では基板上の2つのシフトレジスタ「C1162」のみを対象に制御していきます。
データシートもネット上に載っているので熟読することをオススメします。
「c1162 oki」と検索すると何件かヒットします。(怪しいサイトもあるのでアクセスは自己責任でお願いします。)
まずはこのシフトレジスタのブロック図を見ていきましょう。
(データシートから抜粋)
中身はよく見る汎用のラッチ付きシフトレジスタのようです。
出力はHV01からHV040の40bitあります。
74HC595と比べてみると
上図
~CLは74HC595でいう~OEです。:アウトプットイネーブル(ただし、74HC595の場合は3ステートモードですがC1162の場合は3ステートモードではない)
CHGはテスト入力端子:すべてのbit(HV01~HV040)をhighにします。通常はオープンかGNDに落としておきます。74HC595にはない機能です。
LSは74HC595でいうRCLKの反転です。:ラッチストローブ(74HC595の場合はL→HでストローブですがC1162の場合はH→Lでストローブ)
DINは74HC595でいうSERです。:シリアルデータ入力端子です。
CLKは74HC595でいうSRCLKです。:シリアルデータクロック入力端子です。
74HC595にはあと一つ~SRCLRという入力端子があるのですがこちらは全シフト用レジスタをLにするための端子で、C1162にはありません。
HV01からHV040は74HC595でいうQA、QB…です。:データ出力です。
DOUTは74HC595でいうQH'です。:複数のシフトレジスタを直結したい場合に使用します。
また、C1162にはブロック図に記載されていないR/~L端子が存在します。こちらはDOUTの出力するレジスタの選択ピンです。詳しくはデータシートの11ページを見てください。
ピン配置はこんな感じです。
(データシートから抜粋)
ここではシフトレジスタの基本的な使い方のタイムチャートは省略します。基本的な使い方はデータシートを参照したり、検索して各自調べてください。
次に基板のパターンから簡易的な回路図を起こします。今回はC1162の24pinから37pinあたりを探っていきます。
テスターやライトなどを駆使しましょう。(同じVFDの型番でも若干基板のパターンが違ってくることはよくあります。必ず確認してください。)
回路はこんな感じでした。
左側のC1162がVFDのグリッド制御、右側がアノード制御です。
本来ならばC1162が独立した回路になっているので、4+4(CHGは数えない)で計8本の制御ピンが必要ですが、この回路では6本と極力制御ピンが少なくなるように工夫されています。
見にくいのでダウンロードすることをオススメします。
ここでVFDの光らせ方を簡単に紹介します。(かなり簡略化されているため詳しいことは各自調べてください。)
VFDは真空管と呼ばれる物の一種です。
今回のVFDは3極管ですが、2極の物などもあります。
VFDは「カソード」、「グリッド」、「アノード」という3つの電極がこの並び順にあります。
「カソード」は手前にうっすら見える白い横線、「グリッド」は表示面にかぶさるあみあみした金属、「アノード」が表示面になります。
余談ですが一般的な3極管の場合、「アノード」ではなく「プレート」と呼ばれることが多いです。
「カソード」から電子が出て(電流の向きと電子の移動する向きは違います。)
「グリッド」を通って
「アノード」にたどり着いて電流が流れれば「アノード」すなわち表示面が光ります。
「グリッド」、「カソード」の電圧の関係はこんな感じです。
(「カソード」を0Vとして見た関係です。)
つまり、「グリッド」、「カソード」ともに+の場合だけ光ります。
ここで感の良い方はお気づきでしょうが、ダイナミック点灯の7セグLEDやドットマトリクスLEDの関係と少し似ています。そうです。VFDのグリッドはダイナミック点灯するためにあります。
続いてこのC1162の制御のタイムチャートを作成していきます。ここが最大の山場でここさえできればあとはそれどおりにプログラム等を作成していくことが出来ます。
先ほど「6本の信号で制御されている」と書いたのですが、実は5本の信号線で制御出来ます。M51957BはリセットICというもので、電圧がある一定より低かったりするとリセット信号を出力します。これがC1162のグリッド制御側の~CLに繋がっているということは、所定より低電圧時は表示しないという風にしています。なぜわざわざこのようにしているかというと、このVFDはダイナミック点灯のため1~40個のセグメントを順番に点灯しています。つまり1個当たりの明るさは1/40になります。(実際は直線的に明るさが求まるわけではなく、わかりやすくするため1/40にしています。)VFDモジュールの電源を断つ時、VFDモジュール内の電源回路の電圧はコンデンサが有るため、ゆっくりと降下していきます。その時、C1162やメインコントローラがVFDより先に動作を停止してしまいます。VFDが点灯している状態でこうなってしまうとセグメントの移動がもう起こらなくなり、普段の40倍の明るさで点灯してしまいます。つまりVFDの蛍光物質が焼けて輝度が低下してしまいます。
そのためグリッド制御側の~CLの部分は制御する必要は今回はありません。
セグメント番号はこんな感じです。
ドット番号はこんな感じです。
タイムチャートです。今回のプログラムではタイマーを用いて描画することにします。
上図の緑の部分の中身が下図になります。
このタイムチャートは
「タイマー状態」がhighになっている時は割り込み最中となっていて、lowになっている時が描画割り込み以外を表しています。ピンの電圧を表しているわけではありません。ご注意ください。
チャート名の後ろに「_G」、「_A」がついていますが、これはC1162の「グリッド制御用」と「アノード制御用」のピンを表しています。データシートと改造回路図見ながらフローチャートを見てください。
「タイマー1回目」、「タイマー2回目」…となっているのですが、『「タイマーn回目」の時nセグメントを選択する』という意味にもなっています。
動作を説明していきます。
電源オン直後まずはVFD表示を有効にするため~CL_Aをhighにします。(この動作はする必要がないのですが、ループしたときに考えやすくするためにあえてしています。)
ここでタイマー割り込みが発生しました。まずは、VFDを消灯しなければなりません。消灯させないと書き換え中で変な文字が見えたり、隣の文字が一瞬写ってしまう事があるかもしれないためです。~CL_Aをlowにします。
次に1セグメント目の描画の時だけDIN_Gをhighにさせます。このグリッド制御のC1162は40進数カウンタとして動作させています。つまりクロックを1つ入力すると描画対象セグメントをひとつ動かします。普通のカウンタと違うのは39(40個目のセグメント)の次が0(1個目のセグメント)にならず、40(41個目のセグメント)になってしまう事です。これではだめなので、40の時に0に戻す必要があります。
2~40個目のセグメントの時はDIN_Gはlowのままです。
そしたら緑の網掛けの動作をします。この中は5x7=35個のドットと「▼」の表示のためのデータを送信しています。36番目に「▼」のデータが来ています。(「▼」は1行目には無いので、2行目のみです。)CLK_A、DIN_Aを使いシリアルデータを送信します。データはhighで点灯です。
緑の網掛けの動作が終わり、最後にCLK_G、LS_Aにパルスを加え、描画対象セグメントをひとつ動かし(セグメントが1以外の時)、緑の網掛けで送信したデータを出力に反映させます。DIN_Gがhighの時はここでlowにします。
これで書き換えが完了したので~CL_AをhighにしてVFDを表示させます。
割り込み処理が完了していままでしていた作業に戻ります。
そして一定時間経つと再び割り込みが発生して「ここでタイマー割り込み…」に行きます。
回路はこんな感じです。
5本の信号線をメインコントローラから切り離し、引き出してきました。回路的に見ると改造感が薄いです。
次に基板を改造していきます。
改造する箇所はこんな感じです。
赤四角で囲った所からポリウレタン線を出していきます。オレンジ枠内の抵抗2つはあらかじめ取っておきます。パターンカットは少し分かりにくいですが、3ヵ所あるので確実にカットしてください。必ずテスター等で確認してください。
少し雑ですがこんな感じです。
細いポリウレタン線は切れやすいので一旦基板につなげます。
基板は秋月電子のCタイプユニバーサル基板を使用しました。
http://akizukidenshi.com/catalog/g/gP-12731/
抵抗は4連集合抵抗56kΩです。
(後でよく見たら半田付け不良がありました。)
カプトンテープで絶縁します。
その上から厚めの両面テープを貼ります。
基板に乗せ、回路図の並び順で繋いでいきます。
両面テープだけでは強度が不安なので、スズメッキ線で補強しました。
ホットボンド(グルーガン)で取れやすいところを補強します。
以上でハードウェアの改造が終了しました。
VFDの電源はこんな感じです。
点灯させるときは「24V」と「GND」をそれぞれ電源に接続します。
そのほかのピン「RX」、「TX」などにはなにも接続する必要はありません。
基本的にはタイムチャートを理解して頂ければプログラム等はお好きなように作成できると思います。マイコンはある程度高速な物でないと満足に描画できませんが、高速な描画でなければATmega328でも実用できそうです。
注意点は、プログラムが動作していないとき(書き込み時など)VFDのダイナミック点灯がされなくなると1セグメントに集中し、VFDの蛍光体が焼けてしまいます。なので、
必ずVFDモジュールの電源を抜いてから書き込みをしてください。
でないとVFDが壊れます。
とりあえず、私としては異色演奏用の歌詞表示用に使いたかったのでそれ用にプログラムを作りました。arduinoで作ったので試してみたい方は、ダウンロードしてみて下さい。
arduino用(inoファイル)
テキスト形式(文字コードの関係でプログラムが正常に動作しない可能性があります。)
プログラムの解説は特にありませんが、コメント欄で質問等くださった場合には回答します。
文字のフォントは6×8 ドット日本語フォント「k6x8」を使いました。
http://littlelimit.net/k6x8.htm
M202MD12B— oy (@0x6f_0x79) 2019年3月26日
改造VFD描画テスト pic.twitter.com/qd4OYg6Hlk
このプログラムはこのままではテスト動画のように描画されないのですが、プログラム内の1部のコメント欄を外すとこのような描画ができます。
0 件のコメント:
コメントを投稿