マイコン版 LED-TV製作

LED TV

概要

技能オリンピックの電子機器組立てという競技で、PICマイコンを使った「LED-TV基板」の組立という課題があり(今は違う)、回路図や原理も公開されていたので作ってみた(要はこれパクリ オマージュ)。 実物を見たことがあったけど、ドーナッツやピラミッドのような画面がくるくる回って面白そうだった。 本当に作ってみてからかなりの時間(2年ほど)がたったが、このページ作りのネタのためと資料整備を兼ねて掲載。

材料準備の方針

競技課題のため、実際はキット化されたものが配られるようだけど、そんなものは当然入手できないので、シャーシや基板も自分で準備する。 基板はピーバンドットコムで用意し、シャーシは技能士試験の課題の残骸を利用することにした。 電子部品なども、同一のものが準備できない場合は代替品を使うことにした。 また、競技用のCPUボードは拡張性や別用途での使用を想定しており、TVの課題では使わないSDカードスロットや拡張用コネクタがついていて付けることにするか迷ったが、PCBCADも素人同然な自分の勉強のため、付けてみることにした。
そういえば、昔はネットで拾えたCPUボードの回路図が、今は無いなぁ。

回路図作成・基板製作

テレビの送受信を模した構成で、映像信号にCHデータを付けて送る基板(CPUボード)と、受信したデータを一旦アナログデータに変換、受信し表示させる基板の2種類が必要。 元回路を元に、自分で入手可能な部品を使うように図面をBSchで作成しなおす。基板は、CadlusXでパターンを作る。 BSchはともかく、CadlusXでは自分でライブラリを作る作業が少ししんどかった。また、作った後に後悔したが、表示側の基板もMPLAB ICDを接続できるようにしておけば、デバッグが楽だったのに・・・。

プログラム作成(CPUボード)

垂直同期と映像信号1ライン目

C18を使って作成した。表示画像がPDFで示されていただけなので、データ化するのに手間がかかる。 具体的には画像を拡大して取込み、モノクロ16階調・16x16のビットマップデータに変換してから、ファイルをダンプして手作業(?)で濃淡データを作るというかなり地味な作業。
全部で60枚(画面)分!! この時点で本当に完成するのかちょっと不安になった。ビットマップファイルの構造なんて知らなかったし。
恐る恐るテストパターンの波形を見てみると、こんな感じに・・・。

どうやら、いけそうだ!

プログラム作成(TVボード)

アセンブラにて作成。やってることは以下のとおり。

A/D変換
33ms間あたり16回実行し、水平1ライン(16ドット)分の輝度情報を取得。たまにチャンネルデータや同期信号がくることも。
PWM出力
輝度情報を元に、16個のLEDをそれぞれの輝度に応じて同時に点滅制御
同期
同期信号のたびにラインを切り替えて1画面をつくる。

16階調のPWM信号パターンはオシロの波形が載っていたので、それを利用。
機能は少ないが、短い時間にやらなきゃいけないことが盛りだくさん。 フリーのC18で下手に組んだら時間がかかりすぎてしまう(少なくとも、自分の腕前では)。 当時使っていたMPLAB IDEで、C18から変換されたアセンブリコードを見て絶望的な気分に・・・。最適化オプションが使えれば大丈夫なのか??
また、元の回路図を置き換えることしか考えていなかったため、オンボード書込み機能を持たせていなかった。 修正のたびにマイコンを基板から抜き取り、書き込み、挿し直すと言う、非常に面倒な作業を強いられてしまった。 最初のころの動作確認なんて、動かない原因が何なのかさっぱりわからず、想像だけでデバッグしていた。 非常に後悔。

完成

静止画像(人の目)は一番上の写真のとおり。ぐるぐる回るドーナッツの動画像は、どのぐらいで画像を切り替えたらよいのかわからなかったが、地元(松本市)で本当の大会をやってたときの展示品を参考に調整。
オリジナル性は皆無だけど、PICのアセンブラプログラムを初めて自分で作ったことだし、大満足。次はMP3プレーヤーだ。