So-net無料ブログ作成
English Version

バーサライタの製作 2005年11月28日(データ復活版) [PIC]

バーサライタの製作
 ライトークのように表示パターンをスキャン入力できることを目指します。

 ライトークは ここ の電子工作にレポートされているようにPIC16F88とシリアルEEPROMが実装されているようですが、F88内のFlashメモリを使うことで外部EEPROMは省略したいと思います。
 基本原理は隣のLEDを発光させた時の反射光による起電力の違いをF88内蔵のA/Dを使って検出し白黒を判定する・・なのですが、どうなることか(^^)

 LED数は14個(A/Dチャンネル数x2)で一回のスキャン(=点灯パターン)は13bitの予定です。(もっとLED数を多くしたかったが手持ちの表面実装タイプのLEDの数の制約&配線がめんどいので^^;)
ニックネーム さと at 01:13 | Comment(9) | TrackBack(0) | 日記
nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

さと

以下、Googleのキャッシュから復活させたコメント
--------------------------------------------------
 LEDで白黒判定するために「実機環境でのディバッグ環境の改善検討」で書いた1BIT通信を使って確認しながら試行錯誤し、マージンはあまり大きくないですが何とか判定できそうな感じです。
 プログラムの変更の度にシリアルケーブルをPICライタと実験基板につなぎ換えるのが嫌になり、まずは1BIT通信を使った簡単なブートローダを作ることにしました。が、なかなか時間がとれずしばし中断状態です・・・^^;
Posted by さと at 2005年12月17日 12:13

--------------------------------------------------

現在までの考察のメモ書き

【LED部の回路】
 スキャンのためにA/D入力が必要なのでPICF88でアナログ入力できる7ポートにマトリックスでLEDを接続します。今回は7x2の14個のLEDを使います。

【スキャン】
 スキャンの場合はまず、全LEDを消灯し、暗い状態でA/D変換し、次に隣のLEDだけを点灯しA/D変換します。
 点灯値−消灯値 の大きさで白黒判定します。

【表示タイミング】
 13ビット分のデータを表示するためにはlow側7ビットとhigh側6ビットを順次切り替えダイナミック点灯します。今回はこの動作を2回(low→high→low→highの表示)行った後に次の13ビットのパターンに移ります。
 空中で振る場合、振る時間は0.5秒で50cm位と思いますので100cm/秒の速度。
 表示の解像度を2mmとすると500回表示/秒。
 上記のように1パターンの表示はlow-highで4回ダイナミック点灯するので表示切替タイミングは
 1000ms/(500x4)=0.5ms
 従って、表示処理は0.5msの割込み処理で行います。
 一振りでのパターン数をきりのいいところで128とすると128/(500x0.5)=0.512で約0.5秒間の表示時間となります。(ちょうど一振り位の時間)
 128だとflashの後半2Kを使った場合16通り(多すぎか?)の表示が保存できます。

【スキャンタイミング】
 スキャンする時は空中で振るようには速く移動できないので2秒で20cm位と想定。
 2000ms/128=15.625ms毎の割込みで処理する。(flashメモリ書込みに
msオーダーで時間がかかるし13回A/D変換するので調度いい位の時間?)
 スキャン時の解像度は200mm/128=1.56mmです。

Posted by さと at 2006年01月21日 23:21

--------------------------------------------------

 ブートローダも出来上がり、環境整備が済みましたので久々に実験再開してみました。^^;

 スキャンはLEDのバラつきが出にくいように、まず、隣のLED発行直後にA/D変換し、一定時間後に再度A/D変換します。
 この2回のA/D変換値の差分で白黒判定しようと試みています。

 スキャン時のA/Dデータを見てみると下記のようにスキャン対象が明るい場合と暗い場合でA/D値の差は出るのですが、個々のLEDのバラつき等があり、一律で判断が難しそうです(下記のデータは結構まともですが測定する度に値が結構変動したりします)。
 やはり何かしらの手段でキャリブレーションしないと駄目そうですね^^;

   bright data         dark data
ch start end difference  start end difference
00 0028->0049 dif:0021  0027->0037 dif:0010
01 001F->003A dif:001B  001F->002C dif:000D
02 0026->004B dif:0025  0025->0035 dif:0010
03 0026->005A dif:0034  0024->003B dif:0017
04 001E->0044 dif:0026  001D->0030 dif:0013
05 0029->004A dif:0021  0027->0039 dif:0012
06 0019->0035 dif:001C  0018->0024 dif:000C
07 0029->0045 dif:001C  0028->0035 dif:000D
08 0020->003C dif:001C  001F->002E dif:000F
09 0026->0049 dif:0023  0025->0034 dif:000F
10 0027->005F dif:0038  0024->003B dif:0017
11 001F->0045 dif:0026  001D->0030 dif:0013
12 0029->004A dif:0021  0027->0039 dif:0012


Posted by さと at 2006年01月30日 00:52

--------------------------------------------------

 ん〜なかなかきれいにスキャンできません^^;

 一定の速度でスキャンするのも難しいし、表示をデジカメで撮影するのが更に難しい(笑)

 フリフリしている間に折角の直角配線が滅茶苦茶になりましたが、実験用の試作基板の表側が

http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/versa1s.jpg

 裏側が

http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/versa2s.jpg

です。上の隅に並んでいるのが表示兼スキャン用のチップLED14個で、赤黒配線が電源(単三電池2個)で白黒配線がブートローダー兼ディバッグ表示用のチョン付け配線です。フリフリセンサーはまだつけていませんが、機械式に接点ON/OFFする方式を考えています。

 写真の○X△パターンをスキャンし、表示したのが

http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/versadsps.jpg

です。

 まだまだいびつにしかスキャンできていません^^;

p.s.
 1/21のコメントの

>一振りでのパターン数をきりのいいところで128とすると
>128/(500x0.5)=0.512で約0.5秒間の
>表示時間となります。(ちょうど一振り位の時間)

 これは間違いで256パターンで0.5秒でした^^;

Posted by さと at 2006年02月06日 03:46

--------------------------------------------------

プリンタでフォントサイズ128で「TEST」と印字したものが

http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/test.jpg

で、スキャンし表示したものが

http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/testdsp.jpg

です。

 スキャン時のコントラストを調整するとそれなりにスキャンできるようになりましたが、現状の試験基板(14ビットスキャン(表示は13ビット))ではこの辺が限度のようです。
 7x4=28ビットにすればそれなりに使えるようになるのではないかと思います(回路&ソフト処理の28ビット化も容易)。

 ただ、手持ちの両面基板ではサイズが小さいので購入しないと・・・

Posted by さと at 2006年02月12日 05:48

--------------------------------------------------

通常のバーサライタのように作成データを表示してみたところ、ラインが間引かれて表示されました??
うっ 表示処理のバグ・・・・・^^;

表示処理を修正して作成データを表示したサンプルがこれです。右側に「こんにちは。」と続くのですが
http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/hellodsp2.jpg

「TEST」をスキャンしなおして表示したのがこれです。
http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/testdsp2.jpg

あとはLEDの数を28個にすれば完成かな

p.s.
 ライトークが1/12にバージョンアップしたようです。
http://www.nittohkogaku.co.jp/lightalk/contents.html
Posted by さと at 2006年02月12日 23:39

--------------------------------------------------

 今までの実験基板にLEDを7個追加し、21個にしてみました。スキャンビット数は20ビットになります。
 一つのA/DチェンネルにLEDが3個繋がることになります。
パラ接続のLEDが増えるとLEDの容量の影響のためか今までの白黒判定ロジックではなかなかうまくスキャンできなくなってしまいましたが試行錯誤し、なんとか以前程度のスキャンが可能に^^

 ビット数が増えたので漢字もスキャンできます。

「回路」をスキャンした結果がこんな感じです。

http://www.netlaputa.ne.jp/~T-Satoh/pic/image/versa/dspkairo.gif

Posted by さと at 2006年04月02日 03:48

--------------------------------------------------

バーサライタなら、ここでは1980円で売っているよ。メッセージの手動設定もできる。
http://www.rakuten.co.jp/personal-ttfs/
Posted by yyaibo at 2006年05月18日 22:51

--------------------------------------------------

 SKY WRITERの広告を見ました。フォントデータを持っていてメッセージ設定できる仕様のようですね。回転に対する表示の同期は取っていないようです。「ヨン様の携帯応援グッツ 」(グッズ?)というのが笑えます。
(因みにデモの「SAZAN ALL STAR」は「SOUTHERN ALL STARS」が正解)

 技術的にはライトークの方が興味がわきます。

 今回のバーサライタの製作はライトーク相当の機能をPIC16F88一個+抵抗7本+LEDで実現しようという試みです。

Posted by さと at 2006年05月19日 01:03
by さと (2008-01-04 03:04) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0