自転車走行計3号機

まだ2号機は開発進行中ですが、2号機の問題点を即3号機の設計に反映させるため、設計だけは開始してしまいます。2号機の問題点であるLEDの明るさ調整機能、走行時間表示(ストップウォッチ機能)を追加します。


2007-04-15

基板のレイアウトです。2枚の基板を2段重ねにして使います。表示部は殆どLEDで埋め尽くされます。LED以外の部品は光量を測定するCdSのみです

PICT2750.jpg

下段

PICT2751.jpg

上段

暗いところと明るいところでのの表示例。暗いところではセグメントが光って見えますが、明るいところでは光っているセグメントがLED本体に溶け込んで数字の6に見えます。このLEDは表面に塗ってあった黒い塗料を紙ヤスリで削って白くした物です。

PICT2744.jpg

暗い場所

PICT2749.jpg

明るい場所

自動配線には約1時間かかります。

PICT2752.jpg

EAGLEのライブラリーにあるPIC18F8722はポート番号順にピンが並んでいるので、基板上の配線が交差しないように配線すると回路図の配線が複雑に交差してしまいます。まだピンに空きがあり回路を載せられるのですが、最適な配線がイメージできません。

PICT2756.jpg

ピンがポート番号順に並んでいる

PICT2754.jpg

配線が交差しすぎで解りにくい

そこで急遽、現物と同じイメージの部品を作りました。

PICT2758.jpg

配線し直しに5~6時間かかりました。

PICT2767.jpg

LEDは横から見るとこんなに背が高い。チップLEDを使用すれば高さ2mm以下に出来るので秋月電子でチップLEDを購入。いつものことで、LED以外にもいろいろ買ってます。

PICT2855.jpg

もっと平べったくしたい

PICT2836.jpg

買い出し

4種買ってみました。一番大きい物が3.2mm×1.6mmサイズ。点灯させると目に焼き付くくらい眩しい(実際焼き付きます)。輝度は十分だがちょっと大きすぎる。直ぐ下の物は暗くてダメ。さらに下の2個は青色で輝度はほぼ同じ。日中は暗いかもしれないが7セグLED程度の輝度はあるので使えそう。さらに高輝度な物は探せばいくらでもありそう。

PICT2845.jpg

上のLEDのデータシート。この順番で並んでます。

PICT2852.jpg

1セグメントを2個のLEDで構成する配置です。1桁につき14個のLEDを半田付けするので強い精神力が必要。半田付け用のジグを作らないとやってられないかも。

PICT2857.jpg

水晶発信モジュールも面実装タイプを使用。

PICT2858.jpg

明るさに応じてLEDの輝度を変化させるために小型のCdSの機能確認。直射日光が当たると160Ω、真っ暗だと1MΩと広範囲に抵抗値が変化します。

PICT2873.jpg

オペアンプを使用して電圧増幅する予定でしたがCdSの抵抗値があまりにも大きく変化するのでオペアンプは不要になりました。MicrochipDIRECTでSOT23サイズの小型オペアンプを買っておきましたが無駄になりました。

PICT2877.jpg

回路図

PICT2866.jpg

小さいオペアンプ

バッテリーが小さくなるので電圧監視ICも取り付けます。これもMicrochipDIRECTで購入した物。上のオペアンプと同じSOT23サイズ。

PICT2879.jpg

オペアンプのデータシート

PICT2883.jpg

現物

配線の状態

PICT2871.jpg

下段

PICT2870.jpg

上段

半田付けできるか???

PICT2885.jpg

OLIMEXに発注かけました、走行計は右のパネルの真ん中あたりに配置。それ以外はDROや回転計などいろいろ。デザインルールが8milなのでいつもより製造に時間がかかるはずです。

PICT2919.jpg

2007-05-25

5/8に発注をかけて、5/16に発送した旨の連絡がありました。5/25基板到着。裏と表。サイズ約40×40なので、ディスプレイにも依存しますがほぼ実物大です。

PICT3131.jpg

基板表面

PICT3133.jpg

基板裏面

2009-07-13

2年近く放置してしまっていた自転車走行計の製作再開。

PICT9967.jpg

0.5mmピッチなのでフラックスを使ってしまいます。もちろん半田付けした後はアルコールにドブ漬け洗浄します。

PICT9981.jpg

フラックスを使うとやはりきれいに半田付けできる。

2009-07-14

大分踊ってしまった。側面から漏れた光が基板を照らして輪郭がはっきりしない。それに並列接続されているので明るさがばらついてしまっている。明るさのばらつきは電圧降下の小さい赤に変更すれば少しは改善されると思うが手間がかかる割に見た目が良くない。
昼間使うことを考えると液晶が良いのだが、品数豊富なDigi-Keyで調べてもこれに使えそうな小型の液晶ディスプレイは皆無。有機ELならちょうど良いサイズの物があるが、自発光式はLED同様昼間見えづらい。

PICT9987.jpg

セロハンテープにチップLEDを貼り付ける。ひっくり返して基板に載せて半田付け。テープは小手の熱で溶けるので邪魔にならない。

PICT9988.jpg

3に見えるけど... なんか違う

2009-07-15

上手く出来そうにもないので液晶ディスプレイを探す。数時間かかったが良く探せばそれなりの物が見つかる。

PICT9990.jpg

ちょっと大きいが使える。これはDigi-Key

PICT9991.jpg

Digi-Key以外にも日本向けに発送できる部品屋が有るみたいだ

ストロベリーリナックス(リナックスという名前が良くないと思う、)で携帯用の液晶が売っている。ノキアをばらした廃品のよう。1個調達してこれを使用することにする。

PICT9994.jpg

携帯用液晶の単体販売

PICT9997.jpg

インターフェースはI2Cもどき? I2Cそのものか?

サンプルソフトが豊富なので表示部分を作る時間が短くて済みそう。表示部分のインターフェースが簡単になると回路がとてもシンプルになるので片面基板でも作れるかも知れない。ディスプレイを変更するついでにUSB対応にしてしまおう。

PICT0001.jpg

サイズは128×128

PICT9999.jpg

サンプルソフトは豊富

データシートを見るとインターフェースはSPIの様だ。SPIは双方向だが液晶ディスプレイはデータを吐き出さないので出力ピンが省略されている。USBを使うので定番のPIC18F2550で配線し直し。SPIとI2Cを共存させるのは気分が悪いのでEEPROMもSPIインターフェースの物にする。

PICT0002.jpg

回路はシンプルになった

2009-07-16

思った以上に真っ黒です、たぶんバックライトがないと使えません。夜間専用機になってしまうので昼間使えそうな物を探さないといけません。

PICT0006.jpg

通電していないときの色は真っ黒....ということは...

PICT0008.jpg

コネクターはこんなに小さい

ノキアの白黒液晶モデルのジャンクなども入手できるようです、秋葉原に行ったついでに物色してきます。

PICT0005.jpg

液晶ディスプレイ専門店? 秋葉原に店舗もあるようだ

2009-07-25

電気工事士試験の帰りに秋葉原に行ってLCDを仕入れてきた。NOKIA用。バックライトがないので薄暗い峠道では見づらいか? 車がすれ違う余裕のない峠道は木に覆われていて薄暗い。大垂水峠(東京)や箕面の猿山(大阪)では問題ないと思うが和田峠(東京)や鷹峯(京都)なんかはバックライトが必要になる可能性有り。

PICT0065.jpg

これなら昼間でも見えそう。Nokiaの白黒LCD

裏面を見てびっくり。端子らしき物がない。デジカメで拡大撮影して解った。基板側の端子に押しつけるタイプだ。

PICT0069.jpg

端子は???

PICT0068.jpg

うへっ

2009-07-27

特異な端子なので基板を作ることにした。100×100感光基板からブレッドボード用の基板2枚と実験回路基板1枚が取れた。

PICT0072.jpg

側面から光をあてるタイプのようだが裏面を光らせても良い

PICT0073.jpg

誤配線があるかも知れないのでブレッドボードで検証できるようにアダプター基板も作っておく

2009-07-28

新しい感光基板を使っての初めての失敗です。ベタパターン部の感光剤が飛んで塩化第二鉄溶液に溶けてしまいました。配線部分のパターンは切れてないのでこのまま使います。

PICT0079.jpg

汚い基板が出来た

2009-08-02

長穴は0.6mmのドリル穴を7~8個並べて、プラモデル用のニッパーとアートナイフを使って繋ぎました。

PICT0085.jpg

位置決めの出っ張り

PICT0118.jpg

長穴あけ

手作りしなくてもこのLCD用の基板を購入すれば良かったのですが、最終的には両面プリント基板を発注しないといけないので、そのための準備作業です。

PICT0121.jpg

端子はハンダメッキ。効果の程は不明。

PICT0124.jpg

完成したブレッドボード用実験基板

2009-08-04

このLCDは携帯電話用なので電源は4.2Vです(たぶん)。この中途半端な電圧を出力できる電源が無いのでブレッドボード用の電源基板を作りました。今後5V以下の中途半端な電圧を使用した回路が増えてくると思われるので1.2V,1.5V,3.0V,3.3,4.2Vなどよく使いそうな電圧のものを全て用意しておくことにします。

lm317.PNG

基板パターン

lm317brd.PNG

基板とLCDの接触の問題かコマンドを送らないと全く動かないのか解りません。消費電力が大きければ電源装置の電流計が動くのですがピクリともしません。

PICT0148.jpg

電源を繋いだだけでは何の反応も無し

2009-08-05

簡単な回路のはずが設計通りの電圧が出ません。抵抗値の計算を間違ったかと思いEXCELワークシートで計算してみたが間違いない。基板のショートや抵抗値をチェック。R1端子間の電圧は1.25Vのはずだが1Vに満たない。 ...LM337???? よく見てませんでした。パーツケースの中に4個もあったので、LM317だと勘違いしていました。

PICT0169.jpg

出力3.7Vのはずが7V出てる

まとめて作った方が楽なので4個作成

PICT0176.jpg

3.3Vと3.7Vを作る。残り2個の電圧は未定。

PICT0174.jpg

片面基板なので両オスピンはこんな具合に半田付け

小型に作ったのでブレッドボード上での専有面積も小さくて済む

PICT0172.jpg

こんな具合に使う

2009-10-26

Nokia5110の日本語情報はかなり少ない。英語ならたくさんあるが、それならデータシートを見てしまった方が早い。この液晶はフィリップスのPCD8544というLCDドライバーを使用している。

PICT0678.jpg

ブレッドボードで回路を組んで実験。左がデータシート。文字表示タイプでもグラフィックタイプでも液晶表示器はコマンドを理解するところから始めないといけない。

2009-10-27

自作基板の接触不良を疑って1週間前に秋葉原に買い出しに行ったついでに仕入れておいたキャリーボードで試してみた。原因はチップセレクトがLowでアクティブになると言うことに気づかなかっただけ。自作の基板でも動作確認できた。あとで流用しやすいようにに別ページこのLCDの情報を纏めておく

PICT0682.jpg

キャリーボード付きのLCDで実験。

PICT0684.jpg

自作基板でも動いた

続いてEEPROMの接続テスト。3線式というのでインターフェースはSPIだと思っていたが違っているようだ。3ビット「101」に続けて11ビットのアドレス、続けて8ビットのデータを送信せよ とある。合計22ビット。8ビットで割れない。

PICT0688.jpg

秋月で買った3線式のEEPROM

最終的にはMicrochip社のSPIインターフェース1MビットEEPROM(24AA1024)にする計画。このEEPROMでは仕様があまりにも違いすぎるので24AA1024を仕入れてからEEPROM廻りのコードを書くことにする。

PICT0690.jpg

8ビット単位で送受信する方式ではないのでPICのSPIインターフェースが使用できない

PICT0689.jpg

SPIインターフェースのEEPROMならこんな感じになる。コマンドやデータが8ビットで区切れる。

フォントはEXCELを使って作る。16ビットのフォントならLCDに3行表示できる。欲しい情報は...
 -前回走行時との距離差
 -前回走行時とのタイム差
 -経過時間
速度もあった方がよいが市販のスピードメーターと併用するので必要性は低い。

PICT0696.jpg

高さ16ビットのフォント

2009-10-28

フォントデータを送り込んでみると綺麗に表示されたりされなかったり不安定。試しに2台を並列に繋ぐと両者ともに全く同じ画面になる。ぐちゃぐちゃ具合も全く同じ。...ということはプログラムのほうに何か原因があるはず

PICT0700.jpg

何故か化ける

PICT0704.jpg

2つを並列に繋ぐと両方とも全く同じになる

ロジックアナライザーで見てみると変な波形を発見。多くは正しい波形なのだが、一部おかしな物が混ざっている。LCDはクロックの立ち上がりでデータの1/0を判断するのでCLOCKの立ち上がりでDATAが変化してはいけない。

PICT0705.jpg

上段がDATA,2段目がCLOCK。CLOCKの立ち上がりでDATAが変化している。

mikroBASICのSPI関数を使用するのを止めてSPI関数を作り直したら正しく動いた。

PICT0714.jpg

正しく表示された。ついでに白黒反転させてみた。コマンドを1バイト送るだけで白黒反転できる。4カ所点灯するだけだがバックライトの輝度は必要十分。5Vでも3.7Vでも十分使える。

2009-10-29

EXCELでレイアウトを作る。
  前回走行時との距離差
  現在の走行地点において前回より早いか遅いか
  前回走行時との時間差
  スピード 計測タイム
の順番で表示することにする。タイヤが一回転するたびに殆ど全ての情報を更新する必要があるのでLCDの表示域と同じだけのバッファーをPICのRAMに確保する方式がシンプルでよい。

PICT0722.jpg

レイアウト確定

2009-10-30

レイアウトが出来たので液晶装置に送り込んでみる。ビットマップ表示のプログラムが一発で動くことは殆どない。1時間程度バグ取りをして完成。

PICT0731.jpg

バグ取り前の画面

PICT0733.jpg

完成画面。最下段の小さい文字は走行中には読めない。

画面の更新間隔を計測してみた。時速100kmで走行しているときにタイヤ1回転にかかる時間は77ms。計測すると107msかかっているので処理が間に合わない。画面の更新以外にも3個付いているEEPROMにデータを書き出す時間が約15ms必要になる。現在のクロックは10MHzなので4xPLLにすれば40MHzに出来る。40MHzの時は全ての処理を合わせて53msで完了出来るので時速100kmでもまだ余裕がある。40MHzでUSB接続したことがないので接続実験が必要。

PICT0734.jpg

画面1回分の更新時間は107.52ms

PICT0735.jpg

SPIでデータを送り込むのにかかっている時間は14ms

2009-10-31

PIC18シリーズなのでPLL2倍、4倍のクロック設定しかないと思ったが、PIC18F2550はもっと複雑な設定が可能だった。しかも最大周波数は48MHz。設定方法はデータシートを2~3ページ読まないと理解できない。USB接続可能なPICはUSBのクロック生成のために周波数設定が複雑になっているようだ。

PICT0737.jpg

PIC18F2550のクロック設定。

以前USBの接続実験をしたときの物がmikroBASICのV7.2ではコンパイル不能になっていた。再度サンプルプログラムを動かしてみる。動いたけどバッファーサイズを変更すると動かなくなる。
走行中にUSBは使用しないのでUSB関連機能はOFFにして電力節約したいのだが、USBから電源供給されているか否かの切り分けはどうすればいいのだろう? 電源電圧がUSB->5V,バッテリー->3.7Vなので電圧監視ICを外付けすれば容易に実現できるがソフトウェアで判断する方法は無いのだろうか?

PICT0738.jpg

USBだけの回路を48MHzで動かしてみる

PICT0739.jpg

Windowsとの通信テスト

2009-11-01

データシートにUSB電源供給/セルフ電源供給の切り分け回路図があった。結局外付け回路が必要。データシートのものはセルフ電源優先方式のようなので少しアレンジが必要。

PICT0747.jpg

データシートにサンプル回路があった

PICT0751.jpg

電源電圧がダイオードの順方向電圧だけ下がるので3.3Vで動かしてみる。特に問題なし。

USB接続するならUSBからバッテリーの充電も可能になる。充電ICは1個¥100もしないので追加してしまうことにした。リチウムイオン/リチウムポリマー電池の充電ロジックはシンプルで良い。充電ICのサイズは面実装タイプのトランジスターと殆ど変わらない。

PICT0750.jpg

充電回路も追加。トランジスターは2SA1015Yを使ってみたが黄色い矢印の経路で電流が漏れる。FETに変更すればOKか? Xマークはバッテリーの端子。

2009-11-27

テスターで抵抗値をはかっているだけのいい加減な確認だが、FETは殆ど電流が漏れないようだ。実験に使ったFETは秋月電子で仕入れたPチャネルMOS-FETのFDS4935A。

PICT1049.jpg

FETは電流が漏れないようだ

PICT1043.jpg

充電ICは発注済みだが、納期が来年???? 生産調整かな~

ミニUSBのミニコネクターは5ピンだった。通常のUSBは
 1:電源
 2:D-
 3:D+
 4:GND
だが、ミニUSBは
 1:電源
 2:D-
 3:D+
 4:ID
 5:GND
の構成。IDはUSB On-The-Go(OTGと略すようだ)用の信号線でパソコンを使用しないでUSB機器同士を繋ぐときに使う。通常の回路なら何も繋がない。

PICT1051.jpg

USBは4ピンのはずなんだけど...5ピン?

2009-11-28

EEPROMの接続テスト。こんなの楽勝。 ...と思っていたら動かず。

PICT1053.jpg

SPIインターフェースのEEPROM 25AA1024

結局、原因は
 1.書き込み許可コマンドを送ってなかった。I2CのEEPROMにはこんなの無かったぞ。
 2.PICからクロックを送り出さないと、読めない。クロックを送り出すためには書き込み動作をする必要がある。
の2点。結果を素子シリーズに纏めておいた。

PICT1058.jpg

シンプルな回路で実験

PICT1063.jpg

PICkit2で書き込みをして、信号を解析。 変なコマンドを送ってる!! データシートを見るとWriteEnable。

2009-11-29

周辺機器の接続確認が出来たので今度は小型化。チップ部品を使うと液晶ディスプレイとほぼ同サイズに仕上げることが出来る。

PICT1085.jpg

44×40サイズに収まった

PICT1084.jpg

LEDはこの3カ所の丸くえぐられた部分に配置される

手持ちの水晶の中には面実装品の小さなものは無かった。面実装品なのにコメツキバッタくらいの大きさだったり、電源電圧が5Vだったりして使えない。秋月の部品は安いが小型化を意識すると使えない物が多い。

PICT1081.jpg

手持ちの発信器&水晶。全部秋月電子で仕入れた物。

PICT1082.jpg

3.2×2.5mmサイズの水晶発振器。Digi-Keyで探すとこんな小さい物がある。時間を計測するので周波数の安定性だけでなく絶対精度が必要。20MHzではダメで、20.000MHzとか言う具合に小数点以下の精度が欲しい。

2009-11-30

省電力を考えると、LCDの照明やホールセンサーの電源を切らないといけないので回路を追加。小さい基板なのでこれだけで基板の発注をかけるともったいないので一緒に面付する物を考えよう。何にしようか...

PICT1096.jpg

回路を見直して再度レイアウトやり直し。部品点数があと数点増えると自働配線がうまくいかなくなる。

2009-12-19

2月納期になっていた充電ICが届いた。Microchip社の納期表示は恐らく最長納期。殆ど例外なく予定納期より早く届く。
5V入力だと500mA流しても発熱は0.5W程度。特に放熱器は無くても良い。6V入力にするとさすがに放熱器無しというわけにはいかない温度になる。

PICT1228.jpg

この充電ICの最低電流15mAでテスト。

2009-12-29

OLIMEXに発注するためにレイアウトを再度見直し。LCDの外側の金具と基板のパターンが接触してはマズイので金具を避けるようにパターンを通さなければならない。実装密度はそんなに高くないが配線完了まで丸一日かかってしまった。

PICT1341.jpg

自働配線がなかなかうまくいかない。