軽負荷時に効率がいいDCDCコンバータの選び方

電池駆動の製品でDCDCコンバータを使うとなると、効率が非常に大事になってきます。

それだけでも結構難しい問題ですが、「スタンバイ時間が長い」となるとさらに難しくなります。

 

電池駆動製品の場合、スタンバイのときは数十uA程度の電力で待機することになると思います。

スタンバイ時に1mAも消費していたら、スタンバイだけですぐに電池が終わってしまいます。

 

しかし、「大電力の時に効率がいい」設計をすれば低負荷のときにも効率がいいとは限りません。

軽負荷時に消費電力を下げるにはいくつかの工夫が必要です。

 

・消費電流が小さいDCDCコントローラを選ぶ

当たり前ですが、大事です。

DCDCコンバータのコントローラICでは数mA以上の消費電流が流れるものも多く、そんなものを選んでしまったらどうにもなりません。

 

・場合によってはFET外付けを選択する

最近のDCDCコントローラICはほとんどFET内蔵です。

しかし、FET外付けタイプではさらに消費電流が低いタイプがあったりします。

そういうときは、めんどうではありますが、FET外付けタイプを選択するのも手です。

 

・発振周波数が低いものを選ぶ

FETのON/OFFが切り替わる瞬間、つまりFETが半分ONになっているような瞬間があります。

そのときにはFETの抵抗が高い状態であり、電力がFETで消費されてしまいます。

また、FETのゲートを駆動するためにも電力が消費されます。

このような理由から、FETのON/OFFが変化する回数は低いほうが効率が良くなります。

つまり、発振周波数が低いほうが効率がよくなります。

その代わりに、大きいコイル・コンデンサが必要になってしまいますので、トレードオフで判断しましょう。

 

以上、小田切でした。

日本国内の電波の割り振り状況を知りたい時

無線機器などの設計に関わると、

 

「日本国内の電波ってどういう割り振りになっているんだ?」

 

と疑問に思うことがよく有ります。

 

実際の設計では、「900MHz帯をつかいます!」とか「400MHz帯をつかいます!」とか決め打ちなので、日本国内のすべての電波の割り振り状態を知りたいということはあんまないんですけどね。

それでも、予備知識として見ておきたいということがあります。

 

そんなときは、総務省のWEBサイトをみればいい!

 

我ながらなんてひねりのない回答でしょうか。

 

総務省 周波数割当て

http://www.tele.soumu.go.jp/j/adm/freq/

 

見てみると分かるのですが、すべてぎっちりです。

隙間がありません。

隙間があるところはすべてアマチュア無線などに割当されるでしょうから、当たり前といえば当たり前で

す。

電波については下から上まで使い尽くされていることがよくわかります。

 

そして、すごく細切れです。

もっとざっくり区切ってあればいいのですが、すごく細かい刻みで用途が分かれています。

これではEUと電波周波数を合わせようと思っても無理なわけです。

これだけ細分化して用途が振られていれば、ずらそうにもずらすことができません。

 

この割当を見て仕事に活かすということはすくないかもしれませんが、いざという時のために頭の隅においておくといいと思います。

いつでも総務省のWEBでみることができます。

 

以上、小田切でした。

CPUのクロックにはどれだけの精度が必要なのか

CPUのクロックについて考えていると、

 

「CPUには内蔵発振器が入っていて精度が1-3%、水晶振動子を外につければ20ppm(0.002%)。もちろん、水晶振動子を使うほうが良いのは分かる。じゃあ、内蔵発振器でもいいのはどういうとき?」

 

という疑問にぶち当たります。

水晶振動子を使うのならまず問題ありませんが、内蔵発振器が入っているので可能ならそちらで済ませたいものです。

「誤差が大きくてダメだ!」

ということは簡単ですが、どの程度までの誤差が許されるのかきちんと認識していることは少ないのではないでしょうか。

 

◯精度を全く気にしなくていい場合

もし、その製品がスイッチを監視していて、スイッチが押されたらモータを回すだけというような……要は簡単な電子工作みたいなものだったら精度はまったく不要です。

なぜならここに時間的要素が一切ないからです。

(もし、モータを回す時間に1%のずれも許されないようであれば、駄目ですが)

 

基本的に、「何かを時間的にきっちり正確に動かす必要がなく、他のデバイスと非同期通信をしない」というのであればクロックの精度は不要になります。

 

 

◯精度は必要だが内蔵発振器でもいける可能性がある時

スイッチが押されたらモータを回す、という程度の機能であっても、他のデバイスと通信するとなるととたんに時間が大事になってきます。

SPIやI2Cのようなクロック信号がある同期信号では、お互いにクロックで同期をとるのでメインクロックのずれなど問題になりません。

しかし、UARTのようなクロック信号がない非同期信号では、一定の時間ごとにデータを送るので、メインクロックがずれているとデータを送るタイミング・受けるタイミングがずれて、ビットがずれたデータを送受信してしまいます。

そうすると、通信が確立しません。

 

なお、UARTでは2~3%のクロックのズレならば問題なく通信できる可能性が高いです。

しかし、送信と受信の両方で2%ずれたら合わせて最大4%ずれてしまいます。

片方が水晶振動子駆動で精度がよいという条件か、互いにズレが1%程度という条件でないと厳しくなります。

 

◯精度が必要すぎて水晶振動子が必須な場合

まず、時計です。

外付けのRTCなどを使用せずに、CPUが自分で時刻をカウントするという時点で水晶振動子は必須になります。

1%のずれがあったら、一日に14分もずれてしまうのでまったく実用になりません。

 

つぎに、無線内蔵CPUです。

無線通信(RF)では法律により、厳しく周波数の範囲を決められています。

たいてい50ppm程度しかずれてはいけません。

この時点で水晶振動子が必須です。

 

 

というようなところで、なんとなく感覚つかめたでしょうか。

 

以上、小田切でした。

LDOの最大出力電流は信じてはいけない

LDOのデータシートを見ると「最大出力電流:1A」などと書いてあると思います。

ですが、これは信じていはいけません。

 

なぜでしょうか。

 

最大出力電流1Aというのは、

・電流制限機能が1A以上になっている(1Aまでは電流制限が効かない)

・電流を制御している素子が1A以上耐える

といっているだけです。

 

「え、1Aに耐える素子が入っていて、電流制限も聞かないんでしょ? じゃあOKじゃん」

 

と思うかもしれませんが、これが間違い。

一つ忘れている項目があります。

それは

 

 

です。

 

「1A流したときの熱に耐えられるか?」はこの項目に入っていないのです。

この判断には「許容損失」という項目を見る必要があります。

 

例えば、このLDOの許容損失が基板実装時に2Wだとします。

 

5Vから3.3V 1Aを作る場合では、

LDOの損失=(5-3.3)x1=1.7W

ですから、許容損失以下でOKです。

 

12Vから3.3V 1Aを作る場合では、

LDOの損失=(12-3.3)x1=8.7W

ですから、許容損失を大きく超えてしまいNGです。

 

このように、入力電圧によってLDOの損失=熱が変わってしまい、許容損失以内かそうでないかがかわってしまうのです。

 

ということで、データシートの電流表記を見るだけでなく、許容損失で実際にどれだけの電流が流せるか確認するようにしましょう。

 

以上、小田切でした。

LDOのリップル除去率とは

LDOの特性を見ていくと「リップル除去率」というものがあります。

 

LDOで例えば5Vから3.3Vをつくるとします。

しかし、5Vが揺れていて±0.1Vの間をフラフラしています。

すると、出て来る3.3Vも±0.1V変動するのでしょうか。

いえ、それが違います。

それがリップル除去率です。

 

例えばリップル除去率が60dBのばあい、20dBで10倍ですから、1000倍になります。

ということは、入力が±0.1V揺れていても、出力は±0.1mVということになります。

LDO自体が出すノイズやその先の回路の消費電流変動による電圧変化のほうが大きいでしょうから、

実質的には入力元が±0.1V揺れていた影響はまったくないということになります。

 

これを聞くと非常に素晴らしく感じると思います。

 

「どんな汚い電源でもLDOを挟めばすごくきれいになるんだ。素晴らしい」

 

しかし、実はそうではありません。

まず、LDOというのはそんなに速い動きをするデバイスではありません。

あんまり俊敏に動くと電圧変動に過敏反応して発振してしまいます。

なので、位相保証などの機能であえて動きを抑えてあります。

 

ということは、遅い動きには対応できても、速い動きには対応できません。

LDOのリップル除去率のグラフを見てみると、たいていどんなLDOでも周波数が上がるとリップル除去率は落ちていきます。

よくても数百kHz程度が実用域です。

(10kHzぐらいで効かなくなるものもあります)

数MHz以上のノイズを除去する能力はほとんどありません。

 

ということで、リップル除去能力は非常にありがたいものですが、低い周波数専用です。

もし、LDOを使って綺麗な電源を作りたいのであれば、インダクタやフェライトビーズと組み合わせましょう。

そうすると、高周波も低周波もノイズを抑えた電源が作れます。

 

以上、小田切でした。

CPUの消費電力はクロックに(ほぼ)比例する

CPUのデータシートを見たことがあれば、「低消費電力モード」だとか「低速モード」だとか「低速オシレータ」とかそんな言葉を見たことがあると思います。

そういったものを見ていると、

 

「CPUは速度を遅くすると電気を消費しないんだ」

 

と分かってくると思います。

でも、なんでクロックが遅いと電気を食わないのでしょうか。

CPUを抵抗成分だと仮定すると、電圧が一定ならばクロックがどうだろうと電流は同じはずです。

 

ということは、CPUは電源から見て抵抗ではないのです。

 

実は、CPUというのは、というかデジタル回路というのは、ロジックが遷移するときにだけ電気を食います。

High→Low

Low→High

のときに電気を消費するわけです。

レベルが変化しなければ電気は理想的にはゼロ、実際にも微々たるものです。

 

何故かと言うと、CPUがCMOSというFET回路の塊だからです。

大昔のIC・CPUはトランジスタで出来ていました。

トランジスタというのはONにするためには常に電流が流れていないといけません。

もし電流が流れなければOFFになってしまいます。

CPUの中には大量のデジタル信号があり、当然のONのトランジスタも多いわけですから、合計では莫大な電流を常時消費するわけです。

しかし、FET回路は電圧駆動です。

電圧をかければ電流がほぼ流れずON/OFFできます。

つまり、CPUの中でONのFETが多くても別に電流が流れないわけです。

理想ではなく、現実でもほとんと電流が流れません。

つまり、止まっている状態ではほとんど電気を食わないのです。

しかし、回路には寄生容量があります。コンデンサがあちこちについているのです。

なので、ロジックが変化するときにはそのコンデンサを充電・放電する必要があり、それが電流を消費するのです。

CMOS回路自体の消費電流は微々たるものだが、寄生容量が電気を食うということです。

 

そして、クロックが速ければロジックの変化が大きい=充放電回数が多い=消費電流が多い。という関係が成り立つわけです。

 

以上、小田切でした。

CPUの入力ピンにプルアップ・プルダウンをつけないと何がいけない?(初心者向け)

CPUの入力ピンやその他のICの入力ピンには、基本的にプルダウン抵抗かプルアップ抵抗をつなげないといけません。

 

「プルアップかプルダウンしないと、HighかLowか決まらないからでしょ。でも、使ってない機能とかHighでもLowでもどっちでもいいピンはどうでもいいんじゃない?」

 

と思うかと思いますが、そうじゃないんです。

デジタル回路は「High」か「Low」しかないんです。

中間値というのはないんです。

中間値を入れると大げさでなく壊れることが有ります。

中間の電圧を入れるとデジタル回路ないの回路構成上、IC内で電源とGNDがショートした形になり、大電流が流れてICが破損するのです。

(なので、HighからLowへの変化もあまりゆっくりだと問題がでます。変化も早くないといけません)

 

なので、全く使っていなくて「どっちでもいい」ピンであっても、かならずプルアップかプルダウンをいれましょう。

CPUの場合は出力ピンにすることでプルアップ・プルダウンが不要になりますが、入力しかできないピンはやはりプルアップ・プルダウンが必要です。

 

なお、プルアップ・プルダウンが内蔵されている場合は、外で抵抗を付けても着けなくてもいいですが、内蔵と逆方向に着けないように気をつけましょう。

 

以上、小田切でした。

プルアップ抵抗・プルダウン抵抗の値の決め方は?(初心者向け)

初心者向けに。

回路の勉強を始めると、ハイインピーダンス状態の信号線のレベルを確定するためのプルアップ抵抗やプルダウン抵抗に出くわすと思います。

プルアップ抵抗・プルダウン抵抗の詳しい説明はここではしません。

 

それで、プルアップ・プルダウンの意味が理解できたとして、そこで困りませんか?

 

「意味はわかったけど、何Ωを使えばいいの?」

 

先に正解を言ってしまうと、回路の特性によりけりですが、殆どの場合4.7kとか10kあたりで問題ありません。

 

例として、すごく簡単な回路を使います。

 

[IC1の出力ピン]—[IC2の入力ピン]

信号レベル:3.3V

IC1の出力:H/L/Z(ハイインピーダンス)

 

入力ピンと出力ピンを直結するだけ。

だたし、出力ピンはハイインピーダンスがある。

このハイ・インピーダンスは避けたいので、途中の配線にプルアップかプルダウンを入れるというパターンです。

 

まず、最大値を考えましょう。

もし本当のハイインピーダンスだったら抵抗値無限大なので、1ギガΩみたいな値を使っても大丈夫です。

しかし、実際にはピンの漏れ電流があります。

ここでは1uAとしましょう。

そうすると、3.3MΩの抵抗値を使うと、漏れ電流だけで3.3Vスイングしてしまいます。

そうなると、これよりは小さくないといけません。

10分の1の330kΩで0.33Vです。

これぐらいの値なら大丈夫そうですね。

ということで、最大値は100kΩ~1MΩの間ぐらいとなります。

 

次に最小値を考えましょう。

最小値は出力ICの駆動能力次第です。

ここでは10mAとしましょう。

3.3Vで10mAが流れるのは330Ωです。

ということで、330Ωの抵抗はぎりぎり駆動できることになります。

 

ということで、330Ω~(100k-1Mの間)となります。

1k,2,2k,4,7k,10k,22k,33k,47k,100k…どれでもいけます。

 

とまぁ、ここまでこうやって考えてきましたが、実際にはこんな考察をあまりしません。

会社ごとによく使っている組み合わせというものがあって、だいたいそれにしてしまいます。

ある会社は10kΩ。

ある会社は4.7kΩ。

そんな感じです。

実際にこれは上記の考察の中間値なので、妥当な値です。

 

ということで、何も考えたくないときは4.7kや10kを使って置けばだいたい問題ありません。

気になるときは漏れ電流と駆動電流から自分で計算してみましょう。

 

以上、小田切でした。

意外と大事なI2Cのプルアップ抵抗

I2Cバスをご存知でしょうか。

I2Cはデータ線:SDAとクロック線:SCLで双方向通信ができる、とても低コストな信号規格です。

(正確にはもともとのI2Cの規格をきっちり守ったわけではない「なんちゃってI2C」ばかりですが、まぁ、I2Cです)

 

信号線が少ないだけでなく、「バス」なので複数のデバイスをつなげます。

つまり、CPUから伸びる配線はSDA&SCLの二つだけですが、そこにEEPROM、RTC、センサー・・・といろいろなデバイスを複数個繋げられるのです。

ピン数が少ないCPUでは非常に心強い味方です。

(ICごとにアドレスが違うので、CPUがアドレスを指定して通信することで複数個つなげても通信が混信しない)

 

また、信号速度も最大400kHzと低速です。

 

・信号線が2本のみ

・速度も遅い

 

ということで、ハードウェア設計的には非常に簡単です。

よほど酷いパターンをひかない限り普通に動きます。

 

が、一つだけ注意するべきところが「プルアップ抵抗」です。

 

I2Cは信号線がプルアップされており、それぞれのデバイスがそれをLに落とすことで通信をしています。

理想状態ではプルアップ抵抗は何Ωでも大丈夫なのですが、実際にはそうはいきません。

I2Cバスに接続される信号線にはGNDとの間に寄生容量が発生します。

さらに、各デバイスのピンにも寄生容量があります。

 

つまり、I2CのバスをLやHに変化させるときにはその寄生しているコンデンサを充放電する必要があるわけです。

その事自体はどんな信号線も同じです。SPIだろうがMIIだろうが。

でも、他の通信規格はたいていプッシュプルで駆動するので、寄生容量の充放電は速いのです。

ところが、I2Cは・・・

H→Lのときは、問題ありません。

デバイスが信号線とGNDをショートさせるので速やかに電荷が抜けてLになります。

問題は、L→Hのときです。

このとき、デバイスはハイインピーダンスになるだけです。

プッシュプルのように電源と信号線をショートさせたりしません。

ただ単純にプルアップ抵抗から流れてくる電流で寄生容量に充電していくのです。

ということは、「物凄く遅い」のです。

 

対策としてはプルアップ抵抗を小さくすることですが、あまりに小さくするとデバイスのドライブ能力を超えてしまいますし、消費電流も大きくなります。

なので波形的に問題ない範囲でプルアップ抵抗は大きくしたいのです。

というところで、現実的には1~10kΩという範囲内で大体うまく行きます。

 

I2Cを使う際には波形をきちんと見てプルアップ抵抗を調整しましょう!

 

以上、小田切でした。

電子回路は意外とアバウトなシロモノであることについて

閑話休題的な話。

 

電子回路というのは「きっちり」したものだと大抵の人は思っています。

しかし、エンジニアは知っています。

「適当なもの」だと。

 

そして、適当なものだからこそきちんと動かすのが面倒だと。

 

たとえば、古典的なタイマーIC(555)とかで時間を測るとしましょう。

これはコンデンサに電荷がたまる時間で時間を計測します。

しかしコンデンサというのは普通に誤差が20%ぐらいあったりします。

なので、1分を測定しようとして設計したのに、ものによっては50秒になってしまったり、ものによっては1分10秒になってしまうわけです。

想像以上に適当な感じなのです。

 

抵抗だって5%も誤差があって、インダクタだって10%以上の誤差があって、CMOSのスレッショルドでさえ誤差があります。

その上、すべての要素が温度や経時変化でさらに変化します。

 

実は電子回路の中できっちりしていて精度の高いものは非常に限られています。

ハッキリ言って水晶振動子ぐらいです。

こいつは誤差が「20ppm(100万分の20)」とかなので、コンデンサなどで時間計測するのに比べて飛躍的に精度が上がります。

ほとんどの電子機器はCPUに水晶振動子が付いています。

だから、水晶振動子でクロックを刻んでいるから正確なのです。

水晶振動子を使用しない時間を測定する仕組みはどれも精度が数%程度です。

 

それ以外はすべて適当です。

高精度抵抗でも1%、そこそこ高精度な電源でも2%程度のずれはあります。

つまり、量産品は個別に調整しない限り、すべての部品で%単位のズレが発生してしまうわけです。

製品全体ではそれ以上のズレが発生することになりますが、それでも製品として成り立つようにしないといけません。

 

ということで、電子回路というものは「きっちりしたものを組み立ててきっちりしたものを作る」のではなく、

「誤差が大きくておおざっぱな物を組み立てて、それでもきちんと動くように考えるのが設計の仕事」

と考えてもらうと現実に近いかと思います。

 

以上、小田切でした。