またつまらぬものを作ってしまった2022/08/21 08:27

LEDが付いてるだけの抵抗群です。 10Ωx3の30Ωを6列の並列接続すると

10 x 3 / 6 = 5Ω

つまりはUSBポートの5Vをかけると、1A流れるという単なるUSB負荷装置です。 何に使うかというと、USBテスターでバッテリーの実容量を測るのに使います。

結果から言うと、「表記されているmAhの数値は当てにならない」です。Whの方が信用できます(ほとんど記載されてないですけどね)。 バッテリーの容量記載がチャンピオンデータであることとDC-DCコンバーターのロスが製品によってだいぶ異なるので、表示より1割は少ないと思った方がいいです。 あとは、古くなったバッテリーも容量が減ってることが多いです。

今回測ったことで完全放電させて充電しなおしたので、容量が復活してるといいなぁ。

NiMHバッテリーパック充電器の製作2022/07/25 21:05

NiMHバッテリーパック用充電器

秋月電子のニッケル水素電池パック 3.6V830mAh HHR-P104(パナソニック製) が100円と安いので、これ用の充電器が欲しいと思っていました。というのも:

  • 容量としてはNiMH単四電池並みと小さいけれど、3本セットなので、バッテリーケースと込みで使用すれば、交換が楽になる。
  • 3.3V稼働可能なマイコンなら、このバッテリーで駆動できる。
  • 単四電池3本使用する自動検知ライトがあるのだけれど、うちでは単四NiMH電池は一度に2本しか充電できないので、すぐに電池交換ができない。

といった思惑があった訳ですが、 ネットで調べた結果、0.1C(容量の1/10程度の電流)で15時間ほど充電すれば良いらしい。

…が、定電流電源の方が高いし、充電停止のメカニズムの無いところに繋ぎっぱなしは気持ち悪いし、15時間で取り外すのも手間。 バッテリーの起電圧上昇に伴って電流を絞って、繋ぎっぱなしにできる構成もなくはないけれど、バッテリー毎のばらつきや季節の気温変化に伴う条件変化に完全に対応することは不可能。

いろいろ調べた結果MAX713 という専用チップがあるらしい。 しかしこのチップATmega328Pより高い!(TT。 面倒なインターフェースは必要ないので、

「ATmegaの安いチップでロジックだけ組めばいいんじゃね?」

ということで、秋月で一番安いチップのATmega8-16PUで充電器を作ることにしました。

  1. トリクル充電(0.2C位)モードで開始。 できればNiMHでない場合は充電を中止してエラー表示する。
  2. 起電力が十分になるか、ある程度の時間充電したら、急速充電モードに移行。
  3. 1C位の電流をPWM制御で流す。
  4. LED点灯の間に起電力を測定し、ーΔVや異常状態などを検知し、充電をトリクル充電モードに移行する。 Timeoutでも急速充電を終了する。
  5. 放電を防ぐトリクル充電モード(1/40C位)で待機する。 LEDの点滅周期は1s位で、PWM制御のduty比で点滅させる。

こんなロジックをプログラムしたマイコンをフリスクのケースに収められるように組んでみました。 惜しむらくは、電源供給コネクタとしてマイクロBのUSBコネクタにしたために、USBポートがケースの内側に引っ込んでしまい、 ケーブルの抜き差しはほぼしないという前提の使い方になるということですね(^^;。

このために百円ショップでUSBケーブル買い足しました(^^;;;。

ArduinoもどきモードとBitBang書き込みモードの両立2022/07/14 01:10

AE-UM232Rを使ったシリアル通信とBitBang書き込みの両立

秋月からAE-UM232RというFT232Rチップを使用したモジュールが販売されているのですが、これはよくAVRマイコンにBitBang方式でプログラム書き込みできることで知られています。 このモジュールはBitBangで使用する RI#/DSR#/DCD#/CTS# 信号ラインの出力端子があるので重宝されているのですが、いかんせん大きい。 DIP24ピンで幅が600mil(2.54mm X 6=約15mm)と、ちょっと普段使いしにくい大きさです。

私もAVRマイコン(ATmega48)に書き込みプログラムを書き込むのに使用したら、その後お役御免だと思っていました。 ところがいざマイコンプログラムを開発しようと思うと、設定変更でブートローダーを書き換えたいので、その度にマイコンチップを書き換え装置に差し替え直して、動作確認のためにマイコンベースボードに差し戻して・・・、という作業が起こり、その度にボードの設定を変更し直しとかとか、面倒だということがわかりました。

よく考えたら、AE-UM232RモジュールのBitBang書き込みには、シリアル通信のarduinoプロトコルで必要な TXD/RXD/DTR#/RTS# などの信号線を使っていません。 ならば、シリアル信号線も結線してしまえば、ブートローダー書き込みとArduinoIDEからのスケッチアップロードも、一本のUSB接続で両方できるんではなかろうかと。

結論:無事できました。 四苦八苦して結局使い方がわからなかったUSBaspLoaderより、なんぼか自由度が高かった (そのかわりArduinoIDEの設定修正が大変でしたけど^^)。 唯一の欠点は、AE-UM232RモジュールのUSBポートがmini-Bだということでしょうか(^^;。 百円ショップではケーブルが売ってませんでした(^^;;;。

USBaspの自作2022/07/12 22:31

QFPの半田付けで苦労したATmega48ですが、当初の予定通りUSBaspを参考にAVRマイコン書き込み装置を自作しました。 奥のブレッドボードはターゲットマイコンです。 「書き込み装置が無いのにどうやってプログラム書き込むの?」という、靴紐問題というかにわたま問題が出てくるのですが、そこは「FDTI」、「BitBang」で検索してください。

久しぶりのボード作成だったこともあり、 半田付けで繋がってなかったり、隣のランドと半田でショートしちゃったりと、下手になったな〜と結構へこみました。 フラックスを買いそびれていた失敗もあるんですが、配線に使った線材がブレッドボード用ので、太すぎて複数色あって回路たどりやすいメリットを全て打ち消すほど邪魔でした(^^;。 程よい太さの単線の被覆線材ってなかなかないのよね〜