« PS2RCBコンバータに振動バッテリーモニタを付ける | メイン | 明けましておめでとうございます »

2009年12月31日

PS2RCBコンバータに振動バッテリーモニタを付ける2

昨日の続き。
昨日の挙動不審の原因は、低速シリアルのコネクタをRCB1に挿すときに、ひっくり返していたのが原因でした。やっぱりこういうのは、一晩寝ないと袋小路に入り込んでしまいます。

で、バッテリの電圧降下で、ブルブルがまず完成。

ところが、半透明のコントローラで試すと、振動モータの小さい方しか回っていないことが判明。
原因を調査すると、大きい振動モータを生かすには、DUALSHOCK用のコマンドを送らないといけないことがわかりました。(http://applause.elfmimi.jp/dualshock.shtml を参考にしました。Applauseさんありがとうございます。)
原因がわかれば、コマンドを送ればいいので、何とか対応しました。(途中でFlashROMの容量を超えてあせりましたが、何とか収めました)

次に、信号反転回路の除去に取り掛かりました。実は、梓さん披露宴用のロボを作った際の成果として、信号反転回路の除去は目途が立っていたので、コンバータにも組み込んでみました。

そして出来上がったのが、下記の回路図とソフトです。以前の回路に比べるとだいぶ簡単になりました。

ソースコード
回路図

「SW設定やバッテリーモニタや状態確認のLEDはいらない」という場合には、さらに簡単になります。(SWでONの状態を使いたい場合は、対応するAVRの端子とGNDを接続します)
簡単にした回路図

J1をPS2コントローラに接続します。
J2を低速シリアル端子に接続します。
PAD1をバッテリーの+に接続します。(バッテリーモニタを使う場合に必須)
(J2のVccには、13Vくらいの電圧をかけてもいいので、PAD1とJ2-2番ピンを共通にすることも可能です)

SW1-1 をONにすると、低速シリアル
SW1-1 をOFFにすると、拡張低速シリアル
SW1-2 をONにすると、互換モード
SW1-2 をOFFにすると、DUALSHOCKモード

LED1 は、PS2コントローラとの接続状態を示します。
・点滅=未接続
・点灯=デジタルコントローラと認識
・点灯&ちょっと消灯=アナログコントローラと認識

LED2 は、バッテリモニタとして働きます。
・点灯=バッテリー残量OK
・消灯=バッテリー残量NG

投稿者 hiranoy : 2009年12月31日 23:59

コメント

もう出来ちゃったんですね~。
手が早いですね。
今、自作コントローラー作っているので参考にさせてもらいます。

投稿者 コイズミ : 2010年01月01日 13:59

コメントありがとうございます。
ソースコードが参考になると幸いです。
今年もよろしくお願いします。

投稿者 平野 : 2010年01月10日 09:55

コメントしてください




保存しますか?