google-site-verification: google3bd66dd162ef54c7.html

ダイソーの300円モバイルバッテリー(推定回路図)

 ダイソーの300円モバイルチャージャーの調査。前回は充放電容量を調べましたが、今回は分解して内部を調べます。なお、このチャージャーにはいろいろなバージョンがあるようで、今後も新しい物が登場する可能性があります。ということで、識別のために今回記事で取り上げる物は、2017春モデルと呼ぶことにします。

▼分解
20170614IMG_0662.jpg
 上蓋がツメで止まっているだけなので、薄いマイナスドライバーなどを差し込んで簡単に分解出来ます。基板もホットボンドで固定されているだけなので、この写真のように簡単に三枚おろしに出来ます。電池は18650のリチウム電池で2000mAh 3.7Vという表示があります。

 ところで、このケースは光沢があってすべすべとした手触りで高級感があります。それに表面の硬度が高くて傷が付きにくそうです。たぶんUV塗装しているのだと思いますが、安いのにこういう上質な表面処理を行っているのは大したものです。ちなみに、昔の中華な製品はよくプロテイン塗装されていて、時間が経つと加水分解でベタベタになったものですが、あういうダメ仕様がこういうふうに進化しているなら大歓迎です。

▼基板(マイクロUSB側)
ダイソー300円モバイルチャージャー基板
 部品はICが一つ、インダクタが一つとセラコンが2個だけです。部品が載っていないフットプリントがいっぱいありますが、古いバージョンの基板を流用したのでしょうか。

▼基板(USB-A側)
ダイソー300円モバイルチャージャーUSB-A
 こちら側の部品はLEDが2個だけです。

 つまり電気部品は IC一つに、コイル一つコンデンサ2つ、LED2つだけというシンプルさです。もちろんこれ以外にコネクタや基板があります。

 ICはHOTCHIPという会社のHT4928Sというチップが使われています。検索するとHT4928SのデーターシートのPDFが出てきますが、残念なことに中国語のものだけしか発見出来ませんでした。

 このデーターシートに書かれている回路図は以下のようになっています。

▼ブロック図
HT4928S
 コネクタのマイクロUSBが入力、USB-Aが出力ということになっていますが、驚いたことに内部では単にパラに接続されています。つまり同じピンが入力にも出力にもなるということです。なお、ダイソーの2017春バージョンの300円モバイルバッテリーの回路はまさにこのブロック図の通りの回路になっていました。

 この回路の見た目は昇圧のDCDCコンバーターですが、充電回路がどうなっているかはこのブロック図からは判りません。そこで、動作中の各部波形を見てチップの内部を推定したのが次の回路図です。

▼推定回路図
ダイソー300円モバイルチャージャー回路図
 制御系の細かい部分までは判りませんが、充放電の主回路の部分を書いてみました。 

 Q1とQ2が昇圧のDCDCコンバーター用スイッチです。データーシートに「升压使用同步整流电路」と書いてあるのでQ2で同期整流をやっているはずです。

 電池の充電はPWMで行っていると思ったのですが、充電中の波形を見ると予想と違って直流でした。ということは、単なるシリーズレギュレーター方式で充電しているようです。そのための回路はいろいろ考えられますが、上の図のようにQ3を追加してこれで充電電流を調節するのが一番自然な気がします。

 話を整理すると、放電中はQ3はONにして普通の同期整流方式のDCDCコンバーターとして動作させます。充電中はQ1はOFF,Q2はON固定で、Q3を使ったシリーズレギュレーター方式で電流調整という動作だと思います。FETにはボディーダイオードがあるので、充電中のQ2はOFFでもいけると思います。

 なお、充電回路の実現方法は他にも考えられるので、上の回路図通りではない可能性があります。でも、ともかく制御をうまくやれば同じピンで充放電を行うことは可能だと思います。

 ところで、充電回路がシリーズレギュレーター方式になっているということは効率があまり良くないということです。(大雑把には3.7V / 5V = 74% )。一方で、昇圧は同期整流になっているのでこちらの効率は比較的高いはずです。前の記事では両者の効率が同じと仮定して電池容量の推定を行ったのですが、その計算は見直す必要があります。

◆まとめ
 だいぶこのバッテリーチャージャーの回路が理解できてきました。次回の記事では波形を見て実際の動作状態を確認していきたいと思います。

◆よもやま話
 ところで、このICのメーカーはHOTCHIPですが、これすごく気になる名前です。というのはHot Chips というのは先端半導体が発表される世界的な大会議の名前で、ここは intel や AMDといった巨大企業の先端技術が発表される場です。日本人の感覚ではとても畏れ多いし、名前倒れと言われるのが目に見えているので、これを会社の名前にすることは無い気がします。

 これ(とほとんど同じ名前)を会社名にしちゃうのだから大したものです。まあホットというとは辛いという意味もあるので、一味違うチップという意味でHOTCHIPという会社名にしたのかも知れません。そういう元気な会社だから入出力ピンが同じという大胆な仕様のバッテリーチャージャーチップを設計・販売出来るのかも知れません。

 もし日本で同じ設計を提案したら、周囲から危ないだろ!などとボコボコに反対されてたぶん製品になることは無い気がします。そんなこと考えると、こういうチップを採用したダイソーという会社は、只者ではない気がしてきました。

ダイソーの300円モバイルバッテリー(充放電容量)

 ダイソーに行ったら300円モバイルバッテリーが出ていたので、即買いしました。同じような物が去年の10月頃にも販売されていたらしいのですが、その時は出遅れてしまって買うことが出来ませんでした。ちなみに去年出た物は、ファンシーなキャラクターのイラストがプリントされていたようですが、今回売られていた物はイラストなどの印刷は全く無しです。

▼300円モバイルバッテリー
ダイソーの300円モバイルバッテリー
 白と黒があったのですが、白を買いました。写真のようにUSB-A/マイクロUSBの短いケーブル付きです。表示されている仕様は入出力共5V/1000mAとなっていて、2000mAhと書いてあるのはバッテリーの容量のことでしょうか。

▼ミニオシロの電源にちょうど良さそう
ミニオシロの電源にちょうどいい
 ダイソーで見た時にすぐに浮かんだのがこの使い方、ミニオシロの電源として使うとサイズ的にもぴったりです。このモバイルバッテリーにaitendo で買った9V USB昇圧ケーブルを挿してミニオシロに電源を供給しています。

 ここで気になるのがバッテリー容量です。ということでUSBバッテリーチェッカーを使って容量を測定してみました。

▼放電容量測定
放電中
 自作の電子負荷を接続して放電容量を測定しました。なお負荷は10Ωの低抗相当の条件で行いました。つまり出力電圧は5Vなので電流は0.5Aということになります。

 放電が終わるとモバイルバッテリーは自動遮断しますが、USB充電チェッカーには放電量が記録されています。何らかの電源を使ってチェッカーに通電すれば記録が表示されるので放電容量が判ります。

▼放電容量
USB容量チェッカー
 放電した電力量は4951mWhだったことが判ります。

 このようにして完全に放電させておいて、次に充電のための電力量を測定します。やり方は簡単で、USBバッテリーチェッカーを経由して充電するだけです。結果はフル充電に必要な電力量は8125mWhでした。

 なお、充電電流は0.5Aほぼ一定で、放電電流は最大1Aという感じでした。充電電流のmaxは1000mAということになっていますが、実際には500mAに抑えているようでした。

▼充電/放電コネクタ
USB-AとマイクロUSB
 充電用(IN)がマイクロUSBで放電用(OUT)がUSB-Aコネクタになっています。同時挿しは禁止と取説に書いてありますが、両者のコネクタの間隔が狭いので物理的に同時挿しは出ない(難しい)ようになっています。つまりバカ除けを狙った構造なんだと思います。それにプリント基板の面積も節約出来るので一石二鳥なんでしょう。

 ところで、殻割りして中の回路を調べると実はこの二つのコネクタの電源ピンは単にパラにつながっているだけ。つまり、INもOUTも関係無いという衝撃の事実があるのですが、その話は次の記事で触れることにします。

 話を充電の電気量に戻します。充放電の電力の関係をブロック図に書くと下図のようになります。

▼電力の収支
充放電のブロック図
 (図の単位が間違ってました、×8125mW 〇8125mWh、×4951mW 〇4951mWh)

 充電したエネルギーに対して放電したエネルギーの比率は 4951 / 8125 = 0.606 つまり総合効率は60.6%ということになります。

 ここでちょっと乱暴ですが、上の図の充電回路と昇圧コンバーターの効率がどちらも同じであると仮定すると、各々の効率は77.8%ということになります。この計算には電池の充放電効率が入っていないので、実際の回路の効率はもう少し良くて80%を少し超えている程度だと思います。これは今時のDCDCコンバーターの効率としてはあまり良い値ではありませんが、とんでもなく低いという値でも無いと思います。

 ついでに電池のエネルギーを計算すると、電池に蓄えられたエネルギー量は 8125 x 0.778 = 6321mWh となります。 ここで電池電圧が 3.6V と仮定すると、電池電流容量 = 6321 / 3.6 = 1756mAh ということになります。これ、公称の2000mAh より少し少ないですが、まあこんなもんでしょう。なお、リチウム電池の高性能な物は3000nAh以上の容量があるらしいので、この製品に使われている電池は、ランクの低い物ということなんでしょう。

◆ここまでのまとめ
 電池容量が公称値より少し少ないですが、まあ値段を考えると悪くない性能だと思います。これならどこかに置き忘れてしまっても惜しくありません(オイ!)。

 ちなみに、ミニオシロの消費電流は220mA(9VのDCDCコンバーターケーブルのUSB入力電流)なので、約4.5時間は連続動作出来ることになります。これってそこそこ実用的な値だと思います。

 次回の記事では分解して内部回路を調べて行きます。なお、内部回路については先人の方がすでに詳しい調査をやられているので、そういう情報を見ながら再確認していく作業になると思います。

ArduinoでI2Cキャラクタ液晶を使う(その3) 最終動作確認

 ArduinoからI2Cインターフェイスのキャラクタ液晶を使う話の最終回です。前回の記事で選んだI2Cキャラクタ液晶表示ライブラリの I2CLiquidCrystal (N. Mitsunagaさん) を使って実際に表示を行ってみます。なお、このライブラリにはいろいろなサンプルが入っているのでデモプログラムには事欠かないのですが、私が特に気にしている lcd.setCursor と lcd.print について自作のテストプログラムを動かしてみます。と言っても以前作ったものをちょっと手直ししただけのものです。

 プログラム自体の説明は後回しにして、表示結果は以下の写真の通りです。なお、接続回路図は、以前の記事に掲載したものと同じです。また、ライブラリのバージョンは I2CLiquidCrystal-1.5.zip を使いました。

▼実行結果
Arduino UNOの電源電圧
 CPUチップの温度と電源電圧を連続表示します。うまくいっているようです。

 なお、CPU温度の測定精度はかなり怪しくて大きなオフセットを伴っています。つまりこの表示の絶対精度はあてになりません。但し、分解能は高くて 0.1度あるので、CPUを指で触ると温度がどんどん上がることが判ります。

▼プログラム
/* CPU温度センサーと電源電圧の読み出し、表示デモ
初版 2014/7/19
改版 2017/06/11 I2C液晶用に修正 ラジオペンチ
http://radiopench.blog96.fc2.com/
*/
#include <I2CLiquidCrystal.h> // http://n.mtng.org/ele/arduino/i2c.html
#include <Wire.h>

I2CLiquidCrystal lcd(20, true); // コントラスト(0-63),液晶電源(true=5V, false=3.3V)

void setup() {
pinMode(13, OUTPUT);
lcd.begin(16, 2);
lcd.print("Starting...");
delay(1000);
Serial.begin(9600);
}

void loop() {
float temp, Vcc;
digitalWrite(13, HIGH);
temp = cpuTemp(); // CPU温度測定
Vcc = cpuVcc(); // 電源電圧測定
digitalWrite(13, LOW);

Serial.print("Temp= "); // シリアルに温度を出力
Serial.print(temp,1);
Serial.print(", Vcc= "); // シリアルにVccを出力
Serial.println(Vcc,2);

lcd.setCursor(0, 0); // 液晶に表示
lcd.print("Temp= ");
lcd.print(temp,1); // 温度、小数点以下1桁表示
lcd.print("c "); // 単位表示と後ろのゴミ消し
lcd.setCursor(0, 1);
lcd.print("Vcc = "); // Vcc
lcd.print(Vcc,2);
lcd.print("V "); // 単位表示と後ろのゴミ消し

delay(500);
}

// 流用する場合は以下を全てコピーする

float cpuTemp(){ // CPU温度測定関数
long sum=0;
adcSetup(0xC8); // Vref=1.1V, input=ch8
for(int n=0; n < 100; n++){
sum = sum + adc(); // adcの値を読んで積分
}
return (sum * 1.1/102.4)- 342.5; // 温度を計算して戻り値にする。-342.5は要調整
}

float cpuVcc(){ // 電源電圧(AVCC)測定関数
long sum=0;
adcSetup(0x4E); // Vref=AVcc, input=internal1.1V
for(int n=0; n < 10; n++){
sum = sum + adc(); // adcの値を読んで積分
}
return (1.1 * 10240.0)/ sum; // 電圧を計算して戻り値にする
}

void adcSetup(byte data){ // ADコンバーターの設定
ADMUX = data; // ADC Multiplexer Select Reg.
ADCSRA |= ( 1 << ADEN); // ADC イネーブル
ADCSRA |= 0x07; // AD変換クロック CK/128
delay(10); // 安定するまで待つ
}

unsigned int adc(){ // ADCの値を読む
unsigned int dL, dH;
ADCSRA |= ( 1 << ADSC); // AD変換開始
while(ADCSRA & ( 1 << ADSC) ){ // 変換完了待ち
}
dL = ADCL; // LSB側読み出し
dH = ADCH; // MSB側
return dL | (dH << 8); // 10ビットに合成した値を返す
}
 このプログラムはかなり前に書いた「外付け部品無しでArduinoの電源電圧を測定する」という記事に掲載したもので、インクルードするライブラリを入れ替えて、初期化の設定を修正しただけです。動作としては、CPUの電源電圧と温度を連続表示します。43行以降が測定ルーチンですが、このプログラムはCPUのレジスタを設定するだけで動いています。つまり外部の配線は何もしなくていいので、今回のように、ちょっとした動作確認をしたい時に使うと便利です。

 33行で温度を小数点以下1桁、37行で電圧を小数点以下2桁表示するように指定しています。こういうふうに表示フォーマットを指定出来るとプログラム作りが楽になります。

◆まとめ
 ということでうまく表示が出来るようになったので、I2Cインターフェイスのキャラクタ液晶を動かすライブラリの話は終わりです。I2Cインターフェースは少ないピン数で表示が出来るので便利になるはずです。

 あと、この後はこの液晶を使って日の出日の入りタイマーを作る予定です。そちらは進展があったら記事にする予定です。
カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード