2020年9月7日月曜日

スマートBMSのUARTを覗いてみた。

BMSを作るにあたって、周辺環境まで自前で用意するのは大変です。
スマホアプリとかLCDモニタなどの周辺機器を使いまわせないか調べてみました。

ロジアナの設定はN81で速度はオートとしました。
こんな感じで、送受信しています。フレームは0xDDで始まり0x77で終わるようです。
データは繰り返して流れますので、書き出して眺めているとなんとなく見えてきます。

0xA5 0x03はBMSのステータスで0xA5 0x04は電圧っぽいのですが、変化させながら確認する必要があるので何かと時間がかかる作業です。

困った時の海外サイト頼みなんですが、
なんとスマートBMSの本家HPにたどり着いてしまいました(/・ω・)/
 幸せの蒼い鳥は近くにいた!

さすがに全てのコマンドが載っているわけではありませが、最低限のコマンドは載っています。

これで読み解くと、
素晴らしい。これで準備は整いました。あとは作るだけだな。


2020年9月3日木曜日

LEV40-8 CMUの信号を覗いてみた その2

助っ人を召喚しました。

USB-CAN デバッガアダプタ。

適当に安いのを選んだためか、中国語しか対応していません。( ゚Д゚)
なんとか使えているので良しとするか・・・。


繋いだらCMUの動作に変化が見られました!

接続前
0.000036600,0,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK
0.000298600,1,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK
0.000560600,2,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK
0.000822800,3,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK
0.001084800,4,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK
0.001346800,5,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK
0.001608800,6,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK
0.001871000,7,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,NAK

接続後
0.018130200,0,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,ACK
0.018432600,1,DATA,0x612,0x8,0x0F 0x2D 0x0E 0xA6 0x0F 0x2E 0x0F 0x30,0x3924,ACK
0.018739000,2,DATA,0x613,0x8,0x0F 0x31 0x0F 0x2E 0x0F 0x30 0x0F 0x33,0x684E,ACK
0.019043200,3,DATA,0x614,0x8,0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF,0x2D67,ACK
0.058140800,4,DATA,0x611,0x8,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF,0x7DD4,ACK
0.058443200,5,DATA,0x612,0x8,0x0F 0x2D 0x0E 0xA7 0x0F 0x30 0x0F 0x30,0x0061,ACK
0.058745600,6,DATA,0x613,0x8,0x0F 0x31 0x0F 0x30 0x0F 0x30 0x0F 0x33,0x0DF9,ACK
0.059049800,7,DATA,0x614,0x8,0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF,0x2D67,ACK

ロジアナ上でも変化が! 連続して送信し続けていたのが、間欠送信となりました。


CANバスの仕組みとして、データを受信したノードがCRCを計算して問題なければACKを返す仕組みがあり、送信側はACKが無いので同じデータを送り続けていたようです。

では送られてきたデータを読み取ってみましょう。
0x611,0x00 0x30 0x4F 0x4F 0x4F 0x4F 0x4F 0xFF
バランス実行無し、29℃、29℃、29℃、29℃、29℃
0x612,0x0F 0x2D 0x0E 0xA6 0x0F 0x2E 0x0F 0x30
S1:3.885mV、S2:3.750mV、S3:3.886mV、S4:3.888mV
0x613,0x0F 0x31 0x0F 0x2E 0x0F 0x30 0x0F 0x33
S5:3.889mV、S6:3.886mV、S7:3.880mV、S8:3.891mV 
0x614,0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
未使用

0x611については諸説あるのであれですが、612~614の電圧はあっているように見えます。

最後にバランスコマンドのテストを・・・

あれ? マニュアル通りに設定しているのにちゃんと送れない。
ロジアナで確認すると拡張IDでRTR形式で送信している。なぜだ( ゚Д゚)

原因判明 なんとIDタイプとRTRの指定を中国語のまま保存する仕様になっており、文字化けで誤動作していました。該当の文字をコピペしてなんとか設定完了。

0x611のバランス情報が0xFDとなり2セル以外バランスしていることが分かります。
0.149405400,16,DATA,0x3C3,0x8,0x0F 0x10 0x01 0x04 0x03 0x00 0x00 0x00,0x67F1,ACK
0.184412000,18,DATA,0x611,0x8,0xFD 0x30 0x51 0x51 0x51 0x51 0x51 0xFF,0x10FC,ACK
0.184710400,19,DATA,0x612,0x8,0x0F 0x2B 0x0E 0xA3 0x0F 0x2D 0x0F 0x2D,0x20B0,ACK
0.185008800,20,DATA,0x613,0x8,0x0F 0x2E 0x0F 0x2D 0x0F 0x2D 0x0F 0x31,0x28B6,ACK

左がバランスなし、右がバランスありです。セル2が低いので他7セルを抵抗で消費しています。

動画はこちら。バランスコマンドは1回送ればいいのではなく、コマンドの都度数ミリ秒実行されるようです。
停止⇒連続⇒停止⇒連続⇒頻度小⇒頻度中と変化させてみました。



2020年8月29日土曜日

LEV40-8 CMUの信号を覗いてみた

 ある程度環境も整ってきたので、LEV40-8 CMU基板について調べてみました。

よく見るとCANコネクタ側とBMS側がUM1402Wとフォトカプラで分離された構造になっています。

間違いも多々あると思うのでざっくりでずか、回路はこんな感じ。
外部から12Vを入れてやる必要があるみたいです。(電源IC自体は5.5~30V入力ですが、他の回路でも使われているので注意。)
ではCANバスを覗いてみましょう。
速度は500Kbpsのようです。
う~ん、同じデータしか流れてこない。バッテリに対してなにかコマンドが必要なのかもしれません。
DATA,0x671,0x8,0x00 0x30 0x4F 0x4F 0x4E 0x4E 0x4E 0xFF,0x2143,NAK



ということで、
困った時の海外頼み(^^♪
Mag ID 6X1はバランスステータスと温度センサ1~5らしい。
Mag ID 6X2と6X3でセル電圧みたいなのですが、いまだ出し方分からず((+_+))
 ※MsgID 0x3C3 を送信することで電圧を返してくれるようです。また、目標セル電圧とバランス開始指示でCMUは指定電圧目指してバランス動作するようです。
ACKが返っていないだけでした。受信ノードを追加すれば、正常な通信になります。

 ・DIY ELECTRIC CAR Using the Mitsubishi CMU / BMS on LEV40 packs




 Arduinoで組まれたオープンソース。非常に参考になります。

現在サポートしているのは、
- Tesla Model S/X
- Tesla battery modules used in other OEM cars
- Mitsubishi Outlander LEV40
- VW E-Golf and GTE (no balancing currently)
- BMW I3

2020年8月27日木曜日

ロジックアナライザ LA5016 購入してみた

 マイコンとかやってると色々細かな部分が気になってくる。
そんなときに助けてくれるのがロジックアナライザ(^^♪

こんな感じに接続して、
こんな感じにモニタ出来ます。
更にエンコード機能も付いていて、信号だけでなく通信のモニタも出来るようです。
果たして使いこなせるのであろうか・・・(/・ω・)/

追記
・このままだと内部を見せろやってコメントが付きそうなので、対策 ^^;

2020年8月23日日曜日

【Arduino】 AVRISP_mkIIが来たので環境を整えてみた

・TL866IIPlusしかもっていないので、ROM書きが面倒。
 1.Arduino IDE ⇒ Arduino UNO
 2.TL866IIPlus ICSP UNO読込み ⇒ TL866IIPlus ICSP LCDスクリーン書込み

AVRISP mkIIがあればそのままArduino IDEからROM書きできるみたいなので購入してみました。
もちろん、パチモンですけどね。(*´ω`*)

早速Arduino IDEから書込みを試みましたが、USBデバイスを認識してくれません。
初期不良の可能性もあるので、本来の環境であるAtmelStudio7で確認。
ドライバがいくつかあるのですが、
 
左のMicrochipToolsの方で正常に認識し、読み書き正常。
色々調べていくとArduino IDEとAtmelStudio7ではドライバが異なるようで、それを補うためのlibusb-win32というツールがあるようなのですが、Windows10 64bit環境の署名問題で現状ではうまく動かないようです。

そこで、AtmelStudio7でArduino IDEライブラリを使う方法を調べてみました。

最初試したのは、AtmelStudio7のArduinoスケッチ読込み機能なんですが、U8g2ライブラリをインポートしてもコンパイル時にヘッダファイルが無いの一点張り。エディタでは正常に認識しているのに何だろう。

次に試したは、拡張ツールである「Arduino IDE for Atmel Studio7」
こちらは、U8g2ライブラリを認識してコンパイルしてくれます。素晴らしい!!(≧▽≦)
せっかくAtmel Studio7環境に移行したので、JTAGICE mkIIにしてデバックできるようにしたいな。

2020年8月15日土曜日

【Arduino】 スマートBMS用 LCDスクリーンディスプレイ を使って開発してみよう

スマートBMS用に組まれたボードですが、
Arduino環境での開発が出来そうだったので試してみました。

マイコンはATmega328P。
ICSP端子も付いているのでAVRISP mkIIがあればそのままArduino IDEからROM書き可能。

LCDパネルは、JLX19296G-380
マニュアルを確認すると、LCDコントローラはST75256。
・よかった。u8g2ライブラリでサポートされている



・設定はSPI接続で、
その他ポートまわりを調べた結果がこちら、普通に使えそう。

テストプログラムを書いてみた。

自分はTL866IIPlusしかもっていないので、
 ・Arduino IDE ⇒ Arduino UNO
 ・TL866IIPlus ICSP UNO読込み ⇒ TL866IIPlus ICSP LCDスクリーン書込み

と面倒なので、素直にAVRISP mkIIを買おう。

2020年8月13日木曜日

【故障修理】 BenQ EL2870U その3 ケーブル交換

 過去のあらすじ

メイン基板⇒液晶コントローラケーブルにてコネクタ破損あり

7/30発注から2週間、
小型の封筒で頼りないですが、プチプチパワーで無事届きました。(*´ω`*)

コネクタ端子面の確認、問題なし。
純正とは異なり、片面しか黒テープが貼られていません。

同じように取り付けて完了。

んで、特殊コネクタ部分ですが、簡単に分解可能です。
51pin、0.5mm間隔、30cmのフラットケーブルがあれば修理可能ですね。