デジタルビデオカメラでタイマー録画(ハードウェア編)はじめに前回は構想編ということでデジタルビデオカメラコントロールアダプタのコンセプトと概略の構成について説明申し上げました。 今回はいよいよハードウェア編です。 まずは回路図
同期分離回路についてVideo In端子に繋いだビデオやチューナーの電源が入ってこの端子にきちんとした映像信号(アナログ)が入力されてきますと、LM1881の働きによってこのICの1番ピン(1番左上角が1番でそこから反時計回りで2、3、・・・8番ピンとなります)から1/0のデジタル信号であるパルス状の同期信号出力されます。 つまり、
ということです。 NTSC方式のTV信号の場合は走査線の本数575本の画面が1秒間に30枚送られてきますので1秒当たりの走査線の本数は15,750本あることになります。したがって、ビデオ信号が入ってくると、LM1881からは1/15,750秒毎に1回の割合でパルス信号が出力されることになります。 単安定マルチバイブレータについてこの部分は、後述のLANC信号発生回路部分が映像信号の有無を検出しやすいように、上記の同期信号出力(周期的パルスの有無)をレベル信号のHigh/Lowに変換する役割をしています。今回の回路では、入力信号の立下りエッジを検出すると一定時間だけ出力にLowを出力するという構成になっています。 単安定マルチの中にも、パルス発生中は入力を受けつけないものと、パルス発生中でも入力を受けつけてその時点からさらに決められた時間幅だけのパルスを出力するもの(リトリガブルタイプ)の2種類がありますが、今回使用した74HC123は後者のタイプです。 つまり、出力のパルス幅を繰り返し入力信号の周期よりも充分大きくなるように設定することで、同期信号のような繰り返しパルスが入ってきている間はずっと、パルスが延長される=あたかもLowのレベル信号が出力されるような振る舞いをさせることができます。(下図参照)
LANC信号発生回路について今回の工作の一番の難関だったのが、ここの部分でした。「工作」といっても半田付け作業自体は全く大したことはありません。大変だったのはどうやってLANC準拠の信号を発生するか、という制御のほうでした。詳しくは次回のソフトウェア編で述べるとして、今回は簡単な仕様について説明します。 ここの部分がやっていることといえば、上で説明した「映像信号検出部」が出力する検出信号が非アクティブからアクティブに変化した場合にLANC端子から録画開始コマンドを送信し、逆に検出信号がアクティブから非アクティブに変化した際にLANC端子から停止コマンドを送信する、という2つだけです。 この作業を実行するためにPIC12C509Aの6つある入出力ポートのうちのGP0、GP1、GP2の3つ(それぞれ7、6、5番ピン)を利用しています。それぞれの役割は、GP0はLANC信号の入力。ひとつ飛んでGP2はLANCの出力。GP1は映像信号検出信号の入力にわりあてています。ちなみに、GP3端子(4番ピン)はリセット入力に設定し、GP4,5(3、2番ピン)はチップに内蔵の4MHzの発振機を利用するので未使用としています。 詳しくはこの後で述べますが、LANCは一本の信号線を2つの機器間で共有して双方向通信を行う関係で、機器同士では信号線をWired Orする形になっています。(2つの機器のうちどちらか一方が信号レベルをLowにすれば、他方がHighを出していても共有信号線はLowレベルになる。) ところが、PICのGP2の端子はオープンコレクタ(ドレイン)ではなく通常のトーテムポール出力になっていますので、GP2がHighを出力しているときにLANCの信号が他方の機器によりLowにされると信号の衝突が起こります。下手をするとGP2のポートが破壊されてしまいますので、保護の為にダイオードがGP0からGP2に向かう方向で取り付けられています。 LANCの信号フォーマット LANCは基本的には通信速度9,600bpsのシリアルインターフェースで、一組の信号/グランドの導線を通じてデジタルデータを送受信するものです。ただし、一般的なシリアルインターフェースと異なる部分は次の点です。
8byteのデータの内訳は、前半4byteがマスターからスレーブに対して送られるコマンドとそのパラメータ、後半4byteがスレーブからマスターに返信するステータスデータになっています。 各byteのスタートビット間の間隔は1,200マイクロsecから1,400マイクロsec程度(機器によってばらつく)で、8byteひとかたまりのパケット(?)同士の間隔というか周期は約16.7msecになっています。
この辺の詳しい話は、ドイツのサイトですがこちらのページに説明されていますので興味のある方はご覧になってみてください。(ドイツと言っても判りやすい英語で説明されていますので大丈夫だと思います。) ちなみに、今回利用するのは「録画開始」と「停止」の2種類のコマンドとステータスだけで、それぞれ下記のようなコードが割り当てられています。 余談
実は、今回の企画はとてもではありませんが私一人が自力でできるものではありませんでした。ひとえに、(作者の方のお名前も判らないのですが、)あるWebページで紹介されていた電子工作記事の内容のお陰なのです。 そこに説明されていた回路やPICのプログラムのソースなどを流用/改造させていただくことで、自分の目的を達成することが可能になりました。 本来なら、そのページのURLをここに紹介し、作者の方に感謝の言葉を贈りたいところなのですが、残念ながら、今年:2003年に入ってしばらくしてから、「お気に入り」に登録してあったそのページがリンク切れしてしまい、消息が知れなくなってしまったのです。 でもまぁ、類は友を呼ぶとか申しますので、ひょっとするとご本人が検索エンジンなどでここのページを見つけてご覧になることだってあるかもしれません。心当たりのあるかた、ぜひJunZまでコンタクトしてくださいね。 では、今回はこれくらいで終了します。次回ソフトウェア編までしばらくお待ち下さい。 |