腕時計
試験とか用に時計が必要だったので安いのを買った。これ1000円ぐらいだけど、文字盤もみやすいし、案外かっこよくて防水だしコストパフォーマンスが非常に高い。バンドだけがやすっぽい感じだけど、替えてもいいし、ほとんど使わないならこれで十分そう。
アナログ時計って最近殆ど使っていなかったけど、おもったより直感的に読みやすくていいですね。
このエントリを参照するエントリ
ATTiny2313 ステップ速度調節のエレキー
最初に作ったやつを少し作りなおした。ケースを加工するのが面倒だったので適当な状態で放置されていたんだけど、おさまりの良さそうな方法を思いついたので、基板から作りなおした。
回路図
殆ど前のと変わってない。ESD 保護ダイオードと、プルアップを変更しただけ
基板図
ファームウェア
ピンの配置の関係でアサインだけ変えてある。
ケース
秋月で売ってる電池ボックス 単3×4本用(フタ付プラスチック・スイッチ付)というのを使ってる。
単3は2本分の領域をエネループ用に使って、残り半分のスペースに回路を入れてる。もとからあるでっぱりとかはニッパーとかカッターで切った。電池の金具は加工する必要はなくて、ハメこまれてる位置を変えてあげるだけでよかった。元からあるスイッチはとってしまっている。
結構狭いので、圧電ブザーを削ったり基板をやすりで削ったりしてギリギリで入れてる。今回は部品配置の検討をするのに EAGLE が大変役に立った。ISP 部分以外はほぼジャンパなしでいけてる。IC ソケットをつけなければもっと高さに余裕があったんだけど、一応つけた。
スイッチがあった部分は少し広げて、タクトスイッチを入れてる。固定する方法で困るけど、グルーガンでタクトスイッチを固めてしまった。グルーガンでも結構固めになるので、力を入れても大丈夫なくらいにはなるっぽい。
ref.
このエントリを参照するエントリ
Mac で YAESU FT-450D の PCC (PCからのコントロールソフト) を動かしてみる
wine で PCC-450D を動かしてみる。CAT のリファレンス読んでたら PCC-450D がなんとかって書いてあったのでググった。
YAESU USの Files から PCC-450D Software V1.00 and Reference Manual ( 1.18 MB ) をダウンロード。
wine で実行するとエラる
err:module:import_dll Library MFC42.DLL (which is needed by L"Z:\\Users\\cho45\\Downloads\\PCC-450D_V100\\PCC-450D\\PCC-450D.exe") not found err:module:LdrInitializeThunk Main exe initialization for L"Z:\\Users\\cho45\\Downloads\\PCC-450D_V100\\PCC-450D\\PCC-450D.exe" failed, status c0000135
MFC が必要なので入れる
$ winetricks mfc42
COM ポートがどれも開けない。wine のこのへん、どういう仕組みなんだろう? と思ったら以下のようにするらしい。
$ ln -s /dev/tty.usbserial-FTB3L9UG ~/.wine/dosdevices/com1
で起動はするし COM ポートとのやりとりも一応できてるっぽい。
でもいまいちうまく表示が更新されない。のでメニューから AI1; を自分で送ってあげると更新されたりする。でも全部の情報を同期する方法がわからなかった…… あと別にPCからリグをコントロールできても嬉しくない (もっとたくさん情報を表示できるとか、そういう機能はなかった)
結局、何かしら追加の機能が欲しいなら自力で書くしかない
MOS-FET 2N7000
VGS(th) に結構バラつきがあるみたいで、データシートだと 0.8〜3V となっている。VGS = VDS ID = 1mA の条件が書いてあるから、たぶん温度変化について書いてあるんだと思うけど、よくわからない。
VDS= 5V, ID = 1mA ぐらいで、手元のをいくつか試すと。室温20度で、約2.28〜2.32V付近でスイッチする。指でつまんで温めると0.1Vぐらい下がったりする。おもしろい。
2.1V ぐらいまでスイッチできてほしいんだけど、なんかうまい手はないんだろうか。負荷側の電圧は決まってしまっているし、ほかの素子を探すしかないのかな。すごい困るというほどではないから、そこまではしたくない。
✖
✖
Watch Dog Timer
ワッチドッグタイマー。基本はプログラムが意図しない挙動をしたときにリセットをかけるためのタイマー。
例えば、「常に1秒後にリセットをかけるワッチドッグタイマー」をセットして、ワッチドッグタイマーによってリセットされる前にメインプログラム側からワッチドッグタイマーをリセットする。もしプログラムが暴走してタイマーが初期化されなくなると、ワッチドッグタイマーがリセットをかけてくれる。
用途上、メインのクロックとは別のクロックで動いている。
Brown Out Detection
電源電圧を監視して、一定より下がったらリセットをかけてくれる。
もちろん瞬間的な電源電圧変動では反応しないようにヒステリシスな感じになってる。
このエントリを参照するエントリ
チップ部品
1608 (1.6mmx0.8mm)のチップコンデンサを安いばっかりに現物見ずに買ってみたらだいぶ小さすぎた……
3216 か 2012 にしておいたほうがよさそう
ボタン電池で動く小型・低消費電力 AVR エレキー (50円 ワンチップマイコン ATTiny13A)
とりあえず完成なので、今まで書いたやつのまとめで整理。
要求
- 外に持ちだせるように小型で電池駆動できること
- 電池交換をあまり気にしなくてもいいこと
- 実用的であること
仕様
- 短点・長点それぞれ1点のメモリー
- スクイーズ
- インヒビット
- 無段階スピードコントロール (10wpm〜30wpmまで想定)
インヒビットについて
エレキーは片方のパドルを押したままだと、ずっとその符号が出続けるので、いいタイミングで手を離す必要がある。
このとき、どのタイミングで符号メモリーを効かせるかで使い勝手が大きく異なる。
- 前の符号が終わった瞬間にパドルが押されていたら即メモリーさせるか
- 前の符号が鳴っている間にパドルから手を離す必要がある
- 前のめったキーイングが必要
- 前の符号の直後のスペースが終わった瞬間にメモリーさせる
- 前の符号が鳴り終わってからも多少時間がある
- 落ちついたキーイングが必要
後者のほうが基本的に落ちついて打てる感じだけど、パドルを早く動かしすぎると変な符号が出たりする。一長一短な感じ。
このエレキーでは、これらの中間として、前の符号が終わってから、短点の長さ * 0.3 の間は「インヒビット」として押し続けていてもメモリーされない挙動にした。これは単に好みなので、ソースコードの定数で変えれるようにした。
回路図
前回とピンの使いかたが変わっているけど、あまり変更はない。
パドル入力には静電気サージ (ESD) 用にツェナーダイオードを入れた。AVR の仕様上「All I/O pins have protection diodes to both VCC and Ground」となっていてクランプダイオードが入っているみたいだけど、クランプされたのを消費する部分がどこにもないので前段で入れたほうがよさそう。
FET のゲートについてる 150Ω は電流制限用だけど、一応なくても動く。AVR のポートの絶対定格が 40mA なので 3V/20mA=150Ω。流れるとしても瞬間だけなんだけど、絶対定格を守るなら必要そう。
FET の GS 間の抵抗は入力オープン時に GS を確実に 0V にするためで、普通入れるみたい。AVR の出力ポートってローのときは吸い込み動作するしいらないんじゃ? と思ったけど、電源 OFF->ON からのタイミングとかいろいろなタイミングで入力オープンのとき不意にONになるとそのままになってしまうらしい。一応入れたほうがよさそう。
2.2MΩ の抵抗はパドルのプルアップ抵抗で、省電力のため外部に大きなのをつけてる。ただ、人体アースの電圧降下でもキーイングとみなされる(接点を触れるとキーイングされてしまう)ようになるので、善し悪しがある。
いろいろ突き詰めると部品点数が減らせない。
基板図
ステレオミニジャックでパドルと繋ぐようにしてるけど、別に直結でもいいと思う。その場合ジャック部分はいらない。
ボリュームは半固定として書いてあるけど、普通のやつのほうがいいと思う。基板取り付けの小型ボリュームだとお手軽だけどあまり手に入らないみたい。なんでもいいけど場所をとる。
ファームウェア
これだけしか書いてないけど、ATTiny13A だと 96.7% Full (990 bytes) なので、結構ギリギリです
CrossPack-AVR-20130212 の avr-gcc (GCC) 4.6.2 で開発
AVR ISP Mark II なら、Makefile 変更なしに make install で書きこみが走る。
ISP も回路を切断せずに一応動いて、書きこみもできるけど、キーイング出力にノイズが入るので注意が必要 (ブレークインを切っておくか、リグとは切断して書きこみする必要がある)。
電源と実測消費電流
- CR2032
- eneloop lite
あたりを想定
CR2032 (3V) は公称 3V、終止電圧 2〜2.5V 程度。約 225mAh 使い捨てだけど、よく売ってる。使い捨てなので限界まで動いて電池しぼりとって動かなくなるほうが効率的。
eneloop lite 2本だと公称は 2.4V (1.2*2)、終止電圧 2.0V (1.0 * 2) 程度で、単4で550mAh、コイン電池に比べると体積は大きい。lite 版のほうが用途的にはいいだろうと思う。エネループの場合普通のニッケル水素より自然放電が少ないのと、比較的高い電圧が長く続く。ただし過放電すると致命的なので、2.1V程度で動かなくなるのが理想。
最低動作電圧
本体の最低動作電圧は 1.8V 程度なので、スイッチング用の FET の Vth に支配される。
実測すると、最低動作電圧は室温20℃で2.3V 程度 (≒ FET Vth)
CR2032 で動かすなら、もっと低い電圧でも動いてほしいけど、もっとぎりぎりの別のFETにするほかない。
エネループの場合2本で2.3Vを切る (1本で1.15V) になるのは、だいたい70%〜90%ぐらい放電したあたりなようなので、これでも悪くはなさそう。
消費電流
消費はいろいろ工夫してみたので、結構減らせてる。
- キーイング中: 96μA (約 0.1mA 実測)
- パワーダウン中: 0.15μA
- (測定不可なので、ATTiny13A の仕様書から。実測では 0.0μA未満の表示だった)
電源に CR2032 (225mAh) を使った場合、1日に2時間キーイングすると仮定すると、約1152日ほど持つ。1日8時間フルタイムでキーイングしても 292日ほど持つ。1日16時間キーイングし続ける廃人でも146日ほど持つ。
eneloop lite (550mAh) の場合、容量の70%程度使うまででも、1日2時間のキーイングで1971日ほど持つ計算になる。自然容量減を考えてもそこそこ持ちそう。
消費電流減の対策
具体的には以下のような対策をしてる
- 動作周波数は内蔵 128kHz
- FET でスイッチング (なのでキーイング端子に高電圧がかっているリグでは使えない。5Vとか12Vとかなら全然大丈夫なはず)
- スピード調節用のボリュームにできるだけ通電しない
- キーイング用のプルアップ抵抗を高抵抗に
- できるだけアイドルモードで動くように
- 10秒経過ですぐパワーダウンモードに移行
- キー入力割込みで復帰するので特に違和感はないと思う
まとめ
かなり単純なものをしっかり各所考えながら作ってみたけど、いろいろと発見があった。ソフトウェアの変更がダイレクトに消費電力減に繋がったりするのは新鮮で面白い。
また、この程度の回路だと全素子の動作を考えながら作れるので、基本的なことを理解するきっかけになった。
次はもうすこし複雑なものを作りたい。
ref.