Radishのバッテリー充電に味をしめ、

次はカムロボを充電。
// Charge Controller Ni 0.2
ana(5);ana(6); //OUT1,2 to ana
var Vmax=1900*4; //mV
var Vblk=1350*4; //mV
var Imax=2000*1; //mA
var Nstp=6; //times
function getVs(){
var r=0;
var i=32;
while(i){
r=r+(ana(5)*3300*10/1023);
i=i-1;
}
return r/32;
}
function getVb(){
var r=0;
var i=32;
while(i){
r=r+(ana(6)*3300* 5/1023);
i=i-1;
}
return r/32;
}
function getI(){
var r=0;
var i=32;
while(i){
r=r+(ana(2)*3300*10/1023);
i=i-1;
}
return r/32;
}
// Bulk
function onChrgB(){
log("[B]");
var Vs=getVs(); log("Vs:",Vs," ");
var Vb=getVb(); log("Vb:",Vb," ");
var I =getI(); log( "I:", I," ");
if( (Vb<Vmax)*(I<Imax) ){
d=d+1; if(100<d)d=100;
}else{
d=d-1; if(d<0)d=0;
}
log("d:",d,"\n");
pwm(4,d);led(1);
}
function onChckB(){
pwm(4,0);led(0);
sleep(1500);
var Vb=getVb(); log("(B)Vb:",Vb,"\n");
if(Vb<=vl) sc=sc-1;
vl=Vb;
if( sc ) return onChrgB;
return onChrgF;
}
// Float
function onChrgF(){
pwm(4,0);led(0);
}
function onChckF(){
pwm(4,0);led(0);
sleep(1500);
var Vb=getVb(); log("(F)Vb:",Vb,"\n");
sc=Nstp;
vl=Vb;
if( Vb<Vblk ) return onChrgB;
return onChrgF;
}
// main
pwmt(100);
var d=0; //PWM duration
var m=0; //charge mode
var c=onChckF; //check mode
var vl=0; //last Vb
var sc=Nstp; //stop count
while( m=c() ){
var t=tick();
while( tick()-t < (1000*10) ){
m();
if( inkey() + btn() ){pwm(4,0);led(0);sleep(1000);exit(1);} // for DBG
}
if(m==onChrgB) c=onChckB;
if(m==onChrgF) c=onChckF;
}
pwm(4,0);led(0);
チャージコントローラーのプログラム(IchigoLatte JS)はNiMh用に作り直してこんな感じ。鉛バッテリーとは充電時の挙動が違います。

ネオチャンプ4本をカムロボに積んだまま急速充電、快晴なら同時に3台( 12本)を30分で満タン、これならイベント会場で無限に走れる!

こいつ1つでなんでも充電できちゃう?プログラミングって面白いっ!
もしやられる方は電気の扱いに十分にお気をつけください!!!
なにかの間違いにより火災などに至る可能性があります。
.