SSブログ
English Version

デジタル式定電流放電器の制作(その7) [PIC]

 電圧のグラフがカクカクしているのが気になり、データ管理方法を見直しました。

 今まではPIC内蔵のフラッシュメモリ(14bit長)に保存する形式として、電流側は情報量が少ない(殆どが定電流設定値付近の値)にもかかわらず放電終了時に急にゼロになりダイナミックレンジが大きいことから8bit(最小単位0.01A)でそのまま保存し、電圧値は変化分を6BIT(最小単位0.01V)で保存していました。
 電圧データの方が情報量が多いので電圧側に9bit(最小単位0.001V)を使い、電流側はゼロの値を特殊値として扱うことで5bit(最小単位0.01A)で保存するように見直しました。
 また、今までは1秒間の平均値を保存していましたが、250msの平均値に変更することで変化への追従性を改善しました。内部処理の方法も見直しデータ保存時までなるべく情報落ちがないように考慮しました。整数演算時に四捨五入できりが悪い(0.5付近の少数値)場合は事前処理(たとえば割り算で除数がn.5の場合は非除数を2倍(左シフト)してから 2 x n + 1 で割る等)することで誤差を最小化するようにしました。(浮動小数点が自由に使えればこのようなチューニングも要らず、桁溢れもあまり気にする必要もないのですが・・)

 保存データ圧縮処理(といっても複雑な処理ではないですが)を追加したため、PIC内フラッシュメモリ(8Kのうち4Kをプログラム、4Kをロギングデータ用としています)がそろそろ限界でこれ以上の機能追加は困難になってきました^^;
 メモリに余裕があればセメント抵抗のバラつきをソフトでキャリブレーションする機能も入れたかったのですが・・
 OBL(ブートローダー)が130ワードなのでOBLを入れなければもう少しの処理の追加は可能ですがプログラムの更新がメチャめんどくなるのでOBLは必須です。

 改良後のロギングデータをエクセルでグラフ化したサンプルが下記のグラフです。

サンプルグラフ


 ロギングデータ自体は次のようなフォーマットでシリアル出力されます。
 シリアルの設定は 38400bps、データ長:8bit、パリティ:無し、ストップビット:1bit です。

Discharger v0.04
CutOffVol,Current
1.000,0.90

total current[mAh]
1891,2006,2069,1053

sec,V1,A1,V2,A2,V3,A3,V4,A4
   0,1.367,0.90,1.386,0.90,1.359,0.90,1.389,0.90
  10,1.361,0.90,1.383,0.90,1.353,0.91,1.370,0.90
  20,1.358,0.90,1.377,0.90,1.349,0.90,1.366,0.90
  30,1.355,0.91,1.368,0.90,1.346,0.90,1.359,0.91
  40,1.351,0.90,1.362,0.90,1.344,0.90,1.354,0.90
  50,1.349,0.90,1.361,0.90,1.343,0.90,1.349,0.90    
         ・
         ・
         ・



★2014/04/14 追記
 先日購入した ReVOLTES のフル充電直後の放電データ(購入後5回目の放電)を取ってみました。
 カットオフ電圧は1.0Vで電流値は 0.9A です。
 容量の測定値は 1299mAh でした。電池の仕様が1300mAhでもう少し小さな値になることを想定したのですが・・・

ReVOLTES放電グラフ



[ 前へ ] 連載記事 [ 次へ ]
nice!(0)  コメント(0)  トラックバック(1) 
共通テーマ:趣味・カルチャー

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 1