2011/09/05

PSoC3で電源電圧検出

製作している電装系の基板には、電池電圧の監視機能を搭載する予定です。

しかし、アートワーク時に電池からPSoC3への結線を忘れていたので、何らかの工夫をしないと電池の電圧を測ることができません。
最も簡単な解決策はジャンパを飛ばして配線してしまうことですが、PSoC3/5に内蔵されている電源電圧監視機能で対応できそうなので試してみることにしました。

PSoC3につながる電源は、LiPo管理IC(BQ24072)からの出力をリニアレギュレータ(TAR5SB33)で3.3Vに定電圧化するだけの単純な回路です。
また、使用しているレギュレータには入力電圧が3.6Vを下回ると出力電圧もそれに従って低下する特性があります。

そこで、PSoC3の電源ピンの低電圧検出機能を使ってバッテリー電圧低下の目安にすることにしました。

詳細はPSoC3のレジスタマップに譲りますが、以下のようにレジスタ設定することで低電圧検出機能を使うことができます。
また、デフォルトの状態では電源低下割り込みはリセットを発生させるので、リセットを無効にしています。

CY_SET_REG8(CYDEV_RESET_CR0, 0x65); //トリップ電圧の設定(アナログ・デジタル)
CY_SET_REG8(CYDEV_RESET_CR4, 0x03); //低電圧リセット無効
CY_SET_REG8(CYDEV_RESET_CR5, 0x03); //低電圧リセット無効
CY_SET_REG8(CYDEV_RESET_CR1, 0x03); //低電圧割り込み有効

電源電圧がトリップ電圧を下回ったかどうかは、以下のレジスタで読み出せます。

CY_GET_REG8(CYDEV_RESET_SR2);

以上の方法で、電源電圧の低下を検出できるようになりました。
下の写真はステータスバーの右端に電源電圧低下を示す"BAT"表示を出したものです。

ステータスバーの拡大図
このときのLiPoの電圧は3.36Vで放電終止電圧まではまだ少し余裕がありますが、十分電圧低下の目安にはなりそうです。

2011/09/01

MiniProg3の修理

PSoC3/5用プログラマMiniProg3の調子がどうもおかしくなったので、原因を調べて修理を行いました。

具体的な症状は、PSoC3の書き込みを行おうとすると「ターゲットデバイスに電源が供給されていない」とのエラーメッセージが出て、書き込みが中断してしまう、というものです。
調べてみると、MiniProg3のターゲットボードへの電源供給機能が何らかのきっかけでハードウエア的に壊れてしまい、ターゲットボード用電圧(Vtarg)が出ないことが原因だとわかりました。

Vtarg端子とGND間の抵抗を測ってみると12Ω程度で、ほとんどショートにも近い状態でした。
そこで、MiniProg3のカバーを開け、電源供給部周りの回路を追ってみたところ、USBの5VからVtargを生成するTexas Instruments TPS65053が壊れていることがわかりました。

修理中のMiniProg3。右下は原因を探るためにはがしたチップたち

故障箇所がわかってしまえば修理するのはそれほど難しくはありません。
壊れたチップをホットエアではがし、新しいチップに貼りかえれば修理完了です。

Vtargが出なくなる、という形の故障はF-tecの後輩も経験したようなので、トラブルとしては比較的多いものなのかもしれません。
Vtarg端子から取り出せる電流は200mA程度で、この制限を超えた電流を流してしまったことが故障の原因かもしれないので、MiniProg3につなぐボードの消費電流には十分注意を払う必要がありそうです。