2015-09-19
5mmのLEDを並べて7セグメントディスプレイを作る。色に特に意味は無い
高さは約10cm
通信はSPI準拠にしてarduinoから制御
数珠つなぎ接続して配線数を少なくする
汎用のディスプレイにする予定なのでそのままの状態では小数点表示、180度ひっくり返すとコロン表示
コロンとドットを同時に使うことはあり得ないのでLEDを実装するか否かで切り替える
点灯は輝度を稼ぐためスタティック
電源電圧12V。一桁あたり最大440mAの大食い仕様
2015-09-25
100x74サイズなのでスカスカになると思ったが意外と密な感じ。消費電力が大きいので太いパターンを通しておきたいが部品の隙間を縫ってパターンを通せない。数珠つなぎするときは太めの電線で配線することにする
LEDは大量に使うのでAliexpressで安い物を探す。ハズレを買ってしまうこともあるが秋月電子よりかなり安いので買い直せば良い。安い部品は秋月電子の1/5程度の物も有るが逆に高い物も有る。配送に時間がかかるのと商品説明がテキトーなのが欠点。メーカーの直販もあるが価格はやや高め。現在まで60品種の電子部品&製品(オシロスコープなど)を注文したが不着事故や品質が悪くて使い物にならなかったりした物は無い。梱包はきわめて簡素でピン曲がりなどがたまにあるが1個ずつ袋詰めされていないのがむしろありがたい
表面はLEDだけ
裏面
AliexpressはLEDの種類が豊富
2015-09-26
ポリゴンで配線した。これで3A程度流せる
2015-09-26
7セグメント+カドの6カ所 という表示方法も考えられる
2015-10-10
中国製のLEDが届いた。直射日光を当てても発光しているのは解るがレンズが無いに等しいので発光面積が小さく見える。超高輝度タイプのLEDも先端の丸みを削り落としてしまうと光が拡散するのでそれほど明るくは無い
2015-11-01
基板到着
2015-11-25
7セグメントでは無くサイコロパターンで数値を表すという方法も有りか。ネオン管で作ったらいい感じになりそう。ゼロは全消灯なのでネオン管を下からLEDで照らす。中国製のネオン管なら1個¥10程度。そのうち実験してみる
2015-11-26
1セグメントだけ点灯テスト。直視すると目が痛い。電圧12V。4個直列の3ストリング
表示する値は2線式の通信で送るのでデータ構造を決める。ディスプレイは数珠つなぎ接続する。次の表示装置には1クロック分だけ遅れてデータが届く。コントローラーのクロックが停止すると最後尾のディスプレイへのクロックも即座に止まる。データは1ビットだけ遅れて届くので最後尾にデータを送るためには接続されているディスプレイの数だけダミーのクロックを送る必要がある。この仕組みはコントローラ側のプログラムを複雑にするがディスプレイ側のプログラムは自らクロックを生成する必要が無いため単純になる
2015-11-27
写真だと明るく光っているようには見えないが肉眼だと十分な輝度に感じる。ガソリンスタンドの価格表示板程度の明るさ
2015-11-28
ネオン管を注文しておいた。3種各50個。1個約¥10。中国製なのでたぶん200V。用途が違うので届いたら別ページで作り始める->ネオン管時計はこのページ
2015-12-08
本体の回路が無いので回転計多機能版Ver2で表示部だけの動作テスト。輝度を最低に落としても室内では眩しいので紙を置いている
=================================
通信データの書式
=================================
・表示には1つの表示装置に付き2バイト送信する必要がある
・コマンドに続けてデータを送る
・コマンドの先頭ビットは常に1、データの先頭ビットは常に0
・コマンドの書式
7ビット目 -常に1 コマンドとデータはここで区別できる
6ビット目 -0:通常データ 1:dummyデータ、デイジーチェーンの次の表示装置にクロックを送るための物 dummyコマンドはコマンドだけで完結しているので続けてデータは送らない
5~4ビット目-0:通常データ 1:輝度 2:通常データ表示反転 3:予備 表示反転はトグル動作では無い
この方が良いか--------------
6~4ビット目-0:dummy
1:通常
2:通常+DP
3:反転
4:反転+DP
5:輝度
6:予備
7:予備
---------------------
3~0ビット目-0~15:表示装置ID 各表示装置はIDで識別される
・受信方法 CLKの立ち上がりでDATAを読む。先頭ビット(=7ビット目)が先に送られてくる
・送信方法 CLKの立ち下がりでDATAをセットする。先頭ビットを先に送る
・データの書式
通常データ-7ビットASCIIコードキャラクタ
輝度データ-1~10バイナリ 1:暗い 10:明るい
・8ビットデータ受信中にクロックが0.8msec以上変化しない場合はエラーで受信中のデータ破棄。先頭ビットの受信待ちになる
・表示装置がデータをデコードするより早く次のデータを送るとデータ破壊が起こる。最短時間は実測で求める(現在未計測)
2015-12-11
在庫のアクリル板。30cmだと思ったらちょっと小さい。1個74mm幅なので296mm必要。290mmしか無い
2015-12-12
追加で3個作る。スポンジを敷き上から軽く押さえながら半田付けするとLEDが浮かない
2015-12-14
半田付け終了。最上位桁は1か2なのでセグメントを1カ所省略している
2015-12-24
GPSは時刻の校正だけに使うのでリアルタイムクロックも必要。arduinoで¥10リアルタイムクロックDS1307の動作確認をしておく。水晶の両端子を数pFのコンデンサ経由でGNDに接続すると周波数を下げることが出来るがソフトウェアで校正する方が万能。水晶の個体差や温度の影響もある。水晶を内蔵していないリアルタイムクロックの精度は外付けの水晶に依存する
水晶も安い中国製
RTCの出力を周波数カウンタで計測。32.768kHzの水晶。これだと日差6秒
2016-01-09
色つきのアクリル板は高いので透明を使うことにした。基板を貼り付けて穴開け
2016-01-22
ディスプレイ部分の組み立ては完了。送信用のクロックを自己生成しないといろいろな制約が出て面倒になるのでソフトは作り替えることにした
2016-01-23
電圧12Vでpickit3を壊してしまった。中国製のクローンではなくオリジナルの方を。2個無いと送受信プログラム作りの効率が悪いのでpickit3が届くまでしばらく中断
2016-02-25
点灯テスト。1桁分のデータ転送に700μ秒かかる
2016-03-10
表示が合わない。たぶんデータを取りこぼしている
2016-03-11
2016-05-02
基板到着
2016-08-11
旧基板でテスト環境を完成させた。時計では1分に1回しか表示が変わらないのでタイム計測器でしばらく使ってテストする。輝度変更のロジックを入れてみたが大電流のスイッチングの影響でデータ送信時にノイズが入って文字化けしてしまうので輝度変更機能は取り去った
バッテリー保護回路のスケッチ。屋外テストではリチウムポリマーバッテリーを使うため過放電防止回路を付加する。3.2V×3セル=9.6V以下になったらバッテリーから回路を切り離す
2016-08-17
バッテリ保護回路完成
回路図。MCP100はリセットIC。VDDが4.75V以下になると出力が0Vになる。4.75V以上の時の出力電圧はVDDと同じ。ヒステリシスがほとんど無いので閾値電圧(4.75Vx2=9.5V)でON/OFFを繰り返してしまうがバッテリ保護にはなる
リチウムポリマー3セル2100mAH電池で駆動。消費電力は888888表示で1.2A程度なので一般的な使い方なら2~3時間程度
2016-09-01
ネオン管時計が完成したので改造してGPS時計に仕立て直す
基板レイアウト
2016-09-04
配線を修正したのでタイム計測器で動作確認
2016-09-05
夏場は溶けるのが早い。ネオン管時計の実験回路を両面テープで貼り付けて2枚同時にエッチング
2016-09-08
リアルタイムクロックとI2C通信できないのでブレッドボードに必要最小限の回路を組んで実験。PIC16F1508ではmikrobasicのI2Cが動作しないというのが結論。違うかもしれないが実績のある18F14K22に変更。これはネオン管時計と同じなので絶対動く
大型ディスプレイと通信もうまくできず。いまだ原因不明。ディスプレイはタイム計測器(デジタル回転計多機能版Ver2)に接続すると正しく動作するのでディスプレイ側の問題ではない。Arduinoでテストプログラムを書いてみると同じくダメな症状。デジタルオシロで波形を見てもおかしなところはない
輝度の確認。直射日光が当たっても読める。実験中は文字が目に焼き付くので青いフィルムを張っている。アクリル板の保護紙も剥がしていない。ディスプレイは立てて使うので昼間の上からの日射は問題にならない。朝日と夕日のほうが影響が大きい
2016-09-09
ディスプレイ側にバグが残っていた。追加した輝度変更機能を消し忘れていた
2016-09-13
文字の間隔が詰まりすぎている感じ
150x100の基板から2枚取れるようにサイズを決めている
電流は9Vでこの程度
2016-09-15
ネオン管時計から移植したのに全く同じGPSが動かず。ブレッドボードで同じ回路を組んで実験。原因は割り込みをENABLEにしてからdelayを入れていたためにシリアル通信のオーバーランエラーが起こっていたというつまらない物。
GPSから緯度、経度が得られるため日没時刻は計算できる。ネットで拾ってきたロジックをmikrobasicに移植した
原因調査中
バグをつぶして動作テスト。日没までの時間はマイナス表示
GPSモジュールを取り付けて完成。
仕様;
・日没まで10時間以上あると--:--表示となる
・緯度経度はEEPROMに書き込んであるので電波を受信できなくてもリアルタイムクロックのバックアップ電池があれば表示できる
・GPSから時刻を得られているときはコロンが点滅する。リアルタイムクロックだけで動作しているときはコロンは点灯したまま点滅しない
・スライドスイッチで 普通の時計/日没までの時間 を切り替えられる
設計上は12V電源。9Vでも視認性はそんなに悪くない。回路図などは以下の添付の通り。大型ディスプレイは別ページ(現在キット化するか未定)。基板に修正が入っているがリンク先の物は修正不要。大型ディスプレイは1桁に88個もLEDを使うのでキット化したときにLEDを大量仕入れする必要があるため売れ残ると困る
回路図。R5はプログラムを書いている途中でRXを出力にしてしまったときにGPSモジュールを壊さないようにするための物。プログラムが正しければ無くて良い。大型ディスプレイのディップスイッチ設定は
1分桁:0 全部OFF
10分桁:1 1のみON
1時桁:2 2のみON
10時桁:3 1,2をON
大型ディスプレイはとの接続は
VCC:大型ディスプレイの5V電源と接続
GND:大型ディスプレイのGND(電源マイナス)と接続
DATA:大型ディスプレイのDATAと接続
CS:大型ディスプレイのENABLEと接続
CLK:大型ディスプレイのCLKと接続
2016-09-16
明るさの違い。日没30分前は昼間とあまり変わらない。シャッタースピード一定で撮影。肉眼の場合は暗さに慣れるので写真よりずっと変化が少なく感じる。前ゼロは目障りなのでプログラムを修正した。写真は修正前の物
31分前
17分前
9分前
5分前
日没