アマチュア無線や電子工作,バイクの話などを徒然なるままに書き散らすメモ程度のblogです.


by jq1ocr

カテゴリ:マイコン・電子工作( 263 )

DCA Pro が wine でいけたら

DCA Pro ってのは,半導体アナライザ DCA75 で使用するソフトのことです.
d0106518_2337182.jpg
DCA75

これを USB で PC につなぐと,特製カーブのトレースができちゃうのです.ただこのソフトが Windows にしか対応していません.

wine で動いたらなぁと思うのですが,本体のインストールが終わって,ドライバのインストールに移るとエラーが出ます.
d0106518_23391772.jpg

試しに DCA Pro を立ち上げてみますと,こんな感じ.
d0106518_23394617.jpg

左下の赤い部分にエラーメッセージが出ています.詳しく見ると
d0106518_23401814.jpg

Not Connected になっちゃうわけです.もちろん Mac 側では認識されていますけどね.
d0106518_23424730.jpg

他に使いたい Win ソフト(といっても zlog くらいだけど)は wine で足りてるので,このためだけに Win 買うのもゴミになるだけでバカバカしいし....Peak 頑張ってくれないかな〜.
[PR]
by jq1ocr | 2016-12-30 23:50 | マイコン・電子工作 | Comments(0)
秋月でルビコンの電気二重層キャパシタの扱いが始まりました.なんと長野県で作られているということで立派な日本製です.笑 値段も悪くないですね.
d0106518_13534123.jpg

こちらは 10F 2.7V です.容量はいいですけど,耐圧の方がなんか微妙な値ですよね.3.3V いけたらいいのにと思いますが,定格を超えて使うのは危険かと思います.というのも,同社の製品で 3V 耐圧のがあるのですが,それは最大でも 3.3F なのです.ですから,2.7V と 3V の間には結構な壁があるのではないでしょうか.詳しく調べたわけじゃないですけどね.

ちなみにこういう製品の用途として,まず思いつくのはメモリのバックアップあたりかと.実際にどの程度いけるか考えてみましょう.具体的な製品としては恒例の秋月 GPS を考えます.
d0106518_13553693.jpg

こちらの仕様書を見ますと,バックアップ電源の電圧は最低 2V とあります.また電源遮断時のバックアップ電流は 6uA が typical です.

10F のキャパシタに 2.7V で満充電しますと,たまる電荷は 27C です.ここから2Vに低下するまでに引き出せる量は差し引き 7C.これを 6uA で割ると放電時間で, 1.17×106sec ですから,13日半となりますね.ざっと半月でしょうか.

GPS の almanac でさえ一週間くらいの有効期間しかありませんから,それだけもてば御の字ですね.ただしバックアップ電池のつくところにそのまま接続しても充電はできません.回路図を見るとショットキーの逆流防止が入っています.
d0106518_135637100.jpg

シンプルな解法として電源ラインから Di を過ぎたところに抵抗を介して,バッテリと入れ替えたキャパシタに充電するようにするのはどうでしょうか.要するに下図のようにするわけです.
d0106518_1356509.jpg

回路動作的には SBD2 を外して,そこに入れてもいいのですが,そこにはまるサイズは耐電力が厳しいでしょう.

さて,充電が進むと抵抗による電圧降下が小さくなり,電源ラインの 3.3V からショットキーの順方向電圧降下 VF を引いた分の電圧がかかります.この値は流れている電流によって異なりますが,GPS の定格から最大で 200uA と推測されます.すると使用されている部品の特性から VF は 0.1V くらいとなります.結局キャパシタに 3.2V かかることになるので,この回路で 2.7V 耐圧のこのキャパシタを使うのは危ないですね.

レギュレータを使えばよいのですが,店頭に並んでいるのから選ぶと 2.5V か 2.85V になってしまい微妙.それにそこまでやるなら電池でいいじゃん,となりそうなので,抵抗作戦をつづけるべく,キャパシタの方を2直にします.笑 要するに 5.4V 5F というわけです.耐圧が無駄なので,少し安い 2.5V 耐圧のに入れ替えてもいいですね.

一応この条件で使用時間を計算しますと, 5F で 3.3V から 2.0V までですから 6.5C です.容量は小さくなりますが,電圧が上げられる分でカバーできるのですね.ほとんど同じ時間使えそうです.

さて話を抵抗に戻します.ここの抵抗値の決め方ですが,小さくすると充電は早く終わるけども電源容量が必要になる,すなわち電源に負荷がかかります.逆に大きくすると充電時間がかかります.コンデンサの端子電圧 VC は電源電圧 V として(SBD1 の電圧降下はここでは無視)

VC = V (1- exp(-t/CR))

です.満充電するには無限大の時間が必要なので,ここでは仮に電源電圧の 90% まで充電できる時間を考えます.すると上の式から10Ωで2分,1kΩで3時間半かかるようです(計算合ってるかな?).2分ならいいかと思いたいですが,充電初期の最大電流が 300mA くらいになってしまうので,かなりの負荷ですね.おまけにボードに使用されているショットキーの最大定格が 200mA なので,これを超えてしまいます.100Ω くらいにしておいて,最初は長めに電源を入れておくってのがいいかもしれませんね.毎日使うならともかく,たまにしか使わない場合,電源に電池を使ってるとちょっと考えないといけませんね.

え?結局電池の方がいいんじゃないかって?いやぁ,それ言っちゃうと話が終わっちゃいますから今まで言わなかったけど,実は私もそう思ってますよ.笑
[PR]
by jq1ocr | 2016-12-18 07:30 | マイコン・電子工作 | Comments(0)

tinyGPS

ある地点を表す座標としては緯度経度がありますね.しかし,桁数も多くなりますし,そもそも区域を表すなら「地域メッシュコード」のほうが便利なケースもあります.そこで GPS ユニットからの位置情報をメッシュコードに変換するガジェットを tiny85 で作ってみました.以前のエントリが伏線というわけではありませんが,シリアル受信と TWI 通信を使っています.
d0106518_20545426.jpg

上段に時刻,下にメッシュコードを表示しています.JIS X 0410 準拠の標準地域メッシュを表示しており,第三次メッシュまで使うと概ね 1km 四方の領域を表します.例えば写真の例は秋葉の書泉付近で 5339-46-32 となります.(tinyGPS は 8×2 LCD なので 53394632 と表示)
d0106518_0183373.jpg


ちなみに GPS ユニットは秋月のこちらを使用しています.
d0106518_19281396.jpg

モジュールは太陽誘電の製品で,みちびきにも対応しています.キットにはバックアップ用の電池が付いていましたが,それは使っていません.というのも,スポット的な使い方をするためです.

具体的にはバックアップ機能で保存されるのは,almanac と ephemeris 等のデータです.前者は GPS システム全体の軌道情報で有効期間は一週間ほど,後者は個々の衛星の精密な位置と時刻情報で数時間しか有効ではありません.両者が有効な場合(ホットスタート)は1秒で再起動可能ですが, almanac だけになってしまうウォームスタートには34秒必要です.ところが,両方失ったコールドスタートでも42秒なので,数時間以内に再測定するような用途でない限りは,バックアップ電池はあってもあまり御利益がないというわけなのです.

仕事関連なので詳細は割愛しますが,あとはデータを保存する方法として SD カードでも使えれば便利だと思うので,その辺をマスターしたいと思います.
[PR]
by jq1ocr | 2016-12-16 21:15 | マイコン・電子工作 | Comments(0)

tinyTalker の動作確認

自作のリスナでの動作確認は出来ているのですが,一応 Mac でも動作確認をしておきましょう.Mac 側で使うのはこちらの変換ケーブルです.
d0106518_128242.jpg

FTDI USB-シリアル変換ケーブル(3.3V)[TTL-232R-3V3]


これを Mac にさして使えるか確認してみましょう.
$ ls /dev/tty.*

です.すると,認識されているデバイスが出てきます.
d0106518_12221512.jpg

下の usbserial 云々ってのがそうです.大丈夫そうですね.末尾の大文字アルファベット部分はシリアルナンバーも入っているので製品固有です.秋月のページには Mac に対応しているとは書かれていませんが,少なくとも MacOSX 10.11.5 ではドライバなど別途インストールしなくても使えるようです.

次いで screen コマンドです.
$ screen /dev/tty.usbserial-FTGCXCDY 9600

前述の通り,途中の FTGCXCDY の部分はものによって異なるので上をコピペしても無意味ですからね.笑 するなら screen コマンドの出力をしましょう.ちなみに最後の 9600 が通信速度です.tinyTalker は現在 9600bps 固定なのでこれでOK.

すると...
d0106518_12155834.jpg

大丈夫そうですね.

ついでにオーバーシュート防止に入れたダンパーの値が妥当かどうかもオシロで見ておきましょう.
d0106518_12384911.jpg

こっちも大丈夫そうですね.

というわけで,ケースに入れましょう.
d0106518_1638578.jpg

秋月の袋です.え?ずさんじゃないかって?いやぁ,大きいのだと紙袋(それも秋月の)がケースって場合もあるので,それよりはだいぶいい扱いではないかと.笑
[PR]
by jq1ocr | 2016-12-15 21:40 | マイコン・電子工作 | Comments(0)

tinyTalker

Arduino で作ったシリアルトーカですが,個人で Arduino を今後使うつもりがないのと,そもそも大げさなので,基板の切れ端に,これからだぶつきそうな(笑) tiny13A で作っておきました.最初はスイッチでボーレートを変えられるようにしようと思ったのですが,用途も限られるし,どうせそこまで使わないだろうと思って 9600bps 8ビット,ノンパリティ,ストップビット1で固定です.
d0106518_2342220.jpg


PB0:送信中に点灯する LED, 220Ω
PB3:シリアル出力,ダンパー 1kΩ
PB4:NC

あ,そうそう,ロジアナではわからなかったのですが,オシロでみたらオーバーシュートしてたので,ダンパー入れてみました.ドライブ能力は結構あるので,値は手元にあるものでテキトーに大きめのをつけていますが,適切かは考えていません.一応動作は確認しています.チップ抵抗を裏側につけてるので写真には見えませんけど....ソケットなんかいらないといいたいところですが,設定を変えたくなった時に書き込み治具が挟めるように履かせています.
[PR]
by jq1ocr | 2016-12-15 06:15 | マイコン・電子工作 | Comments(0)

のんびり屋さんな I2C LCD

前回までのあらすじ:0から9の文字をシリアルで繰り返し吐きまくるトーカを Arduino で,そしてそれを任意の GPIO でソフト的に受信して LCD に表示するリスナを 328 で作ってみたのですが,はてさて今回はどうなりますか.

シリアルリスナを tiny85 に書いてみたのですが,表示は化け字の嵐になりました.これはタイミングを取り損なっていることが原因と考えられます.

9600bps で流れ込むデータの表示も4ビットパラレル LCD では問題ありませんでしたが,I2C はそこまで速く詰めてない所為でしょう.要するに1字受信で1字書くというのでは間に合わないのです.これを確認するために,一旦百字くらい溜め込んでから表示するというようにしてみました.85はSRAMも大きいですから可能な芸当です.結果は...
d0106518_20275398.jpg
ビンゴですね.

まあ高速で流れ込むデータをリアルタイムで LCD に表示できるようにしたところで使い道はないので,これはこれでいいかな.

ともかくこれで tiny85 で I2C とシリアルができるようになったので,何かできそうな気がしますね.
[PR]
by jq1ocr | 2016-12-14 06:07 | マイコン・電子工作 | Comments(0)
ですよね.はい,ちゃちゃっとしましたよ.
d0106518_1521781.jpg

mega かよって声が聞こえそうですが,LCD の付いたテストボードを使っただけで,ポートは GPIO PB0 です.なので,LCD こそ異なる I/F が必要ですが,シリアル部分は tiny85 でも問題なく動くはずです.

0 に落ちてから 9 ビット目が 1 になる組み合わせが続くと,しれっと化け字を吐き続けますが,一度スタートビットがつかめれば,あとは大丈夫っぽいのでこのあたり注意すれば問題なく使えるかと思います.

#define S_HIGH bit_is_set(PINB, PINB0)
-----
while(1){
while(S_HIGH){}
data=0;
for(i=0;i<8;i++){
_delay_us(107);
if(S_HIGH)data|=1<< i ;
}
_delay_us(107);
if(S_HIGH)lcd_write(data);
}

中身の delay の 107us の話です.9600bps の場合の1シンボルは計算上 104us 強ですね.Arduino シリアルトーカーの場合 0 〜 9(文字コードは 0x30-0x39) を連続で出しています.オシロで波形を観測すると,こんな感じです.
d0106518_17251665.jpg
0x0011xxxx ですから OK ですね.プログラム上,読み始めを falling edgeにとっており,時間をおいて次を読む場合,これよりやや長い時間後にしておかないと,手前のビットを読んでしまう恐れがあります.様子を見ながら伸ばしていって今回は 107us になりました.もちろん状況によっては値は異なるでしょう.続くとずれていきそうですが,スタートビットで同期をとっているのでこの位の差であれば1バイト中に累積した遅延はリセットされます.
[PR]
by jq1ocr | 2016-12-13 21:50 | マイコン・電子工作 | Comments(0)
tiny85 はいわゆる旧来のシリアルピン(TXD, RXD)がないので一工夫が必要です.とりあえず受信だけしたいのですが,ちゃんと動いているか確認するために,外部からシリアルの信号を入れてやりたいと思います.そのため下ごしらえとして送信装置(serial talker)を作ることにしました.

簡単なものですから tiny13A ででも作ってもよいのですが,卵が先か,鶏が先かで,それがちゃんとした信号を出しているかを確認する必要がありますし,そもそも受信側を作りたいためのとりあえずの理由ですから,基板を起こすのも面倒.というわけで,手元にあった Arduino UNO を使うことに.笑

こんなスケッチを書きまして...
d0106518_12422231.jpg

upload します.これは数字の0から9までを無限ループでシリアル送信するだけのプログラムです.

これをロジアナで見るとこんな感じ.
d0106518_12435576.jpg

数字0のアスキーコードは 0x30,1は 0x31 です.ちゃんと出てますね.このくらいのことなら Arduino では簡単にできるけども,やりたいことがすべて簡単にできるわけではないので,やっぱりサブですねぇ.まあこれは余談ですが.

というわけで,これが tiny でも受けられれば,シリアルを実装できた,ということになります.
[PR]
by jq1ocr | 2016-12-13 21:30 | マイコン・電子工作 | Comments(0)

骨折り損な TWI

tiny85 の件です.結局ピンアサインが気に入らず,USI は使わずに従来通りソフトウェア TWI を使うことにしたのですが,どうも BME280 が動いていないように見えます.最初は TWI の実装が不完全なのでは?と気になってしまい,散々タイミングなどを見直したのですが,不審な点が見当たらず.....

つつくところが違ってる感が漂ってきたので,他の I2C デバイスもつけて確認しようと,同じくしまいこんでいた LPS331AP を引っ張り出してきました.

すると,なんとこっちはあっけなく通信できました.というわけで,TWI の問題ではなくて,BME280 が壊れているという可能性が否定できなくなってきました.
d0106518_1241956.jpg

表示の 255 は BME280 から読み取った ID ですが,ack がないので通信できてはいません.数値はプルアップしているからそうなっているのであって,結局動かせていないことを示しています.次の 187 は 0xBB になりますが,LPS331AP からの正しい応答です.

ただ LPS331AP も気圧や気温のデータは出てくるのですが,なにかおかしいです.データ長が長いため,プログラム側でも一工夫するわけですが,そこでつまづいているのかそれにしても変なので,もしかして,こっちもおかしかったりして,なんて思ったりもしています.苦笑

余談ですが,ソフトウェア TWI だけで結構な容量を食ってしまうわけですが,tiny85 はメモリが大きいので,その上 float とかを使ってプログラムが大きくなっても書き込めてしまいます.この気楽さ,もう tiny13A には戻れないかも.笑
[PR]
by jq1ocr | 2016-12-12 21:30 | マイコン・電子工作 | Comments(0)

大食漢な LCD

こんな豪勢な LCD で試作をしておりました.
d0106518_2137042.jpg

20字4行,フルスペックですね.これが煌々とバックライトがつくのです.なんとなく熱くなってる気がしたのですが,気のせいじゃなくて結構な大食いでした.

うちでは試作用の電源で 5V のものはエネループを使っています.こういうケースに...
d0106518_21384722.jpg

こんなクリップ
d0106518_2139944.jpg

をリードにつけておけば,ほぼ 5V でて便利なわけです.

試作して虫取りして...といっても,そんなにずっと使うわけではないので,滅多に充電してませんでした.ところが前述の液晶を使ったもので作業していたら,コントラストが落ちてきて,あれれ?と思って電圧をみたらかなり落ちてました.充電中は乾電池をつけて作業したのですが,それもしばらくしたらなくなってきました.どうやらこの LCD (というか,バックライトの LED)がバカ食いしてるみたいなのです.

虫取り中はいろんなデータが表示できた方が便利なのですが,終わったら表示も最小にして LCD も小さいのに変えた方がいいのかもしれません.ただこれは極性が他と逆だったりするんだよなぁ.

というか,バックライトの制御が簡単にできたらいいのですよね.もちろん LED に外から電源を与えるようにすれば実現はできるのですが配線が多くなってしまいますしね.I2C の LCD もバックライトコマンドがあったらいいのに.
[PR]
by jq1ocr | 2016-12-11 06:30 | マイコン・電子工作 | Comments(0)