似たような部品がたくさんある時、どうやって選べばいいのか?

回路設計する際に、「今回はこのCPUで行くからね」「このICで作って」と言われればある意味楽です。

意外と厄介なのが、縛りがほとんどない場合です。

 

例えば、電源です。

「DC15Vから5V,250mA以上作って」

と言われれば、レギュレータでもDCDCコンバータでも山のように該当品が見つかります。

 

「DC5Vラインに使う静電気対策の保護部品を選んで」

と言われれば、これも山のようにあります。

 

まず要求スペックがあってそれに該当する部品を選びます。

しかし、それに該当するものが3つ程度なら話は簡単ですが、数百個と出てきてしまうと……なんというか頭を抱えます。

設計者としては「最も適切だと判断した部品」を選ばないといけません。

「いいやこれで」とはなかなかいきません。

 

ということで、自分なりの基準をちょっと紹介したいと思います。

 

1,メーカー

聞いたこともなくて取引のないメーカー、中国メーカーなどはサポートが非常に心配です。

電子部品はトラブルがつきものですので、サポート・保証が信頼できない部品は出来る限り避けます。

「そのメーカーにしかない」などのやむを得ない理由がない限り、怪しいメーカーは選考外です。

 

2,部品サイズ

設計を開始する頃には「サイズに余裕がある基板」か「サイズに余裕がない基板」かが検討が付いています。サイズに余裕が無いときは、大きなパッケージの部品は選考外にします。

 

3,DIP品

DIP品とSMD品がある場合、DIP品は裏面に部品が搭載できず実装も面倒なことから、DIP品は除きます。

※強度が必要なコネクタのみDIP品を選定することもある

 

4,価格

ここまできたら価格です。

しかし、該当部品が多いと一つ一つ商社に見積もりを出しているとキリがありません。

DigikeyやChip1STOPでリールで買ったときの価格で相場を調べて判断します。

コスパが上位の部品のみ、正式に商社に見積もりをさせます。

 

5,納期

商社に実際に見積もりを出してみて、納期が異様に長い部品は避けるようにします。

 

こんなところでしょうか。

 

なにかのときの参考にどうぞ!

 

以上、小田切でした。

高周波測定はケーブルも大事!

無線通信で使うような、400MHzや900MHz、2.4GHzなどの高周波になるとちょっとしたことが大きく影響するようになってきます。

例えば、数十kHzのUART波形を測定する際に、太い線で引き出そうがエナメル線で引き出そうが、波形はほとんどかわりません。

というか、違いがわかりません。

 

ところが、高周波になってくるとそういったことが大きく影響してきます。

実は最近そういうことがありました。

900MHzを使う無線機器で、電波の出力レベルの確認のため基板から配線を引き出しました。

測定器側は同軸で入力するので、同軸ケーブルを使用します。

ですが、同軸ケーブルは硬いので基板の細かなパターンに直接はんだ付けすると、ケーブルのしなりでパターンが剥がれてしまいそうになります。

ということで、まず、基板上のパターンから3-4cmほどエナメル線で引き出し、そこから同軸ケーブルにつなげました。

しかし、この後数値が違うという問題になり・・・

結局のところ、そのエナメル線が問題だとわかりました。

同軸ケーブルの中に3-4cmのエナメル線部分があるだけで、なんと出力が3分の1以下になっていました。

 

「高周波を通すときは同軸ケーブルを使用して、高周波の出力部分から測定器まで特性インピーダンス50Ωで通す」

のが基本ですから、もちろんエナメル線は問題です。

私は基本的にはよくないと分かっていながらも、基板を壊すわけには行かなかったので「そこまで影響ないだろう」と甘く見ていました。

ところが想像以上に大きく変化していました。

 

ということで、みなさんも高周波を扱うときは気をつけましょう。

ケーブルを接続する際にも50Ωの線路から直接同軸ケーブルに繋がるように、上手くはんだ付けしましょう。

 

以上、小田切でした。

見落としがちな電源立ち上がり順序

大規模なSoCなどになると、電源を複数持っています。

例えば、コアに1.2V、メモリ用に1.8V、外部I/O用に3.3V・・・と3つぐらいの電源があるのは当たり前です。

こうなってくると面倒なのは、電源を用意すればいいだけではなく順番も重要になることです。

 

例えば、SoCのデータシートが

「1.2V、1.8V、3.3Vの順番に電源を入れてください」

と記載してあるとします。

(大体低い電圧から入れるのが普通です)

 

しかし、普通に電源回路を作るとどうなるでしょうか。

3.3V生成→3.3Vから1.8Vを生成→3.3Vから1.2Vを生成

みたいな構成になることが多いと思います。

すると、電源が入る順番は

「3.3V→1.8V→1.2V」または「3.3V→1.2V→1,8V」になってしまいます。

つまり、電源回路を普通に作って供給すると、高い電圧から供給されてしまうのです。

 

非常に面倒な点です。

 

解決策の一つは、そのSoC専用に設計された電源ICがあればそれを利用することです。

そういうものがあればそれを利用するのもいいでしょう。

もう一つは、電源を制御するための回路を組み込む方法です。

上記の電源回路であれば、1.8Vと3.3Vの電源ラインにFETを入れておき、電流を遮断します。

そして、1.2Vの電圧が入ったら1.8VのFETをON、1.8Vの電圧が入ったら3.3VのFETをONにする回路を入れるのです。

 

初めてやると結構面倒な部分です。

 

ということで、複数電源があるICの電源投入順序は十分に気をつけましょう。

 

以上、小田切でした。

電源入れたままケーブルの抜き差ししちゃだめ!

今はUSBやSDカードなど、電源を入れたまま抜き差しできるデジタルなものがたくさんあります。

だからなんとなく、どんなものでも電源を入れたままケーブルを抜き差しする人が居ます。

 

設計者として言わせてもらうと、絶対に止めてくれ!!!

 

電源を入れたまま抜き差しすることを「活線挿抜(かっせんそうばつ)」といいます。

 

ケーブルの抜き差しの際にはケーブルのインダクタ成分による起電力が発生します。

要は抜き差しの瞬間に変な高電圧が発生するんです。

 

そして、端子が繋がる順番が超大事です。

GNDからつながればなんということはありませんが、電源と信号線だけが繋がるとこれは大変!

普通は、電源→GNDとながれる電流が、電源→信号線と流れるので、信号線に大電流が流れてICが破損することもあります。

 

ということで、活線挿抜に対応するには

 

1,GNDが最初に接続されるコネクタであること

(SDやUSBはそういう設計になっています。普通のコネクタはそうではない)

2,高電圧(サージ)対策部品がついていること

 

の二つが必須です。

 

基本的にはコネクタは電源OFFのときにしか抜き差ししては駄目。

そして、活線挿抜対応するにはコネクタから見直しが必要ということです。

 

以上、小田切でした。

CPUやICでコンデンサを付けろと書いてある端子の正体

どんな部品も電源にはパスコンとしてコンデンサをつけますが、これはそのことではありません。

 

「この端子とGNDの間に0.47uFのコンデンサを接続する」とか書いてある端子のことです。

 

謎、ですよね。

 

CPUを含むどんなICも、ピン配置を見れば大体用途や意味がわかるものです。

「ああ、コレはJTAG用か」

「これはGPIOか」

「電源接続ね」

「USB通信用ね」

 

しかし、そうでないものがあります。

何の説明がなく「未接続」と書いてあるものや、今回話題にしている「コンデンサを接続しろ」という端子です。

こういうの、普通に不明です。

一体何でしょうか。

 

え、知らなくていい?

 

知らなくてもOKですが、ちょっと知識として知っておきましょう。

 

実はこんな例があります。

 

1,内部電源用

たとえば、外部給電は3.3Vであっても内部で1.2Vなどを生成しているICがあります。

要はレギュレータを内蔵しているICということです。

しかし、レギュレータそのものはIC内に内蔵できてもコンデンサは無理です。

そのため、コンデンサは外付けしないとレギュレータとして動作しません。

そのため「(レギュレータ用のコンデンサとして)この端子とGNDの間に0.47uFのコンデンサを接続する」と書いてあったりします。

 

2,ローパスフィルタとして

中でアナログ信号を平滑化する際にフィルタとしてコンデンサが必要です。

そのフィルタ用のコンデンサを外付けする場合があります。

 

一番多いのは「1」だと思います。

あやしいなと思ったらそのコンデンサの両端をテスタで触ってみましょう。

それっぽい電圧が出てたら「なるほど」と納得してにやにやしてみてください。

 

以上、小田切でした。

Ethernet(LAN)の実現方法

「基板にLANコネクタを付けて、Ethernetにつなげたい!」

 

というのはよくあるパターンです。

一応、方法は2つあります。

 

1,Ethernetの通信を全部処理してくれるモジュールを買って、UARTで通信する

例えばXPortのような製品です。

基板のメインCPUには全く普通のものを利用して、メインCPUからUARTなどでモジュールを制御します。

Ethernetのハードウェア・ソフトウェアを作らなくていいので非常に楽です。

ただ、コストが高いので、単価が高い製品にしか使えません。

 

2,メインCPUでEthernetを処理する

まずメインCPUの選定から違います。

「Ethernet対応」とうたっているCPUを選びます。

が、それを買って直結すれば実現できるかというとそんな簡単なものではありません。

CPUに載っているのはMAC層まで・・・

 

WikipediaのOSI参照モデルを見てもらいたいのですが↓

https://ja.wikipedia.org/wiki/OSI%E5%8F%82%E7%85%A7%E3%83%A2%E3%83%87%E3%83%AB

 

こんな風にネットワークは層構造で実現しています。

そしてCPUにのっているのは下から2番めのデータリンク層(MAC)までです。

一番下の物理的に通信する層は搭載されていません。

つまり、「通信するデータは作れるけど、実際に電気的に通信するハードウェアを持っていない」ということです。

 

「だめじゃん!」

 

いや、そういうものなんです。

ほとんどすべてのEthernet対応CPUがそうなので諦めてください。

ということで、PHYというものが必要になります。

 

1,Ethernet対応CPU

2,PHY(CPUと接続されるLSI)

→実際に通信する電気信号を作る部品

3,パルストランス

→ショートや他の機器との電位差などから製品を保護するために通信を絶縁する部品

4,LANコネクタ(RJ-45)

→よく見る四角コネクタです

 

とまぁ、これだけ必要になります。

結構面倒なので、メーカが出している資料をじっくり見ながら作ることになります。

また、ソフトウェアの方もLinuxやTRONなど、TCP/IPがちゃんと扱えるOSが必要になるので、開発もそれなりに大変です。

 

以上、小田切でした。

 

P.S.

SoC(System on Chip)では、PHYがCPUと一緒に内蔵されている製品もある模様。

オシロスコープのプローブのトリマーはきちんと調整しよう

オシロスコープにはだいたい1kHzの出力がでている端子があります。

それをプローブで触ってみましょう。

そうすると、綺麗な1kHzの方形波が表示されます!

 

以上!!

 

・・・で終わればいいんですが、案外綺麗な方形波が出ない例が多いんです。

方形波なので平らに表示されるべきところが、斜めになっているんです。

これは出力している波形がおかしいんじゃありません。

波形を観測しているプローブに問題があるんです。

 

「え? このプローブ壊れてるの? 買ったばかりだけど? っていうか、使えてるよ」

 

壊れては居ませんが、調整ができてないんです。

 

「え、調整?」

 

そう、調整です。

けっこう無頓着な人も居ますし、そもそもそれを知らない人が居ます。

 

オシロスコープというのは高周波を扱うので、プローブ内部のコンデンサ容量とオシロスコープ内のコンデンサ容量の影響で波形が歪むのです。

そして、オシロスコープの機種や個体差によってコンデンサ容量が変わるので、プローブの容量もそれにあわせて調整しないと正しい波形になりません。

 

それを調整するにはどうするか。

プローブの何処かにトリマーコンデンサという、ドライバで回せる小さな部品があります。

1,プローブの持ち手に小さな穴があって、その奥にトリマーコンデンサがある場合

2,オシロスコープにつなげるコネクタ部の側面にトリマーコンデンサがある場合

の両方があります。

 

1,1kHz出力端子をプローブで触る

2,波形がおかしければ、トリマーコンデンサを回す

3,もう一度1kHz出力端子に触る

 

を繰り返していい感じに調整します。

これはプローブとオシロスコープの組み合わせで決まるので、一度調整しても別のオシロスコープに繋いだら崩れてしまいます。

なので、プローブを複数のオシロスコープで使いまわすのは止めたほうがいいです。

毎回トリマーの調整が必要ですし、トリマーはそもそも頻繁に回す想定でないので、何度もやっているとトリマーはすぐ壊れます。

だからといってトリマーを調整しないとただしい波形が取れません。

それじゃ意味がありません。

 

ということで、

・プローブをオシロスコープにつなげる際にはトリマーを調整する

・複数のオシロスコープでプローブを使いまわさない

ということに注意しましょう!

 

以上、小田切でした。

組み込みCPUって小数の計算ができないの!?

という話題について。

INTELやAMDやARMだとか、パソコンやスマホに入っているCPUは計算能力に特化しているので、整数も小数も超高速に計算できます。

 

が、組み込み用途で使うようなCPU(マイコン・MPU)なんていうのは非常に貧弱なため、全然違います。

組み込みマイコンでも高い部類(千円に近い値段)のものは浮動小数点のハードウェアを持っているのでそれなりな速度で計算できますが、

普通の安いマイコンではそもそも浮動小数点のハードウェアを持っていません。

つまり、整数計算しかできません!

それもスマホやPCみたいに64bitなんてのではなく、16bitや下手したら8bitだったりします。

 

要は、小数の計算が出来ないどころではなく、整数の計算すらしょぼいのです。

8bitのマイコンでも32bitなどの大きな数値を計算することは出来ますが、「8bitごとに足し算して繰り上げて上の桁の計算に使用して……」なんてことをするので4倍以上の時間がかかります。

浮動小数点も同様です。

浮動小数点数の仮数部だけを個別に計算して、指数部もまた個別に計算して……

要はプログラムでビット操作を延々として浮動小数点数の計算を行うのです。

考えてみればわかると思いますが、浮動小数点数の計算をビット操作でやるなんてめっちゃ大変です。

普通に整数計算の数十倍とかかかります。(下手したらもっと?)

 

さらに「浮動小数点同士の足し算・引き算・掛け算・割り算」をソフトウェアで行う必要があるので、そのためのライブラリをプログラム内に入れる必要が出てきます。

容量が数十kBしかないCPUだとけっこうな負担になります。

 

……ということで、浮動小数点数のハードウェアを持っていないCPUでは基本的には

・計算がありえないほど遅い

・ROMの容量が足りなくなる

ということで使わないという判断をすることが普通です。

 

以上、小田切でした。

ウォッチドッグタイマーとは?

CPUにウォッチドッグタイマーという機能があります。

回路設計そのものでは知らなくても問題ありませんが、ソフト開発者と話すときの知識としては知っておいたほうがいい機能です。

 

実際の運用ではハードの問題やソフトウェアのバグで、CPUの動作がおかしくなってしまうことが有ります。

そんなときに復帰させるのは非常に難しいです。

なにしろ、頭であるCPU(またはプログラム)がおかしくなっているので、制御もできません。

そんなときの対策として組み込まれている「ウォッチドッグタイマー」です。

 

どういう機能かというと、

「定期的にウォッチドッグタイマーに『ちゃんと動いているよ』と言わないと、CPUをリセットしちゃう機能」です。

例えば、なにかを10個のセンサーを監視しているプログラムがあるとしましょう。

そうしたら、「10個のセンサーを監視し終わったらウォッチドッグタイマーに通知して最初に戻る」というプログラムを組みます。

そうすると、どこかのセンサー監視中に処理が止まってしまった場合、ウォッチドッグタイマに通知が行かなくなります。

そうすると、ウォッチドッグタイマーは「あれ、通知が来ないな。リセットだ」とCPUをリセットするので、CPUが復帰することが出来ます。

 

こんな機能ですので、頭においておきましょう。

 

以上、小田切でした。

ICの「5Vトレラント」とは?

ロジックICやCPUで「入力は5Vトレラントです」という記述にぶつかることが有ります。

これはなんでしょうか。

 

例えば、3.3Vで動いているロジックICの入力電圧は普通最大3.3Vです。

1.8Vで動いていれば入力電圧は1.8Vまでです。

(正確には絶対最大定格で電源電圧+0.3Vぐらいは許容されていますが)

このように、普通のICの入力電圧は電源電圧と同等です。

もし電源電圧以上の電圧を入力端子に入力すると、電流が電源に戻っていってしまいます。

つまり、3.3V電源のICの入力端子に5Vを入れると、3.3V電源に電流が流れて3.3V→約5Vまで上がってしまうわけです。

そもそも部品が壊れます。

 

ということで、3.3Vで動いているIC・CPUに5Vやそれ以上の電圧の信号を入れる場合、電圧レベルを変換する回路(レベルシフトICやトランジスタで組むなど)が必要になります。

でも、やっぱり面倒なんです。

 

ということで「5Vトレラント」というのは、「電源電圧に関わらず入力端子に5Vまで入れてOK」という設計だということです。

これは嬉しいです。

例えば、3.3Vや1.8Vといった低電圧で動いていても5Vを入れられるので、回路が非常にシンプルになります。

こんな便利な5Vトレラントですが、結構レアです。

もし使おうとしている部品が5Vトレラントだったらラッキーと思ってください。

 

以上、小田切でした。