2016/04/27

ヘッドライト調光プロジェクト(その1) - PWM回路の実験

バイクのヘッドライトを調光(減光)するためのしくみを自作したくて、その準備段階の作業(実験)の第一段階です。

まず最初に、先日秋葉原に行った時に見つけて買ってあった、秋月電子通商の「PWM(スイッチング方式)DCモーター速度可変キット」を試してみることにします。  専用のプリント基板と部品および説明書付きで500円です。

 部品点数が少ないですし特殊な部品も無いので、ハンダ付けが出来る人ならアッと言う間に作れてしまいます。

 職場から借りてきた、オシロスコープ(Keysight MSOX3104T)とDC電源を使って、動作確認してみます。


 せっかっくなので、手持ちの電球(25W球だったかな?)を光らせてみることにします。

PWM(パルス変調)による制御なので、高速でオンオフのスイッチングが繰り返されます。
この場合、オン電圧は常に12V、オフ電圧はゼロですが、オン時間とオフ時間の比率によって見かけ上(というか実効の)電圧が変わり、電球の調光が可能になります。

これは、Duty (1周期ごとのオン時間比率)が約20%の状態。
 こちらは、Duty:60% くらい。 上の写真に比べてオン時間の比率が大きくなり、電球も明るく光っているのが分かると思います。
 Duyt: 約90%でこんな感じ。 オシロの波形は明確ですが、スマホのカメラ撮影ということもあり、電球の明るさの違いはあんまり分かりませんね。
キットなので当然ですが、ちゃんと期待通りの動作をしていることが確認できました!
ただし、このままでは私のやりたいことはできないので、自作の回路と組み合わせて使うことになります。

いずれにしても、このキットについてはひとまずここまででOK。


こんどは、エーモンの「調光ユニット」を試します。
この調光ユニットもPWMのはずですが、ホントにそうなのか、秋月のキットと同じようにオシロで制御波形を見ながら電球を光らせてみることにします。


Duty 約25%の状態。
Duty 約50%です。
Duty 約80%。
Duty 約90%の状態です。

これは、Duty 約10%。 電球がごくわずかに光っているのが見えますでしょうか?

ということで、このエーモンの調光ユニットも秋月のPWMキットと同様に使えそうなことが確認できました。

バイクの電装系をいろいろ改造するにあたり、Arduinoマイコンボードを使って複雑なこともやろうと考えていましたが、まずはエーモンの調光ユニットを利用したヘッドライト減光のしくみを作り込もうと思います。


バイクのヘッドライト(55Wハロゲン球)を制御するためには、追加の回路が必要になるので、そのあたりはまた次回の作業に続きます。。。

2016/04/25

貼り付けプッシュスイッチの防水化

エーモンの「貼り付けプッシュスイッチ」がなかなか便利なのですが、クルマの車内用なのでバイクのハンドル周りに取り付けるには防水されていないことが心配です。
入手しやすい商品ですので、まぁ、壊れたら交換すれば良い、、、とも思いますが、ダメモトで防水化を試みてみました。

まず、分解してみると、こんな感じ。






防水化、、、と言いつつ、 構造上、雨水などはモロに入るので、それが基板の裏側に回り込んで腐食などの原因になりにくいように、グルーガンで適当に隙間を埋めてみただけです。(^^;
 こんな感じにして再度組み上げて出来上がり。
防水化というよりは、耐雨化という程度ですね。。。(だんだん弱気)
果たしてどれだけの効果があるのか、乞うご期待(?)。 (^^;;;

2016/04/24

UNIFLAME US-1 シングルストーブ

2ヶ月後に計画している「北海道ツーリング」に向けて、少しずつ準備を開始しました。

調理用のストーブ(バーナー)に関し、手持ちの現役装備品の候補としては、

  • スノーピーク 「地」
  • ユニフレーム 「US-1」
  • コールマン 「Peak-1 デタッチャブル」
  • オプティマス 「8R」
というあたりなのですが、期間が長めのキャンプツーリングなので、この
  「UNIFLAME US-1 シングルストーブ」
を持って行くことにしました。

登山の時と違って、小型軽量であることが最優先ではないし、燃料は旅行中に補充することが可能だけどやはり入手しやすい燃料が良いし、、、というあたりが理由です。
銘鈑を見ると、1998年製のようです。 たしか新発売の直後に購入したと記憶しています。
「US-1」という型番からして、ユニフレームの「分離型シングルストーブ」としては最初のモデルだったのだっけかな?
当時、自分はEPIの分離型シングルストーブ(OD缶)を持っていましたが、それと比べて画期的に使いやすくなりました。

 久しぶりに使うので、分解清掃しました。

 清掃後の着火状態は良好。 ・・・写真を撮り忘れたけど。(^^;
北海道ツーリングで活躍してくれそうです。


2016/04/22

R1200GSのCAN BUSデータ読み出しツール作成

Arduino(マイコンボード)を使って、自分のバイクのCANバスを流れるデータを読み取るツールを製作しました。

ノートPCを繋げて16進数としてのデータをさせるところから始めて、、その後、小型のTFT液晶ディスプレイにデータの意味も含めて表示させるところまで出来ました!


動画でどうぞ。 (字が小さいのである程度大きな画面表示でご覧下さい。十分に高い解像度でアップしてあります。)

以下、上記 動画からの切り出し画像が中心ですが、、、

バイク(BMW R1200GS)の基幹CANバスのコネクタから信号線を引き出します。
コネクタのピン配置はこうなってます。



Arduinoマイコンの自作プログラムで CANのデータをリアルタイムに読み取ります。

表示は 2.2インチの小さなTFT液晶ディスプレイです。

こんな感じで、CANデータを読み取って表示させています。

ハードウェア的なデータ読み取り処理はリアルタイムですが、使っている液晶ディスプレイの描画速度が遅いため、表示のところで小細工しているので、使わずに捨てているデータもあります。(^^;


具体的な表示項目を一覧にするとこんな感じ。
Throttle スロットル開度 0-100% RPM エンジン回転数 rpm
Clutch クラッチ ON / OFF Kill SW キルスイッチ KILL / RUN
Stand サイドスタンド UP / DOWN Brake ブレーキ F / R / Non
ABS SW ABSスイッチ ON / OFF ABS ABSモード ACT / INACT
Light ハイビーム LOW / HIGH Turn ウインカー L / R / HZRD
Front 前輪速度 km/h Trvl 前輪走行距離 m
Rear 後輪速度 km/h Trvl 後輪走行距離 m
Gear ギヤポジション 1,N,2,3,4,5,6      
Fuel 燃料残量 0-100% Info SW INFOスイッチ ON / OFF
G Heater グリップヒーター OFF / L / H Od オドメーター km
Clock システムクロック sec Ambient 周囲明るさ DARK / LIGHT
Air 吸気温度 Eng. エンジン温度


CANデータの解析とプログラムのデバッグ用として、CANバスを流れるデータを16進数で表示させる「ダンプモード」を作り込んであります。
というか、このモードを先に作って、それぞれのデータの意味付けを解析したわけです。

海外のBMWバイク愛好家のforumや GitHub上の情報、および自身によるデータ解析の結果、ウインカーやギヤポジショ­ンなどの簡単で分かり易い情報はバッチリ読み取りに成功しましたが、、、
実は、何を表しているか不明なデー­タもいろいろ見えています。

また、きっと流れているはずなのに、どのデータがそれを示しているか発見できていないものもあります。

ちなみに、このArduinoマイコン側から CANに任意のデータ(コマンド)を流し込むことも簡単にできるのですが、、、どんなコマンドがどのような意味を持つのか、という情報を、今のところ一切持ち合わせていないので、まったく実験していません。
ランダムに試すような実験はとても怖いので。。。

もし、送出コマンドに関する情報が得られれば、試してみたいとは思っていますが。(^^;;;


2016/03/22

カラーTFTシールドが到着。早速動作確認!

Arduino用に、シリアル接続の、2.2インチ、カラー液晶ディスプレイをAmazonから発注していたのですが、本日届きました。 
3/10発注で3/22到着なので、2週間弱。。。  届いた封筒には「航空便」と書いてあるんだけど、実際にはどういう経路で届いたのかサッパリ不明です。(^^;


発注から2週間近く掛かりましたが、送料込みでわずか 885円ですから、それくらいの待ち時間は大目に見ましょう。 というか、前回の中国発送のブツは1ヵ月以上待たされたので、今回はむしろ速く届いた感じ。(^^;;;

問題は、ちゃんと動くかどうか。
これには、現物の品質という意味と、適切な情報に到達できるかどうか、という2つの意味があります。
 なんたって、説明書はおろか、一切の情報源への誘導はなく、入っていた袋に貼られていたラベルから、使用しているデバイスがILI9225という型番らしい、、、ということが分かるくらい。。。

でもまぁ、結果的にはご覧のように無事に動かせました~!
 たったの220x176という低解像度ではありますが、カラーのグラフィックディスプレイです。TK-80がTK-80BS、いやPC-8001になったくらいの感じ?(^^;;;
 ちょっと描画速度が遅いのが気になるけど、、、PC-8001とかもこんなもんだったっけなぁ。

2016/03/21

CAN-BUSシールドの準備

Arduino(マイコンボード)に接続するCAN-BUSシールド(子ボード)の入手とセットアップです。
先に動画にまとめてしまうと、こんな様子。

先日の記事(CAN-BUSシールド調査中)でどちらを選ぶか悩みましたが、結局 Sparkfunにしました。

シールドは完成品だけど、Arduinoのメインボードと連結するためにはこのピンソケットをはんだ付けする必要があります。
 さぁーはんだ付けだ! と意気込んで準備したけど、今回はピンソケットを付けるだけでしたっけ。。。(^^;
Arduinoのメインボード(写真の下側のボード)のUSBコネクタが上のシールド(子ボード)に干渉し、ピッタリ入らない。。。(;_;)   ま、いっか。(^^;
CAN-BUSシールドにD-sub 9ピンのコネクタが付いているので、バイクとの接続(実験)用のフィクスチャを自作しました。 市販のRS232Cケーブルをぶった切って、使う予定の4本にピン先を付けただけですけど。(^^;
 これで、一応、自分のバイクのCAN-BUSをArduinoで読み出せるようになる、、、はず。(^^;;;

2016/03/20

バイクのCAN-BUS信号をオシロスコープで観測してみた

R1200GSの電装系をいじくりたくて調べていたら、このバイクには CAN-Bus (CANバス)が採用されていて、各種コントローラやユニット同士がこれを通じて制御されていることが分かりました。
つまり、CANバス信号をモニタすることができれば、車速やエンジン回転数、ギヤポジション、ウインカーの状態などなどを知ることができるはず。。。

CAN-Busは規格化された通信方式ですが、このバイクに使われている方式(電気的な仕様や通信プロトコル)がどこまで規格通りなのか分かりません。
「どうぞご自由にお使い下さい」とユーザーに公開されたものではないので独自方式が採用されている可能性もあります。

そこで、実際にどのような信号(データ)が流れているのか、オシロスコープで覗いてみることにしました。
結果としては大成功! オシロでCANバス信号をデコードすることに成功しました!!
以下、今回の作業の様子です。

まずはリヤフェンダーをバラして、、、車両の基幹CANバスの端っこのコネクタを取り出します。
 これが、お目当てのコネクタ。
本来は、オプション装備のDWA(盗難警報装置)のユニットに接続されるコネクタですが、このバイクにはDWAが無いので、ダミーのコネクタに接続されています。
 ダミーコネクタは単なるキャップではなく、中に抵抗が入っていました。
CANの教科書通り、120Ωの終端抵抗です。
ブレッドボード用のジャンパーケーブルで CAN-H と CAN-L 2本の信号線を引き出します。
CANは差動信号なので、オシロスコープとの接続にはマジメに差動プローブを使用しました。

 使用するオシロスコープは、借用品の「KEYSIGHT InfiniiVision MSOX2024A」です。
このオシロには CAN信号を観測するための機能が備わっていますが、自分は初めて使うので、まずはデモ画面でどんなふうに測定できるのかイメージをつかみます。
とても分かり易い!
 オシロを屋外で使用することは滅多にないだろうけど、、、画面は大きいし明るいので電源さえあれば屋外でも問題無く使えそうですね。

 差動プローブをバイクのコネクタの CAN-H, CAN-L 2本の信号線に繋げて見ると、、、
呆気ないほど簡単に、CAN信号がデコード表示されました!!
 ホントのところ、正しくデータを読み取れているのかどうか、この時点ではサッパリ分かっていないのですが、、、少なくともオシロの機能として、エラー無くデコードできていると表示してくれているので、きっと大丈夫なはず。。。(^^;
(ちなみに後日の解析で、完璧なデータ取得であったことが確認できました)

USBメモリスティックにセーブして、大量のデータを後でじっくり解析することが可能です。
このデータに、スロットル開度や車速、各種電装系のスイッチ状態などの情報が載っています。

これは記念撮影用のポジション。  オシロをこんなところに載せてはいけませんよね。(^^;
昔のオシロと違って、こんなところに載せられるほど小型軽量になったわけですが。v(^o^)
 CANバスに接続されている、様々なユニットからデータが送り出されていることが分かります。
データが送出される頻度(ペース)もいろいろで、1ms毎に送られているデータ(つまり1秒間に1000回)ものもあれば、10msごとや 100msごとのデータもあるようです。


オシロの性能(機能)のお陰で予想以上に簡単にCAN信号を観測することができましたが、残念ながらオシロを繋げた状態で走ることはできないし、CAN信号をデコードしても単なる16進数のデータの羅列で、これを見ているだけではどれがエンジンの回転数でどれがウインカーの信号なのかもサッパリ分かりません。

次のステップは、Arduinoマイコンボードを用いて CANデータを読解すること。。。
そのためのハードウェアとソフトウェアをいじくるプロジェクトに移行します。

バイクの車体側について、毎回リヤフェンダーをばらさないとCANバスにアクセスできないのでは困るので、、、
リヤフェンダー内のハーネスの束ね方を少しいじって、シート下のアクセスしやすいところに、このコネクタを移動させておくことにします。

具体的な様子は後日の記事にて。