意外と考えないといけないLEDの配線

アートワーク(基板設計)で配線を引く時、リセット信号や高速信号線には注意します。

リセット信号はできるだけGNDガードし、それが無理でも高速信号とは並走しないようにします。

高速信号はも同じように可能な限りGNDガードします。

 

そんな中、遅い信号はほとんど考慮しません。

遅い信号とは、スイッチ・ENABLE信号・LEDなどです。

こういうものは時々しか動かず、ほとんどHかLに固定されています。

遅いのでほとんどノイズをまかないのです。

 

が、今回ちょっと問題になってきたのは、LEDがPWM駆動しているという点です。

普通のLEDはON/OFFだけですが、PWM駆動となると下手すると1MHz近い速度で駆動します。

(普通はもっと遅いと思いますが・・・)

そうなると、ノイズをまくようになり、リセット信号と並走するのはちょっとまずくなってきます。

 

当初、LEDはOn/Offだけの予定だったので気にしてなかったのが、PWMになり配線に苦労……というパターンです。

 

ということで、普通は見逃しがちなLED配線ですが、PWM駆動の場合もありますのでご注意を。

 

以上、小田切でした。

ハードウェアのデバッグはソフトウェアが必要!

電子回路ののった基板を開発したら、まずハードウェア開発者がデバッグという動作検証を行います。

そして、問題なければソフトウェアの開発者の手に渡って開発が進みます。

 

……が、実際はそう簡単に行かないのです。

 

電源などはハードウェア開発者だけで確認ができます。

CPUにつながっているLEDの制御も、CPU用の開発環境からGPIOの制御ができればハードウェア開発者だけでもまぁ、みれないことはないです。(めんどいけど)

 

しかし、通信となるとお手上げです。

たとえば、UART通信。

SPI通信

I2C通信

etc

 

これらはCPUないのソフトウェアが出来ていないと動きません。

この通信バスにつながっているEEPROMなどもCPUからの通信がなければうんともすんともいいません。

つまり、動作確認が全く出来ないのです。

 

・ピン設定が間違っているかもしれない

・波形の品質が悪いかもしれない

 

そういったことは、通信ができる状態にならないと確認もできないのです。

 

ということで、結局の所、ソフトウェア開発者とハードウェア開発者の間で基板をやりとりしながら進めないといけません。

一箇所にいればまだいいですが、それぞれ違う場所にいるとまぁ大変。

 

と、こんなことであります。

 

以上、小田切でした。

軽負荷時に効率がいい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を使って置けばだいたい問題ありません。

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

 

以上、小田切でした。