<< 前のページ
2008年10月2日(木) 17:15
携帯電話にプロジェクターが搭載されるかもしれないと話題になっている。それもレーザースキャナー。
ガルボ扱っていて恐らく誰でも考えるのは、これをブラウン管モニターのようにラスタースキャンしてやれば普通に映像が表示できないか?ということだろう。3色混合固体レーザーのコストが下がったことで、マッチ箱のような装置でも可能になって来たということらしい。記事に出ていた試作品は10〜20センチの小さな投影だったが、オモチャとしては面白いかも?という程度には写っていた。
明るさは10ルーメンだそうだ。
3色混合固体レーザーで多いのは、赤650nm 緑532nm 青473nm というパターン。これで、各原色が3.3ルーメンと仮定すれば、光出力はどの程度だろうか?
基礎知識として、ここはチェックしておいて欲しい。
波長 | ルーメン/mW | 3.3ルーメンは? |
650nm | 0.0703 | 47mW |
532nm | 0.580 | 6mW |
473nm | 0.068 | 49mW |
473nm の比視感度は正確なデータが不明で、約0.1の概算。まあ大雑把なデータでも今回の話は進められる。
結論として、3波長のレーザー出力を合計すると、ほぼ光出力100ミリワットだろうと考えられる。650nm
と 473nm は半導体レーザーの出力をコリメートすれば素で使用可能だし、532nm
はDPSSだとしても光出力が小さいのでそれほど破滅的なことにならない。消費電流0.5Aで製作可能と思われる。消費電力は1ワットから2ワットの間だろう。これにミラー駆動が加わるが、既存プロジェクターの技術がありネックにならない模様。
携帯電話に搭載するには大食いだが、常時これでTV見たりする用途じゃないしギリギリ使えそうだ。
ただ、合計100ミリワットのオーダーとなると安全性は話題にならないのだろうか?
事実上室内専用ではあるが。
普通の室内は数百ルクスである。暗くして100ルクスと考えると、それなりのコントラストを得るには1000ルクス程度で照射したい。10ルーメンで1000ルクスを実現するには、投影面積は0.01平方メートル。10センチ四方。携帯の液晶画面よりはかなり大きいから、これも何とかギリギリ使えるという結論だ。
100ミリワットのレーザーと聞けば危険な香りがバリバリするのに、照明装置としては案外ショボい。レーザーはこのギャップが危険を生むとも言える。照明器具としては見た目ショボショボでちっとも危険そうではないのに、それを直視したら致命的というギャップだ。
written by higashino [ガルバノメーター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2008年5月21日(水) 17:23
非常に不安な関数がある。それは、ボリューム設定を行う waveOutSetVolume() である。
MMRESULT waveOutSetVolume( HWAVEOUT hwo,
DWORD dwVolume
);
最初の引数は Windows プログラムではお馴染みの概念である「ハンドル」を指定する。
open 系の関数でハンドルを取得
↓
そのハンドルを指定して数々の関数を実行
↓
close 系の関数でハンドルを破棄
問題は2つ目の引数。ここでボリュームを指定するが実は左右別々に指定できる。DWORD
は符号無し32ビット整数であり、下位16ビットで左のボリュームを、上位16ビットで右のボリュームを指定する。0が無音で
0xffff が最大となる。
そう、ボリューム最大が 0xffff なのだ。
0xffff を与えたときに WAV データそのままのビットが出力されるのであれば何も問題は無い。だが、プログラムの都合からすると WAV 値にボリューム指定値を掛け算し、それを 0xffff で割り算するという処理が行われているかどうか極めて不安である。ちょっとコンピュータのことを分かっていれば自明だが、0xffff で割り算するより 0x10000 で割り算する方が遙かに素直だ。もしも、
(出力値)=(WAVオリジナル値)×(ボリューム指定値)÷0x10000
などということが行われていると、ボリュームに指定可能な 0〜0xffff までのいかなる値を与えても
WAVオリジナル値そのままを出力出来なくなってしまう。音楽を聴くのであれば実用上は全く問題ないが、ビット列をナマで使いたい場合は大問題だ。
やる前から心配しているのは、PlaySound() でビット化けしていた事実があるから。手動だがボリュームを最大に引き上げても、LSB近辺が不安定だった。杞憂ならいいが
waveOutSetVolume() はボリュームコントロールに連動しているらしいので不安ありまくり。ダブルバッファを実装する前にボリューム問題を確認すべきかもしれない。
written by higashino [ガルバノメーター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2008年5月20日(火) 17:28
waveOut系はコールバック関数が必要だ。不可欠という訳ではないが、活用しようとすると不可欠になる可能性が高い。そうなると、Visual
Basic あたりで安直に制御するのは困難で、素直にC系を使うことになる。手軽にプログラムを用意出来ない。
必要なヘッダーは MMSYSTEM.H であり、追加ライブラリは winmm.lib である。
PlaySound() 関数は WAV ファイルをまるごとそのままメモリーに読み込んだ状態で再生可能。つまり、WAV
ファイルの生成プログラムをそのまま使えばメモリー上でも再生出来た。ところが、waveOut系は微妙にフォーマットが違っている感じ。いや、違うのはヘッダーだけのようだが。
このあたりは手順を踏んで行くだけだが、ガルボ制御に生成する場合は出力が途切れてはならない。だから、バッファを2つ用意して、一方のバッファを再生している間にもう一方のバッファに
WAV データを書き込むダブルバッファ処理を行わねばならない。これにコールバック関数が絡むので、なかなかプログラムが完成しない。そもそも関数の使い方を順番に確認しながら進める訳で・・・
残念だが、こんなもの2日や3日で完成させられるほどの暇は無い。
written by higashino [ガルバノメーター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2008年5月19日(月) 17:24
ガルボがメインの用途では使えないと判明してしまったが、PC直結操作に関しては先に進めてみる。というのも、レーザーお絵かきでゲームするという、もう1つの大きな用途があるのだ。例えばアーケードゲームのシミュレーターに MAME
というのがあるが、表示装置にガルボを使用した Laser MAME という分野が存在する。
ガルボが使える人間しか参加出来ないコアな世界である。
ゲームに限らずインタラクティブな使い方をしようとすれば、PC制御は避けて通れない。自分の手法ではPC制御とは、リアルタイムでWAV合成やることを意味する。実際には合成は容易であり、問題はリアルタイム音声出力の方な次第。音声は幾らでも出せるが、合成したビット列とは異なるものが出力されてしまう。どうすれば同じビット列が出力出来るのか?
お手軽な PlaySound() では駄目だった。
オーバーシュートの修正まで含めて最後まで問題を解決しなくても、この機会に音声出力ぐらいは解決しておきたい。レーザーの共振で煮詰まっていることもあるし、一度作業を止めると再開に多大なエネルギーが必要なのでキリが良いところまで進めておきたいってこともある。
PlaySound() が駄目なら、次は waveOut系を試してみたい。
PlaySound() はWAVファイルでもメモリ中に読み込んだファイルでも再生出来るが、一応はファイル再生向けの関数である。これに対し、waveOut系はメモリー内再生向けの関数。特に、ボリュームコントロール関数を含むところがおいしい。というか、ソフト的に再生ボリュームを設定したいと思って情報を集めたら
waveOut系にぶつかったという方が正しい。
さて、コイツは使い物になるかどうか?
Windows のプログラムはそれなりにあれこれ仕込みが必要なので、サクっとプログラム作って走らせてみた、とは済まないことも多い。waveOut系もすぐには結論に飛びつけない。準備に結構手間が掛かる。
written by higashino [ガルバノメーター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
2008年5月18日(日) 18:59
ガルボ基板の調整やってみた。しかしすぐに意味が無さそうだと判明。
半固定抵抗を回しても、描かれる図形の形が変わらないのだ。変わるのは安定性。調整が狂うと、ぶるぶると図形が震えるような見苦しいことになる。しかし、基本的な形は変わらない。やはり、ガルボ基板の調整不良ではなさそうだ。完全ではないが元の角度に戻して一応終了。
やはり、WAVファイル生成時にオーバーシュートを調整してやらねばならないようだ。
一応それっぽく図形が表示されるので、試しに外に持ち出す。先週のイベントは雨天順延された。
目的は3つあった。
1)輸送で壊れないか確認する。
2)昼間の屋外でどの程度視認出来るか確認する。
3)次回のイベントで表示する図案に関して意見を聞いてみる。
これが想定外の惨敗となった。
現地でいざ動作させると、レーザーが出ない。空冷ファンは回るし内部で赤く光ってるようだが何も出ない。輸送の振動で壊れたか?
リュックで背負ったが、床に下ろした時にガツンって感じだったからなぁ・・・こうなると2)も3)も無意味。しかし、しばらくすると表示された。恐らくは振動でガルボミラーの角度が大幅に狂ったのだろう。ミラー位置は一義的に決まるが、180度とか狂ってると即時復帰しないことがあるのかもしれない。
今度は2)が駄目。もうこれが殆ど見えない。夕方だったがキツい。グリーンブーストしても効果は殆ど無し。真昼は論外だろう。
結局、数十ミリワットのグリーンレーザーでは昼間は無力。ポインターのように一点に照射し続けるから昼間もOKだが、スキャンすると一気に暗くなる。室内や夜でないと駄目。
そうなると3)など意味がない。屋外昼間のイベントには使えない。
written by higashino [ガルバノメーター] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
<< 前のページ
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4