【概要】
装置などに使われたRGBモニタのリユース品を入手しましたので試してみました。
入手したのは、シャープ製の7インチTFT液晶表示モジュールで「LQ070A3AG01」
という型番です。入手はアイテンドーからです。
しっかりした金属ケースの作りで凸凹が少ないので取り付けが容易な構成です。
基本的にNTSCまたはPAL方式の入力のモニタですので、コントローラは内蔵して
いません。したがって常に使う側でスキャンが必要です。
バックライトも制御部も同じ12Vの単一電源で使えますので電源系は簡単にできます。
このモニタの基本的な仕様はNTSCのRGB独立で使うという前提で下記となります。
ドットクロック : 6.8MHz±0.8MHz (6.0〜7.6MHz) High>3.5V Low<1.5V
水平同期 : 15.73kHz±0.6kHz High>3.5V Low<1.5V
垂直同期 : 262×水平同期 (284〜258) High>3.5V Low<1.5V
ビデオ信号 : 0〜0.7V (R,G,Bとも)
水平同期パルス幅 : Low時間 4.1±1.0μs
垂直同期パルス幅 : Low時間 4×水平同期時間
映像区間 : 水平同期の立下りから 12.3μs 〜 62.9μs
【全体構成】
ビデオメモリとスキャンが必要ですが、それらをPICで如何に実現するかが課題です。
そこで下図のように考えることとしました。
ドットクロック信号 : 6.6MHzの周期をタイマ3で作成し、
出力コンペア1のPWMモードで50%Dutyでドットクロック連続出力
水平同期信号 : 15.7kHzの周期はタイマ2のインターバル割り込みで作成し
パルスは出力コンペア2のワンショットで出力
垂直同期信号 : 上記タイマ2の水平同期割り込みをカウントしてI/Oで出力
映像開始タイミング: 水平同期の割り込みごとに出力コンペア3のワンショットで生成
映像信号 : 3個のSPIのシリアル通信でRGB独立として生成
とりあえず実験して試してみることにしました。手持ちにSPIを3組持ったPICが無かったので
2組持っている、PIC24FJ64GA004を使いました。これでRGBの内2つの制御は可能ですから
制御が可能かどうかは確認ができます。
ビデオメモリもメモリサイズが8kバイトしかありませんので、2つのSPIを1個のビデオメモリで
共用することにしました。これでとりあえずは実験ができます。
作成した回路図は下記となります。電源は液晶モニタの主電源が12Vですので、DC12Vの
ACアダプタを使って全体に供給することとしました。
PICには3.3Vを供給し、液晶表示器のインターフェース用に5Vを供給します。
いずれも3端子レギュレータで生成しています。
電圧レベル変換は、5V系はオープンドレイン出力として抵抗プルアップで変換し、
映像系は抵抗分割で3.3Vから0.7Vに変換しています。
クロックには手持ちの6.6MHzのクリスタルを使っていますので、液晶モニタは6.6MHzで動作
させることになります。
出来上がったコントローラは下図のようになりました。液晶モニタとの接続は
フラットケーブルですので、コネクタの取り付けが必要ですが、このコネクタは
1mmピッチですので、簡単にはんだ付けができます。
左側がPICを使った
コントローラで右側が
7インチの液晶モニタです。
千鳥格子の画面を表示させた
ところです。
【制御方法】
この制御で難しいのは、3チャネルのSPIモジュールの出力を同時に出力する
ようにする必要があるところです。
SPIを全部マスタモードにして、OC3の割り込みで全部同時に出力開始させれば
良いのですが、命令でひとつずつSPIxBUFに出力することになりますから
どうしても1ドットずつずれてしまいます。
結果は全部マスタでは制御は無理という結果になりました。
そこで、1個をマスタにし、残りをスレーブにしてマスタのクロックで動作させるように
しました。これで確かに同時に出力が出るようになりました。
表示された結果は下図のようになりました。SPIが2チャネルですのでRとGの2色を
同時に出力した結果です。黄色になれば正解です。
RとGの2色を同時に
出力した結果
確かに黄色にはなっています。しかしかなりムラがあります。
マスタのクロックが出力されてからスレーブの出力が始まるので、わずかですが
スレーブ側の映像信号が遅れて出て行くことになります。この遅れのため
微妙に色ムラが出ているものと思われます。
次に試したのは、SPIをすべてスレーブにし、出力コンペア4(OC4)をクロック信号として
映像を出力開始するタイミングでOC4の出力をすれば良い筈だという考え方です。
ですが、いろいろ試しましたがこの方法では映像をうまく出すことができませんでした。
何か別の原因がありそうなのですが発見できませんでした。
という結果で、3つのSPIの出力を完全に同時出すというのは結構難しいという結果
となってしまいました。
後は、ポートにパラレルにI/Oで出力する方法ですが、ドットクロックの周期
(約150nsec)でポートを制御するのは、PIC32を持って来てもちょっと難しいですね。
確かに8ビットカラーとするには、この方法で出力にD/Aコンバータが必要なのですが
どうするか・・・・。
【プログラムライブラリ】
今回は失敗でしたので、プログラムダウンロードは無しとします。