電子工作の基礎知識
CHIRIMEN でセンサーやアクチュエーターを扱う前に知っておきたい、電子工作の基礎知識をまとめた資料です。
このセクションの多くのページは、SparkFun Learn の チュートリアルを日本語に翻訳したものです。SparkFun Learn のチュートリアルは CC BY-SA 4.0 ライセンスで公開されており、 各ページの末尾に元記事へのリンクとライセンス表示を掲載しています。
目次
- 電子工作の基礎知識
- 電気とは何か
- 電圧、電流、抵抗とオームの法則
- 回路とは何か
- 直列回路と並列回路
- メートル法の接頭辞とSI単位
- 回路図の読み方
- 配線の基本
- コネクタの基礎
- ブレッドボードの使い方
- テスターの使い方
- 電力
- 極性
- 分圧回路
- プルアップ抵抗
- 交流と直流の違い
- アナログとデジタルの違い
- 2進数
- アナログ-デジタル変換 (ADC)
- デジタルロジック
- ロジックレベル
- LogicBlocksとデジタルロジック入門
- 16進数
- ASCII
- シリアル通信
- SPI(シリアルペリフェラルインターフェース)
- I2C
- シリアルターミナルの基礎
- 赤外線通信
- 光
- 抵抗器
- コンデンサ
- ダイオード
- 発光ダイオード(LED)
- LEDはどうやって作られるのか
- トランジスタ
- 集積回路
- ボタンとスイッチの基礎
- 電池とは何か
- 電池の技術
- プロジェクトへの電源供給
- LiPo USB充電器の使い方
- はんだ付け対応ブレッドボードの使い方
- はんだ付けの基本(スルーホール編)
- 電子部品の組み立て
- PCB基板の基礎
- PCB設計ツールEagleの使い方
- Arduinoとは何か
- 加速度センサーの基礎
- ジャイロスコープとは何か
- GPSの基礎
- シリアルグラフィックLCDの使い方
- 双方向ロジックレベルコンバータの使い方
- バイナリブラスターの組み立てガイド
- LilyPadの基礎:導電糸で縫う
- LilyPadの基礎:プロジェクトへの電源供給
電気とは何か
電気は身の回りのいたるところにある。 スマートフォン、パソコン、照明、はんだごて、エアコンといった技術を動かしているのも電気であり、現代の生活の中でそこから逃れるのは難しい。 電気から離れようとしても、雷雨の稲妻から私たちの体の中のシナプスまで、自然の中でも電気は絶えず働いている。 では、電気とは正確には何なのか。 これは非常に難しい問いであり、掘り下げて問い続けても、確定的な答えはなく、電気が周囲とどう相互作用するかを表す抽象的なモデルがあるだけである。
電気は自然界のいたるところで起きる現象であり、さまざまな姿をとる。 このチュートリアルでは、電子機器を動かしている電気、つまり電流としての電気に焦点を当てる。 目標は、電源から配線を通って電気がどのように流れ、LEDを光らせ、モーターを回し、通信機器を動かしているのかを理解することである。
電気は簡潔には電荷の流れと定義されるが、この一言の背後には多くのことが隠れている。 電荷はどこから来るのか。 どうやってそれを動かすのか。 どこへ動いていくのか。 電荷の移動が、どうして機械的な動きや発光を引き起こすのか。 疑問は尽きない。 電気とは何かを説明するには、物質や分子よりもさらに奥、私たちが日常で関わるあらゆるものを構成する原子のレベルまでズームインする必要がある。
このチュートリアルは、力、エネルギー、原子、場といった、物理学の基礎的な理解を土台にしている。 それぞれの概念は簡単にしか触れないので、必要に応じて他の資料もあわせて参照してほしい。
原子の世界へ
電気の基礎を理解するには、まず生命と物質を構成する基本要素の1つである原子に注目する必要がある。 原子には水素、炭素、酸素、銅といった化学元素として100種類以上の形があり、多くの種類の原子が組み合わさることで分子ができ、それが私たちの目に見え、手で触れられる物質を作り上げている。
原子は非常に小さく、大きくてもせいぜい300ピコメートル程度である(3×10⁻¹⁰メートル、つまり0.0000000003メートル)。 仮に1円玉ならぬ純銅製の硬貨があったとすると、その中には3.2×10²²個(32,000,000,000,000,000,000,000個)もの銅原子が含まれることになる。
電気のしくみを説明するには、原子ですら十分に小さいとは言えない。 さらにもう1段階掘り下げて、原子を構成する要素である陽子、中性子、電子を見ていく必要がある。
原子を構成する要素
原子は、電子、陽子、中性子という3種類の異なる粒子の組み合わせでできている。 どの原子にも中心に原子核があり、そこに陽子と中性子が密集している。 その原子核の周りを、複数の電子が軌道を描いて回っている。
すべての原子には、少なくとも1個の陽子が含まれている。 原子に含まれる陽子の数は重要な意味を持ち、その原子がどの化学元素にあたるかを決める。 たとえば陽子が1個の原子は水素、29個の原子は銅、94個の原子はプルトニウムである。 この陽子の数のことを、その原子の原子番号と呼ぶ。
陽子の相棒である中性子にも重要な役割があり、陽子を原子核の中にとどめておくとともに、その原子の同位体を決めている。 ただし電気のしくみを理解するうえでは重要ではないので、このチュートリアルでは深入りしない。
電気のしくみにとって決定的に重要なのは電子である(名前からしてそれらしい響きがあるのに気づいただろうか)。 もっとも安定した、釣り合いの取れた状態では、原子の電子の数は陽子の数と等しくなる。 下のボーアの原子模型のように、29個の陽子を持つ原子核(つまり銅原子)の周りには、同じ29個の電子が取り巻いている。
原子の中の電子は、すべてが永久に原子に縛りつけられているわけではない。 原子の一番外側の軌道にある電子は価電子と呼ばれる。 十分な外力が加われば、価電子は原子の軌道から離れて自由な状態になれる。 この自由電子こそが、電荷を動かすことを可能にし、電気そのものを成り立たせている。 ここで、電荷についてもう少し詳しく見ていこう。
電荷の流れ
このチュートリアルの冒頭で述べたとおり、電気は電荷の流れとして定義される。 電荷は、質量や体積、密度と同じように物質が持つ1つの性質であり、測定できる量である。 質量の大きさを数値で表せるのと同じように、電荷の大きさも数値で表せる。 電荷について押さえておくべき重要な点は、正(+)と負(-)という2つの種類があることである。
電荷を動かすには電荷キャリアが必要であり、ここで原子を構成する粒子、特に電子と陽子についての知識が役に立つ。 電子は常に負の電荷を持ち、陽子は常に正の電荷を持つ。 中性子はその名のとおり中性であり、電荷を持たない。 電子と陽子は、電荷の種類こそ違うが、電荷の量そのものは同じである。
電子と陽子が電荷を持つことが重要なのは、それによって力を及ぼし合えるようになるからである。 その力こそが静電気力である。
静電気力
静電気力(クーロンの法則とも呼ばれる)は、電荷どうしのあいだに働く力である。 同じ種類の電荷どうしは反発し合い、異なる種類の電荷どうしは引き合う。 異なる符号は引き合い、同じ符号は反発するというわけである。
2つの電荷に働く力の大きさは、両者の距離によって決まる。 2つの電荷が近づくほど、その力(引き合う力にせよ反発する力にせよ)は大きくなる。
この静電気力のおかげで、電子は他の電子を押しのけ、陽子には引き寄せられる。 この力は原子を1つにまとめておく「のり」の一部であると同時に、電子(そして電荷)を流すために必要な道具でもある。
電荷を流す
これで、電荷を流すために必要な道具がすべてそろった。 原子の中の電子は、常に負の電荷を持っているため、電荷キャリアとして働ける。 原子から電子を1個引き離し、動かすことができれば、電気を作り出せる。
電荷を流すための元素としてよく使われる銅の原子モデルを考えてみよう。 釣り合いの取れた状態の銅原子は、原子核に29個の陽子を持ち、その周りを同じ29個の電子が回っている。 電子は原子核からの距離がそれぞれ異なる軌道を回っている。 原子核に近い電子ほど中心への引力が強く働き、遠い軌道にある電子ほどその引力は弱い。 原子の一番外側にある電子は価電子と呼ばれ、原子から自由にするのに必要な力がもっとも小さい。
価電子に対して、別の負の電荷で押しやるか、正の電荷で引き寄せるかして十分な静電気力を加えれば、その電子を原子の軌道から弾き出し、自由電子にできる。
次に、無数の銅原子で満たされた銅線を考えてみよう。 自由電子が原子と原子のあいだの空間を漂っていると、その空間にある周囲の電荷から押されたりつつかれたりする。 そうした混沌の中で、自由電子はやがて新しい原子に取りつく先を見つける。 そのとき、飛び込んできた電子の負電荷が、その原子の別の価電子を弾き飛ばす。 すると、今度はその新しい電子が自由な空間を漂い、同じことを繰り返そうとする。 この連鎖反応が次々と続くことで、電流と呼ばれる電子の流れが生まれる。
導電性
元素の種類によって、電子を放出しやすいものとそうでないものがある。 できるだけ多くの電子を流したいなら、価電子をあまり強く抱え込まない原子を使うのがよい。 ある元素の導電性は、電子が原子にどれだけ強く束縛されているかを表す指標である。
導電性が高く、電子が動きやすい元素は導体と呼ばれる。 これは、電線や、電子の流れを助ける他の部品を作るときに使いたい種類の材料である。 銅、銀、金といった金属は、たいてい優れた導体として選ばれる代表格である。
導電性が低い元素は絶縁体と呼ばれる。 絶縁体には、電子の流れを妨げるという重要な役割がある。 ガラス、ゴム、プラスチック、空気などが代表的な絶縁体である。
静電気と電流
先に進む前に、電気が取りうる2つの形、静電気と電流について整理しておく。 電子工作で扱うことが多いのは電流のほうだが、静電気についても理解しておく価値がある。
静電気
静電気は、絶縁体によって隔てられた物体の上に、正負それぞれの電荷が偏って蓄積している状態を指す。 静電気(「静止した」電気)は、2つの電荷のかたまりが互いにつながる道筋を見つけ、電荷の偏りが解消されるまで、そのまま存在し続ける。
電荷が均衡を取り戻す道筋を見つけると、静電気放電が起きる。 このとき電荷どうしの引き合う力は非常に強くなり、空気やガラス、プラスチック、ゴムといった優れた絶縁体の中でさえ電荷が流れてしまう。 静電気放電は、電荷がどんな媒質を通り、どんな表面へ移動するかによっては人体に害を及ぼすこともある。 空気の隙間を通って電荷が均衡を取り戻すとき、移動する電子が空気中の電子と衝突して励起し、光としてエネルギーを放出することで、目に見える火花になることがある。
大きな静電気放電の中でも特に劇的な例が雷である。 雲の集まりが、別の雲の集団や地面に対して十分な電荷を蓄えると、その電荷は均衡を取り戻そうとする。 雲が放電すると、大量の正(あるいは負)の電荷が地面から雲へ、あるいはその逆へと空気中を駆け抜け、あの見慣れた現象を引き起こす。
風船を頭にこすりつけて髪の毛を逆立てたり、床の上をすり足で歩いてフワフワのスリッパで(もちろんうっかりと)家の猫にショックを与えてしまったりするときにも、身近な静電気を体験できる。 どちらの場合も、異なる種類の材料をこすり合わせる摩擦によって電子が移動している。 電子を失った側の物体は正に帯電し、電子を受け取った側の物体は負に帯電する。 この2つの物体は、電荷の均衡を取り戻す方法を見つけるまで、互いに引き合い続ける。
電子工作を扱ううえでは、静電気そのものを気にする場面はあまり多くない。 気にするとすれば、たいていは静電気放電から繊細な電子部品を守ろうとする場面である。 静電気対策としては、ESD(静電気放電)対応のリストストラップを身につけたり、非常に高い電荷のスパイクから回路を守る専用の部品を組み込んだりする方法がある。
電流
電流は、私たちの電子機器のすべてを動かしている電気の形である。 この形の電気は、電荷が絶えず流れ続けられるときに存在する。 電荷が集まってじっとしている静電気とは対照的に、電流は動的であり、電荷は常に動き続けている。 このチュートリアルの残りの部分では、この形の電気に焦点を当てていく。
回路
電流が流れるには、回路、つまり導電性の材料でできた、途切れることのない閉じたループが必要である。 回路は、端から端までつながった1本の導線だけの単純なものでもよいが、実用的な回路には通常、電線と、電気の流れを制御する他の部品が組み合わされている。 回路を作るうえで守るべきただ1つのルールは、絶縁体による隙間を作らないことである。
銅原子で満たされた電線があり、そこに電子の流れを起こしたいとする。 そのためには、すべての自由電子が、おおむね同じ方向へ流れていける行き先を持っている必要がある。 銅は優れた導体であり、電荷を流すのにうってつけである。 銅線でできた回路のどこかが切れていると、電荷は空気中を流れられず、切れた場所より内側にある電荷もどこへも行けなくなる。
逆に、電線が端から端までつながっていれば、すべての電子は隣り合う原子を持つことになり、みなおおむね同じ方向へ流れていける。
ここまでで、電子がどうやって流れるのかは理解できた。 しかし、そもそも電子を流れさせるきっかけは何なのか。 そして、いったん電子が流れ始めたら、電球を光らせたりモーターを回したりするのに必要なエネルギーはどうやって生み出されるのか。 それを理解するには、電場について知る必要がある。
電場
物質の中を電子がどう流れて電気になるのかは、これでひととおり理解できた。 電気について知るべきことは、ほぼこれですべて、と言いたいところだが、もう少しだけ続きがある。 ここからは、電子の流れを引き起こす源が必要になる。 たいていの場合、その源になるのが電場である。
「場」とは何か
場とは、目に見える接触を伴わない物理的な相互作用をモデル化するための道具である。 場は物理的な姿を持たないため目には見えないが、その効果は紛れもなく現実のものである。
私たちが無意識のうちによく知っている場の1つが、地球の重力場、つまり巨大な物体が他の物体を引き寄せる効果である。 地球の重力場は、地球の中心を向く一群のベクトルとしてモデル化でき、地表のどこにいても、その力によって中心へ向けて押されているのを感じる。
地球のどこにいても、地表面という条件下では重力場の強さはほぼ均一に感じられるが、実際には場の強さはあらゆる場所で一様ではない。 場の発生源から離れるほど、その効果は弱くなる。 地球の重力場の大きさも、地球の中心から離れるほど小さくなる。
これから電場について見ていくが、地球の重力場のしくみを思い出しておくとよい。 両者にはよく似た点が多い。 重力場は質量を持つ物体に力を及ぼし、電場は電荷を持つ物体に力を及ぼす。
電場
電場は、電気がどのように生まれ、流れ続けるのかを理解するための重要な道具である。 電場は、電荷どうしのあいだの空間に働く、引く力や押す力を表す。 地球の重力場と比べたとき、電場には大きな違いが1つある。 地球の重力場は(他のあらゆるものが地球に比べてあまりに軽いため)基本的に他の物体を引き寄せるだけだが、電場は電荷を引き寄せるのと同じくらいの頻度で押しのけもする。
電場の向きは、その場の中に正の試験電荷を置いたときにその電荷が動く方向として定義される。 試験電荷は無限に小さいものとし、電荷自体が場に影響を与えないようにする。
まずは、正と負、それぞれ単独の電荷が作る電場を考えてみよう。 正の試験電荷を負の電荷の近くに置くと、その試験電荷は負の電荷に引き寄せられる。 そのため、単独の負電荷については、あらゆる方向から中心に向かって内向きの矢印で電場を描く。 同じ試験電荷を別の正の電荷の近くに置くと、今度は反発して外向きに動くため、正電荷からは外向きに矢印を描く。
複数の電荷を組み合わせると、より複雑な電場を作れる。
上の一様な電場は、正の電荷から離れ、負の電荷に向かう向きを指している。 ここに小さな正の試験電荷を落としたと想像すると、矢印の向きに沿って動くはずである。 すでに見たとおり、電気とはたいてい電子、つまり負の電荷の流れであり、電子は電場と逆向きに流れる。
電場は、電流を流すのに必要な押す力を与えてくれる。 回路の中の電場は、いわば電子ポンプのようなものであり、負の電荷を大量に蓄えた源が電子を押し出し、その電子は回路の中を、正の電荷が集まった側へ向かって流れていく。
電位(エネルギー)
電気を利用して回路や機器を動かすとき、私たちが実際にしているのはエネルギーの変換である。 電子回路は、エネルギーを蓄え、それを熱や光、運動といった別の形へと変換できなければならない。 回路に蓄えられたこのエネルギーを電気的な位置エネルギーと呼ぶ。
エネルギーと位置エネルギー
位置エネルギーを理解するには、まずエネルギーそのものを理解しておく必要がある。 エネルギーとは、ある物体が別の物体に対して仕事をする能力、すなわちその物体をある距離だけ動かす能力として定義される。 エネルギーにはさまざまな形があり、力学的エネルギーのように目に見えるものもあれば、化学エネルギーや電気エネルギーのように目に見えないものもある。 どんな形であれ、エネルギーは運動エネルギーと位置エネルギーという2つの状態のどちらかをとる。
物体が動いているとき、その物体は運動エネルギーを持つという。 運動エネルギーの大きさは、物体の質量と速さによって決まる。 一方、位置エネルギーは、物体が静止しているときに持つ蓄えられたエネルギーであり、その物体を動かしたときにどれだけの仕事ができるかを表す。 位置エネルギーは、一般には私たちが制御できるエネルギーである。 物体が動き出すと、その位置エネルギーは運動エネルギーへと変換される。
再び重力を例にとってみよう。 ブルジュ・ハリファの最上階でじっと静止しているボウリングの球には、大きな位置エネルギー(蓄えられたエネルギー)がある。 球を落とすと、重力場に引かれて地面に向かって加速していく。 球が加速するにつれて、位置エネルギーは運動エネルギー(運動によるエネルギー)へと変換されていく。 やがて球の持つエネルギーはすべて運動エネルギーに変換され、それが衝突した相手へと受け渡される。 球が地面に達したとき、その位置エネルギーは非常に小さくなっている。
電気的な位置エネルギー
重力場の中の質量が重力による位置エネルギーを持つのとちょうど同じように、電場の中の電荷は電気的な位置エネルギーを持つ。 ある電荷の電気的な位置エネルギーは、その電荷が静電気力によって動き出したときにどれだけのエネルギーを運動エネルギーに変換でき、どれだけの仕事ができるかを表す。
塔の上に置かれたボウリングの球と同じように、別の正電荷のすぐ近くにある正電荷は高い位置エネルギーを持つ。 自由に動けるようにすると、この電荷は同符号の電荷から反発されて離れていく。 逆に、負電荷の近くに置かれた正の試験電荷は低い位置エネルギーを持ち、これは地面に置かれたボウリングの球に相当する。
何かに位置エネルギーを与えるには、それをある距離だけ動かすという仕事をする必要がある。 ボウリングの球の場合、その仕事とは、重力に逆らって163階分の高さまで運び上げることである。 同様に、正電荷を電場の矢印に逆らって動かす(別の正電荷に近づける、あるいは負電荷から遠ざける)にも仕事が必要になる。 場の上流へ進むほど、必要な仕事は大きくなる。 同じように、負電荷を正電荷から電場に逆らって引き離そうとするときにも仕事が必要になる。
電場の中にある電荷の電気的な位置エネルギーは、その電荷の種類(正か負か)、電荷の量、そして場の中でのその位置によって決まる。 電気的な位置エネルギーは、ジュール(J)という単位で測られる。
電位
電位は、電気的な位置エネルギーという考え方をさらに一歩進め、電場にどれだけのエネルギーが蓄えられているかを表す概念である。 これも、電場のふるまいをモデル化するのに役立つ考え方の1つである。 電位は、電気的な位置エネルギーとは別のものなので注意してほしい。
電場中のある地点における電位は、その地点における電気的な位置エネルギーを電荷量で割った値として定義される。 こうして電荷の量という要素を式から取り除くことで、電場のその場所がどれだけの位置エネルギーを与えうるかという情報だけが残る。 電位の単位はジュール毎クーロン(J/C)であり、これをボルト(V)と定義する。
どんな電場にも、私たちにとって特に重要な2つの地点がある。 1つは電位が高い地点で、正電荷が持ちうる位置エネルギーが最大になる場所であり、もう1つは電位が低い地点で、電荷が持ちうる位置エネルギーが最小になる場所である。
電気を論じるときにもっともよく登場する言葉の1つが電圧である。 電圧とは、電場の中の2点間における電位の差のことである。 電圧を見れば、その電場がどれだけの押す力を持っているかがわかる。
ここまでで、電位と位置エネルギーという材料がそろい、電流を作り出すために必要なものはすべて手に入った。 実際に電流を作ってみよう。
電気を実際に動かしてみる
素粒子物理学、場の理論、位置エネルギーを学んできたことで、電気を流すのに十分な知識が身についた。 実際に回路を組んでみよう。
まず、電気を作るために必要な材料を振り返っておく。
- 電気の定義は電荷の流れである。通常、この電荷を運ぶのは自由に流れる電子である。
- 負の電荷を持つ電子は、導電性材料の原子にゆるく結びついている。少し力を加えるだけで、電子を原子から解放し、おおむね一定の方向へ流すことができる。
- 導電性材料でできた閉じた回路が、電子が途切れず流れ続けるための道筋を提供する。
- 電圧の源が必要である。
ショート回路
電池は、化学エネルギーを電気エネルギーに変換する身近なエネルギー源である。 電池には2つの端子があり、それぞれが回路の残りの部分に接続される。 一方の端子には負の電荷が過剰にあり、正の電荷はもう一方に集まっている。 これはまさに、今にも働き出そうとしている電位差そのものである。
導電性の銅原子で満たされた電線をこの電池につなぐと、その電場が銅原子の中の負に帯電した自由電子に影響を及ぼす。 負極端子に押され、正極端子に引かれることで、銅の中の電子は原子から原子へと移動し、私たちが電気として知っている電荷の流れを作り出す。
電流が流れ始めて1秒経っても、電子自体が実際に移動した距離はごくわずか、せいぜい1センチメートルの何分の1かにすぎない。 それにもかかわらず、電流によって生み出されるエネルギーは膨大であり、特にこの回路には流れを遅くしたりエネルギーを消費したりするものが何もない場合はなおさらである。 純粋な導体だけをエネルギー源に直接つなぐのはよくない考えである。 エネルギーは系の中を非常に速く移動し、電線の中で熱に変換され、電線の融解や発火につながりかねない。
電球を光らせる
そのエネルギーを無駄にし、電池と電線を壊してしまうのではなく、何か役に立つことをする回路を組んでみよう。 一般に、電気回路は電気エネルギーを光や熱、運動といった別の形のエネルギーに変換する。 電池と電球を電線でつなげば、それだけで単純ながら機能する回路になる。
電子自体はかたつむりのようにゆっくりとしか動かないが、電場は回路全体にほぼ瞬時に(実際には光速に近い速さで)影響を及ぼす。 回路のどこにいる電子であっても、電位が低い場所にいても高い場所にいても、あるいは電球のすぐそばにいても、等しく電場の影響を受ける。 スイッチが閉じて電子が電場にさらされると、回路中のすべての電子がほぼ同時に流れ始めたように見える。 電球にもっとも近い電荷は、回路の中を一歩進んだところで、すぐに電気エネルギーを光(や熱)へと変換し始める。
まとめ
このチュートリアルで扱えたのは、電気という大きな全体のほんの入り口にすぎない。 まだ扱っていない概念は数多く残っている。 ここから先は、電圧、電流、抵抗とオームの法則のチュートリアルに進むとよい。 電場(電圧)と電子の流れ(電流)について理解した今なら、その2つの相互作用を支配する法則の理解へ、大きく近づいているはずである。
電気の基礎に関する、他の入門レベルのチュートリアルも紹介しておく。
もう少し実践的な内容を学びたいなら、次のような基礎スキル系のチュートリアルもおすすめである。
タグ: 概念、電気工学、物理学
出典:What is Electricity?(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
電圧、電流、抵抗とオームの法則
電気や電子工作の世界に足を踏み入れるとき、最初に理解しておくべきなのが電圧、電流、抵抗の3つである。 これらは電気を扱ううえでの基本的な構成要素であり、この3つを理解しなければ、回路を設計することも読み解くこともできない。
電圧、電流、抵抗は、最初はわかりにくく感じられるかもしれない。 理由は単純で、これらを肉眼で「見る」ことができないからである。 電線の中を流れているエネルギーも、テーブルの上に置かれた電池の電圧も、目には見えない。 空に走る雷は目に見えるが、それも雲から地面へのエネルギーの移動そのものではなく、その通り道の空気が起こす反応にすぎない。 このエネルギーの移動を捉えるには、テスター(マルチメーター)やスペクトラムアナライザー、オシロスコープといった計測器を使い、回路の中の電荷の動きを可視化する必要がある。 このチュートリアルでは、そうした計測器がなくても理解できる範囲で、電圧、電流、抵抗の基本と、3つの関係を説明する。
このチュートリアルで扱う内容:
- 電荷と、電圧、電流、抵抗の関係
- 電圧、電流、抵抗とは何か
- オームの法則とは何か、電気を理解するためにどう使うか
- これらの概念を確かめる簡単な実験
電荷
電気とは、電子の動きである。 電子が動くことで電荷が生まれ、その電荷を利用することで仕事をさせられる。 電球もステレオもスマートフォンも、電子の動きを利用して仕事をしているという点ではすべて同じであり、動作原理の根本は共通している。
このチュートリアルの3つの基本量は、電子の動き、より正確には電子が生み出す電荷を使って次のように説明できる。
- 電圧は、2点間の電荷の差である。
- 電流は、電荷が流れる速さである。
- 電流を妨げようとする材料の性質である。
つまり、電圧、電流、抵抗について語るとき、実際に語っているのは電荷の動き、すなわち電子のふるまいである。 回路とは、電荷がある場所から別の場所へ移動できるようにする閉じたループのことであり、回路上の部品を使うことで、この電荷の動きを制御し、仕事に利用できる。
電気を研究したバイエルンの科学者ゲオルク・オームは、電流と電圧によって定義される抵抗の単位を示した人物である。 まずは電圧から見ていこう。
電圧
2点間に蓄えられた位置エネルギーの量を電圧と呼ぶ。 一方の点がもう一方より多くの電荷を持っているとき、その2点間の電荷の差を電圧と呼ぶ。 単位はボルトであり、技術的には、1クーロンの電荷が通過する際に1ジュールのエネルギーを与える2点間の電位差として定義される(ここで意味がわからなくても心配はいらない、後で説明する)。 「ボルト」という単位名は、最初の化学電池を発明したとされるイタリアの物理学者アレッサンドロ・ボルタにちなむ。 電圧は数式や回路図の中で記号「V」で表される。
電圧、電流、抵抗を説明するとき、よく使われるたとえが水タンクである。 このたとえでは、電荷は水の量、電圧は水の圧力、電流は水の流量に対応する。
- 水 = 電荷
- 圧力 = 電圧
- 流れ = 電流
地面から一定の高さにある水タンクを考える。 タンクの底にはホースが取り付けられている。
ホースの先端にかかる圧力が電圧に相当し、タンクの中の水が電荷に相当する。 タンクの水が多いほど電荷は大きく、ホースの先端で測られる圧力も高くなる。
このタンクは、一定量のエネルギーを蓄えて後から放出する電池と考えられる。 タンクの水を減らすと、ホース先端の圧力は下がる。 これは、懐中電灯の電池が減るにつれて明かりが暗くなるときのように、電圧が下がることに対応する。 同時に、ホースを流れる水の量も減る。 圧力が下がれば流れる水も減る、これが電流の話につながる。
電流
タンクからホースを通って流れる水の量が電流に相当する。 圧力が高いほど流量は多くなり、その逆も同様である。 水の場合は一定時間あたりに流れる水の体積を測るが、電気の場合は一定時間あたりに回路を流れる電荷の量を測る。 電流の単位はアンペア(通常は単に「アンプ」と呼ばれる)であり、1アンペアは回路上のある点を1秒間に6.241×10^18個の電子(1クーロン)が通過することと定義される。 数式の中でアンペアは記号「I」で表される。
同じ量の水が入った2つのタンクを考える。 それぞれの底からホースが伸びているが、一方のホースはもう一方より細い。
どちらのホースの先端でも圧力は同じだが、水が流れ始めると、細いホースのほうが太いホースより流量は少なくなる。 電気の言葉に置き換えると、細いホースを通る電流は太いホースを通る電流より小さいということになる。 もし両方のホースで流量を同じにしたいなら、細いホースのタンクの水(電荷)の量を増やす必要がある。
水を増やすと、細いホースの先端にかかる圧力(電圧)が上がり、より多くの水が押し出される。 これは、電圧を上げることで電流が増えることに対応する。
ここまでで、電圧と電流の関係が見えてきた。 しかし、もう1つ考慮すべき要素がある。 それがホースの太さであり、このたとえの中でホースの太さに相当するのが抵抗である。 モデルに、もう1つの項を加える必要がある。
- 単位:クーロン
- 単位:ボルト
- 単位:アンペア
- ホースの太さ = 抵抗
抵抗
再び、細いパイプと太いパイプを持つ2つの水タンクを考える。
同じ圧力であれば、細いパイプには太いパイプほどの水量を通せないのは道理である。 これが抵抗であり、細いパイプは、太いパイプのタンクと同じ圧力の水であっても、その流れを「妨げる」。
電気の言葉で言えば、これは電圧が等しく抵抗が異なる2つの回路に対応する。 抵抗が大きい回路ほど流せる電荷は少なくなり、つまり抵抗が大きい回路ほど流れる電流は小さくなる。
ここでゲオルク・オームの話に戻る。 オームは「1オーム」という抵抗の単位を、導体上の2点間で1ボルトの電圧が1アンペア(6.241×10^18個の電子)を押し流すときの抵抗として定義した。 この値は回路図の中でギリシャ文字「Ω」(オメガ、読みは「オーム」)で表されるのが一般的である。
オームの法則
電圧、電流、抵抗を組み合わせて、オームは次の式を導いた。
\[ V = I \times R \]
- ボルト
- アンペア
- オーム
これがオームの法則である。 たとえば、電位1ボルト、電流1アンペア、抵抗1オームの回路があるとする。 オームの法則により、この関係は成り立つ。
太いホースのタンクで考えると、タンクの水量が1ボルト、ホースの「細さ」(流れへの抵抗)が1オームに相当し、オームの法則から流量(電流)は1アンペアとなる。
同じたとえで、今度は細いホースのタンクを見てみる。 ホースが細い分、流れへの抵抗は大きく、これを2オームとする。 タンクの水量はもう一方と同じなので、オームの法則から、細いホースのタンクの式は次のようになる。
電流はどうなるか。 抵抗が大きく電圧が同じであることから、電流の値は0.5アンペアになる。
抵抗が大きいタンクのほうが電流は小さい。 オームの法則の3つの値のうち2つがわかれば、残る1つを求められることがここからわかる。 これを実験で確かめてみよう。
オームの法則の実験
この実験では、9ボルトの電池でLEDを点灯させる。 LEDは繊細な部品であり、流せる電流には上限がある。 それを超えると壊れてしまう。 LEDのデータシートには必ず「定格電流」が記載されており、これがそのLEDに流せる電流の上限を示す値である。
必要な部品
このチュートリアル末尾の実験を行うには、次のものが必要である。
- マルチメーター
- 9ボルト電池
- 入手できなければ、それに近い値のもの
- LED
Note
LEDは「非オーム性」の部品として知られている。 つまり、LED自体を流れる電流の式は V = I × R ほど単純ではない。 LEDは回路に「順方向電圧降下」と呼ばれる電圧降下をもたらし、それによって流れる電流の量が変化する。 ただし、この実験の目的はLEDを過電流から守ることであり、LED自体の電流特性は無視して、オームの法則だけを使い、LEDを流れる電流が20mAを安全に下回るように抵抗値を選ぶ。
ここでは、9ボルトの電池と、定格電流20ミリアンペア(0.020アンペア)の赤色LEDを使う。 安全のため、定格の上限ではなく、データシートに記載された推奨電流である18ミリアンペア(0.018アンペア)で駆動することにする。 LEDを電池に直接つなぐと、オームの法則の値は次のようになる。
抵抗がまだない状態でこれを計算すると、ゼロで割ることになり、電流は無限大という結果になる。 実際には無限大にはならないが、電池が供給できる限りの電流が流れてしまう。 これほどの電流をLEDに流したくはないので、抵抗が必要になる。 回路は次のようになる。
同じくオームの法則を使えば、望みの電流値を得るための抵抗値を求められる。 必要な値を代入し、抵抗について解くと、LEDの電流を定格以下に保つには、およそ500オームの抵抗が必要だとわかる。
500オームは市販の抵抗ではあまり一般的な値ではないため、この作例では代わりに560オームの抵抗を使っている。
抵抗の値を、LEDの定格電流を下回りつつ、LEDを十分明るく点灯させられる値に選べたことになる。 LEDと電流制限抵抗の組み合わせは、電子工作の趣味の世界でよく登場する。 オームの法則を使って回路を流れる電流量を調整する場面は、この先何度も出てくるだろう。 LilyPad LEDボードも、この考え方を実装した例の1つである。 この基板ではLEDと同じ基板上にあらかじめ抵抗が実装されており、電流制限のために抵抗を別途配線する必要がない。
電流制限抵抗はLEDの前段と後段のどちらに置くべきか
話をもう一歩進めると、電流制限抵抗はLEDのどちら側に置いても同じように機能する。
電子工作を学び始めたばかりの人の多くが、電流制限抵抗をLEDのどちら側に置いても回路が変わらず動作するという事実に戸惑う。
輪になって循環し続ける川を想像してほしい。 そこにダムを1つ設ければ、川全体の流れが止まる。 一部だけが止まるわけではない。 今度は、その川に水車を1つ置いて流れを緩めるとする。 水車を輪のどこに置いても、川全体の流れが同じように緩やかになる。
これは単純化した説明であり、実際には電流制限抵抗を回路のどこにでも置けるわけではない。 置けるのはLEDのどちらか一方の側であり、その範囲でなら機能するということである。
より厳密な説明としては、キルヒホッフの電圧則が関係する。 電流制限抵抗をLEDのどちら側に置いても同じ効果が得られるのは、この法則があるからである。
まとめ
ここまでで、電圧、電流、抵抗の概念と、3つがどう関係し合っているかを理解できたはずである。 回路解析に使われる式や法則の大半は、オームの法則から直接導き出せる。 この単純な法則を理解することが、あらゆる電気回路の解析の土台になる。
電圧、電流、抵抗の先にある、より発展的な内容を学びたい場合は、次のチュートリアルも参照してほしい。
タグ: 概念、電気工学、LED、プロジェクトを始める
出典:Voltage, Current, Resistance, and Ohm’s Law(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
回路とは何か
電子工作の世界に足を踏み入れて最初に出会う概念の1つが回路である。 このチュートリアルでは、回路とは何かを説明し、あわせて電圧についてもう少し詳しく見ていく。
参考になるチュートリアル:
回路の基礎
電圧とその働き
電池や壁のコンセントには、決まった数のボルトがあると聞いたことがあるだろう。 これは、電池や、コンセントにつながる送電網が生み出す電気的なポテンシャル(電位)を表す量である。
そのボルトはすべて、使われるのを待って「そこにある」状態だが、1つ落とし穴がある。 電気が何か仕事をするには、その電気が動ける状態になっている必要があるのだ。 膨らませた風船のようなものだと考えるとよい。 口をつまんでいるあいだは、中の空気は何かをすることができる状態にあるだけで、実際に外へ出してやるまでは何もしない。
風船から出る空気とは違い、電気は銅線のような、電気を通せる材料の中しか流れられない。 電池や壁のコンセントに電線をつなぐと(警告:壁のコンセントの電圧は危険なので、実際に試してはいけない)、電気が流れる道筋を与えたことになる。 ただし、その電線がどこにもつながっていなければ、電気には行き先がなく、やはり動かない。
では、何が電気を動かすのか。 電気は、電圧の高いところから低いところへ流れようとする。 これは風船とまったく同じで、風船の中の圧縮された空気は、風船の内側(圧力が高い)から外側(圧力が低い)へ流れようとする。 電圧の高いところと低いところのあいだに電気を通す道筋を作れば、電気はその道筋に沿って流れる。 そして、その道筋の途中にLEDのような何か役に立つものを入れておけば、流れる電気がそのために仕事をしてくれる。 LEDが点灯するというわけだ。
では、電圧の高いところと低いところはどこにあるのか。 ここで知っておくと役立つのが、あらゆる電源には2つの側があるという点である。 電池の両端にある金属のキャップや、壁のコンセントにある2つ(かそれ以上)の穴が、これにあたる。 電池のような直流(DC)の電源では、この2つの側はしばしば端子と呼ばれ、それぞれ正極(「+」)、負極(「-」)と名付けられている。
なぜあらゆる電源に2つの側があるのか。 これは「電位」という考え方に戻る話であり、電気を流すには電圧の差が必要だからである。 奇妙に聞こえるかもしれないが、比べる対象が2つなければ「差」というもの自体が存在しない。 どんな電源でも、正極側は負極側より電圧が高く、これがまさに私たちの求めている状態である。 実際、電圧を測るときは、負極側を0ボルトとし、正極側をその電源が供給できる電圧として表すのが通例である。
電源はポンプのようなものだと考えられる。 ポンプには必ず2つの側があり、何かを送り出す出口と、何かを吸い込む入口がある。 電池も発電機も太陽電池も、同じしくみで動いている。 内部の何かが電気を出口(正極側)へ向けて送り出す仕事をしており、電気が装置から出ていった分だけ空白ができるため、負極側はその空白を埋めるために電気を吸い込む必要がある1。
ここまでの内容をまとめる。
- 電圧は電位にすぎず、電気が何かに役立つには実際に流れる必要がある。
- 電気が流れるには道筋が必要であり、それは銅線のような電気を通す導体でなければならない。
- 電気は電圧の高いところから低いところへ流れる。
- 直流の電源には常に2つの側があり、正極と負極と呼ばれ、正極側のほうが負極側より電圧が高い。
もっとも単純な回路
これで、電気に仕事をさせる準備が整った。 電源の正極側から、発光ダイオード(LED)のような何か仕事をするものを経由して、電源の負極側へ戻るように接続すれば、電気、すなわち電流が流れる。 そして、電流が流れる道筋の途中に、電流が流れることで役立つことをしてくれるもの、たとえば光るLEDを入れておける。
電気を流し、何か役に立つことをさせるために必ず必要となるこの円環状の道筋のことを、回路と呼ぶ。 回路とは、始点と終点が同じ場所にある道筋のことであり、これはまさに今組み立てたものそのものである。
ショート回路と開放回路
「負荷」とは何か
回路を組み立てる理由は、電気に何か役立つことをさせるためである。 そのために私たちは、電流の流れを利用して光ったり、音を鳴らしたり、プログラムを動かしたりするものを回路の中に組み込む。
こうしたものは負荷と呼ばれる。 何かを背負って「重荷を負う(load down)」のと同じように、電源を「負荷で重くする」からである。 人が重すぎる荷物を背負うと大変なのと同じで、電源にも負荷をかけすぎると電流の流れが遅くなってしまう。 しかし人と違って、回路には負荷が軽すぎるという問題もありうる。 軽すぎる負荷は、逆に電流を流しすぎてしまい(荷物を何も背負わずに全力疾走するようなものだと考えるとよい)、部品や電源そのものを焼き切ってしまうことがある。
電圧、電流、負荷については、次のチュートリアルである電圧、電流、抵抗とオームの法則で詳しく学べる。 ここでは、回路の2つの特別なケースであるショート回路(短絡)と開放回路について見ていく。 この2つを知っておくと、自分の回路のトラブルシューティングをするときに大いに役立つ。
ショート回路(短絡)
電源の正極から負極まで、電線だけを直接つなぐとショート回路(短絡)と呼ばれる状態になる。 これは非常によくない状態であり、実際に試してはいけない。
一見すると最高の回路に見えるかもしれないが、なぜこれがよくないのか。 電流は電圧の高いところから低いところへ流れようとし、その途中に負荷を入れておけば、LEDを点灯させるといった役立つことをさせられることを思い出してほしい。
電流の経路にきちんと負荷が入っていれば、回路を流れる電流はその負荷が消費する分に制限され、たいていはごくわずかな量にとどまる。 しかし、電流の流れを制限するものを何も入れていないと、電流を遅くするものが何もなくなり、電流は限りなく大きくなろうとする。
電源が無限に電流を供給できるわけではないが、供給できる限りの、場合によってはかなり大きな電流を流そうとする。 これにより電線が焼け焦げたり、電源が壊れたり、電池が消耗したり、その他さまざまな厄介なことが起きる。 たいていの電源にはショート回路が起きたときに最大電流を制限する安全機構が組み込まれているが、必ずあるとは限らない。 すべての住宅や建物にブレーカーが備わっているのも、配線のどこかでショート回路が起きたときに火災を防ぐためである。
これに近い問題として、回路の一部に誤って過大な電流を流してしまい、部品を焼き切ってしまうケースもある。 これは厳密にはショート回路ではないが、それに近い。 たいていは、抵抗の値を間違えたことで、LEDのような別の部品に過大な電流が流れてしまうことで起きる。
要点はこうだ。 部品が急に熱くなったり、突然焼き切れたりしたときは、すぐに電源を切り、ショート回路が起きていないか確認すること。
開放回路
ショート回路の反対にあたるのが開放回路である。 これは、回路のループがどこかで完全にはつながっていない状態を指し、その意味では回路としてまったく機能していないとも言える。
先ほどのショート回路とは違い、この「回路」で何かが壊れることはないが、回路自体も動作しない。 電子工作を始めたばかりの人にとって、どこで断線しているかを見つけるのは難しいことが多く、特にブレッドボードを使っていると配線がすべて隠れてしまうため、なおさら見つけにくい。
回路が動作しないときは、開放回路が原因であることが多い。 たいていは、接続不良や配線の緩みが原因である(ショート回路も回路全体の電力を奪ってしまうことがあるので、あわせて確認するとよい)。
ヒント: 回路のどこが開放状態になっているかなかなか見つからないときは、テスター(マルチメーター)が非常に役立つ道具になる。 電圧測定モードにしておけば、通電中の回路のさまざまな地点の電圧を確認しながら、電圧が届かなくなっている場所を突き止められる。
まとめ
ここまでで、回路とは何かをもっとも基本的な形で学んだ。 学習を進めていくと、複数のループや、より多くの部品を含む複雑な回路にも出会うことになる。 しかし、どれほど複雑な回路であっても、ここで学んだ単純な1ループの回路と同じ規則に従っている。
電子工作の旅はまだ始まったばかりである。 次に学ぶとよい話題をいくつか挙げる。
- 配線の基本も身につけておくとよい。
- マルチメーターを使えば電圧、電流、抵抗を測定でき、うまく動かない回路の原因を探るときに大いに役立つ。
- 回路にはさまざまな大きさ、形、構成がある。直列回路と並列回路のチュートリアルでは、回路をもう一歩先まで見ていく。
ここからは、回路でよく使われる部品についてのチュートリアルを挙げる。
- 発光ダイオードのチュートリアルでは、1つまたは複数のLEDを点灯させる方法を紹介している。
- 抵抗器は、回路でもっとも広く使われる部品の1つである。
- コンデンサも、ほとんどの回路で使われている。ダイオードも同様である。
タグ: 概念、電気工学
出典:What is a Circuit?(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
-
電気は電源の正極側から負極側へ流れる、と最初に書いたのはベンジャミン・フランクリンである。しかしフランクリンには、実際には電子がその逆方向に流れていることを知るすべがなかった。原子レベルで見ると、電子は負極側から出て正極側へ戻っていく。真実が発見されるまでの何百年ものあいだ、技術者たちはフランクリンの説に従ってきたため、今日でもこの「誤った」慣習がそのまま使われ続けている。実用上はこの違いは問題にならず、誰もが同じ慣習を使ってさえいれば、正しく動作する回路を組み立てられる。 ↩
直列回路と並列回路
部品数の少ない単純な回路は、初めて電子工作に触れる人にとっても比較的わかりやすい。 しかし、部品の種類や数が増えてくると、とたんに話がややこしくなる。 電流はどこへ流れているのか。 電圧はどうなっているのか。 もっと単純に考える方法はないのか。 このチュートリアルは、そうした疑問に答えるためのものである。
まず、抵抗と電池という最も基本的な部品を使った回路で、直列回路と並列回路の違いを説明する。 そのうえで、コンデンサやインダクタ(コイル)のような別の種類の部品を直列や並列に組み合わせたときに何が起きるかを見ていく。
このチュートリアルで扱う内容:
- 直列と並列という回路構成がどのようなものか
- この構成の中で受動部品がどうふるまうか
- この構成の中で電源が受動部品にどう作用するか
回路を実際に組み立てる前に、次の基礎的なチュートリアルにも目を通しておくとよい。
直列回路
ノードと電流の流れ
本題に入る前に、ノード(節点)について触れておく必要がある。 難しいものではなく、2つ以上の部品がつながる電気的な接続点を指す言葉にすぎない。 回路図の上では、部品と部品のあいだをつなぐ配線がノードにあたる。
これが、直列と並列の違いを理解するための下地の半分にあたる。 残る半分は、回路の中を電流がどう流れるかを理解することである。 電流は、回路の中で電圧の高いところから低いところへ流れる。 電流は、通れる経路があればそのすべてを使って、電圧が最も低い点(多くの場合グラウンドと呼ばれる)へ向かって流れようとする。 先ほどの回路を例にとると、電池のプラス端子からマイナス端子まで、電流は次の図のように流れる。
R1とR2のあいだのように、入ってくる電流と出ていく電流が同じ量になっているノードがある一方で、R2、R3、R4がつながる三又のノードでは、1本だった電流(青色)が2本に分かれている。 この違いこそが、直列と並列を分ける鍵である。
直列回路の定義
2つの部品が同じノードを共有し、なおかつ同じ電流が流れているとき、その2つは直列につながっているという。 抵抗を3つ直列につないだ回路を例に見てみよう。
この回路で電流が流れる経路は1本しかない。 電池のプラス端子を出た電流は、まずR1を通り、続けてR2、R3へと流れ、最後に電池のマイナス端子へ戻る。 電流が通れる経路が1本しかないことに注目してほしい。 このとき、これらの部品は直列につながっているという。
並列回路
並列回路の定義
部品どうしが2つのノードを共有しているとき、その部品は並列につながっているという。 抵抗3本を電池に並列につないだ回路図を見てみよう。
電池のプラス端子から出た電流は、R1にも、R2にも、R3にも流れる。 電池とR1をつなぐノードは、他の抵抗ともつながっている。 それぞれの抵抗のもう一方の端も同様に1つにまとまり、電池のマイナス端子へと戻っていく。 電池に戻るまでに電流が通れる経路は3本あり、このとき対応する抵抗どうしは並列につながっているという。
直列につながれた部品にはすべて同じ電流が流れるのに対し、並列につながれた部品にはすべて同じ電圧がかかる。 「直列と電流」「並列と電圧」が対応すると覚えるとよい。
直列と並列を組み合わせる
ここまでの構成は組み合わせられる。 次の図でも抵抗3本と電池を使っているが、電池のプラス端子を出た電流はまずR1を通る。 R1のもう一方の端でノードが分かれ、電流はR2とR3の両方へ流れられるようになる。 R2とR3を通った電流はその先でまた1つにまとまり、電池のマイナス端子へ戻る。
この例では、R2とR3が互いに並列につながっており、そのR2とR3の並列部分に対してR1が直列につながっている。
直列回路の合成抵抗を計算する
もう少し実用的な話をしよう。 抵抗を直列や並列につなぐと、そこを流れる電流の様子が変わる。 たとえば10Vの電源を10kΩの抵抗につないだ場合、オームの法則から1mAの電流が流れることがわかる。
ここに、もう1本10kΩの抵抗を直列に追加し、電源電圧はそのままにしたとする。 抵抗値が2倍になった分、電流は半分になる。
つまり、電流が通れる経路は相変わらず1本のままで、その経路をより通りにくくしただけということになる。 どれだけ通りにくくなったかというと、10kΩ + 10kΩ = 20kΩである。 抵抗を直列につないだときの合成抵抗は、こうして値をそのまま足し合わせるだけで求められる。
これを一般化すると、任意のN個の抵抗を直列につないだときの合成抵抗は、それぞれの値の総和になる。
\[ R_{合成} = R_1 + R_2 + \cdots + R_N \]
並列回路の合成抵抗を計算する
では並列につないだ抵抗はどうか。 直列よりも少しだけ複雑だが、それほど難しくはない。 先ほどと同じく10Vの電源と10kΩの抵抗から始め、今度はもう1本の10kΩを直列ではなく並列に追加する。 これで電流が通れる経路が2本になる。 電源電圧は変わっていないので、オームの法則により最初の抵抗には相変わらず1mAが流れる。 しかし2本目の抵抗にも同じく1mAが流れるため、電源全体から見ると合計2mAとなり、最初の1mAから倍増する。 電流が倍になったということは、合成抵抗が半分になったことを意味する。
10kΩ‖10kΩ = 5kΩ(「‖」は「並列に」を表す記号)と言えるが、常に同じ値の抵抗が2本とは限らない。 そこで、任意の本数の抵抗を並列につないだときの合成抵抗は、次の式で求められる。
\[ \frac{1}{R_{合成}} = \frac{1}{R_1} + \frac{1}{R_2} + \cdots + \frac{1}{R_N} \]
逆数の計算が面倒なときは、抵抗が2本の場合に限り、「和分の積」と呼ばれる方法も使える。
\[ R_{合成} = \frac{R_1 \times R_2}{R_1 + R_2} \]
ただし、この方法が使えるのは1回の計算につき抵抗2本までである。 3本以上を組み合わせたいときは、まずR1とR2の並列合成値を求め、その結果と3本目の抵抗をあらためて「和分の積」で計算すればよい。 本数が多い場合は、逆数の式のほうが手間が少ないこともある。
実験その1:抵抗を直列につないでみる
用意するもの:
- 数本
- マルチメーター
- ブレッドボード
ここまでの説明どおりに実際に動くことを、簡単な実験で確かめてみよう。
まずは10kΩの抵抗を直列につなぎ、値がそのまま足し合わされる様子を見る。 ブレッドボードを使って図のとおりに抵抗を1本差し、テスターで抵抗値を測る。 10kΩと表示されることはわかりきっているが、これは「機材が壊れていないか」を確かめる意味もある確認作業だと思ってほしい。 世界が特に変わっていないことを確認できたら、同様にもう1本を、それぞれのリードがブレッドボード上で電気的につながる形で追加し、もう一度測ってみる。 今度はテスターがおよそ20kΩに近い値を示すはずである。
測定値が抵抗に表示された値とぴったり一致しないこともある。 抵抗には誤差(許容差)と呼ばれる特性があり、表示値に対して一定の割合だけ前後する可能性がある。 そのため9.99kΩや10.01kΩと表示されることもあるが、正しい値に近ければ特に問題はない。
抵抗がなくなるか、次に何が起きるか完全に予想がつくようになるまで、同じ手順を繰り返してみてほしい。
実験その2:抵抗を並列につないでみる
続いて、並列につないだ場合を試す。 先ほどと同様に10kΩの抵抗を1本差す(単体で10kΩに近い値が出ることはもう納得してもらえたと思う)。 2本目の10kΩ抵抗を、それぞれのリードが電気的に同じ行につながるように注意しながら、1本目の隣に差す。 ただし測定する前に、「和分の積」または逆数の式を使って、新しい抵抗値がいくつになるはずかを計算しておく(ヒント:5kΩになる)。 そのうえで実際に測定する。 5kΩに近い値になっているだろうか。 なっていなければ、抵抗を差した穴が正しいかどうかを確認してほしい。
同じ実験を3本、4本、5本の場合でも繰り返してみよう。 計算値と測定値はそれぞれ3.33kΩ、2.5kΩ、2kΩに近くなるはずである。 思ったとおりの結果になっただろうか。 ならなければ配線を見直し、なったならここまでの内容は理解できている。
抵抗を直列や並列につなぐときの経験則
抵抗の組み合わせに工夫が必要になる場面もある。 たとえば特定の基準電圧を作りたいとき、必要になる抵抗比は「標準的な」値の組み合わせにならないことが多い。 非常に高い精度の抵抗を入手すること自体は可能でも、発注してから届くまでの日数や、特注品の価格を考えると現実的でないこともある。 そんなときは、手持ちの抵抗を組み合わせて必要な値を自分で作り出せる。
コツ1:同じ値の抵抗を並列にする
同じ値Rの抵抗をN本並列につなぐと、合成抵抗はR/Nになる。 たとえば2.5kΩの抵抗が必要なのに、手元に10kΩしかないとする。 10kΩを4本並列につなげば、10kΩ/4 = 2.5kΩが得られる。
コツ2:許容できる誤差を把握する
自分の回路がどこまでの誤差を許容できるかを把握しておく。 たとえば3.2kΩの抵抗が必要なとき、10kΩを3本並列につなぐと3.3kΩになり、必要な値との誤差は約4%になる。 回路の要求精度が4%より厳しい場合は、手持ちの10kΩ抵抗を一本ずつ測定し、その中から値の低いものを選ぶという方法もある(抵抗自体にも個体差があるため)。 理論上、手持ちの10kΩがすべて誤差1%のものであれば、3.3kΩまでしか近づけられない。 ただし、部品メーカーの製造誤差によって実際にはそれより低い値の個体が混じっていることもあるので、一通り測ってみる価値はある。
コツ3:定格電力も直列接続と並列接続で変わる
抵抗を直列や並列につなぐときの考え方は、定格電力についても同じように働く。 たとえば2W定格の100Ωの抵抗が必要なのに、手元に1kΩで定格1/4W(¼W)の抵抗しかないとする。 1kΩを10本並列にすれば100Ω(1kΩ/10 = 100Ω)が得られ、定格電力も10×0.25W = 2.5Wになる。 きれいな解決策とは言えないが、急場をしのぐには十分である。
異なる値の抵抗を並列に組み合わせる場合は、合成抵抗と定格電力の両面で、もう少し注意が必要になる。
コツ4:異なる値の抵抗を並列にする
値の異なる2つの抵抗を並列につないだときの合成抵抗は、必ず小さいほうの抵抗値より小さくなる。 2つの抵抗値のちょうど中間くらいになると考えてしまいがちだが、それは誤りである(1kΩ‖10kΩは5kΩ前後にはならない)。 並列合成抵抗は、常に値の小さいほうの抵抗に引き寄せられる。 このコツ4は、繰り返し頭に入れておく価値がある。
コツ5:並列接続での電力損失
値の異なる抵抗を並列に組み合わせた場合、それぞれに流れる電流が異なるため、消費される電力も均等には分かれない。 先ほどの1kΩ‖10kΩの例で言えば、1kΩのほうには10kΩの10倍の電流が流れる。 オームの法則により電力 = 電圧 × 電流なので、1kΩの抵抗は10kΩの抵抗の10倍の電力を消費することになる。
コツ4とコツ5からわかるのは、値の異なる抵抗を並列に組み合わせるときほど注意深く扱う必要があるということである。 一方、値が同じ場合にはコツ1やコツ3のような単純な近道が使える。
コンデンサの直列接続と並列接続
コンデンサを組み合わせる考え方は、抵抗の場合とちょうど逆になる。 奇妙に聞こえるかもしれないが、これは事実である。
コンデンサは、ごく近い間隔で向かい合った2枚の電極板であり、その基本的な働きは大量の電子を蓄えることにある。 静電容量が大きいほど、蓄えられる電子の量も多くなる。 電極板の面積を大きくすれば、電子が存在できる物理的な空間が増える分、静電容量は大きくなる。 逆に電極板の間隔を広げると、電極間の電界が弱くなる分、静電容量は小さくなる。
ここで、10µFのコンデンサを2つ直列につなぎ、どちらも充電済みだとする。
直列回路では電流の経路が1本しかないことを思い出してほしい。 したがって、下側のコンデンサから放電される電子の数は、上側のコンデンサに入っていく電子の数と同じになるはずである。 つまり、静電容量が増えたわけではない。
実際には、それどころか事情はもっと悪い。 コンデンサを直列につなぐと、2つのコンデンサそれぞれの電極間隔が足し合わされる形になり、実質的に電極板の間隔を広げたのと同じことになる。 そのため合成容量は20µFにも10µFにもならず、5µFになる。 つまり、コンデンサを直列につないだときの合成容量は、抵抗を並列につないだときと同じ計算式で求められる。 「和分の積」と逆数の式のどちらも、コンデンサの直列合成に使える。
コンデンサを直列につなぐことに意味がないように思えるかもしれないが、それだけではない。 直列にすることで、電池を直列につないだときと同じように、耐えられる電圧(定格電圧)は2倍になる。
コンデンサを並列につなぐ場合は、抵抗を直列につなぐときと同じように、特別な計算をせずそのまま値を足し合わせるだけでよい。 これは、並列につなぐことで電極板の間隔を変えずに面積だけを実質的に増やしたことになるためである。 面積が増えれば、その分だけ静電容量も増える。
実験その3:コンデンサの充電を観察する
用意するもの:
- 10kΩの抵抗1本
- 100µFのコンデンサ3個
- 単3形3本用の電池ボックス
- 単3形電池3本
- ブレッドボード
- テスター
- クリップ付きリード線
直列や並列につないだコンデンサの動きを、実際に確かめてみよう。 テスターで静電容量を直接測るのは難しいため、抵抗の実験より少し手間がかかる。
まず、コンデンサが0ボルトの状態から充電されるときに何が起きるかを見ておく。 一方のリードから電流が流れ込み始めると、同じ量の電流がもう一方のリードから流れ出る。 コンデンサに直列の抵抗が入っていなければ、この電流はかなり大きくなりうる。 いずれにせよ、コンデンサの電圧が印加電圧と等しくなるまで電流は流れ続け、両者の電圧が等しくなった時点で電流はゼロになる。
上で述べたとおり、コンデンサに直列の抵抗がないと流れる電流は非常に大きくなり、充電にかかる時間もミリ秒単位、あるいはそれ以下と非常に短くなる。 この実験では充電の様子をじっくり観察したいので、10kΩの抵抗を直列に入れて、動きを目で追える速さまで遅くする。 ただしその前に、RC時定数について説明しておく必要がある。
\[ \tau = R \times C \]
この式が言っているのは、秒単位の時定数(記号τ、タウと読む)が、オーム単位の抵抗値とファラド単位の静電容量の積に等しいということである。
実験その3(続き)
この実験の最初の段階では、10kΩの抵抗1本と100µF(0.0001ファラド)のコンデンサ1個を使う。 この2つの組み合わせで、時定数は1秒になる。
\[ \tau = 10,\text{k}\Omega \times 100,\mu\text{F} = 1,\text{秒} \]
100µFのコンデンサを10kΩの抵抗を通して充電すると、1時定数(この場合1秒)が経過した時点で、コンデンサの電圧は電源電圧のおよそ63%まで上昇する。 5時定数(この場合5秒)が経過すると、コンデンサは電源電圧のおよそ99%まで充電され、その電圧変化はおおむね下のグラフのような曲線を描く。
ここまでの内容を踏まえて、次の回路図のとおりに配線する(コンデンサの極性を間違えないように注意すること)。
テスターを電圧測定モードにしたまま、スイッチを入れた状態で電池ボックスの出力電圧を確認する。 これが電源電圧であり、4.5V前後になっているはずである(電池が新しければ、もう少し高くなる)。 続いて、電池ボックスのスイッチが「OFF」になっていることを確認してからブレッドボードに接続する。 赤と黒のリード線を正しい位置に接続することにも注意する。 コンデンサの足にワニ口クリップでテスターのプローブを挟むと測定しやすい(足を少し開いておくとさらにやりやすい)。
配線に問題がなく、テスターも電圧測定モードになっていることを確認したら、電池ボックスのスイッチを「ON」にする。 5秒ほど経つと、テスターの表示は電池ボックスの電圧にかなり近い値になるはずであり、これで先ほどの式が正しいことが確認できる。 今度はスイッチを切ってみる。 電圧はほとんど下がらずに保たれているはずである。 これは、コンデンサを放電させる経路がなく、回路が開いたままになっているためである。 コンデンサを放電させるには、別の10kΩ抵抗を並列に接続すればよい。 5秒ほどで、電圧はほぼゼロに戻る。
実験その3(さらに続き)
ここからが本題である。 まず、コンデンサ2個を直列につないでみる。 これは抵抗を2本並列につないだときと似た結果になるはずだと述べた。 そうであれば、「和分の積」を使って次のように予想できる。
\[ C_{合成} = \frac{100,\mu\text{F} \times 100,\mu\text{F}}{100,\mu\text{F} + 100,\mu\text{F}} = 50,\mu\text{F} \]
これが時定数にどう影響するだろうか。
\[ \tau = 10,\text{k}\Omega \times 50,\mu\text{F} = 0.5,\text{秒} \]
この予想を踏まえて、1個目のコンデンサに2個目を直列に追加し、テスターがゼロボルト(またはそれに近い値)を示していることを確認してから、スイッチを「ON」にしてみる。 電池ボックスの電圧まで充電されるのにかかった時間は、およそ半分になっただろうか。 これは、合成容量が半分になったためである。 電子を蓄える「タンク」が小さくなった分、満タンになるまでの時間も短くなる。 念のため3個目のコンデンサも直列に追加して試してみるとよいが、結果はもう予想がつくはずである。
次はコンデンサを並列につないでみる。 これは抵抗を直列につないだときと同じだと述べたので、合成容量は200µFになるはずである。 そうすると、時定数は次のようになる。
\[ \tau = 10,\text{k}\Omega \times 200,\mu\text{F} = 2,\text{秒} \]
つまり、並列につないだコンデンサが電源電圧の4.5Vまで充電されるのを目で確認するには、およそ10秒かかることになる。
証拠を示すために、この実験の最初に使った回路(10kΩの抵抗1本と100µFのコンデンサ1個の直列回路)に戻る。 このコンデンサはおよそ5秒で充電が完了することはすでにわかっている。 ここに2個目のコンデンサを並列に追加する。 テスターがほぼゼロボルトを示していることを確認し(ゼロでなければ抵抗を使って放電させる)、電池ボックスのスイッチを「ON」にする。 充電にかかる時間はかなり長くなったはずである。 予想どおり、電子の「タンク」が大きくなった分、満タンになるまでの時間が延びている。 納得できたら、3個目の100µFコンデンサも追加して、さらに長い充電時間を観察してみてほしい。
インダクタの直列接続と並列接続
インダクタ(コイル)を直列や並列に組み合わせる必要がある場面はそれほど多くないが、まったくないわけでもない。 話を完結させるために、ここでも簡単に触れておく。
基本的には抵抗と同じように組み合わされる。 つまり、直列につなぐときは値をそのまま足し合わせ、並列につなぐときは「和分の積」で計算する。 やっかいなのは、複数のインダクタを近くに配置すると、意図してもしていなくても、磁界が互いに干渉し合ってしまう場合があることである。 そのため、複数のインダクタを組み合わせるよりも、単体の部品で済ませるほうが望ましい。 ただし、市販のインダクタの多くは磁界の干渉を防ぐシールドが施されている。
いずれにせよ、インダクタも抵抗と同じように足し合わされると理解しておけば十分であり、それ以上の詳細はこのチュートリアルの範囲を超える。
まとめ
直列回路と並列回路の基礎を理解できたところで、関連するチュートリアルにも目を通してみてほしい。
- 分圧回路:もっとも基本的で、繰り返し登場する回路の1つが分圧回路である。ここで学んだ内容がそのまま土台になる。
- Arduinoとは何か:回路の基礎を身につけたら、Arduinoのようなマイコンボードの学習に進むこともできる。
- スイッチの基礎:このチュートリアルでは扱わなかったが、スイッチもほぼすべての電子工作プロジェクトに登場する重要な部品である。
- LilyPadの基礎:導電糸で縫う:回路はブレッドボードと配線だけとは限らない。E-テキスタイルでは、導電糸を使ってLEDなどの電子部品を布や衣類に縫い込む。
タグ: 概念、電気工学
出典:Series and Parallel Circuits(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
メートル法の接頭辞とSI単位
メートル法の接頭辞は、国際単位系(SI)の量を、より簡潔に表すのに欠かせない道具である。
電子工作の世界に足を踏み入れると、こうした単位は非常に重要な役割を果たし、世界中の人がそれを使って自分の成果を伝え、共有できるようになる。 電子工作でよく使われる単位には、電位差を表すボルト、電流を表すアンペア、電力を表すワット、静電容量を表すファラド、インダクタンスを表すヘンリー、抵抗を表すオームなどがある。
このチュートリアルでは、電子工作でよく使われる単位を紹介するとともに、途方もなく大きな量から極端に小さな量までを表すためのメートル法の接頭辞についても説明する。
SI単位
人類は何千年も前から物を測ってきており、そのための単位も時代とともに移り変わってきた。 今では、物理量を表す単位が何十種類も存在する。 たとえば長さは、フィート、メートル、ファゾム、チェーン、パーセク、リーグなど、さまざまな単位で測れる。 測定結果をよりよく伝え合うには、あらゆる科学者や測定者が共通して使える、標準化された単位系が必要になる。 この標準化された単位系が国際単位系、略してSIと呼ばれるものである。
物理量のSI単位
| 物理量 | SI単位 | 単位記号 |
|---|---|---|
| 時間 | 秒 | s |
| 長さ | メートル | m |
| 質量 | グラム | g |
| 温度 | ケルビン | K |
| 力 | ニュートン | N |
距離をフィートやマイルで、体積をリットルで、温度を華氏や摂氏で表すこともできるが、上記の単位は、あらゆる科学者が測定結果を共有するための標準化された表現である。 これらの単位を使うことで、誰もが同じ言葉で語れるようになる。
電子工作でよく使うSI単位
電子工作では、次のような単位に特に頻繁に出会う。
| 物理量 | SI単位 | 単位記号 |
|---|---|---|
| 電位差(電圧) | ボルト | V |
| 電流 | アンペア | A |
| 電力 | ワット | W |
| エネルギー、仕事、熱量 | ジュール | J |
| 電荷 | クーロン | C |
| 抵抗 | オーム | Ω |
| 静電容量 | ファラド | F |
| インダクタンス | ヘンリー | H |
| 周波数 | ヘルツ | Hz |
単位がわかったところで、これらの単位を接頭辞でどう拡張して、さらに使いやすくできるかを見ていこう。
接頭辞
メートル法の接頭辞について最初に習うのは、たいてい次の6つだろう。
| 接頭辞(記号) | べき乗 | 数値 |
|---|---|---|
| キロ(k) | 10³ | 1,000 |
| ヘクト(h) | 10² | 100 |
| デカ(da) | 10¹ | 10 |
| (接頭辞なし) | 10⁰ | 1 |
| デシ(d) | 10⁻¹ | 0.1 |
| センチ(c) | 10⁻² | 0.01 |
| ミリ(m) | 10⁻³ | 0.001 |
これらは、多くの学校の理科の授業で最初に習う標準的な6つの接頭辞である。 しかし、電子工作やコンピュータ科学の世界に踏み込むと、接頭辞の範囲はこの6つをはるかに超えて広がっていく。 この6つは10⁻³から10³までの範囲しかカバーしないが、電子工作で扱う値ははるかに広い範囲に及ぶことが多い。
大きな量を表す接頭辞
| 接頭辞(記号) | べき乗 | 数値 |
|---|---|---|
| ヨタ(Y) | 10²⁴ | 1秭(1septillion) |
| ゼタ(Z) | 10²¹ | 1千垓(1sextillion) |
| エクサ(E) | 10¹⁸ | 100京(1quintillion) |
| ペタ(P) | 10¹⁵ | 1000兆(1quadrillion) |
| テラ(T) | 10¹² | 1兆(1trillion) |
| ギガ(G) | 10⁹ | 10億(1billion) |
| メガ(M) | 10⁶ | 100万(1million) |
| キロ(k) | 10³ | 1000(1thousand) |
| (接頭辞なし) | 10⁰ | 1 |
これらの接頭辞を使うと、大きな量をとても簡潔に表せる。 3,200,000,000ヘルツと書く代わりに、3.2ギガヘルツ、略して3.2GHzと書ける。 こうして、非常に大きな数の単位も簡潔に表現できる。 同じように、とても小さな数を表すための接頭辞もある。
小さな量を表す接頭辞
| 接頭辞(記号) | べき乗 | 数値 |
|---|---|---|
| (接頭辞なし) | 10⁰ | 1 |
| ミリ(m) | 10⁻³ | 1000分の1 |
| マイクロ(µ) | 10⁻⁶ | 100万分の1 |
| ナノ(n) | 10⁻⁹ | 10億分の1 |
| ピコ(p) | 10⁻¹² | 1兆分の1 |
| フェムト(f) | 10⁻¹⁵ | 1000兆分の1 |
| アト(a) | 10⁻¹⁸ | 100京分の1 |
| ゼプト(z) | 10⁻²¹ | 1千垓分の1 |
| ヨクト(y) | 10⁻²⁴ | 1秭分の1 |
こうして、1兆分の1秒を「1ピコ秒」と呼べるようになる。 小さな値を表す接頭辞について1つ気をつけたいのは、その略記がすべて小文字である一方、大きな値を表す接頭辞(キロ、ヘクト、デカを除く)はすべて大文字であるという点である。 これにより、同じアルファベットが使われていても両者を区別できる。 たとえば1mW(ミリワット)は1MW(メガワット)とは異なる。
Note
大文字の「K」はすでにケルビンを表すために使われているため、接頭辞のキロには小文字の「k」が割り当てられている。 後述する「ビットとバイト」の節で見るように、2進数(基数2)の接頭辞を扱うときにも、kとKの混同が同じように問題になる。
単位の換算
このメートル法の接頭辞の優れた点は、いくつかの接頭辞のあいだの変換に慣れてしまえば、その考え方を他のすべての接頭辞にもそのまま応用できることである。
簡単な例として、1アンペア(A)をより小さな単位で表してみよう。 ミリアンペアはアンペアの1000分の1なので、1アンペアは1000ミリアンペアに等しい。 さらに進めると、1ミリアンペアは1000マイクロアンペアに等しい。 逆方向に見ると、1アンペアは0.001キロアンペア、つまり1000アンペアが1キロアンペアになる。 なかなかの大電流である。
気づいたかもしれないが、接頭辞を切り替えることは、小数点を3桁分ずらすことと同じであり、これは1000倍する、あるいは1000で割ることと同じである。 たとえばキロからメガのように、より大きな接頭辞に切り替えるときは、小数点を3桁分左にずらす。 100,000キロワットは100メガワットに等しい。 10キロワットは0.01メガワットに等しい。 メガはキロのすぐ上の接頭辞なので、ワットであれアンペアであれファラドであれ、より上の接頭辞に切り替えるときは、常に小数点を3桁左にずらせばよい。
逆に、ナノからピコのように、より小さな接頭辞に切り替えるときは、小数点を3桁分右にずらす。 1ナノファラドは1000ピコファラドに等しい。 0.5ナノファラドは500ピコファラドに等しい。 その関係を短くまとめると、次のようになる。
\[ \begin{aligned} 1,\text{ギガ} &= 1000,\text{メガ} \\ 1,\text{メガ} &= 1000,\text{キロ} \\ 1,\text{キロ} &= 1000,\text{(単位そのもの)} \\ 1,\text{(単位そのもの)} &= 1000,\text{ミリ} \\ 1,\text{ミリ} &= 1000,\text{マイクロ} \end{aligned} \]
このパターンがわかるだろうか。 それぞれの接頭辞は、その1つ下の接頭辞の1000倍になっている。 最初は少し圧倒されるかもしれないが、接頭辞どうしの変換はやがて自然にできるようになる。
ビットとバイト
ビットとバイトを扱っていると、混乱することがよくある。 コンピュータは10進数ではなく2進数で動作するため、メートル法の接頭辞を使うときに、どちらの基数を指しているのかがわかりにくいことがある。 たとえば1キロバイトは、1000バイト(10進)を意味することもあれば、1024バイト(2進)を意味することもあり、しばしば混乱のもとになる。
この混乱をなくすため、国際電気標準会議(IEC)は2進数のビットとバイト用に新しい接頭辞を定めた。 これは2進接頭辞と呼ばれる。
| 接頭辞(記号) | べき乗 | 数値 |
|---|---|---|
| エクスビ(Ei) | 2⁶⁰ | 1,152,921,504,606,846,976 |
| ペビ(Pi) | 2⁵⁰ | 1,125,899,906,842,624 |
| テビ(Ti) | 2⁴⁰ | 1,099,511,627,776 |
| ギビ(Gi) | 2³⁰ | 1,073,741,824 |
| メビ(Mi) | 2²⁰ | 1,048,576 |
| キビ(Ki) | 2¹⁰ | 1,024 |
| (接頭辞なし) | 2⁰ | 1ビットまたは1バイト |
この方式を採用すると、1メガバイトは1000キロバイトになる一方、1メビバイトは1024キビバイトになる。 つまりビットとバイトの世界では、接頭辞が1つ上がるごとに1000(10³)ではなく1024(2¹⁰)倍になる。 残念ながら、この方式は実際にはあまり広く使われておらず、ビットやバイトの数を耳にするたびに、それが2進なのか10進なのかを気にする必要がある。
ハードディスクメーカーなどは、数値が大きく見える10進の表記で製品を売ることが多い。 1テラバイトのハードディスクは、実際にはおよそ931.3ギビバイトにしかならない。
ここで、大文字と小文字の「k」の問題が絡んでくる。 キビを表す正式な接頭辞は「Ki」だが、単に大文字の「K」と表記されることもあり、これは温度のケルビンを表す記号でもある。 そのため「キロバイト」という言葉を聞いたときは、それが1000バイト(10進)なのか1024バイト(2進)なのか、常に注意が必要になる。 一方、「キビバイト」という言葉であれば、それが2進での解釈(1024バイト)であることが確実にわかる。
ビットとバイトの換算
ここまでは、ビットやバイトをより大きな、あるいは小さな数に換算する方法を見てきたが、ビットとバイトを相互に変換する場面もある。 たいていの場合、1バイトは8ビットに等しく、1ビットは0.125バイト(8分の1)に等しい。 ビットに関しては他にもさまざまな単位の桁があるが、実際にはバイトが使われる場面が圧倒的に多い。 ビットとバイトを相互に変換する場面自体はそれほど多くないが、それでもメモリを扱うときなどには役立つ知識である。 たとえば、コードの中では個々のビット単位でデータを扱っていても、実際のメモリはバイト単位で管理されている、といった場面がある。
練習問題
それぞれの単位には、次のような標準的な略記を使う。
- A:アンペア
- V:ボルト
- W:ワット
- Hz:ヘルツ
- F:ファラド
- H:ヘンリー
- Ω:オーム
- s:秒
- B:バイト
- b:ビット
例: 400mAをAに換算せよ → 答え:400mA = 0.4A
以下を換算せよ。
- 50mAをAに
- 10nFをpFに
- 500kWをWに
- 0.01mVをµVに
- 20,000kΩをMΩに
- 4680MHzをGHzに
- 4TiBをGiBに
- 200MbをKbに
- 0.00007sをµsに
- 1450nHをµHに
解答
- 0.05A
- 10,000pF
- 500,000W
- 10µV
- 20MΩ
- 4.68GHz
- 4096GiB
- 200,000kb
- 70µs
- 1.45µH
慣れてくると、接頭辞の切り替えはあっという間にできるようになる。
まとめ
数値の大きさに応じて、もっとも適切な接頭辞に変換できることは重要なスキルである。 5,600,000や0.000000002のような、長くて読みにくい数値を避けられるようになる。 5.6Mや2nと書けば、情報をより速く、より整理された読みやすい形で伝えられる。
テスターの使い方のチュートリアルにも、ぜひ目を通してみてほしい。 テスターを使いこなすには、ここで見た接頭辞すべてについての理解が欠かせない。 測定値は、こうした接頭辞付きの単位で表示されることが多いからである。
タグ: 概念、電気工学、物理学
出典:Metric Prefixes and SI Units(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
回路図の読み方
回路図は、回路を設計し、組み立て、トラブルシューティングするための地図である。 回路図を読み、それにしたがって配線できることは、電子工学に携わるすべての人にとって重要なスキルである。
このチュートリアルを読み終えれば、回路図をひととおり読みこなせるようになるはずである。 まずは、基本的な回路図記号をひととおり見ていく。
そのうえで、これらの記号が回路図の上でどのようにつながり、回路のモデルを作っているのかを説明する。 あわせて、読み解くときに気をつけたいコツもいくつか紹介する。
参考になるチュートリアル:
回路図記号(その1)
さまざまな回路部品の記号を、まとめて見ていこう。 ここでは、標準化された基本的な回路図記号を紹介する。
抵抗器
もっとも基本的な回路部品であり、記号でもある。 抵抗器は、回路図の上ではたいていジグザグの線と、そこから伸びる2つの端子で表される。 国際規格の記号を使う回路図では、ジグザグの代わりに、何の特徴もない長方形が使われることもある。
ポテンショメータと可変抵抗器
可変抵抗器とポテンショメータは、どちらも標準的な抵抗器の記号に矢印を加えた形で表される。 可変抵抗器は端子が2つのままなので、矢印はただ中央を斜めに横切るように描かれる。 ポテンショメータは端子が3つの部品なので、矢印そのものが3つ目の端子(ワイパー)になる。
コンデンサ
コンデンサの記号としてよく使われるものが2種類ある。 一方は極性を持つ(たいていは電解またはタンタル)コンデンサを表し、もう一方は極性を持たないコンデンサを表す。 どちらも2本の端子があり、それぞれが垂直に伸びて板につながっている。
片方の板が曲線になっている記号は、そのコンデンサが極性を持つことを示している。 曲線側の板はたいていコンデンサのカソード側であり、正極であるアノード側のピンより低い電圧になっている必要がある。 極性を持つコンデンサの記号では、正極側のピンにプラス記号も添えられる。
インダクタ
インダクタは、たいてい波打った膨らみの連続、あるいはループ状のコイルとして表される。 国際規格の記号では、単純に塗りつぶした長方形として定義されることもある。
スイッチ
スイッチにはさまざまな種類がある。 もっとも基本的なスイッチである単極単投(SPST)は、2つの端子と、それらをつなぐアクチュエーター(接点を作動させる部分)を表す半分だけつながった線で構成される。
下に示すSPDTやSP3Tのように、投入先が複数あるスイッチでは、アクチュエーターの接続先がその分だけ増える。
複数の極を持つスイッチは、たいてい複数の同じスイッチが並び、中央のアクチュエーターどうしを点線でつないだ形で表される。
電源
プロジェクトへの電源供給の方法にさまざまな選択肢があるのと同じように、電源を表す回路図記号にも幅広い種類がある。
直流電源と交流電源
電子工作でよく使うのは、たいてい一定の電圧を供給する電源である。 供給元が直流(DC)か交流(AC)かを示すには、次の2つの記号のどちらかを使う。
電池
円筒形のアルカリ単3電池であれ、充電式のリチウムポリマー電池であれ、電池はたいてい、長さの異なる平行な線のペアとして描かれる。
線のペアが増えるほど、電池の中で直列につながったセルの数が多いことを示す。 また、長いほうの線が正極、短いほうの線が負極を表すのが一般的である。
電圧ノード
特に配線が込み入った回路図では、電圧そのものに特別な記号を割り当てることがある。 この端子が1つだけの記号に部品をつなぐと、それは5V、3.3V、VCC、GND(グラウンド)に直接つながっていることを意味する。 正の電圧ノードはたいてい上向きの矢印で示され、グラウンドノードはたいてい1〜3本の水平線(あるいは下向きの矢印や三角形)で示される。
回路図記号(その2)
ダイオード
基本的なダイオードは、線に押し当てられた三角形として表されるのが一般的である。 ダイオードも極性を持つため、2つの端子をそれぞれ見分けられるようにしておく必要がある。 正極であるアノードは、三角形の平らな辺につながる端子である。 負極であるカソードは、記号の線から伸びる端子である(マイナス記号だと思えばよい)。
ダイオードにはさまざまな種類があり、それぞれ標準のダイオード記号に少し手を加えた独自の記号を持つ。 発光ダイオード(LED)は、ダイオードの記号に外側へ向かう線を数本加えた形になる。 光からエネルギーを生み出す(いわば小さな太陽電池である)フォトダイオードは、逆にその矢印をダイオードに向かって内向きにする。
ショットキーダイオードやツェナーダイオードなど、その他の特殊なダイオードにもそれぞれ独自の記号があり、記号の線の部分に少しずつ違いがある。
トランジスタ
トランジスタは、BJTであれMOSFETであれ、正にドープされたものと負にドープされたものの2通りの構成がありうる。 そのため、それぞれの種類のトランジスタには、少なくとも2種類の描き方がある。
バイポーラ接合トランジスタ(BJT)
BJTは3端子の部品であり、コレクタ(C)、エミッタ(E)、ベース(B)を持つ。 BJTにはNPN型とPNP型の2種類があり、それぞれ固有の記号を持つ。
コレクタ(C)とエミッタ(E)のピンは互いに一直線上にあるが、エミッタには必ず矢印が描かれる。 矢印が内向きならPNP、外向きならNPNである。 どちらがどちらかを覚える語呂合わせとして、「NPNは中に向かってpointingしていない(not pointing in)」というものがある。
金属酸化膜電界効果トランジスタ(MOSFET)
BJTと同じくMOSFETも3端子の部品だが、今度はソース(S)、ドレイン(D)、ゲート(G)と呼ばれる。 こちらもnチャンネルかpチャンネルかによって記号が2種類あり、それぞれによく使われる記号がいくつかある。
記号の中央にある矢印(バルクと呼ばれる部分)が、そのMOSFETがnチャンネルかpチャンネルかを示す。 矢印が内向きならnチャンネル、外向きならpチャンネルである。 覚え方は「nは中(n is in)」(NPNの語呂合わせとはちょうど逆になる)。
デジタル論理ゲート
標準的な論理関数であるAND、OR、NOT、XORには、それぞれ固有の回路図記号がある。
出力に丸印を加えると、その機能が否定され、NAND、NOR、XNORになる。
入力が2つより多いこともあるが、形自体は変わらず(多少大きくなる程度で)、出力は常に1つだけである。
集積回路
集積回路は非常に多様な機能を持ち、種類も膨大にあるため、固有の回路記号を持たない。 たいていは、側面にピンが伸びる長方形として表される。 それぞれのピンには、番号と機能の両方がラベルとして付けられる。
ICの回路記号は非常に汎用的であるため、名前、値、ラベルが特に重要な意味を持つ。 それぞれのICには、そのチップの名前を正確に示す値が必ず添えられる。
固有の記号を持つIC:オペアンプと電圧レギュレータ
より一般的な集積回路の中には、固有の回路記号を持つものもある。 オペアンプはたいてい下のように描かれ、非反転入力(+)、反転入力(-)、出力、そして2つの電源ピンの、合計5つの端子を持つ。
1つのICパッケージに2つのオペアンプが内蔵されていて、電源用とグラウンド用のピンをそれぞれ1本ずつ共有する構成になっていることもよくあり、そのため右側の記号はピンが3本しかない。
単純な電圧レギュレータは、たいてい入力、出力、グラウンド(または調整用)の3端子の部品である。 これらはたいてい長方形で表され、左に入力ピン、右に出力ピン、下にグラウンド(調整)ピンが描かれる。
その他いろいろ
水晶振動子とセラミック発振子
水晶振動子やセラミック発振子は、マイコン回路にとって欠かせない部品であることが多い。 クロック信号を作り出す役割を担っている。 水晶振動子の記号はたいてい2端子だが、水晶にコンデンサを2つ組み合わせたセラミック発振子は、たいてい3端子になる。
ヘッダーとコネクタ
電源の供給であれ、情報の送出であれ、ほとんどの回路にコネクタは欠かせない。 その記号はコネクタの見た目によってさまざまであり、いくつか例を挙げる。
モーター、トランス、スピーカー、リレー
これらは、(ほとんどの場合)何らかの形でコイルを利用しているという共通点があるので、まとめて紹介する。 トランス(変圧器。「見た目以上の力を持つ」ロボットのことではない)は、たいてい2つのコイルが向かい合い、そのあいだを何本かの線で区切った形で表される。
リレーは、たいていコイルとスイッチを組み合わせた形になる。
スピーカーやブザーは、たいてい実物に近い形で描かれる。
モーターは、一般に丸で囲んだ「M」の文字で表され、端子の周りに多少の装飾が加わることもある。
ヒューズとPTC
大きな突入電流を制限するために使われるヒューズやPTCには、それぞれ固有の記号がある。
PTCの記号は、実は温度依存性を持つ抵抗であるサーミスタの一般的な記号でもある(国際規格の抵抗記号が中に入っているのに気づいただろうか)。
もちろん、この一覧に載っていない回路記号もまだまだたくさんある。 しかし、ここまでの記号を押さえておけば、回路図を読むうえで9割方は困らないはずである。 一般に、記号はそれが表す実物の部品と、見た目にも何らかの共通点を持っている。 記号に加えて、回路図上のそれぞれの部品には固有の名前と値が添えられ、それがさらに部品の識別を助けてくれる。
名前の識別子と値
回路図を読みこなすための大きな鍵の1つが、どの部品がどれなのかを見分けられることである。 部品記号はその情報の半分しか教えてくれず、それぞれの記号には名前と値の両方が添えられて初めて完全な情報になる。
名前と値
値は、その部品が正確には何であるかを定義する。 抵抗器やコンデンサ、インダクタといった回路図の部品では、値はそれが何オーム、何ファラド、何ヘンリーであるかを示す。 集積回路のような部品では、値は単にそのチップの名前になっていることもある。 水晶振動子であれば、発振周波数が値として記載されることもある。 つまり、回路図の部品の値は、その部品のもっとも重要な特性を表している。
部品の名前は、たいてい1〜2文字のアルファベットと数字の組み合わせでできている。 アルファベットの部分は部品の種類を示し、抵抗器ならR、コンデンサならC、集積回路ならU、といった具合になる。 回路図上のそれぞれの部品名は一意でなければならず、たとえば1つの回路に複数の抵抗器があれば、R1、R2、R3のように名付けられる。 こうした部品名のおかげで、回路図の特定の場所を名指しできる。
名前の接頭辞はかなり標準化されている。 抵抗器のように、接頭辞が部品名の頭文字そのものになっているものもある。 一方で、そう単純にはいかない接頭辞もある。 たとえばインダクタはLで表されるが、これは電流を表す記号としてIがすでに使われているためである(ではCから始まる部品は何かというと……電子工学の世界とは、そういうものである)。 よく使われる部品と、その名前の接頭辞をまとめておく。
| 識別子 | 部品 |
|---|---|
| R | 抵抗器 |
| C | コンデンサ |
| L | インダクタ |
| S | スイッチ |
| D | ダイオード |
| Q | トランジスタ |
| U | 集積回路 |
| Y | 水晶振動子、発振器 |
これらは部品記号の「標準的な」名前ではあるが、必ずしも一律に守られているわけではない。 たとえば集積回路がUではなくICという接頭辞で表されていたり、水晶振動子がYではなくXTALとラベル付けされていたりすることもある。 どの部品がどれなのかは、状況に応じて判断してほしい。 たいていは記号自体が十分な手がかりを与えてくれる。
回路図を読む
回路図上のどの部品がどれなのかを理解できれば、読み解く作業の半分以上は終わったようなものである。 残るは、それらの記号がどうつながっているのかを見分けることだけである。
ネット、ノード、ラベル
回路図のネットは、回路の中で部品がどう配線されているかを示す。 ネットは、部品の端子どうしを結ぶ線として表される。 この回路図の緑色の線のように、他とは異なる色で描かれることもある(必須ではない)。
接続点とノード
配線は2つの端子だけをつなぐこともあれば、何十もの端子をつなぐこともある。 配線が2方向に分かれるとき、そこに接続点ができる。 回路図の上では、この接続点をノード、つまり配線の交点に置かれた小さな点で表す。
ノードがあることで、「この交点をまたぐ配線どうしは接続されている」ということを示せる。 逆に交点にノードがなければ、それは2本の別々の配線がただ交差しているだけで、接続はされていないことを意味する(回路図を設計するときは、こうした非接続の交差はできる限り避けるのが望ましいが、避けられないこともある)。
ネット名
回路図をより見やすくするために、配線を引き回す代わりに、ネットに名前を付けてラベルとして表示することがある。 同じ名前のネットは、たとえ配線でつながっているように見えなくても、接続されているとみなされる。 名前はネットの上に直接書かれることもあれば、配線からぶら下がった「タグ」として表示されることもある。
ネットの名前は、その配線上の信号の役割を具体的に表すように付けられることが多い。 たとえば電源系のネットには「VCC」や「5V」、シリアル通信のネットには「RX」や「TX」といった名前が付けられる。
回路図を読むコツ
機能ブロックを見分ける
本当に大規模な回路図は、機能ごとのブロックに分割されているべきである。 電源入力と電圧レギュレータのセクション、マイコンのセクション、コネクタ専用のセクションなどがあるかもしれない。 どのセクションが何を担っているかを見分け、入力から出力への回路の流れを追ってみるとよい。 優れた回路図の設計者は、まるで本を読むように、入力を左側に、出力を右側に配置していることもある。
電圧ノードを見分ける
電圧ノードは1端子の回路図部品であり、部品の端子をここにつなぐことで、特定の電圧レベルに割り当てられる。 これはネット名の特別な使い方であり、同じ名前の電圧ノードにつながる端子は、すべて互いに接続されているとみなされる。
グラウンドの電圧ノードは特によく使われる。 非常に多くの部品がグラウンドへの接続を必要とするからである。
部品のデータシートを参照する
回路図の中に理解できない部分があれば、その回路の中でもっとも重要な部品のデータシートを探してみるとよい。 たいてい、回路の中でもっとも多くの仕事をしているのは、マイコンやセンサーのような集積回路である。 こうした部品は回路図の中でもっとも大きく、たいてい中央付近に配置されていることが多い。
まとめ
回路図の読み方について、これでひととおり説明できた。 部品記号を知り、ネットをたどり、よく使われるラベルを見分けられるようになれば十分である。 回路図の仕組みを理解することで、電子工作の世界全体への扉が開ける。 新しく身につけた回路図の知識を実践できる、次のようなチュートリアルもぜひ試してみてほしい。
- 分圧回路:もっとも基本的で根本的な回路の1つである。たった2本の抵抗で、大きな電圧を小さな電圧に変える方法を学べる。
- ブレッドボードの使い方:回路図の読み方がわかったところで、今度は実際に組んでみよう。ブレッドボードは、一時的で機能する試作回路を作るのに最適な道具である。
- 配線の基本:あるいは、ブレッドボードを使わずにいきなり配線してみるのもよい。電線を切り、被覆を剥き、接続する方法を知っておくことは、電子工作の重要なスキルである。
- 直列回路と並列回路:直列や並列で回路を組むには、回路図をきちんと理解している必要がある。
- 導電糸で縫う:電線を使いたくないなら、導電糸を使ったE-テキスタイルの回路を作ってみるのはどうだろうか。同じ回路図から、さまざまな素材でさまざまな作り方ができるというのが、回路図の美しさである。
タグ: 電気工学、スキル
出典:How to Read a Schematic(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
配線の基本
「電線(ワイヤー)」という言葉を耳にしたとき、たいていの人が思い浮かべるのは、直径数ミリから数センチほどの、柔軟で円筒形の金属の線だろう。 ワイヤーという言葉は機械的な用途にも電気的な用途にも使われるが、このチュートリアルでは電気配線に絞って説明する。
電線は現代社会を支える基盤の1つである。 家の中でも、照明をつけたり、コンロを温めたり、電話で話したりするのに電線が使われている。 電線は、電流をある場所から別の場所へ流すために使われる。 ほとんどの電線は、金属の芯を絶縁体で覆った構造をしている。 絶縁体とは、内部の電荷が自由に動けず、そのため電流を通さない材料のことである。 完璧な絶縁体というものは存在しないが、ガラスや紙、テフロンのように抵抗率の高い材料は、優れた絶縁体として使われる。 被覆があるのは、むき出しの電線に触れることで電流が人の体を通ってしまったり(よくない)、意図せず別の電線に接触してしまったりするのを防ぐためである。
参考になるチュートリアル:
- 電圧、電流、抵抗とオームの法則
- スルーホールのはんだ付け
- メートル法の接頭辞とSI単位
より線と単線
電線には、単線とより線の2つの形式がある。
単線
単線は、1本の金属線(ストランドとも呼ばれる)だけでできている。 単線でよく知られる用途の1つがワイヤーラップである。
より線
より線は、複数本の細い単線を1本にまとめたものである。 同じ太さの単線に比べて、はるかに柔軟である。
単線とより線、それぞれの使いどころ
より線は同じ太さの単線より柔軟なので、ロボットアームのように頻繁に動かす必要がある配線に向いている。 逆に、ブレッドボードやプロトボードで回路を試作するときのように、ほとんど動かす必要がない場面では単線が使われる。 単線であれば、ブレッドボードの穴やプリント基板のスルーホールにまっすぐ差し込みやすい。
より線をブレッドボードやスルーホールに使おうとすると、太さによっては、差し込むときに線がばらけてしまい、かなり扱いにくくなることがある。
Note
ヒント:より線をねじ端子やブレッドボード、スルーホールに接続したいときは、線をひとまとめによじり、先端にはんだを軽く染み込ませる「予備はんだ(テニング)」をしてみるとよい。 ただし、予備はんだをした先端のはんだ付け部分は、機械的な応力や熱サイクルによって割れることがある点には注意が必要である。
電線の太さ
電線の直径を表す言葉として「ゲージ」が使われる。 ゲージは、その電線が安全に扱える電流の量を判断するのに使われる。 ゲージには電気用と機械用があるが、このチュートリアルでは電気用のゲージだけを扱う。 ゲージの規格には主にAWG(アメリカン・ワイヤー・ゲージ)とSWG(スタンダード・ワイヤー・ゲージ)の2種類があるが、両者の違いはこのチュートリアルではそれほど重要ではない。
電線が流せる電流量は、電線の材質、長さ、状態などいくつかの要因によって決まる。 一般に、太い電線ほど多くの電流を流せる。
SparkFunでは、試作やブレッドボード用にたいてい22 AWGの電線を使っている。 ブレッドボードやPCBで使うなら、単線のほうが穴にきれいに収まるので都合がよい。 はんだ付けを伴うその他の試作や製作では、より線が第一候補になる。 ただし、1本の電線に流す電流が多すぎないように注意すること。 発熱して溶けてしまうことがある。
より細い配線が必要な場合は、30 AWGのワイヤーラップ用電線という選択肢もある。
Note
ヒント:ワイヤーラップは、もともと試作回路を組むために使われていた技法である。 今日ではあまり一般的ではなくなったが、表面実装部品やPCBの小さなピンへの接続、スペースの限られたプロジェクト、基板の修理(いわゆる「グリーンワイヤー修理」)などには今でも有用である。 太い電線を継ぎ足す(スプライスする)ときにも、ワイヤーラップは役に立つ。
電線の被覆を剥く方法
安全で長持ちする電気接続は、きれいで正確な被覆剥きから始まる。 下の金属線を傷つけずに外側のプラスチック被覆だけを取り除くことが重要である。 もし電線に傷が入ってしまうと、接続が切れたり、ショートが起きたりすることがある。
道具
手動式ワイヤーストリッパー
シンプルな手動式のワイヤーストリッパーは、ハサミのような一対の刃でできている。 太さの異なる複数の切り欠きがあり、電線の太さに合った切り欠きを選ぶことが、電線を傷めないために非常に重要である。 メーカーによっては、ロック機構やエルゴノミックなハンドル、ねじを切断する機能が付いていることもある。
Note
警告:ホームセンターで売っている多くのワイヤーストリッパーは、細いゲージ(22〜30番)の電線を剥けないことがある。 試作を始めるなら、22 AWG以下の細い電線も剥ける道具を選ぶこと。 30 AWG(ワイヤーラップ用電線)まで剥ける道具であれば、なおよい。
ナイフでも被覆を剥くこと自体はできるが、金属部分に傷を入れたり切り込んでしまったりする恐れがある。 ナイフで電線の被覆を剥くのは、刃が滑って大怪我につながりかねないため、非常に危険でもある。
自動調整式ワイヤーストリッパー
自動調整式のワイヤーストリッパーもあり、電線を歯の中央に置いてハンドルを握るだけで自動的に被覆を剥いてくれる。 ほとんどどんな電線でも、毎回きれいに剥ける。 メーカーによっては、被覆付きと被覆なしの電線を切断したり圧着したりする機能が付いていることもある。
Note
ヒント:自動調整式のワイヤーストリッパーは、ケーブルのシースを剥いたり、複数本の被覆線を同時に剥いたりするのにも便利である。
ワイヤーラップツール
ワイヤーラップツールを使ってピンに電線を巻きつける場合、道具の中央にストリッパーの刃が内蔵されていて、細い電線の被覆を剥けるようになっていることが多い。 電線を刃のあいだに挟んで引っ張るだけでよい。
手動式ワイヤーストリッパーで被覆を剥く
電線の先端から1/4インチ(あるいは必要な長さ)のところで、適切な切り欠きを使ってハンドルを握り、少しひねると、被覆が切れて緩む。 そのままワイヤーストリッパーを電線の先端側へ引っ張ると、被覆がすっと抜ける。
コツと注意点
電線の太さと、ストリッパーの切り欠きのサイズを正しく合わせることが重要である。 切り欠きが大きすぎると被覆が剥けず、逆に小さすぎると電線自体を傷つけてしまう。 切り欠きが小さすぎると刃が閉じすぎて、下の金属線に食い込んでしまう。 より線の場合、外側の数本が切り取られてしまい、電線全体の太さが減り、強度も落ちてしまう。 単線の場合、傷が入るとその部分の強度と柔軟性が大きく落ち、曲げたときに折れる可能性が大きく高まる。
もし誤って電線に傷を入れてしまったら、その部分を切り落として、もう一度やり直すのがもっとも確実である。
電線を継ぎ足す(スプライス)方法
まず、ワイヤーストリッパーで両方の電線の先端の被覆を剥く。 より線を使う場合は、先端をよじって線をまとめ、はんだ付けの前に予備はんだをしておくとよい。
むき出しになった部分を覆えるだけの長さに熱収縮チューブを切り、あらかじめどちらかの電線に通しておく。 このとき、これから継ぎ足す部分から離れた位置までチューブをずらしておくことを忘れないようにする。
2本の電線の先端を向かい合わせ、むき出しの部分どうしを触れさせる。 はんだ付け用のマットにテープで固定して、電線どうしを押さえておく。
Note
ヒント:テープで固定する以外にも、「第三の手(クリップスタンド)」や3Dプリントした固定具を使う方法もある。
電線にはんだを流し込む。 はんだごてを電線に当てすぎないように注意する。 被覆が溶けて、想定より広い範囲がむき出しになってしまうことがある。
電線の裏側にもしっかりはんだが回っていることを確認する。
電線を裏返し、反対側にもはんだを行き渡らせる。 必要であればフラックスとはんだを追加する。
熱収縮チューブを使う場合は、接続部分にかぶせてスライドさせ、はんだごてやヒートガンで熱を加えて収縮させる。 仕上がると、熱収縮チューブがむき出しだった部分をきれいに覆う。
Note
ヒント:他にも継ぎ足しの方法はいろいろある。 電線どうしをよじり合わせる方法(互い違いにねじる「ツイストヘリックス」や、同じ方向にねじる方法)や、フックのように引っ掛けてからよじる「ウェスタンユニオン splice(別名リネマンズ splice)」もあり、これは主に単線向けだがより線にも使える。 上級者向けには、電線を途中で完全に切断せずに分岐させる「ウェスタンTスプライス」もある。 これは、限られたスペースの中でプルアップ抵抗のような部品を追加したいときに便利で、電線の途中の被覆をカッターやはんだごてで剥き、別の電線や端子を巻きつけてはんだ付けする。 仕上げに熱収縮チューブやホットグルーで絶縁するとよい。
電気コネクタを圧着する方法
電気コネクタは、機械的な組み立てによって電気回路どうしをつなぐための部品である。 接続は一時的なこともあれば、恒久的なこともある。 電気コネクタには何百もの種類があるが、電線どうしをつなぐものもあれば、電線を端子につなぐものもある。
代表的なコネクタをいくつか紹介する。 左上の絶縁スプライスコネクタは、2本の電線の端をつなぐためのものである。 その右にあるフォーク型端子(スペード端子、開放リング端子とも呼ばれる)は、ねじ端子のソケットに差し込んで使うのに便利で、ねじを軽く緩めておけば取り付けられる。 中央のリング端子もねじ端子への接続によく使われ、フォーク型よりも信頼性の高い接続が得られるが、取り付けや取り外しの際にねじを完全に外す必要がある。 右上のオス型スペード端子(ブレード端子)は、右下に示したメス型スペード端子(ダブルクリンプ)に差し込んで使う。 これらのコネクタには、フランジ付きフォークやロック機構付きリング端子など、用途に応じたさまざまな派生形もある。
これらのコネクタにはサイズや定格の違いもあり、たとえば1/4インチと2.8mmのメス型スペード端子ではサイズが異なる。 確実な接続を得るには、コネクタのサイズをきちんと合わせる必要がある。
圧着(クリンプ)とは何か
ここで言う圧着(クリンプ)とは、金属を変形させることで2つの金属部品を組み合わせ、一方が他方を保持するように接合する方法を指す。 この変形部分そのものを「クリンプ」と呼ぶ。
道具
電線にコネクタを圧着するには、圧着ピンに応じた専用の工具が必要になる。 圧着ピンの種類に応じて、いくつかのスタイルの圧着工具が存在する。
ラチェット式圧着工具
もっとも優れた圧着工具には、ラチェット機構が内蔵されている。 ハンドルを握るとラチェットがかかり、あご(ジョー)が途中で開かないようになっている。 十分な圧力がかかると、ラチェットが外れて圧着済みの部品が解放される。 これにより、必ず十分な圧力がかかったことを保証できる。 このタイプの工具は、あごの接触面も広く作られている。
コネクタのサイズによって、工具の「ダイ」(圧着工具の先端部分)のサイズも変わる。
手動式圧着工具
手動式の圧着工具でも、ほぼ同じ結果を得られるが、使う側により高い注意力が求められる。 このタイプの工具は一般に頑丈さに劣り、コネクタに対してあごが正しく揃っているか、圧着のたびに気を配る必要がある。 位置がずれると、望ましくない圧着になってしまう。 通常の使用による摩耗で、あごが完全に閉じなくなってくることもある。 基本的には、できる限り強く握れば十分である。
Note
警告:ペンチは圧着工具ではない。 ハンマーもバイスも、ニードルノーズプライヤーも、平らな石も同様である。 正しい圧着工具を正しく使えば、電線とコネクタのバレル部分のあいだに「コールドウェルド(常温接合)」ができる。 よく圧着された部分を輪切りにすると、電線とコネクタが一体化した固い形になっているのがわかる。 間違った道具を使うと、この状態にはならない。 なぜこれほどの完成度が求められるのか。 圧着が不十分だと、電線とコネクタのあいだに空気の隙間ができてしまう。 その隙間に湿気がたまり、湿気が腐食を招き、腐食が抵抗を生み、抵抗が発熱を招き、最終的には断線につながりかねないからである。
クイックディスコネクトコネクタを圧着する
単線に圧着接続を使うことについては賛否両論がある。 単線を圧着すると、その部分が弱点になり、断線につながると考える人も多い。 また、単線は端子の形に合わせて変形しにくいため、より線に比べて圧着がゆるみやすいとも言われる。 どうしても単線を使う必要がある場合は、圧着した後にその部分をはんだ付けしておくとよい。
まず、端子のサイズに合った太さの電線を選ぶ(あるいはその逆)。 ここでは、圧着した接続部分に電線がなじみやすいより線を使うことを前提とする。 次に電線の被覆を剥く。 むき出しにする長さは、コネクタの金属製バレル部分の長さと同じくらい、たいてい1/4インチ程度にする。 剥いた電線がバレルの中にほとんど隙間なく収まれば、コネクタのサイズは適切である。
電線は、被覆がバレルの端に触れるところまで挿入する。
電線と端子を圧着工具に差し込む。 端子の被覆の色と、圧着工具に示された色の位置を合わせる必要がある。 たとえば端子の被覆が赤なら、工具の赤い印の位置を使う。 工具に色の表示がなければ、側面のゲージ表示を使う。
端子はバレル側を上にして水平に置き、工具はそのバレルに対して垂直に、リング側にもっとも近い位置に当てる。 圧着を仕上げるには、工具をかなりの力で握り込む。 一般に、圧着を「やりすぎる」ことはほぼ不可能である。
圧着が終わったら、電線とコネクタを強い力で引っ張っても外れないことを確認する。 もし外れてしまうなら、圧着は正しくできていない。 実際に使う場所に取り付けてから失敗するよりは、この段階で失敗を見つけておくほうがよい。
Note
ヒント:電線がバレルに収まらない、あるいはゆるすぎる場合は、電線かコネクタのサイズや種類が合っていない。 必要であれば、電線とコネクタのあいだにはんだを追加することもできる。 ただし、正しく圧着された接続は気密性の高い常温接合になっており、本来はんだは不要である。 はんだを追加すると、機械的な振動や熱サイクルによる応力が接合部に加わりやすくなり、かえって断線の原因になることがある。 はんだ付けは接合部の抵抗を増やすこともあるが、低電力の用途であれば、その違いが問題になることはほとんどない。
圧着ピンを圧着する
電気コネクタには何百もの種類があることをもう一度思い出してほしい。 設計によっては、プラスチック製のハウジングに差し込む形のコネクタもある。 バレルで電線を締め付ける代わりに、電線とその被覆それぞれを挟み込む2組の圧着タブ(「羽根」)を持つものもある。 被覆用の圧着タブは、電線を引っ張る力を逃がす「ストレインリリーフ」の役割を果たす。 圧着ピンには、プラスチックハウジングに挿入したときに使うロック用のタブや、位置決め用のストッパーが付いていることもある。
たとえば、既製のプレミアムジャンパー線には、0.1インチ間隔のPTHパッドを持つPCBに接続するためのこの種のピンが使われている。
この作業は、より小さなピンを扱うため少し根気が必要になる。 慣れていないと時間がかかることもあるが、プロジェクトに合わせた自由な長さや構成のケーブルを自作できるようになる。
まず、電線を切って被覆を剥く。 電線の太さは、圧着ピンの仕様に合わせる必要がある。 ここでは、圧着ピンのデータシートが推奨する22 AWGのより線を使い、JST RCYコネクタに接続する。 金属帯から圧着ピンを切り離した後、電線の芯を導通用のタブに、被覆を絶縁用のタブに合わせて、電線が仕様に合っているか確認する。
十分に被覆を剥けていたら、圧着ピンを工具のあごの片方に差し込む。 絶縁タブを内側に少し曲げる必要があるかもしれない。 ここでは大きいほうのあごを使う。
工具のみぞをよく確認しながら、圧着ピンをダイに差し込む。 あごの片側には半円形のみぞが2つ、もう片側には1つ切られている。 みぞが2つあるほうでタブを圧着する。 さらに、ダイの半分は絶縁タブ用にくぼんでいる。
Note
警告:圧着ピンを正しく差し込まないと、ラチェット式の工具ではタブを十分に圧着できない。 その結果、電線とピンがきちんと導通せず、ピン自体が壊れてしまうことがある。 工具が途中の位置で固まってしまった場合は、ハンドルのすぐ上にある安全解除ピンを操作する必要がある。
ラチェット式の工具をゆっくり閉じて圧着ピンを固定し、剥いた電線を差し込む。 圧着ピンの絶縁タブがダイと面一になるよう、位置を調整する必要があるかもしれない。
準備ができたら、ハンドルをゆっくりとさらに握り込み、タブの圧着を進める。 うまくいかない場合は、ハンドルのすぐ上の安全解除ピンを操作する。 ラチェットが自動的に外れるまでハンドルを握り続ければ、圧着は完了である。
圧着したピンを工具から慎重に取り外す。 タブの様子を確認する。 うまくいっていなければ、もう一度あごに差し込んで圧着し直す必要があるかもしれない。
準備ができたら、圧着したピンをそれぞれのハウジングに挿入する。 ロック用のタブと、プラスチックハウジング側の穴の位置を合わせることを忘れないようにする。
正しく挿入できれば、電線はハウジングにカチッと収まるはずである。
よくある失敗
クイックディスコネクトや圧着ピンを圧着するときによくある失敗をいくつか挙げる。
電線に対してコネクタのサイズが合っていない、あるいはコネクタに対して電線のサイズが合っていない。
被覆を剥きすぎないよう注意すること。
害があるとは限らないが、電線がバレルの先から出すぎているのも望ましくない。 その場合は、余った部分を切りそろえるとよい。
ワイヤーラップツールの使い方
Note
注意:ワイヤーラップは細いゲージの電線を使うため、スペースの限られたプロジェクトには最適だが、電線が細い分、大きな電力を扱うことはできない。
30 AWGの電線をワイヤーラップツールの刃のあいだに挟み、引っ張って被覆を剥く。
端子に十分巻きつけられるだけの長さを剥いておく。 だいたい1インチほどあれば十分である。
むき出しにした電線を、側面の切り欠きの穴に差し込む。 切り欠きのある側に電線を入れ、円筒の側面の溝に沿わせる。
電線をヘッダーピン(ポスト)に差し込む。 ここでは、ミニブレッドボードに挿したオスヘッダーピンを例にしている。
Note
注意:スタック可能なメスヘッダーピンは、ワイヤーラップツールと電線と一緒にねじれてしまうことがある。 巻きつけには、オスヘッダーピンを使うことをおすすめする。
工具を時計回りに回して、四角いヘッダーピンに電線を巻きつけていく。 もう片方の手で電線とヘッダーピンを押さえながら、剥いた部分がすべて巻き終わるまで回し続ける。
ピンから工具を外す。 仕上がると、電線の被覆はピンの根元から始まっているはずである。 より確実で恒久的な接続にしたい場合は、電線とピンのあいだにはんだを追加するとよい。
同じピンにさらに接続を増やしたい場合は、最初の巻きつけの上にもう1本の電線を巻けばよい。 何本重ねられるかは、ヘッダーピンの長さによる。 マイコンやLED、抵抗のヘッダーに、試作用としてワイヤーラップツールを使ってみるのもよいだろう。
巻きつけた電線を外す
ピンから電線を外したいときは、工具の反対側の端を使って反時計回りに回す。 巻きつけが緩んだら、電線をピンから引き抜く。
配線の取り回し
電線をより合わせる
プロジェクトで使う長い電線は、より合わせて(編んで)おくとよい。 より合わせることには、いくつかの利点がある。
- プロジェクトが整理された状態を保てる
- 可動部分によって電線が引っ張られるのを防げる
- 接続そのものが補強される
以下は、非アドレサブルLED用に4本のリード線を編み合わせる例である。 編むには、両手の人差し指と親指を使い、まず1組の電線を反時計回りにねじる。 ここでは緑と赤の電線を先にねじった。
もう1組の電線も反時計回りにねじる。
ねじった2組の電線を、今度は時計回りにねじり合わせる。
仕上がると、プロジェクトの配線が扱いやすく整理された状態になる。
Note
ヒント:長い電線をねじり合わせるときは、電動ドリルを使うと楽である。
スリーブとケーブルキャリア
スリーブやケーブルキャリアも、可動部分から配線を守るのに役立つ。
複雑な配線にラベルを付ける
付箋やテープ、マーカーを使って電線にラベルを付けておくと、同じ色の電線を使っているときや、配線が複雑なとき、トラブルシューティングをするときに、どの配線がどこにつながっているかを把握しやすくなる。
まとめ
これで、電気配線とその使いどころについて、ひととおり理解できたはずである。 試作でも、改造でも、最終的な製品作りでも、電線は頼れる存在になってくれる。 電気配線に関連する、次のようなチュートリアルもぜひ確認してほしい。
- 電線は、自分の回路を作るうえでもっとも基本的な要素である。
- コネクタの基礎を確認してほしい。
- 試作を始めたいなら、ブレッドボードのチュートリアルから始めるとよい。
- 接続にもっと柔軟性が欲しいなら、ウェアラブル作品に導電糸を使ってみるのもよい。
タグ: 電気工学、プロトタイピング、スキル、はんだ付け、ツール
出典:Working with Wire(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
コネクタの基礎
コネクタは、回路のさまざまな部分をつなぎ合わせるために使われる。 たいていコネクタが使われるのは、電源の入力、周辺機器との接続、交換する可能性のある基板など、将来その部分を切り離せるようにしておきたい場面である。
このチュートリアルで扱う内容:
- コネクタの基本的な用語
- コネクタをいくつかのカテゴリに分類する
- カテゴリの中でのコネクタどうしの違い
- 極性を持つコネクタの見分け方
- 用途に応じてどのコネクタが適しているか
参考になるチュートリアル:
コネクタの用語
よく使われるコネクタの話に入る前に、コネクタを説明するときに使われる用語を確認しておこう。
ジェンダー(性別)
ジェンダーとは、コネクタが差し込む側か、差し込まれる側かを表す言葉であり、それぞれ「オス」「メス」と呼ばれる。 ただし、見た目はメスなのに「オス」と呼ばれる例外的なコネクタもあり、個々の部品を説明する中でそうした例といくつかの理由にも触れていく。
極性
極性:ほとんどのコネクタは、決まった1つの向きでしか接続できない。 この性質を極性と呼び、間違った向きで挿さらないようになっているコネクタは極性を持つ、あるいはキー付きであるという。
接点
接点:接点はコネクタの本体にあたる部分であり、互いに触れ合って電気的な接続を作る金属部品である。 問題が起きやすいのもこの部分であり、接点が汚れたり酸化したりすることや、接点どうしを押さえつけるばねの力が時間とともに弱まることがある。
ピッチ
ピッチ:多くのコネクタは、規則的な間隔で並んだ接点の配列でできている。 コネクタのピッチとは、ある接点の中心から隣の接点の中心までの距離のことである。 見た目がよく似ていてもピッチが異なるコネクタの系列がいくつもあるため、正しい相手方のコネクタを購入するのが難しくなることがあり、この点は重要である。
嵌合回数(メイティングサイクル)
嵌合回数:コネクタの寿命には限りがあり、抜き差しを繰り返すことで摩耗していく。 データシートでは、たいていこの寿命を嵌合回数として表しており、技術によって大きく差がある。 USBコネクタは数千から数万回の寿命を持つこともあるが、民生機器の内部で使われる基板間コネクタは数十回程度に限られることもある。 用途に見合った寿命のコネクタを選ぶことが重要である。
実装方法(マウント)
マウント:この言葉は紛らわしい場合がある。 「マウント」は、実際にどう取り付けられているか(パネル取り付け、宙づり、基板取り付け)、取り付け対象に対してどんな角度になっているか(ストレートかライトアングルか)、機械的にどう固定されているか(はんだ付けタブ、表面実装、スルーホール)など、いくつもの意味で使われる。 それぞれのコネクタの解説の中で、もう少し詳しく触れていく。
ストレインリリーフ
ストレインリリーフ:コネクタが基板やケーブルに取り付けられているとき、その電気的な接続部分は壊れやすいことが多い。 そこで、コネクタにかかる力を、壊れやすい電気接続部分ではなく、より頑丈な部分に逃がすための仕組みを設けるのが一般的である。 これについても、後ほど良い例をいくつか紹介する。
USBコネクタ
USBコネクタには、ホスト用と周辺機器用の2種類がある。 USB規格の中ではこの2つは区別されており、ケーブルや機器のコネクタもそれを反映した形になっている。 ただし、すべてのUSBコネクタには次のような共通点がある。
- 極性がある:USBコネクタは、原則として一方向にしか挿せない。無理に逆向きに挿すこともできてしまうが、その場合は機器を壊すことになる。
- 4本の接点:すべてのUSBコネクタには少なくとも4本の接点がある(5本のものや、USB 3.0以降ではさらに多くの接点を持つものもある)。これらは電源、グラウンド、2本のデータ線(D+とD-)用である。USBコネクタは5V、最大500mAを伝送するように設計されている。
- シールド:USBコネクタには、回路の一部ではない金属製のシェルによるシールドが施されている。電気的なノイズの多い環境で信号を保つために重要である。
- 確実な電源接続:データ線を通して機器に電源を供給してしまわないよう、電源ピンはデータ線より先に接続される必要がある。すべてのUSBコネクタはこれを踏まえて設計されている。
- モールド成形のストレインリリーフ:すべてのUSBケーブルは、コネクタ部分にプラスチックのモールドが施されており、ケーブルにかかる力が電気的な接続部分を傷めないようになっている。
USB-Aコネクタ
USB-Aメスは、標準的な「ホスト」側のコネクタである。 パソコンやハブなど、周辺機器を接続する側の機器に見られる。 メスのA端子とオスのA端子を両端に持つ延長ケーブルもある。
USB-Aオスは、標準的な「周辺機器」側のコネクタである。 たいていのUSBケーブルの片方の端はUSB-Aオスになっており、キーボードやマウスのような機器には、あらかじめこの端子が付いたケーブルが内蔵されていることも多い。 USBメモリのように、基板取り付け型のUSB-Aオスコネクタもある。
USB-Bコネクタ
USB-Bメスは周辺機器向けの規格である。 かさばるが頑丈であるため、サイズが問題にならない用途では、取り外し可能なUSB接続を提供する手段として好まれる。 たいていはスルーホールの基板取り付け型で信頼性が高いが、パネル取り付け型もある。
USB-Bオスは、ほぼケーブルの先端にしか見られない。 USB-Bケーブルはどこにでもあり安価なため、USB-B接続の普及にも一役買っている。
USB-Miniコネクタ
USB-Miniは、小型機器向けにUSBコネクタを小型化しようとした最初の標準的な試みだった。 USB-Miniメスは、MP3プレーヤーや旧型の携帯電話、小型の外付けハードディスクなど、比較的小さな周辺機器に使われることが多く、たいてい表面実装型で、頑丈さよりも小型化を優先している。 USB-Miniは、USB-Microコネクタに徐々に置き換えられつつある。
USB-Miniオスも、ケーブル専用のコネクタである。 USB-Bと同じく非常に一般的で、どこでも安価に手に入る。
USB-Microコネクタ
USB-Microは、USBコネクタの中でも比較的新しい規格である。 USB-Miniと同じく小型化が主眼だが、USB-Microには低速信号用の5本目のピンが追加されており、状況に応じてホストにも周辺機器にもなれるUSB-OTG(オンザゴー)用途に対応できる。
USB-Microメスは、デジタルカメラやMP3プレーヤーなど、比較的新しい周辺機器に多く見られる。 すべての新しい携帯電話やタブレットの標準的な充電ポートとしてUSB-Microが採用されたことで、充電器やデータケーブルもますます一般的になっており、今後はUSB-Miniに代わって小型USBコネクタの主流になっていくと見られる。
USB-Microオスも、ケーブル専用のコネクタである。 USB-Microオス端子を持つケーブルには、USB-Microポートを持つ機器を周辺機器としてUSBホストに接続するためのものと、USB-Microメスポートをアダプターとして通常のUSB-Aメスポートに変換し、USB-OTG対応機器で使うためのものの、大きく2種類がある。
その後継として、USB 3.0 Micro-B(差動ペア2組とグラウンドのための追加ピンを持つ)や、上下どちら向きにも挿せる24ピンのUSB Type-Cも登場している。 USB Type-Cは500mAを超える電流にも対応できるため、電力を多く必要とする機器にも向いている。
Note
ケーブルによっては、USB-Cのすべてのピンが使われているとは限らない。USB 3.1のフル規格ではなく、USB 2.0相当の4ピンしか配線されていないケーブルもある。使用するUSBポートによっては、機器に供給できる電流量が制限されることもある。
オーディオ用コネクタ
もう1つよく知られたコネクタ群が、RCAや「フォン」といったオーディオビジュアル機器用のコネクタである。 USBの各規格ほど厳密に同じ系統とは言えないが、ここでは便宜上まとめて扱う。
「フォン」型コネクタ
1/8インチサイズのこのコネクタは、ヘッドホンの先端に付いているものとしてすぐにわかるだろう。 このコネクタには1/4インチ(6.35mm)、1/8インチ(3.5mm)、2.5mmという3つの一般的なサイズがある。 1/4インチサイズは主にプロ向けの音響機器や音楽業界で使われ、多くのエレキギターやアンプに1/4インチのTS(チップとスリーブ)ジャックが付いている。 1/8インチのTRS(チップ、リング、スリーブ)は、ヘッドホンや、MP3プレーヤーやパソコンの音声出力用コネクタとしてよく使われる。 携帯電話の中には、マイク付きのハンズフリー用ヘッドホンをつなぐために、2.5mmのTRRS(チップ、リング、リング、スリーブ)ジャックを備えているものもある。
こうしたコネクタやケーブルは広く出回っているため、汎用の接続用途にも適している。 たとえばUSBが登場するはるか以前、テキサス・インスツルメンツのグラフ電卓は、シリアル通信用のコネクタとして2.5mmのTRSを使っていた。 TS型のコネクタは電源の伝送を想定した設計ではないことに注意してほしい。 挿し込む際にチップとスリーブが一瞬ショートすることがあり、電源を痛める可能性がある。 シールドがないため高速なデータ通信には向かないが、低速なシリアルデータであれば問題なく通せる。
RCAコネクタ
何十年ものあいだ、家庭用オーディオの定番コネクタとして親しまれてきたRCAコネクタは、1940年代にRCA社が家庭用の蓄音機向けに導入したものである。 音響や映像の分野ではHDMIのような規格に徐々に取って代わられつつあるが、コネクタとケーブルの普及ぶりから、自作システムには今なお適した選択肢である。 廃れるまでには、まだしばらく時間がかかるだろう。
メスのRCAコネクタはたいてい機器側にあるが、延長用や変換用のケーブルにメス端子が付いていることもある。 RCAコネクタは、コンポーネント映像(販売地域によってPALかNTSC)、コンポジット映像、ステレオ音声、S/PDIF音声のいずれかの信号に使われることが多い。
オスのRCAコネクタはたいていケーブル側にある。
電源用コネクタ
多くのコネクタはデータと一緒に電源も伝送するが、中には電源の接続専用として使われるコネクタもある。 用途やサイズによってさまざまだが、ここではもっとも代表的なものだけを取り上げる。
バレルコネクタ
バレルコネクタは、かさばるACアダプター経由でコンセントにつなぐ、低価格の民生機器でよく見られる。 ACアダプターはさまざまな定格電力や電圧のものが広く出回っており、そのためバレルコネクタは小規模なプロジェクトへの電源供給によく使われる。
メス側のバレルコネクタ、いわゆる「ジャック」には、基板取り付け型(表面実装またはスルーホール)、ケーブル取り付け型、パネル取り付け型など、いくつかの種類がある。 中には、電源が差し込まれているかどうかを検出できる追加の接点を持つものもあり、外部電源で動作しているときに電池をバイパスして電池寿命を延ばすといった使い方ができる。
オス側のバレルコネクタ、いわゆる「プラグ」は、たいてい電線への取り付け用としてのみ販売されているが、電線への固定方法にはいくつかの種類がある。 あらかじめケーブルに取り付けられたプラグを購入することもできる。
Note
こうした低電力の同軸コネクタのジャックとプラグのどちらを「オス」と呼ぶかについては、意見が分かれることがある。 入手先によっては、中心にピンがあることを理由にジャック側を「オス」バレルコネクタと呼ぶこともあり、その場合プラグ側は逆になる。 目的のものが見つかったかどうかは、必ず商品写真と仕様を確認してほしい。
バレルコネクタは2本の接続、いわゆる「ピン(チップ)」と「スリーブ」しか持たない。 注文する際に区別すべき特性は3つあり、内径(ジャック内部のピンの直径)、外径(プラグ外側のスリーブの直径)、そして極性(スリーブの電圧がチップより高いか低いか)である。
スリーブの直径は、多くの場合5.5mmか3.5mmである。
ピンの直径はスリーブの直径によって決まり、5.5mmのスリーブには2.5mmまたは2.1mmのピンが組み合わされる。 残念ながら、これは2.5mmピン用のプラグが2.1mmのジャックにも物理的に挿さってしまうことを意味し、その場合の接続はよくても不安定なものになる。 3.5mmスリーブのプラグは、たいてい1.3mmピンのジャックと組み合わされる。
極性は最後に確認すべき要素であり、たいていスリーブが0V、チップがスリーブに対して正の電圧になる。 多くの機器には、その機器が想定する極性を示す小さな図が記載されており、これに従うことが重要である。 極性が違う電源を使うと、機器を壊してしまうことがある。
どちらのスリーブサイズのプラグも、たいてい長さ9.5mmだが、それより長いものや短いものもある。 SparkFunのすべての製品は、負極が5.5mmスリーブ、正極が2.1mmピンという組み合わせを採用しており、これが世の中でもっとも一般的な仕様と思われるため、できる限りこの標準に従うことをおすすめする。
「Molex」コネクタ
パソコンのハードディスクや光学ドライブなど、内蔵の周辺機器の多くは、一般に「Molex」コネクタと呼ばれるコネクタから電源を得ている。 正確にはMolexシリーズ8981コネクタと言い、Molexとは1950年代にこのコネクタを最初に設計した会社の名前だが、いつしかその区別はあいまいになった。
Molexコネクタは大電流を流せるように設計されており、1ピンあたり最大11Aまで対応する。 CNCマシンや3Dプリンタのように大きな電力が必要なプロジェクトでは、デスクトップパソコン用の電源ユニットを使い、Molexコネクタを介して各回路に電力を供給する方法がよく使われる。
Molexコネクタは、オスとメスの呼び方が少し独特である。 メスコネクタはたいていケーブルの先端にあり、オスコネクタのピンを囲むプラスチックのシェルの中に差し込む形になっている。 たいていのMolexコネクタは圧入式で非常にきつく、数回程度の抜き差ししか想定されていないため、頻繁に接続を変える用途には向かない。
IECコネクタ
Molexコネクタと同じく、これも一般名がある特定の部品を指す言葉として定着した例である。 IECコネクタは、たいていデスクトップパソコンの電源ユニットに見られる電源入力口を指す。 厳密にはIEC 60320-1のC13(メス)およびC14(オス)コネクタである。
IECコネクタは、ほぼ交流電源の入力専用として使われる。 プロジェクトにこのコネクタを使う利点は、IECから壁コンセントまでのケーブルが非常に一般的であり、世界各国のコンセント形状に合わせたものが手に入りやすいことである。
JSTコネクタ
SparkFunでは「2.0mm JSTコネクタ」という呼び方をよく使う。 これもまた、特定の製品を指す一般化された名称であり、JSTは高品質なコネクタを作る日本の会社の名前で、私たちがよく使う2.0mm JSTコネクタは、PHシリーズの2極極性付きコネクタである。
SparkFunのシングルセルのリチウムポリマー電池はすべて、標準でこのタイプのJSTコネクタを備えており、多くの基板もこのコネクタ(またはそのフットプリント)を電源入力として採用している。 コンパクトで頑丈、そして逆向きに接続しにくいという利点がある。 もう1つの特徴として、いったん接続すると外すのがかなり大変(丁寧に扱えばニッパーで外すこともできる)という点があり、これは見方によって長所にも短所にもなる。 使用中に外れにくい反面、充電のために電池を外そうとすると、コネクタを傷めてしまうこともある。
3極以上のPHシリーズコネクタもあり、SparkFunでも扱っているが、もっともよく使われるのは2極の電池用コネクタである。
SMAアンテナコネクタ
SMAコネクタの紛らわしい命名規則についても簡単に触れておく。
SparkFunでは、GPS、Bluetooth、セルラー通信、Nordic、XBeeなど、外部アンテナへ50Ω系のインピーダンス接続が必要な基板の一部にSMA系コネクタを使っている。 ただし、基板によってSMAコネクタのジェンダーや極性が異なるため、それぞれの基板のRFコネクタに合ったアンテナを選ぶ必要がある。
もともとのSMA規格では、オス(中心にピン、内側にねじ)とメス(中心に穴、外側にねじ)という組み合わせが定義されていた。 しかしこの構成には問題があり、FCC(アメリカ連邦通信委員会)がPart 15への準拠を進める中で、SMA系のRFコネクタのジェンダー(中心ピン)を入れ替える方向に動いた。 これは、家庭用の無線機器(家庭用Wi-Fiなど)にアンテナをねじ込むときに、一般ユーザーがRF機器を壊してしまうのを防ぐための変更である。 すべてのアンテナがメスであれば、中心の接点を壊す心配がなくなる。
このPart 15対応で変わったのは中心ピンだけであり、これによって極性が逆転した「新しい」規格、RP-SMA(リバースポーラリティSMA)が生まれた。 「RP(リバースポーラリティ)」という名前は、そのねじ山側のジェンダーに由来しており、ピン側は通常と逆のジェンダーになる。
外部アンテナ用にu.FLコネクタを備えていないSparkFunのRF基板やアンテナでは、旧規格(SMA)と新規格(RP-SMA)が次のように使い分けられている。
- それぞれ900/1700/1800MHz帯、1.57542GHz帯は、たいてい旧規格を使う:アンテナがSMAオス、モジュールがSMAメス。
- Bluetooth、ZigBee、Wi-Fi、Nordicは、たいてい新規格を使う:アンテナがRP-SMAオス、モジュールがRP-SMAメス。
実際のところ、ジェンダーの表記自体はあまり気にしなくてよい。 RP-SMAの基板やモジュールにはRP-SMAのアンテナを、SMAにはSMAのアンテナを合わせればよいだけである。 アンテナの対応周波数を基板に合わせることだけ忘れないようにしたい。
ピンヘッダーコネクタ
ピンヘッダーコネクタには、いくつかの接続方式が含まれる。 一般には、片側がPCBにはんだ付けされたピンの列になっており、基板面に対して垂直(「ストレート」と呼ばれる)か、平行(紛らわしいことに「ライトアングル」と呼ばれる)に取り付けられる。 こうしたコネクタにはさまざまなピッチがあり、ピンの列数もいろいろである。
もっともよく見かけるピンヘッダーは、0.1インチ(2.54mm)ピッチの単列または複列のコネクタである。 これは標準的なブレッドボードと互換性のあるピッチであり、オスとメスの両方があり、Arduinoボードとシールドをつなぐのもこのタイプのコネクタである。 ブレッドボードへのジャンパー線の接続も簡単に行える。
これ以外のピッチも珍しくなく、たとえばXBee無線モジュールは同じ系統のコネクタの2.0mmピッチ版を使っている。
この部品にはよくある派生形として「マシンピン」版がある。 通常版が金属板を打ち抜いて折り曲げて作られるのに対し、マシンピン版は金属を削り出して成形されるため、より頑丈で接触も良く長寿命になる分、価格も高くなる。
こうしたピンヘッダーに接続するケーブルには、たいてい圧着コネクタ付きの個別の電線か、絶縁貫通接続(IDC)コネクタ付きのリボンケーブルのどちらかが使われる。 IDCコネクタはリボンケーブルの端に単純にクランプするだけで、ケーブル内のすべての導体に接続できる。 一般に、ケーブル側はメスのみで、相手側にオスのピンがある構成が前提になっている。
一時的な接続用のコネクタ
ねじ端子
被覆のない裸の電線を回路に接続したい場合には、ねじ端子が便利である。 複数の異なる機器を切り替えて接続したい場面にも向いている。
ねじ端子の欠点は、比較的簡単に緩んでしまい、裸の電線が回路の中でぶらつく状態になりかねないことである。 少量のホットグルーを使えば、後で外すことにそれほど苦労せずにこれを防げる。
ねじ端子は、対応する電線の太さの範囲が狭いことが多く、細すぎる電線も太すぎる電線も同じくらい問題になりうる。 SparkFunでは2.54mm(0.1インチのブレッドボード標準)、3.5mm、5mm、10mmピッチの4種類のねじ端子を扱っている。
たいていのねじ端子は高い拡張性を持ち、同じピッチの小さな単位をいくつも連結することで簡単に極数を増やせる。
スプリング端子
ねじ端子の代わりとして、スプリング端子(「プッシュイン」「ケージクランプ」「ポークホーム」コネクタとも呼ばれる)がある。 スプリング端子はねじ端子と似た働きをするが、ねじを締めて電線を固定する代わりに、ばねが金属片どうしを挟み込んで固定する。
スプリング端子は、振動の多い環境(自動車用途など)や、温度サイクルによって電線が伸縮するような環境でより優れた性能を発揮する。 また、ユーザーがねじを締める強さにばらつきが出るねじ端子と違い、対応する太さの範囲内であれば、電線の太さに応じて自動的に締め付ける力が調整される。
gamer:bit、LumiDrive、Qwiic MP3 Triggerなど、一部の基板にはI/Oピンへの簡単なアクセス手段としてスプリング端子が搭載されている。 ポークホーム式のコネクタには、ボールペンの先やプラスドライバーでタブを押し下げて配線できるものもある。
バナナコネクタ
たいていの電源系測定機器(テスターや電源装置)には、「バナナジャック」と呼ばれる非常に単純なコネクタが付いている。 これは、圧着式でばねを仕込んだ金属プラグである「バナナプラグ」と組み合わせて使い、単純な電源接続を作るためのものである。 複数を重ねて接続できるスタッカブルタイプも多く、どんな種類の電線にも簡単に接続できる。 数アンペア程度の電流を扱え、安価でもある。
ワニ口クリップ
その見た目からそう呼ばれるワニ口クリップは、端子や裸の電線へのテスト用接続に適している。 かさばりがちで、近くの露出した金属部分と簡単にショートしてしまうこともあり、グリップ力もそれほど強くない。 主にデバッグ中の低コストな接続手段として使われる。
ICクリップ(ICフック)
より繊細な計測作業のために、さまざまなICクリップが市販されている。 これらはICのピンにクリップを挟んでも隣のピンに触れないよう小さく作られており、中には表面実装部品の細かいピッチの足にも挟めるほど精巧なものもある。 ロジックアナライザーやテストリードに使われることも多く、試作やトラブルシューティングに重宝する。
その他のコネクタ
RJ型モジュラーコネクタ
レジスタードジャックコネクタは、通信機器を電話局の交換機に接続するための標準的なコネクタである。 一般に「RJ45」「RJ12」などと呼ばれるが、これらの呼び方は必ずしも正確ではなく、RJという記号は、極数、実際に配線されている導体数、配線パターンを組み合わせたものである。 たとえば標準的なイーサネットケーブルの両端は一般に「RJ45」と呼ばれるが、本来のRJ45は8極8導体のモジュラージャックであることに加え、イーサネット用に配線されていることまでを意味する。
こうしたモジュラーコネクタは、入手しやすさ、複数の導体、ある程度の柔軟性、低コスト、そこそこの電流容量を兼ね備えており、非常に便利である。 本来大きな電力を伝送する目的では作られていないが、データと数百ミリアンペア程度の電力を機器間で送るのに使うこともできる。 ただし、こうした用途向けに配線したジャックを通常のイーサネットポートに接続しないよう注意が必要であり、接続すると故障の原因になる。
D-sub型コネクタ
シェルの形状にちなんで名付けられたD-subminiatureコネクタは、コンピュータの世界で古くから使われてきた定番のコネクタである。 DA-15、DB-25、DE-15、DE-9という4種類が特によく使われる。 数字はそのコネクタが持つ接続数を、アルファベットの組み合わせはシェルのサイズを表す。 そのため、DE-15とDE-9は同じシェルサイズだが、接続数は異なる。
ハードウェアをいじる人にとって特に馴染み深いのはDB-25とDE-9である。 今でも多くのデスクトップパソコンには少なくとも1つのDE-9シリアルポートがあり、DB-25パラレルポートを備えていることも多い。 DE-9やDB-25のコネクタが付いたケーブルも広く出回っている。 先のモジュラーコネクタと同様、これらを2つの機器間の電源供給や通信に転用することもできるが、本来これらのケーブルの一般的な用途には電源伝送は含まれていないため、標準規格ではない機器を標準ポートに接続すると簡単に故障につながりかねず、転用は慎重に行う必要がある。
まとめ
これで、どのコネクタがどんな用途に適しているか、次のプロジェクトでどのコネクタが役立ちそうか、おおよその見当がついたはずである。 コネクタについてさらに学べる、次のようなチュートリアルもあわせて参照してほしい。
タグ: 部品、入力デバイス、電力、技術
出典:Connector Basics(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
ブレッドボードの使い方
ブレッドボードは、回路を組み立てる方法を学ぶうえで欠かせない道具の1つである。 このチュートリアルでは、ブレッドボードとは何か、なぜ「ブレッドボード(パン切り板)」と呼ばれるのか、そしてその使い方を説明する。 読み終えるころには、ブレッドボードの仕組みが基本的に理解でき、ブレッドボード上で簡単な回路を組み立てられるようになっているはずである。
参考になるチュートリアル:
歴史
1960年代より前に回路を組み立てようとすると、たいていはワイヤーラップという技法が使われていた。 ワイヤーラップは、パーフボード(プロトボードとも呼ばれる)に取り付けた導電性のピンに、被覆を剥いた電線を巻き付けていく方法である。 見てのとおり、この方法はすぐに配線が複雑になってしまう。 今でも使われている技法ではあるが、試作をずっと簡単にしてくれるものがある。 それがブレッドボードである。
「ブレッドボード」という名前の由来
「ブレッドボード」と聞くと、大きな木の板と、焼きたてのパンを思い浮かべるかもしれない。 実際、その想像はそれほど的外れではない。
電子部品がまだ大きくてかさばっていた時代、人々はパンを切るための板(ブレッドボード)と釘や画鋲を手に取り、その板の上に配線をつないで回路を組み立てる土台にしていた。 これが、電子部品の「回路を組み立てる板」を今でもブレッドボードと呼ぶ理由である。
その後、電子部品はずっと小型になり、回路をつなぐより良い方法も登場した。 それでも、この紛らわしい名前だけはそのまま残った。 厳密に言えば、文字通りのパン切り板を使う方法も今なおブレッドボードと呼べるが、このチュートリアルで扱うのは、現代の「はんだ付け不要」なブレッドボードについてである。
なぜブレッドボードを使うのか
電子工作で言う「ブレッドボード」とは、サンドイッチを作るためのまな板ではなく、はんだ付け不要のブレッドボードを指す。 これは一時的な回路や試作を作るのに適した部品であり、はんだ付けを一切必要としない。
プロトタイピング(試作)とは、アイデアを試すために暫定的なモデルを作り、そこから別の形を発展させたり複製したりする作業のことであり、ブレッドボードのもっとも一般的な使い道の1つである。 ある条件のもとで回路がどう動くか確信が持てないときは、まず試作を組んで実際に試してみるのが一番よい。
電子工作や回路を初めて学ぶ人にとって、ブレッドボードはたいてい最良の出発点になる。 単純な回路も複雑な回路も同じように組み立てられる点こそが、ブレッドボードの本当の魅力である。 このチュートリアルの後半で見るように、回路がブレッドボード1枚に収まらなくなったときは、複数のブレッドボードをつなぎ合わせて、どんな規模や複雑さの回路にも対応できる。
ブレッドボードのもう1つのよくある使い道は、IC(集積回路)のような新しい部品を試すことである。 ある部品がどう動作するのかを確かめながら何度も配線を組み替えたいとき、そのたびにはんだ付けをするわけにはいかない。
すでに触れたように、組み立てる回路が常に恒久的なものである必要はない。 SparkFunのテクニカルサポートチームも、顧客から報告された不具合を再現するとき、しばしばブレッドボードを使って回路を組み、テストし、分析している。 顧客の手元にある部品と同じ構成をつなぎ、回路を組んで問題を特定できたら、すべてをばらして片付け、また次のトラブルシューティングが必要になるまでしまっておける。
ブレッドボードの構造
ブレッドボードの仕組みを説明する一番の方法は、実際に分解して中を見てみることである。 小さめのブレッドボードを使うと、その仕組みがより見えやすくなる。
ターミナルストリップ
裏の粘着シートを剥がしたブレッドボードを見ると、裏面に金属の帯が横方向にいくつも並んでいるのがわかる。
金属の帯の上側には小さな金具(クリップ)があり、プラスチックの穴の下に隠れている。 それぞれの金属帯と差し込み穴は、0.1インチ(2.54mm)という規格化された間隔で並んでいる。 このクリップのおかげで、電線や部品の足を穴に差し込むだけで、その場に固定できる。
差し込んだ部品は、その行にある他のどの穴に差し込んだものとも電気的につながる。 これは、金属帯自体が導電性を持ち、帯の中のどの点からも電流が流れられるからである。
この金属帯にはクリップが5つしかないことに気づくだろう。 これはほとんどすべてのブレッドボードに共通する仕様である。 そのため、ブレッドボードの1つの区画には最大5個までしか部品をつなげない。 1行には穴が10個あるのに、なぜ5個までしかつなげないのか。 それは、ブレッドボードの中央に、それぞれの横一列を分断する溝があるからである。 この溝は、同じ行の両側を互いに電気的に切り離している。 その狙いについてはこの後すぐに説明するが、今のところは「同じ行でも溝の両側はつながっていない」ということだけ覚えておけば十分であり、そのため片側には5か所しか部品を差せない。
電源レール
ブレッドボードの中の接続のしくみがわかったところで、より一般的な、少し大きめのブレッドボードを見てみよう。 横方向の行のほかに、ブレッドボードにはたいてい電源レールと呼ばれる帯が、両端に縦方向に走っている。
電源レールは、横方向の帯と同じ金属の帯だが、通常はレール全体がひとつながりになっている点が異なる(製品によっては上下で分かれているものもある。詳しくは後述する)。 回路を組んでいると、電源をいろいろな場所で使いたくなる場面が多い。 電源レールがあれば、回路上のどこからでも簡単に電源へアクセスできる。 たいていの場合、電源レールには「+」と「-」の表示があり、正極側には赤、負極側には青または黒の線が引かれている。
左右の電源レールはそれぞれ独立していて、互いにはつながっていない。 そのため、両側で同じ電源を使いたい場合は、ジャンパー線で両側をつなぐ必要がある。 レールの「+」「-」の表示はあくまで目安であり、必ず「+」レールに電源、「-」レールにグラウンドをつながなければならないという決まりはない。 とはいえ、常にその決まりを守っておくと、後で回路を見返したときにわかりやすい。
DIPパッケージへの対応
先ほど、ブレッドボードの両側を分ける溝について触れた。 この溝には重要な役割がある。 IC(集積回路。単に「チップ」とも呼ばれる)の多くは、ブレッドボードにそのまま差し込めるように設計されている。 ブレッドボード上で場所を取りすぎないよう、これらのICはDIP(Dual In-line Package)と呼ばれる形状で作られている。
DIPパッケージのICは、両側から足が伸びていて、ちょうどあの溝をまたぐ形にぴったり収まる。 ICの各足はそれぞれ役割が異なるため、両側を電気的につなげてしまっては困る。 そこで、ブレッドボード中央の溝が役に立つ。 これにより、ICの反対側の足の働きに影響を与えることなく、両側それぞれに別の部品をつなげられる。
行と列の番号
ブレッドボードの行や列には、数字やアルファベットの表示があることに気づくだろう。 これらは回路を組む際の目印以外の役割は持たない。 回路はすぐに複雑になりやすく、部品の足を1本差し間違えただけで、回路全体が誤動作したりまったく動かなくなったりする。 接続したい行の番号がわかっていれば、目分量で位置を探すよりもずっと簡単に、狙った穴へ配線できる。
これらの表示は、SparkFun Inventor’s Kitに付属するような説明書を使うときにも役立つ。 多くの書籍やガイドには回路図が載っており、それを見ながら回路を組み立てていくことになる。 ただし、書籍の回路図とまったく同じ位置にブレッドボード上で配置する必要はない。 それどころか、見た目が似ている必要すらない。 必要な電気的接続さえすべて満たしていれば、回路はどんな配置で組んでもかまわない。
バインディングポスト
ブレッドボードの中には、バインディングポストと呼ばれる接続端子が付いた台に乗っているものもある。 このポストを使うと、さまざまな種類の外部電源をブレッドボードに接続できる。 この点については、次の節でもう少し詳しく説明する。
その他の機能
回路を組むとき、必ずしも1枚のブレッドボードに収める必要はない。 より広いスペースが必要な回路もある。 多くのブレッドボードは側面(ものによっては上下面にも)に小さな突起と溝があり、これによって複数のブレッドボードを連結し、より大きな試作用のスペースを作れる。
裏面に粘着シートが付いていて、さまざまな面に貼り付けられるブレッドボードもある。 自作のケースや筐体の内側にブレッドボードを固定したいときなどに便利である。
Note
大きめのブレッドボードでは、電源レールの上半分と下半分が互いに独立している(左右ではなく上下で分かれている)ことがある。 これは、3.3Vと5Vのように異なる2つの電圧を同時に使いたいときに便利である。 ただし、電源レールが独立しているかどうかを知らずに回路を組むと、思わぬトラブルの原因になることがある。 テスターを使って、電源レールの導通の有無をあらかじめ確認しておくとよい。
ブレッドボードへの電源供給
ブレッドボードに電源を供給する方法にはいくつもの選択肢がある。
他の電源から取る
Arduinoのような開発ボードを使っているなら、Arduinoのメスヘッダーからそのまま電源を取り出せる。 Arduinoには電源ピンとグラウンドピンが複数あり、これをブレッドボードの電源レールや他の行に接続できる。
Arduino自体は、通常パソコンのUSBポートや、バッテリーパック、ACアダプター(ウォールワート)のような外部電源から電力を得ている。
バインディングポスト
前の節で触れたとおり、ブレッドボードによってはバインディングポストが付いていて、外部電源を接続できるようになっている。
バインディングポストを使う最初の一歩は、ジャンパー線を使ってポストをブレッドボードに接続することである。 一見ポストとブレッドボードが最初からつながっているように見えるかもしれないが、実際にはつながっていない。 もしつながっていたら、電源を供給できる場所が限定されてしまう。 ブレッドボードは自由自在に組み替えられることを前提とした部品であり、バインディングポストもその例外ではない。
そこで、ポストとブレッドボードをつなぐには配線が必要になる。 やり方は、ポストのつまみを回して軸に空いた穴を露出させ、被覆を剥いたジャンパー線の先をその穴に通し、ワイヤーがしっかり固定されるまでつまみを締め直せばよい。
たいていの場合、ポストからブレッドボードに接続する必要があるのは電源用とグラウンド用の2本だけである。 別の電源も使いたい場合は、3本目のポストを利用できる。
これでポストとブレッドボードはつながったが、まだ電気は流れていない。 ポスト経由でブレッドボードに電源を供給する方法はいくつもある。
ベンチトップ電源
多くの電子工作の実験室には、幅広い電圧や電流を回路に供給できるベンチトップ電源がある。 バナナコネクタを使えば、この電源からバインディングポストへ給電できる。
もちろん、ワニ口クリップやICフック、あるいはバナナ端子付きの他のケーブルを使って、ブレッドボードをさまざまな電源につなぐこともできる。
バインディングポストのもう1つの使い方として、バレルジャックを電線にはんだ付けし、その電線をバインディングポストに接続する方法もある。 これはやや高度な手法であり、ある程度のはんだ付けの技術が求められる。
ブレッドボード用電源モジュール
ブレッドボードに電源を供給するもう1つの方法として、さまざまなブレッドボード用電源モジュールを使う方法もある。 SparkFunでも、ブレッドボードに直接差し込んで使える電源キットやモジュールを複数扱っている。 ウォールワートを直接差し込めるものもあれば、パソコンのUSBポートから電源を取れるものもある。 そのほとんどが電圧を切り替えられるようになっており、回路を組む際によく使う電圧に幅広く対応できる。
最初の回路をブレッドボードで組む
ブレッドボードの内部構造と電源の供給方法がわかったところで、いよいよ実際に使ってみよう。 まずは簡単な回路から始める。
必要なもの
このチュートリアルの回路で使う部品は、LED、抵抗、ボタン(タクトスイッチ)、ジャンパー線、そしてブレッドボードである。 他にも手持ちの部品があれば、それを使って回路を少し変えてみてもよい。 1つの回路にも、組み方は1通りとは限らない。 中には何十通りもの組み方ができる回路もある。
回路を組む
Note
警告:ブレッドボード用電源スティックを使うときは、GNDピンを「-」側のレールに、VCCピンを「+」側のレールに差し込むように注意すること。 こうすることで、回路に逆極性の電源を加えてしまう事故を防ぎやすくなる。
ここに、ブレッドボード上に組んだ小さな回路がある。 写真に写っている赤い基板は、ヘッダーピンがはんだ付けされたブレッドボード用電源スティックであり、9Vのウォールワートからの電圧を5Vまたは3.3Vに変換して電源レールに供給している。
回路の構成は次のとおりである。
- VCC側の電源レールと、LEDの正極(アノード)側の足が配線でつながっている。
- LEDの負極(カソード)側の足は、330Ωの抵抗につながっている。
- その抵抗は、ボタンへとつながっている。
- ボタンを押すと回路がグラウンドにつながり、回路が閉じてLEDが点灯する。
回路図
回路図の読み方については別のチュートリアルで扱っているが、回路を組むうえで非常に重要な知識なので、ここでも簡単に触れておく。
回路図は、世界中の誰もが理解し、回路を組み立てられるようにするための共通の記号体系である。 電子部品にはそれぞれ固有の回路図記号があり、これらの記号をさまざまなソフトウェアを使って組み合わせることで回路図ができあがる。 もちろん、手描きで回路図を書いてもかまわない。 電子工作や回路設計の世界にさらに深く踏み込みたいなら、回路図を読めるようになることは非常に重要な一歩である。
上で紹介した回路の回路図を見てみよう。 上部の矢印は電源を表す(スイッチが5V側に切り替わっているとする)。 そこからLED(矢印の出ている三角形と線の記号)へとつながり、LEDは抵抗(ギザギザの線)につながる。 その先はボタン(掛け金のような形の記号)につながり、最後にボタンはグラウンド(下部の水平線)につながっている。
一見すると回路図は奇妙な描き方に見えるかもしれないが、何十年も前から使われてきた基本的な表記法である。 回路図があるおかげで、国籍や言語が異なる人どうしでも、誰かが設計した回路を組み立てたり、共同で開発したりできる。 すでに述べたとおり、1つの回路の組み方には何通りもの方法があるが、この回路図が示すように、必ず満たさなければならない接続関係も存在する。 この回路図から外れた配線をすれば、まったく別の回路になってしまう。
習うより慣れよ
最後に伝えておきたいのは、実際にブレッドボードを使わなくても回路を組めるツールやソフトウェアが数多くあるということである。 SparkFunでよく使われているソフトウェアの1つがFritzingである。 Fritzingは無料のソフトウェアで、仮想的なブレッドボード上で自分の回路を組み立てられる。 組み立てた回路の回路図も自動的に生成してくれる。 先ほどと同じ回路をFritzingで組んだものを見てみよう。
Fritzing以外にも同様のソフトウェアは数多くあり、無料のものも有料のものもある。 中には、組んだ回路をシミュレーションで動作確認できるものもある。 自分に合ったツールを探してみるとよい。
まとめ
ここまでで、ブレッドボードとは何か、どう動作するのかが理解できたはずである。 ここからが本当の面白さの始まりであり、ブレッドボードで回路を組むという世界は、まだほんの入り口に触れたにすぎない。 部品の使い方や、それらをブレッドボード上の回路に組み込む方法について、さらに学べるチュートリアルを以下に挙げる。
回路を組む技術がある程度身についたら、次のレベルとして、次のようなチュートリアルにも挑戦してみてほしい。
タグ: 電気工学、プロトタイピング、スキル
出典:How to Use a Breadboard(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
テスターの使い方
テスター(マルチメーター)は、いったいどう使えばいいのか。 このチュートリアルでは、デジタルマルチメーター(DMM)の使い方を説明する。 これは回路の診断や、他の人が設計した電子回路の理解、さらには電池のチェックにまで使える必須の道具であり、「マルチ(複数の)」「メーター(測定器)」という名前もそこから来ている。
もっとも基本的な測定対象は電圧と電流である。 テスターは、基本的な動作確認やトラブルシューティングにも大いに役立つ。 回路が動かない、スイッチはちゃんと機能しているのか。 そんなときはテスターを当ててみればよい。 テスターは、システムのトラブルシューティングにおける最初の頼みの綱である。 このチュートリアルでは、電圧、電流、抵抗、そして導通の測定方法を扱う。
参考になるチュートリアル:
Note
このチュートリアルではSparkFun VC830Lというテスターを例に説明するが、ここで紹介する方法はほとんどのテスターに当てはまる。
テスターの各部
テスターは3つの部分からできている。
- 表示部
- レンジ切り替えつまみ
- 端子
表示部は、たいてい4桁の数字と、マイナス記号を表示できる。 薄暗い場所でも見やすいよう、バックライト付きの表示部を持つテスターもある。
レンジ切り替えつまみを使うと、電流(ミリアンペア、mA)、電圧(V)、抵抗(Ω)など、測定したい対象を切り替えられる。
2本のプローブを、本体前面にある端子のうち2つに差し込んで使う。 COMは「コモン(共通)」を意味し、ほぼ常に回路のグラウンドや「-」側につなぐ。 COM用のプローブは慣習的に黒色だが、赤いプローブとのあいだに色以外の違いはない。 10Aは、大きな電流(200mAを超えるもの)を測るときに使う特別な端子である。 mAVΩは、赤いプローブを差し込むのが慣習になっている端子であり、電流(200mAまで)、電圧(V)、抵抗(Ω)を測定できる。 プローブの先端にはバナナタイプのコネクタが付いていて、これをテスター本体に差し込む。 バナナプラグのプローブであれば、どんなものでもこのテスターで使え、さまざまな種類のプローブを使い分けられる。
プローブの種類
テスター用のプローブには、さまざまな種類が用意されている。 よく使うものをいくつか紹介する。
- バナナ - ワニ口クリップ:太い電線やブレッドボードのピンに接続するのに適している。回路を操作しながらプローブを手で押さえておかなくてよいので、長時間のテストに向いている。
- バナナ - ICフック:小型のICや、ICの足を挟むのに適している。
- バナナ - ピンセット:SMD部品をテストしたいときに便利である。
- バナナ - テストプローブ:もしプローブを1本壊してしまっても、安価に交換できる。
電圧を測定する
まずは単3形電池の電圧を測ってみよう。 黒いプローブをCOMに、赤いプローブをmAVΩに差し込む。 テスターを直流(DC)レンジの「2V」に設定する。 携帯型の電子機器のほとんどは、交流ではなく直流で動作している。 黒いプローブを電池のグラウンドまたは「-」側に、赤いプローブを電源または「+」側に当てる。 単3形電池の正極と負極の端子に、軽く力を入れてプローブを押し当てる。 新品の電池であれば、表示部にはおよそ1.5V前後の値が表示されるはずである(この電池は新品なので、電圧は1.5Vより少し高くなっている)。
電池やArduinoにつないだセンサーのような直流電圧を測るときは、まっすぐな線が引かれた「V」の位置につまみを合わせる。 壁のコンセントから来るような交流電圧は危険なので、交流電圧の設定(波線が添えられた「V」)を使う場面はめったにない。 交流を扱う必要があるなら、デジタルマルチメーターよりも非接触式のテスターを使うことをおすすめする。
赤と黒のプローブを入れ替えたらどうなるか。 表示される値の符号が単純に反転するだけであり、何も悪いことは起きない。 テスターは、コモン側のプローブを基準にして電圧を測定する。 電池の「+」側は、コモン(マイナス側のピン)と比べてどれだけ電圧が高いか。 1.5Vである。 プローブを入れ替えると、今度は「+」側がコモン、つまり基準の0点になる。 その新しい基準点と比べて、電池の「-」側の電圧はどうなるか。 -1.5Vになる。
続いて、実際の場面で電圧を測る流れを、簡単な回路で確かめてみよう。 回路は単純で、1kΩの抵抗と青色の高輝度LEDを、SparkFun Breadboard Power Supply Stickで駆動しているだけのものである。 まず、取り組んでいる回路に正しく電源が入っているかを確認する。 回路が5Vであるはずなのに4.5V未満だったり5.5Vを超えていたりしたら、それだけで何かがおかしいとすぐにわかり、電源の接続や配線を確認する必要が出てくる。
つまみをDCレンジの「20V」(直流電圧レンジは、まっすぐな線の「V」で示される)に合わせる。 テスターの多くはオートレンジ式ではないため、測定対象に合ったレンジを自分で選ぶ必要がある。 たとえば2Vレンジは2ボルトまで、20Vレンジは20ボルトまで測定できる。 そのため12Vの電池を測るなら20Vレンジを使う。 5V系の回路でも20Vレンジを使う。 レンジの選び方を間違えると、表示が切り替わって「1」と表示されることが多い。
力を少し込めて(焼いた肉にフォークを刺すようなイメージで)、露出した金属部分にプローブを押し当てる。 一方のプローブはGNDの接続部に、もう一方はVCCまたは5Vの接続部に当てる。
回路の別々の部分を測定することもできる。 これは節点解析と呼ばれる手法であり、回路解析の基本的な考え方の1つである。 回路の各部分の電圧を測ることで、それぞれの部品にどれだけの電圧が必要かがわかる。 まずは回路全体を測ってみよう。 抵抗に電圧が入ってくる場所から、LED側のグラウンドまでを測ると、回路全体の電圧、つまりおよそ5V前後が表示されるはずである。
次に、LEDがどれだけの電圧を使っているかも見てみよう。 これは、LEDの電圧降下と呼ばれるものである。 今の時点でピンとこなくても心配はいらない。 電子工作を学び進めるうちに、自然と理解できるようになる。 ここで押さえておくべき重要な点は、回路のさまざまな部分を測定することで、回路全体を分析できるということである。
過負荷(オーバーロード)
測定しようとしている電圧に対して低すぎるレンジを選んだらどうなるか。 悪いことは何も起きない。 テスターは単に「1」と表示する。 これは、テスターが過負荷、つまりレンジ外であることを知らせているサインである。 測定しようとしている値が、そのレンジには大きすぎるということなので、テスターのつまみを1段階上のレンジに変えてみればよい。
レンジ切り替えつまみ
つまみの表示はなぜ10Vではなく20Vになっているのか。 20V未満の電圧を測りたいときは、20Vレンジに合わせる。 これにより、2.00から19.99までの範囲を読み取れる。
多くのテスターでは、表示の最初の桁は「1」しか表示できない。 そのため測定範囲は99.99ではなく19.99までに制限される。 これが、99Vではなく20Vが上限になっている理由である。
Note
警告:基本的には、直流の回路(テスターのつまみでまっすぐな線が引かれている設定)だけを扱うようにすること。 多くのテスターは交流(AC)も測定できるが、交流回路は危険を伴う。 壁のコンセントの交流、いわゆる「主電源電圧」は、うっかり触れるとかなりの衝撃を受けるようなものである。 交流を扱うときは、細心の注意を払うこと。 コンセントに電気が来ているかどうかを確かめたいだけなら、交流用の検電器を使うほうがよい。 交流の電圧を測る必要が出てくるのは、コンセントの様子がおかしいとき(本当に110Vや100Vが来ているのか)や、電熱器のようなヒーターを制御しようとしているときくらいである。 交流回路を測定するときは、慎重に、すべてを二重に確認しながら進めること。
抵抗を測定する
一般的な抵抗器にはカラーコードが記されている。 その読み方がわからなくても心配はいらない。 簡単に使えるオンラインの計算ツールがたくさんある。 それでも、インターネットにつなげない場面では、テスターで実際の抵抗値を測るのが便利である。
適当な抵抗器を1本選び、テスターを20kΩレンジに合わせる。 キーボードのキーを押すのと同じくらいの力加減で、抵抗器の足にプローブを押し当てる。
表示部には、0.00、1、あるいは実際の抵抗値のいずれかが表示される。
- 今回の例では0.97と表示されており、これはこの抵抗器の値が970Ω、つまりおよそ1kΩであることを意味する(20kΩ、つまり20,000オームのレンジなので、小数点を右に3桁分ずらして970オームと読む)。
- テスターが1またはOLと表示された場合は過負荷であり、200kΩや2MΩ(メガオーム)といった、より大きなレンジを試す必要がある。これが起きても問題はなく、単にレンジのつまみを調整すればよいだけである。
- テスターが0.00やそれに近い値を示した場合は、2kΩや200Ωといった、より小さなレンジに切り替える必要がある。
多くの抵抗器には5%の誤差があることを覚えておいてほしい。 つまり、カラーコードが10,000オーム(10kΩ)を示していても、製造工程のばらつきによって、実際の10kΩ抵抗器は9.5kΩから10.5kΩのあいだのどこかになりうる。 心配はいらない、プルアップ用や一般的な用途の抵抗としては、それで十分に機能する。
つまみを1段階下げて2kΩレンジにしてみよう。 どうなるだろうか。 大きな変化はない。 この抵抗器(1kΩ)は2kΩより小さいので、引き続き表示部に値が出る。 ただし、小数点以下の桁が1つ増え、少しだけ細かい値まで読み取れるようになっているはずである。 では、さらに1段階下げるとどうなるか。 1kΩは200Ωより大きいので、今度はレンジの上限を超えてしまい、過負荷であることを示す表示になり、より大きなレンジに戻す必要が出てくる。
経験則として、1オーム未満の抵抗器を見かけることはめったにない。 抵抗の測定は完璧ではないということも覚えておいてほしい。 温度は測定結果に大きく影響する。 また、部品を回路に実装したまま抵抗を測定するのは、なかなか厄介なことも多い。 基板上の周囲の部品が、測定結果に大きな影響を与えることがある。
電流を測定する
組み込み電子工作の世界で、電流の測定はもっとも扱いにくく、それでいてもっとも多くの情報を与えてくれる測定の1つである。 扱いにくい理由は、電流は直列に測定しなければならないからである。 電圧はVCCとGNDに(並列に)プローブを当てるだけで測れるのに対し、電流を測るには実際に電流の流れを物理的に断ち切り、その間にテスターを割り込ませる必要がある。 これを確かめるために、電圧測定の節で使ったのと同じ回路を使う。
まず必要になるのが、もう1本の電線である。 すでに述べたとおり、電流を測るには物理的に回路を断ち切る必要がある。 言い換えると、抵抗につながっているVCCの配線を一度引き抜き、その接続先だった場所に新しい配線を追加し、電源のプラス端子から抵抗までのあいだにテスターを挟み込む。 これにより、回路への電力が実質的に「切断」される。 そのうえでテスターを直列に挿入し、電流がブレッドボードへ「流れ込む」道筋の途中で測定できるようにする。
今回の写真では、簡単のためワニ口クリップを使っている。 電流を測るときは、数秒から数分にわたってシステムの様子を観察したくなることが多い。 その間ずっとプローブを手で押さえておくのは大変なので、両手を空けられるワニ口クリップ付きのプローブが役に立つ。 なお、ほとんどのテスターは同じ大きさの端子(「バナナプラグ」と呼ばれる)を使っているので、いざというときは友人のプローブを借りることもできる。
テスターを接続したら、つまみを適切なレンジに合わせて電流を測定する。 電流の測定も、電圧や抵抗と同じように、正しいレンジを選ぶ必要がある。 テスターを200mAレンジに合わせ、そこから調整していく。 ブレッドボードで作る多くのプロジェクトの消費電流は、たいてい200mA未満である。 赤いプローブが、ヒューズ付きの200mA端子に差し込まれていることを確認する。 今回使っているテスターでは、200mA用の端子は電圧や抵抗の測定と同じ端子(mAVΩという表示のある端子)を兼用している。 つまり、電流、電圧、抵抗のどれを測るときも、赤いプローブは同じ端子に差したままでよい。 ただし、回路が200mAに近い、あるいはそれを超える電流を使いそうな場合は、念のためプローブを10A側に差し替えること。 電流の許容量を超えると、単に過負荷の表示が出るだけでなく、ヒューズが飛んでしまうことがある(この点については後述する)。
このとき、テスター自体が1本の電線のように振る舞っていることに注意してほしい。 これによって回路が完成し、電源が入る。 これが重要なのは、時間の経過とともにLEDやマイコン、センサーなど、測定対象の消費電力が変化することがあるからである(たとえばLEDが点灯した瞬間に消費電流が20mA増え、消灯した瞬間にまた減る、といった具合である)。 テスターの表示部には、その瞬間の電流値が表示されるはずである。 どのテスターも、ある程度の時間にわたる測定値から平均を計算して表示しているため、値は多少ふらつくものだと考えておくとよい。 一般に、安価なテスターほど平均化の効き方が強く、反応も遅いため、表示される値は多少割り引いて見てほしい。 おおまかな範囲、たとえば通常の5V環境で7〜8mA程度、という程度の感覚で捉えておけばよい(7.48mAというような細かい値にこだわらなくてよい)。
他の測定と同じく、電流を測るときもプローブの色は関係ない。 プローブを入れ替えるとどうなるか。 何も悪いことは起きず、単に電流の表示がマイナスになるだけである。 電流自体はシステムの中を変わらず流れ続けており、見ている向きが変わって、表示がマイナスになっただけである。
Note
覚えておいてほしいのは、テスターを使い終わったら、必ず電圧測定モードに戻しておくということである(プローブを電圧用の端子に戻し、必要であれば直流電圧レンジに切り替える)。 2点間の電圧をさっと測ろうとしてテスターを手に取ったとき、電流測定モードのままになっていることはよくある。 その状態では表示部に電圧が出ず、代わりに「0.000」と表示され、VCCとGNDのあいだに電流が流れていないように見えてしまう。 しかしその一瞬のうちに、テスターを介してVCCとGNDを直結してしまっており、200mAのヒューズが飛んでしまう。これはよろしくない。 だから、その日の作業を終えてテスターを置くときは、次に使う人(未来の自分を含む)に優しい状態にしておくことを忘れないようにする。
電流の測定は、最初の数回はうまくいかないことも多い。 ヒューズを飛ばしてしまっても心配はいらない、私たちも何十回とやらかしてきた。 ヒューズの交換方法は、後の「ヒューズを交換する」の節で説明する。
導通を確認する
導通テストとは、2点間の抵抗を調べる操作のことである。 抵抗が非常に低ければ(数Ω未満)、その2点は電気的につながっていると判断され、音が鳴る。 数Ωを超える抵抗があれば回路は開いていると判断され、音は鳴らない。 このテストは、2点間の接続が正しくできているかを確認するのに役立つほか、本来つながっているべきではない2点がつながっていないかを確認するのにも役立つ。
導通テストは、組み込みハードウェアに携わる人にとって、おそらく単一の機能としてはもっとも重要なものである。 この機能を使えば、材料の導電性を調べたり、配線がどこでつながっていて、どこでつながっていないかをたどったりできる。
テスターを「導通」モードに設定する。 DMMの機種によって表示は異なるが、スピーカーから音が伝わっていくような波形が添えられたダイオードの記号を探すとよい。
2本のプローブの先端を触れ合わせてみる。 テスターから音が鳴るはずである(注:すべてのテスターに導通モードがあるわけではないが、たいていのものには備わっている)。 これは、プローブの間にごくわずかな電流が、抵抗なし(あるいは非常に小さな抵抗)で流れられることを示している。
Note
警告:導通を確認するときは、基本的にシステムの電源を切っておくこと。
電源が入っていないブレッドボードで、2本のプローブを別々のグラウンドピンに当ててみる。 つながっていることを示す音が聞こえるはずである。 続いて、マイコンのVCCピンから電源のVCCまでプローブを当ててみる。 VCCピンからマイコンまで電流が自由に流れられることを示す音が鳴るはずである。 音が鳴らなければ、銅箔パターンをたどっていき、配線やブレッドボード、PCBのどこかで断線していないかを確認していける。
導通テストは、2つのSMDピンが接触しているかどうかを確かめるのにも役立つ。 目で見てもわからないときは、たいていテスターが頼りになる2つ目の確認手段になる。
システムが動かないとき、導通テストはトラブルシューティングのもう1つの手がかりになる。 次のような手順を踏むとよい。
- システムの電源が入っているなら、電圧レンジでVCCとGNDを慎重に確認し、電圧が正しいレベルになっているかを確かめる。5V系のはずが4.2Vしか出ていない場合は、レギュレータを念入りに確認する。レギュレータが異常に熱くなっていたら、システムが電流を消費しすぎているサインかもしれない。
- システムの電源を切り、VCCとGNDのあいだの導通を確認する。導通があれば(音が鳴れば)、どこかにショートがある。
- システムの電源を切ったまま、導通テストでVCCとGNDがマイコンや他の部品のピンに正しく配線されているかを確認する。システム全体には電源が入っていても、個々のICの配線が間違っていることもある。
- マイコンが動くところまで確認できたら、テスターはいったん脇に置き、シリアル通信でのデバッグや、ロジックアナライザーを使ったデジタル信号の確認に進む。
導通テストと大きなコンデンサ: 通常のトラブルシューティングでは、グラウンドとVCCレールのあいだの導通を確認することが多い。 これは、試作した回路の電源を入れる前に、電源系統にショートがないかを確かめるよい方法である。 ただし、プローブを当てた瞬間に短く「ピッ」と鳴っても驚かないでほしい。 これは、電源系統にはたいてい相応の静電容量が存在しているためである。 テスターは2点間がつながっているかどうかを、非常に低い抵抗を基準に判定している。 コンデンサは、エネルギーが満ちるまでの一瞬だけショートのようにふるまい、満ちた後は開放状態のようにふるまう。 そのため、短く「ピッ」と鳴った後は何も鳴らなくなる。 それでよいのであって、単にコンデンサが充電されているだけである。
ヒューズを交換する
新しくテスターを使い始めた人がやりがちなもっともよくある失敗が、ブレッドボード上でVCCからGNDへ直接プローブを当てて電流を測ろうとすることである(これはよくない)。 これをすると、テスターを介して電源とグラウンドが即座にショートし、ブレッドボードの電源が瞬断してしまう。 テスターに大電流が流れ込むと、内部のヒューズが発熱し、200mAを超える電流が流れることでやがて焼き切れる。 これはほんの一瞬の出来事で、音も物理的な兆候もほとんどないまま起きる。
さて、こうなってしまったらどうすればよいか。 まず、電流の測定は直列に行うものであり、ブレッドボードやマイコンへのVCCラインを一度断ち切って測定するのだということを思い出してほしい。 ヒューズが切れた状態で電流を測ろうとすると、テスターは「0.00」と表示し、テスターをつないだ本来動くはずのシステムも起動しなくなることに気づくはずである。 これは、内部のヒューズが切れて、断線や開放状態と同じようにふるまっているためである。 心配はいらない、これはよくあることであり、修理には1ドルほどしかかからない。
ヒューズを交換するには、使いやすい小型のドライバーを用意し、ねじを外していく。 SparkFunのDMMは比較的簡単に分解できる。 まず電池カバーと電池を取り外す。 次に、電池カバーの下に隠れているねじ2本を外す。 テスターの表面パネルを少し持ち上げる。 パネルの下端にあるツメに注意しながら、少し力を入れてパネルを横にスライドさせ、ツメを外す。 ツメが外れれば、パネルは簡単に取り外せる。 これでテスターの内部が見えるようになる。 ヒューズをそっと持ち上げると、簡単に外れる。
必ず正しい種類のヒューズに交換すること。 つまり、200mAのヒューズは200mAのヒューズと交換する。
Note
警告:200mA用のヒューズの代わりに10A用のヒューズを取り付けてはならない。 ヒューズの配置と、プローブ用端子の配置が必ずしも一致しているとは限らない。 ヒューズ両端の金属キャップに記された表示を確認して、どちらがどちらかを必ず確かめること。
テスター内部の部品や基板のパターンは、それぞれ決まった電流量に耐えるように設計されている。 誤って200mA用の端子に5Aを流してしまうと、テスターを傷め、最悪の場合壊してしまう。
モーターやヒーターのような大電流を扱う部品を測定したい場面もある。 テスター前面には赤いプローブを差す場所が2つあるのに気づいただろうか。 左側の10Aと、右側のmAVΩである。 mAVΩ端子で200mAを超える電流を測ろうとすると、ヒューズを飛ばすリスクがある。 一方、10A端子を使えば、ヒューズを飛ばすリスクはずっと小さくなる。 その代わりに感度が犠牲になる。 先ほど触れたとおり、10A端子とそのレンジ設定では、0.01A(10mA)までしか読み取れない。 たいていのシステムは10mAを超える電流を使うので、10Aのレンジと端子で十分間に合うことが多い。 非常に小さな電力(マイクロアンペアやナノアンペアの単位)を測りたいなら、200mA端子で2mA、200µA、20µAといったレンジを使うとよい。
覚えておいてほしい: システムが100mAを超える電流を使う可能性があるなら、まず赤いプローブを10A端子に差し、10Aレンジから測定を始めるとよい。
50ドル以下のデジタルテスターで得られる測定値は、あくまでトラブルシューティング用の目安であり、厳密な科学実験の結果ではない。 ICが時間とともにどう電流や電圧を使うかを本格的に調べたいなら、AgilentのようなメーカーのハイエンドなベンチトップDMMを使うとよい。 こうした機器は精度が高く、いろいろと凝った機能も備えている。
良いテスターの条件
好みは人それぞれだが、一般的には導通テスト機能があるテスターが好まれる。 それ以外の機能は、いわばおまけのようなものである。
オートレンジ機能を持つ、凝ったテスターもある。 これは、測定対象の電圧、抵抗、電流に応じて、内部のレンジを自動的に切り替えてくれる機能である。 使い方さえわかっていれば、オートレンジは非常に便利である。 一般に、オートレンジ機能を持つテスターは品質も高く、機能も豊富な傾向がある。 もしオートレンジ付きのテスターを誰かからもらったら、ぜひ活用してほしい。 ただし、手動モードへの切り替え方も覚えておくこと。 回路の電圧や電流はかなり素早く変動することがあり、システムによっては変動が激しすぎて、オートレンジがうまく追従できないこともある。
バックライト付きの液晶は見栄えがよいが、暗闇の中で回路を測定したことは最近あっただろうか。 たいていは、真夜中に測定が必要になるような不気味な状況は避けたいものだが、暗い場所でも使えるテスターが欲しい、必要だという人もいるだろう。
レンジ切り替えつまみの心地よいクリック感も、個人的には大きなポイントだと思っている。 つまみの感触が柔らかすぎるテスターは、たいてい安っぽい作りであることが多い。
しっかりしたプローブも長所の1つである。 時間が経つと、リード線は曲げる部分から傷んでいきやすい。 プローブから配線がすっぽ抜けてしまうこともあり、しかもそれはたいてい、まさにそのプローブが必要な瞬間に起きる。 プローブが壊れても、比較的安価に交換できる。
オートパワーオフは、安価なテスターにはあまり見られない、うれしい機能である。 夜中の2時にテスターの電源を切り忘れるのはよくあることなので、初心者にも上級者にも役立つ機能である。 SparkFunのデジタルテスターにはこの機能はないが、幸い消費電力が非常に少ないテスターであり、丸2日間つけっぱなしにしても9V電池がようやく弱ってくる程度で済んだこともある。 とはいえ、テスターの電源を切り忘れないようにしたい。
これで、身の回りのさまざまなものをデジタルテスターで測定する準備が整った。 気になる疑問があれば、遠慮なくテスターで確かめてみてほしい。 このLEDには本当に20mA流れているのか。 レモンにはどれくらいの電圧があるのか。 コップ一杯の水は電気を通すのか。 配線の代わりにアルミホイルを使えるのか。 デジタルテスターは、こうした電子工作にまつわる数々の疑問に答えてくれる。
まとめ
デジタルテスターの基本的な使い方が身についたところで、その技術を活かせる次のチュートリアルにも挑戦してみてほしい。
タグ: 電気工学、スキル、プロジェクトを始める、ツール
出典:How to Use a Multimeter(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
電力
なぜ電力を気にする必要があるのか。 電力とはエネルギーが変換される速さの尺度であり、エネルギーにはお金がかかる。 電池はただでは手に入らないし、コンセントから得られる電気もそうである。 つまり電力は、財布からどれだけの速さでお金が出ていっているかを測っているとも言える。
エネルギーは、熱、放射線、音、原子力など、さまざまな形をとり、その一部は人体に害を及ぼしうる。 電力が大きいほど、扱うエネルギーも大きくなる。 そのため、電子工作をするときは、自分がどれくらいの電力を扱っているのかを把握しておくことが重要である。 幸い、Arduinoで遊んだり、LEDを光らせたり、小さなモーターを回したりする程度であれば、電力を見誤ったとしても、抵抗を焦がすかICを溶かす程度で済むことが多い。
このチュートリアルで扱う内容:
- 電力の定義
- 電気エネルギーが変換される例
- 電力のSI単位であるワット
- 電圧、電流、抵抗を使った電力の計算
- 最大定格電力
参考になるチュートリアル:
電力とは何か
このチュートリアルでは、電気の力、つまり電力に絞って説明する。
一般的な物理の言葉で言えば、電力とはエネルギーが変換(あるいは移動)する速さとして定義される。
では、エネルギーとは何であり、どのように移動するのか。 簡潔に言い表すのは難しいが、エネルギーとは基本的に、何かが別の何かを動かす能力のことである。 エネルギーには、力学的、電気的、化学的、電磁的、熱的など、さまざまな形がある。
エネルギーは決して生み出されたり消えたりすることはなく、ただ別の形に変換されるだけである。 電子工作でしていることの多くは、さまざまな形のエネルギーを電気エネルギーとの間で変換することである。 LEDを光らせることは電気エネルギーを電磁エネルギーに変え、モーターを回すことは電気エネルギーを力学的エネルギーに変える。 ブザーを鳴らせば音のエネルギーが生まれ、9Vのアルカリ電池で回路を動かせば化学エネルギーが電気エネルギーに変わる。 これらはすべてエネルギーの変換の一種である。
| 変換されるエネルギーの種類 | 変換する部品 |
|---|---|
| 力学的エネルギー | モーター |
| 電磁エネルギー | LED |
| 熱エネルギー | 抵抗器 |
| 化学エネルギー | 電池 |
| 風のエネルギー | 風車 |
電気エネルギーは、もとをたどれば電気的な位置エネルギー、つまり親しみを込めて電圧と呼んでいるものから始まる。 その位置エネルギーの中を電子が流れると、それが電気エネルギーに変わる。 実用的な回路のほとんどでは、その電気エネルギーがさらに別の形のエネルギーへと変換される。 電力は、どれだけの量の電気エネルギーがどれだけ速く移動しているかを組み合わせて測られる。
電力の生産者と消費者
回路の中のそれぞれの部品は、電気エネルギーを消費するか生産するかのどちらかである。 消費する部品は、電気エネルギーを別の形に変換する。 たとえばLEDが光るとき、電気エネルギーは電磁エネルギーに変換されており、この場合LEDは電力を消費している。 逆に、他の形のエネルギーから電気エネルギーへの変換が起きるとき、電力は生産されている。 回路に電力を供給する電池は、電力の生産者の一例である。
ワット数
エネルギーはジュール(J)という単位で測られる。 電力はある決まった時間あたりのエネルギー量を表すので、1秒あたりのジュール数として測れる。 1秒あたりのジュール数を表すSI単位がワット(記号 W)である。
\[ 1,\text{W} = 1,\text{J/s} \]
「ワット」という単位には、標準的なSI接頭辞が付くことがよくある。 マイクロワット(µW)、ミリワット(mW)、キロワット(kW)、メガワット(MW)、ギガワット(GW)などが、場面に応じてよく使われる。
| 接頭辞名 | 接頭辞記号 | 倍率 |
|---|---|---|
| ナノワット | nW | 10⁻⁹ |
| マイクロワット | µW | 10⁻⁶ |
| ミリワット | mW | 10⁻³ |
| ワット | W | 10⁰ |
| キロワット | kW | 10³ |
| メガワット | MW | 10⁶ |
| ギガワット | GW | 10⁹ |
Arduinoのようなマイコンは、たいていµWからmWの範囲で動作する。 ノートパソコンやデスクトップパソコンは、標準的なワットの範囲で動作する。 一般家庭の電力消費は、たいていキロワットの範囲になる。 大きなスタジアムはメガワットの規模になることもある。 そしてギガワットは、大規模な発電所やタイムマシンの世界の話になる。
電力を計算する
電力とはエネルギーが移動する速さであり、1秒あたりのジュール数(J/s)、つまりワット(W)で測られる。 電気に関する基本的な用語を踏まえると、回路の中の電力はどう計算できるだろうか。 位置エネルギーを表す標準的な量であるボルト(V)は、電荷1単位(クーロン)あたりのジュール数(J/C)として定義されている。 もう1つの電気の基本用語である電流は、電荷の流れる速さをアンペア(A)、つまり1秒あたりのクーロン数(C/s)で表す。 この2つを掛け合わせると、電力が得られる。
\[ \text{V} \times \text{A} = \left(\frac{\text{J}}{\text{C}}\right) \times \left(\frac{\text{C}}{\text{s}}\right) = \text{J/s} = \text{W} \]
回路の中のある部品の電力を計算するには、その部品にかかる電圧降下と、そこを流れる電流を掛け合わせればよい。
\[ P = V \times I \]
例
下に示すのは、9Vの電池を10Ωの抵抗につないだだけの、単純な(実用的とは言えない)回路である。
抵抗にかかる電力はどう計算すればよいか。 まず、そこを流れる電流を求める必要がある。 これは簡単で、オームの法則を使えばよい。
\[ I = \frac{V}{R} = \frac{9,\text{V}}{10,\Omega} = 0.9,\text{A} \]
これで、抵抗には900mA(0.9A)の電流が流れ、9Vの電圧がかかっていることがわかった。 このとき、抵抗にはどれだけの電力がかかっているか。
\[ P = V \times I = 9,\text{V} \times 0.9,\text{A} = 8.1,\text{W} \]
抵抗は電気エネルギーを熱に変換する部品である。 つまりこの回路は、1秒ごとに8.1ジュールの電気エネルギーを熱に変換していることになる。
抵抗性回路の電力を計算する
純粋に抵抗だけの回路であれば、電圧、電流、抵抗の3つのうち2つさえわかれば電力を計算できる。
オームの法則(V = IR、あるいは I = V/R)をこれまでの電力の式に代入すると、2つの新しい式が得られる。 1つ目は、電圧と抵抗だけで表したものである。
\[ P = \frac{V^2}{R} \]
先ほどの例で言えば、9²/10(V²/R)は8.1Wであり、抵抗を流れる電流をあらためて計算する必要はない。
2つ目の式は、電流と抵抗だけで表したものである。
\[ P = I^2 \times R \]
抵抗にかかる電力を気にする理由は何か。 他の部品についても同じことが言える。 電力とは、あるエネルギーが別の種類のエネルギーへ変換される速さであることを思い出してほしい。 電源から流れてきた電気エネルギーが抵抗に達すると、そのエネルギーは熱に変換される。 場合によっては、その抵抗が処理しきれないほどの熱になることもある。 そこで重要になってくるのが、定格電力である。
定格電力
すべての電子部品は、あるエネルギーを別の種類のエネルギーに変換している。 LEDが光を放つ、モーターが回る、電池が充電されるといった変換は、望ましいものである。 一方で、望ましくない、しかし避けられないエネルギー変換もある。 こうした望ましくないエネルギーの変換は電力損失と呼ばれ、たいていは熱として現れる。 電力損失が大きすぎる、つまり部品の発熱が大きすぎると、それは非常に望ましくない事態になりうる。
エネルギーの変換自体が部品の主目的である場合でも、他の形のエネルギーへの損失は必ず生じる。 たとえばLEDやモーターも、目的の変換とは別に、副産物として熱を発生させる。
ほとんどの部品には、放散できる最大の電力についての定格が定められており、その値を超えないように動作させることが重要である。 そうすることで、いわゆる「魔法の煙を逃がしてしまう」事態を避けられる。
抵抗器の定格電力
抵抗器は、電力損失の代表格ともいえる部品である。 抵抗器に電圧をかけると、そこには必ず電流が流れる。 電圧が高いほど電流も大きくなり、電流が大きいほど電力も大きくなる。
先ほどの電力計算の例を思い出してほしい。 9Vを10Ωの抵抗にかけると、その抵抗は8.1Wを消費することになる。 8.1Wというのは、たいていの抵抗器にとって非常に大きな値である。 一般的な抵抗器の定格は⅛W(0.125W)から½W(0.5W)程度であり、標準的な½W抵抗器に8Wをかけようものなら、消火器を用意しておいたほうがよい。
大きな電力を扱えるように作られた抵抗器もあり、これは特にパワー抵抗器と呼ばれる。
抵抗値を選ぶときは、定格電力にも気を配る必要がある。 何かを温めることが目的(ヒーターの発熱体は、実質的に非常に高出力の抵抗器である)でない限り、抵抗器での電力損失はできるだけ小さく抑えるようにしたい。
例
抵抗器の定格電力は、LEDの電流制限抵抗の値を決めるときにも関わってくる。 たとえば、10mmの超高輝度赤色LEDを9Vの電池で最大の明るさで光らせたいとする。
このLEDの最大順方向電流は80mA、順方向電圧はおよそ2.2Vである。 LEDに80mAを流すには、85Ωの抵抗が必要になる。
抵抗には6.8Vがかかり、そこに80mAが流れるということは、抵抗での電力損失は0.544W(6.8V×0.08A)になる。 これは½Wの抵抗にとってはあまり嬉しくない値である。 溶けることはなくても、かなり熱くなるはずである。 安全のため、1Wの抵抗に切り替えるとよい(あるいは、電力を節約したいなら専用のLEDドライバを使うという手もある)。
最大定格電力を考慮すべきなのは抵抗器だけではない。 何らかの抵抗成分を持つ部品はすべて、熱による電力損失を生む。 電圧レギュレータ、ダイオード、増幅回路、モータードライバなど、大きな電力にさらされることの多い部品を扱うときは、電力損失と熱によるストレスに特に注意を払う必要がある。
まとめ
電力という概念について理解できたところで、関連するチュートリアルにも目を通してみてほしい。
- プロジェクトへの電源供給:電力とは何かはもうわかった。では、それをどうやってプロジェクトに届けるのか。
- 光:光は電気工学者にとって役立つ道具である。光と電子工学の関係を理解することは、多くのプロジェクトに欠かせないスキルである。
- Arduinoとは何か:このチュートリアルでもArduinoについて何度も触れた。まだよくわからない場合は、このチュートリアルを確認してほしい。
- ダイオード:交流を直流に変換する場合でも、単に電源インジケータ用のLEDを光らせる場合でも、ダイオードはプロジェクトに電力を供給するうえで特に便利な部品である。
- 抵抗器:もっとも基本的な電子部品であり、ほぼすべての回路に欠かせない。
タグ: 概念、電気工学、LED、物理学、電力
出典:Electric Power(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
極性
電子工作の世界では、極性とは、回路部品が対称であるかどうかを表す性質である。 極性を持たない部品、つまり極性のない部品は、どちら向きにつないでも本来の働きをする。 対称な部品はたいてい端子が2本以下で、その部品のどの端子も互いに等価である。 極性のない部品はどちら向きにつないでも同じように機能する。
極性を持つ部品、つまり極性のある部品は、回路に対して決まった1つの向きでしかつなげない。 極性を持つ部品には、2本のこともあれば、20本、200本の端子があることもあり、それぞれの端子には固有の役割や位置がある。 極性を持つ部品を回路に間違った向きでつなぐと、よくても意図したとおりに動かないだけで済むが、最悪の場合、その部品は煙を上げ、火花を散らし、完全に壊れてしまう。
極性は非常に重要な概念であり、特に実際に回路を組み立てる場面で重要になる。 ブレッドボードに部品を差し込むときも、PCBにはんだ付けするときも、E-テキスタイルの作品に部品を縫い込むときも、極性を持つ部品を見分け、正しい向きで接続できることが欠かせない。 このチュートリアルでは、どの部品に極性があってどの部品にはないのか、部品の極性をどう見分けるのか、そしていくつかの部品について実際に極性をテストする方法を説明する。
参考になるチュートリアル:
ダイオードとLEDの極性
Note
ここでは、回路内の正の電荷を基準とした電流の向き(いわゆる「慣用電流」)を使って説明する。
ダイオードは一方向にしか電流を流さない部品であり、常に極性を持つ。 ダイオードには2つの端子があり、正極側はアノード、負極側はカソードと呼ばれる。
ダイオードを流れる電流は、アノードからカソードへの方向にしか流れない。 これが、ダイオードを正しい向きでつなぐことが重要な理由である。 物理的には、どのダイオードにもアノードかカソードのどちらかを示す目印が必ずついている。 たいていはカソード側の端子付近に線が入っており、これはダイオードの回路記号に描かれている縦線と対応している。
以下にいくつかダイオードの例を示す。 上にある1N4001整流ダイオードは、カソード側に灰色のリングがある。 その下の1N4148信号用ダイオードは、黒いリングでカソードを示している。 一番下には表面実装型のダイオードが2つあり、それぞれ線でカソード側のピンを示している。
LED
LEDは発光ダイオードの略であり、その名のとおりダイオードの仲間なので、やはり極性を持つ。 LEDの正極と負極のピンを見分ける方法はいくつかある。 足の長いほうを探すという方法があり、これはたいてい正極(アノード)側のピンを示している。
もし誰かが足を切りそろえてしまっていたら、LEDの外装にある平らな部分を探すとよい。 平らな面に近いほうのピンが、負極(カソード)側のピンになる。
これら以外の目印がある場合もある。 SMDタイプのダイオードには、アノードとカソードを示すさまざまな表記方法がある。 テスター(マルチメーター)を使って極性を調べるのがもっとも簡単な場合も多い。 テスターをダイオードモード(たいていダイオードの記号で示されている)に切り替え、それぞれのプローブをLEDの端子に当ててみる。 LEDが点灯すれば、プラス側のプローブがアノードに、マイナス側のプローブがカソードに触れていることになる。 点灯しなければ、プローブを入れ替えて試してみればよい。
極性を持つ部品は、ダイオードだけではない。 間違った向きにつなぐと動作しない部品は他にもたくさんある。 次は、集積回路をはじめとする、他のよくある極性を持つ部品について見ていこう。
集積回路の極性
集積回路(IC)には8本のピンのものもあれば80本のピンのものもあり、それぞれのピンには固有の役割と位置がある。 ICでは極性をきちんと守ることが非常に重要である。 間違った向きにつなぐと、煙を上げて溶け、壊れてしまう可能性が高い。
スルーホール型のICは、たいていDIP(デュアルインラインパッケージ)と呼ばれる、ブレッドボードの中央をまたげるように0.1インチ間隔で2列に並んだピン配置になっている。 DIPタイプのICには、多数あるピンのうちどれが1番ピンかを示す切り欠きがあることが多い。 切り欠きがない場合は、ケースの1番ピン付近に刻印された丸い印があることもある。
どのICパッケージでも、1番ピンから反時計回りに進むにつれてピン番号が順に増えていく。
表面実装型のICには、QFN、SOIC、SSOPなど、さまざまな形状のパッケージがある。 これらのICでは、たいてい1番ピンの近くに丸い印がついている。
電解コンデンサ
コンデンサのすべてが極性を持つわけではないが、極性を持つコンデンサでは、その極性を間違えないことが非常に重要である。
セラミックコンデンサ(1µF以下の小さな、たいてい黄色い部品)は極性を持たない。 どちら向きに差し込んでもかまわない。
小さな缶のような見た目をした電解コンデンサ(電解液を使っていることに由来する名前である)は極性を持つ。 コンデンサの負極側のピンは、たいてい**「-」の表示や、缶に沿ったカラーストライプで示されている。 正極側の足のほうが長く**なっていることもある。
以下は10µF(左)と1mFの電解コンデンサで、どちらも負極側の足に「-」の表示があり、正極側の足のほうが長くなっている。
電解コンデンサに長時間逆向きの電圧をかけ続けると、短くも派手な、そして致命的な故障を引き起こす。 「ポン」という音とともに、コンデンサの上部が膨らむか、破裂する。 そうなったコンデンサは二度と使い物にならず、ショート回路のようにふるまうようになる。
その他の極性を持つ部品
電池と電源
回路の極性を正しく保つことは、結局のところ電源を正しく接続することに尽きる。 プロジェクトの電源がACアダプターであれ、リポ電池であれ、うっかり逆向きに接続して、-9Vや-4.2Vをプロジェクトに加えてしまわないよう注意することが重要である。
電池を交換したことのある人なら、その極性の見分け方はよく知っているだろう。 たいていの電池は、「+」または「-」の記号で正極と負極の端子を示している。 赤い線が正極、黒い線が負極を表していることもある。
電源には、たいてい標準化されたコネクタが使われており、そのコネクタ自体にも極性があることが多い。 たとえばバレルジャックには内側と外側の2つの導体があり、内側(中心)の導体がたいてい正極側になる。 JSTのような一部のコネクタは、逆向きには差し込めないようキー溝の形で作られている。
逆接続に対する追加の保護として、ダイオードやMOSFETを使った逆接保護回路を追加することもできる。
トランジスタ、MOSFET、電圧レギュレータ
これらは(伝統的には)3端子の極性を持つ部品であり、パッケージの形状が似ているためひとまとめに扱われることが多い。 スルーホール型のトランジスタやMOSFET、電圧レギュレータは、たいていTO-92やTO-220というパッケージで提供される。 どのピンが何かを知るには、TO-92パッケージの平らな面や、TO-220パッケージの金属製の放熱板を目印にし、データシートのピン配置図と照らし合わせる。
その他
ここまでで紹介したのは、極性を持つ部品のほんの一部にすぎない。 抵抗器のように本来極性を持たない部品でも、極性を持つパッケージに入っていることがある。 5個程度の抵抗器があらかじめまとめられた抵抗アレイは、その一例である。
幸い、極性を持つ部品には、どのピンが何かを教えてくれる何らかの目印が必ず用意されている。 必ずデータシートを確認し、ケースについている丸印やその他の目印もあわせてチェックするようにしたい。
まとめ
極性とは何か、そしてそれをどう見分けるかがわかったところで、関連するチュートリアルにも目を通してみてほしい。
- コネクタの基礎:コネクタの中にも、それ自体が極性を持つものが数多くある。電源やその他の信号を逆向きに加えてしまわないようにする、優れた手段になっていることが多い。
- ダイオード:部品の極性を語るうえでの代表例である。このチュートリアルでは、ダイオードの動作原理や種類についてさらに詳しく扱っている。
- LilyPadデザインキット実験1:回路はブレッドボードや基板の上だけに存在するわけではなく、シャツなどの布に縫い込むこともできる。LilyPadデザインキットのチュートリアルで始め方を確認してほしい。LEDを正しく配線するうえで、極性の知識が大いに役立つ。
タグ: 概念、電気工学
出典:Polarity(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
分圧回路
分圧回路は、大きな電圧を小さな電圧に変換する単純な回路である。 直列につないだ2本の抵抗と入力電圧だけを使って、入力電圧のある割合にあたる出力電圧を作り出せる。 分圧回路は、電子工作でもっとも基本的な回路の1つである。 オームの法則を学ぶことがアルファベットを覚えるようなものだとすれば、分圧回路を学ぶことは、それを使って「cat」という単語を綴れるようになるようなものである。
このチュートリアルで扱う内容:
- 分圧回路がどのような見た目をしているか
- 出力電圧が、入力電圧と2本の抵抗によってどう決まるか
- 実際の分圧回路がどうふるまうか
- 分圧回路の実践的な応用例
参考になるチュートリアル:
理想的な分圧回路
分圧回路には、重要な要素が2つある。 回路そのものと、その式である。
回路
分圧回路は、直列につないだ2本の抵抗に電源電圧をかけるだけの回路である。 描き方はいくつかあるが、どれも本質的には同じ回路になる。
入力電圧(Vin)に近いほうの抵抗をR1、グラウンドに近いほうの抵抗をR2と呼ぶことにする。 R2にかかる電圧降下をVoutと呼び、これがこの回路の目的である「分圧された電圧」にあたる。
回路の構成はこれだけである。 Voutが、私たちの求める分圧された電圧であり、これが入力電圧のある割合になる。
式
分圧回路の式では、上の回路にある3つの値、つまり入力電圧(Vin)と2本の抵抗値(R1とR2)がわかっていることを前提とする。 これらの値がわかれば、次の式で出力電圧(Vout)を求められる。
\[ V_{out} = V_{in} \times \frac{R_2}{R_1 + R_2} \]
この式は覚えておくとよい。 この式は、出力電圧が入力電圧とR1とR2の比に正比例することを示している。 この式がどこから導かれるのか気になる場合は、このチュートリアルの末尾にある導出の節を参照してほしい。 ただし今は、まずこの式をそのまま覚えてしまってかまわない。
簡略化した見方
分圧回路を扱ううえで覚えておくと便利な、いくつかの一般化されたパターンがある。 これらは、分圧回路をぱっと評価するのに役立つ簡略化である。
まず、R1とR2が等しい場合、出力電圧は入力電圧のちょうど半分になる。 これは抵抗の実際の値に関係なく常に成り立つ。
R2がR1よりもはるかに大きい(少なくとも1桁以上大きい)場合、出力電圧は入力電圧にかなり近くなる。 このときR1にかかる電圧はごくわずかになる。
逆に、R2がR1よりはるかに小さい場合、出力電圧は入力電圧に比べてごくわずかになる。 入力電圧のほとんどはR1にかかることになる。
応用例
分圧回路には無数の応用があり、電気工学者が使うもっとも一般的な回路の1つである。 ここでは、分圧回路が使われている代表的な場面をいくつか紹介する。
ポテンショメータ
ポテンショメータは、調整可能な分圧回路を作るのに使える可変抵抗器である。
ポットの内部には1本の抵抗体と、それを2つに分けて動く「ワイパー」があり、ワイパーを動かすことで両側の抵抗の比を調整できる。 外部にはたいてい3本のピンがあり、2本は抵抗体の両端に、残る1本はワイパーにつながっている。
外側の2つのピンを電源につなぐと(片方をグラウンドに、もう片方をVinに)、中央のピンの出力(Vout)は分圧回路と同じようにふるまう。 ポットを一方向いっぱいに回すと出力電圧はゼロに近づき、反対方向に回すと出力電圧は入力電圧に近づく。 ワイパーが中央の位置にあるときは、出力電圧は入力電圧のちょうど半分になる。
ポテンショメータにはさまざまなパッケージがあり、それ自体にも多くの応用がある。 基準電圧を作る、ラジオの選局を調整する、ジョイスティックで位置を測るなど、可変の入力電圧が必要なあらゆる場面で使われている。
抵抗性センサーを読み取る
現実世界のセンサーの多くは、単純な抵抗性の部品である。 フォトセルは、感知した光の量に応じて抵抗値が変わる可変抵抗器である。 フレックスセンサーや感圧抵抗(FSR)、サーミスタなども同様に可変抵抗器の一種である。
マイコン(少なくともアナログ-デジタル変換器、ADCを備えたもの)にとって、電圧はとても測りやすい量である。 しかし抵抗はそう簡単には測れない。 そこで、このような抵抗性センサーにもう1本抵抗を追加して分圧回路を作れば、その出力電圧を測ることで、逆算してセンサーの抵抗値を求められる。
たとえばフォトセルの抵抗値は、明るい場所では1kΩ程度、暗い場所では10kΩ程度まで変化する。 これに、ちょうど中間くらいの固定抵抗(たとえば5.6kΩ)を組み合わせると、この分圧回路から広い範囲の出力が得られる。
| 明るさ | R2(センサー) | R1(固定) | 比 R2/(R1+R2) | Vout |
|---|---|---|---|---|
| 明るい | 1kΩ | 5.6kΩ | 0.15 | 0.76V |
| 薄暗い | 7kΩ | 5.6kΩ | 0.56 | 2.78V |
| 暗い | 10kΩ | 5.6kΩ | 0.67 | 3.21V |
明るいときと暗いときで、およそ2.45Vの変化幅になる。 たいていのADCにとっては、十分な分解能である。
レベルシフト
より複雑なセンサーになると、UART、SPI、I2Cのような、本格的なシリアルインターフェースで測定値を送ってくることがある。 こうしたセンサーの多くは、消費電力を抑えるために比較的低い電圧で動作する。 しかし、そうした低電圧のセンサーが、より高い電源電圧で動作するマイコンとやり取りする場面も少なくない。 これがレベルシフトの問題であり、その解決策の1つが分圧回路である。
たとえばADXL345加速度センサーの最大入力電圧は3.3Vなので、これを(5Vで動作する)Arduinoとやり取りさせるには、5Vの信号を3.3Vまで落とす必要がある。 ここで分圧回路の出番である。 5Vの信号をおよそ3.3Vまで分圧できる比率の抵抗を2本用意するだけでよい。 こうした用途には、1kΩから10kΩ程度の範囲の抵抗がよく使われる。
ただし、この方法は一方向にしか使えない点に注意してほしい。 分圧回路だけでは、低い電圧を高い電圧に昇圧することはできない。
やってはいけない使い方
12Vの電源を5Vに落とすために分圧回路を使いたくなるかもしれないが、分圧回路を負荷への電力供給に使ってはならない。
負荷が必要とする電流は、そのままR1にも流れることになる。 R1にかかる電流と電圧は電力を生み、それは熱として放出される。 その電力が抵抗の定格(たいてい⅛Wから1W程度)を超えると、発熱が深刻な問題になり、かわいそうな抵抗器を溶かしてしまいかねない。
その効率の悪さについては言うまでもない。 基本的に、ある程度以上の電力を必要とするものへの電源供給に、分圧回路を使うべきではない。 電圧を落として電源として使いたい場合は、電圧レギュレータやスイッチング電源を検討してほしい。
補足:式の導出
分圧回路についてもっと知りたいなら、ここでオームの法則から分圧回路の式がどう導かれるのかを見ていこう。 これは分圧回路の使い方を理解するうえで必須ではないが、興味があれば、オームの法則と代数を使った小さな演習として楽しんでほしい。
Voutの電圧を測りたいとする。 オームの法則を使って、この電圧を求める式をどう組み立てればよいか。 Vin、R1、R2の値がわかっているとして、Voutをこれらの値で表す式を求めてみよう。
まず、回路に流れる電流I1とI2(それぞれの抵抗を流れる電流)を書き出すところから始める。
Voutを計算するのが目標なので、この電圧にオームの法則を適用してみよう。 関わる抵抗と電流はそれぞれ1つずつなので簡単である。
\[ V_{out} = I_2 \times R_2 \]
R2の値はわかっているが、I2はどうか。 これは未知の値だが、少しだけ手がかりがある。 I1はI2に等しいと仮定できる(これは実は大きな仮定である)。 これで何がわかるだろうか。 ひとまずこの点は保留しておこう。 これで回路は、I1とI2をどちらもIとして表せる、次のような形になる。
\[ V_{out} = I \times R_2 \]
Vinについては何がわかっているか。 Vinは、直列につながれたR1とR2の両方にかかる電圧である。 直列の抵抗は足し合わされるので、次のように言える。
\[ V_{in} = I \times (R_1 + R_2) \]
これは、オームの法則のもっとも基本的な形、Vin = I × Rにほかならない。 ここで R を R1 + R2 に戻すと、次のように書ける。
\[ I = \frac{V_{in}}{R_1 + R_2} \]
そしてIはI2に等しいので、これを先ほどのVoutの式に代入すると、
\[ V_{out} = V_{in} \times \frac{R_2}{R_1 + R_2} \]
これが、分圧回路の式である。 出力電圧は入力電圧のある割合になっており、その割合はR2をR1とR2の和で割ったものである。
まとめ
電子工作でもっともよく使われる回路の1つの要点をつかんだところで、さらに学べることはまだたくさんある。
Arduinoのようなマイコンが、分圧回路の作るアナログ電圧をどう読み取るのか知りたくないだろうか。
分圧回路とADCの組み合わせは、電子工作の世界で多くのことを可能にしてくれる。 次のようなチュートリアルもあわせて参照してほしい。
- 加速度センサーやジャイロセンサーの一部にはアナログ出力のものがあり、使える値として読み取るにはADCが必要になる。
- パルス幅変調は、アナログ入力とは逆の、いわばアナログ出力に相当する仕組みである。
- INA169のようなICを使うと、ADCで電流を検出できる。
- 分圧回路とADCを組み合わせれば、トリムポットやジョイスティック、スライダー、感圧抵抗など、さまざまなセンサーや可変部品を読み取れる。
- Arduinoの
map()関数は、ADCの値を別の範囲に変換してくれる。 - 電池残量警告インジケーターの製作例では、分圧回路を使って電池の電圧低下を知らせている。
タグ: 概念、電気工学
出典:Voltage Dividers(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
プルアップ抵抗
プルアップ抵抗は、マイコン(MCU)やその他のデジタルロジック機器を使うときによく登場する部品である。 このチュートリアルでは、プルアップ抵抗をいつ、どこで使うのかを説明し、そのうえで簡単な計算を通じて、なぜプルアップ抵抗が重要なのかを見ていく。
参考になるチュートリアル:
プルアップ抵抗とは何か
あるMCUに、入力として設定した1本のピンがあるとする。 そのピンに何も接続されていないとき、プログラムがそのピンの状態を読み取ったら、ハイ(VCCに引かれた状態)になるか、ロー(グラウンドに引かれた状態)になるか。 これはどちらとも判断がつかない。 この現象は*フローティング(浮遊)*と呼ばれる。 この不確定な状態を防ぐために、プルアップ抵抗やプルダウン抵抗を使うと、わずかな電流しか消費せずに、ピンの状態をハイかローのどちらかに確定させられる。
(ここでは、プルダウンよりも一般的なプルアップに絞って説明する。両者は同じ考え方で動作し、違いはプルアップ抵抗が高い電圧側(たいてい3.3Vか5Vで、VCCと呼ばれることが多い)につながり、プルダウン抵抗がグラウンド側につながる点だけである。)
プルアップは、ボタンやスイッチと組み合わせて使われることが多い。
プルアップ抵抗があると、ボタンが押されていないとき、入力ピンはハイの状態を読み取る。 言い換えると、VCCから入力ピンへ向けてわずかな電流が流れており(グラウンドへは流れない)、入力ピンの電圧はVCCに近い値になる。 ボタンが押されると、入力ピンは直接グラウンドにつながる。 電流は抵抗を通ってグラウンドへ流れ、入力ピンはローの状態を読み取る。 もしこの抵抗がなければ、ボタンを押した瞬間にVCCとグラウンドが直結してしまい、これは非常によくない状態、いわゆるショートになってしまう。
では、どの程度の抵抗値を選べばよいのか。
手短に言えば、プルアップにはおよそ10kΩ程度の抵抗値を選ぶとよい。
抵抗値が低いプルアップは「強い(strong)」プルアップと呼ばれ(流れる電流が多い)、抵抗値が高いプルアップは「弱い(weak)」プルアップと呼ばれる(流れる電流が少ない)。
プルアップ抵抗の値は、次の2つの条件を満たすように選ぶ必要がある。
- ボタンが押されているとき、入力ピンはローに引かれる。このとき抵抗R1の値が、VCCからボタンを通ってグラウンドへ流れる電流の量を左右する。
- ボタンが押されていないとき、入力ピンはハイに引かれる。このときプルアップ抵抗の値が、入力ピンにかかる電圧を左右する。
条件1については、抵抗値をあまり低くしすぎたくない。 抵抗が低いほど、ボタンを押したときに消費される電力が大きくなる。 一般には大きめの抵抗値(10kΩ程度)が望ましいが、条件2と矛盾しない範囲にとどめる必要もある。 4MΩの抵抗をプルアップに使うこと自体は可能かもしれないが、抵抗値が大きすぎる(弱すぎる)ため、常に期待どおりに機能するとは限らない。
条件2についての一般的な目安は、プルアップ抵抗(R1)の値を、入力ピンの入力インピーダンス(R2)の10分の1程度に抑えることである。 マイコンの入力ピンのインピーダンスは、100kΩから1MΩ程度まで幅がある。 ここで言う「インピーダンス」は、単に「抵抗」を難しく言い換えたものだと考えてよく、上の図のR2にあたる。 つまり、ボタンが押されていないとき、VCCからR1を通って入力ピンへごくわずかな電流が流れる。 プルアップ抵抗R1と入力ピンのインピーダンスR2は電圧を分圧しており、この電圧が、入力ピンがハイと判定されるのに十分な高さになっている必要がある。
たとえば、プルアップR1に1MΩの抵抗を使い、入力ピンのインピーダンスR2もおよそ1MΩ程度だとすると(この2つで分圧回路を作ることになる)、入力ピンの電圧はVCCのおよそ半分になり、マイコンはそのピンをハイの状態として認識できないかもしれない。 5V系のシステムで、入力ピンの電圧が2.5Vだったら、MCUはそれをどう読み取るだろうか。 ハイなのかローなのか。 MCU自身にもわからず、ハイと読み取られることもローと読み取られることもありうる。 R1に10kΩから100kΩ程度の抵抗を使えば、こうした問題の多くは避けられる。
プルアップ抵抗は非常によく必要とされる部品であるため、Arduinoプラットフォームで使われるATmega328のような多くのマイコンには、有効化と無効化ができる内蔵プルアップが備わっている。
Arduinoで内蔵プルアップを有効にするには、setup() 関数の中で次のようなコードを書けばよい。
pinMode(5, INPUT_PULLUP); // ピン5の内蔵プルアップ抵抗を有効にする
もう1つ触れておきたいのは、プルアップの抵抗値が大きいほど、そのピンが電圧の変化に反応する速さが遅くなるという点である。 これは、入力ピンにつながっているシステムが、実質的にコンデンサとして働き、プルアップ抵抗と組み合わさってRCフィルタを形成するためであり、RCフィルタには充放電に一定の時間がかかる。 USBのように非常に速く変化する信号を扱う場合、大きな値のプルアップ抵抗は、ピンの状態が確実に切り替わる速さを制限してしまうことがある。 USBの信号線でよく1kΩから4.7kΩ程度の抵抗が使われているのは、このためである。
こうしたさまざまな要素が絡み合って、どの値のプルアップ抵抗を使うべきかが決まる。
プルアップ抵抗の値を計算する
上の回路(Vcc = 5V)で、ボタンを押したときの電流をおよそ1mAに制限したいとする。 どの抵抗値を使えばよいか。
オームの法則を使えば、プルアップ抵抗の値は簡単に計算できる。
\[ V = I \times R \]
上の回路図に当てはめると、オームの法則は次のようになる。
\[ 5\text{V} = 0.001\text{A} \times R \]
これを簡単な代数で抵抗について解くと、
\[ R = \frac{5\text{V}}{0.001\text{A}} = 5{,}000,\Omega \]
単位をすべてボルト、アンペア、オームに揃えてから計算することを忘れないようにする(たとえば1mAは0.001アンペアである)。 答えは、5kΩの抵抗を使えばよいということになる。
まとめ
これで、プルアップ抵抗が何であり、どう動作するかがわかったはずである。 電子部品とその応用についてさらに学びたいなら、次のチュートリアルもおすすめである。
タグ: 概念、電気工学
出典:Pull-up Resistors(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
交流と直流の違い
オーストラリアのロックバンドAC/DCのバンド名の由来をご存じだろうか。 もちろん、交流(Alternating Current)と直流(Direct Current)である。 ACとDCはどちらも、回路内の電流の流れ方を表す言葉である。 直流(DC)では、電荷(電流)は一方向にしか流れない。 一方、交流(AC)の電荷は周期的に向きを変える。 電流の向きが変わるため、交流回路の電圧も周期的に反転する。
自分で作るデジタル電子工作の多くは直流を使うことになるが、交流の概念も理解しておくことが重要である。 たいていの住宅は交流で配線されているため、プロジェクトをコンセントに接続したい場合は交流を直流に変換する必要がある。 また交流には、単一の部品(変圧器)だけで電圧のレベルを変換できるという便利な性質があり、これが長距離の送電に交流が採用されてきた理由でもある。
このチュートリアルで扱う内容:
- 交流と直流の歴史的背景
- 交流と直流を発生させるさまざまな方法
- 交流と直流の応用例
参考になるチュートリアル:
交流(AC)
交流とは、周期的に向きを変える電荷の流れのことである。 その結果、電圧のレベルも電流と一緒に反転する。 交流は住宅やオフィスビルなどへの電力供給に使われている。
交流の発生
交流は「オルタネータ」と呼ばれる装置を使って発生させることができる。 これは交流を発生させるために設計された、特殊な発電機の一種である。
磁場の中でコイル状の配線を回転させると、その配線に沿って電流が誘導される。 配線を回転させる動力源には、風力タービン、蒸気タービン、水流などさまざまなものがありうる。 配線が回転するたびに磁極が周期的に切り替わるため、配線上の電圧と電流も交互に入れ替わる。
交流の発生は、電圧の水の例えとも比較できる。
一組の水道管で交流を作り出すには、水を管の中で前後に動かすピストンに機械式のクランクを接続する(これが私たちの「交流」にあたる)。 管の途中にある狭くなった部分は、水の流れる向きに関係なく抵抗として働き続けることに注目してほしい。
波形
交流には、電圧と電流が交互に変化する限り、さまざまな形がありうる。 交流回路にオシロスコープをつなぎ、電圧を時間の関数としてグラフにすると、いろいろな波形が見えてくる。 もっとも一般的な交流の形は正弦波である。 たいていの住宅やオフィスの交流電圧は、正弦波を描くように振動している。
このほかによく見られる交流の形として、矩形波と三角波がある。
矩形波は、デジタル回路やスイッチング回路の動作テストによく使われる。
三角波は音響合成の分野で見られ、アンプのようなリニア回路のテストに役立つ。
正弦波を数式で表す
交流の波形を数学的な言葉で表したいことがよくある。 ここでは、よく使われる正弦波を例に見ていこう。 正弦波には振幅、周波数、位相という3つの要素がある。
電圧だけに注目すると、正弦波は次のような数式で表せる。
V(t) は時間の関数としての電圧を表しており、時間が変化するにつれて電圧も変化することを意味する。 イコールの右側の式は、電圧が時間とともにどのように変化するかを表している。
VP は振幅である。 これは、正弦波が正負どちらの方向にも到達しうる最大電圧を表しており、電圧は+VPボルト、-VPボルト、あるいはその間のどこかの値を取りうる。
**sin()**関数は、電圧が周期的な正弦波の形、つまり0Vを中心とした滑らかな振動になることを示している。
2πは、周波数の単位をサイクル(ヘルツ)から角周波数(ラジアン毎秒)に変換するための定数である。
fは正弦波の周波数を表す。 これはヘルツ、つまり1秒あたりの回数として与えられる。 周波数は、ある波形(この場合は正弦波の1サイクル、つまり1回の上昇と下降)が1秒間に何回起こるかを示している。
tは独立変数である時間(秒単位)を表す。 時間が変化するにつれて、波形も変化する。
φは正弦波の位相を表す。 位相は、波形が時間に対してどれだけずれているかを示す指標である。 たいてい0度から360度の間の数値として、度単位で与えられる。 正弦波は周期的な性質を持つため、波形を360度ずらしても、0度ずらした場合と同じ波形になる。 簡単にするため、このチュートリアルの残りの部分では位相を0度と仮定する。
身近な例として、コンセントから得られる電力の波形を見てみよう。 アメリカ合衆国では、家庭に供給される電力は交流であり、ゼロからピークまでの電圧(振幅)はおよそ170V、周波数は60Hzである。 これらの数値を先ほどの式に当てはめると(位相は0度と仮定する)、次のようになる。
この式は、手元のグラフ電卓や、Desmosのような無料のオンライングラフ作成ツールを使ってグラフにできる(式の中で“v“の代わりに“y“を使う必要がある場合もある)。
予想どおり、電圧は周期的に170Vまで上昇し、-170Vまで下降していることが分かる。 また、正弦波は1秒間に60サイクル発生している。 コンセントの電圧をオシロスコープで測定すればこのような波形が見られるはずだが、警告:コンセントの電圧をオシロスコープで測定してはいけない。機器を破損する可能性が高い。
注記: アメリカの交流電圧は120Vだと聞いたことがあるかもしれないが、これも正しい。 なぜだろうか。 交流について語るとき(電圧が絶えず変化するため)、平均値や実効値を使うほうが扱いやすいことが多い。 そのために使われるのが“二乗平均平方根”(RMS)と呼ばれる方法である。 電力を計算したいときには、交流のRMS値を使うと便利なことが多い。 先ほどの例では電圧が-170Vから170Vの間で変動していたが、その実効値(RMS)は120Vになる。
応用例
家庭やオフィスのコンセントは、ほぼ必ず交流である。 これは、交流を長距離にわたって発生させ、送電するのが比較的容易だからである。 高い電圧(110kVを超える程度)で送電すると、電力の送電時の損失が少なくなる。 電圧が高いほど電流は少なくて済み、電流が少ないほど、電線の抵抗によって発生する熱も少なくなる。 交流は変圧器を使うことで、高電圧との間で容易に変換できる。
交流はまた、電動モーターを動かす力にもなる。 モーターと発電機はまったく同じ装置であり、モーターは電気エネルギーを機械エネルギーに変換する(モーターの軸を回すと、端子に電圧が発生する)。 これは食器洗い機や冷蔵庫など、交流で動く多くの大型家電にとって便利な性質である。
直流(DC)
直流は、交流に比べて理解しやすい。 前後に振動する代わりに、直流は一定の電圧または電流を供給する。
直流の発生
直流は、次のようないくつかの方法で発生させることができる。
再び水の例えを使うと、直流は先端にホースが付いた水タンクによく似ている。
このタンクは、ホースから出ていく一方向にしか水を押し出せない。 直流を発生させる電池と同じように、タンクが空になれば、もう水は管を流れなくなる。
直流を数式で表す
直流は「単方向」の電流の流れとして定義される。つまり、電流は一方向にしか流れない。 流れる向きさえ変わらなければ、電圧や電流は時間とともに変化してもよい。 話を単純にするため、ここでは電圧が一定であると仮定しよう。 たとえば単3形電池が1.5Vを供給すると仮定すると、これは次のような数式で表せる。
これを時間についてグラフにすると、一定の電圧が見えてくる。
これは何を意味するのだろうか。 たいていの直流電源は、時間が経っても一定の電圧を供給し続けると考えてよいということである。 実際には、電池は徐々に電荷を失っていくため、使用するにつれて電圧は下がっていく。 とはいえ、たいていの目的においては、電圧は一定だと仮定してよい。
応用例
SparkFunで販売されているほぼすべての電子工作プロジェクトや部品は、直流で動作する。 電池で動くもの、ACアダプタを使ってコンセントに差し込むもの、USBケーブルで給電するものは、いずれも直流に依存している。 直流で動作する電子機器の例としては、次のようなものがある。
- 携帯電話
- LilyPadを使ったダイスガントレットのようなウェアラブルプロジェクト
- 薄型テレビ(交流がテレビに入り、内部で直流に変換される)
- 懐中電灯
- ハイブリッド車や電気自動車
電流戦争
現在ではほぼすべての住宅や事業所が交流で配線されているが、これは一夜にして決まったことではない。 1880年代後半、アメリカ合衆国とヨーロッパ各地でさまざまな発明が生まれ、交流と直流の配電方式をめぐる本格的な争いへと発展していった。
1886年、ブダペストの電気会社ガンツ・ワークスは、ローマ全域に交流で電力を供給した。 一方、トーマス・エジソンは1887年までにアメリカ国内に121の直流発電所を建設していた。 この争いの転機となったのは、翌年、ピッツバーグの著名な実業家ジョージ・ウェスティングハウスが、ニコラ・テスラが持つ交流モーターと交流送電の特許を買い取ったことである。
交流対直流
トーマス・エジソン
1800年代後半、直流は高電圧への変換が容易ではなかった。 そのためエジソンは、個々の近隣地区や市街地に電力を供給する、小規模で地域密着型の発電所からなるシステムを提案した。 電力は発電所から3本の電線、すなわち+110ボルト、0ボルト、-110ボルトを使って配電された。 照明やモーターは、+110Vまたは-110Vのソケットと0V(中性線)の間に接続することができた。 110Vという電圧は、発電所から負荷(住宅やオフィスなど)までの間である程度の電圧降下が起きることを見込んだ値だった。
送電線での電圧降下は考慮に入れられていたものの、発電所は利用者から1マイル以内に設置する必要があった。 この制約により、農村地域での電力供給は非常に困難、あるいは事実上不可能だった。
| 人物 | 説明 |
|---|---|
| ニコラ・テスラ | 交流モーターと交流送電の特許を持っていた発明家 |
| ジョージ・ウェスティングハウス | テスラの特許を買い取り、交流配電システムの実用化を進めた実業家 |
テスラの特許を得たウェスティングハウスは、交流配電システムの完成に取り組んだ。 変圧器を使えば、交流の電圧を数千ボルトまで安価に昇圧し、また使いやすいレベルまで降圧することができた。 電圧が高いほど、同じ電力をより少ない電流で送電できるため、送電線の抵抗による電力損失も少なくなった。 その結果、大規模な発電所を遠く離れた場所に設置しても、より多くの人々や建物に電力を供給できるようになった。
エジソンによる印象操作
その後の数年間、エジソンはアメリカ国内で交流の使用を思いとどまらせるための運動を展開した。 これには州議会への働きかけや、交流に関する誤った情報の流布も含まれていた。 エジソンはまた、交流が直流よりも危険であることを示そうとして、複数の技術者に動物を公開の場で交流によって感電死させるよう指示した。 その危険性を示す試みとして、エジソンの部下だったハロルド・P・ブラウンとアーサー・ケネリーは、ニューヨーク州のために交流を使った初の電気椅子を設計した。
交流の台頭
1891年、ドイツのフランクフルトで国際電気技術博覧会が開催され、三相交流による初の長距離送電が披露された。 この送電は博覧会場の照明やモーターに電力を供給するものだった。 後にゼネラル・エレクトリックとなる会社の代表者数名もこの場に立ち会い、その展示に大いに感銘を受けた。 翌年、ゼネラル・エレクトリックが設立され、交流技術への投資を始めた。
ナイアガラの滝にあるエドワード・ディーン・アダムズ発電所(1896年)
ウェスティングハウスは1893年、ナイアガラの滝の水力を利用する水力発電ダムを建設し、バッファローまで交流を送電する契約を勝ち取った。 このプロジェクトは1896年11月16日に完成し、交流電力がバッファローの産業を支えるようになった。 この出来事は、アメリカにおける直流の衰退を象徴する出来事となった。 ヨーロッパでは220〜240ボルトかつ50Hzの交流規格が採用される一方、北米では120ボルトかつ60Hzが標準となった。
高圧直流送電(HVDC)
スイスの技術者ルネ・チュリーは、1880年代に一連の電動発電機を使い、長距離にわたって直流電力を送電できる高圧直流システムを考案した。 しかし、チュリー式システムはコストと保守の負担が大きく、HVDCはその後ほぼ1世紀にわたって採用されることがなかった。
1970年代に半導体電子工学が発明されたことで、交流と直流の間を経済的に変換することが可能になった。 専用の設備を使えば、高圧の直流電力(800kVに達するものもある)を発生させられるようになった。 ヨーロッパの一部地域では、さまざまな国を電気的に接続するためにHVDC送電線の導入が進められている。
HVDC送電線は、非常に長距離にわたって送電する場合、同等の交流送電線よりも損失が少ない。 さらに、HVDCは異なる交流方式(たとえば50Hzと60Hz)どうしを接続することも可能にする。 こうした利点がある一方で、HVDCシステムは一般的な交流システムに比べてコストが高く、信頼性の面でも劣る。
結局のところ、エジソン、テスラ、ウェスティングハウスの願いはそれぞれかなえられたと言えるかもしれない。 交流と直流は共存し、それぞれの役割を果たしている。
まとめ
これで、交流と直流の違いについて十分に理解できたはずである。 交流は電圧レベルの変換が容易であり、高電圧送電をより現実的なものにしている。 一方、直流はほぼすべての電子機器の中に見られる。 この2つはあまり相性がよくないため、たいていの電子機器をコンセントに接続したいなら、交流を直流に変換する必要があることも覚えておこう。 ここまで理解できれば、交流を含むより複雑な回路や概念にも取り組む準備が整ったはずである。
さらに電子工作の世界を深く学びたいなら、次のチュートリアルも確認してみてほしい。
タグ: 概念、電気工学、電力
出典:Alternating Current (AC) vs. Direct Current (DC)(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
アナログとデジタルの違い
私たちはアナログな世界に生きている。 ものを塗る色は無限に存在し(たとえ私たちの目にはその違いが分からなくても)、耳にできる音色も無限にあり、嗅ぐことができる匂いも無限にある。 これらのアナログな信号すべてに共通しているのは、その無限の可能性である。
デジタルの信号や物体は、離散的あるいは有限の領域を扱う。 つまり、取りうる値の集合が限られているということである。 それは2通りだけのこともあれば、255通り、4,294,967,296通りということもあるが、いずれにせよ∞(無限)ではない。
電子工作に取り組むということは、アナログとデジタル両方の信号、入力、出力を扱うということでもある。 私たちの電子工作プロジェクトは、何らかの形で現実のアナログな世界とやり取りしなければならないが、たいていのマイクロプロセッサやコンピュータ、論理回路は純粋にデジタルな部品である。 この2種類の信号は、いわば異なる電子的な「言語」のようなものであり、両方の言語を話せるバイリンガルな部品もあれば、どちらか一方しか理解できない部品もある。
このチュートリアルでは、デジタル信号とアナログ信号それぞれの基本を、具体例を交えて紹介する。 また、アナログ回路とデジタル回路、そしてそれぞれに使われる部品についても解説する。
アナログとデジタルという概念そのものは独立した話題であり、それほど多くの電子工学の予備知識を必要としない。 とはいえ、まだ読んでいなければ、次のチュートリアルにも目を通しておくとよい。
参考になるチュートリアル:
あわせて、グラフの読み方や、有限集合と無限集合の違いといった数学的な概念も役に立つ。
アナログ信号
信号とは何か
先に進む前に、信号とは何か、特に電子的な信号について少し説明しておこう(交通信号や、伝説のパワートリオによるアルバム、あるいは一般的な意味でのコミュニケーション手段とは区別してほしい)。 ここで言う信号とは、何らかの情報を伝える時間とともに変化する「量」のことである。 電気工学において、時間とともに変化するその「量」とは、たいてい電圧である(電圧でなければ、たいてい電流である)。 つまり信号について語るときは、時間とともに変化する電圧のことだと考えればよい。
信号は、情報を送受信するために機器と機器の間でやり取りされる。 その情報は映像であったり、音声であったり、何らかの形で符号化されたデータであったりする。 信号はたいてい配線を通じて伝送されるが、無線周波数(RF)の電波として空中を伝わることもある。 たとえば音声信号はパソコンのオーディオカードとスピーカーの間でやり取りされ、データ信号はタブレットとWiFiルーターの間を空中を通じてやり取りされる。
アナログ信号のグラフ
信号は時間とともに変化するため、横軸(x軸)に時間を、縦軸(y軸)に電圧を取ってグラフにすると分かりやすい。 信号のグラフを見れば、それがアナログかデジタルかを見分けるのはたいてい簡単である。 アナログ信号の時間対電圧のグラフは、滑らかで連続的になるはずである。
これらの信号は最大値と最小値の範囲に収まっていることが多いが、その範囲の中には依然として無限の値がありうる。 たとえば、コンセントから得られるアナログ電圧は-120Vから+120Vの間に収まっているかもしれないが、分解能を上げていけばいくほど、その信号が実際に取りうる値は無限に存在することが分かる(64.4V、64.42V、64.424Vというように、精度を上げるほど無限に細かい値がありうる)。
アナログ信号の例
映像や音声の伝送には、アナログ信号が使われることが多い。 たとえば古いRCAジャックから出てくるコンポジット映像信号は、たいてい0V〜1.073Vの範囲で符号化されたアナログ信号である。 信号のわずかな変化が、映像の色や位置に大きな影響を与える。
純粋な音声信号もアナログである。 マイクから出てくる信号は、さまざまなアナログの周波数と倍音成分に満ちており、それらが組み合わさって美しい音楽を作り出している。
デジタル信号
デジタル信号は、取りうる値の集合が有限でなければならない。 その集合に含まれる値の数は、2個からとても大きいがそれでも無限ではないある数までの間で、いくらでもありうる。 もっとも一般的なデジタル信号は、たとえば0Vか5Vかというように2通りの値のどちらかを取る。 このような信号のタイミング図は矩形波のような形になる。
あるいは、デジタル信号がアナログ波形を離散的に表現したものであることもある。 遠くから見ると、下の波形は滑らかでアナログのように見えるかもしれないが、近づいてよく見ると、信号が値を近似しようとする小さな離散的な階段状の段差があることが分かる。
これが、アナログ波形とデジタル波形の大きな違いである。 アナログ波形は滑らかで連続的だが、デジタル波形は段階的で、矩形状で、離散的である。
デジタル信号の例
すべての音声や映像の信号がアナログというわけではない。 映像(および音声)用のHDMIや、音声用のMIDI、I2S、AC’97といった標準規格は、いずれもデジタルで伝送される。
集積回路どうしの通信の多くもデジタルである。 シリアル通信、I2C、SPIといったインターフェースは、いずれも符号化された矩形波の連続としてデータを伝送する。
アナログ回路とデジタル回路
アナログ電子回路
抵抗器、コンデンサ、インダクタ、ダイオード、トランジスタ、オペアンプといった基本的な電子部品のほとんどは、本質的にアナログである。 これらの部品だけを組み合わせて作られた回路は、たいていアナログ回路になる。
アナログ回路は、多数の部品を使った非常に洗練された設計になることもあれば、2つの抵抗器を組み合わせただけの分圧回路のように、とても単純なこともある。 とはいえ全般的に、アナログ回路は同じ仕事をデジタルで実現する回路に比べて設計がはるかに難しい。 アナログのラジオ受信機やアナログの電池充電器を設計するには、特別な才能を持つアナログ回路の達人が必要になる。デジタル部品を使えば、こうした設計ははるかに簡単になる。
アナログ回路は、たいていノイズ(電圧の小さく望ましくない変動)の影響を受けやすい。 アナログ信号の電圧レベルのわずかな変化が、処理の過程で大きな誤差を生むことがある。
デジタル電子回路
デジタル回路は、離散的なデジタル信号を使って動作する。 これらの回路はたいてい、トランジスタと論理ゲートの組み合わせでできており、より高いレベルではマイクロコントローラやその他の演算チップで構成される。 パソコンに搭載されているような大きく高性能なプロセッサであれ、小さなマイクロコントローラであれ、たいていのプロセッサはデジタルの領域で動作している。
デジタル回路は、デジタル信号を送るために2進数方式を使うのが一般的である。 このような方式では、2つの異なる電圧をそれぞれ異なるロジックレベルに割り当てる。高い電圧(たいてい5V、3.3V、1.8Vなど)が一方の値を、低い電圧(たいてい0V)がもう一方の値を表す。
デジタル回路は一般に設計しやすいが、同じ仕事をするアナログ回路に比べてコストがやや高くなる傾向がある。
アナログとデジタルの組み合わせ
1つの回路の中にアナログとデジタルの部品が混在しているのは、決して珍しいことではない。 マイクロコントローラはたいていデジタルの塊のような存在だが、アナログ回路とやり取りするための内部回路を備えていることが多い(アナログ-デジタル変換器、パルス幅変調、デジタル-アナログ変換器など)。 アナログ-デジタル変換器(ADC)を使えば、マイクロコントローラはフォトセルや温度センサーのようなアナログセンサーと接続し、アナログ電圧を読み取ることができる。 それほど一般的ではないが、デジタル-アナログ変換器を使えば、マイクロコントローラがアナログ電圧を出力することもでき、これは音を鳴らしたいときなどに便利である。
まとめ
これでアナログ信号とデジタル信号の違いが分かったところで、アナログ-デジタル変換のチュートリアルも確認してみることをおすすめする。 マイクロコントローラや、およそ論理を扱う電子機器全般を扱うということは、たいていの場合デジタルの領域で作業するということでもある。 光や温度を感知したい場合や、マイクロコントローラをさまざまなアナログセンサーと組み合わせたい場合は、そのセンサーが出力するアナログ電圧をデジタルの値に変換する方法を知っておく必要がある。
また、パルス幅変調(PWM)のチュートリアルを読んでみるのもおすすめである。 PWMは、マイクロコントローラがデジタル信号をアナログ信号であるかのように見せかけるために使う仕組みである。
デジタルインターフェースを深く扱う話題としては、次のようなものがある。
一方、アナログの世界をさらに深く知りたいなら、次のチュートリアルも確認してみてほしい。
タグ: 概念、電気工学
出典:Analog vs. Digital(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
2進数
心の準備をしてほしい。 数というごく単純なものについて、これまで当たり前だと思っていた認識が覆されることになる。 これまでの人生では、「100個」のものと言われたら、次のような量を思い浮かべていたはずである。
しかし実際には、次のような量を意味していたのかもしれない。
いや、心配しなくていい。 これは何かの錯覚や思考実験ではなく、単に基数という考え方の違いにすぎない。 あなたはたった今、2進数の世界に足を踏み入れ、基数の異なる数体系に出会ったのである。
数体系と基数
数体系とは、数を表現するための方法である。 私たちは小学校のころからずっと10進数という数体系の心地よい枠組みの中で過ごしてきたが、数体系には他にも数多くの種類がある。 2進数、8進数、16進数、20進数など、基数の異なる数体系は無数に存在するが、電気工学において特に重要なものはそのうちごく一部である。
とりわけよく使われる数体系には、それぞれ固有の名前が付いている。 たとえば10進数はdecimal(10進法)と呼ばれる。 今回取り上げる2進数はbinary(2進法)と呼ばれ、もうひとつよく使われる16進数はhexadecimal(16進法)と呼ばれる。
数の基数は、値の末尾に小さく添えた整数(下付き文字)で表されることが多い。 先ほどの例で言えば、最初の画像は実際には「100₁₀」個であり、2番目の画像は「100₂」個ということになる。 基数を明示することで、値の解釈があいまいになるのを防げる。
なぜ2進数を使うのか
なぜ2進数なのか、と疑問に思うかもしれないが、それを言うならなぜ10進数なのだろうか。 私たちはずっと10進数を使い続けてきたため、日常生活で10進数を採用した理由についてはあまり深く考えたことがないはずである。 指が10本あるからかもしれないし、あるいは古代ローマ人がその属州にこの数え方を強制したからかもしれない。 理由が何であれ、これまでに身につけてきたさまざまな工夫によって、10進数は私たちの生活にしっかりと根付いている。 誰もが10ずつ数えることができるし、大きな数を10の倍数に丸めることさえする。 私たちは10という数にすっかり夢中なのである。
一方、コンピュータや電子機器には指も足の指もない。 もっとも基本的なレベルでは、これらは何かの状態をたった2通りの方法でしか表現できない。 オンかオフか、ハイかローか、1か0かである。 そのため、ほぼすべての電子機器は、数を保存し、操作し、計算するために2進数、つまり基数2の数体系に依存している。
電子機器がこれほど2進数に依存しているということは、2進数の仕組みを理解しておくことが重要だということでもある。 コンピュータプログラムのいたるところで、2進数やその親戚である16進数に出会うことになる。 デジタルロジック回路や、その他の非常に低レベルな電子回路の解析にも、2進数の知識が大いに役立つ。
このチュートリアルでは、10進数に対して行えることは、2進数に対しても行えるということが分かるはずである。 中には2進数のほうが簡単な演算もあれば(他方で面倒になる演算もあるが)、そういったことも含めてこのチュートリアルで扱っていく。
このチュートリアルは、かなり抽象的な概念にまで踏み込んでいく。 内容の多くは、足し算、掛け算、割り算(余りを含む)、指数といった数学的な概念の上に成り立っている。
電子工作の予備知識は必要ない(ほとんどの人がすでに知っている10進数の仕組みを理解していれば十分である)が、このチュートリアルではArduinoのプログラミングにおける2進数の使われ方にも触れるため、データ型についての知識があると役立つ場面がある。 また、デジタルロジックの知識があると、2進数についての理解をさらに深めるのに役立つ。
数え方と変換
各数体系の基数はradix(基数)とも呼ばれる。 10進数の基数は10であり、2進数の基数は2である。 基数によって、その数体系を成り立たせるために必要な記号の種類の数が決まる。 10進数では、0個からちょうど10個未満までの値を表すために、0、1、2、3、4、5、6、7、8、9という10種類の数字表記を使う。 これらの記号はそれぞれ、非常に明確で標準化された値を表している。
2進数で使える記号はたった2種類、0と1だけである。 しかしこの2種類の記号だけを使って、10進数で表せるどんな数でも作り出すことができる。
2進数での数え方
10進数であれば、眠っていてもできるほど際限なく数えられるが、2進数ではどう数えればよいだろうか。 2進数における0と1は、見慣れた0と1そのままである。 そこから先が、いよいよ2進数らしくなってくる。
使える数字が2種類しかないため、10進数のときと同じように、使える記号を使い果たしたら1桁左にずれ、そこに1を加えて、それより右側の桁はすべて0に戻す必要がある。 つまり1の次は10になり、次に11、そして100になる。 実際に数えてみよう。
| 10進数 | 2進数 | 10進数 | 2進数 | |
|---|---|---|---|---|
| 0 | 0 | 16 | 10000 | |
| 1 | 1 | 17 | 10001 | |
| 2 | 10 | 18 | 10010 | |
| 3 | 11 | 19 | 10011 | |
| 4 | 100 | 20 | 10100 | |
| 5 | 101 | 21 | 10101 | |
| 6 | 110 | 22 | 10110 | |
| 7 | 111 | 23 | 10111 | |
| 8 | 1000 | 24 | 11000 | |
| 9 | 1001 | 25 | 11001 | |
| 10 | 1010 | 26 | 11010 | |
| 11 | 1011 | 27 | 11011 | |
| 12 | 1100 | 28 | 11100 | |
| 13 | 1101 | 29 | 11101 | |
| 14 | 1110 | 30 | 11110 | |
| 15 | 1111 | 31 | 11111 |
パターンが見えてきただろうか。 続いて、2進数を10進数に変換する方法を見ていこう。
2進数を10進数に変換する
2進数から10進数への変換方法はひとつではない。 ここでは2つの方法を紹介する。 ひとつは数式を使う「数学寄り」の方法、もうひとつはより視覚的な方法である。 両方紹介するが、1つ目の方法で使う用語が難しく感じたら、2つ目の方法まで読み飛ばしてもかまわない。
方法1
2進数を10進数に変換するのに使える便利な関数がある。
各桁の値に、その桁の重み(2の累乗)を掛けて、すべて足し合わせるという方法である。 この式には4つの重要な要素がある。
- 各桁の数字:これはおなじみの0と1のことだが、2進数では必ず0か1のどちらかでなければならない。
- 桁の位置:これも重要な要素である。位置は一番右の桁を0として始まり、この1または0が最下位桁になる。左に1つ移動するごとに、その桁の重要度(位取り)も1つずつ増していく。
- 2進数の長さ:これは変数nの値によって決まる(正確には「n+1」)。たとえば101という2進数の長さは3であり、10011110のようなより大きな数の長さは8である。
- 重み:各桁には、2ⁿ、2ⁿ⁻¹、…、2¹のような重みが掛けられる。一番右の重みである2⁰は1に等しく、1桁左に移動するごとに2、4、8、16、32、64、128、256……と続いていく。2の累乗は2進数においてきわめて重要であり、すぐに馴染み深いものになるはずである。
nや指数の記号を取り除いて、8桁分の2進数の位取り記数法の式を具体的に書き出してみよう。
値 = a7×2⁷ + a6×2⁶ + a5×2⁵ + a4×2⁴ + a3×2³ + a2×2² + a1×2¹ + a0×2⁰
さらに一歩進めて、各桁に具体的な数字を当てはめてみよう。 たとえば2進数10011011があったとすると、各桁の値は次のようになる。
念のため、このチュートリアルでは一番右の値を常に最下位桁とすることを前提とする。 最下位桁とは、数全体の値への影響がもっとも小さい桁のことである。 桁の重要度をどちらの端から数えるかは、実は取り決めの問題であり、これはエンディアンと呼ばれる規則の一部である。 2進数は、最上位桁が一番左にある「ビッグエンディアン」と、このチュートリアルで採用する「リトルエンディアン」のどちらの方式でも表せる(2進数はたいていリトルエンディアンで表記されているのをよく見かけるはずである)。
それでは、これらの桁の値を先ほどの2進数から10進数への変換式に当てはめてみよう。 この数はリトルエンディアンなので、最下位の値には一番小さい重みを掛けることになる。
1×2⁷ + 0×2⁶ + 0×2⁵ + 1×2⁴ + 1×2³ + 0×2² + 1×2¹ + 1×2⁰
これを整理すると、10進数の値が求められる。
= 1×128 + 0×64 + 0×32 + 1×16 + 1×8 + 0×4 + 1×2 + 1×1
= 128 + 16 + 8 + 2 + 1
= 155
10進数に比べて2進数で数を表すにははるかに多くの桁数が必要になることにすぐ気づくはずだが、それでもたった2種類の数字だけですべてを表せているのである。
方法2
2進数を10進数に変換するもうひとつの、より視覚的な方法は、各桁の1と0を「箱」に振り分けることから始まる。 それぞれの箱には、おなじみの1、2、4、8、16……という、2の累乗の重みが割り当てられている。 8桁分の箱を並べると、次のようになる。
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|
先ほどの2進数10011011をこれらの箱に振り分けると、次のようになる。
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
値が0になっている箱は、線を引いて取り除いてしまおう。
| 128 | 16 | 8 | 2 | 1 |
|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 |
残った重みをすべて足し合わせれば、求める数が得られる。
128 + 16 + 8 + 2 + 1 = 155
10進数から2進数への変換
2進数から10進数への変換と同じく、10進数から2進数への変換にも複数の方法がある。 最初の方法は割り算と余りを使うもので、2つ目は引き算を使うものである。 両方試してみて、使いやすいほうを選んでほしい。
方法1
10進数を2進数に変換するのは、その逆ほど単純ではない。 この変換では、10進数を0になるまで2で繰り返し割っていく。 割るたびに得られる余りが、作成する2進数の1桁になる。
余りの求め方を忘れてしまった場合は、2で割っているので、割られる数が偶数なら余りは0、奇数なら余りは1になることを思い出してほしい。
たとえば155を2進数に変換する場合は、次のような手順になる。
155 ÷ 2 = 77 余り 1(一番右の桁、1桁目)
77 ÷ 2 = 38 余り 1(2桁目)
38 ÷ 2 = 19 余り 0(3桁目)
19 ÷ 2 = 9 余り 1
9 ÷ 2 = 4 余り 1
4 ÷ 2 = 2 余り 0
2 ÷ 2 = 1 余り 0
1 ÷ 2 = 0 余り 1(8桁目)
最初に得られた余りが最下位(一番右)の桁になるため、上から下へと読んでいけば、右から左へと2進数を組み立てられる:10011011。 先ほどの例と照らし合わせてみてほしい。ぴったり一致するはずである。
方法2
割り算と余りを求める方法が性に合わない場合は、もっと簡単な方法もある。 まず、変換したい10進数より小さい範囲でもっとも大きい2の累乗を見つけ、それを10進数から引く。 そして、0になるまで、可能な限り大きい2の累乗を使ってこの引き算を繰り返す。 引き算に使われた重みの位置には2進数の1が、使われなかった位置には0が入る。
先ほどの例を続けると、155は128で引くことができ、27が残る。
155 - 128 = 27
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 |
新しく得られた27は、64でも32でも引くことができない。 この2つの位置には0が入る。 16では引くことができ、11が残る。
27 - 16 = 11
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 |
11は8で引くことができ、3が残る。 その後、4では引くことができない。
11 - 8 = 3
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 1 | 0 |
3は2で引くことができ、1が残る。 そして最後に、1は1で引くことができ、0になる。
3 - 2 = 1
1 - 1 = 0
| 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
|---|---|---|---|---|---|---|---|
| 1 | 0 | 0 | 1 | 1 | 0 | 1 | 1 |
これで2進数が求められた。
変換用の計算ツール
幸いなことに、2進数から10進数へ、あるいはその逆を変換してくれる計算ツールはインターネット上に数多く存在する。 手計算で変換する必要に迫られることは、実際にはそう多くない。
ビット、ニブル、バイト
2進数の構造について説明する中で、数の長さについて簡単に触れた。 2進数の長さとは、その数に含まれる1と0の個数のことである。
よく使われる2進数の長さ
2進数の値は、よく一定の桁数(1と0の個数)にまとめられ、この桁数を数の長さと呼ぶ。 2進数の長さとしてよく使われるのが、ビット、ニブル、バイトである。 2進数の中の1つの1または0をビットと呼ぶ。 そこから、4ビットのまとまりをニブル、8ビットのまとまりをバイトと呼ぶ。
バイトは、2進数を扱う際によく耳にする言葉である。 プロセッサはすべて、あらかじめ決められたビット数で動作するように作られており、その長さはたいていバイトの倍数、つまり8、16、32、64ビットなどになっている。
まとめると、次のようになる。
| 長さ | 名称 | 例 |
|---|---|---|
| 1 | ビット | 0 |
| 4 | ニブル | 1011 |
| 8 | バイト | 10110101 |
ワードという言葉も、長さを表す用語として時折使われる。 ワードの語感はニブルやバイトほど親しみやすくはなく、意味もややあいまいである。 ワードの長さは、たいていプロセッサのアーキテクチャによって決まる。 16ビットのこともあれば、32ビット、64ビット、あるいはそれ以上のこともある。
先頭のゼロによる桁揃え
2進数の値を1バイト分(あるいはそれ以上)の桁数で表そうとすると、数を8桁にするために先頭に0を追加する必要が出てくることがある。 先頭のゼロとは、数の中でもっとも上位にある1のビットより左側に付け加えられた、1つ以上の0のことである。 10進数では先頭にゼロを付けることはあまりない。007と書いても、7という値について何か新しい情報が加わるわけではない(むしろ別の意味に取られるかもしれない)。
2進数の値に先頭のゼロを付けることは必須ではないが、その数のビット長についての情報を伝えるのに役立つ。 たとえば、1という数を00000001と表記することで、これがバイト単位で扱われていることを示せる。 どちらの数も同じ値を表しているが、前に7つの0が付いた表記のほうが、その値のビット長についての情報を余分に持っていることになる。
ビット単位の演算子
2進数の値を操作する方法はいくつもある。 10進数と同じように、2進数に対しても標準的な数学演算、つまり足し算、引き算、掛け算、割り算を行うことができる。 また、ビット単位の演算子を使えば、2進数の値の個々のビットを操作することもできる。
ビット単位の演算子は、1つまたは2つの2進数全体に対して、ビットごとに処理を行う関数である。 これらはブール論理を使って2進数の記号の集合に対して働くもので、電子工学とプログラミングの両方で幅広く使われている。
補数(NOT)
2進数の値の補数を求めるとは、その値のあらゆる要素をちょうど正反対にすることに等しい。 補数関数は、ある数を見て、すべての1を0に、すべての0を1に変える。 補数演算子はNOTとも呼ばれる。
たとえば10110101の補数を求めると、次のようになる。
NOT 10110101(10進数で181)
-------- =
01001010(10進数で74)
NOTは、1つの2進数の値だけに作用する唯一のビット単位演算子である。
OR
ORは2つの数を受け取り、それらの和集合を作り出す。 2つの2進数をORで演算する手順は次のとおりである。 まず、それぞれの数のビットの位置をそろえ、同じ位置にあるビットどうしを比較する。 それぞれのビットの比較において、どちらか一方でも、あるいは両方が1であれば、その桁の結果は1になる。 両方の値がその位置で0であれば、結果もその位置で0になる。
ORで起こりうる4通りの組み合わせと、その結果は次のとおりである。
- 0 OR 0 = 0
- 0 OR 1 = 1
- 1 OR 0 = 1
- 1 OR 1 = 1
たとえば10011010と01000110のORを求めるには、それぞれの数をビットごとにそろえる。 どちらか一方、あるいは両方の数の同じ桁に1があれば、結果もその桁は1になる。
10011010
OR 01000110
-------- =
11011110
ORの演算は、桁上がりのない2進数の足し算だと考えるとよい。 0足す0は0だが、1に何を足しても結果は1になる。
AND
ANDは2つの数を受け取り、それらの論理積を作り出す。 ANDは、演算対象となる両方の値がともに1である場合にのみ、1を生み出す。
2つの2進数をANDで演算する手順は、ORの場合とよく似ている。 まず、それぞれの数のビットの位置をそろえ、同じ位置にあるビットどうしを比較する。 それぞれのビットの比較において、どちらか一方でも、あるいは両方が0であれば、その桁の結果は0になる。 両方の値がその位置で1であれば、結果もその位置で1になる。
ANDで起こりうる4通りの組み合わせと、その結果は次のとおりである。
- 0 AND 0 = 0
- 0 AND 1 = 0
- 1 AND 0 = 0
- 1 AND 1 = 1
たとえば10011010と01000110のANDを求めるには、それぞれの値をそろえる。 それぞれの桁の結果は、その桁の両方のビットがともに1である場合にのみ1になる。
10011010
AND 01000110
-------- =
00000010
ANDは、掛け算のようなものだと考えるとよい。 0を掛ければ、結果は必ず0になる。
XOR
XORは排他的論理和である。 XORは通常のORと似た動作をするが、どちらか一方だけが1である場合にのみ1を生み出すという点が異なる。
XORで起こりうる4通りの組み合わせと、その結果は次のとおりである。
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0
たとえば10011010と01000110のXORを求めると、次のようになる。
10011010
XOR 01000110
-------- =
11011100
2桁目に注目してほしい。 2つの1どうしをXORした結果、0になっている。
ビットシフト
ビットシフトは、これまで紹介してきたようなビット単位の演算子とは厳密には異なるが、1つの2進数の値を操作するのに便利な手段である。
ビットシフトには2つの要素がある。シフトさせる方向と量である。 数は左右どちらの方向にもシフトでき、1ビットだけ、あるいは複数ビットまとめてシフトすることもできる。
右方向にシフトすると、数の最下位ビット(右端)が1つ以上切り捨てられ、そのまま失われる。 ビット長をそろえるために、先頭にゼロを追加することもできる。
たとえば10011010を右に2ビットシフトすると、次のようになる。
右に2ビットシフト 10011010(10進数で154)
-------- =
00100110(10進数で38)
左方向にシフトすると、すべてのビットが数の最上位側(左側)へと押し出される。 シフトのたびに、最下位ビットの位置にゼロが追加される。
たとえば10011010を左に1ビットシフトすると、次のようになる。
左に1ビットシフト 10011010(10進数で154)
-------- =
100110100(10進数で308)
この単純なビットシフトは、実は比較的複雑な数学的な操作を行っている。 左にnビットシフトすると、その数は2ⁿ倍される(先ほどの例で入力値が2倍になっていたことに気づいただろうか)。 一方、右にnビットシフトすると、その数は2ⁿで整数除算される。 右シフトによる除算は少し奇妙に感じられることがある。 シフトによる除算で生じる端数は切り捨てられるため、154を右に2回シフトすると、154÷4=38.5ではなく38になる。 ビットシフトは、2、4、8などの数で割ったり掛けたりするための、非常に高速な手段になりうる。
これらのビット単位の演算子は、2進数に対して標準的な数学演算を行うために必要な道具のほとんどを提供してくれる。
プログラミングにおける2進数
もっとも基本的なレベルでは、2進数があらゆる電子機器を動かしている。 そのため、コンピュータプログラミングの中で2進数に出会うのは避けられないことである。
プログラム内での2進数の表現
Arduinoをはじめとするたいていのプログラミング言語では、2進数の前に0bを付けることで2進数として表現できる。
この0bが付いていなければ、その数は単なる10進数として扱われる。
たとえば、コード上で次の2つの数はまったく異なる値になる。
a = 0b01101010; // 10進数で106
c = 01101010; // 10進数で1,101,010(0bの接頭辞がないため10進数として扱われる)
プログラミングにおけるビット単位の演算子
前のセクションで紹介したビット単位の演算子は、いずれもプログラミング言語の中で実行できる。
ANDビット演算子
2つの2進数の値をANDで演算するには、アンパサンド(&)演算子を使う。
たとえば次のようになる。
x = 0b10011010 & 0b01000110;
// xは0b00000010になる
2進数の値をANDで演算することは、値にビットマスクを適用したり、ある2進数の特定のビットが1かどうかを調べたりするのに役立つ。
このANDビット演算子は、二重アンパサンド(&&)を使い、複数の論理式の入力に基づいて真偽値を生み出すAND条件演算子と混同しないように注意する必要がある。
ORビット演算子
ORビット演算子はパイプ(|、Shift+バックスラッシュのキーで、キーボードのBackspaceの下にあることが多い)である。
たとえば次のようになる。
y = 0b10011010 | 0b01000110;
// yは0b11011110になる
2進数の値をORで演算することは、数の中の1つ以上のビットを1に設定したいときに役立つ。
ANDのときと同じく、ORビット演算子を二重パイプ(||)のOR条件演算子と混同しないよう注意しよう。
NOTビット演算子
NOTビット演算子はチルダ(~、Shift+バッククォートのキーで、Tabキーの上にあることが多い)である。
たとえば次のようになる。
z = ~(0b10100110);
// zは0b01011001になる
XORビット演算子
2つの値をXORで演算するには、両者の間にキャレット(^)を置く。
r = 0b10011010 ^ 0b01000110;
// rは0b11011100になる
XORは、ビットが異なっているかどうかを調べるのに便利である。 なぜなら、片方が0でもう片方が1の場合にのみ1という結果になるからである。
左シフトと右シフト
2進数をnビット左または右にシフトするには、<<nまたは>>n演算子を使う。
いくつか例を見てみよう。
i = 0b10100101 << 4; // iを左に4ビットシフト
// iは0b101001010000になる
j = 0b10010010 >> 2; // jを右に2ビットシフト
// jは0b00100100になる
シフトは、2の累乗で掛け算や割り算をするための、特に効率のよい方法である。 先ほどの例では、左に4ビットシフトすることでその値は2⁴(16)倍になっている。 2つ目の例では、右に2ビットシフトすることでその数は2²(4)で割られている。
まとめ
2進数は、電子工学におけるあらゆる計算、演算、処理の土台となるものである。 ここからさらに学べることは数多くある。
2進数や、その他の重要な数体系についてさらに学びたいなら、次のようなキットやチュートリアルもおすすめである。
- バイナリブラスターの組み立てガイド:2進数の変換を練習したいなら、Binary Blaster Kitが役立つ。これははんだ付けが必要なキットである。組み立てたら、それを使って2進数、16進数、10進数の関係についての理解度を試すことができる。
- 16進数:この16進の数体系と、2進数や10進数との関係について学べる。
10進数と2進数の変換ができるようになったら、その知識を、文字が世界共通の方式でどのように符号化されているかを理解することにも応用できる。
また、身につけた知識を、低レベルな回路やICの理解にも応用できる。
さらに、通信プロトコルの中で2進数がどのような役割を果たしているかも見てみるとよい。
タグ: 通信、コンピュータ工学、プログラミング
出典:Binary(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
アナログ-デジタル変換 (ADC)
マイコンが検出できるのは、基本的には二値の信号である。 ボタンが押されているか、いないか。 これがデジタル信号である。 5ボルトで動作するマイコンは、0ボルト(0V)を2進数の0、5ボルト(5V)を2進数の1として認識する。 しかし現実の世界はそれほど単純ではなく、その中間の値をとる。 信号が2.72Vだったら、それは0なのか1なのか。 このように変化し続ける信号を測定する必要がある場面は多く、こうした信号をアナログ信号と呼ぶ。 5V系のアナログセンサーは、0.01Vや4.99V、あるいはその間のどんな値も出力しうる。 幸い、ほとんどすべてのマイコンには、こうした電圧をプログラムの中で判断材料として使える値に変換する仕組みが内蔵されている。
このチュートリアルを読む前に知っておくとよい話題:
- 電圧、電流、抵抗とオームの法則
- 2進数
- アナログとデジタルの違い
- Arduinoの
analogRead() - 分圧回路
- テスターの使い方
- プロジェクトへの電源供給
ADCとは何か
ADC(Analog to Digital Converter、アナログ-デジタル変換器)は、ピンにかかっているアナログ電圧をデジタルな数値に変換してくれる、非常に便利な機能である。 アナログの世界からデジタルの世界へと変換することで、身の回りのアナログな世界と電子回路とのあいだをつなげられるようになる。
マイコンのすべてのピンがアナログ-デジタル変換に対応しているわけではない。 Arduinoのボードでは、ラベルの先頭に「A」が付いたピン(A0からA5まで)が、アナログ電圧を読み取れるピンであることを示している。
ADCの性能はマイコンによって大きく異なる。 Arduinoに搭載されているADCは10ビットADCであり、1,024段階(2^10)の離散的なアナログレベルを検出できる。 マイコンによっては8ビットADC(2^8 = 256段階)のものもあれば、16ビットADC(2^16 = 65,536段階)のものもある。
ADCの内部動作はかなり複雑である。 実現方法にはいくつかの方式があるが(一覧はWikipediaを参照)、よく使われる方式の1つは、アナログ電圧で内部のコンデンサを充電し、それを内部の抵抗を通して放電するのにかかる時間を測るという方法である。 マイコンは、コンデンサが放電しきるまでに経過したクロックサイクルの数を数えており、ADCの変換が完了した時点で返される値は、このクロックサイクル数に基づいている。
ADCの値と電圧の関係
ADCが返す値は比率としての値である。 つまりADCは、5Vを1023として扱い、5V未満の電圧はすべて5Vと1023の間の比率として表す。
Arduinoの10ビットADCを5V系で使う場合が多いことを踏まえると、この関係は次の式に単純化できる。
\[ \text{ADCの値} = \left(\frac{\text{読み取った電圧}}{5,\text{V}}\right) \times 1023 \]
システムの電源電圧が3.3Vなら、式の5Vを3.3Vに置き換えるだけでよい。 たとえば3.3V系でADCが512という値を返したとき、実際の電圧はおよそ1.65Vである。
逆に、アナログ電圧が2.12Vのとき、ADCはどんな値を返すだろうか。 先の式をADCの値について解くと、
\[ \text{ADCの値} = \left(\frac{2.12,\text{V}}{5,\text{V}}\right) \times 1023 \approx 434 \]
という計算になり、ADCはおよそ434を返すはずだとわかる。
Arduinoを使ったADCの例
実際にArduinoを使ってアナログ電圧を検出してみよう。 トリムポット(可変抵抗)や光センサー、あるいは簡単な分圧回路を使って電圧を作り出す。 ここでは例として、簡単なトリムポットの回路を組む。
まず、ピンを入力として定義する必要がある。 回路図に合わせて、ここではA3ピンを使う。
pinMode(A3, INPUT);
続いて、analogRead() コマンドでアナログ-デジタル変換を行う。
int x = analogRead(A3); // A3ピンのアナログ値をxに読み込む
戻り値として x に格納されるのは、0から1023までのいずれかの値である。
Arduinoは10ビットのADCを持つため、2^10 = 1024段階を表現できる。
この値をintに格納するのは、x が10ビットであり、バイト型(8ビット)には収まらない大きさだからである。
値が変化する様子を確認するために、シリアルに出力してみる。
Serial.print("Analog value: ");
Serial.println(x);
アナログ電圧を変化させると、x の値もそれに応じて変化する。
たとえば x が334と表示され、Arduinoが5Vで動作しているとすると、実際の電圧はいくらになるだろうか。
テスター(デジタルマルチメーター)を取り出して実際の電圧を測ってみると、およそ1.63Vになっているはずである。
これで、Arduinoを使った自作のデジタルマルチメーターができあがったことになる。
配線を間違えるとどうなるか
アナログセンサーを通常の(デジタル用の)ピンにつないだらどうなるか。
悪いことは何も起きない。
ただし、analogRead を正しく実行できなくなる。
int x = analogRead(8); // デジタルピン8でアナログ値を読もうとしている(これはうまくいかない)
このコードはコンパイルは通るが、x には意味のない値が入る。
デジタルセンサーをアナログピンにつないだらどうなるか。 これも同様に、壊れることはない。 ボタンのようなデジタル信号をアナログ-デジタル変換すると、ADCの値はほぼ1023(5V、つまり2進数の1に相当)か、ほぼ0(0V、つまり2進数の0に相当)のどちらかに偏った値になるはずである。
まとめ
アナログ-デジタル変換を学ぶことは、電子工作において大きな意味を持つ。 この重要な概念を理解したところで、ADCを利用しているさまざまなプロジェクトやセンサーにも目を向けてみてほしい。
- 加速度センサーやジャイロセンサーの一部にはアナログ出力のものがあり、使える値として読み取るにはADCが必要になる。
- PWMは、アナログ入力とは逆の、いわばアナログ出力に相当する仕組みである。
- INA169のようなICを使うと、ADCで電流を検出できる。
- 分圧回路とADCを組み合わせれば、トリムポットやジョイスティック、スライダー、感圧抵抗(FSR)など、さまざまなセンサーや可変部品を読み取れる。
- ArduinoにはADCの値を別の範囲に変換する
map()関数がある。
タグ: Arduino、概念、電気工学
出典:Analog to Digital Conversion(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
デジタルロジック
デジタルロジック、あるいはブール論理は、現代のあらゆるコンピュータシステムを支える基本的な概念である。 簡単に言えば、比較的単純な「はい/いいえ」の質問を組み合わせて、非常に複雑な判断を下せるようにするルールの体系である。
このチュートリアルでは、次のようなことを学ぶ。
デジタル回路
デジタルロジック回路は、組み合わせ回路と順序回路という2つのカテゴリーに分けられる。 組み合わせ回路は「即座に」変化する。入力が変化した瞬間、回路の出力もそれに応じて変化する(もちろん、信号が回路素子の中を伝わるのに多少の時間がかかるため、実際にはわずかな遅延がある)。 一方、順序回路にはクロック信号があり、変化はクロックのエッジ(立ち上がりや立ち下がり)に合わせて回路の各段階を伝わっていく。
一般に、順序回路は、クロック信号によって動作するメモリ素子で区切られた、組み合わせ論理のブロックの集まりとして構成される。
プログラミング
デジタルロジックはプログラミングにおいても重要である。 デジタルロジックを理解することで、プログラムの中で複雑な意思決定が可能になる。
プログラミングには理解しておくべき細かな注意点もいくつかあるが、それについては基本を押さえたあとで扱う。
参考になるチュートリアル:
まだ読んでいなければ、2進数のチュートリアルに目を通しておくとよい。 その中にもブール論理について少し触れている部分があるが、ここではその話題をさらに深く掘り下げていく。 このほかにも、始める前に理解しておくとよい話題がいくつかある。
組み合わせ論理
組み合わせ回路は、5種類の基本的な論理ゲートから構成される。
- ANDゲート:両方の入力が1のときに出力が1になる
- ORゲート:少なくとも一方の入力が1のときに出力が1になる
- XORゲート:どちらか一方だけの入力が1のときに出力が1になる
- NANDゲート:少なくとも一方の入力が0のときに出力が1になる
- NORゲート:両方の入力が0のときに出力が1になる
デジタルロジックにはもうひとつ、6番目の要素としてインバータ(NOTゲートと呼ばれることもある)がある。 インバータは何の判断も下さないため、厳密にはゲートとは言えない。 インバータの出力は、入力が0であれば1に、入力が1であれば0になる。
先ほどの図について、いくつか補足しておく。
- ゲートの名前自体は印字されないことが多い。記号だけで識別できると考えられているためである。
- A、B、Qのような端子表記は標準的なものだが、システム全体の入出力に関わらない信号については、論理回路図ではたいてい省略される。
- 入力が2つの素子が標準的だが、まれに3つ以上の入力を持つ素子も見かける。ただし出力は常に1つだけである。
デジタルロジック回路は、たいていこの6つの記号を使って表され、入力は左側、出力は右側に配置される。 入力どうしを結線することはできるが、出力どうしを結線してはならない。出力は必ず他の入力に接続する。 ただし、1つの出力を複数の入力に接続することは可能である。
真理値表
先ほどの説明だけでも個々のブロックの機能を表すには十分だが、もっと便利な道具がある。真理値表である。 真理値表とは、ある回路に入力しうる値の組み合わせに対して、その出力がどうなるかを説明する単純な表である。 先ほどの6つの主要な素子について、真理値表を示す。
真理値表は、頭が痛くなるほど多くの入力や出力があっても、いくらでも拡張できる。 4入力の回路とその真理値表は、次のようになる。
ブール論理の記法
論理演算を表す式を、簡潔な数学的表記で書けると便利である。 そのために、AND、OR、XOR、NOTという固有の演算にはそれぞれ数学的な記号が用意されている。
- AとBのANDは、ABと書く(A・Bと書かれることもある)
- AとBのORは、A + Bと書く
- AとBのXORは、A ⊕ Bと書く
- Aの否定(NOT)は、A′あるいはAの上に横線を引いて表す
このリストには2つ、NANDとNORが抜けていることに気づいただろうか。 これらはたいてい、対応する表記全体を否定することで表す。
- AとBのNANDは、(AB)′、あるいは(A・B)′と書く
- AとBのNORは、(A + B)′と書く
順序論理
組み合わせ論理は便利だが、順序回路を組み合わせなければ、現代のコンピューティングは成り立たない。
順序回路は、論理システムに「記憶」を持たせるものである。 先ほど触れたように、組み合わせ論理は遅延を伴って結果を出す。 その遅延の大きさは、部品の製造プロセス、シリコンの温度、回路の複雑さなど、非常に多くの要因によって変わってくる。 もしある回路の出力が、別の2つの組み合わせ回路の結果に依存していて、その結果が異なるタイミングで届いた場合(実際の世界ではよく起こることである)、その組み合わせ回路は一瞬「グリッチ」を起こし、意図した動作とは異なる結果を一時的に出力してしまうことがある。
一方、順序回路は特定のタイミングでのみ出力をサンプリングし、伝搬させる。 そのタイミングの間に入力が変化しても、それは無視される。 このサンプリングのタイミングは、たいてい回路全体で同期されており、「クロック」と呼ばれる。 コンピュータの「速度」として語られる数値は、まさにこのクロックの値である。 グローバルな同期クロックに頼らない「非同期」の順序回路を設計することも可能ではあるが、そうしたシステムには大きな難しさが伴うため、ここでは扱わない。
余談だが、デジタルロジックのどの部分にも、最小遅延時間と最大遅延時間という2つの特性値がある。 回路が最小遅延時間を満たせない場合(つまり本来より速く動作してしまう場合)、その回路は修復不可能な形で故障する。 その回路がコンピュータのCPUのようなより大きな装置の一部であれば、装置全体が使い物にならなくなる。 最大遅延時間を満たせない場合(つまり本来より遅く動作する場合)は、システム内でもっとも遅い回路に合わせてクロック速度を落とすことで対応できる。 最大遅延時間は、回路を構成するシリコンの温度が上がるにつれて増加する傾向があり、これがコンピュータが過熱したときや、オーバークロックのようにクロック速度を上げすぎたときに不安定になる理由である。
順序回路の素子
組み合わせ論理と同じく、順序回路にもその構成要素となるいくつかの基本的な回路素子がある。 これらのブロックは、出力からのフィードバックを使って入力を安定させることで、基本的な組み合わせ素子から構成されている。 これには「ラッチ」と「フリップフロップ」という2つの「種類」がある。 これらの用語はしばしば同じ意味で使われるが、ラッチはクロックによる制御がないため一般的にはあまり実用性が高くなく、ここではフリップフロップに焦点を当てる。
D型フリップフロップ
もっとも単純なタイプのフリップフロップがD型である。 D型フリップフロップの動作は単純で、クロックのエッジ(通常は立ち上がりだが、内蔵のインバータによって立ち下がりでクロックされるものもある)が来ると、入力の値が出力にラッチされる。
たいてい、クロック入力は記号に食い込む小さな三角形で示される。 たいていのフリップフロップは、「通常」の出力と、その反転出力という2つの出力を持つ。
T型フリップフロップ
D型よりもわずかに複雑なのがT型である。 「T」は「トグル(toggle)」の頭文字である。 クロックのエッジが来たとき、入力Tが1であれば出力の状態が反転する。 入力が0であれば、出力はそのまま変わらない。 D型と同じく、出力の反転出力もたいてい用意されている。
T型フリップフロップの便利な使い道のひとつが、クロック分周回路である。 Tを常に1にしておくと、出力はクロック周波数を2で割ったものになる。 T型フリップフロップを連ねることで、装置のマスタークロックからより遅いクロックを作り出すことができる。
JK型フリップフロップ
最後に紹介するのがJK型である。 JK型は、3つのうち唯一、真理値表がないと説明が難しいタイプである。 J、Kという2つの入力を持ち、その組み合わせに応じて、出力をそのまま維持したり、セットしたり、クリアしたり、反転させたりできる。 もちろん、どのフリップフロップでも同じだが、重要なのはクロックが来た瞬間の入力の値だけである。
セットアップ時間、ホールド時間、伝搬遅延
すべての順序回路には、セットアップ時間とホールド時間、そして伝搬遅延と呼ばれる値がある。 この3つを理解することは、期待どおりに動作する順序回路を設計するうえで欠かせない。
セットアップ時間とは、クロックの立ち上がりエッジが発生する前に、フリップフロップが正しくデータをラッチするために信号が入力に到達していなければならない最小の時間のことである。 同様に、ホールド時間とは、クロックの立ち上がりエッジが発生したあと、信号が変化するまでに安定した状態を保っていなければならない最小の時間のことである。
セットアップ時間とホールド時間は最小値として示されるのに対し、伝搬遅延は最大値として示される。 簡単に言えば、伝搬遅延とは、クロックの立ち下がりエッジのあと、出力に信号が現れるまでにかかりうる最大の時間のことである。 次の図はこれらの関係を示したものである。
上の図では、信号の遷移がわずかに斜めに描かれていることに注目してほしい。 これには2つの意味がある。ひとつは、クロックやデータのエッジは実際には決して直角にはならず、常にいくらかの立ち上がり時間や立ち下がり時間を持つことを思い出させるためであり、もうひとつは、各時間を示す垂直線が信号のどこと交わっているかを見やすくするためである。
この3つの値の組み合わせによって、その装置が使用できる最高のクロック速度が決まる。 ある部品の伝搬遅延と、回路内の次の部品のセットアップ時間の合計が、あるクロックパルスの立ち下がりエッジから次のクロックパルスの立ち上がりエッジまでの時間を超えてしまうと、2番目の部品の入力でデータが安定せず、予期しない動作を引き起こすことになる。
メタステーブル状態
セットアップ時間とホールド時間を守らないと、「メタステーブル状態」と呼ばれる問題が発生することがある。 回路がメタステーブル状態にあるとき、フリップフロップの出力は2つの正常な状態の間を、回路のクロック速度よりもはるかに速い速度で激しく振動することがある。
メタステーブル状態の問題は、動作の誤りから、消費電流の増加によるチップの損傷にまで及ぶことがある。 メタステーブル状態はたいてい自然に解消するが、解消するころにはシステムが完全に未知の状態になっていることがあり、正常な動作を取り戻すには完全なリセットが必要になる場合もある。
メタステーブル状態がよく発生するのは、信号がクロックドメインをまたぐとき、つまり異なるクロック源で動作している装置間で信号がやり取りされるときである。 クロックが同期していないため(たとえ公称の周波数が同じであっても、現実にはわずかな違いがある)、いずれクロックのエッジとデータのエッジが危険なほど近づいてしまい、セットアップ時間違反を引き起こすことになる。 この問題に対する簡単な対策は、システムへのすべての入力を、2段に連ねたD型フリップフロップに通すことである。 たとえ最初のフリップフロップがメタステーブル状態に陥っても、次のクロックパルスが来るまでには(望むらくは)安定した状態に落ち着いているはずであり、2番目のフリップフロップは正しいデータを読み取れる。 これにより、入力されるデータのエッジに1クロック分の遅延が生じるが、メタステーブル状態のリスクに比べれば、ほとんどの場合は無視できるほど小さな代償である。
プログラミングにおけるブール論理
ここまでの内容は、プログラミングの世界にもそのまま応用できる。 たいていのプログラムは単なる決定木であり、「これが真であれば、これを行う」という形をしている。 これを説明するために、ここではArduinoの文脈でC言語のコードを使う。
ビット単位の論理演算
「ビット単位」の論理と言うとき、実際に意味しているのは、値を返す論理演算のことである。 たとえば、次のようなコードを考えてみよう。
byte a = 0b01010101;
byte b = 0b10101010;
byte c;
aとbに対してビット単位の演算を行い、その結果をcに入れることができる。
次のようになる。
c = a & b; // aとbのビット単位AND。結果は0b00000000
c = a | b; // aとbのビット単位OR。結果は0b11111111
c = a ^ b; // aとbのビット単位XOR。結果は0b11111111
c = ~a; // aのビット単位補数。結果は0b10101010
言い換えると、結果の各ビットは、対応する2つのオペランドの各ビットに演算を適用した結果に等しい。
なるほど、それは分かった。しかしそれが何の役に立つのだろうか。 実は、ビット単位の演算子を使ってレジスタを操作することで、いろいろと便利なことができる。 特定の1ビットだけを選んでクリアしたり、セットしたり、反転させたりできるほか、あるビット(あるいは複数のビット)がセットされているかクリアされているかを調べることもできる。 これらの演算の例をいくつか見てみよう。
c = 0b00001111 & a; // aの上位ニブルをクリアし、下位ニブルはそのまま残す
// 結果は0b00000101
c = 0b11110000 | a; // aの上位ニブルをセットし、下位ニブルはそのまま残す
// 結果は0b11110101
c = 0b11110000 ^ a; // aの上位ニブルのすべてのビットを反転させる
// 結果は0b10100101
ビット単位の演算はすべて、等号と組み合わせることで自己代入の形にできる。
a ^= 0b11110000; // aを0b11110000とXORし、結果をaに書き戻す
b |= 0b00111100; // bを0b00111100とORし、結果をbに書き戻す
ビットシフト
データに対して行えるもうひとつの便利なビット単位の演算がビットシフトである。 これは単に、データを左または右へ指定した桁数だけずらす操作であり、シフトによってはみ出したデータは消え、反対側からは0が入ってくる。
byte d = 0b11010110;
byte e = d >> 2; // dを右に2ビットシフト。e = 0b00110101
e = e << 3; // eを左に3ビットシフト。e = 0b10101000
ビットシフトの使い道については後ほど紹介するが、非常に便利な応用のひとつが掛け算と割り算である。 右に1ビットシフトするごとに2で割ったことになり(ただし余りの情報は失われる)、左に1ビットシフトするごとに2倍したことになる。 これが便利なのは、Arduinoのような小さなプロセッサでは掛け算や割り算はたいてい時間のかかる処理だが、ビットシフトはたいてい非常に高速に実行できるためである。
比較演算子と関係演算子
2つの値を比較する方法も必要になる。 それを行うのが、比較の結果に応じて「真」または「偽」を返す一群の演算子である。
==「等しい」(値が等しければ真、そうでなければ偽)!=「等しくない」(値が異なれば真)>「より大きい」(左のオペランドが右のオペランドより大きければ真)<「より小さい」(左のオペランドが右のオペランドより小さければ真)>=「以上」(左のオペランドが右のオペランド以上であれば真)<=「以下」(左のオペランドが右のオペランド以下であれば真)
比較する値どうしが同じデータ型であることは、一般に非常に重要である。 たとえば「byte」型と「int」型を比較すると、予期しない挙動が起きることがある。
論理演算子
論理演算子は、同じ型の新しい値を作るのではなく、「真」か「偽」を生み出す演算子である。 これは私たちが普段考えるような接続詞に近い。「雨が降っていなくて、風があれば、凧あげに行こう」というような文である。 これをC言語に翻訳すると、次のようになる。
if ( (raining != true) && (windy == true) ) flyKite();
2つの副節を囲むかっこに注目してほしい。 厳密には必要ないが、副節をまとめてグループ化しておくことは、コードをできるだけ読みやすく保つためのよい習慣である。
また、論理AND演算子(&&)は、それぞれの副節が真か偽かに基づいて、真偽の答えを生み出すことにも注目してほしい。 副節のひとつに数値を使った条件を入れることも同じように簡単にできる。
if ( (raining != true) && ( (windSpeed >= 5) || (reallyBusy != true) ) ) flyKite();
この条件は、雨が降っていなければ、そして風が十分にある場合、あるいはそれほど忙しくない場合に、凧あげに行くというものである(風がなくても、暇であれば一応挑戦はしてみる)。
ここでもかっこに注目してほしい。
もし「(windSpeed >= 5) || (reallyBusy != true)」のかっこを取り除いてしまうと(||はOR演算子を表す)、意図したとおりに動くかどうかがあいまいな文になってしまう。
フロー制御
複雑な論理式を組み立てられるようになったところで、その答えを使って何ができるかを見ていこう。
if/else if/else文
もっとも単純な判断が「if/else」である。 if/else if/elseを使うと、一連のテストを設定でき、そのうちどれか1つだけが実行される。
if ( reallyBusy == true ) workHarder();
else if ( (raining != true) && (windy == true) ) flyKite();
else work();
この3つの文により、本当に忙しいときは決して凧あげをせず、忙しくなくても凧あげ日和でなければ、ただ仕事を続けることになる。
ここで、2つ目のelse if()をif()に変えてみよう。
if ( reallyBusy == true ) workHarder();
if ( (raining != true) && (windy == true) ) flyKite();
else work();
こうすると、たとえ本当に忙しくても、凧あげ日和であれば、ほんの一瞬だけ「もっと頑張って働く」状態になり、天気がよいことに気づいた瞬間に凧あげに切り替わってしまう。 さらに、凧あげ日和でなければ、「もっと頑張って働く」状態から、最初のif文が実行された直後にただの「働く」状態へと即座に格下げされてしまう。
「workHarder()」を「turnLEDOn()」に、「work()」を「turnLEDOff()」に置き換えたらどうなるか、想像してみてほしい。 最初の例では、LEDはしばらく点灯したまま、あるいは消灯したままになる。 しかし2つ目の例では、「reallyBusy」の状態にかかわらず、最初のif文でLEDが点灯した直後にほぼ即座に消灯してしまい、「reallyBusy」を示すはずのランプが一向に点かないと首をかしげることになるだろう。
switch/case/default文
if/elseの長い連鎖よりも強力さでは劣るが読みやすいのが、switch/case/default文である。 これは、ある変数の値に基づいて判断を行うものである。
switch (menuSelection) {
case '1':
doMenuOne();
break;
case '2':
doMenuTwo();
break;
case '3':
doMenuThree();
break;
default:
flyKite();
break;
}
switch()文は、値が等しいかどうかの判定しかできないが、それはよくある用途であるため十分に役立つ。 ここで注目してほしいのは、「break;」文と「default:」のケースという2つの重要な要素である。
「default:」は、他のどのケースにも一致しなかった場合に実行される。 これは厳密には必須ではなく、default節がなければ、すべてのケースが一致しなかった場合に何も起こらない。 とはいえ、たいていは何かを実行させたいはずであり、すべてのケースが一致しない可能性はないと決めつけないほうがよい。
「break;」は現在の条件分岐から抜け出す。 これはどの種類の条件分岐の中でも使えるが、この場合、各caseの末尾にbreakを入れ忘れると、後続のcaseに一致しなくても、その後のコードが実行され続けてしまう。
while/do…whileループ
ここまでは、一度だけ判断を行うコードを見てきた。 では、ある条件が成り立つ限り、動作を何度も繰り返したい場合はどうすればよいだろうか。 そこで登場するのがwhile()とdo…while()である。
while (windy == true) flyKite();
コードがwhile()文に到達すると、プログラムはまず条件(「風はあるか」)を評価し、それが「真」であればコードを実行する。 コードの実行が終わると、条件が再び評価される。 条件がまだ「真」であれば、コードは再び実行される。 これは、条件が「偽」になるか、break文に出会うまで繰り返される。
while()ループの中には、if()文(あるいはswitch()や別のwhile()、その他何でも)を入れ子にすることができる。
while (windy == true) {
flyKite();
if (bossIsMad == true) break;
}
このループでは、風がやむか、上司の機嫌が悪くなるまで凧あげを続けることになる。
while()ループの変種として、do…while()ループがある。
do {
flyKite();
} while (windy == true);
この場合、かっこの中のコードは、たとえ条件が偽であっても1回は必ず実行される。 つまり、風の状態にかかわらず、とりあえず外に出て凧を引っ張ってはみるが、風がなければすぐにあきらめる、ということになる。
最後に、条件式に「true」を直接指定することで、永遠に実行され続けるコードを作ることもできる。
while (true) {
flyKite();
}
このコードでは、風の有無、上司の満足度、空腹、猛獣の存在などに関係なく、ひたすら凧を引きずり続けることになる。 もちろん、break文を使えばこのコードから抜け出すことは可能だが、自分から実行を止めることは決してない。
for()ループ
最後に紹介する繰り返しの種類がfor()ループである。 for()ループを使うと、特定の回数だけコードのかたまりを実行できる。 for文の構文は次のようになる。
for (byte i = 0; i < 10; i++) {
Serial.print("Hello, world!");
}
for()ループのかっこの中には、セミコロンで区切られた3つの文がある。 1つ目はイテレータ(繰り返しのたびに変化させる変数)であり、その初期値もここで設定する。 2つ目は、1回実行するたびに行う比較であり、この比較が偽になった時点でループを抜ける。 最後の文は、ループを1回実行するたびに行いたい処理であり、この場合はイテレータを1ずつ増やしている。
for()ループでもっともよくある間違いは、いわゆる「off-by-one(1つずれ)」エラーである。 コードを10回実行させたいつもりが、実際には9回や11回実行されてしまうというもので、たいていは「<=」と「<」を取り違えたことが原因である。
まとめ
デジタルロジックを理解することは、電子工学において欠かせないスキルである。 さらに詳しく知りたい場合は、次のような情報源も参考になる。
- ブール代数:この分野の土台となっている、ブール代数についてのWikipediaの記事
- クワイン・マクラスキー法:与えられた入力数と望む出力の対応表に対して、デジタル回路を必要最小限のゲートの集合に単純化するための手法
- LogicBlocks and an Introduction to Digital Logic(LogicBlocksとデジタルロジック入門)
タグ: コンピュータ工学、概念、電気工学、プログラミング
出典:Digital Logic(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
ロジックレベル
私たちはアナログ信号の世界に生きている。 しかしデジタル電子工学の世界には、ONかOFFかという2つの状態しか存在しない。 この2つの状態を使うことで、機器は大量のデータを符号化し、伝送し、制御することができる。 ロジックレベルとは、もっとも広い意味では、信号が取りうる特定の離散的な状態のことを指す。 デジタル電子工学では、一般に2進数の1と2進数の0という2つの論理状態だけを扱う。
このチュートリアルで扱う内容:
- ロジックレベルとは何か
- デジタル電子工学におけるロジックレベルの一般的な規格
- 異なる技術どうしをインターフェースする方法
- レベルシフト
- 電圧バックブーストレギュレータ
参考になるチュートリアル:
このチュートリアルは、基本的な電子工学の知識の上に成り立っている。 まだ読んでいなければ、次のチュートリアルにも目を通しておくとよい。
ロジックレベルとは何か
簡単に言えば、ロジックレベルとは、信号が取りうる特定の電圧や状態のことである。 デジタル回路における2つの状態は、よくONまたはOFFと呼ばれる。 2進数で表すと、ONは2進数の1に、OFFは2進数の0に対応する。 Arduinoでは、これらの信号をそれぞれHIGH(ハイ)、LOW(ロー)と呼ぶ。 過去30年ほどの間に、電子工学ではさまざまな電圧レベルを定めるための技術規格がいくつも生まれてきた。
Logic 0とLogic 1
デジタル電子回路は、データや情報を保存、処理、伝送するために2進論理に依存している。 2進論理とは、ONかOFFかという2つの状態のどちらかを指す。 これは一般に2進数の1または2進数の0として表される。 2進数の1はHIGH信号とも呼ばれ、2進数の0はLOW信号とも呼ばれる。
信号の強さは、たいていその電圧レベルによって表される。 logic 0(LOW)やlogic 1(HIGH)はどのように定義されるのだろうか。 これはたいていチップのメーカーが仕様書の中で定めている。 もっとも一般的な規格はTTL(トランジスタ・トランジスタ・ロジック)である。
アクティブローとアクティブハイ
ICやマイクロコントローラを扱っていると、アクティブローのピンとアクティブハイのピンに出会うことになるはずである。 簡単に言えば、これはそのピンをどうやって有効化するかを表す言葉である。 アクティブローのピンであれば、そのピンをグラウンドに接続することでLOWに「引き下げ」なければならない。 アクティブハイのピンであれば、HIGHの電圧(たいてい3.3Vや5V)に接続する。
たとえば、チップイネーブルピン(CE)を持つシフトレジスタがあるとしよう。 データシートの中でCEピンの上に横線が引かれているのを見かけたら、そのピンはアクティブローである。 チップを有効にするには、そのCEピンをGNDに引き下げる必要がある。 一方、CEピンの上に横線がなければ、そのピンはアクティブハイであり、有効にするにはHIGHに引き上げる必要がある。
多くのICでは、アクティブローのピンとアクティブハイのピンが入り混じっていることがある。 ピン名の上に横線が引かれていないか、必ず確認しよう。 この横線はNOT(バーとも呼ばれる)を表している。 何かがNOTされると、その状態は正反対になる。 つまり、アクティブハイの入力をNOTすれば、それはアクティブローになるということである。単純な話である。
TTLのロジックレベル
私たちが使うシステムの大半は、3.3Vまたは5VのTTLレベルに依存している。 TTLとはTransistor-Transistor Logic(トランジスタ・トランジスタ・ロジック)の頭文字を取ったものである。 バイポーラトランジスタで構成された回路によってスイッチングを行い、論理状態を維持する仕組みである。 トランジスタとは、要するに電気的に制御されるスイッチの、もったいぶった呼び方にすぎない。 どのロジックファミリーにも、知っておくべきしきい値電圧がいくつかある。 以下は標準的な5VのTTLレベルの例である。
- VOH:TTLデバイスがHIGH信号として出力する最小の電圧レベル
- VIH:HIGHと見なされるために必要な最小の入力電圧レベル
- VOL:デバイスがLOW信号として出力する最大の電圧レベル
- VIL:まだLOWと見なされる最大の入力電圧レベル
最小の出力HIGH電圧(VOH)が2.7Vであることに気づくはずである。 つまり、HIGHを出力する側のデバイスの出力電圧は、常に少なくとも2.7Vになるということである。 最小の入力HIGH電圧(VIH)は2Vであり、基本的に2V以上の電圧であれば、TTLデバイスにはlogic 1(HIGH)として読み取られる。
また、送信側の出力と受信側の入力の間に0.7Vの余裕があることにも気づくだろう。 これはノイズマージンと呼ばれることもある。
同様に、最大の出力LOW電圧(VOL)は0.4Vである。 つまり、logic 0を送ろうとするデバイスの出力は、常に0.4V未満になるということである。 最大の入力LOW電圧(VIL)は0.8Vである。 つまり、0.8V未満の入力信号は、デバイスに読み込まれる際にlogic 0(LOW)と見なされる。
では、0.8Vから2Vの間の電圧だった場合はどうなるのだろうか。 正直なところ、それは誰にも分からない。 この範囲の電圧は未定義であり、「フローティング」とも呼ばれる無効な状態になる。 デバイスの出力ピンがこの範囲で「フローティング」している場合、その信号がどうなるかはまったく保証されない。 HIGHとLOWの間を不規則に行き来することもある。
汎用的なTTLデバイスの入出力の許容範囲を、別の視点から見てみよう。
もうひとつよく出会う電圧規格として、3.3Vのデバイスがある。
3.3V CMOSのロジックレベル
技術の進歩とともに、消費電力が少なく、より低い基準電圧(Vcc = 5Vではなく3.3V)で動作するデバイスが作られるようになった。 3.3Vデバイスの製造技術も5V用のものとは少し異なっており、より小さなフットプリントと、システム全体のコスト削減を実現している。
一般的な互換性を確保するため、電圧レベルのほとんどは5Vデバイスとほぼ同じ値になっていることに気づくはずである。 3.3Vデバイスは、追加の部品なしに5Vデバイスとやり取りできる。 たとえば、3.3Vデバイスが出力するlogic 1(HIGH)は少なくとも2.4Vになる。 これはVIHの2Vを上回っているため、5Vシステムからも問題なくlogic 1(HIGH)と解釈される。
ただし、逆方向、つまり5Vデバイスから3.3Vデバイスに接続する場合は注意が必要であり、その3.3Vデバイスが5V耐性を持っているかを必ず確認すること。 ここで確認すべき仕様は、最大入力電圧である。 一部の3.3Vデバイスでは、3.6Vを超える電圧をかけると、チップに恒久的な損傷を与えてしまう。 5V信号を3.3Vレベルまで下げるには、簡単な分圧回路(1kΩと2kΩの組み合わせなど)を使うか、ロジックレベルシフターのような専用の部品を使うとよい。
Arduinoのロジックレベル
ATmega328(Arduino UnoやSparkFunのRedBoardの中核を担うマイクロコントローラ)のデータシートを見ると、電圧レベルが少し異なっていることに気づくはずである。
Arduinoは、もう少し余裕を持たせたプラットフォームの上に構築されている。 もっとも顕著な違いは、無効な電圧の範囲が1.5V〜3.0Vの間だけに収まっている点である。 Arduinoのほうがノイズマージンが大きく、LOW信号として認識されるしきい値も高い。 これにより、他のハードウェアとのインターフェースの構築がずっと簡単になる。
まとめ
これで、電子工学でもっともよく使われる概念のひとつを理解できたはずである。 ここからさらに学べる新しい世界が広がっている。
Arduinoのようなマイクロコントローラが、分圧回路から得られるアナログ電圧をどうやって読み取るのか気になるなら、アナログ-デジタル変換のチュートリアルを確認してみてほしい。
さまざまなレベルの電圧を使って他の機器を制御する方法については、パルス幅変調(PWM)のチュートリアルで学べる。
異なるロジックレベルの間を切り替えるために、分圧回路やロジックレベルコンバータを使う方法にも興味があるかもしれない。 関連するチュートリアルとしては、次のようなものがある。
より高い電圧で動作する機器を制御したい場合は、トランジスタやリレーを追加するという方法もある。
- トランジスタ:バイポーラ接合トランジスタの短期集中講座。トランジスタの仕組みと、どのような回路で使われるかを学べる。
タグ: 概念、電気工学
出典:Logic Levels(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
LogicBlocksとデジタルロジック入門
デジタルエレクトロニクスの世界を動かしている原動力、デジタルロジックに実際に触れてみよう。 LogicBlocksキットは、デジタルロジックを発見し、その仕組みを目で見て確かめ、それが何を作り出せるのかを探るための入り口である。
このチュートリアルは、キットに同梱されている「LogicBlocks Kit Information」の小冊子の内容をもとにしており、その一部をここでも改めて紹介する。 すでにLogicBlocksキットに慣れ親しんでいるなら、1〜3章は読み飛ばして、実験編に直接進んでもかまわない。
このチュートリアルで扱う内容:
- デジタルロジックとは何か
- LogicBlocksの基礎
- 各ブロックの詳細
参考になるチュートリアル:
LogicBlocksに取り組む前に、次のチュートリアルを先に読んでおくことをおすすめする。
- アナログとデジタルの違い:アナログ信号とデジタル信号の違いを扱うチュートリアル。ここではデジタルロジックについて多く語ることになるため重要である。
- デジタルロジック:デジタルロジックの理論をさらに深く学びたいなら、このチュートリアルを確認してほしい。
- 2進数:2進数はコンピュータの言語である。デジタルロジックは、2進数を足し合わせたり保存したりするために使う道具である。
デジタルロジックとは何か
デジタルとは何か
電子的な信号は、アナログとデジタルという2つのカテゴリーに分けられる。 アナログ信号はどんな形も取ることができ、無限の値を表現できる。 デジタル信号は、非常にはっきりと定義された、離散的な値の集合しか取らない。たいていはたった2つだけである。
多くの電子システムはアナログとデジタルの回路を組み合わせて使っているが、たいていのコンピュータや日常的な電子機器の中心にあるのは、離散的なデジタル回路である。
デジタルロジックとは何か
私たち人間は(たいてい)論理的な存在である。 何かを決断し、それに基づいて行動するとき、その裏では論理が働いている。 論理とは、1つ以上の入力を評価し、いくつもの結果と照らし合わせて、進むべき道筋を決めるプロセスのことである。 私たちがあらゆる決断に論理を用いているのと同じように、コンピュータもデジタルロジック回路を使って決断を下している。 コンピュータは、決断を伝えるために標準的な論理ゲートの組み合わせを使っている。
デジタルロジックについてさらに深く知りたい場合は、デジタルロジックのチュートリアルを確認してほしい。
デジタルロジックはどこで見られるか
デジタルロジックは、あらゆる回路の中に存在する。 電源への接続はANDの一例である。電源とグラウンドの両方が接続されて初めて、回路に電気が流れる。
他にはどこにあるだろうか。至るところにある。 街の信号機は、歩行者が「歩行者用ボタン」を押したときに論理を使っている。 このボタンは、ANDの論理ゲートを使ったプロセスを起動する。 歩行者が歩行者用ボタンを押し、なおかつその歩行者が渡ろうとしている方向の車道の信号が赤であれば、歩行者用の青信号が点灯する。 このAND文の2つの条件のどちらかが満たされなければ、歩行者用の青信号が点灯することは決してない。
入力と出力
デジタルロジック回路は、デジタルの入力を使って論理的な判断を下し、デジタルの出力を作り出す。 どんな論理回路も、何らかの出力を作り出す前に、少なくとも1つの入力を必要とする。
デジタルロジックの入力と出力は、たいてい2進数である。 つまり、取りうる値は2通りしかないということである。
2進数の値を表す方法にはいくつかの種類がある。 もっとも簡潔で一般的なのは1/0という表記だが、TRUE/FALSE(真/偽)やHIGH/LOW(ハイ/ロー)というブール値としての表記を見かけることもある。 ハードウェアのレベルでこれらの値を表すときは、実際の電圧レベルが割り当てられることもある。0V(ボルト)が0を表し、それより高い電圧(たいてい3Vや5V)が1を表す。
| 1 | 0 |
|---|---|
| HIGH | LOW |
| True | False |
| 5V | 0V |
論理ゲート
コンピュータが論理的な判断を下すには、AND、OR、NOTという3つの基本的な論理関数の組み合わせを使う。
- AND:すべての入力がTRUEである場合、かつその場合に限り、TRUEを出力する
- OR:入力のうちいずれか(1つ以上)がTRUEであれば、TRUEを出力する
- NOT:唯一、入力を1つしか持たない演算子である。NOT演算子は入力を否定する。つまり、出力は入力の反対になる
これらの関数はそれぞれ、論理ゲートを使って実現できる。 論理ゲートは、デジタルロジック回路を作るために使われるものであり、コンピュータやその他の電子機器を構成する基本的な部品である。 論理ゲートは1つ以上の入力を受け取り、特定の関数(AND、OR、NOTなど)をそれらに適用し、その関数に基づいて出力を生み出す。
論理ゲートには、抵抗器やコンデンサ、インダクタと同じように、それぞれ固有の回路図記号がある。 そして、標準的な電子部品の記号と同じように、論理ゲートも入力線と出力線をつなぎ合わせることで回路図の中に描くことができる。
真理値表
論理ゲートや論理関数の「論理」は、真理値表、ベン図、ブール代数など、いくつかの方法で表すことができる。 その中でも、真理値表がもっとも一般的である。 真理値表とは、考えられるすべての入力の組み合わせと、それに対応する出力を漏れなく一覧にしたものである。
すべての入力は表の左側に、出力は右側に並べられる。 表の各行が、ひとつの入力の組み合わせに対応する。
| 入力A | 入力B | 出力Y |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
上の表はANDゲートの真理値表である。 ANDゲートは2つの入力と1つの出力を持つため、真理値表には入力用の列が2つ、出力用の列が1つある。 入力が2つあるということは、0/0、0/1、1/0、1/1という4通りの入力の組み合わせがあるということである。 そのため、ANDゲートの真理値表には、それぞれの入力の組み合わせに対応する4行がある。 ANDの出力が1になるのは、両方の入力がともに1である場合だけである。
LogicBlocksの基礎
LogicBlocksには6種類のブロックがあり、論理ゲート、入力ブロック、ユーティリティブロックという3つのカテゴリーに分けられる。
論理ゲートブロック
論理ゲートのLogicBlocksには、AND、OR、NOTという3つの基本的な論理ゲートがある。 これらはできる限り、対応する回路図記号に似せた形になっており、ゲート名のラベルも付いている。
それぞれのゲートには1つの出力(先端がとがったオスのヘッダー)がある。 メスのヘッダーは入力を表しており、ANDゲートとORゲートには2つの入力が、NOTゲートには1つの入力がある。
論理ゲートのLogicBlocksにはそれぞれLEDが付いており、出力の状態を表している。 LEDが点灯していれば、そのゲートは1を出力しており、消灯していれば0を出力していることになる。
入力ブロック
入力ブロックは、LogicBlocksにデジタルの入力を与えるために使う。 入力ブロックの出力を0か1に切り替えるスイッチが付いている。 入力ブロックのLEDは、そのブロックが送り出している値を表示する。
入力ブロックには1つのオスの出力ヘッダーがあり、これをゲートブロックのメスの入力に差し込んで使う。
ユーティリティブロック(とケーブル)
ユーティリティブロックの中でも重要なのが電源ブロックである。 それぞれの論理ゲートは動作するために電源を必要とし、この基板がそれを供給する役割を担う。 電源ブロックには1つのメスの入力ヘッダーがあり、回路の最後の論理ゲートの出力に接続する。 1つのデジタルロジック回路全体に対して必要な電源ブロックは、たった1つだけである。
分配ブロックというLogicBlocksもあり、これは1つの入力を2つの出力に分けるだけの役割を持つ。 信号に対して何か演算を行うわけではなく、単に通過させるだけである。 1つの入力を2つ以上の論理ゲートに流し込む必要がある、より複雑なデジタルロジック回路を作るときに便利である。
このカテゴリーにはフィードバックケーブルも含まれる。 このケーブルは、より高度なLogicBlocks回路において、たいてい分配ブロックと組み合わせて使われる。
ルール
LogicBlocksを扱ううえでのルールは、実質的にひとつだけである。 あるブロックの出力を別のブロックの入力に接続するとき、3本のピンがそれぞれ正しく一致するようにすることである。 それぞれの入力と出力は、電源(+)、グラウンド(-)、信号(→)という3本のピンで構成されている。
また、LogicBlocks回路には常に電源ブロックがちょうど1つだけ接続されている必要がある。
論理ブロック(あるいはケーブル)のすべての入力には、別のブロック(あるいはケーブル)の出力を接続しておく必要がある。 入力が浮いたまま(未接続のまま)になっていると、そのゲートは入力が1なのか0なのかを判別できず、結果として出力が不安定になってしまう。
応答時間
論理ゲートは、人間には到底感知できないほどの速さ(ナノ秒単位)で出力の判断を下す。 そこでLogicBlocksでは、その過程を目に見えるようにするため、あえて動作を遅くしてある。 LogicBlocksを長く連ねた場合、この遅延のおかげで、あるブロックの結果が別のブロックの入力にどう影響するかを視覚的に確認しやすくなる。
この遅延はおよそ0.5秒程度である。 何が起きているかを見るのにちょうどよい長さである。
各ブロックの詳細
ここでは、LogicBlocksキットに含まれる各部品の細かい仕様を見ていく。 それぞれのブロックの役割、真理値表、そして他にどのブロックと組み合わせられるかを確認する。
入力LogicBlock
入力ブロックは、LogicBlocksの世界を動かす原動力である。 この小さな長方形のブロックには1つのオスコネクタがあり、ゲートブロック、電源ブロック、分配ブロックのメスの入力ピンに差し込むことができる。
それぞれの入力ブロックには2ポジションのスイッチがあり、これを使ってブロックを1または0(TRUEまたはFALSE、ONまたはOFF)に設定する。
入力ブロックの緑色のLEDは、そのブロックが出力している値を表す。 LEDが点灯していれば、そのブロックは1に設定されていることを示す。 LEDが消灯していれば、出力値は0である。
ANDゲートLogicBlock
ANDのLogicBlockは、2入力1出力のANDゲートである。 このブロックはANDゲートの回路図記号によく似た「D字型」をしている。 2つのメスの入力ヘッダーはANDブロックの両側にあり、出力は上部中央にある。
これらの入力には、入力ブロックまたは別のゲートブロックの出力を接続できる。 オスの出力ヘッダーは、別のゲートの入力、あるいは電源ブロックに接続できる。
それぞれのANDゲートブロックには青色のLEDが1つ付いており、ゲートの出力を表す。 LEDが点灯していれば、そのANDゲートは出力として1(TRUE、ON)を出していることを意味する。 LEDが消灯していれば、ANDゲートの出力は0である。
ANDの真理値表、回路記号、ブール記法
ANDブロックの真理値表は次のとおりである。
| 入力A | 入力B | 出力 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
そして、これからよく目にすることになるANDゲートの回路記号がある。 ANDのブール式の記号は中点(·)である。 たとえば上のゲートは、A · B = Yという式で表せる。
ORゲートLogicBlock
ORのLogicBlockは、2入力1出力のORゲートである。 このブロックはORゲートの回路図記号のような形をしており、出力側が凸型の弧、入力側が凹型の弧になっている。 2つのメスの入力はORブロックの両側にあり、出力はブロック上部中央にある。
2つの入力のどちらにも、入力ブロックまたは別のゲートブロックの出力を接続できる。 このオスの出力コネクタは、別のゲートの入力、あるいは電源ブロックに接続できる。
それぞれのORゲートブロックには黄色のLEDが1つ付いており、ゲートの出力を表す。 LEDが点灯していれば、そのORゲートは出力として1(TRUE、ON)を出していることを意味する。 LEDが消灯していれば、ORゲートの出力は0である。
ORの真理値表、回路記号、ブール記法
2入力1出力のORゲートの真理値表は次のとおりである。
| 入力A | 入力B | 出力 |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
そして、ブロック自体の形によく似た回路記号がある。 ORのブール式の記号はプラス記号(+)である。 上のOR回路は、A + B = Yというブール式で表せる。
NOTゲートLogicBlock
NOTのLogicBlockは、1入力1出力のNOTゲートである。 このブロックは台形の形をしている(三角形のNOTゲート回路記号にできるだけ近づけた形である)。 メスの入力コネクタは辺の長いほうの側にあり、出力は辺の短いほうの側にある。
この入力には、入力ブロックまたは別のゲートブロックの出力を接続できる。 このオスコネクタは、別のゲートの入力、あるいは電源ブロックに接続できる。
それぞれのNOTブロックには赤色のLEDが1つ付いており、ゲートの出力を表す。 LEDが点灯していれば、そのNOTゲートは出力として1(TRUE、ON)を出していることを意味する。 LEDが消灯していれば、NOTゲートの出力は0である。
NOTの真理値表、回路記号、ブール記法
NOTゲートは受け取った信号を反転させるため、インバータとも呼ばれることが多い。 0は1に、1は0に変わる。 インバータの真理値表はおおよそ次のようになる。
| 入力A | 出力 |
|---|---|
| 0 | 1 |
| 1 | 0 |
ブール式を書くとき、NOT演算はたいてい、反転させる変数の上に引かれたバー(横線)で示される。 たとえば上の回路のブール式は、単純にAの上に横線を引いた形で表される。
電源LogicBlock
電源なしに動作する電子回路は存在しない。そこで登場するのが電源ブロックである。
電源ブロックは、1枚の20mmコイン電池で動作し、最適な状態でおよそ3Vを供給し、かなり長持ちする。 LogicBlocksは2V〜5Vの範囲で動作し、消費電流もごくわずかである。
電源ブロックには1つのメスコネクタがあり、ゲートブロックの出力に接続する。 どの回路でも、接続してよい電源ブロックは1つだけである。
電源ブロックは、あらゆるLogicBlocks回路の最後のピースである。 一連の論理ゲートのうち、一番最後のゲートの出力に接続する必要がある。
分配LogicBlockとフィードバックケーブル
分配ブロックを使うと、1つのブロックの出力を2つの別々のブロックの入力に流し込むことができる。
より高度な回路を作る際には、複数のゲートに入力を分配したり、フィードバックを加えたりしたくなることがある。 そんなときに役立つのが、分配ブロックとフィードバックケーブルである。 フィードバックケーブルは、たいてい分配ブロックの2つの出力のうちの一方に接続して使われる。
フィードバックケーブルは、赤、黄、黒の3本の配線でできている。 赤は必ず+ピンに、黒は-ピンに接続し、黄色は信号をそのまま通過させる。
まとめ
LogicBlocksとデジタルロジックの基礎を学んだところで、いよいよ実験の時間である。 LogicBlocks Experimenter’s Guideでは、ここまでに紹介したわずかな部品を使って、2対1マルチプレクサをはじめとする、あらゆる基本的な論理回路を組み立てていく。
タグ: 概念、電気工学
出典:LogicBlocks & Digital Logic Introduction(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
16進数
たった10種類の数字だけで数を表すことに、窮屈さを感じたことはないだろうか。 あるいは、大きな数をもっと少ない桁数で表したいと思ったことは。 それとも、催眠術のように続く2進数の1と0の羅列を見ずに、バイトの値をぱっと見分けたいと思ったことは。 こうした用途では、16進数がエンジニアの好んで使う数体系になることが多い。
16進数(Hexadecimal、Hex、Base16とも呼ばれる)は、数値を書き表し、共有するために使える数体系である。 その点では、私たちが日常的に使っているもっとも有名な数体系である10進数と何も変わらない。 10進数は基数10の数体系であり(指が10本ある私たちにはぴったりである)、10種類の固有の数字を組み合わせて、位取りによって数を表現する。
16進数も、10進数と同じように、複数の数字を組み合わせて大きな数を作る。 ただし16進数では、16種類の固有の数字を使う。 0から9までの標準的な数字に加えて、A、B、C、D、E、Fという、通常は数として見慣れない6つの文字も使う。
このほかにも(無限に)さまざまな数体系が存在する。 2進数(基数2)も、コンピュータの言語であることから工学の世界でよく使われる。 基数2、つまり2進数の体系は、0と1というたった2つの数字の値だけで数を表す。
16進数は、10進数や2進数と並んで、電子工学やプログラミングの世界でもっともよく出会う数体系のひとつである。 多くの場合、2進数や10進数よりも16進数で数を表すほうが理にかなっているため、16進数の仕組みを理解しておくことは重要である。
このチュートリアルで扱う内容:
- 16進数の基本:16進数で使う16種類の数字、16進数の表し方、16進数での数え方を扱う
- 10進数との相互変換:10進数と16進数を変換するおすすめの方法を扱う
- 2進数との相互変換:2進数と16進数の変換方法を紹介する
- 変換用の計算ツール:16進数、2進数、10進数を相互に変換できる簡単な自動計算ツールを紹介する
参考になるチュートリアル:
このチュートリアルに取り組む前に、10進数についてある程度知っておく必要がある。 筆算の割り算を覚えているだろうか。余り、商、積、和、指数といった概念は、16進数と10進数の関係を学ぶ際に、また必要になってくる。
算数のおさらいに加えて、このチュートリアルの前に(あるいは並行して)2進数のチュートリアルを読んでおくことをおすすめする。
16進数の基本
ここでは16進数のごく基本的な部分、つまり16進数を表すのに使う数字の一覧と、ある数が16進数であることを示すための表記方法を扱う。 また、16進数での数え方という形で、非常に単純な「10進数から16進数への」変換も扱う。
数字:0-9とA-F
16進数は基数16の数体系である。 つまり、数を表すのに使える数字が16種類あるということである。 そのうち10種類は10進数でおなじみの数字、0、1、2、3、4、5、6、7、8、9であり、これらはそれぞれ見慣れた値と同じ値を表す。 残りの6種類はA、B、C、D、E、Fで表され、それぞれ10、11、12、13、14、15という値に対応している。
A〜Fは大文字と小文字のどちらの表記も見かけるはずである。 どちらも問題ない。 大文字か小文字かについて、それほど厳密な標準は決まっていない。 A3Fもa3fもA3fも、すべて同じ数を表している。
下付き文字
10進数と16進数には共通する10種類の数字があるため、非常によく似た見た目の数がたくさんできてしまう。 しかし16進数の10は、10進数の10とはまったく異なる数である。 実際、16進数の10は10進数の16に相当する。 そのため、ある数が基数10なのか基数16なのか(あるいは基数8や基数2なのか)を明示する方法が必要になる。 そこで登場するのが基数の下付き文字である。
これから見ていくように、下付き文字だけが数の基数を明示する方法ではない。 下付き文字は、もっとも文字どおりに基数を示す方式のひとつにすぎない。
16進数での数え方
16進数での数え方は10進数での数え方とよく似ているが、扱う数字が6つ多い。 ある桁が「F」を超えると、その桁は「0」に戻り、左隣の桁が1つ繰り上がる。
実際に数えてみよう。
| 10進数 | 16進数 | 10進数 | 16進数 | |
|---|---|---|---|---|
| 0 | 0 | 8 | 8 | |
| 1 | 1 | 9 | 9 | |
| 2 | 2 | 10 | A | |
| 3 | 3 | 11 | B | |
| 4 | 4 | 12 | C | |
| 5 | 5 | 13 | D | |
| 6 | 6 | 14 | E | |
| 7 | 7 | 15 | F |
16進数のF₁₆に達すると、10進数で9₁₀から10₁₀に繰り上がるのと同じように、16進数でも10₁₆に繰り上がる。
| 10進数 | 16進数 | 10進数 | 16進数 | |
|---|---|---|---|---|
| 16 | 10 | 24 | 18 | |
| 17 | 11 | 25 | 19 | |
| 18 | 12 | 26 | 1A | |
| 19 | 13 | 27 | 1B | |
| 20 | 14 | 28 | 1C | |
| 21 | 15 | 29 | 1D | |
| 22 | 16 | 30 | 1E | |
| 23 | 17 | 31 | 1F |
そして1F₁₆に達すると20₁₆に繰り上がり、再び一番右の桁が0からFまで巡っていく。
16進数を表す識別子
「0x47DE」なのか「#47DE」なのか、それとも単に47,222という10進数を意味しているのか。 このような混乱を避けるため、16進数にはたいてい、それが16進数であることを示す識別子が前後に付けられる。
| 識別子 | 例 | 備考 |
|---|---|---|
| 0x | 0x47DE | UNIXやC系のプログラミング言語(Arduinoも含む)でよく見かける接頭辞である |
| # | #FF7734 | HTMLや画像編集ソフトでの色の指定によく使われる |
| % | %20 | URLの中で「スペース」(%20)のような文字を表すのによく使われる |
| \x | \x0A | 「バックスペース」(\x08)、「エスケープ」(\x1B)、「改行」(\x0A)のような制御コードを表すのによく使われる |
| &#x | Ω | HTML、XML、XHTMLでUnicode文字を表すのに使われる(たとえばΩはΩと表示される) |
| 0h | 0h5E | TI-89のような、多くのプログラム可能なグラフ電卓で使われる接頭辞である |
| 下付きの数字や文字 | BE37₁₆、13F₁₆ | 基数16の数をより数学的に表す方式である。10進数は下付きの10(基数10)で、2進数は基数2で表せる |
このほかにも、特定のプログラミング言語に固有の接頭辞や接尾辞がいくつも存在する。 たとえばアセンブリ言語では、「H」や「h」という接尾辞(7Fhなど)や、「$」という接頭辞($6ADなど)が使われることがある。 自分が使っているプログラミング言語でどの接頭辞や接尾辞を使うべきか分からない場合は、サンプルコードを参照してほしい。
「0x」という接頭辞は、特にArduinoのプログラミングをしていると頻繁に見かけることになる。 このチュートリアルでも、以降はこの表記を使うことにする。
10進数との相互変換
ここまでで、16個ほどの値を10進数と16進数の間で変換する方法は分かったはずである。 もっと大きな数を変換するには、いくつかのコツがある。
10進数から16進数への変換
10進数から16進数への変換には、割り算と余りを多用する。 筆算の割り算をすっかり忘れてしまった場合は、Wikipediaなどでおさらいしておくとよい。
ある数(Nとする)を10進数から16進数に変換する手順は、次のようになる。
- Nを16で割る。その割り算の余りが、求める16進数の最初の桁(最下位、つまり一番右の桁)になる。商(割り算の結果)を次のステップに使う。
- 注意:余りが10、11、12、13、14、15になった場合は、それぞれ16進数の数字A、B、C、D、E、Fになる。
- 前のステップで得た商をさらに16で割る。この割り算の余りが、16進数の2桁目(右から2番目)になる。この割り算で得た商を次のステップに使う。
- ステップ2で得た商をさらに16で割る。この割り算の余りが、16進数の3桁目になる。パターンが見えてきただろうか。
- 前のステップで得た商を16で割り続け、その余りを記録していく。これを割り算の結果が0になるまで続ける。その最後の割り算の余りが、16進数の一番左、つまり最上位の桁になる。
10進数から16進数への変換例:61453を変換する
言葉での説明はこれくらいにして、実際に例を計算してみよう。 61453₁₀を16進数に変換してみる。
- 61453を16で割ると、商は3840、余りは13になる。この余りが、求める16進数の一番右、つまり最下位の桁になる。13はAではなくDなので、最初の桁はDである。3840を次のステップに使う。
- 次に3840を16で割ると、商は240、余りは0になる。2桁目は0であり、240を次の桁の計算に使う。
- 240を16で割ると、15になり、余りはまた0になる。3桁目は0であり、15をステップ4に使う。
- 最後に、15を16で割る。ここでようやく商が0になり、余りは15になる。この余りは、この桁の16進数がFであることを意味する。
最後に、得られた4つの16進数の桁をすべて組み合わせると、求める16進数の値が得られる:0xF00D。
16進数から10進数への変換
16進数から10進数への変換を支配する、少々ややこしい数式がある。
値 = hn×16ⁿ + hn-1×16ⁿ⁻¹ + … + h1×16¹ + h0×16⁰
この式にはいくつかの重要な要素がある。 それぞれのhの項(hn、hn-1など)は、16進数の値の1桁を表している。 たとえば16進数の値が0xF00Dであれば、h0はD、h1とh2は0、h3はFである。
16の累乗は16進数において非常に重要な要素である。 より重要度の高い桁(数の左側にある桁)ほど、より大きな16の累乗が掛けられる。 最下位の桁であるh0には16⁰(つまり1)が掛けられる。 16進数の値が4桁であれば、最上位の桁には16³、つまり4096が掛けられる。
16進数を10進数に変換するには、先ほどの式のそれぞれのhに値を当てはめる必要がある。 そして各桁に対応する16の累乗を掛け、それらをすべて足し合わせる。 手順は次のとおりである。
- 16進数の値の一番右の桁から始める。それに16⁰、つまり1を掛ける。つまり、そのままの値を脇に置いておく。
- アルファベットの16進数(A、B、C、D、E、F)は、対応する10進数の値(10、11、12、13、14、15)に変換するのを忘れないこと。
- 1桁左に移動する。その桁に16¹、つまり16を掛ける。その積を覚えておき、脇に置いておく。
- さらに1桁左に移動する。その桁に16²(256)を掛け、その積を記録しておく。
- 16進数の値の各桁を、増えていく16の累乗(4096、65536、1048576……)で掛け続け、それぞれの積を記録していく。
- 16進数のすべての桁に対応する16の累乗を掛け終えたら、それらをすべて足し合わせる。その合計が、その16進数に相当する10進数の値である。
16進数から10進数への変換例:0xC0DEを変換する
4桁の16進数、0xC0DEを10進数に変換する例を見てみよう。 表を作り、各桁を別々の列に並べると、変換作業がしやすくなる。
| 桁の位置(n) | 3 | 2 | 1 | 0 |
|---|---|---|---|---|
| 並べた16進数の桁 | C | 0 | D | E |
| A〜Fを変換 | 12 | 0 | 13 | 14 |
| 16ⁿを掛ける | 12×16³ | 0×16² | 13×16¹ | 14×16⁰ |
| 得られた積 | 49152 | 0 | 208 | 14 |
これらの積をすべて足し合わせると、49152 + 0 + 208 + 14 = 49374になる。
つまり、C0DE₁₆ = 49374₁₀である。
この表を使う方法は、16進数の各桁、位置、16の累乗を整理して把握するのに最適である。 もっと大きな16進数を変換したい場合は、左に列を追加してnを増やしていくだけでよい。
手計算のやり方が分かったところで、時間を節約するために計算ツールを使ってみるのもよいだろう。
2進数との相互変換
一安心してほしい。面倒な変換はもう終わりである。 電気工学やコンピュータ工学で16進数が使われるのは、コンピュータの言語である1と0、つまり2進数との相互変換が非常に簡単だからである。
16進数と2進数の変換が簡単なのは、16進数の各桁が2進数の4ビット(ビットとは1個の2進数の桁のこと)にちょうど対応しているためである。 つまり1バイト(8個の2進数の桁)は、常に2桁の16進数で表せるということである。 これにより、16進数は1バイトやそのまとまりを表すのに、非常に簡潔で便利な方法になっている。
2進数から16進数への変換
まず、最初の16個の16進数の値を2進数に対応付けてみよう。
| 10進数 | 16進数 | 2進数 | 10進数 | 16進数 | 2進数 | |
|---|---|---|---|---|---|---|
| 00 | 0 | 0000 | 08 | 8 | 1000 | |
| 01 | 1 | 0001 | 09 | 9 | 1001 | |
| 02 | 2 | 0010 | 10 | A | 1010 | |
| 03 | 3 | 0011 | 11 | B | 1011 | |
| 04 | 4 | 0100 | 12 | C | 1100 | |
| 05 | 5 | 0101 | 13 | D | 1101 | |
| 06 | 6 | 0110 | 14 | E | 1110 | |
| 07 | 7 | 0111 | 15 | F | 1111 |
16進数や2進数を使い続けるうちに、これら16個の値は自然と頭に染みついていくはずである。 これが、2進数と16進数を変換するための鍵になる。
2進数と16進数を変換するには、4つの2進数の桁(ビット)が1つの16進数の桁に対応するという性質を利用する。 2進数から16進数へ変換するには、次の手順に従う。
- 2進数の値を、右端から4桁ずつのグループに分割する。
- それぞれの4桁のグループについて、先ほどの表を参照して対応する16進数の値を見つけ、4桁の2進数のグループをその1つの16進数の値に置き換える。
これだけである。実際にやってみよう。
2進数から16進数への変換例:0b101111010100001を変換する
まず、2進数の一番右端から始めて、1と0を4桁ずつのグループに分ける。
0101 1110 1010 0001
次に、先ほどの表を参照して、それぞれの4桁のグループを16進数の桁に変換する。
0101 → 5
1110 → E
1010 → A
0001 → 1
これで完成である。0b101111010100001 = 0x5EA1となる。
16進数から2進数への変換
16進数から2進数への変換は、2進数から16進数への変換とよく似ている。 16進数の桁を1つずつ取り出し、それぞれを4桁の2進数に変換していく。 これを、数がすべて0と1で埋まるまで繰り返す。
16進数から2進数への変換例:0xDEADBEEFを変換する
0xDEADBEEF(システムクラッシュを示すためによく使われるコードである)を変換するには、まず桁を1つずつ「箱」に振り分ける。
D E A D B E E F
そして、それぞれの16進数の桁を4ビットに変換する。
D → 1101
E → 1110
A → 1010
D → 1101
B → 1011
E → 1110
E → 1110
F → 1111
つまり、0xDEADBEEF = 0b11011110101011011011111011101111となる。1と0がたくさん並ぶことになる。
バイトを表現し識別するための16進数
これまでの例は、16進数が持つ大きな強みのひとつ、バイトの値を簡単に表せるという点を示している。 16進数の値は、長く続く1と0の並びよりも短く覚えやすいため、扱いやすいことが多い。
たとえば上のレジスタマップは、LSM9DS0(優れた9軸センサー)のものである。 このセンサーを制御するために使われるレジスタアドレスが、16進数と2進数の両方で一覧になっている。 CTRL_REG2_Gレジスタにアクセスしたい場合、0b010001と覚えるより0x21と覚えるほうがずっと簡単であり、16進数の値のタイプミスを見つけるのも2進数の場合よりずっと簡単である。 そのため、コードの中では2進数よりも16進数の値を使うことのほうが圧倒的に多い。
まとめ
16進数の仕組みを理解することは、電子工学やプログラミングの実に多くの分野にとって欠かせない。
16進数の新しい知識を身につけたところで、次のような関連するチュートリアルも確認してみてほしい。
- デジタルロジックとShift registers(シフトレジスタ):これらのチュートリアルは、16進数をより大きく一般的な電子工学の概念の土台として使っている。デジタルロジックは、コンピュータが行うあらゆる判断の中核である。シフトレジスタは、1つの入力や出力を8個以上に分配するのに使える。
- I2CとSPI:これらの通信インターフェースは、ほぼ必ず何らかの形で16進数を使う。SPIやI2Cで通信する機器はたいてい一連のレジスタを持ち、それぞれ16進数のアドレスに対応付けられている。I2Cデバイスにはそれぞれ固有の7ビットアドレスが割り当てられており、たいてい16進数で表記される。
- バイナリブラスターの組み立てガイド:16進数の変換を練習したいなら、Binary Blaster Kitが役立つ。これははんだ付けが必要なキットである。組み立てたら、それを使って2進数、16進数、10進数の関係についての理解度を試すことができる。
タグ: 通信、コンピュータ工学、概念、プログラミング
出典:Hexadecimal(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
ASCII
コンピュータが2進数で動作しているとしたら、文字や単語をどうやって保存しているのだろうか。 それを実現するために、私たちは文字に数を割り当てている。 これは文字コード化と呼ばれる。
文字コード化がどのように機能するかを理解するために、簡単な例を作ってみよう。 まず、アルファベットに1から26までの数字を割り当てる。
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
a b c d e f g h i j k l m n o p q r s t u v w x y z
簡単な暗号メッセージを書くには、文字を数字に置き換える。
たとえば 8 5 12 12 15 である。
数字を使うことで、h e l l o という単語を作り出すことができる。
しかし、大文字と小文字のアルファベット、数字、句読点まで含めた英語のアルファベット全体を表すには、26文字だけでは足りない。 そこで生まれたのが、コンピュータ向けの初期の文字コード化規格のひとつであるAmerican Standard Code for Information Interchange(ASCII)である。
このチュートリアルで扱う内容:
- ASCIIの簡単な歴史
- 10進数、2進数、16進数をASCIIに変換する方法
参考になるチュートリアル:
このガイドを読み始める前に、知っておくとよい概念がいくつかある。
- 2進数:コンピュータが数をどのように保存しているかを知っておくと、その数を文字に変換する際に役立つ
- 16進数:16進数は、2進数を4ビットずつのまとまりで表すためによく使われる
- Installing Arduino IDE(Arduino IDEのインストール):ASCII文字を表示してみるには、Arduinoを使うのがよい方法である
歴史
アメリカ規格協会(ASA、現在のアメリカ規格協会ANSI)は、1960年10月6日にASCIIの策定に着手した。 この符号化方式は、エミール・ボードーが考案した5ビットの電信符号に起源を持つ。 委員会は最終的に、ASCIIを7ビットの符号として採用することを決めた。
7ビットあれば128文字を表現できる。 この符号化方式にはアメリカ英語の文字と記号だけが選ばれたが、7ビットにしたことで、(たとえば8ビットにする場合と比べて)データ伝送にかかるコストを抑えることができた。
ASCIIの最初の32文字は、制御文字として予約されている。 これらの文字は、プリンターのような他の機器に特別な指示を伝えるために使われた。 たとえば、改行したり、文字を削除したり、機器によってはベルを鳴らしたりすることができた(Teletype Model 33 ASRなどがその例である)。
ASAは1963年に最初のバージョンのASCIIを発表し、1967年に改訂した。 この規格への最後の大きな更新は1986年に行われた。 ASCIIが最初に商用で使われたのは、AT&T(American Telephone & Telegraph)のTWX(テレタイプライター交換)ネットワークだった。
1968年3月11日、リンドン・B・ジョンソン大統領は、アメリカ連邦政府のすべてのコンピュータがASCIIをサポートすることを義務付け、これによりASCIIはアメリカのコンピュータ史における確固たる地位を築いた。
当時は国際電信アルファベット2号(ITA2)のような他の符号化方式も存在していたが、ASCIIはすぐにアメリカ英語の符号化における標準となった。 ASCIIは、2007年にUTF-8に追い抜かれるまで、インターネット上でもっとも一般的な符号化方式だった。
ASCIIテーブル
ある文字のASCII値を調べるには、ASCIIテーブルを参照するのが一般的である。 ASCIIテーブルは、それぞれの文字を0から127までの割り当てられた値と対応付けている。
制御文字
制御文字は、ASCIIテーブルの最初の32文字を占めている。 これらの文字は表示されることを意図しておらず、代わりにプリンターのような他の機器にコマンドの指示を送るために使われる。 非常に古いシステム(12ビットのPDP-8など)を扱う可能性もあるため、念のため8進数での表記も併記しておく。
| 10進 | 2進 | 8進 | 16進 | 文字 | 説明 |
|---|---|---|---|---|---|
| 0 | 0000 0000 | 000 | 00 | NUL | ヌル文字 |
| 1 | 0000 0001 | 001 | 01 | SOH | ヘディング開始 |
| 2 | 0000 0010 | 002 | 02 | STX | テキスト開始 |
| 3 | 0000 0011 | 003 | 03 | ETX | テキスト終了 |
| 4 | 0000 0100 | 004 | 04 | EOT | 転送終了 |
| 5 | 0000 0101 | 005 | 05 | ENQ | 照会 |
| 6 | 0000 0110 | 006 | 06 | ACK | 肯定応答 |
| 7 | 0000 0111 | 007 | 07 | BEL | ベル |
| 8 | 0000 1000 | 010 | 08 | BS | バックスペース |
| 9 | 0000 1001 | 011 | 09 | TAB | 水平タブ |
| 10 | 0000 1010 | 012 | 0A | LF | 改行 |
| 11 | 0000 1011 | 013 | 0B | VT | 垂直タブ |
| 12 | 0000 1100 | 014 | 0C | FF | 改ページ |
| 13 | 0000 1101 | 015 | 0D | CR | 復帰 |
| 14 | 0000 1110 | 016 | 0E | SO | シフトアウト |
| 15 | 0000 1111 | 017 | 0F | SI | シフトイン |
| 16 | 0001 0000 | 020 | 10 | DLE | データリンクエスケープ |
| 17 | 0001 0001 | 021 | 11 | DC1 | 装置制御1 |
| 18 | 0001 0010 | 022 | 12 | DC2 | 装置制御2 |
| 19 | 0001 0011 | 023 | 13 | DC3 | 装置制御3 |
| 20 | 0001 0100 | 024 | 14 | DC4 | 装置制御4 |
| 21 | 0001 0101 | 025 | 15 | NAK | 否定応答 |
| 22 | 0001 0110 | 026 | 16 | SYN | 同期アイドル |
| 23 | 0001 0111 | 027 | 17 | ETB | 伝送ブロック終了 |
| 24 | 0001 1000 | 030 | 18 | CAN | 取り消し |
| 25 | 0001 1001 | 031 | 19 | EM | 媒体終了 |
| 26 | 0001 1010 | 032 | 1A | SUB | 置換 |
| 27 | 0001 1011 | 033 | 1B | ESC | エスケープ |
| 28 | 0001 1100 | 034 | 1C | FS | ファイル区切り |
| 29 | 0001 1101 | 035 | 1D | GS | グループ区切り |
| 30 | 0001 1110 | 036 | 1E | RS | レコード区切り |
| 31 | 0001 1111 | 037 | 1F | US | ユニット区切り |
| 127 | 0111 1111 | 177 | 7F | DEL | 削除 |
表示可能文字
ASCIIの符号化方式には95個の表示可能文字がある。 「space」の文字は、表示可能な空白(半角スペース)を表していることに注意してほしい。
| 10進 | 2進 | 8進 | 16進 | 文字 |
|---|---|---|---|---|
| 32 | 0010 0000 | 040 | 20 | (半角スペース) |
| 33 | 0010 0001 | 041 | 21 | ! |
| 34 | 0010 0010 | 042 | 22 | “ |
| 35 | 0010 0011 | 043 | 23 | # |
| 36 | 0010 0100 | 044 | 24 | $ |
| 37 | 0010 0101 | 045 | 25 | % |
| 38 | 0010 0110 | 046 | 26 | & |
| 39 | 0010 0111 | 047 | 27 | ’ |
| 40 | 0010 1000 | 050 | 28 | ( |
| 41 | 0010 1001 | 051 | 29 | ) |
| 42 | 0010 1010 | 052 | 2A | * |
| 43 | 0010 1011 | 053 | 2B | + |
| 44 | 0010 1100 | 054 | 2C | , |
| 45 | 0010 1101 | 055 | 2D | - |
| 46 | 0010 1110 | 056 | 2E | . |
| 47 | 0010 1111 | 057 | 2F | / |
| 48〜57 | 0011 0000〜0011 1001 | 060〜071 | 30〜39 | 0〜9 |
| 58 | 0011 1010 | 072 | 3A | : |
| 59 | 0011 1011 | 073 | 3B | ; |
| 60 | 0011 1100 | 074 | 3C | < |
| 61 | 0011 1101 | 075 | 3D | = |
| 62 | 0011 1110 | 076 | 3E | > |
| 63 | 0011 1111 | 077 | 3F | ? |
| 64 | 0100 0000 | 100 | 40 | @ |
| 65〜90 | 0100 0001〜0101 1010 | 101〜132 | 41〜5A | A〜Z |
| 91 | 0101 1011 | 133 | 5B | [ |
| 92 | 0101 1100 | 134 | 5C | \ |
| 93 | 0101 1101 | 135 | 5D | ] |
| 94 | 0101 1110 | 136 | 5E | ^ |
| 95 | 0101 1111 | 137 | 5F | _ |
| 96 | 0110 0000 | 140 | 60 | ` |
| 97〜122 | 0110 0001〜0111 1010 | 141〜172 | 61〜7A | a〜z |
| 123 | 0111 1011 | 173 | 7B | { |
| 124 | 0111 1100 | 174 | 7C | | |
| 125 | 0111 1101 | 175 | 7D | } |
| 126 | 0111 1110 | 176 | 7E | ~ |
実際に試してみる
ASCII符号化を使って何かを表示してみたいなら、Arduinoで試すことができる。 Arduinoを始めるには、Installing Arduino IDEのチュートリアルを参照してほしい。
Arduino IDEを開き、次のコードを貼り付けてみよう。
void setup()
{
Serial.begin(9600);
}
void loop()
{
Serial.write(0x48); // H
Serial.write(0x65); // e
Serial.write(0x6C); // l
Serial.write(0x6C); // l
Serial.write(0x6F); // o
Serial.write(0x21); // !
Serial.write(0x0A); // \n
delay(1000);
}
これをArduinoで実行し、シリアルコンソールを開いてみよう。 「Hello!」が何度も表示されるはずである。
ここでSerial.print()ではなくSerial.write()を使っていることに注目してほしい。
write()コマンドは、シリアル回線に生のバイトをそのまま送信する。
一方print()は、その数値を解釈しようとし、ASCII符号化された文字列を送信しようとする。
たとえばSerial.print(0x48)は、コンソールに72と表示してしまう。
また、「ラインフィード」の制御文字である0x0AというASCII文字を使っていることにも注目してほしい。
これは、プリンター(ここではコンソール)に次の行へ進むよう指示する文字である。
「Enter」キーを押すのとよく似た働きをする。
まとめ
文字コード化の方式は数多く存在する。 World Wide Webでもっとも普及している符号化方式はUTF-8である。 2016年6月の時点で、UTF-8はすべてのウェブページの87%で使われている。
UTF-8はASCIIとの後方互換性を持っており、最初の128文字はASCIIとまったく同じである。 UTF-8は、ラテン文字、ギリシャ文字、キリル文字、アラビア文字、中国語、韓国語、日本語の文字を含む、現代のほとんどの書き言葉の文字を、2バイト、3バイト、4バイトを使って符号化できる。
基本的なASCII符号化の知識は、シリアルターミナルを扱う際にも役立つ。 数あるシリアルターミナルプログラムの使い方については、Serial Terminal Basics(シリアルターミナルの基礎)のチュートリアルを参照してほしい。
タグ: 通信、コンピュータ工学、概念、プログラミング
出典:ASCII(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
シリアル通信
組み込み電子工学とは、要するに回路(プロセッサやその他の集積回路)どうしを結びつけて、共生的なシステムを作り上げることである。 個々の回路が情報をやり取りするには、共通の通信プロトコルを共有していなければならない。 このデータ交換を実現するために、何百もの通信プロトコルが定義されてきたが、それらはおおむね、パラレル(並列)かシリアル(直列)かのどちらかに分類できる。
パラレルとシリアル
パラレルインターフェースは、複数のビットを同時に転送する。 たいてい、8本、16本、あるいはそれ以上の配線からなるバスを必要とし、大量の1と0の波を一度に送り出す。
シリアルインターフェースは、データを1ビットずつ順番に流していく。 これらのインターフェースは、わずか1本の配線だけで動作することもあり、たいてい4本を超えることはない。
この2つのインターフェースは、車の流れにたとえるとイメージしやすい。 パラレルインターフェースは8車線以上あるメガハイウェイであり、シリアルインターフェースは田舎の2車線道路のようなものである。 一定の時間で見れば、メガハイウェイのほうがより多くの人を目的地に送り届けられる可能性があるが、その田舎の2車線道路も十分に役目を果たし、しかも建設費用はごくわずかで済む。
パラレル通信には確かに利点がある。 高速で、単純で、比較的実装しやすい。 しかし、それだけ多くの入出力(I/O)線を必要とする。 基本的なArduino UnoからMegaへプロジェクトを移行したことがある人なら、マイクロプロセッサのI/O線がいかに貴重で数が限られているかを知っているはずである。 そのため、私たちはしばしば、ピン数の節約と引き換えに速度をある程度犠牲にする、シリアル通信を選ぶことになる。
非同期シリアル
長年にわたり、組み込みシステムの特定のニーズに応えるために、数十種類ものシリアルプロトコルが作られてきた。 USB(ユニバーサルシリアルバス)やイーサネットは、コンピュータの世界でよく知られたシリアルインターフェースの一例である。 このほかにも、SPI、I2C、そして今日ここで取り上げるシリアル規格が非常によく使われている。 これらのシリアルインターフェースは、いずれも同期式か非同期式かのどちらかに分類できる。
同期式のシリアルインターフェースは、データ線に必ずクロック信号を組み合わせるため、同期式シリアルバス上のすべての機器がクロックを共有する。 これにより、より単純で、たいてい高速なシリアル転送が実現できるが、通信する機器の間にもう1本配線が必要になる。 同期式インターフェースの例としては、SPIやI2Cがある。
非同期とは、外部のクロック信号の助けを借りずにデータを転送することを意味する。 この伝送方式は、必要な配線とI/Oピンの数を最小限に抑えるのに理想的だが、データの送受信を確実に行うために、多少の工夫が必要になる。 このチュートリアルで取り上げるシリアルプロトコルは、非同期転送のもっとも一般的な形式である。 あまりに一般的なため、たいていの人が「シリアル」と言うとき、実はこのプロトコルのことを指している(このチュートリアルを通じて、そのことに気づくはずである)。
このチュートリアルで扱うクロックを使わないシリアルプロトコルは、組み込み電子工学で広く使われている。 GPSモジュール、Bluetooth、XBee、シリアルLCDなど、外部デバイスをプロジェクトに追加したいなら、このシリアル通信の技を身につけておく必要があるだろう。
参考になるチュートリアル:
このチュートリアルは、次のようないくつかの、より基礎的な電子工学の概念の上に成り立っている。
これらの概念にあまり馴染みがない場合は、先にそちらを確認しておくとよい。
それでは、シリアル通信の旅に出かけよう。
シリアルのルール
非同期シリアルプロトコルには、堅牢でエラーのないデータ転送を保証するための、いくつかの組み込みルールがある。 外部のクロック信号を使わない代わりに得られるこれらの仕組みは、次のとおりである。
- データビット
- 同期ビット
- パリティビット
- ボーレート
これらのさまざまな信号方式を通じて、シリアルでデータを送る方法はひとつではないことが分かるはずである。 このプロトコルは非常に柔軟に設定できる。 重要なのは、シリアルバス上の両方の機器が、まったく同じプロトコル設定を使うようにすることである。
ボーレート
ボーレートは、シリアル線を通じてデータがどれだけ速く送られるかを指定する。 たいてい、bps(ビット毎秒)という単位で表される。 ボーレートの逆数を取れば、1ビットの送信にかかる時間が分かる。 この値によって、送信側がシリアル線をどれだけの時間HIGHまたはLOWに保つか、あるいは受信側がどの周期で線をサンプリングするかが決まる。
ボーレートは、常識の範囲内であればほぼどんな値でもよい。 唯一の要件は、両方の機器が同じ速度で動作していることである。 速度がそれほど重要でない単純な用途でよく使われるボーレートのひとつが、9600bpsである。 このほかにも1200、2400、4800、19200、38400、57600、115200といった「標準的な」ボーレートがある。
ボーレートが高いほど、データの送受信は速くなるが、転送速度には限界がある。 たいていのマイクロコントローラでは115200を超える速度を目にすることはあまりなく、これでも十分に速い。 これより速くしすぎると、クロックとサンプリング周期が追いつかなくなり、受信側でエラーが発生し始める。
データのフレーム化
送信される各データブロック(たいてい1バイト)は、実際にはパケットあるいはフレームと呼ばれるビットのまとまりとして送られる。 フレームは、データに同期ビットとパリティビットを付け加えることで作られる。
それでは、このフレームを構成する各部分を詳しく見ていこう。
データチャンク
すべてのシリアルパケットの中心となるのが、そこに含まれるデータである。 このデータのまとまりを、あえてチャンクとあいまいに呼んでいるのは、そのサイズが特に決まっていないからである。 1パケットあたりのデータ量は、5ビットから9ビットの間で自由に設定できる。 標準的なデータサイズはもちろん基本の8ビット(1バイト)だが、それ以外のサイズにもそれぞれ用途がある。 7ビットのデータチャンクは、7ビットのASCII文字だけを転送する場合など、8ビットより効率的なことがある。
文字の長さについて合意したら、両方のシリアル機器は、データのエンディアンについても合意する必要がある。 データは最上位ビット(msb)から送られるのか、それとも最下位ビット(lsb)からなのか。 特に明記されていない場合、たいていデータは最下位ビット(lsb)から先に転送されると考えてよい。
同期ビット
同期ビットは、それぞれのデータチャンクと一緒に転送される、2つまたは3つの特別なビットである。 これらはスタートビットとストップビットである。 その名のとおり、これらのビットはパケットの始まりと終わりを示す。 スタートビットは常に1つだけだが、ストップビットの数は1つまたは2つに設定でき(たいてい1つのままにされる)。
スタートビットは、アイドル状態のデータ線が1から0に変化することで常に示され、ストップビットは線を1に保つことでアイドル状態へと戻る。
パリティビット
パリティは、非常に単純で低レベルなエラーチェックの一種である。
奇数パリティと偶数パリティの2種類がある。
パリティビットを求めるには、データバイトの5〜9ビットすべてを足し合わせ、その合計が偶数か奇数かによってビットを立てるかどうかを決める。
たとえば、パリティが偶数に設定されており、0b01011101(1の数が5個で奇数)というデータバイトに追加する場合、パリティビットは1に設定される。
逆に、パリティモードが奇数に設定されていれば、パリティビットは0になる。
パリティは任意であり、それほど広くは使われていない。 ノイズの多い伝送路でデータを送る際には役立つことがあるが、データ転送を多少遅くしてしまい、送信側と受信側の両方にエラー処理の実装が必要になる(たいてい、受信に失敗したデータは再送しなければならない)。
9600 8N1(具体例)
9600 8N1、すなわち9600ボー、データビット8、パリティなし、ストップビット1というのは、もっともよく使われるシリアルプロトコルのひとつである。 では、9600 8N1のパケットが実際にどのような形になるか、例を見てみよう。
ASCII文字の「O」と「K」を送信する機器は、2つのデータパケットを作ることになる。
O(大文字)のASCII値は79であり、これは8ビットの2進数で01001111になる。
一方、Kの2進数の値は01001011である。
あとは同期ビットを付け加えるだけである。
特に明記されてはいないが、データは最下位ビットから転送されると仮定されている。 それぞれのバイトが右から左へと読まれる形で送られていることに注目してほしい。
9600bpsで転送しているため、それぞれのビットをHIGHまたはLOWに保つ時間は1/9600bps、つまり1ビットあたり104マイクロ秒である。
送信される1バイトのデータごとに、実際には10ビットが送られている。スタートビット、8つのデータビット、そしてストップビットである。 そのため、9600bpsでは、実際には毎秒9600ビット、つまり毎秒960(9600÷10)バイトを送っていることになる。
これでシリアルパケットの構成方法が分かったところで、ハードウェアの話に進もう。 そこでは、これらの1と0、そしてボーレートが信号レベルでどのように実装されているかを見ていく。
配線とハードウェア
シリアルバスは、たった2本の配線、すなわちデータを送るための線と受け取るための線から成り立っている。 そのため、シリアル機器には2つのシリアルピン、つまり受信用のRXと送信用のTXが必要である。
ここで重要なのは、RXとTXというラベルは、その機器自身から見た呼び方だということである。 つまり、片方の機器のRXは、もう片方の機器のTXへとつなぐ必要があり、その逆もまた然りである。 VCCとVCC、GNDとGND、MOSIとMOSIのように同じ名前どうしをつなぐことに慣れていると奇妙に感じるかもしれないが、考えてみれば理にかなっている。 送信機は受信機と話すべきであり、別の送信機と話すべきではないからである。
両方の機器がデータを送信および受信できるシリアルインターフェースは、全二重または半二重のどちらかに分類される。 全二重とは、両方の機器が同時に送受信できることを意味する。 半二重通信では、シリアル機器は送信と受信を交互に行わなければならない。
シリアルバスの中には、送信側と受信側の機器間の接続がたった1本で済むものもある。 たとえば、SparkFunのシリアル対応LCDはひたすら「聞く」だけで、制御側の機器にデータを送り返す必要がない。 これは単方向(シンプレックス)シリアル通信と呼ばれるものである。 必要なのは、マスター側のTXからリスナー側のRX線への1本の配線だけである。
ハードウェアでの実装
ここまでは、非同期シリアルを概念的な側面から見てきた。 必要な配線は分かった。 では、シリアル通信は実際に信号レベルでどのように実装されているのだろうか。 実は、その方法は多岐にわたる。 シリアル信号にはさまざまな規格が存在する。 ここでは、シリアル信号のハードウェア実装としてよく使われる2つの方式、ロジックレベル(TTL)とRS-232を見てみよう。
マイクロコントローラやその他の低レベルなICがシリアル通信を行うとき、たいていTTL(トランジスタ・トランジスタ・ロジック)レベルで行われる。 TTLシリアル信号は、マイクロコントローラの電源電圧の範囲内、たいてい0Vから3.3Vまたは5Vの間に収まる。 VCCレベル(3.3V、5Vなど)の信号は、アイドル状態の線か、値が1のビットか、ストップビットのいずれかを示す。 0V(GND)の信号は、スタートビットか、値が0のデータビットのいずれかを表す。
RS-232は、いくつかの古いコンピュータや周辺機器で見られる規格であり、いわばTTLシリアルを逆さまにしたようなものである。 RS-232信号はたいてい-13Vから13Vの範囲だが、仕様上は±3Vから±25Vまでの範囲が許容されている。 これらの信号では、低い電圧(-5V、-13Vなど)が、アイドル状態の線か、ストップビットか、値が1のデータビットのいずれかを示す。 高いRS-232信号は、スタートビットか、値が0のデータビットのいずれかを意味する。 これはTTLシリアルとはちょうど逆の関係になる。
2つのシリアル信号規格を比べると、TTLのほうが組み込み回路への実装がずっと簡単である。 しかし、電圧レベルが低いため、長い伝送路では損失の影響を受けやすい。 RS-232や、あるいはRS-485のようなより複雑な規格のほうが、長距離のシリアル伝送には適している。
2つのシリアル機器を接続するときは、それぞれの信号電圧が一致していることを必ず確認すること。 TTLシリアル機器をRS-232バスに直接接続することはできない。 その場合は信号のレベルを変換する必要がある。
続いて、マイクロコントローラがパラレルバス上のデータをシリアルインターフェースとの間で変換するために使う道具、UARTについて見ていこう。
UART
このシリアルというパズルの最後のピースは、シリアルパケットを作り出し、なおかつ物理的なハードウェア線を制御できる何かを見つけることである。 そこで登場するのがUARTである。
汎用非同期受信/送信機(UART)は、シリアル通信を実装する役割を担う回路のブロックである。 基本的に、UARTはパラレルインターフェースとシリアルインターフェースの間を取り持つ仲介役として働く。 UARTの片方の端には8本ほどのデータ線(といくつかの制御ピン)からなるバスがあり、もう片方の端には、RXとTXという2本のシリアル配線がある。
UARTは単体のICとしても存在するが、たいていマイクロコントローラの内部に組み込まれている。 自分のマイクロコントローラにUARTが搭載されているかどうかは、データシートを確認する必要がある。 UARTをまったく持たないものもあれば、1つだけ持つもの、複数持つものもある。 たとえば、おなじみのATmega328を採用したArduino Unoは1つのUARTしか持たないが、ATmega2560を採用したArduino Megaには、なんと4つものUARTが搭載されている。
UART(Universal Asynchronous Receiver/Transmitter)という頭文字のRとTが示すとおり、UARTはシリアルデータの送信と受信の両方を担う。 送信側では、UARTは同期ビットとパリティビットを付け加えてデータパケットを作成し、設定されたボーレードに従って正確なタイミングでTX線からそのパケットを送り出さなければならない。 受信側では、UARTは想定されるボーレートに応じた頻度でRX線をサンプリングし、同期ビットを見分けて、データを取り出さなければならない。
より高度なUARTは、受信したデータをバッファに格納しておき、マイクロコントローラが取りに来るまでそこに保持する。 UARTはたいてい、先入れ先出し(FIFO)方式でバッファ内のデータを取り出す。 バッファはわずか数ビットのこともあれば、数千バイトに及ぶこともある。
ソフトウェアUART
マイクロコントローラにUARTが搭載されていない(あるいは数が足りない)場合、シリアルインターフェースをビットバンギング、つまりプロセッサが直接制御する方式で実現することもできる。 これは、ArduinoのSoftwareSerialライブラリのようなものが採用しているアプローチである。 ビットバンギングはプロセッサに大きな負荷をかけ、たいていUARTほど正確ではないが、いざというときには役に立つ。
よくある落とし穴
シリアル通信についてはこれでほぼ一通り説明した。 最後に、経験レベルを問わずエンジニアが陥りやすい、よくある間違いをいくつか紹介しておこう。
RXとTXの取り違え
単純なことのように思えるが、私自身も何度もやらかしたことのあるミスである。 ラベルを一致させたくなる気持ちは分かるが、シリアル機器どうしをつなぐときは、必ずRXとTXの配線を交差させること。
ボーレートの不一致
ボーレートは、シリアル通信における「言語」のようなものである。 2つの機器が異なる速度で話していると、データが誤って解釈されたり、まったく受信されなかったりすることがある。 受信側がでたらめなデータしか受け取っていない場合は、まずボーレートが一致しているかを確認しよう。
バスの競合
シリアル通信は、1本のシリアルバス上でちょうど2つの機器だけが通信することを想定して設計されている。 同じシリアル線で2つ以上の機器が同時に送信しようとすると、バスの競合が起きることがある。
たとえば、GPSモジュールをArduinoに接続する場合、そのモジュールのTX線をArduinoのRX線に配線することになるだろう。 しかし、そのArduinoのRXピンは、Arduinoのプログラム書き込みやシリアルモニタの使用時に使われるUSB-シリアル変換チップのTXピンにもすでに接続されている。 これにより、GPSモジュールとFTDIチップの両方が同時に同じ線で送信しようとする状況が起こりうる。
同じ線で2つの機器が同時にデータを送信しようとするのは望ましくない。 「うまくいって」も、どちらの機器もデータを送信できない結果に終わる。 最悪の場合、両方の機器の送信ラインが壊れてしまうこともある(まれではあるし、たいてい保護回路が備わっているが)。
逆に、1つの送信機器に複数の受信機器を接続するのは、比較的安全である。 仕様に厳密に沿っているとは言えず、経験豊富なエンジニアからは眉をひそめられるかもしれないが、動作はする。 たとえば、シリアルLCDをArduinoに接続する場合、もっとも簡単な方法は、LCDモジュールのRX線をArduinoのTX線につなぐことかもしれない。 ArduinoのTXはすでにUSBプログラマーのRX線に接続されているが、それでも送信ラインを制御している機器はひとつだけである。
このようにTX線を複数の機器へ分配するのは、ファームウェアの観点からは依然として危険を伴う。 どの機器がどの送信内容を受け取るかを選ぶことができないためである。 LCDが本来受け取るはずのないデータを受信してしまい、未知の状態に陥るよう命令されてしまう可能性がある。
一般論として、1本のシリアルバスには2つのシリアル機器、というのが原則である。
まとめ
これでシリアル通信について新しい知識が身についたところで、探求できる新しい概念、プロジェクト、技術が数多く広がっている。
同期式の通信規格など、他の通信規格についてもさらに学びたいなら、次のような通信プロトコルも確認してみてほしい。
- SPI(シリアルペリフェラルインターフェース):マイクロコントローラをセンサー、シフトレジスタ、SDカードなどの周辺機器に接続するためによく使われる。
- I2C:現在使われている主要な組み込み通信プロトコルのひとつであるI2Cの入門。
多くの技術がシリアル通信を大いに活用している。
シリアル通信が実際に動いているところを見てみたい場合は、次のようなチュートリアルもおすすめである。
- シリアル通信の信号レベルを変換したい場合は、ロジックレベルコンバータのチュートリアルを確認してほしい。
- Using a Serial LCD(シリアルグラフィックLCDの使い方)
- Serial Terminal Basics(シリアルターミナルの基礎)
- OpenLog Hookup Guide(OpenLogの使い方)
タグ: 通信、概念
出典:Serial Communication(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
SPI(シリアルペリフェラルインターフェース)
SPI(シリアルペリフェラルインターフェース)は、マイクロコントローラとシフトレジスタ、センサー、SDカードのような小型の周辺機器の間でデータをやり取りするために、よく使われるインターフェースバスである。 クロック線とデータ線を別々に持ち、さらに通信したい機器を選ぶための選択線も備えている。
参考になるチュートリアル:
このチュートリアルを読む前に知っておくと役立つ内容は、次のとおりである。
シリアルポートの何が問題なのか
TX線とRX線を使う一般的なシリアルポートは「非同期(asynchronous)」と呼ばれる。これは、データがいつ送られるかを制御する仕組みがなく、両側が正確に同じ速度で動作している保証もないためである。 コンピュータはたいてい、すべてを単一の「クロック」(コンピュータに搭載され、あらゆる動作を駆動するメインの水晶振動子)に同期させることを前提としているため、わずかにクロックの異なる2つのシステムどうしが通信しようとすると、これが問題になることがある。
この問題を回避するため、非同期シリアル通信では、各バイトにスタートビットとストップビットを追加し、受信側がデータの到着に合わせて同期を取り直せるようにしている。 両側は、あらかじめ伝送速度(たとえば9600ビット毎秒など)についても合意しておく必要がある。 伝送速度にわずかなずれがあっても、受信側は各バイトの先頭で同期を取り直すため、問題にはならない。
(ちなみに、上の図で「11001010」が0x53と一致していないことに気づいたなら、なかなか鋭い観察眼である。シリアルプロトコルではたいてい最下位ビットから先に送信されるため、もっとも小さいビットが一番左に来る。下位ニブルは実際には0011=0x3であり、上位ニブルは0101=0x5である。)
非同期シリアルは問題なく機能するが、各バイトに追加するスタートビットとストップビットのオーバーヘッドや、データを送受信するために必要な複雑なハードウェアといった負担がある。 また、自分のプロジェクトでも経験したことがあるかもしれないが、両側の速度が一致していないと、受信データは文字化けしてしまう。 これは、受信側が非常に特定のタイミング(上の図の矢印の位置)でビットをサンプリングしているためであり、受信側が誤ったタイミングを見ていれば、誤ったビットを読み取ってしまう。
同期式という解決策
SPIは少し異なる方式で動作する。 これは「同期式」のデータバスであり、データ用の線とは別に、両側を完全に同期させ続ける「クロック」用の線を持つ。 このクロックは発振する信号であり、受信側にデータ線上のビットをいつサンプリングすべきかを正確に伝える。 これはクロック信号の立ち上がり(ローからハイ)または立ち下がり(ハイからロー)のどちらかのエッジに対応しており、どちらを使うかはデータシートに明記されている。 受信側はそのエッジを検出すると、すぐにデータ線を見て次のビットを読み取る(下の図の矢印を参照)。 クロックがデータと一緒に送られてくるため、速度をあらかじめ指定しておく必要はないが、各デバイスにはそれぞれ動作できる最高速度がある(適切なクロックエッジと速度の選び方については、後ほど説明する)。
SPIがこれほど人気がある理由のひとつは、受信側のハードウェアが単純なシフトレジスタで済むという点である。 これは、非同期シリアルが必要とする本格的なUART(汎用非同期受信/送信機)に比べて、はるかに単純で(そして安価な)ハードウェアである。
データの受信
Note
SPIのピン名としてPICO/POCIという表記を見慣れないかもしれない。SparkFunは、コントローラとペリフェラルの間の信号を表すのに「Master」「Slave」という用語を使うのをやめようという、OSHWA(オープンソースハードウェア協会)の他のメンバーとの決議に加わっている。これらの用語は廃止されたものと見なされ、現在ではそれぞれ「controller(コントローラ)」「peripheral(ペリフェラル)」という用語に置き換えられている。
旧称 新称 Master Controller Slave Peripheral MISO POCI MOSI PICO SS CS 命名規則は、メーカーやプログラミング言語、企業、団体によって異なる場合がある。
一方向の通信にはこれでよさそうだが、では逆方向にデータを送り返すにはどうすればよいのだろうか、と思うかもしれない。 ここから少し話が込み入ってくる。
SPIでは、片側だけがクロック信号を生成する(たいていCLKまたはSCK、Serial ClocKと呼ばれる)。 クロックを生成する側を「コントローラ」、もう一方を「ペリフェラル」と呼ぶ。 コントローラは常にひとつだけ(たいていマイクロコントローラ自身)だが、ペリフェラルは複数存在することがある(これについては後ほど詳しく説明する)。
コントローラからペリフェラルへデータを送るときは、PICO(Peripheral In / Controller Out)と呼ばれるデータ線を使って送られる。 ペリフェラルがコントローラに応答を送り返す必要がある場合、コントローラはあらかじめ決められた回数だけクロックを生成し続け、ペリフェラルはPOCI(Peripheral Out / Controller In)と呼ばれる3本目のデータ線にデータを乗せる。
先ほどの説明で「あらかじめ決められた」という表現を使ったことに注目してほしい。 コントローラは常にクロック信号を生成する側であるため、ペリフェラルがいつデータを返す必要があり、どれだけの量のデータが返されるのかを前もって知っておかなければならない。 これは、任意のタイミングでどちらの方向にも任意の量のデータを送ることができる非同期シリアルとは大きく異なる点である。 実際には、SPIはたいてい非常に決まったコマンド体系を持つセンサーとやり取りするために使われるため、これは問題にならない。 たとえば「データを読み取る」というコマンドをある機器に送れば、その機器がたとえば常に2バイトを返してくることが分かっている、というような場合である (可変長のデータを返したい場合は、まずデータ長を示す1〜2バイトを返し、その後コントローラが必要な分だけデータを取得するという方法もある)。
なお、SPIは「全二重」(送信線と受信線が別々にある)であるため、状況によっては送信と受信を同時に行うこともできる(たとえば、前回のセンサー値を取得しながら次の測定を要求する場合など)。 これが可能かどうかは、使用する機器のデータシートに記載されている。
チップセレクト(CS)
もうひとつ知っておくべき線として、CS(チップセレクト)がある。 これは、ペリフェラルに対してデータの送受信を開始すべきタイミングを伝えるものであり、複数のペリフェラルが存在する場合には、どのペリフェラルと通信したいかを選択するためにも使われる。
CS線はたいてい通常時はHIGHに保たれており、これによってそのペリフェラルはSPIバスから切り離された状態になる(このような論理方式は「アクティブロー」と呼ばれ、イネーブル線やリセット線でよく使われる)。 ペリフェラルにデータを送信する直前に、この線をLOWにすることでペリフェラルが有効になる。 そのペリフェラルの使用が終わったら、再びHIGHに戻す。 シフトレジスタでは、これは「ラッチ」入力に対応しており、受信したデータを出力線へと転送する役割を持つ。
複数のペリフェラル
複数のペリフェラルをSPIバスに接続する方法は2通りある。
1つ目は、一般的な方法として、それぞれのペリフェラルに個別のCS線を用意する方法である。 特定のペリフェラルと通信するには、そのペリフェラルのCS線をLOWにし、他のすべてのCS線はHIGHのままにしておく(2つ以上のペリフェラルを同時に有効化してしまうと、両方が同じPOCI線で応答しようとして、データが化けてしまう可能性がある)。 ペリフェラルの数が多いほど、CS線もたくさん必要になる。出力ピンが足りなくなってきたら、CS出力を増やせるバイナリデコーダICを使う方法もある。
2つ目の方法として、一部の部品は数珠つなぎ(デイジーチェーン)で接続することを想定しており、あるペリフェラルのPOCI(出力)を次のペリフェラルのPICO(入力)につないでいく。 この場合、1本のCS線がすべてのペリフェラルに接続される。 すべてのデータが送信し終わると、CS線がHIGHに戻され、すべてのチップが同時に有効化される。 この方式は、数珠つなぎにしたシフトレジスタやアドレサブルLEDドライバーでよく使われる。
このレイアウトでは、データはあるペリフェラルから次のペリフェラルへと溢れ出るように流れていくため、特定の1つのペリフェラルにデータを送りたい場合でも、すべてのペリフェラルに届くだけのデータ量を送信する必要がある。 また、最初に送信したデータは、最後のペリフェラルに届くことになる点にも注意してほしい。
このタイプのレイアウトは、LEDの駆動のようにデータを受け取る必要のない、出力専用の用途でよく使われる。 このような場合、コントローラのPOCI線は未接続のままにしておいてよい。 とはいえ、コントローラにデータを返す必要がある場合は、デイジーチェーンのループを閉じる(上の図の青い配線)ことでも実現できる。 ただし、この方法を取る場合、ペリフェラル1からの戻りデータは、コントローラに届くまでにすべてのペリフェラルを通過することになるため、必要なデータを取得できるだけの十分な受信コマンドを送るようにすること。
SPIのプログラミング
多くのマイクロコントローラには、データの送受信に関するあらゆる細部を処理してくれる、非常に高速なSPI専用の周辺回路が内蔵されている。 SPIプロトコル自体も十分にシンプルなので、I/O線を正しい順序で操作してデータを転送する独自のルーチンを自分で書くこともできる。
Arduinoを使っている場合、SPI機器と通信する方法は2通りある。
shiftIn()とshiftOut()というコマンドを使う方法。これらはソフトウェアで実装されたコマンドであり、どのピンの組み合わせでも動作するが、いくらか低速になる。- マイクロコントローラに内蔵されたSPI用ハードウェアを活用する、SPIライブラリを使う方法。上記のコマンドよりもはるかに高速だが、特定のピンでしか動作しない。
インターフェースを設定する際には、いくつかのオプションを選ぶ必要がある。 これらのオプションは、通信相手の機器の設定と一致している必要があるため、その機器のデータシートで何が必要かを確認すること。
- インターフェースは、最上位ビット(MSB)から先に送ることも、最下位ビット(LSB)から先に送ることもできる。ArduinoのSPIライブラリでは、これは
setBitOrder()関数で制御する。 - ペリフェラルは、クロックパルスの立ち上がりエッジか立ち下がりエッジのどちらかでデータを読み取る。さらに、クロックがHIGHのときとLOWのときのどちらを「アイドル」状態と見なすかも選べる。ArduinoのSPIライブラリでは、これら両方の設定を
setDataMode()関数で制御する。 - SPIは非常に高速(毎秒数百万バイト)に動作できるが、これは一部の機器には速すぎることがある。そのような機器に対応するため、データレートを調整できる。ArduinoのSPIライブラリでは、速度は
setClockDivider()関数で設定し、コントローラのクロック(たいていのArduinoでは16MHz)を8MHz(÷2)から125kHz(÷128)までの範囲に分周する。 - SPIライブラリを使う場合、そのハードウェアはSCK、PICO、POCIという特定のピンに固定配線されているため、これらのピンをそのまま使う必要がある。専用のCSピンも用意されている(SPIハードウェアを機能させるには、少なくとも出力に設定しておく必要がある)が、ペリフェラル機器へのCSには、他の任意の出力ピンを使うこともできる。
- 古いArduinoでは、CSピンを自分で制御する必要があり、データ転送の前にLOWにし、転送後にHIGHに戻す。Dueのような新しいArduinoでは、データ転送の一部として各CSピンを自動的に制御できる。
まとめ
これでSPIについての知識が身についたはずである。
コツと注意点
- 高速な信号を扱うため、SPIは短距離(数フィート程度まで)でのデータ送信にのみ使うべきである。それより遠くまでデータを送る必要がある場合は、クロック速度を落とすか、専用のドライバーICの使用を検討すること。
- 思ったとおりに動作しない場合、ロジックアナライザーが非常に役立つ道具になる。Saleae USB Logic Analyzerのような高機能なアナライザーであれば、データバイトを解読して表示したり記録したりすることもできる。
SPIの利点
- 非同期シリアルよりも高速である
- 受信側のハードウェアを単純なシフトレジスタで済ませられる
- 複数のペリフェラルに対応できる
SPIの欠点
- 他の通信方式に比べて、より多くの信号線(配線)を必要とする
- 通信内容をあらかじめ明確に定義しておく必要がある(好きなタイミングで任意の量のデータを送ることはできない)
- コントローラがすべての通信を制御しなければならない(ペリフェラルどうしが直接会話することはできない)
- たいてい、それぞれのペリフェラルに個別のCS線が必要であり、ペリフェラルの数が多い場合には扱いにくくなることがある
さらに学びたいなら、次のような他の通信方式のチュートリアルも確認してみてほしい。
タグ: 通信、概念
出典:Serial Peripheral Interface (SPI)(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
I2C
このチュートリアルでは、I2C通信プロトコルについて、なぜそれを使いたくなるのか、そしてどのように実装されているのかを学ぶ。
Inter-Integrated Circuit(I2C)プロトコルは、複数の「ペリフェラル」デジタル集積回路(「チップ」)が、1つまたは複数の「コントローラ」チップと通信できるようにするためのプロトコルである。 SPI(シリアルペリフェラルインターフェース)と同じく、単一の機器の中での短距離通信を想定している。 また、非同期シリアルインターフェース(RS-232やUARTなど)と同じく、情報をやり取りするのに必要な信号線はたった2本だけである。
参考になるチュートリアル:
このチュートリアルを読む前に知っておくと役立つ内容は、次のとおりである。
- 2進数
- シリアル通信
- SPI(シリアルペリフェラルインターフェース)
- Shift registers(シフトレジスタ)
- ロジックレベル
なぜI2Cを使うのか
I2Cで通信したくなる理由を理解するには、まず他の選択肢と比較して、どこが違うのかを見る必要がある。
シリアルUARTポートの何が問題なのか
シリアルポートは非同期(クロックデータが送られない)であるため、それを使う機器は事前にデータレートについて合意しておかなければならない。 また、両方の機器のクロックはほぼ同じ速度でなければならず、その状態を保ち続ける必要がある。両端のクロック速度に大きな差が生じると、データが文字化けしてしまう。
非同期シリアルポートにはハードウェア面でのオーバーヘッドがある。両端のUARTは比較的複雑であり、ソフトウェアで正確に実装しようとすると難しい。 それぞれのデータフレームには少なくとも1つのスタートビットとストップビットが含まれるため、8ビットのデータを送るのに10ビット分の送信時間が必要になり、実効データレートを圧迫する。
非同期シリアルポートのもうひとつの根本的な弱点は、本質的に2台の機器(それもちょうど2台)どうしの通信にしか向いていないという点である。 1つのシリアルポートに複数の機器を接続すること自体は可能だが、バスの競合(2台の機器が同時に同じ線を駆動しようとする状態)が常に問題となり、機器を損傷から守るには慎重な対策(たいてい外部のハードウェア)が必要になる。
最後に、データレートも課題である。 非同期シリアル通信には理論上の上限はないが、たいていのUARTデバイスは決まった一定のボーレートしかサポートしておらず、その最大値はたいてい毎秒230400ビット程度である。
SPIの何が問題なのか
SPIのもっとも分かりやすい欠点は、必要なピンの数である。 1つのコントローラと1つのペリフェラルをSPIバスで接続するだけでも4本の線が必要であり、ペリフェラルを追加するたびに、コントローラ側にチップセレクト用のI/Oピンが1本ずつ追加で必要になる。 このピン接続の急速な増加は、多数の機器を1つのコントローラに接続したい状況では望ましくない。 また、機器ごとの接続本数が多いことは、PCBのレイアウトが窮屈な状況では配線をより難しくする要因にもなる。
SPIはバス上にコントローラを1つしか置けないが、ペリフェラルの数には(バスに接続された機器の駆動能力と、利用できるチップセレクトピンの数の制約はあるものの)特に制限がない。
SPIは、高速な全二重(送受信を同時に行える)接続に向いており、機器によっては10MHz(つまり毎秒1000万ビット)を超えるクロック速度をサポートし、速度のスケーラビリティにも優れている。 両端のハードウェアはたいてい非常に単純なシフトレジスタで済むため、ソフトウェアでの実装も容易である。
そこで登場するI2C。両方のいいとこ取り
I2Cは、非同期シリアルと同じくたった2本の配線しか必要としないが、その2本の配線で最大1008台ものペリフェラルデバイスをサポートできる。 また、SPIとは異なり、I2Cは複数コントローラのシステムにも対応しており、複数のコントローラがバス上のすべてのペリフェラルデバイスと通信できる(ただし、コントローラどうしがバス上で直接会話することはできず、バスの使用権を順番にやり取りする必要がある)。
データレートは非同期シリアルとSPIの中間程度であり、たいていのI2Cデバイスは100kHzまたは400kHzで通信できる。 I2Cには多少のオーバーヘッドがあり、8ビットのデータを送るたびに、メタデータとして1ビット(後述する「ACK/NACK」ビット)を追加で送信する必要がある。
I2Cの実装に必要なハードウェアは、SPIよりは複雑だが、非同期シリアルよりは単純である。 ソフトウェアでもかなり手軽に実装できる。
Note
I2Cバス上の機器どうしの関係を表す用語として、「マスター」「スレーブ」という言葉に馴染みがあるかもしれない。これらの用語は廃止されたものと見なされ、現在ではそれぞれ「コントローラ」「ペリフェラル」という用語に置き換えられている。命名規則は、メーカーやプログラミング言語、企業、団体によって異なる場合がある(main/secondary、initiator-responder、source/replicaなど)。
I2Cの歴史
I2Cは、もともと1982年にPhilipsによって、同社のさまざまなチップ向けに開発された。 当初の仕様では100kHzの通信しかサポートされておらず、アドレスも7ビットに限られていたため、バス上の機器数は112台までに制限されていた(いくつかのアドレスは予約されており、有効なI2Cアドレスとしては使われない)。 1992年に最初の公開仕様が発表され、400kHzのファストモードと、拡張された10ビットアドレス空間が追加された。 たいていの場合(たとえば多くのArduino互換ボードに搭載されているATmega328では)、I2Cのサポートはこの時点で止まっている。 このほかにも、次の3つの追加モードが規定されている。
- ファストモードプラス(1MHz)
- ハイスピードモード(3.4MHz)
- ウルトラファストモード(5MHz)
「素の」I2Cに加えて、1995年にIntelはSystem Management Bus(SMBus)と呼ばれる派生仕様を導入した。 SMBusは、PCマザーボード上のサポートIC間の通信の予測可能性を最大化することを目的とした、より厳密に制御された規格である。 I2Cとの最大の違いは、SMBusが10kHzから100kHzまでの速度に制限されているのに対し、I2Cは0kHzから5MHzまでの機器をサポートできる点である。 SMBusには、低速動作を無効にするクロックタイムアウトモードが含まれているが、多くのSMBus機器は、組み込みI2Cシステムとの相互運用性を最大化するために、それでも低速動作をサポートしている。
ハードウェアレベルで見るI2C
信号
それぞれのI2Cバスは、SDAとSCLという2つの信号から構成される。 SDA(Serial Data)はデータ信号であり、SCL(Serial Clock)はクロック信号である。 クロック信号は常にその時点のバスコントローラによって生成されるが、一部のペリフェラルデバイスは、コントローラがさらにデータを送るのを遅らせたり(あるいはコントローラがクロックを出す前にデータを準備する時間を稼いだりする)ために、クロックを一時的にLOWに固定することがある。 これは「クロックストレッチング」と呼ばれ、後述のプロトコルの節で説明する。
UARTやSPIの接続とは異なり、I2Cバスのドライバーは「オープンドレイン」方式になっている。 つまり、対応する信号線をLOWに引き下げることはできるが、HIGHに駆動することはできない。 そのため、ある機器が線をHIGHにしようとし、別の機器がLOWに引き下げようとするといったバスの競合が起こりえず、ドライバーの損傷やシステム内での過大な電力消費のリスクがなくなる。 それぞれの信号線にはプルアップ抵抗が付いており、どの機器も線をLOWにしていないときに信号をHIGHへと戻す役割を果たす。
抵抗値の選び方はバス上の機器によって変わるが、経験則としてはまず4.7kΩの抵抗から始め、必要に応じて値を下げていくのがよい。 I2Cはかなり堅牢なプロトコルであり、短い配線(2〜3m程度)であれば問題なく使える。 配線が長い場合や、機器の数が多いシステムでは、より小さい抵抗値のほうが適している。
SparkFunのカタログで扱われているたいていのI2Cデバイスには、SCLピンとSDAピン用のプルアップ抵抗があらかじめ搭載されている。 同じバスに多数のI2Cデバイスを接続する場合、いくつかの機器のプルアップ抵抗を切り離すことで、抵抗の合成値を調整する必要が出てくることがある。 接続する内容や設計にもよるが、同じバスにはおよそ7台程度のI2Cデバイスを接続できる。 問題が生じた場合は、ホビーナイフでジャンパーパッドをつなぐトレースを切断するか、はんだごてを使ってジャンパーパッドのはんだを取り除くことで、特定の基板上の抵抗を切り離すことができる。
配線をより長く延ばす必要がある設計の場合は、PCA9615のような信号を延長する専用ICを使うという方法もある。
信号のロジックレベル
バス上の機器は実際には信号をHIGHに駆動しないため、I2Cには異なるI/O電圧を持つ機器どうしを接続する際にも、ある程度の柔軟性がある。 一般に、片方の機器がもう片方よりも高い電圧で動作しているシステムでは、間にレベルシフト回路を挟まなくても、I2Cで両者を接続できる場合がある。 コツは、プルアップ抵抗を2つの電圧のうち低いほうに接続することである。 これは、低いほうのシステム電圧が、高いほうのシステムのHIGHレベル入力電圧を上回っている場合に限って有効である。たとえば5VのArduinoと3.3Vの加速度センサーの組み合わせなどである。 Arduinoの設計やI2Cデバイスによっては、動作の一貫性を保ち、バス上のいずれの機器も傷めないために、ロジックレベルコンバータを使うことをおすすめする。
2つのシステム間の電圧差が大きすぎる場合(たとえば5Vと2.5Vなど)、SparkFunではPCA9306レベルトランスレータブレイクアウトのような、シンプルなI2Cレベルシフター基板も扱っている。 この専用のレベルシフター基板にはイネーブル線も付いており、特定の機器への通信を無効にするために使うことができる。 これは、同じアドレスを持つ複数の機器を1つのコントローラに接続したい場合(Wiiヌンチャクなどがよい例である)に便利である。 双方向のロジックレベルコンバータを使うという方法もある。
プロトコル
I2Cによる通信は、UARTやSPIによる通信よりも複雑である。 バス上の機器がそれを有効なI2C通信として認識するには、信号が特定のプロトコルに従っている必要がある。 幸い、たいていの機器は細かい部分をすべて処理してくれるため、私たちはやり取りしたいデータの内容に集中できる。
基本
メッセージは2種類のフレームに分けられる。ひとつは、コントローラがメッセージの送信先となるペリフェラルを示すアドレスフレームであり、もうひとつは、コントローラからペリフェラルへ、あるいはその逆方向にやり取りされる8ビットのデータメッセージであるデータフレーム(1つまたは複数)である。 データはSCLがLOWになったあとにSDA線に置かれ、SCLがHIGHになったあとにサンプリングされる。 クロックのエッジからデータの読み書きまでの時間は、バス上の機器によって定義されており、チップごとに異なる。
スタート条件
アドレスフレームを開始するため、コントローラ機器はSCLをHIGHのままにしつつ、SDAをLOWに引き下げる。 これにより、すべてのペリフェラルデバイスに、これから通信が始まることが伝わる。 2台のコントローラが同時にバスの所有権を得ようとした場合、先にSDAをLOWに引き下げたほうが競争に勝ち、バスの制御権を得る。 バスの制御権を他のコントローラに明け渡すことなく、新しい通信シーケンスを開始する「リピーテッドスタート」を発行することも可能であり、これについては後ほど説明する。
アドレスフレーム
アドレスフレームは、どの新しい通信シーケンスでも必ず最初に来る。 7ビットアドレスの場合、アドレスは最上位ビット(MSB)から先にクロック出力され、続いて読み取り(1)か書き込み(0)かを示すR/Wビットが送られる。
フレームの9ビット目はNACK/ACKビットである。 これはデータフレームであれアドレスフレームであれ、すべてのフレームに共通している。 フレームの最初の8ビットが送信されると、受信側の機器にSDAの制御権が渡される。 受信側の機器が9番目のクロックパルスより前にSDA線をLOWに引き下げなければ、その受信機器がデータを受信できなかったか、メッセージの解析方法が分からなかったと判断できる。 その場合、やり取りは中断され、その後どう進めるかはシステムのコントローラに委ねられる。
データフレーム
アドレスフレームが送信されたあと、データの送信が始まる。 コントローラは一定の間隔でクロックパルスを生成し続けるだけであり、R/Wビットが読み取りか書き込みかに応じて、コントローラかペリフェラルのどちらかがSDA上にデータを乗せる。 データフレームの数は任意であり、たいていのペリフェラルデバイスは内部レジスタを自動的にインクリメントするため、続けて読み書きすると次のレジスタが順番に対象になる。
ストップ条件
すべてのデータフレームが送信されると、コントローラはストップ条件を生成する。 ストップ条件は、SCLが0から1(LOWからHIGH)へ遷移したあとで、SDAが0から1へ遷移し、SCLがHIGHのまま保たれることとして定義される。 通常のデータ書き込み動作中は、誤ったストップ条件を避けるため、SCLがHIGHの間はSDAの値を変化させてはならない。
プロトコルの高度な話題
10ビットアドレス
10ビットアドレス方式では、ペリフェラルのアドレスを送るのに2つのフレームが必要になる。
最初のフレームはb11110xyzというコードで構成され、「x」はペリフェラルアドレスの最上位ビット、「y」はペリフェラルアドレスの8ビット目、「z」は前述の読み取り/書き込みビットである。
最初のフレームのACKビットは、アドレスの先頭2ビットが一致するすべてのペリフェラルによって立てられる。
通常の7ビット転送と同じように、直後にもう1つの転送が始まり、この転送にはアドレスの7:0ビットが含まれる。 この時点で、アドレス指定されたペリフェラルはACKビットで応答するはずである。 もし応答しなければ、その失敗モードは7ビットシステムの場合と同じである。
10ビットアドレスの機器は、7ビットアドレスの機器と共存できる。 アドレスの先頭にある「11110」の部分は、有効な7ビットアドレスのどれとも一致しないためである。
リピーテッドスタート条件
コントローラが、バス上の他のコントローラに割り込まれることなく、複数のメッセージを一度にやり取りできるようにしたい場合がある。 そのために定義されているのが、リピーテッドスタート条件である。
リピーテッドスタートを行うには、SCLがLOWの間にSDAをHIGHに戻し、SCLをHIGHにしたあと、SCLがHIGHのままの状態で再びSDAをLOWにする。 バス上でストップ条件が発生していないため、それまでの通信は本当の意味では完了しておらず、現在のコントローラがバスの制御権を保持し続ける。
この時点で、次のメッセージの送信を開始できる。 この新しいメッセージの構文は、他のメッセージと同じであり、アドレスフレームに続いてデータフレームが送られる。 リピーテッドスタートの回数に制限はなく、コントローラはストップ条件を発行するまでバスの制御を保持し続ける。
クロックストレッチング
コントローラのデータレートが、ペリフェラルがデータを供給できる速度を上回ってしまうことがある。 これは、データがまだ準備できていない場合(たとえばペリフェラルがアナログ-デジタル変換をまだ完了していない場合)や、前の処理がまだ終わっていない場合(たとえば不揮発性メモリへの書き込みが完了しておらず、他の要求に応じる前にそれを完了させる必要があるEEPROMなど)に起こりうる。
このような場合、一部のペリフェラルデバイスは「クロックストレッチング」と呼ばれる動作を行う。 本来、クロッキングはすべてコントローラによって駆動されており、ペリフェラルはコントローラのクロックパルスに応じて、単にバスにデータを乗せたり、バスからデータを受け取ったりするだけである。 データ転送の過程のどの時点でも、アドレス指定されたペリフェラルは、コントローラがSCL線を解放したあとも、それをLOWに保持し続けることができる。 コントローラは、ペリフェラルがSCL線を解放するまで、それ以上のクロックパルスやデータ転送を控えなければならない。
Qwiic Connectシステム
SparkFun Qwiic Connectシステムは、SparkXのNateによって開発され、2017年にリリースされた。 馴染みがなければ説明すると、Qwiic Connectシステムは、I2Cセンサー、アクチュエータ、シールド、ケーブルなどからなるエコシステムであり、試作をより速く、よりミスの少ないものにしてくれる。
Qwiic対応のすべての基板は、共通の1mmピッチで4ピンのJSTコネクタを採用しており、基板間の配線をはんだ付けしたり被覆を剥いたりする余分な手間を省いてくれる。 このコネクタは必要なPCB上のスペースを削減し、極性のある接続なので配線を間違える心配もない。 複数の基板を数珠つなぎにすることで、同じバスに複数の機器を接続することもできる。
Qwiicケーブル(4ピンJST)は、開発ボードからセンサー、シールド、アクセサリー基板などへ簡単に差し込むことができ、新しい試作を組み立てる作業を手軽にしてくれる。
ブレッドボード上でSDAとSCLの配線をうっかり入れ替えてしまう心配もない。 Qwiicコネクタには極性があるため、最初から必ず正しく配線できる。
いよいよI2Cバスの力を活用するときである。 たいていのQwiic基板には2つ以上のコネクタが付いており、複数の機器を接続できるようになっている。
まとめ
I2Cは比較的複雑なインターフェースであり、それを扱うのに役立つ情報源が数多く存在する。 以下にいくつか特に参考になるものを挙げる。
- Wikipedia Article on I2C:完璧ではないが、出発点としては悪くない
- Standards Doc:かつてのPhilips SemiconductorはNXPになった。これはI2Cの公式仕様書である
- I2C primer:I2Cと関連技術についての公式入門書
- Linux Tools for I2C:pcDuinoやRaspberry PiのようなLinux組み込み環境で、I2Cや関連バスを扱うための便利なツール集
- Qwiic Connect System:SparkFunのQwiic Connectシステムについて
長距離でI2Cを使いたい場合は、専用のPCA9615差動I2Cバスエクステンダーを確認してみてほしい。
タグ: 通信、概念、Qwiic
出典:I2C(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
シリアルターミナルの基礎
COMポート、ボーレート、フロー制御、TX、RX。 これらはすべて、電子工作、特にマイクロコントローラを扱うときによく飛び交う言葉である。 これらの用語や、それが使われる文脈に馴染みがない人にとっては、時に混乱を招くこともある。 このチュートリアルでは、これらの用語が何を意味し、それらがどのようにつながってターミナル上でのシリアル通信という全体像を作り上げているのかを解説する。
簡単に言えば、シリアルターミナルプログラムは、マイクロコントローラを扱う作業をはるかに簡単にしてくれる。 マイクロコントローラとの間で送受信されるデータを見ることができ、そのデータはトラブルシューティングやデバッグ、通信テスト、センサーの校正、モジュールの設定、データの監視など、さまざまな目的に使える。 ターミナルアプリケーションの使い方を一通り身につければ、電子工作やプログラミングの強力な武器になる。
このチュートリアルで扱う内容:
世の中には数多くのターミナルプログラムがあり、それぞれに長所と短所がある。 このチュートリアルでは、ターミナルとは何か、どのターミナルプログラムがどんな状況やOSに向いているか、そして各プログラムの設定方法と使い方について解説する。
参考になるチュートリアル:
このチュートリアルに入る前に、次の話題に馴染んでおくとよい。
- シリアル通信
- アナログとデジタルの違い
- 2進数
- 16進数
- ASCII
- Installing FTDI Drivers(FTDIドライバーのインストール)
- RS-232 vs TTL Serial Communication(RS-232とTTLシリアル通信の違い)
- ロジックレベル
- コネクタの基礎、特にUSBの節
ターミナルとは何か
ターミナルエミュレータにはさまざまな呼び名があり、「ターミナル」という言葉自体もいろいろな意味で使われるため、人によって指しているものが異なり、混乱を招くことがある。 ここで整理しておこう。
簡単な歴史
「ターミナル」という言葉の由来を理解するには、それほど遠くない過去にさかのぼる必要がある。 コンピュータが大きく、かさばり、部屋全体を占領していた時代、コンピュータとやり取りする方法はごくわずかしかなかった。 パンチカードや紙テープのリールもそのひとつだったが、データの入力と取得に使われるターミナルというものも存在した。 これらのターミナルにはさまざまな形状があったが、やがて後のパーソナルコンピュータの祖先のような姿になっていった。 多くはキーボードと画面から構成されていた。 文字だけを表示できるターミナルはテキストターミナルと呼ばれ、後にグラフィカルターミナルが登場した。 ターミナルエミュレータについて語るとき、参照されているのはこの過去のターミナルたちである。
現代のターミナル
今日のターミナルプログラムは、こうしたかつてのターミナルで作業していた体験を「エミュレート(模倣)」している。 これらはエミュレータ、アプリケーション、プログラム、ターム、TTYなどと呼ばれる。 このチュートリアルでは、単に「ターミナル」という言葉を使うことにする。 かつては特定の種類のコンピュータターミナルをエミュレートするものが多かったが、今日のたいていのターミナルはもっと汎用的なインターフェースを持っている。
現代のOSで作業する際は、こうしたアプリケーションの中で作業することを表すのにターミナルウィンドウという言葉がよく使われる。 他のチュートリアルやハードウェアの使い方ガイドを読んでいると、ターミナルウィンドウを開くよう求められることがよくあるはずだが、それは好みのターミナルプログラムのどれかを開けばよいという意味である。
また、多くのターミナルプログラムはシリアル通信以外にもさまざまな機能を備えている点も触れておく価値がある。 telnetやSSHのようなネットワーク通信の機能を持つものも多いが、このチュートリアルではそうした機能は扱わない。
ターミナルとコマンドラインの違い
ターミナルはコマンドプロンプトではないが、両者はいくらか似ている。 Mac OSでは、コマンドプロンプトそのものが「ターミナル」と呼ばれているため、この言葉を使うとよく混乱が生じる。 いずれにせよ、ターミナルウィンドウでできることの一部はコマンドプロンプトでも実行できるが、その逆は成り立たない。ターミナルウィンドウの中でコマンドライン用の命令を実行することはできない。 コマンドラインインターフェースの中でシリアルターミナル接続を作る方法については、このチュートリアルの後半で扱う。 今はまず、この2つを区別できるようにしておこう。
基本用語
シリアルターミナルウィンドウを扱う際に知っておくべき用語をいくつか紹介する。 これらの用語の多くは、シリアル通信のチュートリアルでさらに詳しく扱っているので、全体像をつかむためにもぜひそちらも読んでほしい。
ASCII:American Standard Code for Information Interchangeの文字コード化方式の略で、ASCIIはキーボード上の特殊文字を、多くのプログラムや機器が認識できる7ビットの2進数の整数に変換する。シリアルターミナルを扱う際は、ASCII表が非常に役立つ。
ボーレート:簡単に言えば、データがどれくらいの速さで送受信されているかを示す。9600が標準的な速度だが、機器によっては他の速度が使われることもある。通信の鎖でつながったすべての機器は同じ速度で「話す」必要があり、そうでなければどちらか一方でデータが誤って解釈されてしまうことを覚えておこう。
送信(TX):Data OutやTXOとも呼ばれる。どの機器でもTX線はデータを送信するためのものであり、通信したい相手の機器のRX線に接続する必要がある。
受信(RX):Data InやRXIとも呼ばれる。どの機器でもRX線はデータを受信するためのものであり、通信したい相手の機器のTX線に接続する必要がある。
COMポート(シリアルポート):パソコンに接続する機器にはそれぞれ特定のポート番号が割り当てられる。これにより、接続された各機器を識別しやすくなる。ある機器にポートが割り当てられると、その機器を接続するたびに同じポートが使われる。
自分の機器は、パソコン上でCOM#(Windowsマシンの場合)または**/dev/tty.usbserial-########**(Mac/Linuxコンピュータの場合)として表示される。ここで#の部分は固有の数字やアルファベットである。
TTY:TTYはテレタイプライター(teletypewriter)、あるいはテレタイプ(teletype)の略である。「ターミナル」がかつてのターミナルを指す言葉であるのと同じように、「テレタイプ」もそれに由来する。これは、ターミナル、そしてメインフレームに情報を入力するために使われていた電気機械式のタイプライターである。MacやLinuxでターミナルを扱う際は、「COMポート」の代わりに通信ポートを表す言葉としてttyがよく使われる。
データビット、ストップビット、パリティビット:ターミナルとの間で送受信されるそれぞれのデータパケットには、特定のフォーマットがある。このフォーマットはさまざまであり、ターミナルの設定を調整することで異なるパケット構成に対応できる。もっともよく見かける構成のひとつが8-N-1であり、これはデータビット8、パリティビットなし、ストップビット1を意味する。
フロー制御:フロー制御とは、送信側が受信側の処理速度を超える速さでデータを送りすぎないようにするために、機器間でデータの送信速度を制御する仕組みである。これらのチュートリアルで使われるたいていのアプリケーションでは、フロー制御を使う必要はない。フロー制御は、8-N-1-Noneという略記の中に含まれることもあり、これはフロー制御なしを意味する。
キャリッジリターンとラインフィード:キャリッジリターンとラインフィードは、キーボードのEnterキーを押したときに送信されるASCII文字である。これらの用語はタイプライターの時代に由来する。キャリッジリターンは、紙を保持するキャリッジがその行の先頭に戻ることを意味していた。ラインフィード(改行とも呼ばれる)は、前の行に重ねて打たないよう、キャリッジを次の行へ移動させることを意味していた。
現代のキーボードで入力する際も、この考え方は変わらない。 Enter(あるいはReturn)を押すたびに、カーソルを次の行へ移動させ、その新しい行の先頭に戻すよう指示していることになる。
ASCII表を確認すると、ラインフィードの文字は10(16進数で0x0A)、キャリッジリターンは13(16進数で0x0D)であることが分かる。 この2つの文字の重要性はいくら強調してもし足りない。 ターミナルウィンドウを扱う際は、Enterキーをエミュレートするためにこの2つの文字のどちらか(あるいは両方)が使われているかをよく意識する必要がある。 機器によっては、コマンドが送信されたことを認識するのにどちらか片方の文字だけを必要とするものもある。 さらに重要なのは、マイクロコントローラを扱う際、自分がどのようにデータを送っているかを意識することである。 5文字の文字列をマイコンに送る必要がある場合、各コマンドの後に10と13が送られることを考慮して、実際には7文字分を保持できる文字列が必要になることがある。
ローカルエコー:ローカルエコーは、シリアルターミナル側でも、通信相手の機器側でも(時には両方でも)変更できる設定である。この設定は、入力したものをすべてターミナルに表示するよう指示するだけのものである。この利点は、エラーが起きた際に、実際に正しいコマンドを入力できているかを確認できることである。ただし、ローカルエコーが裏目に出ることもあるので注意しよう。機器によっては、ローカルエコーを二重入力として解釈してしまうことがある。たとえば、ローカルエコーを有効にした状態でhelloと入力すると、受信側の機器にはhheellllooと見えてしまうことがあり、これはおそらく正しいコマンドではない。たいていの機器はローカルエコーの有無にかかわらずコマンドを処理できるが、これが問題になりうることは覚えておこう。
シリアルポートプロファイル(SPP):シリアルポートプロファイルは、Bluetooth機器とホスト/ペリフェラル機器の間でシリアル通信を可能にするBluetoothのプロファイルである。このプロファイルが有効になっていれば、シリアルターミナルを通じてBluetoothモジュールに接続できる。これは設定目的にも通信目的にも使える。このチュートリアルには直接関係しないが、プロジェクトでBluetoothを使いたい場合は知っておくとよいプロファイルである。
機器に接続する
ターミナルとは何か、そしてその周辺の用語が分かったところで、いよいよ機器を接続して通信してみよう。 このセクションでは、機器の接続方法、割り当てられたポートの調べ方、そのポートを通じた通信方法を紹介する。
必要なもの
この例では、次のものが必要である。
- FTDI Basic(5Vでも3.3Vでもよい)。手元にFTDIケーブルしかなければ、それでもよい。
- USB Mini-Bケーブル(FTDIケーブルを使う場合は不要)。
- ジャンパー線。たいていのFTDI製品はメスヘッダーを備えているため、オス-オスのジャンパーケーブルで十分なはずである。あるいは、両端の被覆を剥いた配線を使ってもよい。
機器を見つける
必要なものがそろったら、FTDI BasicをUSBケーブルに接続し、そのケーブルをパソコンに接続する。 この種の機器をパソコンに接続するのが初めてであれば、ドライバーのインストールが必要になることがある。 その場合は、FTDIドライバーのインストールガイドを参照してほしい。 ドライバーが最新であれば、そのまま続けよう。
使っているOSによって、機器に割り当てられたポートを調べる方法はいくつか異なる。
デバイスマネージャー(Windows)
どのバージョンのWindowsでも、デバイスマネージャーというプログラムが用意されている。 デバイスマネージャーを開くには、スタートメニューを開き、検索欄に
devmgmt.msc
と入力してEnterキーを押せばすぐに開く。 あるいは、マイコンピュータを右クリックして「プロパティ」を選び、そこからデバイスマネージャーを開くこともできる(Windows 7の場合)。 複数のシリアル機器と頻繁に通信する予定であれば、デバイスマネージャーへのデスクトップショートカットを作っておくとよいだろう。
デバイスマネージャーを開いたら、「ポート」タブを展開する。 必要な情報はここにある。
この画像には、いくつかのCOMポートが表示されている。 まず知っておくべきなのは、COM1は常に本物のシリアルポート用に予約されており、USB用ではないということである。 両端にDB9コネクタが付いた、あの灰色のかさばるケーブルのことである。 たいていのコンピュータ(特にノートパソコン)にはもはやシリアルポートが搭載されておらず、より多くのUSBポートに置き換えられて時代遅れになりつつある。 それでも、OSは本物のシリアルポートを持つユーザーのために、COM1をそのポート専用に予約し続けている。
もうひとつ、たいていのコンピュータに表示される可能性が高いポートがLPT1である。 これはパラレルポート用に予約されている。 パラレルポートとケーブルはシリアルケーブルよりもさらに時代遅れになりつつあるが、それでも多くのコンピュータには(プリンターへの接続によく使われる)これらのポートが搭載されており、OSはそれに対応する必要がある。
これらを脇に置いておけば、実際に使う必要のあるポートに集中できる。 FTDIを接続すると、新しいCOMポートがリストに追加されるはずである。
たいてい、コンピュータは接続した機器を順に番号付けしていく。 たとえば、これがパソコンに接続する最初のシリアル通信機器であれば、COM2として割り当てられるはずである。 何台もの機器を接続してきたコンピュータでは、8台目、9台目としてCOM9のように割り当てられることもある(COM1のことを忘れないように)。
重要なのは、いったんある機器がコンピュータに関連付けられ、ポートが割り当てられると、その機器を接続するたびにコンピュータがそれを覚えているという点である。 そのため、たとえばCOM4が割り当てられたArduino基板があるなら、毎回デバイスマネージャーを開いてどのCOMポートにあるかを確認する必要はない。その機器は常にCOM4になるからである。 これはよい面も悪い面もある。 たいていの人は数十台以上のシリアル機器をパソコンに接続することはないが、中には大量に機器を接続する人もおり、コンピュータが割り当てられるポート数には上限がある(確か256だったと思う)。 そのため、古いCOMポートを削除する必要が出てくることもある。
複数の機器を持っていて、どれが今接続したばかりの機器か分からない場合は、その機器を一度抜いてどのCOMポートが消えるかを確認し、また接続し直せばよい。 そのCOMポートが再び現れれば、それが探していた機器である。
最後にもうひとつ、たとえ異なるドライバーを必要とする場合でも、すべてのシリアル機器はWindowsではCOMポートとして表示されるということも触れておく。 たとえばArduino UnoとFTDI Basicはそれぞれ異なるドライバーを必要とする技術的に異なる種類の機器だが、Windowsはそれらを区別しない。 どちらも同じように扱われ、気にする必要があるのはどのCOMポートに割り当てられているかだけである。 Mac OSとLinuxはこの点を少し異なる方法で扱う。詳しくは以下を読んでほしい。
コマンドライン(Mac、Linux)
Windowsと同じように、Mac OSとLinuxもパソコンに接続されたそれぞれの機器に特定のポートを割り当てる。 ただし、Windowsとは異なり、現在接続されているすべての機器を一覧表示できる専用のプログラムはない。 とはいえ心配は要らない。機器を見つけるためのシンプルな方法がちゃんとある。
Mac OS Xのデフォルトのコマンドラインインターフェースはターミナルである。 開くには、ユーティリティフォルダを開く。そこにターミナルのアイコンがあるはずである。 Linuxを使っているなら、コマンドラインウィンドウの開き方はすでに知っているものとする。
開いたら、次のコマンドを入力する。
ls /dev/tty.*
これで、パソコン上のすべてのシリアルポートの一覧が表示されるはずである。
いくつかのBluetoothポートも表示されることに気づくだろう。 これらの名前の中にあるSPPの部分に注目してほしい。それは、そのBluetooth機器がシリアルターミナルとも通信できることを示している。
注目すべき重要な機器はtty.usbserialとtty.usbmodemである。
この例では、FTDI BasicとArduino Unoの両方をパソコンに接続している。
これは、両者の重要な違いを示すためのものである。
先に述べたように、一部の機器はコンピュータとの通信方法によって扱いが異なる。
FDTI Basicに搭載されているFT232 ICは本物のシリアル機器であり、usbserialとして表示される。
一方Unoは HID機器であり、usbmodemとして表示される。
HID(ヒューマンインターフェースデバイス)プロファイルはキーボードやマウス、ジョイスティックなどに使われるものであり、シリアルデータを送れるにもかかわらず、HID機器としてコンピュータから少し異なる扱いを受ける。
いずれにせよ、シリアルターミナルに接続する際に探すべきなのはこれらのtty.usb______というポートである。
エコーテスト
準備が整ったところで、いよいよFTDIと実際に通信してみよう。 それぞれのターミナルプログラムの詳細は以降のセクションで扱うが、この例ではCoolTermを使って説明する。ただし、どのターミナルでも同じことができる。
正しい設定(9600、8-N-1-None)でターミナルを開く。
ローカルエコーがオフになっていることを確認する。
ジャンパー線を使い、FTDI BasicのTX線とRX線を接続する。
さあ、何か入力してみよう。
入力したものはすべてターミナルウィンドウに表示されるはずである。 たいしたことではないが、これでターミナルとの通信ができていることになる。 データはキーボードからパソコンへ、USBケーブルを通じてFTDIへ、FTDIのTXピンから出て、RXピンに入り、再びUSBケーブルを通ってパソコンに戻り、最終的にターミナルウィンドウに表示されている。 信じられなければ、ジャンパーを抜いてもう一度入力してみてほしい。 ローカルエコーをオフにしていれば、何も表示されないはずである。これがエコーテストである。
おまけ
もし2枚のFTDI基板や似たようなシリアル機器を持っているなら、両方を接続してみるとよい。 片方のTX線をもう片方のRX線に、そしてその逆も接続する。 そして2つのシリアルターミナルウィンドウを開き(複数のターミナルウィンドウを同時に開くこともできる)、それぞれ異なる機器に接続する。 両方が同じボーレートと設定になっていることを確認する。 接続して、入力を始めてみよう。 片方のターミナルに入力したものが、もう片方のターミナルに表示され、その逆も起こるはずである。 これで、非常に単純なチャットクライアントを作り上げたことになる。
それでは、さまざまなターミナルプログラムを見ていこう。
Arduino Serial Monitor(Windows、Mac、Linux)
Arduino統合開発環境(IDE)は、Arduinoプラットフォームのソフトウェア側を担っている。 そして、ターミナルを使うことがArduinoやその他のマイクロコントローラを扱ううえで非常に大きな部分を占めるため、Arduino IDEにはシリアルターミナルが同梱されている。 Arduino環境の中では、これはSerial Monitorと呼ばれている。
接続する
Serial Monitorは、どのバージョンのArduino IDEにも同梱されている。 開くには、Serial Monitorのアイコンをクリックするだけでよい。
Serial Monitorで開くポートを選ぶ手順は、Arduinoのコードをアップロードするためのポートを選ぶのと同じである。 ツール → シリアルポートに移動し、正しいポートを選択する。
開くと、次のような画面が表示されるはずである。
設定
Serial Monitorの設定項目は限られているが、たいていのシリアル通信のニーズには十分対応できる。 最初に変更できる設定はボーレートである。 ボーレートのドロップダウンメニューをクリックして、正しいボーレートを選択する。
Enterキーのエミュレーションも、キャリッジリターン、ラインフィード、両方、あるいはどちらもなし、に変更できる。
最後に、左下隅のチェックボックスで、ターミナルを自動スクロールするかどうかも設定できる。
長所
Serial Monitorは、Arduinoとシリアル接続をすばやく簡単に確立するのに優れた方法である。 すでにArduino IDEで作業しているなら、データを表示するために別のターミナルを開く必要は特にない。
短所
Serial Monitorは設定項目が少なく、高度なシリアル通信には物足りないことがある。
HyperTerminal(Windows)
HyperTerminalは、XPまでのWindows OSで事実上標準的なターミナルプログラムだった。Windows Vista、7、8には同梱されていない。 Windows Vista、7、8を使っていて、どうしてもHyperTerminalが必要な場合は、インターネットを少し調べれば回避策が見つかるはずである。 とはいえ、より優れた代替ソフトのほうが手に入れやすいので、それについてはすぐ後で紹介する。
Tera Term(Windows)
Tera Termは、Windows向けのターミナルプログラムの中でも特に人気の高いもののひとつである。 長年使われ続けており、オープンソースで、使い方もシンプルである。 Windowsユーザーにとって、もっともよい選択肢のひとつである。
Tera Termをインストールしたら、接続したいシリアルポートを選ぶ「TeraTerm: New connection」というポップアップが表示されるはずである。 「Serial」のラジオボタンを選び、ドロップダウンメニューから自分のポートを選択する。 Tera Termはデフォルトでボーレートを9600bps(8-N-1)に設定する。 シリアルの設定を調整する必要がある場合は、Setup → Serial Portに進む。
ローカルエコーを有効にしたい場合は、SetupメニューからTerminalを選択する。 ターミナル画面をクリアしたい場合は、Editメニューにある「Clear buffer」または「Clear screen」コマンドを使う。
RealTerm(Windows)
Tera TermはASCIIだけのシンプルなシリアルターミナル作業には優れているが、0〜255の範囲の2進数値の並びを送りたい場合はどうすればよいだろうか。 そのような用途には、RealTermがよく使われる。 RealTermは、2進数やその他の入力しにくいデータの並びを送信するために特別に設計されている。
RealTermでは、「Send」タブから2進数、16進数、10進数の値の並びを長く送信できる機能があり、これが他のターミナルプログラムとの大きな違いになっている。 「Display」タブの「Display As」の項目では、受信したデータを標準的なASCII文字として表示するか、16進数の値として表示するかなど、さまざまな表示形式を選べる。
RealTermは、より高度なターミナル用途に向いている。 特定のバイト列を送る必要がある場合はRealTermを、より基本的なターミナル作業にはTera Termを使うのがおすすめである。
YAT - Yet Another Terminal(Windows)
YATは使いやすく機能豊富なシリアルターミナルである。 テキスト通信とバイナリ通信の両方に対応し、あらかじめ定義したコマンド、複数ドキュメントに対応したユーザーインターフェース、そのほか多くの付加機能を備えている。
CoolTerm(Windows、Mac、Linux)
CoolTermは、どのOSを使っていても便利だが、Windowsほど選択肢の多くないMac OSでは特に重宝する。
設定を変更するには、歯車とレンチのアイコンのOptionsをクリックする。 ここでポート、ボーレート、ビットのオプション、フロー制御を選択できる。
左側のTerminalタブでは、Enterキーのエミュレーション(キャリッジリターン/ラインフィード)の変更、ローカルエコーのオンオフ、ラインモードとローモードの切り替えができる。 ラインモードはEnterキーが押されるまでデータを送信せず、ローモードは文字を直接画面に送信する。
CoolTermの優れた機能のひとつがHex Viewである。 送信しているデータの実際の16進数の値をASCII値の代わりに見たい場合、Hex Viewが大いに役立つ。
ここでは「hello」と入力している。キャリッジリターンとラインフィードに対応する0Dと0Aが表示されていることに注目してほしい。
Send String機能を使えば、文字列全体を16進数モードやASCIIモードで送信することもできる。
ZTerm(Mac)
ZTermは、Macユーザー向けのもうひとつのターミナルの選択肢である。 CoolTermに比べると使いやすさでは劣るように見えるが、慣れてしまえば同じくらい便利である。
接続する際は正しいポートを選択する。 一度接続すると、次回起動時にはZTermが直前の接続を自動的に開こうとする。 これを避けたい場合は、ZTermを起動する際にShiftキーを押しながら起動すればよい。
接続後の設定変更はSettings → Connectionから、接続後にポートを変更したい場合はSettings → Modem Preferencesから行える。
マクロ機能も便利である。Macros → Edit Macrosから、頻繁に入力するコマンドをマクロとして登録しておける。
コマンドライン(Windows、Mac、Linux)
先に述べたとおり、コマンドラインインターフェースを使ってシリアル接続を作ることもできる。 大きな制約は、接続オプションの少なさである。 ここまで紹介してきたたいていのプログラムには、特定の接続に合わせて調整できる多くのオプションがあるのに対し、コマンドラインの方法はとっさに機器へ手早く接続するための手段に近い。 3つの主要なOSでの実現方法を紹介する。
TerminalとScreen(Mac、Linux)
Mac
ターミナルを開く。
ls /dev/tty.*と入力して、利用可能なすべてのポートを確認する。
screenコマンドを使えば、シンプルなシリアル接続を確立できる。
screen <ポート名> <ボーレート>と入力して接続を作る。
ターミナルは空白になり、カーソルだけが表示される。これでそのポートに接続できている。
切断するには、control-aに続けてcontrol-\と入力する。
本当に切断してよいか確認が表示される。
screenで制御できる他のオプションもあるが、この方法はコマンドラインに慣れている場合にのみ使うことをおすすめする。
すべてのオプションとコマンドの一覧はman screenで確認できる。
Linux
screenコマンドはLinuxでも使える。
Macの手順との違いはわずかである。
screenがインストールされていない場合は、sudo apt-get install screenで入手する。
接続方法はMacと同じである。
切断するには、control-aに続けてshift-kと入力する。
これだけである。
MS-DOSプロンプト(Windows)
Windowsでコマンドラインにたどり着くもっとも速い方法は、スタートメニューをクリックし、検索欄にcmdと入力してEnterを押すことである。
これで空白のMS-DOSコマンドラインプロンプトが開く。
シリアルコマンドを実行するには、まずPowerShellに入る必要がある。
powershellと入力してPowerShellのコマンドモードに入る。
利用可能なすべてのCOMポートの一覧を見るには、次のように入力する。
[System.IO.Ports.SerialPort]::getportnames()
必要なポートのインスタンスを、次のコマンドで作成する。
$port = new-Object System.IO.Ports.SerialPort COM#,Baudrate,None,8,one
これで、そのCOMポートに接続し、データを送受信できるようになる。
$port.open()
$port.WriteLine("some string")
$port.ReadLine()
$port.Close()
繰り返しになるが、この方法によるシリアル通信は、コマンドラインの上級者にのみおすすめする。
コツと裏技
COMポートの変更と削除(Windows)
機器を特定のCOMポートに割り当てたい場合がある。 たとえば、古いバージョンのTera Termでは、COM16番以下のポートにしか接続できなかった。 そのため、機器がCOM17にある場合は、接続できるように変更する必要があった。 この問題は新しいバージョンのTera Termでは解決されているが、それでも一定数以下のCOMポートしか許容しないプログラムは他にも数多く存在する。
これを回避するには、デバイスマネージャーを開き、変更したいポートを右クリックして「プロパティ」を選び、「ポートの設定」から「詳細設定」に進む。 そこには利用可能なすべてのCOMポートのドロップダウンメニューがあり、一部には「使用中」と表示されている。 たとえばCOM9をCOM3に変更したい場合、このメニューでCOM3を選んでOKをクリックするだけでよい。
警告: 古いポートを整理する際、COM1は絶対に選ばないこと。この方法は本当に必要なときだけ使うべきであり、頻繁に行うべきではない。
TTYとCUの違い(Mac、Linux)
UnixやLinuxの環境では、それぞれのシリアル通信ポートにtty.*とcu.*という2つの側面がある。
Arduino IDEなどでポートを確認すると、1つのポートに対して両方が表示されることがある。
この2つの違いは、TTYデバイスが機器やシステムへの着信(call in)に使われるのに対し、CUデバイス(call-up)は機器やシステムからの発信(call out)に使われるという点である。 これにより、同時に双方向の通信(全二重)が可能になる。 ターミナルやその他のプログラムを通じてネットワーク通信を行う場合に特に重要になる知識だが、頻繁に出てくる疑問でもある。 このチュートリアルの目的においては、シリアル通信には常にttyのオプションを使うと覚えておけばよい。
そのポートに接続できない
特定のポートには、一度に1つの接続しか開くことができない(ただし、異なるポートに接続する複数のターミナルウィンドウを同時に開くことはできる)。 そのため、Arduino Serial Monitorのウィンドウを開いたまま、別のターミナルプログラムで同じポートに接続しようとすると、接続できないというエラーが表示される。 ポートへの接続に問題がある場合は、まずそのポートが他の場所で開かれていないか確認しよう。
他の接続が開かれていないのに接続できない場合は、すべての設定(ボーレートなど)が正しいか確認すること。
接続はできているのにデータが見えない
正しいポートに接続できているのにデータが見えない場合、考えられる原因は2つある。 まずボーレートを確認しよう。 何度も同じことを言うようだが、ボーレートを一致させることがもっとも重要な設定である。ボーレートを確認しよう。
もうひとつの原因は、TXとRXの線が逆になっている可能性である。 TX→RX、RX→TXになっているか確認しよう。
Arduinoのプログラミングとシリアル通信
Arduinoには専用のUART(シリアルのTX線とRX線を指すもったいぶった呼び方)が1つある。 Arduinoは、この2本の線を通じてプログラムが書き込まれる。 そのため、Arduino(や他のマイクロコントローラ)を扱う際は、特にコードを開発していて頻繁にアップロードする必要がある場合、これらの線を使って他のシリアル機器と通信するのは避けたほうがよい。
UARTに別の機器を接続していると、パソコンからのデータがArduinoに正しく解釈されず、コードが意図どおりに動かなかったり、アップロードできなかったりすることがある。
同じルールがシリアルターミナルにも当てはまる。 プログラムしようとしているのと同じポートでターミナルを開いていると、うまくいかない。 Arduinoはそのポートと通信できないというエラーを出す。 その場合は、接続を閉じてから再度試してみよう。
これを回避する簡単な方法は、Arduinoに内蔵されているSoftware Serialライブラリを使って、外部とのシリアル通信専用の別のUARTを作ることである。 そうすれば、デフォルトのUARTをプログラミング用に開けたまま、別のポートで通信できる。
まとめ
盛りだくさんの情報だった。 少なくとも、ターミナルウィンドウとは何か、その使い方、自分の環境に合ったターミナルプログラムの選び方、そしてそのインターフェースの操作方法は分かったはずである。 繰り返しになるが、ターミナルプログラムはシリアル機器やマイクロコントローラを扱ううえで非常に強力な道具である。 さあ、データを集めに行こう。
さまざまな種類の通信についてさらに知りたい場合は、次のチュートリアルも参考になる。
シリアルターミナルを使う必要がある製品の例としては、次のような使い方ガイドがある(いずれも英語)。
- OpenLog Hookup Guide(OpenLogの使い方)
- Bluetooth Mate and BlueSMiRF Hookup(Bluetooth MateとBlueSMiRFの使い方)
- RN-52 Audio Bluetooth Hookup(RN-52オーディオBluetoothの使い方)
タグ: Arduino、通信、Raspberry Pi、スキル
出典:Serial Terminal Basics(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
赤外線通信
送信用赤外線LED(左)と受信用赤外線フォトセンサー(右)
IR、つまり赤外線通信は、一般的で安価、かつ扱いやすい無線通信技術である。 赤外線は可視光と非常によく似ているが、波長がわずかに長いという違いがある。 つまり赤外線は人間の目には見えないということであり、これが無線通信にうってつけの性質になっている。 たとえばテレビのリモコンのボタンを押すと、赤外線LEDが1秒間に38,000回のペースでオンとオフを繰り返し、音量やチャンネルの操作といった情報をテレビの赤外線フォトセンサーに送信する。
このチュートリアルでは、まず一般的な赤外線通信プロトコルの内部の仕組みを説明する。 そのあとで、Arduinoを使って赤外線データを送受信する2つの例を紹介する。 最初の例では、TSOP382赤外線フォトセンサーを使って、一般的なリモコンから届く赤外線データを読み取る。 次の例では、赤外線LEDからデータを送信して、ホームステレオのような一般的な家電機器を制御する方法を紹介する。
必要なソフトウェア
こまごまとした信号処理はすべて、Ken Shirriffによって書かれた優れたArduinoライブラリが処理してくれるため、赤外線データを簡単に送受信できる。 このライブラリの仕組みについてさらに詳しく知りたい場合は、Ken Shirriffのブログ記事「A Multi-Protocol Infrared remote Library for the Arduino」を参照してほしい。 また、このチュートリアルで使うサンプルコードは、そのライブラリのexamplesディレクトリの中にある。
参考になるチュートリアル:
このチュートリアルで扱う概念には、次のようなものがある。
- Installing Arduino Library(Arduinoライブラリのインストール)
- 回路図の読み方
- 光
- Pulse Width Modulation(パルス幅変調、PWM)
- 発光ダイオード(LED)
- はんだ付けの基本(スルーホール編)
赤外線通信の基礎
赤外線は、単に私たちの目に見えない光であり、これが通信にとって好都合な理由である。 赤外線の発生源は私たちの周りのいたるところにある。 太陽、電球、あるいは熱を持つあらゆるものは、赤外線のスペクトルにおいて非常に明るい。 テレビのリモコンを使うとき、赤外線LEDがテレビに情報を送信するために使われている。 では、テレビの赤外線受信機は、周囲のあらゆる赤外線の中から、どうやってリモコンからの信号を選び出しているのだろうか。 答えは、赤外線信号が変調されているからである。 信号を変調するとは、データに一定のパターンを割り当てることであり、これにより受信側はどれを聞き取ればよいか分かるようになる。
赤外線通信でよく使われる変調方式は、38kHz変調と呼ばれるものである。 38kHzの信号のような規則性を持つ自然の光源はほとんど存在しないため、その周波数でデータを送る赤外線送信機は、周囲の赤外線の中でも際立つことになる。 38kHzで変調された赤外線データがもっとも一般的だが、他の周波数が使われることもある。
リモコンのボタンを押すと、送信用の赤外線LEDが1秒足らずの間、非常に速く点滅し、符号化されたデータを機器へ送信する。
もしテレビのリモコンの赤外線LEDにオシロスコープをつなげば、上のような信号が見えるはずである。 この変調された信号こそ、受信側のシステムが実際に目にしているものである。 とはいえ、受信機器の役目は、この信号を復調し、マイクロコントローラが読み取れる2値の波形として出力することである。 先ほどの波形をTSOP382のOUTピンで読み取ると、次のような波形が見えるはずである。
送信される変調信号どうしの間隔を制御することで、この波形はマイクロコントローラの入力ピンで読み取り、シリアルなビット列として復号できるようになる。
赤外線の送受信ペアがどのように機能するかを概念的に示した図を以下に示す。
Arduinoやその他のマイクロコントローラは、このシステムのどちらの側にも接続でき、データを送信すること(左側)も、受信すること(右側)もできる。
ハードウェアの接続
このチュートリアルのハードウェアには、次のようなものが必要である。 手元にあるものによっては、すべてが必要ではないかもしれない。
- Arduino Uno
- 赤外線LED
- TSOP382赤外線受信機
- 小型プッシュボタンスイッチ
- 330Ω抵抗器
- 赤外線キーチェーンリモコン、あるいは38kHz変調を使う任意の赤外線リモコン
Note
赤外線リモコンの代わりに、38kHz変調を使う任意の赤外線リモコンを使うこともできる。
Arduinoを使った2つの別々の回路を組み立てることになる。 最初の例の回路では、TSOP382赤外線フォトセンサーを使って、一般的なリモコンからの赤外線信号を受信して復調する。 2つ目の例の回路では、950nmの赤外線LEDと電流制限抵抗を使って、ホームステレオやテレビのような一般的な家電機器に赤外線コードを送信する。
回路図
Arduinoへの接続に必要な、完全なセットアップは次のとおりである。
LEDを正しく接続すること。長いほうの脚が正極であり、抵抗器を経てArduinoの出力ピンに接続する。 短いほうの脚が負極であり、グラウンド(GND)に接続する。
また、赤外線は可視スペクトルの外にあるため、赤外線LEDの光を目で見ることはできない。 とはいえ、たいていの携帯電話のカメラは短波長の赤外線を検知できるため、LEDがかすかに光っているのを見ることができる。
また、TSOP382の極性にも注意しよう。 センサーのピン配置については、TSOP382のデータシートを参照してほしい。
LEDに接続する電流制限抵抗は、最大出力と最長の通信距離を得るには100Ω(40mA)程度まで下げることができる。 より大きな抵抗値を使うと、LEDはそれほど明るく光らず、通信距離も短くなる。 330Ωの抵抗であれば、薄暗い部屋の中でも赤外線LEDを問題なく動作させられるはずである。
ライブラリの概要
Note
この例は、パソコン上で最新版のArduino IDEを使っていることを前提としている。Arduinoを使うのが初めてであれば、Arduino IDEのインストールについてのチュートリアルを確認してほしい。Arduinoライブラリをインストールしたことがなければ、インストールガイドも確認してほしい。
Ken ShirriffのIRremoteライブラリをダウンロードしてインストールする
ArduinoにすばやくIR制御機能を追加するには、Ken ShirriffのIRremoteライブラリをダウンロードすることをおすすめする。 Shirriffは、赤外線リモコン用のライブラリを書いている。 このライブラリはArduino Library Managerから入手できる。 IRremote by shirriffで検索すれば、最新版をインストールできるはずである。 手動でライブラリをダウンロードしたい場合は、GitHubリポジトリから入手できる。
ライブラリのインストールについて助けが必要な場合は、Installing an Arduino Libraryのチュートリアルを確認してほしい。 ダウンロードしたフォルダを、Arduinoのスケッチブック内の「libraries」フォルダに展開する必要がある。
Note
警告:「libraries」フォルダにコピーするフォルダの名前は、必ず「IRremote」にすること。ディレクトリ名にハイフン(-)が含まれていると、コードのコンパイル時にエラーが起きることがある。
IRremoteライブラリは、プロジェクトに赤外線機能を追加するための強力な道具である。 家電機器に赤外線コードを送信したい場合も、リモコンからArduinoへ赤外線コードを受信したい場合も(あるいはその両方でも)使うことができる。 ここでは、このライブラリでできる簡単なことをいくつか紹介する。 さらに詳しい使い方については、Ken Shirriffのブログを参照してほしい。
赤外線を受信する例
赤外線リモコンは、対応する家電機器と同じくらいありふれた存在である。 使わなくなった古いリモコンたちを、次のプロジェクトで活用できるとしたらどうだろうか。 この例では、TSOP382赤外線受信機とArduinoを使って、任意の赤外線リモコンからコードを読み取る方法を紹介する。 個々のボタン操作からコードを受信できるようになれば、リモコンとArduinoは汎用の近距離通信インターフェースになる。
この例で必要なのは、Arduinoに接続したTSOP382赤外線受信機と一般的なリモコンだけである。赤外線LEDとボタンは接続したままでよいが、次の例まで使うことはない。
まず、IR用のArduinoライブラリをインストールする必要がある。 Arduinoライブラリのインストール方法については、Installing an Arduino Libraryのチュートリアルを参照してほしい。
IRライブラリを入手したら、Arduinoのプロジェクトディレクトリに移動する。Arduino/libraries/IRremote/examples/IRrecvDemoを開き、IRrecvDemo.inoを開く。 このスケッチをArduinoに書き込む。
このスケッチは、使っているリモコンの種類を自動的に判別し、どのボタンが押されたかを識別する。 Arduino IDEでシリアルポートを9600bpsで開き、リモコンのさまざまなボタンを押してみよう。
特定のボタンが押されたとき、その受信値を使ってコードの中で何か別のこと(モーターやLEDのオンオフなど)を行うことができる。
それぞれのボタン操作の結果は、value()メソッドを呼び出すことで取得できる。
results.value
その値をターミナルウィンドウに出力することもできる。
Serial.println(results.value, HEX); // ボタン操作の16進数の値を表示する
あるいは、条件分岐を実行するためにその値を読み取る必要があるかもしれない。
if (irrecv.decode(&results)) // コードを受信したかどうかを確認する
{
if (results.value == 0xC284) // ボタン操作が16進数の0xC284と一致する場合
{
// ここで何か処理を行う
}
irrecv.resume(); // 次の値を受信する
}
赤外線を送信する例
この例では、Arduinoと赤外線LEDを使って赤外線リモコンを模倣し、家電機器(テレビやステレオなど)を制御する。 LEDで家電機器を制御するには、その機器がどの種類の赤外線プロトコルを使っているかを知る必要がある。 これを知るもっとも簡単な方法は、その機器に付属しているリモコンを手元に用意することである。 この例では、TSOP382赤外線受信機でリモコンのボタン操作を受信し、そのデータをコピーして、赤外線LEDから送信する。
この例では、LEDとTSOP382の両方を使う。
まだの場合は、まずIR用のArduinoライブラリをインストールする。 Arduinoライブラリのインストール方法については、Installing an Arduino Libraryのチュートリアルを参照してほしい。
IRremoteライブラリを入手したら、Arduinoのプロジェクトディレクトリに移動する。Arduino/libraries/IRremote/examples/IRrecordを開き、IRrecord.inoを開く。 このスケッチをArduinoに書き込む。
スケッチを書き込んだら、Arduinoのシリアルモニタを9600bpsで開く。 リモコンをTSOP382に向けて、ボタンを押してみよう。 ターミナルウィンドウに、押したボタンに対応する特定のコードが表示されるはずである。
今度は、LEDを対象の家電機器に向けて、Arduinoに接続したプッシュボタンを押してみると、リモコンのボタン操作に対応するコードが送信される。 どのコードがどのボタンに対応しているかが分かれば、Arduinoと赤外線LEDを使って独自のリモコンを作ることができる。
たとえば、送信の例の回路では、私のPanasonicリモコンの音量アップボタンを押したときに未知のコードを受信した。 2行目のデータバイトは、音量アップコマンドのマークとスペースのタイミングとして表示された生のコードである。
未知のコードを受信し、それを送信したい場合は、Arduinoのスケッチの中で次の行を使う。
irsend.sendRaw(rawCodes, codeLen, 38);
家電機器のリモコンを持っていない場合や、幸運にも一般的なプロトコルを使うリモコンを持っている場合は、IRremoteライブラリのIRSendDemo.inoの例にあらかじめ用意されているメーカーコードを試してみることもできる。
たとえば、ソニー製のテレビを持っていて、LEDでテレビの電源をオンオフしたい場合は、次のようなコードを使うことができる。
for (int i = 0; i < 3; i++)
{
irsend.sendSony(0xa90, 12); // ソニーテレビの電源コード
delay(40);
}
家電機器のメーカーによって、コマンドを送るプロトコルは異なる。
そのため、このライブラリを使うには機器のメーカーを指定する必要がある。
また、ソニーのコマンドはfor()ループを使って3回送信する必要があることにも注意してほしい。
どのプロトコルにもそれぞれ細かい癖がある。
一般的な赤外線プロトコルの非公式なコマンドについては、San BergmansのWebサイトが優れた参考資料になる。
一般的な赤外線プロトコルとして、IR用Arduinoライブラリは、NEC、Sony SIRC、Philips RC5、Philips RC6、そして生データ形式に対応している。 それぞれのメーカー向けにArduinoのコードで使えるメソッドは次のとおりである。
void sendNEC(unsigned long data, int nbits);
void sendSony(unsigned long data, int nbits);
void sendRC5(unsigned long data, int nbits);
void sendRC6(unsigned long data, int nbits);
void sendDISH(unsigned long data, int nbits);
void sendSharp(unsigned long data, int nbits);
void sendPanasonic(unsigned int address, unsigned long data);
void sendJVC(unsigned long data, int nbits, int repeat);
void sendRaw(unsigned int buf[], int len, int hz);
dataとnbitsのフィールドには、使用しているプロトコルに固有の情報を入力する必要がある。
この機能の使い方についてさらに詳しくは、IR用ArduinoライブラリのブログのSending libraryの詳細についての節を参照してほしい。
もっとパワーが欲しい場合は? 赤外線LEDは素晴らしい部品である。赤外線受信機と組み合わせれば、リモコン制御や、基本的な遠隔データ通信にも使える。 唯一の問題は、Arduinoではその全性能を引き出せないという点である。 LEDの送信距離は最適とは言えないかもしれない。 Arduinoの出力ピンから取り出せる電流は最大でおよそ30mA程度である。 つまりLEDは、フルパワーである50mAでは駆動できないということである。 これにより、送信距離が短くなってしまう。
まとめ
赤外線LEDや受信機についてのさらなる資料やリソースを探しているなら、次のようなリンクを確認してみてほしい。
- 950nm Infrared LED(データシートPDF)
- TSOP38238 IR Receiver Module(データシートPDF)
- Wikipedia: Infrared(赤外線についてのWikipedia記事)
- SB-Projects: IR Remote Control Theory(赤外線リモコンの理論)
- IRremote Library(IRremoteライブラリのGitHubリポジトリ)
これで、自分だけの赤外線通信システムを作る準備が整ったはずである。 この目に見えない変調光源で、何を制御してみたいだろうか。 アイデアが必要なら、次のようなチュートリアルも確認してみてほしい。
- 光
- Illuminate(イルミネート):廃盤
- TV-B-Gone
- LED Light Bar Hookup(LEDライトバーの使い方):見える光がもっと欲しいなら、このLEDライトバーは特に明るい選択肢である
- Using the OpenSegment(OpenSegmentの使い方):視認できる表示器という点では、OpenSegmentの4桁7セグメントディスプレイも、プロジェクトにデータ表示を追加する手軽な道具である
- Rebuilding the Illumitune(Illumituneの再構築):Illumituneプロジェクトの再構築に、どのように赤外線を組み込んだかを学べる
- Laser Limbo(レーザーリンボー):赤外線LEDと赤外線受信機を使って「レーザー」リンボーを作ろう
- IR Control Kit Hookup Guide(赤外線コントロールキットの使い方):IR Control Kitに含まれる赤外線受信機と送信機を最大限に活用する方法
- Boss Alarm(ボスアラーム):誰かがオフィスに入ってきたことを知らせ、自動的にパソコンの画面を切り替えるボスアラームを作る
- Roshamglo Hookup Guide(Roshamgloの使い方):Roshamgloバッジを使い始めるために必要なことをすべて解説する
- Roshamglo Project: TV-B-Gone(Roshamgloプロジェクト:TV-B-Gone):Roshamglo基板を(ほぼ)万能なテレビの電源ボタンに変える
タグ: Arduino、通信、接続ガイド、光、技術、無線
出典:IR Communication(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
光
光を操ることは、電子工作愛好家にとって非常に役立つスキルである。 照明から距離測定まで、光は電子的なものと物理的なものを、実にさまざまな有用な形で橋渡ししてくれる。
波長
ある光の束を特徴づける鍵となる要素は、その波長である。 光は波として空間を伝わり、2つの波の山の間の距離がその光の波長である。 人間にとって、波長は光の色を決める要素である。
物理学において物事は決して単純にはいかないもので、光の束は光子と呼ばれる粒子の流れとしてもふるまう(マゾヒスティックな人は光の波動粒子二重性についてのこの記事を参照してほしい)。 波長が短い光ほど、1つの光子あたりのエネルギーが大きくなる。
強度
光の束を特徴づけるもうひとつの要素が強度である。 放射強度は、アイスクリームコーンの先端にある円で囲まれた球面をエネルギーが横切る速さ、つまりワット毎ステラジアンで測定される。 これを理解するために、中心にごく小さな星がある球体を想像してみよう。 光はその星からあらゆる方向に均等に広がっていく。 今度は、その星の中心を頂点とし、球の表面まで伸びるアイスクリームコーンを追加する。 このコーンの底の角度は1ラジアンである(円には2πラジアンが含まれており、1ラジアンはおよそ57.3度である)。 このアイスクリームコーンによって定義される面積をステラジアンと呼ぶ。
可視光と不可視光
光について語るとき、私たちがたいてい思い浮かべるのは可視光、つまり虹や日光のあの素晴らしいものである。 しかし光は実際には、非常に幅広い波長の範囲にわたって存在している。 これは電磁スペクトルと呼ばれる。
一方の端には、生命とは根本的に相容れない、有害で高エネルギーの電離放射線であるガンマ線やX線がある。 もう一方の端には、非常に低い周波数で波長の長い電波があり、これは広大な距離を越えて情報を運び、宇宙の始まりそのものを垣間見せてくれる。
この記事では、可視光と、それにもっとも近い領域である赤外線と紫外線に絞って扱う。 紫外線から遠赤外線にかけては、光は私たちが可視光で見慣れているのとかなり似たふるまいをする。影ができ、レンズで焦点を合わせられ、白い紙のようなもので拡散できる、といった具合である。 それより長い、あるいは短い波長の領域に踏み込むと、物事は奇妙になり始めるため、それについては別の機会に譲ることにする。
ここでは、光を紫外線、可視光、赤外線という3つのグループに分けて説明する。 紫外線は可視光よりわずかに波長が短い光であり、赤外線はわずかに波長が長い光である。 この3つのグループの中では、可視光と赤外線のほうが電子工学においていくらか使い道が多く一般的であるため、それらについてより多くの時間を割くことにする。
紫外線
紫外線は10nmから400nmの間の光であり、X線と可視光の間に位置する。 紫外線は生命体にとって非常に有害なことがあり、もっともよく知られている影響は日焼けだろう。
UVA
UVA(波長315nm〜400nm)は、紫外線の中でもっともエネルギーの低い帯域である。 これは人間にはほぼ見えないが、多くの昆虫、さらには一部の鳥はこの光の帯域を見ることができる。 白色蛍光灯や白色LEDは、UVA光を素材に当てることで、その素材がUVA光子を吸収し、可視スペクトルの光子を放出する(私たちには白く見える)という仕組みで動作している。
UVAは、偽造文書の検出にもよく使われる。 偽造対策として、多くの文書(パスポート、運転免許証、紙幣など)には、UVA放射線を当てると光る透かしが入っている。 ブラックライトポスターも、UVA光に反応するもののひとつの例であり、漂白剤、石鹸、そして多くの生体材料もUVA光を当てると光る。
太陽光に含まれるUVA光のほとんどは地表に到達する。
UVB
UVB(280nm〜315nm)は、UVAよりも高いエネルギーレベルの光である。 これは太陽光に含まれており、日焼けや皮膚がんを引き起こす肌へのダメージだけでなく、人体内でのビタミンDの合成にも関与している。 また溶接トーチからも発生し、たとえ十分な距離があっても、防護なしでその閃光を短時間見ただけで深刻な目の損傷を引き起こすことがある。
UVB光は通常の窓ガラスによってかなりよく遮断される。これが、開いた車の窓から腕を出しているとその腕だけが日焼けしてしまう理由である。 リチャード・ファインマン(ノーベル賞受賞者であり、ボンゴ奏者としても知られる)は、トリニティ核実験の爆発を観察する際、爆発が放つ紫外線放射から身を守るため、ピックアップトラックのフロントガラスを使ったという。
太陽が放出するUVB光のうち、地表に到達するのはおよそ10%に過ぎず、残りの90%は大気(主にオゾン層)に吸収される。
UVC
UVC(100nm〜280nm)は、私たちにとって興味深い紫外線の限界にあたる帯域である。 太陽が発するUVCのほとんどは地表に到達せず、大気がそれを非常に効果的に遮っている。
電子的に消去や書き換えができるEEPROMやフラッシュメモリが登場する以前の悪しき時代には、不揮発性で非磁気的な電子データストレージの手段はEPROMしかなかった。 一度書き込まれたEPROMは、強力なUVC光源に20〜30分間さらすことでしか消去できなかった。 趣味でやっている人にとって、書き換えたコードがバグを修正できたかどうかを確かめるのに、それだけ待たされるのは長い時間である。
可視光
可視光は、およそ380nmから740nmの範囲の光である。 これには個人差があり、これより短い、あるいは長い波長の光を検知できる目を持つ人もいるが、一般にたいていの人の目はこの領域に感度を持っている。
人間の目
人間の目が光を知覚する方法には、2つの特異な点がある。目はそれぞれの波長に対して異なる感度を持っていることと、光の強度を線形ではなく対数的に知覚することである。
色の知覚
このグラフに示されているように、私たちの目はそれぞれの波長の光を異なる効率で拾い上げ、知覚された強度を混ぜ合わせることで「色」と呼ぶものを作り出している。 さらに、光量が少ない状況では、私たちの色の知覚が歪んでしまうことも分かる。
このため、光の強度を表す特別な単位であるカンデラが作られた。 カンデラは、光源の色に応じて強度を重み付けしたものであり、人間の目には、波長が違っていても1カンデラの光源はどれも同じくらいの明るさに知覚される。 LEDの明るさはたいていミリカンデラ(mcd)で表され、色によって知覚される強度の違いを示すよい例が、RGB LEDの明るさである。たとえば赤が800mcd、緑が4000mcd、青が900mcdといった具合である。 下のグラフには、この3色の波長(625nm、520nm、467.5nm)を示してある。
人間の目は、異なる波長の光を混ぜ合わせることで、実際には存在しない波長の光を検知しているかのように錯覚させることができる。たいていのカラーディスプレイはこの原理で動作している。 実際に使われている色はたった3色(何らかの赤、緑、青)だけであり、この3色の光をさまざまな強度で混ぜ合わせることで、自然界のほとんどの色(少なくとも私たちの目にとっては)を再現できる。
強度の知覚
私たちは自然に、光を線形な現象だと考えがちである。 2つの光源があったとき、片方がもう片方の2倍明るいと感じることは十分にありうる。 これが色によってどう影響を受けるかはすでに見てきたが、今度は単一の色の光の強度と、それに対する私たちの知覚との関係を考えてみよう。 LEDの強度は、それを駆動する電流に対して線形に変化する。
ちょっとした実験をしてみよう。 Arduino、ブレッドボード、抵抗器、LED、プッシュボタンがあれば、次の回路を組んで、コードをダウンロードし、Arduinoに書き込んでみてほしい。
この回路はとても単純である。ボタンを1回押すとLEDが点灯する。 押したまま保持すると、LEDは徐々に明るくなっていく。 離すと、LEDの明るさが増えるのが止まり、Arduinoはシリアルポート経由で、押し始めたときと比べてどれだけ明るくなったかを出力する。 LEDが最初の2倍の明るさになったところで止めてみてほしい。
これがなぜこんなに難しいのだろうか。 LEDの光の出力は線形であるため、LEDに流れる電流を2倍にすれば、放出される光のエネルギー量も2倍になる。 しかし私たちの目は線形には反応せず、対数的に反応する。 理由は単純である。私たちの目は、星明かりから日中の明るさまで、あらゆる照明条件にわたって有用な情報を提供する必要がある。 雲のない満月の夜、光の強度は晴れた日中のわずか44万分の1程度しかないが、それでも私たちの目はその両極端、そしてその間のあらゆる状況で正常に機能しなければならない。 これが、線形な光源の相対的な明るさを判断するのを非常に難しくしている。
色覚異常
色覚異常は、その名前から連想されるような、単純に色を知覚できないという症状ではない。 実際には色覚異常には多くの種類があり、もっとも一般的な赤緑色覚異常は、男性人口のおよそ10%に何らかの形で影響を与えている。
色覚異常は簡単な検査で診断でき、これは同じような大きさの点で構成された背景の中から、異なる色の点で作られた模様や記号を識別できるかを調べるものである。
色覚異常を持つ人々への配慮として、情報を伝えるために色だけに頼らないようにしてほしい。 悪い設計の例としては、ある状態を示すために色が変わるLED(緑は「正常」、赤は「失敗」)、数値と地域を結びつけるために色の範囲を使う地図、白地に黒か黒地に白以外の文字色などが挙げられる。
赤外線
赤外線は、可視光よりも波長が長く、マイクロ波よりも波長が短い光である。 慣例的に700nmから始まり1mm(1,000,000nm)までとされており、紫外線や可視光よりもはるかに広いスペクトルの領域を占めている。 太陽から地表に届く光エネルギーのおよそ55%は赤外線である。
近赤外線
近赤外線は電子工学において非常に興味深い領域である。これは、赤外線リモコン、物体センサー、距離検出器が動作する領域である。 これは可視光の範囲のすぐ上にあり、半導体技術で作り出すことも検知することも非常に簡単である。
近赤外線の帯域は1400nmまで広がっている。 よく使われる発光波長は850nmと950nmである。 私たちの周りには常に膨大な量の近赤外線が存在しており、赤外線を使った信号伝達やセンシングが干渉を受ける可能性は大きい。 たいていの赤外線信号システム(赤外線リモコンなど)は、望まない波長の光を除去しようとするのではなく、決まった周波数でビームを変調することでこの問題を解決している。
近赤外線はデジタルカメラでもよく検知される。 あまりによく検知されるため、たいていのデジタルカメラには赤外線の波長を遮断する物理的なフィルターが搭載されている。 このフィルターを取り外せば、赤外線領域での感度を高めることができる。 可視光を遮り赤外線だけを通す単純なフィルターは、35mmフィルムのネガから作ることができる。写真の写っていないフィルムロールの端の部分がちょうどよい。
長波長赤外線
長波長赤外線は8000nm〜15000nmの範囲の光である。 これはサーモグラフィーの領域であり、物の相対的な温度を示すあの見事な疑似カラー画像はここから生まれている。
近赤外線イメージングと長波長赤外線イメージングの違いを誤解するのは、よくある間違いである。 近赤外線イメージングは比較的簡単に実現できる。標準的なCMOSやCCDのイメージングチップは、近赤外線領域の光を簡単に検知できる。 一方、長波長赤外線には専用のセンサーが必要である。この光の波長は近赤外線の1000倍も長いため、センサー素子にもそれに応じた大きな構造が必要になる。
この領域のもうひとつの、ますます身近になっている用途がレーザーエッチングとレーザー切断である。 たいていのレーザーカッターは、10640nmの波長でレーザー光を発生させるCO2レーザー管を使っている。
まとめ
光は魅力的で複雑な存在であり、このチュートリアルではその表面をなぞったにすぎない。 さらに学びたい場合は、次のような優れた情報源を確認してみてほしい。
- IR Communication(赤外線通信)
- IR Control Kit Hookup Guide(赤外線コントロールキットの使い方)
- TSL2561 Luminosity Sensor Hookup Guide(TSL2561照度センサーの使い方)
- Wikipediaの紫外線に関する記事
- Wikipediaの可視光に関する記事
- Wikipediaの赤外線に関する記事
- さまざまなレーザーカッターの波長についての記事
- 可視光と目にまつわるトリックについての記事
- 「Color IQ」テスト:自分の色覚が「正常」にどれだけ近いかを調べられる
タグ: 概念、光、物理学
出典:Light(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
抵抗器
抵抗器は、電子部品の中でもっともありふれた存在である。 ほぼすべての回路に欠かせない部品であり、私たちのお気に入りの式であるオームの法則にも重要な役割で登場する。
このチュートリアルで扱う内容:
- 抵抗器とは何か
- 抵抗の単位
- 抵抗器の回路図記号
- 抵抗器の直列接続と並列接続
- 抵抗器のさまざまな種類
- カラーコードの読み方
- 表面実装抵抗器の表示の読み方
- 抵抗器の応用例
参考になるチュートリアル:
抵抗器の基礎
抵抗器は、決まった、変化することのない電気抵抗を持つ電子部品である。 抵抗器が持つ抵抗は、回路の中を流れる電子の流れを制限する。
抵抗器は受動部品であり、電力を消費するだけで、生み出すことはない。 抵抗器は、オペアンプやマイコン、その他の集積回路のような能動部品を補う形で回路に組み込まれることが多い。 一般的な用途としては、電流の制限、分圧、I/Oラインのプルアップなどが挙げられる。
抵抗の単位
抵抗器の電気抵抗はオームという単位で測られる。 オームの記号はギリシャ文字の大文字オメガ「Ω」である。 1Ωの定義は(少し回りくどいが)、1ボルト(1V)の電位差を加えたときに1アンペア(1A)の電流が流れる、2点間の抵抗のことである。
他のSI単位と同じように、オームの値が大きいときや小さいときは、キロ、メガ、ギガといった接頭辞をつけて読みやすくする。 抵抗器ではキロオーム(kΩ)やメガオーム(MΩ)の範囲がよく使われる(ミリオーム(mΩ)の抵抗器はあまり見かけない)。 たとえば4,700Ωの抵抗器は4.7kΩの抵抗器と同じであり、5,600,000Ωの抵抗器は5,600kΩ、あるいは(より一般的には)5.6MΩと表記される。
回路図記号
すべての抵抗器には2つの端子があり、抵抗器の両端に1つずつある。 回路図の上では、抵抗器は次の2種類のどちらかの記号で描かれる。
ギザギザの線(あるいは四角形)から伸びている線が、それぞれ抵抗器の端子であり、回路の他の部分へとつながる。
抵抗器の回路記号には、たいてい抵抗値と名前が添えられる。 オームで表される値は、回路を評価するうえでも実際に組み立てるうえでも欠かせない情報である。 抵抗器の名前は、たいてい R に数字を続けたものになる。 1つの回路の中では、それぞれの抵抗器に固有の名前と番号をつける。
抵抗器の種類
抵抗器にはさまざまな形やサイズがある。 スルーホール型のものも、表面実装型のものもある。 値が固定された標準的な抵抗器もあれば、複数の抵抗器がまとまったパッケージや、特殊な可変抵抗器もある。
端子形状と実装方法
抵抗器の実装方法には、スルーホールと表面実装の2種類がある。 それぞれ、PTH(plated through-hole)、SMDまたはSMT(surface-mount technology/device)と略されることが多い。
スルーホール型の抵抗器には長くしなやかなリード線が付いており、ブレッドボードに差し込んだり、プロトタイピングボードやプリント基板(PCB)に手ではんだ付けしたりできる。 ブレッドボードでの試作や、0.6mmほどしかない小さなSMD抵抗器をはんだ付けしたくない場面でよく使われる。 長いリード線はたいてい切りそろえる必要があり、表面実装タイプに比べてスペースを多く取る。
もっとも一般的なスルーホール抵抗器はアキシャル(円筒型)パッケージで、そのサイズは定格電力に比例する。 一般的な½W抵抗器は長さ約9.2mm、より小さな¼W抵抗器は約6.3mmである。
表面実装型の抵抗器は、たいてい小さな黒い長方形で、両端に銀色の光沢のある小さな導電性の端子がついている。 これらの抵抗器はPCBの上に置かれ、対応するランド(はんだ付け用のパッド)にはんだ付けされる。 非常に小さいため、ロボットによって配置され、オーブンではんだを溶かして固定するのが一般的である。
SMD抵抗器は0805(0.08インチ×0.05インチ)、0603、0402といった標準化されたサイズで作られている。 大量生産される基板や、スペースが貴重な設計に向いているが、手ではんだ付けするには安定した精密な手つきが求められる。
抵抗体の材質
抵抗器はさまざまな材料で作られる。 現代の一般的な抵抗器のほとんどは、カーボン、金属、または金属酸化物の薄膜でできている。 これらの抵抗器では、導電性(それでいて抵抗も持つ)の薄い膜がらせん状に巻きつけられ、絶縁材料で覆われている。 飾り気のない標準的なスルーホール抵抗器の多くは、カーボン皮膜抵抗か金属皮膜抵抗である。
その他のスルーホール抵抗器には、巻線型や、極薄の金属箔で作られたものもある。 これらはたいてい高価で高性能な部品であり、高い定格電力や高い耐熱温度といった特有の性質を目的に選ばれる。
表面実装抵抗器は、たいてい厚膜型または薄膜型のいずれかである。 厚膜型は安価だが薄膜型ほどの精度はない。 どちらのタイプも、抵抗性の金属合金の薄い膜がセラミックの基板とガラス/エポキシのコーティングのあいだに挟まれ、両端の導電性の端子につながっている。
特殊なパッケージ
このほかにも、特殊な用途向けの抵抗器がいろいろある。 5個程度の抵抗器があらかじめ配線された抵抗アレイというパッケージもある。 こうしたアレイの中の抵抗器は、共通のピンを共有していたり、分圧回路として構成されていたりする。
可変抵抗器(ポテンショメータ)
抵抗器は必ずしも固定値である必要はない。 レオスタットと呼ばれる可変抵抗器は、決まった範囲の中で抵抗値を調整できる。 レオスタットとよく似たものにポテンショメータ(ポット)がある。 ポットは内部で2つの抵抗を直列につなぎ、そのあいだの中間タップ(ワイパー)を動かすことで調整可能な分圧回路を作り出す。 この種の可変抵抗器は、音量つまみのように調整が必要な入力によく使われる。
抵抗値の表示を読み取る
抵抗器の多くは値を直接表示しているわけではないが、その抵抗値がわかるような表示が施されている。 PTH抵抗器はカラーコード方式(回路に彩りを添えてもくれる)を使い、SMD抵抗器には独自の表示方式がある。
カラーバンドの読み方
スルーホールのアキシャル抵抗器は、たいていカラーバンド方式で値を表示する。 ほとんどの抵抗器には4本のカラーバンドが巻かれているが、5本や6本のものも見つかる。
4バンドの抵抗器
標準的な4バンド抵抗器では、最初の2本のバンドが抵抗値の上位2桁を示す。 3本目のバンドは重みの値であり、最初の2桁に10のべき乗を掛け合わせる倍率を表す。
最後のバンドは抵抗器の誤差(許容差)を示す。 誤差は、抵抗器の実際の抵抗値が、公称値に対してどれだけ前後しうるかを表す。 完璧な抵抗器は存在せず、製造プロセスによって誤差の良し悪しが決まる。 たとえば誤差5%の1kΩ抵抗器は、実際には0.95kΩから1.05kΩのあいだのどこかになりうる。
どのバンドが最初でどれが最後かは、どう見分けるのか。 最後の誤差バンドは、値を示す他のバンドとはっきり離れて配置されていることが多く、たいてい銀色か金色である。
5バンドと6バンドの抵抗器
5バンド抵抗器では、最初の2本のバンドと倍率バンドのあいだに、3桁目を示すバンドが追加される。 5バンド抵抗器は、選べる誤差の種類もより幅広い。
6バンド抵抗器は、基本的には5バンド抵抗器の末尾に、温度係数を示すバンドが1本加わったものである。 これは、セ氏温度が変化したときに抵抗値がどれだけ変化するかを示す。 たいてい、この温度係数の値は非常に小さく、ppmのオーダーである。
カラーバンドを読み取る
カラーバンドを読み取るときは、下のようなカラーコード表を参照する。 最初の2本のバンドについては、その色に対応する数字を調べる。 たとえばここに示す4.7kΩの抵抗器は、最初のバンドが黄色、次が紫色であり、それぞれ数字の4と7に対応する(47)。 この抵抗器の3本目のバンドは赤色であり、47に10²(つまり100)を掛けることを示している。 47×100は4,700である。
カラーコードを覚えたいなら、語呂合わせが役立つこともある。 覚え方はいくつも知られている(中には品のないものもある)。
もう1つの覚え方として、虹の色の並び「赤橙黄緑青藍紫」から藍(indigo)を抜き、先頭に黒と茶色、末尾に灰色と白を加える、という方法もある。
抵抗器のカラーコード表
| 色 | 値(上位2桁) | 倍率(3桁目) | 誤差(4桁目) |
|---|---|---|---|
| 黒 | 0 | ×1 | |
| 茶 | 1 | ×10 | |
| 赤 | 2 | ×100 | |
| 橙 | 3 | ×1,000 | |
| 黄 | 4 | ×10,000 | |
| 緑 | 5 | ×100,000 | |
| 青 | 6 | ×1,000,000 | |
| 紫 | 7 | ×10,000,000 | |
| 灰 | 8 | ×100,000,000 | |
| 白 | 9 | ×1,000,000,000 | |
| 金 | ±5% | ||
| 銀 | ±10% |
たとえば「黄、紫、赤、金」の4バンドなら、47×100 = 4,700Ω、誤差±5%となり、1kΩ±5%の抵抗器であれば「茶、黒、赤、金」のように読み取れる。
表面実装抵抗器の表示を読み取る
0603や0805パッケージのようなSMD抵抗器は、値の表示方法が異なる。 よく見られる表示方式がいくつかあり、たいてい部品の上面に3〜4文字(数字またはアルファベット)が印刷されている。
見えている3文字がすべて数字であれば、それはおそらくE24方式の表示である。 この表示方法は、PTH抵抗器のカラーバンド方式とよく似た考え方に基づいている。 最初の2つの数字が値の上位2桁を、最後の数字が倍率を表す。
上の写真の例では、抵抗器に104、105、205、751、754という表示がある。 104と表示された抵抗器は100kΩ(10×10⁴)、105は1MΩ(10×10⁵)、205は2MΩ(20×10⁵)である。 751は750Ω(75×10¹)、754は750kΩ(75×10⁴)である。
もう1つよく使われる表示方式がE96であり、この中ではもっとも読み解きにくい。 E96方式の抵抗器には3文字が表示され、最初の2つが数字、最後の1つがアルファベットになっている。 最初の2つの数字は、下の対応表を使って値の上位3桁を示す。
| コード | 値 | コード | 値 | コード | 値 | コード | 値 | コード | 値 | コード | 値 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 01 | 100 | 17 | 147 | 33 | 215 | 49 | 316 | 65 | 464 | 81 | 681 |
| 02 | 102 | 18 | 150 | 34 | 221 | 50 | 324 | 66 | 475 | 82 | 698 |
| 03 | 105 | 19 | 154 | 35 | 226 | 51 | 332 | 67 | 487 | 83 | 715 |
| 04 | 107 | 20 | 158 | 36 | 232 | 52 | 340 | 68 | 499 | 84 | 732 |
| 05 | 110 | 21 | 162 | 37 | 237 | 53 | 348 | 69 | 511 | 85 | 750 |
| 06 | 113 | 22 | 165 | 38 | 243 | 54 | 357 | 70 | 523 | 86 | 768 |
| 07 | 115 | 23 | 169 | 39 | 249 | 55 | 365 | 71 | 536 | 87 | 787 |
| 08 | 118 | 24 | 174 | 40 | 255 | 56 | 374 | 72 | 549 | 88 | 806 |
| 09 | 121 | 25 | 178 | 41 | 261 | 57 | 383 | 73 | 562 | 89 | 825 |
| 10 | 124 | 26 | 182 | 42 | 267 | 58 | 392 | 74 | 576 | 90 | 845 |
| 11 | 127 | 27 | 187 | 43 | 274 | 59 | 402 | 75 | 590 | 91 | 866 |
| 12 | 130 | 28 | 191 | 44 | 280 | 60 | 412 | 76 | 604 | 92 | 887 |
| 13 | 133 | 29 | 196 | 45 | 287 | 61 | 422 | 77 | 619 | 93 | 909 |
| 14 | 137 | 30 | 200 | 46 | 294 | 62 | 432 | 78 | 634 | 94 | 931 |
| 15 | 140 | 31 | 205 | 47 | 301 | 63 | 442 | 79 | 649 | 95 | 953 |
| 16 | 143 | 32 | 210 | 48 | 309 | 64 | 453 | 80 | 665 | 96 | 976 |
末尾のアルファベットは倍率を表し、次の表と対応する。
| 文字 | 倍率 | 文字 | 倍率 | 文字 | 倍率 |
|---|---|---|---|---|---|
| Z | 0.001 | A | 1 | D | 1000 |
| Y または R | 0.01 | B または H | 10 | E | 10000 |
| X または S | 0.1 | C | 100 | F | 100000 |
たとえば01Cという表示は、おなじみの10kΩ(100×100)であり、01Bは1kΩ(100×10)、01Dは100kΩになる。 ここまでは簡単だが、他のコードはそう単純にいかないこともある。 先ほどの写真にある85Aは750Ω(750×1)、30Cは実は20kΩである。
定格電力
抵抗器の定格電力は、あまり目立たない値の1つだが、抵抗器の種類を選ぶときには重要になる話題である。
電力とは、エネルギーが別の形に変換される速さのことであり、2点間の電位差にそのあいだを流れる電流を掛け合わせて計算され、単位はワット(W)である。 たとえば電球は電気を光に変換する。 しかし抵抗器は、流れ込んだ電気エネルギーを熱に変換することしかできない。 熱は電子部品にとってあまり良い遊び相手ではなく、熱がこもりすぎると煙や火花、火災につながる。
すべての抵抗器には、決まった最大定格電力がある。 抵抗器が熱くなりすぎないようにするには、抵抗器にかかる電力を最大定格未満に保つことが重要である。 定格電力はワットで測られ、たいてい⅛W(0.125W)から1Wの範囲に収まる。 1Wを超える定格電力を持つ抵抗器は、パワー抵抗器と呼ばれ、電力を消費する能力そのものを目的として使われる。
定格電力の見分け方
抵抗器の定格電力は、たいていパッケージの大きさから見分けられる。 標準的なスルーホール抵抗器は¼Wか½Wの定格であることが多い。 より特殊な用途向けのパワー抵抗器では、定格電力が抵抗器自体に表示されていることもある。
表面実装抵抗器の定格電力も、サイズからある程度判断できる。 0402サイズと0603サイズはたいてい1/16W定格、0805サイズは1/10Wに対応する。
抵抗器にかかる電力を計算する
電力はたいてい電圧と電流の積(P = IV)として計算されるが、オームの法則を使えば抵抗値からも電力を計算できる。 抵抗器を流れる電流がわかっているなら、電力は次のように計算できる。
\[ P = I^2 \times R \]
あるいは、抵抗器にかかる電圧がわかっているなら、電力は次のように計算できる。
\[ P = \frac{V^2}{R} \]
抵抗の直列接続と並列接続
電子工作では、抵抗器を直列や並列の回路にまとめて使うことがよくある。 抵抗器を直列や並列に組み合わせると合成抵抗が生まれ、それは2つの式のどちらかで計算できる。 抵抗値の組み合わせ方を知っておくと、特定の抵抗値を作り出したいときに役立つ。
直列抵抗
抵抗器を直列につないだ場合、抵抗値は単純に足し合わされる。
\[ R_{合成} = R_1 + R_2 + \cdots + R_N \]
N個の抵抗器を直列につないだ場合、合成抵抗はすべての抵抗値の総和になる。
たとえば、どうしても12.33kΩの抵抗器が必要だとする。 そんなときは、より入手しやすい12kΩと330Ωの抵抗器を見つけて、直列につなげばよい。
並列抵抗
並列につないだ抵抗器の合成抵抗を求めるのは、直列ほど簡単ではない。 N個の抵抗器を並列につないだときの合成抵抗は、それぞれの抵抗の逆数の和の、さらに逆数になる。 言葉で説明するより、式を見たほうがわかりやすいだろう。
\[ \frac{1}{R_{合成}} = \frac{1}{R_1} + \frac{1}{R_2} + \cdots + \frac{1}{R_N} \]
(抵抗の逆数は実はコンダクタンスと呼ばれており、より簡潔に言えば、並列につないだ抵抗器のコンダクタンスは、それぞれのコンダクタンスの総和になる。)
この式の特別な場合として、抵抗器が2本だけの場合は、逆数の入れ子が少ない次の式で合成抵抗を求められる。
\[ R_{合成} = \frac{R_1 \times R_2}{R_1 + R_2} \]
さらに特別な場合として、同じ値の抵抗器2本を並列につないだ場合、合成抵抗はその値のちょうど半分になる。 たとえば10kΩの抵抗器2本を並列につなぐと、合成抵抗は5kΩになる。
2つの抵抗器が並列であることを示す省略記法として、並列演算子 ‖ が使われる。
たとえばR1とR2が並列であれば、概念上はR1‖R2と書ける。
分数だらけの式を書かずに済み、すっきりする。
抵抗ネットワーク
合成抵抗の計算に慣れてもらうための定番として、電子工学の先生たちは、入り組んだ抵抗ネットワークの合成抵抗を求めさせるのが大好きである。
穏やかな問題の例としては、「この回路の端子AからBまでの抵抗はいくつか」というものがある。
この手の問題を解くには、回路の一番奥から手をつけ、端子に向かって少しずつ単純化していく。 この例では、R7、R8、R9がすべて直列につながっているので、まとめて足し合わせられる。 この3本はR6と並列になっているので、これら4本の抵抗はR6‖(R7+R8+R9)という1本の抵抗にまとめられる。 すると回路はこうなる。
今度は、右側の4本の抵抗をさらに単純化できる。 R4、R5、そして先ほどまとめたR6〜R9の合成抵抗は、すべて直列につながっているので足し合わせられる。 そうしてできた直列部分は、R3と並列になっている。
こうして、A端子とB端子のあいだに残るのは3本の直列抵抗だけになる。 あとは足し合わせるだけである。 つまり、この回路全体の合成抵抗は R1+R2+R3‖(R4+R5+R6‖(R7+R8+R9)) となる。
応用例
抵抗器は、これまでに作られたほぼすべての電子回路に登場する。 ここでは、抵抗器に大きく依存しているいくつかの回路の例を紹介する。
LEDの電流制限
LEDに電力を加えたときに壊れてしまわないようにするうえで、抵抗器は鍵となる部品である。 LEDに直列に抵抗器をつなぐことで、両方の部品を流れる電流を安全な値に制限できる。
電流制限抵抗の値を決めるときは、LEDの2つの特性値、標準順方向電圧と最大順方向電流を確認する。 標準順方向電圧は、LEDを点灯させるのに必要な電圧であり、LEDの色によって(たいてい1.7Vから3.4Vの範囲で)異なる。 最大順方向電流は、基本的なLEDではたいてい20mA程度であり、LEDに流し続ける電流は常にこの定格以下に保つ必要がある。
この2つの値がわかれば、次の式で電流制限抵抗の値を決められる。
\[ R = \frac{V_S - V_F}{I_F} \]
VS は電源電圧(電池や電源の電圧)であり、VF と IF は、それぞれLEDの順方向電圧と流したい電流である。
たとえば、9Vの電池でLEDを点灯させるとする。 赤色LEDであれば、順方向電圧はおよそ1.8V程度になる。 電流を10mAに制限したいなら、およそ720Ωの抵抗器を直列に入れればよい。
分圧回路
分圧回路は、大きな電圧を小さな電圧に変換する抵抗器の回路である。 2本の抵抗器を直列につなぐだけで、入力電圧のある割合の出力電圧を作り出せる。
R1とR2という2つの抵抗器を直列につなぎ、その両端に電源電圧(Vin)を接続する。 VoutからGNDまでの電圧は、次の式で計算できる。
\[ V_{out} = V_{in} \times \frac{R_2}{R_1 + R_2} \]
たとえばR1が1.7kΩ、R2が3.3kΩであれば、5Vの入力電圧をVout端子で3.3Vに変換できる。
分圧回路は、フォトセルやフレックスセンサー、感圧抵抗(FSR)のような抵抗性のセンサーを読み取るのに非常に便利である。 分圧回路の一方をセンサーに、もう一方を固定の抵抗器にする。 2つの部品のあいだの出力電圧を、マイコン(MCU)のアナログ-デジタル変換器に接続して、センサーの値を読み取る。
プルアップ抵抗
プルアップ抵抗は、マイコンの入力ピンを既知の状態にバイアスしたいときに使われる。 抵抗器の一方の端はMCUのピンに、もう一方の端は高い電圧(たいてい5Vか3.3V)につながる。
プルアップ抵抗がないと、MCUの入力はフローティング状態のままになりうる。 フローティング状態のピンがハイ(5V)なのかロー(0V)なのかは、保証されない。
プルアップ抵抗は、ボタンやスイッチの入力を扱うときによく使われる。 スイッチが開いているときは、プルアップ抵抗が入力ピンをバイアスする。 そしてスイッチが閉じたときには、ショートから回路を守る役割も果たす。
上の回路では、スイッチが開いているとき、MCUの入力ピンは抵抗器を通して5Vにつながっている。 スイッチが閉じると、入力ピンは直接GNDにつながる。
プルアップ抵抗の値は、特に厳密に決める必要はない。 ただし、5V程度の電圧をかけたときに電力を無駄に消費しすぎない程度には高い値にしておくべきである。 たいてい10kΩ程度の値がよく使われる。
まとめ
抵抗器についての基礎が身についたところで、電子工作の他の基礎的な部品にも目を向けてみよう。 抵抗器だけがすべてではない。
抵抗器の応用をさらに知りたいなら、次のチュートリアルもおすすめである。
タグ: 部品、電気工学、技術
出典:Resistors(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
コンデンサ
コンデンサは、2端子の電子部品である。 抵抗器やインダクタと並んで、もっとも基本的な受動部品の1つであり、コンデンサがまったく使われていない回路を探すほうが難しいくらいである。
コンデンサを特別な存在にしているのは、エネルギーを蓄える能力である。 いわば、満充電の電池のようなものだ。 一般にキャパシタとも呼ばれるこの部品は、回路の中であらゆる重要な役割を担っており、局所的なエネルギーの蓄積、電圧スパイクの抑制、複雑な信号のフィルタリングなど、その用途は幅広い。
このチュートリアルで扱う内容:
- コンデンサがどう作られているか
- コンデンサがどう動作するか
- 静電容量の単位
- コンデンサの種類
- コンデンサの見分け方
- 静電容量が直列や並列でどう合成されるか
- コンデンサのよくある応用例
参考になるチュートリアル:
記号と単位
回路図記号
コンデンサを回路図に描く方法には、一般的なものが2通りある。 コンデンサには常に2つの端子があり、そこから回路の残りの部分へとつながる。 コンデンサの記号は、平行な2本の線(まっすぐなものと、曲がったもの)で表され、どちらの記号でも2本の線は互いに平行で、近くにあるが接触してはいない(これは実際のコンデンサの構造をそのまま表している)。 言葉で説明するより、見たほうが早い。
曲線を使った記号(上の写真の2番目)は、そのコンデンサが極性を持つこと、つまりおそらく電解コンデンサであることを示している。 詳しくは、このチュートリアルの後半にある「コンデンサの種類」の節で説明する。
それぞれのコンデンサには、C1、C2のような名前と、値が添えられる。 この値は、そのコンデンサの静電容量、つまり何ファラドあるかを示す。 ファラドという単位について、もう少し詳しく見ていこう。
静電容量の単位
すべてのコンデンサが同じというわけではない。 それぞれのコンデンサは、決まった大きさの静電容量を持つように作られている。 コンデンサの静電容量は、どれだけの電荷を蓄えられるかを表す量であり、静電容量が大きいほど蓄えられる電荷の量も多くなる。 静電容量の標準単位はファラド(記号 F)と呼ばれる。
実は1ファラドというのは非常に大きな静電容量であり、0.001F(1ミリファラド、1mF)であっても十分に大きなコンデンサになる。 実際に使われるコンデンサの多くは、ピコファラド(10⁻¹²)からマイクロファラド(10⁻⁶)程度の範囲に収まる。
| 接頭辞の名前 | 記号 | 倍率 | ファラド換算 |
|---|---|---|---|
| ピコファラド | pF | 10⁻¹² | 0.000000000001 F |
| ナノファラド | nF | 10⁻⁹ | 0.000000001 F |
| マイクロファラド | µF | 10⁻⁶ | 0.000001 F |
| ミリファラド | mF | 10⁻³ | 0.001 F |
| キロファラド | kF | 10³ | 1000 F |
ファラドからキロファラドの範囲に入ってくると、スーパーキャパシタやウルトラキャパシタと呼ばれる特殊なコンデンサの話になってくる。
コンデンサの理論
Note
ここで説明する内容は、電子工作を始めたばかりの人にとって必ずしも重要ではなく、後半になるほど話が少し込み入ってくる。 「コンデンサの作り方」の節はぜひ読んでほしいが、それ以外の節は、難しく感じたら読み飛ばしてもかまわない。
コンデンサの作り方
コンデンサの回路記号は、実際の構造をかなり忠実に表している。 コンデンサは、2枚の金属板と、誘電体と呼ばれる絶縁材料からできている。 2枚の金属板は互いにごく近い距離で平行に配置されるが、誘電体がそのあいだに挟まることで、金属板どうしが直接触れ合わないようになっている。
誘電体には、紙、ガラス、ゴム、セラミック、プラスチックなど、電流の流れを妨げるものであればさまざまな絶縁材料が使われる。
金属板には、アルミニウム、タンタル、銀といった導電性の材料が使われる。 それぞれの金属板は端子用の配線につながっており、最終的に回路の他の部分と接続される。
コンデンサの静電容量、つまり何ファラドあるかは、その構造によって決まる。 静電容量を大きくするには、より大きなコンデンサが必要になる。 金属板が重なり合う面積が大きいほど静電容量は大きくなり、金属板どうしの距離が離れるほど静電容量は小さくなる。 誘電体の材質も、コンデンサの静電容量に影響を与える。 コンデンサの静電容量は、次の式で計算できる。
\[ C = \varepsilon_r , \varepsilon_0 , \frac{A}{d} \]
ここで εr は誘電体の比誘電率(誘電体の材質によって決まる定数)、A は金属板が重なり合う面積、d は金属板どうしの距離である。
コンデンサの動作原理
電流とは電荷の流れであり、電子部品はこの電荷の流れを利用して光ったり回転したりと、それぞれの働きをしている。 電流がコンデンサに流れ込むと、その電荷は絶縁性の誘電体を通り抜けられないため、金属板の上に「取り残される」。 電子、つまり負の電荷を持つ粒子が一方の金属板に吸い寄せられ、その板全体が負に帯電する。 一方の板に集まった大量の負の電荷は、もう一方の板にある同じ負の電荷を押しのけ、その結果もう一方の板は正に帯電する。
それぞれの板の正負の電荷は、異符号どうしなので互いに引き合う。 しかし、あいだに誘電体が挟まっているため、どれだけ引き合いたくても、電荷は(他に行き場が見つかるまで)その板の上に永遠に留まり続ける。 これらの板の上で静止した電荷は電場を作り出し、それが電気的な位置エネルギーや電圧に影響を与える。 このように電荷がコンデンサの上に集まると、電池が化学エネルギーを蓄えるのとちょうど同じように、コンデンサは電気エネルギーを蓄えていることになる。
充電と放電
正負の電荷がコンデンサの金属板の上にそれぞれ集まると、そのコンデンサは充電された状態になる。 コンデンサが電場を保持し、電荷を保ち続けられるのは、それぞれの板の正負の電荷が互いに引き合いながらも、決して触れ合うことがないからである。
やがて、コンデンサの金属板は電荷でいっぱいになり、それ以上受け入れられなくなる。 一方の板に集まった負の電荷が十分に多くなると、新たに加わろうとする負の電荷を押し返すようになる。 ここで関係してくるのが、コンデンサの静電容量(ファラド)であり、これがそのコンデンサに蓄えられる電荷の最大量を表している。
回路の中に、電荷どうしが互いに向かうための別の道筋ができると、電荷はコンデンサから出ていき、コンデンサは放電する。
たとえば下の回路では、電池を使ってコンデンサの両端に電位差を作り出せる。 これにより、それぞれの板に等しく符号の異なる電荷が蓄積していき、それ以上の電流の流入を押し返すほどいっぱいになる。 コンデンサに直列にLEDを配置すれば、電流の通り道ができ、コンデンサに蓄えられたエネルギーを使ってLEDを一瞬だけ点灯させられる。
電荷、電圧、電流の計算
コンデンサの静電容量、つまり何ファラドあるかを見れば、どれだけの電荷を蓄えられるかがわかる。 そのコンデンサが現在どれだけの電荷を蓄えているかは、板のあいだの電位差(電圧)によって決まる。 電荷、静電容量、電圧のこの関係は、次の式でモデル化できる。
\[ Q = C \times V \]
コンデンサに蓄えられる電荷(Q)は、その静電容量(C)と、かかっている電圧(V)の積である。
コンデンサの静電容量は、常に一定の既知の値であるはずのものである。 そのため、電圧を調整することで、コンデンサの電荷を増減できる。 電圧が高いほど電荷は多くなり、電圧が低いほど電荷は少なくなる。
この式は、1ファラドの定義を考えるうえでも役に立つ。 1ファラド(F)とは、1ボルトあたり1単位のエネルギー(クーロン)を蓄えられる容量のことである。
電流の計算
電荷、電圧、静電容量の式をもう一歩進めれば、静電容量と電圧が電流にどう影響するかもわかる。 なぜなら、電流とは電荷が流れる速さだからである。 コンデンサと電圧、電流の関係を要約すると次のようになる。 コンデンサを流れる電流の大きさは、静電容量と、電圧がどれだけ速く上下しているかの両方によって決まる。 コンデンサの両端の電圧が急激に上昇すると、大きな正の電流がコンデンサを流れる。 電圧の上昇がゆるやかであれば、コンデンサを流れる電流も小さくなる。 コンデンサの両端の電圧が一定で変化していなければ、電流はまったく流れない。
(ここから先は微分が絡んでくるやや込み入った話であり、時間領域の解析やフィルタ設計のような込み入った話に踏み込むまでは特に必要ないので、この式に抵抗があれば次の節まで読み飛ばしてかまわない。) コンデンサを流れる電流を計算する式は次のとおりである。
\[ i(t) = C , \frac{dV}{dt} \]
この式の dV/dt の部分は、電圧の時間に関する微分(もう少し噛み砕けば瞬間的な変化の速さ)であり、「まさに今この瞬間、電圧がどれだけ速く上下しているか」を表している。 この式からわかる重要な点は、電圧が一定であればその微分はゼロになり、つまり電流もゼロになるということである。 これが、一定の直流電圧がかかったコンデンサに電流が流れない理由である。
コンデンサの種類
コンデンサにはさまざまな種類があり、種類によって得意な用途と不得意な用途がある。
コンデンサの種類を選ぶときに考慮すべき要素がいくつかある。
- 大きさ:物理的な体積と静電容量の両方の意味での大きさである。回路の中でコンデンサがもっとも大きな部品になることも珍しくない一方、非常に小さなものもある。一般に、静電容量が大きいほど、より大きなコンデンサが必要になる。
- 最大電圧:それぞれのコンデンサには、かけられる電圧の上限が定められている。1.5V定格のものもあれば、100V定格のものもある。この上限を超えると、たいていコンデンサは壊れてしまう。
- 漏れ電流:コンデンサは完璧な部品ではない。どのコンデンサも、誘電体を通してわずかな電流が一方の端子からもう一方へ漏れ出す性質を持っている。このわずかな電流の損失(たいていナノアンペア程度かそれ以下)を漏れ電流と呼ぶ。漏れ電流があると、コンデンサに蓄えられたエネルギーは少しずつ、しかし確実に失われていく。
- 等価直列抵抗(ESR):コンデンサの端子は100%導電性というわけではなく、常にごくわずかな抵抗(たいてい0.01Ω未満)を持っている。この抵抗は、コンデンサに大きな電流が流れたときに熱や電力損失を生む原因になる。
- 誤差(許容差):コンデンサも、正確に狙った静電容量ちょうどに作ることはできない。それぞれのコンデンサには公称の静電容量が定められているが、種類によっては実際の値が目的の値の±1%から±20%程度まで変動することがある。
セラミックコンデンサ
もっとも広く使われ、もっとも多く生産されているコンデンサがセラミックコンデンサである。 この名前は、誘電体に使われている材料に由来する。
セラミックコンデンサは、物理的な大きさも静電容量も小さいことが多い。 10µFを大きく超えるセラミックコンデンサを見つけるのは難しい。 表面実装型のセラミックコンデンサは、0402(0.4mm×0.2mm)、0603(0.6mm×0.3mm)、0805といった小さなパッケージでよく見られる。 スルーホール型のセラミックコンデンサは、たいてい小さな(黄色や赤色が多い)球根のような形をしていて、2本の端子が飛び出している。
同じくらい人気のある電解コンデンサと比べると、セラミックコンデンサはより理想的なコンデンサに近い(ESRも漏れ電流もずっと小さい)が、静電容量が小さい点が制約になる。 たいてい、もっとも安価な選択肢でもある。 高周波のカップリングやデカップリングの用途によく合う。
アルミニウム電解コンデンサとタンタル電解コンデンサ
電解コンデンサの優れた点は、比較的小さな体積に大量の静電容量を詰め込めることである。 1µFから1mF程度の静電容量が必要なら、たいていは電解コンデンサの形で見つかる。 最大電圧の定格が比較的高いため、高電圧の用途にも特に向いている。
電解コンデンサの中でもっとも一般的なアルミニウム電解コンデンサは、たいてい小さな缶のような外観をしていて、両方のリード線が底面から伸びている。
残念ながら、電解コンデンサはたいてい極性を持つ。 正極のピン(アノード)と、負極のピン(カソード)と呼ばれるピンがある。 電解コンデンサに電圧をかけるときは、アノードがカソードより高い電圧になっていなければならない。 電解コンデンサのカソードは、たいてい「-」の表示や、外装のカラーストライプで示されており、アノード側のリードがわずかに長くなっていることでも見分けられる。 電解コンデンサに逆向きの電圧をかけてしまうと、派手に(「ポン」という音とともに)破裂し、二度と使えなくなる。 一度破裂した電解コンデンサは、ショート回路のようにふるまうようになる。
電解コンデンサは漏れ電流でも知られている。 つまり、誘電体を通してわずかな電流(nAのオーダー)が一方の端子からもう一方へ流れてしまう。 そのため、大きな静電容量と高い電圧定格を持ちながらも、エネルギー貯蔵用としては理想的とは言えない側面がある。
スーパーキャパシタ
エネルギーを蓄えるためのコンデンサを探しているなら、スーパーキャパシタが最適である。 このコンデンサは、ファラド単位という非常に大きな静電容量を持つように特別に設計されている。
スーパーキャパシタは大量の電荷を蓄えられる一方で、高い電圧には対応できない。 たとえばこの10Fのスーパーキャパシタは、最大定格電圧がわずか2.5Vである。 これを超える電圧をかけると壊れてしまう。 スーパーキャパシタは、より高い電圧定格を得るために(その代わり合成静電容量は小さくなるが)直列に接続されることが多い。
スーパーキャパシタの主な用途は、電池と同じようにエネルギーを蓄えて放出することであり、電池はスーパーキャパシタにとって最大の競合相手でもある。 同じ体積の電池ほど多くのエネルギーは蓄えられないものの、スーパーキャパシタはずっと速くエネルギーを放出でき、寿命もたいてい電池よりずっと長い。
その他の種類
電解コンデンサとセラミックコンデンサだけで、世の中のコンデンサの種類のおよそ80%を占める(スーパーキャパシタはわずか2%程度だが、その名のとおりスーパーな存在である)。 もう1つよく使われる種類がフィルムコンデンサであり、寄生損失(ESR)が非常に小さいため、大電流を扱う用途に適している。
このほかにも、あまり一般的でないコンデンサが数多く存在する。 可変コンデンサは静電容量を変化させられるため、同調回路において可変抵抗の代わりに使うのに適している。 より合わせた電線やプリント基板も、それぞれ絶縁体を挟んだ2つの導体からなるため、(望まない形であることも多いが)静電容量を生み出すことがある。 ライデン瓶(導体で満たされ、導体に囲まれたガラス瓶)は、コンデンサ一族の元祖ともいえる存在である。 そして、フラックスキャパシタ(インダクタとコンデンサを組み合わせた奇妙な部品)は、いつか栄光の過去へ時間を遡ろうと計画しているなら欠かせない部品である。
コンデンサの直列接続と並列接続
抵抗器と同じように、複数のコンデンサを直列や並列に組み合わせて、合成静電容量を作り出せる。 ただし、コンデンサが合成される様子は、抵抗の場合とはまったく逆になる。
コンデンサの並列接続
コンデンサを互いに並列につなぐと、合成静電容量は単純にすべての静電容量の総和になる。 これは、抵抗を直列につないだときの合成の仕方に対応する。
たとえば10µF、1µF、0.1µFの3つのコンデンサを並列につなぐと、合成静電容量は11.1µF(10+1+0.1)になる。
コンデンサの直列接続
抵抗を並列に合成する計算が面倒なのと同じように、コンデンサを直列につなぐ場合も少し癖のある計算になる。 N個のコンデンサを直列につないだときの合成静電容量は、それぞれの静電容量の逆数の和の、さらに逆数になる。
\[ \frac{1}{C_{合成}} = \frac{1}{C_1} + \frac{1}{C_2} + \cdots + \frac{1}{C_N} \]
コンデンサが2個だけの場合は、「和分の積」の方法で合成静電容量を計算できる。
\[ C_{合成} = \frac{C_1 \times C_2}{C_1 + C_2} \]
さらに、同じ値のコンデンサが2個直列につながっている場合、合成静電容量はその値のちょうど半分になる。 たとえば10Fのスーパーキャパシタを2個直列につなぐと、合成静電容量は5Fになる(副次的な効果として、全体の耐圧が2.5Vから5Vへと倍増する)。
応用例
この気の利いた(実際には物理的にかなり大きいこともある)受動部品には、無数の応用例がある。 その用途の広さがわかるように、いくつか例を挙げる。
デカップリング(バイパス)コンデンサ
回路の中で見かけるコンデンサの多くは、特に集積回路を使った回路では、デカップリング用である。 デカップリングコンデンサの役割は、電源信号に含まれる高周波ノイズを抑えることである。 繊細なICにとって有害になりかねない小さな電圧のリップルを、電源電圧から取り除いてくれる。
いわば、デカップリングコンデンサはICのための非常に小さな、局所的な電源のような働きをする(パソコンにとっての無停電電源装置(UPS)に近い)。 電源電圧がごく一瞬だけ落ち込んだとき(回路の負荷が絶えず切り替わるような場合、これは実はよくあることである)、デカップリングコンデンサが一瞬だけ正しい電圧で電力を供給してくれる。 これが、この種のコンデンサがバイパスコンデンサとも呼ばれる理由であり、一時的に電源の役割を「肩代わり(バイパス)」してくれるからである。
デカップリングコンデンサは、電源(5Vや3.3Vなど)とグラウンドのあいだに接続する。 特定の周波数帯のノイズを取り除くのに向き不向きがあるため、値の異なる、あるいは種類の異なる複数のコンデンサを組み合わせて電源をバイパスするのも珍しくない。
電源からグラウンドへの短絡のように見えるかもしれないが、実際にはコンデンサを通ってグラウンドへ流れるのは高周波の信号だけである。 直流信号はそのままICへ向かう。 これらのコンデンサがバイパスコンデンサと呼ばれるもう1つの理由は、高周波(kHzからMHzの範囲)の信号がICを迂回(バイパス)し、代わりにコンデンサを通ってグラウンドへ抜けていくためである。
デカップリングコンデンサを物理的に配置するときは、できる限りICの近くに置くべきである。 ICから離れるほど、その効果は弱くなる。
良い設計の基本として、すべてのICには少なくとも1つのデカップリングコンデンサを添えるべきである。 たいていは0.1µFがよい選択であり、1µFや10µFのコンデンサをあわせて追加してもよい。 安価な部品であり、ICが大きな電圧の落ち込みやスパイクにさらされずに済むようにしてくれる。
電源のフィルタリング
ダイオードによる整流回路は、壁のコンセントから来る交流電圧を、ほとんどの電子機器が必要とする直流電圧に変換するのに使える。 しかし、ダイオードだけでは交流信号をきれいな直流信号に変えることはできず、コンデンサの助けが必要になる。 ブリッジ整流回路に並列コンデンサを追加すると、次のような整流された信号を、
次のような、ほぼ一定の直流信号に変えられる。
コンデンサは頑固な部品であり、電圧の急な変化に常に抵抗しようとする。 整流された電圧が上昇していくあいだ、このフィルタコンデンサは充電されていく。 整流電圧が急に下がり始めると、コンデンサは蓄えたエネルギーを取り崩し、非常にゆっくりと放電しながら負荷にエネルギーを供給する。 入力側の整流信号が再び上昇し始めてコンデンサが再充電されるまでに、コンデンサが完全に放電しきってしまうことはないようにする必要がある。 この駆け引きは、電源が使われている限り、1秒間に何度も繰り返される。
AC-DC電源アダプターを分解してみれば、必ずと言っていいほど比較的大きなコンデンサが少なくとも1つは見つかる。 下の写真は、9VのDC用ACアダプターの中身である。 コンデンサがいくつ見つかるだろうか。
思っていたより多くのコンデンサが見つかるかもしれない。 47µFから1000µFまでの、缶のような外観の電解コンデンサが4個ある。 手前にある大きな黄色い四角形は、高電圧用の0.1µFポリプロピレンフィルムコンデンサである。 青い円盤状のコンデンサと、中央の小さな緑色のコンデンサは、どちらもセラミックコンデンサである。
エネルギーの蓄積と供給
コンデンサがエネルギーを蓄えられるなら、電池と同じように、そのエネルギーを回路に供給する用途に使えるのは当然のことのように思える。 問題は、コンデンサのエネルギー密度が電池よりずっと低いことであり、同じ大きさの化学電池ほど多くのエネルギーを詰め込むことができない(もっとも、その差は年々縮まってきている)。
コンデンサの利点は、たいてい電池より長寿命であることであり、環境面でも優れた選択肢になりうる。 また、電池よりずっと速くエネルギーを放出できるため、短時間だけ大きな電力が必要な用途にも向いている。 カメラのフラッシュは、コンデンサから電力を得ていることが多い(そのコンデンサ自体は、電池によって充電されていることが多い)。
電池かコンデンサか
| 電池 | コンデンサ | |
|---|---|---|
| 容量 | ✓ | |
| エネルギー密度 | ✓ | |
| 充放電の速さ | ✓ | |
| 寿命 | ✓ |
信号のフィルタリング
コンデンサは、周波数の異なる信号に対して独特の応答を示す。 低周波や直流の成分を遮断しながら、より高い周波数だけを通すことができる。 まるで、高周波の信号だけを通す、選り好みの激しいクラブの用心棒のような存在である。
信号のフィルタリングは、あらゆる信号処理の用途で役立つ。 ラジオの受信機では、(他の部品とあわせて)コンデンサを使って不要な周波数を取り除いていることがある。
コンデンサによる信号フィルタリングのもう1つの例が、スピーカー内部にある受動的なクロスオーバー回路であり、1つの音声信号を複数の帯域に分割する役割を持つ。 直列に入れたコンデンサは低周波を遮断し、残った高周波成分だけがスピーカーのツイーターへ送られる。 低周波を通すサブウーファー側の回路では、並列に入れたコンデンサを通して高周波の大部分がグラウンドへ逃がされる。
ディレーティング
コンデンサを扱うときは、システム内で起こりうる最大の電圧スパイクより、十分に高い耐圧を持つコンデンサを選んで設計することが重要である。
コンデンサの耐圧に十分な余裕(ディレーティング)を持たせずに定格電圧を超えてしまうと、コンデンサの種類ごとにどんなことが起きるかを紹介した、SparkFunのエンジニアによる実験動画もある。
まとめ
これで、コンデンサについての基礎知識がひととおり身についたはずである。 電子工作の基礎をさらに学びたいなら、他のよく使われる部品についても読んでみてほしい。
次のようなチュートリアルにも興味があるかもしれない。
タグ: 部品、電気工学、技術
出典:Capacitors(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
ダイオード
抵抗器やコンデンサ、インダクタといった単純な受動部品を卒業したら、次は半導体という素晴らしい世界に踏み出す番である。 半導体部品の中でもっとも広く使われているものの1つがダイオードである。
このチュートリアルで扱う内容:
- ダイオードとは何か
- ダイオードが動作する仕組み
- ダイオードの重要な特性
- ダイオードのさまざまな種類
- ダイオードの見た目
- ダイオードの代表的な応用例
参考になるチュートリアル:
理想的なダイオード
理想的なダイオードの重要な働きは、電流が流れる向きを制御することである。 ダイオードを流れる電流は一方向、いわゆる順方向にしか流れない。 逆方向に流れようとする電流は遮断される。 いわば、電子回路における一方向弁のような部品である。
ダイオードにかかる電圧が負であれば電流は流れず、理想的なダイオードは開放回路のようにふるまう。 このとき、ダイオードはオフ、あるいは逆バイアスの状態にあるという。
ダイオードにかかる電圧が負でない限り、ダイオードは「オン」になって電流を通す。 理想的には、電流が流れているダイオードは短絡回路(両端の電圧が0V)のようにふるまう。 ダイオードに電流が流れているとき、それは順バイアスの状態にある(電子工学の用語で「オン」を意味する)。
| 理想的なダイオードの特性 | オン(順バイアス) | オフ(逆バイアス) |
|---|---|---|
| 流れる電流 | I>0 | I=0 |
| かかる電圧 | V=0 | V<0 |
| ダイオードの状態 | 短絡回路 | 開放回路 |
回路記号
すべてのダイオードには2つの端子(部品の両端の接続点)があり、その2つの端子は極性を持つ、つまり明確に異なる役割を持つ。 ダイオードの接続を間違えないことが重要である。 正極側の端子はアノード、負極側の端子はカソードと呼ばれる。 電流はアノード側からカソード側へは流れるが、その逆には流れない。 電流の向きを忘れてしまったときは、「ACID」(anode current in diode、「アノードから電流がダイオードに入る」)という語呂合わせを思い出すとよい。
標準的なダイオードの回路記号は、線に押し当てられた三角形である。 このチュートリアルの後半で扱うように、ダイオードにはさまざまな種類があるが、たいていの回路記号はこの形を基本としている。
三角形の平らな辺に入っている端子がアノードを表す。 電流は三角形(矢印)が指す方向にしか流れない。
上の例では、左側のダイオードD1は順バイアスがかかっており、回路に電流を流している。 これは実質的に短絡回路のように見える。 右側のダイオードD2は逆バイアスがかかっている。 この回路には電流が流れず、実質的に開放回路のように見える。
もちろん、理想的なダイオードというものは実際には存在しない。 しかし心配は無用で、現実のダイオードはこの理想モデルから少し外れた、いくつかの固有の特性を持っているだけである。
現実のダイオードの特性
理想的には、ダイオードは逆方向の電流をすべて遮断し、順方向であれば単なる短絡回路のようにふるまうはずである。 しかし残念ながら、実際のダイオードの動作はそこまで理想的ではない。 ダイオードは順方向に電流を流しているときにもいくらかの電力を消費し、逆方向の電流もすべてを遮断できるわけではない。 現実のダイオードはもう少し複雑で、それぞれが実際の動作を決める固有の特性を持っている。
電流電圧特性
もっとも重要なダイオードの特性は、その電流電圧(i-v)特性である。 これは、ある部品にかかる電圧に対して、そこを流れる電流がどうなるかを定義するものである。 たとえば抵抗器は、単純な線形の電流電圧特性(オームの法則)を持つ。 しかし、ダイオードのi-v曲線はまったくの非線形であり、次のような形になる。
かかる電圧に応じて、ダイオードは次の3つの領域のいずれかで動作する。
- 順バイアス:ダイオードにかかる電圧が正のとき、ダイオードは「オン」になり電流が流れる。有意な電流を流すには、電圧が順方向電圧(VF)を上回っている必要がある。
- 逆バイアス:ダイオードの「オフ」の状態であり、電圧がVFより低く、-VBRより高い範囲にある。この領域では電流の流れはほぼ遮断され、ダイオードはオフの状態にある。逆飽和電流と呼ばれる非常に小さな電流(nAのオーダー)だけは、逆方向に流れることができる。
- 降伏(ブレークダウン):ダイオードにかかる電圧が非常に大きな負の値になると、カソードからアノードへ向かって大きな電流が逆方向に流れられるようになる。
順方向電圧
順方向に「オン」になって電流を通すには、ダイオードに一定以上の正の電圧をかける必要がある。 ダイオードをオンにするのに必要な標準的な電圧を順方向電圧(VF)と呼ぶ。 「カットイン電圧」や「オン電圧」と呼ばれることもある。
i-v曲線からわかるように、ダイオードを流れる電流とかかる電圧は互いに依存し合っている。 電流が多いほど電圧も高く、電圧が低いほど電流も少ない。 ただし、電圧がおおよそ順方向電圧の定格に達すると、それ以降は電流が大きく増えても電圧の増加はごくわずかにとどまる。 ダイオードが十分に導通しているとき、かかっている電圧は順方向電圧の定格にほぼ等しいとみなしてよい。
ダイオードのVFの値は、使われている半導体材料によって決まる。 一般に、シリコン系のダイオードのVFはおよそ0.6〜1Vである。 ゲルマニウム系のダイオードはそれより低く、およそ0.3V程度になることが多い。 ダイオードの種類も順方向電圧降下に影響し、発光ダイオードはVFがかなり大きくなる一方、ショットキーダイオードは通常より低い順方向電圧になるよう特別に設計されている。
降伏電圧
十分に大きな負の電圧をダイオードにかけると、ダイオードは耐えきれずに逆方向へ電流を流し始める。 この大きな負の電圧を降伏電圧(ブレークダウン電圧)と呼ぶ。 降伏領域で動作するよう意図的に設計されたダイオードもあるが、一般的なダイオードにとって大きな負の電圧にさらされることはあまり好ましくない。
一般的なダイオードの降伏電圧は、およそ-50Vから-100V、あるいはそれ以上の負の値になることが多い。
ダイオードのデータシート
ここまでに挙げた特性は、すべてそれぞれのダイオードのデータシートに記載されている。 たとえば1N4148ダイオードのデータシートには、最大順方向電圧(1V)と降伏電圧(100V)が、他の多くの情報とあわせて記載されている。
データシートには、ダイオードの動作をさらに詳しく示すために、見慣れたi-vグラフが載っていることもある。 このグラフでは、i-v曲線の順方向領域のカーブした部分が拡大されている。 電流が多いほど、より高い電圧が必要になっている様子に注目してほしい。
このグラフからは、もう1つの重要なダイオードの特性、最大順方向電流も読み取れる。 どんな部品とも同じく、ダイオードにも耐えられる電力には限りがあり、それを超えると壊れてしまう。 すべてのダイオードには最大電流、逆電圧、消費電力の定格が記載されているはずである。 定格を超える電圧や電流にさらされたダイオードは、発熱したり、最悪の場合は溶けたり煙を上げたりすることになる。
1Aかそれ以上の大電流に適したダイオードもあれば、上で紹介した1N4148のような小信号ダイオードは200mA程度にしか対応していないこともある。
1N4148は、数あるダイオードのほんの一例にすぎない。 次は、実に多様なダイオードの種類と、それぞれの役割を見ていこう。
ダイオードの種類
標準的なダイオード
信号用ダイオード
標準的な信号用ダイオードは、ダイオードの中でももっとも基本的で、飾り気のない部類に入る。 たいてい中〜高程度の順方向電圧降下と、低めの最大電流定格を持つ。 信号用ダイオードの代表例が1N4148である。 非常に汎用性が高く、標準的な順方向電圧降下は0.72V、最大順方向電流は300mAである。
電力用ダイオード
整流ダイオード(電力用ダイオード)は、はるかに高い最大電流定格を持つ標準的なダイオードである。 この高い電流定格は、たいてい順方向電圧が大きくなることと引き換えになっている。 1N4001が電力用ダイオードの一例である。 1N4001の電流定格は1A、順方向電圧は1.1Vである。
もちろん、たいていのダイオードには表面実装型のバリエーションもある。 どのダイオードにも(どれほど小さく見づらくても)どちらのピンがカソードかを示す何らかの目印があることに気づくはずである。
発光ダイオード(LED)
ダイオード一族の中でもっとも華やかなのが、発光ダイオード(LED)である。 その名のとおり、正の電圧をかけると文字どおり光る。
通常のダイオードと同じく、LEDも一方向にしか電流を通さない。 LEDにも点灯に必要な順方向電圧の定格があり、その値は通常のダイオードより大きく(1.2〜3V程度)、発光する色によっても異なる。 たとえば超高輝度青色LEDの順方向電圧はおよそ3.3Vだが、同じサイズの超高輝度赤色LEDではわずか2.2Vである。
LEDは照明用途でよく見かけるものだが、それだけではない。 高効率であることから、街灯やディスプレイ、バックライトなど、幅広い用途で使われている。 赤外線LEDのように、人の目には見えない光を発するLEDもあり、これはほとんどのリモコンの心臓部となっている。 LEDのもう1つのよくある用途が、危険な高電圧系統を低電圧の回路から光学的に絶縁することである。 フォトカプラ(オプトアイソレータ)は、赤外線LEDとフォトセンサーを組み合わせた部品で、LEDからの光を検知すると電流が流れる仕組みになっている。 下は、フォトカプラを使った回路の例である。 LEDの回路記号が通常のダイオードとは異なり、記号から外側へ向かう矢印がいくつか追加されていることに注目してほしい。
ショットキーダイオード
もう1つよく使われるダイオードがショットキーダイオードである。 ショットキーダイオードの半導体構造は通常のダイオードと少し異なり、そのため順方向電圧降下がかなり小さく、たいてい0.15Vから0.45V程度になる。 それでいて、降伏電圧は通常どおり大きい。
ショットキーダイオードは、わずかな電圧損失も惜しいような場面で特に有用である。 独自の回路記号が与えられており、カソード側の線の両端が少し折れ曲がった形をしている。
ツェナーダイオード
ツェナーダイオードは、ダイオード一族の中でも少し変わった存在である。 意図的に逆方向電流を流すために使われることが多い。
ツェナーダイオードは、非常に精密な降伏電圧(ツェナー降伏電圧、あるいはツェナー電圧)を持つように設計されている。 ツェナーダイオードに十分な電流が逆方向に流れると、その両端の電圧降下はツェナー電圧のところで一定に保たれる。
この降伏特性を利用して、ツェナーダイオードはそのツェナー電圧ちょうどの、既知の基準電圧を作るためによく使われる。 小さな負荷に対する電圧レギュレータとして使うこともできるが、大きな電流を引く回路に対する電圧の安定化には向いていない。
ツェナーダイオードにも独自の回路記号があり、カソード側の線の両端が波打った形をしている。 記号自体に、そのダイオードのツェナー電圧の値が示されていることもある。 下は、3.3Vのツェナーダイオードを使って安定した3.3Vの基準電圧を作る回路の例である。
フォトダイオード
フォトダイオードは、光子(光の粒子)のエネルギーを捉えて電流を生み出すように特別に作られたダイオードであり、いわばLEDの逆の働きをする部品である。
太陽電池はフォトダイオードの技術をもっとも活用している存在だが、フォトダイオードは光の検出や、光を使った通信にも使われる。
ダイオードの応用例
これほど単純な部品でありながら、ダイオードの用途は非常に幅広い。 ほぼすべての回路に、何らかの形でダイオードが使われている。 小信号のデジタル論理回路から、高電圧の電力変換回路まで、その応用範囲は多岐にわたる。 ここでは、そうした応用例のいくつかを紹介する。
整流回路
整流回路は、交流(AC)を直流(DC)に変換する回路である。 この変換は、あらゆる家庭用電子機器にとって欠かせないものである。 壁のコンセントから来るのは交流信号だが、パソコンをはじめとする多くの電子機器を動かしているのは直流である。
交流回路の電流は文字どおり交互に、つまり正の方向と負の方向をすばやく切り替えながら流れるが、直流信号の電流は一方向にしか流れない。 そのため、交流を直流に変換するには、電流が負の方向に流れないようにするだけでよい。 これはまさに、ダイオードの出番である。
半波整流回路は、たった1本のダイオードで作れる。 正弦波のような交流信号をダイオードに通すと、信号の負の部分が切り取られる。
全波ブリッジ整流回路は、4本のダイオードを使って、交流信号の負の山を正の山に変換する。
こうした回路は、壁のコンセントの120/240VACの信号を3.3V、5V、12Vなどの直流信号に変換するAC-DC電源にとって欠かせない部品である。 ACアダプターを分解してみれば、たいてい中に何本かのダイオードが整流のために使われているのが見つかるはずである。
逆接保護
電池を逆向きに入れてしまったり、赤と黒の電源配線を入れ替えてしまったりしたことはないだろうか。 もしそれでも回路が無事だったなら、それはダイオードのおかげかもしれない。 電源の正極側に直列に入れたダイオードは、逆接保護ダイオードと呼ばれる。 これにより、電流は正の方向にしか流れず、電源が回路に加える電圧は常に正になる。
この応用は、電源コネクタに極性がなく、うっかり負極側を入力回路の正極側につないでしまいやすい場合に特に役立つ。
逆接保護ダイオードの欠点は、順方向電圧降下によっていくらかの電圧損失が生じることである。 そのため、ショットキーダイオードは逆接保護用のダイオードとして優れた選択肢になる。
論理ゲート
トランジスタを使わなくても、ANDやORのような単純なデジタル論理ゲートをダイオードだけで作ることができる。
たとえば、2入力のORゲートは、カソードを共有する2本のダイオードで作れる。 この論理回路の出力も、そのカソードの共有点から取り出す。 どちらか一方(あるいは両方)の入力が論理1(ハイ、5V)のとき、出力も論理1になる。 両方の入力が論理0(ロー、0V)のときは、出力は抵抗を通してローに引かれる。
ANDゲートも同様の考え方で作れる。 今度は2本のダイオードのアノードどうしをつなぎ、そこから回路の出力を取り出す。 両方の入力が論理1のときにだけ、電流が出力ピンへ向かって流れてそこをハイに引き上げる。 どちらかの入力がローのときは、5V電源からの電流がそのダイオードを通って流れてしまう。
どちらの論理ゲートも、ダイオードを1本追加するだけで入力を増やせる。
フライバックダイオードと電圧サージの抑制
ダイオードは、予期しない大きな電圧サージによる損傷を防ぐためにもよく使われる。 TVS(過渡電圧抑制)ダイオードは、ツェナーダイオードに似た比較的低い降伏電圧(たいてい20V前後)を持ちながら、非常に大きな電力定格(キロワット単位のこともある)を備えた特殊なダイオードである。 電圧が降伏電圧を超えたときに電流を逃がし、エネルギーを吸収するように設計されている。
フライバックダイオードも同じように電圧サージを抑える働きをするが、こちらはモーターのようなインダクタ性の部品によって引き起こされる電圧サージを対象にしている。 インダクタを流れる電流が急激に変化すると電圧サージが発生し、非常に大きな負のスパイクになることもある。 インダクタ性の負荷に並列にフライバックダイオードを入れておくと、その負の電圧信号を安全に逃がす経路ができ、インダクタとダイオードのあいだをぐるぐると循環しながら、やがて減衰していく。
これらは、この小さな半導体部品が持つ応用例のほんの一部にすぎない。
まとめ
これでダイオードについて理解できたところで、他の半導体部品にも目を向けてみてほしい。
他のよく使われる電子部品についても、ぜひ調べてみてほしい。
タグ: 部品、電気工学、技術
出典:Diodes(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
発光ダイオード(LED)
LEDは私たちの身の回りのいたるところにある。 スマートフォンにも、車にも、家庭の中にも使われている。 何か電子機器が光っているとき、その裏にはたいていLEDがいる。 LEDには実にさまざまな大きさ、形、色があるが、見た目がどうであれ共通点がひとつある。 どんなプロジェクトにも「加えるとうれしくなる」部品だということである。
まずは基本から押さえよう。 そもそもLEDとは何なのか。
LED(エルイーディー)は、電気エネルギーを光に変換する特殊な種類のダイオードである。 実際、LEDは「Light Emitting Diode(発光ダイオード)」の略であり、名は体を表している。 このことは、ダイオードとLEDの回路図記号がよく似ていることにも表れている。
つまり、LEDは小さな電球のようなものである。 ただし、点灯させるのに必要な電力は電球よりもはるかに少ない。 エネルギー効率も高いため、従来の電球のように熱くなることもあまりない(大電力を流した場合は別だが)。 そのため、モバイル機器のような低消費電力の用途に最適である。 とはいえ、高出力の世界でも侮れない。 高輝度LEDはアクセント照明やスポットライト、さらには自動車のヘッドライトにまで使われるようになっている。
参考になるチュートリアル:
LEDの使い方
LEDをあらゆるものに取り付けたくなってきただろうか。 そうなるだろうと思っていた。
ここでいくつかのルールを押さえておこう。
1. 極性が重要である
電子工学における極性とは、回路部品が対称かどうかを示すものである。 LEDはダイオードの一種であるため、電流を一方向にしか流さない。 そして電流が流れなければ、光も出ない。 幸い、これはLEDを逆向きに接続しても壊れないということでもある。 単に動作しないだけである。
LEDの正極側はアノードと呼ばれ、リード線(脚)が長いほうで見分けられる。 もう一方の負極側はカソードと呼ばれる。 電流はアノードからカソードへとしか流れない。 LEDが逆向きに取り付けられていると、電流の流れをせき止めてしまい、回路全体が正しく動作しなくなることがある。 LEDを追加したら回路が動かなくなっても慌てず、まずは向きを反転させてみよう。
2. 電流が多いほど、光も強くなる
LEDの明るさは、そこに流れる電流量に直接左右される。 これには2つの意味がある。 ひとつは、非常に明るいLEDほど電池を早く消耗させるということである。余分な明るさは余分な電力から生まれているからである。 もうひとつは、LEDに流れる電流量を調整することで、明るさをコントロールできるということである。 とはいえ、電流を抑える理由は雰囲気づくりだけではない。
3. 電力にも「かけすぎ」がある
LEDを電流源に直接つなぐと、許される限りの電力を消費しようとして、悲劇の主人公さながらに自らを破壊してしまう。 だからこそ、LEDに流れる電流量を制限することが重要になる。
そのために使うのが抵抗器である。 抵抗器は回路内の電子の流れを制限し、LEDが過大な電流を引き込もうとするのを防いでくれる。 心配は要らない。 最適な抵抗値を求めるには、ちょっとした基本的な計算をするだけでよい。 詳しくは抵抗器のチュートリアルの応用例の節を参照してほしい。
こうした計算に身構える必要はない。 実際には、そこまでひどく失敗することは難しい。 次のセクションでは、電卓を使わずにLED回路を組む方法を紹介する。
計算なしでLEDを使う
データシートの読み方を説明する前に、まずはLEDを実際につないでみよう。 これはLEDのチュートリアルであって、読解のチュートリアルではないのだから。
これは数学のチュートリアルでもないので、LEDを動かすための経験則をいくつか紹介する。 前のセクションの内容から察しがついているかもしれないが、必要なのは電池、抵抗器、LEDである。 電源には電池を使う。入手しやすく、危険なほど大きな電流を供給する心配もないからである。
LED回路の基本形は非常にシンプルで、電池、抵抗器、LEDを直列につなぐだけである。 次のようになる。
330Ω抵抗器
たいていのLEDには330Ω(橙、橙、茶)の抵抗器がちょうどよい値になる。 前のセクションの情報を使って正確な値を求めることもできるが、ここでは計算なしでLEDを扱う方法を紹介しているので、まずは上の回路に330Ωの抵抗器を差し込んで、何が起きるか見てみよう。
試行錯誤
抵抗器の興味深い性質は、余分な電力を熱として放出するということである。 そのため、抵抗器が温かくなっているようなら、もう少し小さい抵抗値に変えたほうがよいだろう。 逆に、抵抗値が小さすぎるとLEDを焼き切ってしまう危険がある。 手元にいくつかLEDと抵抗器を用意して試せる場合は、次のようなフローチャートに沿って試行錯誤しながら回路を設計するとよい。
コイン電池でのLED「スロウィー」
LEDを光らせるもうひとつの方法は、コイン電池に直接つなぐだけというものである。 コイン電池は、LEDを傷めるほどの電流を供給できないため、直接接続してしまってかまわない。 CR2032コイン電池をLEDのリード線の間に挟むだけでよい。 LEDの長いほうの脚が、電池の「+」と表示されている側に触れるようにする。 あとはテープを巻いて磁石を付ければ、どこにでも貼り付けられる「スロウィー」の完成である。
もちろん、試行錯誤の方法でうまくいかない場合は、電卓を取り出してきちんと計算することもできる。 心配はいらない。回路に最適な抵抗値を計算するのはそれほど難しくない。 ただし、最適な抵抗値を求める前に、まずはLEDにとって最適な電流値を知る必要がある。 そのためにデータシートを見てみよう。
データシートを読み解く
見慣れないLEDをいきなり回路につなぐのは、あまり健全なことではない。 まずはそのLEDのことをよく知ろう。 そのための一番の方法が、データシートを読むことである。
例として、Basic Red 5mm LEDのデータシートを見てみよう。
LEDの電流
表の上から順に見ていくと、まず次のような表に出会う。
これは何を意味しているのだろうか。
表の1行目は、そのLEDが連続的に許容できる電流の大きさを示している。 この場合、20mA以下であれば安全に使え、20mAでもっとも明るく点灯する。 2行目は、短時間だけ流してよい最大のピーク電流を示している。 このLEDは短時間であれば30mAまでの急な電流上昇に耐えられるが、その電流を長く維持するのは避けたほうがよい。 このデータシートには、上から3行目に16〜18mAという安定した動作電流の範囲まで書かれており、これが抵抗値を計算する際の目標値としてちょうどよい。
その下の数行は、このチュートリアルの目的にとってはそれほど重要ではない。 逆電圧はダイオードの特性のひとつで、たいていの場合気にする必要はない。 消費電力は、LEDが損傷を受けずに使えるミリワット単位の電力量を示している。 LEDを推奨される電圧と電流の範囲内で使っている限り、この点は自然とクリアできるはずである。
LEDの電圧
他にどんな表があるか見てみよう。
これは便利な表である。 1行目は、LEDにかかる順方向電圧降下を示している。 「順方向電圧」という言葉は、LEDを扱う際に頻繁に登場する。 この数値を見れば、回路がLEDに供給すべき電圧の大きさが分かる。 1つの電源に複数のLEDを接続する場合、この数値は特に重要である。 すべてのLEDの順方向電圧を合計した値が、供給電圧を超えることはできないからである。 この点については、このチュートリアルの後半でさらに詳しく扱う。
LEDの波長
この表の2行目には、光の波長が示されている。 波長とは、光の色を非常に厳密に表現する方法だと考えればよい。 この数値には多少のばらつきがあるため、表には最小値と最大値が示されている。 このLEDの場合は620〜625nmであり、赤色のスペクトル(620〜750nm)の中でも下限に近い波長である。 波長についても、このチュートリアルの後半でさらに詳しく取り上げる。
LEDの明るさ
表の最後の行(「光度」とラベル付けされている)は、そのLEDがどれだけ明るく光れるかを示す指標である。 単位のmcd、つまりミリカンデラは、光源の強さを測るための標準的な単位である。 このLEDの最大光度は200mcdであり、これは人の目を引くには十分だが、懐中電灯ほどの明るさではないという程度である。 200mcdであれば、インジケーターとして使うのにちょうどよい。
配光角
次に登場するのは、LEDの配光角を表す扇形のグラフである。 LEDのスタイルによって、レンズや反射板を使って光を一点に集中させたり、逆に広範囲に拡散させたりする設計になっている。 あらゆる方向に光子を放つ投光器のようなLEDもあれば、真正面から見ないと光っているかどうか分からないほど指向性の強いLEDもある。 このグラフを読むには、グラフの真下にLEDが直立していると想像するとよい。 グラフの「放射状の線」は配光角を表し、円形の線は最大強度に対する割合(パーセント)で強度を表している。 このLEDは配光角がかなり狭い。 LEDを真上(真下)から見たときにもっとも明るいことが、0度の位置で青い線が一番外側の円と交わっていることから分かる。 光の強さが半分になる角度、つまり50%配光角を求めるには、グラフ上で50%の円をたどっていき、青い線と交わったところから、一番近い放射状の線をたどって角度を読み取る。 このLEDの場合、50%配光角はおよそ20度である。
寸法
最後に、機構図がある。 この図には、LEDを実際に筐体に取り付けるために必要な寸法がすべて記載されている。 たいていのLEDと同じく、このLEDにも底部に小さなフランジ(つば)が付いていることに注目してほしい。 これはパネルに取り付けるときに役立つ。 LED本体にぴったり合う大きさの穴をあけておけば、フランジが引っかかってLEDが落ちるのを防いでくれる。
データシートの読み方が分かったところで、世の中にはどんな種類のLEDがあるのか見ていこう。
LEDの種類
おめでとう、これで基本は身についたはずである。 すでにいくつかLEDを手に入れて、あちこち光らせ始めているかもしれない。 それは素晴らしいことである。 それでは、標準的なLED以外の、もう少し凝ったLEDについても紹介しよう。
RGB LED
RGB(赤、緑、青)LEDは、実は3つのLEDが1つにまとまったものである。 とはいえ、3色しか作れないというわけではない。 赤、緑、青は加法混色の三原色であるため、それぞれの強度を調整することで、虹のあらゆる色を作り出せる。 たいていのRGB LEDには4本のピンがあり、それぞれの色に1本ずつと、共通ピンが1本ある。 製品によっては共通ピンがアノードのものもあれば、カソードのものもある。
集積回路内蔵LED
サイクリングLED
LEDの中には、他よりも「賢い」ものもある。 たとえばサイクリングLEDがそうである。 このLEDの内部には実際に集積回路が組み込まれており、外部の制御回路なしにLED自身が点滅できるようになっている。 これをただ電源につなぐだけで、あとは自動的に動作してくれる。 外部の制御回路を組み込むスペースがないものの、もう少し動きのある演出をしたいプロジェクトに最適である。 何千もの色を巡回するRGBの点滅LEDまである。
アドレサブルLED
個別に制御できるタイプのLEDもある。 数珠つなぎにした個々のLEDを制御するために、さまざまなチップセット(WS2812、APA102、UCS1903など)が使われている。
抵抗内蔵LED
抵抗が内蔵されたLEDというものも存在する。 これらのLEDには、電流を制限するための小さな抵抗が組み込まれている。 電源に直接つなぐだけで点灯させることができ、3.3V、5V、9Vでの動作が確認されている。
Note
抵抗内蔵LEDのデータシートによれば、推奨される順方向電圧はおよそ5Vである。 5Vでテストすると約18mAが流れる。 9V電池での負荷テストでは約30mAが流れ、これは入力電圧としてはかなり高めの範囲にあたる。 電圧を高くしすぎるとLEDの寿命が縮まる。 およそ16Vの負荷テストでは、このLEDは焼き切れてしまった。
表面実装(SMD)パッケージ
SMD LEDは、特定の種類のLEDというよりはパッケージの形式である。 電子機器がどんどん小型化する中で、メーカーはより小さな空間により多くの部品を詰め込む方法を編み出してきた。 SMD(表面実装部品)は、標準タイプの部品を小型化したものである。 SMD LEDにはさまざまなサイズがあり、かなり大きなものから、米粒より小さなものまである。 非常に小さく、脚ではなくパッドを持つため標準タイプほど扱いやすくはないが、スペースに余裕がない場合には最適な選択肢になりうる。
SMD LEDはまた、ピックアンドプレース装置を使って大量のLEDをPCBやテープにすばやく実装するのにも向いている。 これらすべての部品を手作業ではんだ付けするのは、あまり現実的ではないだろう。
高出力LED
LuxeonやCREEといったメーカーの高出力LEDは、桁違いに明るい。 一般に、1ワット以上の電力を消費できるLEDは高出力LEDと見なされる。 これらは、高性能な懐中電灯によく使われる高級なLEDである。 これらを並べた配列は、スポットライトや自動車のヘッドライトにも使われる。 これほど大きな電力が流れるため、放熱板が必要になることが多い。 放熱板とは、表面積の大きな熱伝導性の金属の塊であり、余分な熱をできるだけ多く周囲の空気に逃がす役割を持つ。
高出力LEDは、適切に冷却しないと自らを傷めてしまうほどの熱を発生させることがある。 「余分な熱」という言葉に惑わされないでほしい。 それでも、これらの部品は従来の電球に比べればはるかに効率がよい。 制御には、定電流LEDドライバーを使うとよい。
特殊なLED
可視光の範囲外の光を放つLEDも存在する。 たとえば赤外線LEDは、日常的に使っているものが多いはずである。 テレビのリモコンなどで、目に見えない光の形で小さな情報を送るのに使われている。 これらは標準的なLEDと見た目がよく似ているため、区別が難しいこともある。
一方で、スペクトルの反対側には紫外線LEDもある。 紫外線LEDは、ブラックライトのように特定の素材を蛍光させる。 多くの細菌が紫外線に弱いため、表面の消毒にも使われている。 偽造防止(紙幣、クレジットカード、書類など)や日焼けなど、用途は多岐にわたる。 これらのLEDを使うときは、必ず保護メガネを着用すること。
これだけ凝ったLEDが手元にあれば、あらゆるものを光らせない理由はない。 とはいえ、LEDについての知識欲がまだ満たされないなら、続きを読んでほしい。 LED、色、光度についてさらに掘り下げていく。
さらに深く
LED入門を卒業して、もっと知りたくなっただろうか。 心配は要らない、まだまだ話すことがある。 LEDを動かしている(あるいは点滅させている)科学的な仕組みから見ていこう。 LEDが特殊な種類のダイオードであることはすでに触れたが、それが具体的に何を意味するのかをもう少し掘り下げてみよう。
私たちが「LED」と呼んでいるものは、実際にはLED本体とパッケージを合わせたものだが、LED本体そのものは実はとても小さい。 それは不純物をドープした半導体材料のチップであり、電荷キャリアのための境界(pn接合)を作り出している。 電流が半導体に流れ込むと、電子はこの境界の片側からもう一方へと飛び移り、その過程でエネルギーを放出する。 たいていのダイオードでは、このエネルギーは熱として失われるが、LEDではこのエネルギーが光として放出される。
光の波長、つまり色は、そのダイオードを作る半導体材料の種類によって決まる。 これは、半導体のエネルギーバンド構造が材料ごとに異なり、その結果、放出される光子の周波数も異なってくるためである。
光度を放出する強さは、半導体のバンドギャップに依存する波長とは異なり、ダイオードに流れる電力の大きさに依存する。 光度についてはすでに前のセクションで少し触れたが、単に明るさに数値を付けるだけでは語り尽くせない話がある。
光度を測る単位はカンデラと呼ばれるが、1個のLEDの明るさについて話すときは、たいていミリカンデラの範囲になる。 この単位の興味深い点は、それが単純な光のエネルギー量の測定ではなく、実際の「明るさ」そのものを測る指標だということである。 これは、特定の方向に放出される電力を、その光の視感度関数によって重み付けすることで求められる。 人間の目はある波長の光には敏感で、別の波長にはそれほど敏感ではないが、視感度関数はその感度の違いを考慮した標準化されたモデルである。
LEDの光度は、数十ミリカンデラから数万ミリカンデラまで幅広い。 テレビの電源ランプはおよそ100mcd程度であるのに対し、性能のよい懐中電灯は20,000mcdにも達することがある。 数千ミリカンデラを超える明るさのものを直視するのは目を痛める可能性があるため、試さないほうがよい。
順方向電圧降下
先ほど、順方向電圧降下という概念についても説明すると約束していた。 データシートを見ていたときに、回路内のすべてのLEDの順方向電圧を合計した値がシステム電圧を超えることはできないと述べたのを覚えているだろうか。 これは、回路内のすべての部品が電圧を「分け合わなければならない」ためであり、それぞれの部品が使う電圧の合計は、常に利用可能な電圧の総量と等しくなる。 これはキルヒホッフの電圧則と呼ばれる。 そのため、5Vの電源があり、それぞれのLEDの順方向電圧降下が2.4Vだとすると、同時に点灯できるLEDは2個までということになる。
キルヒホッフの法則は、他の部品の順方向電圧から、ある部品にかかる電圧を概算したいときにも役立つ。 たとえば先ほどの例で、5Vの電源に2個のLED(それぞれ順方向電圧降下2.4V)を接続する場合を考えてみよう。 もちろん電流制限用の抵抗器も回路に含めたいところである。 その抵抗器にかかる電圧はどう求めればよいだろうか。 これは簡単である。
5(システム電圧) = 2.4(LED1) + 2.4(LED2) + 抵抗器
5 = 4.8 + 抵抗器
抵抗器 = 5 - 4.8
抵抗器 = 0.2
つまり、抵抗器には0.2Vがかかっていることになる。 これは単純化した例であり、実際にはいつもこれほど簡単というわけではないが、順方向電圧降下がなぜ重要なのかがイメージできたはずである。 キルヒホッフの法則から求めた電圧の値を使えば、オームの法則を使ってある部品に流れる電流を求めることもできる。 要するに、システム電圧は、回路内のすべての部品の順方向電圧の合計とちょうど等しくなるようにしたいということである。
電流制限抵抗の計算
LEDに直列に入れる電流制限抵抗の正確な値を計算したい場合は、抵抗器のチュートリアルの応用例を参照してほしい。 より詳しい情報が載っている。
まとめ
これでLEDについて、ほとんどすべてと言えるほどのことを学んだはずである。 さあ、思う存分あらゆるものにLEDを取り付けてみよう。
LEDに関連する話題についてさらに学びたいなら、次のチュートリアルもおすすめである。
- 光:光は電気工学者にとって役立つ道具である。光と電子工学の関係を理解することは、多くのプロジェクトにとって基本的なスキルである。
- 赤外線通信:一般的な赤外線(IR)通信の仕組みと、Arduinoを使った簡単な赤外線送受信機の作り方を解説する。
- LEDはどうやって作られるのか:LEDメーカーを訪ね、SparkFunのために作られているPTH 5mm LEDがどのように製造されているかを紹介する。
タグ: 部品、電気工学、LED、光、技術
出典:Light-Emitting Diodes (LEDs)(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
LEDはどうやって作られるのか
2014年に中国を訪れた際、部品の供給元であるYunSunが親切にも深圳まで迎えに来てくれて、工場を案内してくれた。
YunSun LED
SparkFunは10年以上にわたってLEDを使い、販売してきたが、それがどのように作られているのか、実際に見たことも、きちんと理解したこともなかった。 そこでYunSunの主な窓口であるMerry Xiaoに、ぜひ学びたいと伝えたところ、工場が休みになる土曜日にわざわざ見学の機会を設けてくれた。 本当にありがたいことである。
写真に写っているのは、YunSunのオーナーであるMr. Siである。 彼は非常にユーモアのある人物で、写っているのは筆者の妻Alicia Gibbが取り組んでいたプロジェクトを手に持っているところである。 Merryも同行し、通訳を務めてくれた。
基本的な部品
これはLEDダイ(半導体チップ)が並んだシートである。 YunSunは、品質の高い台湾企業からこのダイを仕入れている。 写真の親指の隣にあるのは、4,000個のダイである。 このシート1枚のコストはおよそ80元、日本円にして約200円程度である。
それぞれのシートの角には、そのバッチの特性が記載されている。 この特定のシートに載っているダイは波長がおよそ519nmで、緑色と青緑色のちょうど境目にあたる。 薄いシート3枚で、合計12,000個のLEDがこれから作られようとしている。
工程は、打ち抜き加工されたリードフレームから始まる。 1枚のフレームには、LED20個分の基本構造が含まれている。 上の写真にはおよそ15枚のフレーム、つまり300個分のLEDが写っている。
機械
最初の機械は、リードフレームを受け取り、カソード端子の上部にあるカップそれぞれに、少量の接着剤を塗布する。
紙のシートに載って出荷されたままの状態では、LEDダイは互いに近すぎて扱うことができない。 そこで、ダイを広げて弱い粘着性を持つフィルムに貼り付ける専用の機械(写真には写っていない)が使われる。 このフィルムはリードフレームの上に吊るされ、上の写真のような状態になる。 作業者は顕微鏡を使ってダイの位置を手作業で合わせ、ピンセットでダイをリードフレームへと押し込む。 リードフレーム側の接着剤のほうが強いため、ダイはそちらに移り、作業者はすぐに次のダイへと進む。 1分間に80個以上、1日あたりおよそ40,000個を位置合わせできるという。
これはLEDのワイヤーボンディング機械である。 LEDダイの上部からアノードのリードへ向けて、髪の毛ほどの太さの金線を接続する。
この見学でまず驚かされたことの1つは、作業全体が屋外と変わらない環境で行われていたことである。 シリコンダイの取り扱いにはクリーンルーム技術が必要だと思い込んでいたが、これなら自宅の地下室でもできそうなくらいであった。
以下は、ワイヤーボンディング機械が実際に動作している様子を撮影した動画である。
LED Wire Bonding Machine(LEDワイヤーボンディング機械)
この機械はセットアップにかなりの調整と手間がかかったそうだが、いったん稼働し始めると、コンピュータによる位置合わせなしで自動的に動作する様子は見事であった。
ボンディングされるリードは1本だけであるため、カソード側の接着剤には導電性があるのだろう。 この接着剤は次の工程に進む前に、およそ30分かけて硬化する。
ここでもう1つ意外だったことがある。 これは7セグメントディスプレイである。 てっきり、セグメントの裏側にはそれぞれ通常サイズ(3mm程度)のLEDが入っているものと思い込んでいたが、実際には基板に直接ダイが取り付けられている7セグメント用の基板を見るまで、それが誤りだとは気づかなかった。
7セグメント用ボンディング機械を大きく撮影した写真。
成形と検査
スルーホール型LEDの工程に話を戻すと、ワイヤーボンディングが完了し、接着剤が硬化したあと、リードフレームはLED用の金型にセットされ、周囲にエポキシ樹脂が注入される。
LEDの形を決めているのは、まさにこの金型である。 これも「なるほど」と思わされた瞬間だった。 これまでさまざまな形のLEDを見てきたが、それらはいつもある程度決まった寸法の範囲に収まっていた。 たとえば5mmタイプのLEDで、星形の頭を持つものをあまり見かけないのには理由がある。
- 金型は、射出成形と同じように、LEDの頭の部分を型から外せなければならない。オーバーハング(庇状の出っ張り)を持つ形状は、型に引っかかって外れなくなってしまう。では2分割の金型ではどうかというと、それは次の理由につながる。
- LED業界全体が、専門特化した小規模なサプライヤーの集まりによって成り立っている。つまり、シリコンの製造だけを行う会社、リードの製造だけを行う会社、金型の製造だけを行う会社、といった具合に分業されている。工程全体を1社で担っている企業はほとんど存在しないため、YunSunも各サプライヤーが用意している選択肢の中から選ばざるを得ない。筆者らはYunSunに超カスタムで格好いいLEDを作ってほしいと非常に意気込んでいたが、それはほぼ不可能に近い。YunSunだけでなく、変わったサイズのリードフレームやカスタムサイズの金型を用意し、機械のリード間隔を調整し、新しい検査治具と作業手順を作るよう、さらに5社ほどのサプライヤーを説得しなければならないからである。不可能ではないが、想像していたよりもはるかに難しいことだと分かった。
これは、ある金型メーカーのカタログで、実にさまざまな形やサイズが掲載されている。 繰り返しになるが、カスタム形状が不可能というわけではないものの、カタログに載っていない形の場合は、実現がはるかに難しくなる。
エポキシ樹脂を注入したあと、LEDは45分間焼成されるという。 この時点でLEDを金型から取り出せるようになる。 その後さらに8〜12時間焼成し、エポキシを完全に硬化させる。 硬化を終えたLEDは、上の写真のように大きなバッチにまとめられる。
製造工程を支えるため、リードフレームにはアノードとカソードをつなぐ金属片が残されている。 検査の前に、上の写真の機械がこの余分な金属を切り離し、カソードを個別に独立させ、すべてのアノードをまとめてつなげる。 LEDの片方の脚がもう片方より短いのはなぜだろうか。 それは主に、製造工程の自動化や検査をしやすくするためである。 なぜカソード側が短く選ばれたのかといえば、検査の際にロー側(カソード側)を制御するほうが簡単だからだと考えられる。
次の工程では、それぞれのLEDが適切な電流値で動作しているかどうかを検査し、確認する。 電流が少なすぎる場合(断線がある場合)や多すぎる場合(短絡がある場合)は、そのLEDは取り除かれる。 この機械は、一連のポゴピンを使ってそれぞれのLEDを個別かつ高速に検査し、結果をコンピュータの画面に表示する。 これは、SparkFunの製品検査のために設計しているポゴピン式の検査治具と非常によく似ている。
品質検査(QC)に合格したLEDは、さらに別の切断工程を経て、アノードがリードフレームから切り離される。
SparkFunのために作られた、大量の5mm赤色LEDである。
同じ工程を使って、さまざまな形、色、サイズのLEDを作ることができる。
工場全体の様子
全体として、工場はコンパクトで整然としたレイアウトになっていた。 その日必要とされる形やタイプに応じて使い分けられる、4本のラインが用意されていた。
Merry、Alicia、筆者、そしてMr. Siである。 休みの日にもかかわらず工場を案内してくれたYunSunには、心から感謝している。 もしLEDやLED電球が必要になったら、ぜひMerry(merry あっと 100led.com)に連絡してみてほしい。 YunSunは、一緒に仕事をするうえで本当に素晴らしい会社である。
まとめ
ここまで読んでいただき、ありがとうございました。 このようなチュートリアルの制作には多くの手間がかかっているので、何か学びがあったなら幸いである。
LEDで遊んでみたくなった方には、次のような製品もおすすめである。
- LED - Assorted(20個入りアソートパック)
- LED Mixed Bag - 5mm(5mm LEDの詰め合わせ)
- IR Control Kit Retail(赤外線コントロールキット):廃盤
- OpenSegment Serial Display - 20mm(Red):廃盤
- NeoPixel Shield - 40 RGB LED Pixel Matrix:廃盤
- 1.0“ Single Digit Alphanumeric Display(Red):廃盤
LEDがどうやって作られているかを読んだところで、次のようなチュートリアルにも興味が湧くかもしれない。
- 発光ダイオード(LED)
- Interactive Hanging LED Display(吊り下げ式インタラクティブLEDディスプレイ)
- Das Blinken Top Hat(光る シルクハット)
- LED Light Bar Hookup Guide(LEDライトバーの使い方)
- How Lithium Polymer Batteries are Made(リチウムポリマー電池の作られ方)
タグ: 記事、LED
出典:How LEDs are Made(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
トランジスタ
トランジスタは、現代の電子回路の世界を動かしている部品である。 ほぼすべての現代的な回路において、制御の要となる重要な部品である。 目にする機会もあるが、たいていは集積回路のダイの奥深くに隠れている。 このチュートリアルでは、もっとも一般的なトランジスタであるバイポーラ接合トランジスタ(BJT)の基礎を紹介する。
個別部品として少数使う場合、トランジスタは単純な電子スイッチや、デジタル論理回路、信号増幅回路を作るのに使われる。 数千、数百万、数十億という単位で使う場合には、トランジスタどうしが接続され、小さなチップに埋め込まれて、コンピュータのメモリやマイクロプロセッサ、その他の複雑なICを構成する。
このチュートリアルを読み終えるころには、トランジスタがどう動作するかについて幅広い理解が得られるはずである。 半導体物理や等価回路モデルにまで深入りはしないが、トランジスタがスイッチとしても増幅器としても使えることを理解できる程度には掘り下げていく。
トランジスタには大きく分けて2種類ある。バイポーラ接合型(BJT)と金属酸化膜電界効果型(MOSFET)である。 このチュートリアルでは、理解しやすいBJTに焦点を当てる。 さらに、BJTにもNPNとPNPという2つのバージョンがある。 まずは的を絞り、NPNについてしっかり理解することに集中する。 NPNをきちんと理解できれば、そこからの違いを比較することで、PNP(さらにはMOSFET)の理解もぐっと楽になる。
参考になるチュートリアル:
- 電圧、電流、抵抗とオームの法則 電子工学の基礎を紹介している。
- 電気の基礎 電気を電子の流れとして説明している。
- 電力 トランジスタの主な用途の1つが増幅、つまり信号の電力を大きくすることであり、その仕組みを説明している。
- ダイオード トランジスタもダイオードと同じ半導体部品であり、いわば2本のダイオードのアノードどうしを結びつけたようなものである。ダイオードの動作原理を理解しておくと、トランジスタの動作を理解するうえで大いに役立つ。
記号、ピン、内部構造
トランジスタは基本的に3端子の部品である。 バイポーラ接合トランジスタ(BJT)では、それぞれのピンをコレクタ(C)、ベース(B)、エミッタ(E)と呼ぶ。 NPN型とPNP型、それぞれの回路記号を以下に示す。
NPNとPNPの違いは、エミッタに付いている矢印の向きだけである。 NPNでは矢印が外を向き、PNPでは内を向く。 覚え方として、「NPN: Not Pointing iN(内を向いていない)」という語呂合わせがある。 少しひねくれた理屈だが、実際に役に立つ。
トランジスタの内部構造
トランジスタは半導体を使ってその働きを実現している。 半導体とは、銅線のような純粋な導体でもなく、空気のような絶縁体でもない、その中間的な性質を持つ材料である。 半導体の導電性、つまり電子をどれだけ流しやすいかは、温度や電子の過不足といった要因によって変化する。 ここで、トランジスタの内部を少しだけのぞいてみよう。 量子物理学の深い話にまでは立ち入らないので安心してほしい。
2つのダイオードとしてのトランジスタ
トランジスタは、いわば別の半導体部品であるダイオードを拡張したようなものである。 ある意味で、トランジスタは2本のダイオードのカソード(あるいはアノード)どうしを結びつけたものだと考えられる。
ここで重要なのは、ベースとエミッタをつなぐダイオードのほうである。 これは回路記号の矢印の向きと一致しており、トランジスタの中を電流がどちらに流れるように意図されているかを示している。
このダイオードによる表現は理解の出発点としては悪くないが、正確さにはほど遠い。 この模型だけをもとにトランジスタの動作を理解しようとしてはいけない(そしてもちろん、これをそのままブレッドボードで再現しようとしても動かない)。 3つの端子のあいだの相互作用を支配しているのは、もっと不思議な量子物理学レベルの現象である。
(ただし、この模型はトランジスタをテストしたいときには実際に役立つ。テスターのダイオード(または抵抗)測定モードを使って、BE間とBC間を測れば、この「ダイオード」が実際に存在するかどうかを確認できる。)
トランジスタの構造と動作
トランジスタは、3種類の異なる半導体材料の層を積み重ねて作られている。 これらの層の一部には電子が余分に加えられており(「ドーピング」と呼ばれる処理である)、別の層は電子が取り除かれている(「ホール」、つまり電子の欠如がドープされている)。 電子が余分にある半導体材料はn型(電子が負の電荷を持つことからnegativeのn)、電子が取り除かれた材料はp型(positiveのp)と呼ばれる。 トランジスタは、nの上にp、その上にまたnを重ねるか、あるいはpの上にn、その上にまたpを重ねることで作られる。
多少大まかに言えば、電子はn領域からp領域へは、わずかな力(電圧)さえあれば簡単に流れるが、p領域からn領域へ流れるのは非常に難しく(大きな電圧が必要になる)。 しかしトランジスタの特別なところ、つまり先ほどの2ダイオードモデルを時代遅れにしてしまう性質は、ベース-エミッタ接合が順バイアスになっている限り(つまりベースがエミッタより高い電圧になっている限り)、p型のベースからn型のコレクタへも電子が簡単に流れられるという点である。
NPNトランジスタは、エミッタからコレクタへ電子を通すように設計されている(そのため慣用電流はコレクタからエミッタへ流れる)。 エミッタは電子をベースへ「放出(emit)」し、ベースはエミッタが放出する電子の量を制御する。 放出された電子のほとんどはコレクタに「集められ(collect)」、回路の次の部分へ送られる。
PNPも同じ考え方で、向きだけが逆に動作する。 ベースが電流を制御する点は同じだが、電流の向きが逆、つまりエミッタからコレクタへ流れる。 電子の代わりに、エミッタは「ホール」(電子が欠けている状態という概念上の存在)を放出し、それをコレクタが集める。
トランジスタは、いわば電子のバルブ(弁)のようなものである。 ベースのピンは、エミッタからコレクタへ流れる電子の量を調整するための取っ手のようなものだと考えられる。 このたとえをもう少し掘り下げてみよう。
水のたとえをさらに広げる
電気の概念に関するチュートリアルを読み進めてきたなら、水のたとえにはすっかり慣れているだろう。 電流は水の流量に、電圧はその水をパイプに押し通す圧力に、抵抗はパイプの太さに相当する、というものである。
当然ながら、この水のたとえはトランジスタにも応用できる。 トランジスタは水のバルブ、つまり流量を制御するための仕組みのようなものである。
バルブには3つの状態があり、それぞれがシステムの流量に異なる影響を与える。
1)オン(短絡回路)
バルブを完全に開くと、水は自由に流れ、まるでバルブがそこに存在しないかのように通り抜ける。
同じように、適切な条件のもとでは、トランジスタはコレクタとエミッタのあいだが短絡回路であるかのようにふるまう。 電流はコレクタから自由に流れ込み、エミッタから出ていく。
2)オフ(開放回路)
バルブを閉じると、水の流れを完全に止めることができる。
同じように、トランジスタはコレクタとエミッタのあいだに開放回路を作り出せる。
3)線形の流量制御
バルブを精密に調整すれば、全開と全閉のあいだの任意の地点まで流量を細かく制御できる。
トランジスタも同じことができる。 回路を流れる電流を、完全にオフ(開放回路)と完全にオン(短絡回路)のあいだの任意の地点で線形に制御するのである。
水のたとえで言えば、パイプの太さは回路の抵抗に相当する。 バルブがパイプの実効的な太さを細かく調整できるなら、トランジスタはコレクタとエミッタのあいだの抵抗を細かく調整できる。 つまりある意味で、トランジスタは可変抵抗器のようなものである。
電力を増幅する
もう1つ、少し無理やりだが役に立つたとえがある。 バルブをほんの少しひねるだけで、フーバーダムの放水ゲートの流量を制御できると想像してほしい。 そのつまみをひねるのに使うわずかな力が、その何千倍もの力を生み出す可能性を秘めている。 たとえとしてはやや無理があるが、この考え方はトランジスタにも当てはまる。 トランジスタが特別なのは、電気信号を増幅でき、低電力の信号をそれと相似形の、はるかに高い電力の信号に変えられるからである。
動作モード
抵抗器が電圧と電流のあいだに線形な関係を強制するのとは違い、トランジスタは非線形な部品である。 トランジスタには、そこを流れる電流のようすを表す4つの異なる動作モードがある(トランジスタを流れる電流という場合、たいていはNPNのコレクタからエミッタへ流れる電流を指す)。
トランジスタの4つの動作モードは次のとおりである。
- 飽和(サチュレーション):トランジスタは短絡回路のようにふるまう。コレクタからエミッタへ電流が自由に流れる。
- 遮断(カットオフ):トランジスタは開放回路のようにふるまう。コレクタからエミッタへ電流は流れない。
- 活性(アクティブ):コレクタからエミッタへの電流が、ベース電流に比例する。
- 逆活性(リバースアクティブ):活性モードと同じく電流はベース電流に比例するが、向きが逆になる。電流はエミッタからコレクタへ流れる(トランジスタ本来の使い方ではない)。
トランジスタがどのモードにあるかを判断するには、3つのピンそれぞれの電圧と、それらの関係を見る必要がある。 ベース-エミッタ間の電圧(VBE)とベース-コレクタ間の電圧(VBC)によって、トランジスタのモードが決まる。
上の単純化した図は、各端子の電圧の正負がモードにどう影響するかを示している。 実際にはもう少し複雑である。
それぞれのモードを個別に見ていき、そのモードにするにはどうすればよいか、電流の流れにどんな影響があるかを確認していこう。
Note
このページの大部分はNPNトランジスタを前提にしている。PNPトランジスタの動作を理解するには、単純に極性、つまり「>」と「<」の向きを反転させればよい。
飽和モード
飽和は、トランジスタのオンモードである。 飽和モードのトランジスタは、コレクタとエミッタのあいだが短絡回路であるかのようにふるまう。
飽和モードでは、トランジスタ内部の2つの「ダイオード」がどちらも順バイアスになっている。 つまりVBEは0より大きく、かつVBCも0より大きい必要がある。 言い換えると、VBはVEとVCの両方より高くなければならない。
実際には、ベース-エミッタ間の接合はダイオードそのものなので、飽和状態に入るにはVBEがしきい値電圧を超えている必要がある。 この電圧降下にはVth、Vγ、Vdなどいくつもの略称があり、実際の値はトランジスタによって(さらには温度によっても)異なる。 多くのトランジスタでは(室温で)この降下をおよそ0.6Vと見積もれる。
もう1つ、現実にはこうもいかないという話がある。 エミッタとコレクタのあいだの導通は完璧ではなく、両端のあいだにはわずかな電圧降下が生じる。 トランジスタのデータシートでは、この電圧を**CE飽和電圧VCE(sat)**として定義しており、飽和状態に必要なコレクタ-エミッタ間の電圧である。 この値はたいてい0.05〜0.2V程度である。 つまり、トランジスタを飽和させるには、VCがVEよりわずかに高くなっている必要がある(ただしどちらもVBよりは低い)。
遮断モード
遮断モードは飽和の対極にある。 遮断モードのトランジスタはオフの状態であり、コレクタ電流はなく、したがってエミッタ電流もない。 ほとんど開放回路のように見える。
トランジスタを遮断モードにするには、ベース電圧がエミッタ電圧とコレクタ電圧の両方より低くなければならない。 VBCとVBEはどちらも負である必要がある。
実際には、VBEが0VからVth(およそ0.6V)のあいだであれば、遮断モードが成立する。
活性モード
活性モードで動作させるには、トランジスタのVBEが0より大きく、VBCが負でなければならない。 つまりベース電圧はコレクタより低く、エミッタより高くなければならない。 これは同時に、コレクタがエミッタより高くなければならないことも意味する。
実際には、トランジスタを「オン」にするには、ベース-エミッタ間(VBE)に0より大きい順方向電圧降下(Vth、Vγ、Vdのいずれかで略される)が必要である。 たいていこの電圧はおよそ0.6Vである。
活性モードでの増幅
活性モードは、トランジスタをもっとも強力な状態、つまり増幅器にするモードである。 ベースピンに入る電流が、コレクタからエミッタへ流れる電流を増幅する。
トランジスタの利得(増幅率)を表す略記がβである(βFやhFEと書かれることもある)。 βは、コレクタ電流(IC)とベース電流(IB)を線形の関係で結びつける。
IC = β × IB
βの実際の値はトランジスタによって異なる。 たいてい100前後だが、50から200、場合によっては2000程度まで、使用するトランジスタや流れる電流量によって幅がある。 たとえばβが100のトランジスタなら、ベースに1mAの電流を入力すると、コレクタには100mAの電流が流れることになる。
エミッタ電流IEについてはどうか。 活性モードでは、コレクタ電流とベース電流が素子に流れ込み、IEが流れ出る。 エミッタ電流をコレクタ電流と関連づけるもう1つの定数がαであり、共通ベース電流利得と呼ばれる。
IC = α × IE
αはたいてい1に非常に近いが、1より小さい値になる。 つまり活性モードでは、ICはIEに非常に近いが、IEよりわずかに小さい。
βからα、あるいはその逆を計算することもできる。
α = β / (β + 1)
たとえばβが100なら、αは0.99になる。 つまりICが100mAなら、IEは101mAになる。
逆活性モード
飽和が遮断の対極にあるように、逆活性モードは活性モードの対極にある。 逆活性モードのトランジスタは導通し、増幅すら行うが、電流はエミッタからコレクタへ、逆向きに流れる。 逆活性モードの欠点は、β(この場合はβRと表記する)がはるかに小さいことである。
トランジスタを逆活性モードにするには、エミッタ電圧がベースより高く、ベースがコレクタより高くなければならない(VBE<0かつVBC>0)。
逆活性モードは、通常トランジスタを動作させたい状態ではない。 存在は知っておくとよいが、実際の設計に組み込まれることはまずない。
PNPとの対応
ここまでの内容は、BJTの半分にすぎない。 PNPトランジスタはどうだろうか。 PNPはNPNとよく似た動作をし、同じ4つのモードを持つが、すべてが逆になっている。 PNPトランジスタがどのモードにあるかを知るには、すべての「<」と「>」を反転させればよい。
たとえばPNPを飽和させるには、VCとVEがVBより高くなければならない。 PNPをオンにするにはベースを低く引き、オフにするにはコレクタやエミッタより高くする。 そしてPNPを活性モードにするには、VEがVBより高く、VBがVCより高くなければならない。
まとめると、次のようになる。
| 電圧の関係 | NPNのモード | PNPのモード |
|---|---|---|
| VE < VB < VC | 活性 | 逆活性 |
| VE < VB > VC | 飽和 | 遮断 |
| VE > VB < VC | 遮断 | 飽和 |
| VE > VB > VC | 逆活性 | 活性 |
NPNとPNPのもう1つの対照的な特徴が、電流の向きである。 活性モードと飽和モードでは、PNPの電流はエミッタからコレクタへ流れる。 つまり、エミッタはコレクタより高い電圧になっている必要がある。
応用例1:スイッチ
トランジスタのもっとも基本的な応用の1つが、回路の別の部分への電力供給を制御する、つまり電子スイッチとして使うことである。 遮断モードか飽和モードのどちらかで駆動することで、トランジスタはオンとオフの二値的な効果を持つスイッチとして働く。
トランジスタによるスイッチは、論理ゲートを作るための重要な構成要素であり、その論理ゲートがマイコンやマイクロプロセッサ、その他の集積回路を構成する。 以下にいくつかの応用回路を紹介する。
トランジスタスイッチ
もっとも基本的なトランジスタスイッチ回路、NPNスイッチを見てみよう。 ここではNPNを使って高出力のLEDを制御する。
制御用の入力はベースに入り、出力はコレクタにつながり、エミッタは固定の電圧に保たれる。
通常のスイッチがアクチュエーターを物理的に切り替える必要があるのに対し、このスイッチはベースピンの電圧によって制御される。 ArduinoのようなマイコンのI/Oピンをハイかローにプログラムすれば、LEDのオンとオフを切り替えられる。
ベースの電圧が0.6V(あるいはそのトランジスタのVth)を超えると、トランジスタは飽和し始め、コレクタとエミッタのあいだが短絡回路のようになる。 ベースの電圧が0.6Vより低いと、トランジスタは遮断モードになり、CE間が開放回路のようになるため電流は流れない。
上の回路は、スイッチであるトランジスタが回路のロー(グラウンド)側にあることからローサイドスイッチと呼ばれる。 一方、PNPトランジスタを使えばハイサイドスイッチを作れる。
NPNの回路と似ているが、ベースが入力、エミッタが一定電圧につながっている点は同じである。 ただし今度はエミッタがハイ側につながり、負荷はグラウンド側でトランジスタに接続される。
この回路もNPN式のスイッチと同じようにうまく機能するが、1つ大きな違いがある。 負荷を「オン」にするにはベースをローにする必要があるという点である。 これは、特に負荷側の高電圧(この図でエミッタVEにつながるVCCが12Vの場合など)が制御入力側のハイレベルより高いときに問題を引き起こしかねない。 たとえば、5Vで動作するArduinoで12Vのモーターをオフに切り替えようとすると、この回路はうまく機能しない。 その場合、VB(制御ピンにつながる)は常にVEより低くなるため、スイッチをオフにすることが不可能になってしまう。
ベース抵抗を忘れずに
上のどちらの回路にも、制御入力とトランジスタのベースのあいだに直列の抵抗が入っていることに気づいただろう。 この抵抗を追加し忘れてはいけない。 ベースに抵抗のないトランジスタは、電流制限抵抗のないLEDのようなものである。
トランジスタは、ある意味で単に2本のダイオードをつないだものであることを思い出してほしい。 負荷をオンにするには、ベース-エミッタ間のダイオードを順バイアスにする。 このダイオードをオンにするには0.6Vあれば十分であり、それ以上の電圧をかければかけるほど、より多くの電流が流れる。 トランジスタによっては、流せる電流の上限がわずか10〜100mA程度に定められていることもある。 定格を超える電流を流すと、トランジスタが壊れてしまうことがある。
制御用の電源とベースのあいだに入れる直列抵抗は、ベースへの電流を制限する役割を果たす。 ベース-エミッタ間の接合は心地よい0.6Vの電圧降下を得られ、残りの電圧は抵抗が引き受ける。 抵抗の値と、そこにかかる電圧によって、流れる電流が決まる。
抵抗は、電流を効果的に制限できるだけの大きさが必要だが、ベースに十分な電流を供給できる程度に小さくもなければならない。 たいてい1mAから10mA程度あれば十分だが、念のためトランジスタのデータシートを確認してほしい。
デジタル論理回路
トランジスタを組み合わせれば、AND、OR、NOTといった基本的な論理ゲートをすべて作れる。
(注:近年では、BJTよりもMOSFETを使って論理ゲートを作ることのほうが多い。MOSFETのほうが電力効率に優れているため、より良い選択肢とされている。)
インバータ
インバータ(NOTゲート)を実装したトランジスタ回路を見てみよう。
ベースに高い電圧が入るとトランジスタがオンになり、コレクタとエミッタが実質的につながる。 エミッタは直接グラウンドにつながっているため、コレクタもほぼグラウンド電位になる(実際にはVCE(sat)分、およそ0.05〜0.2V程度高くなる)。 逆に入力がローのとき、トランジスタは開放回路のように見え、出力はVCCまで引き上げられる。
(これは実は共通エミッタと呼ばれる基本的な構成であり、この後もう少し詳しく取り上げる。)
ANDゲート
2入力ANDゲートを作るのに使われる2本のトランジスタの例を見てみよう。
どちらか一方のトランジスタがオフなら、2つ目のトランジスタのコレクタにある出力はローに引かれる。 両方のトランジスタが「オン」(両方のベースがハイ)なら、回路の出力もハイになる。
ORゲート
最後に、2入力ORゲートを見てみよう。
この回路では、AかBのどちらか(あるいは両方)がハイであれば、対応するトランジスタがオンになり、出力をハイに引き上げる。 両方のトランジスタがオフなら、出力は抵抗を通してローに引かれる。
Hブリッジ
Hブリッジは、モーターを時計回りにも反時計回りにも駆動できるトランジスタベースの回路である。 非常によく使われる回路であり、前進も後退もできる無数のロボットの原動力になっている。
基本的にHブリッジは、2本の入力線と2本の出力を持つ4本のトランジスタの組み合わせである。
(注:実際によく設計されたHブリッジには、フライバックダイオードやベース抵抗、シュミットトリガーなど、もう少し多くの要素が加わっていることが多い。)
両方の入力が同じ電圧であれば、モーターへの出力も同じ電圧になり、モーターは回転できない。 しかし2つの入力が逆であれば、モーターはどちらかの向きに回転する。
Hブリッジの真理値表はおおよそ次のようになる。
| 入力A | 入力B | 出力A | 出力B | モーターの動き |
|---|---|---|---|---|
| 0 | 0 | 1 | 1 | 停止(ブレーキ) |
| 0 | 1 | 1 | 0 | 時計回り |
| 1 | 0 | 0 | 1 | 反時計回り |
| 1 | 1 | 0 | 0 | 停止(ブレーキ) |
発振回路
発振回路は、ハイとローのあいだを周期的に行き来する信号を作り出す回路である。 発振回路は、単純にLEDを点滅させるものから、マイコンを動かすクロック信号を作るものまで、あらゆる回路で使われている。 発振回路を作る方法には、水晶振動子、オペアンプ、そしてもちろんトランジスタなど、さまざまなものがある。
ここでは、非安定マルチバイブレータと呼ばれる発振回路の例を見てみよう。 フィードバックを使うことで、2本のトランジスタから互いに補い合う2つの発振信号を作り出せる。
2本のトランジスタに加えて、この回路の本当の鍵となるのはコンデンサである。 コンデンサが交互に充電と放電を繰り返すことで、2本のトランジスタが交互にオンとオフする。
この回路の動作を分析することは、コンデンサとトランジスタの両方の動作を学ぶうえで格好の題材になる。 まず、C1が完全に充電され(およそVCC分の電圧を蓄えている)、C2は放電済み、Q1はオン、Q2はオフの状態から始めるとしよう。 その後は次のように進む。
- Q1がオンだと、C1の(回路図上での)左側の板はおよそ0Vにつながる。これによりC1はQ1のコレクタを通して放電する。
- C1が放電しているあいだ、C2はより値の小さい抵抗R4を通してすばやく充電される。
- C1が完全に放電すると、その右側の板の電圧はおよそ0.6Vまで引き上げられ、Q2がオンになる。
- ここで状態が入れ替わる。C1は放電済み、C2は充電済み、Q1はオフ、Q2はオンになる。ここから同じ動きが逆側で繰り返される。
- Q2がオンになると、C2はQ2のコレクタを通して放電できるようになる。
- Q1がオフのあいだ、C1はR1を通して比較的すばやく充電される。
- C2が完全に放電すると、Q1が再びオンになり、最初の状態に戻る。
頭の中だけで追うのは難しいかもしれない。 C1、C2、R2、R3の値を選び(R1とR4は比較的小さく保つことで)、このマルチバイブレータ回路の速さを設定できる。
周期 T ≈ 0.693 × (R2×C1 + R3×C2)
コンデンサと抵抗の値をそれぞれ10µFと47kΩに設定すると、発振周波数はおよそ1.5Hzになる。 つまり、それぞれのLEDはおよそ1秒間に1.5回点滅することになる。
ここまで見てきたように、トランジスタを使った回路は無数に存在する。 しかしまだほんの入り口に触れたにすぎない。 ここで紹介した例は、主にトランジスタを飽和モードと遮断モードでスイッチとして使う方法を示したものだが、増幅についてはどうだろうか。 次は増幅の例を見ていこう。
応用例2:増幅器
トランジスタのもっとも強力な応用のいくつかは、増幅、つまり低電力の信号をより高い電力の信号に変える用途に関わっている。 増幅器は信号の電圧を増幅し、µVの範囲のものをより扱いやすいmVやVのレベルに変換できる。 あるいは電流を増幅し、フォトダイオードが生み出すµA単位の電流を、はるかに大きな電流に変換するのにも使える。 電流を入力して、より高い電圧を出力する(あるいはその逆の)増幅器もあり、それぞれトランスレジスタンス増幅器、トランスコンダクタンス増幅器と呼ばれる。
トランジスタは、多くの増幅回路にとって鍵となる部品である。 トランジスタ増幅器には見渡す限りさまざまな種類があるが、幸いその多くは、いくつかの基本的な回路をもとにしている。 これから紹介する回路を覚えておけば、パターンマッチングによって、より複雑な増幅器も理解しやすくなるはずである。
基本構成
もっとも基本的な3つのトランジスタ増幅器は、共通エミッタ、共通コレクタ、共通ベースである。 この3つの構成では、いずれも3つの端子のうち1つが常に共通の電圧(たいていグラウンド)に固定され、残りの2つが増幅器の入力または出力になる。
共通エミッタ
共通エミッタは、もっともよく使われるトランジスタの構成の1つである。 この回路では、エミッタがベースとコレクタの両方に共通する電圧(たいていグラウンド)に固定される。 ベースが信号の入力、コレクタが出力になる。
共通エミッタ回路がよく使われるのは、特に低周波での電圧増幅に適しているからである。 たとえば音声信号の増幅などに向いている。 1.5V程度の小さなピークトゥピーク入力信号があれば、もう少し複雑な回路を使ってはるかに高い電圧に増幅できる。
共通エミッタには1つ癖があり、それは入力信号を反転させてしまうことである(前の節のインバータと比べてみてほしい)。
共通コレクタ(エミッタフォロワ)
コレクタピンを共通電圧に固定し、ベースを入力、エミッタを出力として使うと、共通コレクタになる。 この構成はエミッタフォロワとも呼ばれる。
共通コレクタは電圧の増幅をまったく行わない(実際には、出力電圧は入力電圧よりも0.6V低くなる)。 そのため、この回路は電圧フォロワと呼ばれることもある。
一方でこの回路は電流増幅器として大きな可能性を秘めている。 それに加えて、高い電流利得とほぼ1倍の電圧利得を組み合わせることで、優れた電圧バッファにもなる。 電圧バッファは、負荷回路がそれを駆動している回路に望ましくない影響を与えないようにする役割を果たす。
たとえば、負荷に1Vを供給したいとき、簡単な方法として分圧回路を使うこともできるし、エミッタフォロワを使うこともできる。
負荷が大きくなる(つまり抵抗が小さくなる)ほど、分圧回路の出力電圧は下がってしまう。 しかしエミッタフォロワの出力電圧は、負荷が何であってもほぼ一定に保たれる。 出力インピーダンスの大きい回路と違って、大きな負荷がエミッタフォロワを「重くする」ことはない。
共通ベース
この節を締めくくるために共通ベースにも触れておくが、3つの基本構成の中ではもっとも使用頻度が低い。 共通ベース増幅器では、エミッタが入力、コレクタが出力になる。 ベースは両方に共通する。
共通ベースは、いわばエミッタフォロワの逆のような存在である。 そこそこの電圧増幅器であり、入力電流と出力電流はほぼ等しい(厳密には入力電流のほうがわずかに大きい)。
共通ベース回路は電流バッファとして特に優れている。 低い入力インピーダンスで入力電流を受け取り、ほぼ同じ電流を、より高いインピーダンスの出力へ届けられる。
まとめ
この3つの増幅器構成は、より複雑な多くのトランジスタ増幅器の核となっている。 それぞれ、電流の増幅、電圧の増幅、バッファリングのどれかで真価を発揮する得意分野がある。
| 共通エミッタ | 共通コレクタ | 共通ベース | |
|---|---|---|---|
| 電圧利得 | 中 | 低 | 高 |
| 電流利得 | 中 | 高 | 低 |
| 入力インピーダンス | 中 | 高 | 低 |
| 出力インピーダンス | 中 | 低 | 高 |
多段増幅器
トランジスタ増幅器の多様さについては、まだまだ語り尽くせない。 ここでは、上で紹介した単段の増幅器を組み合わせるとどうなるかを示す例をいくつか紹介する。
ダーリントン接続
ダーリントン接続は、共通コレクタを2段重ねて、高い電流利得を持つ増幅器を作る構成である。
出力電圧は入力電圧とほぼ同じ(1.2〜1.4V程度低くなる)が、電流利得は2つのトランジスタの利得の積になる。 つまりβ²であり、1万倍を超えることもある。
小さな入力電流で大きな負荷を駆動したいときには、ダーリントンペアは優れた道具になる。
差動増幅器
差動増幅器は、2つの入力信号の差を取り、その差を増幅する回路である。 入力と出力を比較して次の出力を作り出すフィードバック回路にとって、重要な構成要素である。
差動増幅器の基本形は次のようになる。
この回路はロングテールペアとも呼ばれる。 これは2つの共通エミッタ回路を組み合わせ、互いに比較することで差動出力を作り出すものである。 2つの入力はそれぞれのトランジスタのベースに加えられ、出力は2つのコレクタ間の差動電圧として得られる。
プッシュプル増幅器
プッシュプル増幅器は、多くの多段増幅器の「最終段」として便利な回路である。 エネルギー効率の良い電力増幅器であり、スピーカーの駆動によく使われる。
基本的なプッシュプル増幅器は、どちらも共通コレクタとして構成されたNPNとPNPのトランジスタを使う。
プッシュプル増幅器は電圧をほとんど増幅しない(出力電圧は入力よりわずかに低くなる)が、電流は増幅する。 正負両方の電源を持つ回路(バイポーラ電源回路)では特に有用であり、正電源から負荷へ電流を「プッシュ」し、負電源へ電流を「プル」して逃がすことができる。
バイポーラ電源を使っている(あるいは使っていない)場合でも、プッシュプルは増幅器の最終段として優れており、負荷に対するバッファとして機能する。
すべてを組み合わせる(オペアンプの例)
多段トランジスタ回路の代表例として、オペアンプを見てみよう。 よく使われるトランジスタ回路を見分け、その役割を理解できれば、それだけで大きな武器になる。 ここでは、非常にシンプルなオペアンプであるLM358の内部回路を見てみよう。
すぐに消化しきれないほどの複雑さがあるが、見覚えのある構成もいくつか見つかるはずである。
- Q1、Q2、Q3、Q4が入力段を構成している。共通コレクタ(Q1とQ4)が差動増幅器につながっているように見えないだろうか。PNPを使っているため上下が逆に見えるだけである。これらのトランジスタが増幅器の入力差動段を構成している。
- Q11とQ12は2段目を構成する。Q11は共通コレクタ、Q12は共通エミッタである。この2本のトランジスタは、Q3のコレクタからの信号をバッファリングしつつ、最終段へ向かう信号に高い利得を与える。
- Q6とQ13は最終段を構成しており、こちらも見覚えがあるはずである(RSCを無視すれば)、プッシュプルである。この段が出力をバッファリングし、より大きな負荷を駆動できるようにしている。
- ここまで触れていない構成もいくつかある。Q8とQ9はカレントミラーとして構成されており、一方のトランジスタを流れる電流量をもう一方にそのままコピーする。
このトランジスタの集中講義を終えた今、この回路のすべてを理解できるとは思っていないが、よく使われるトランジスタ回路を見分けられるようになっていれば、正しい道を歩んでいると言える。
まとめ
トランジスタについてさらに深く学びたいなら、次のような資料もおすすめである。
- Getting Started in Electronics by Forrest Mims:Mimsは電子工学をわかりやすく、実践的に説明する名手である。トランジスタについてもう一歩踏み込んだ入門書として一読の価値がある。
- LTSpiceやFalstad Circuit:無料で使える回路シミュレーションツールである。デジタル上で回路を実験することは、優れた学習方法であり、ブレッドボードの手間や部品を壊す心配なしにいろいろ試せる。ここで扱った回路もぜひ組んでみてほしい。
- 2N3904のデータシート:トランジスタについて学ぶもう1つの方法は、データシートを読み込むことである。2N3904は非常によく使われるトランジスタであり(PNP版の兄弟にあたるのが2N3906である)、データシートを見て、見覚えのある特性を探してみてほしい。
電子工作についてさらに学びたいなら、次のようなチュートリアルもおすすめである。
- 集積回路:数千個のトランジスタを組み合わせて黒い箱に詰め込むと何ができるか。それがICである。
- シフトレジスタ:もっとも一般的な集積回路の1つである。わずかな入力だけで何十個ものLEDを点滅させる方法を学べる。
- Eagleを使ったPCB設計:新しく身につけたトランジスタの知識を、実際のPCB設計に活かしてみよう。
- はんだ付けの基本:PCBを設計したら、はんだ付けの方法も知っておく必要がある。
タグ: 部品、電気工学、技術
出典:Transistors(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
集積回路
集積回路(IC)は、現代の電子工学を支える要である。 ほとんどの回路にとって心臓であり頭脳でもある。 ほぼすべての基板の上で見かける、あの黒くて小さな「チップ」がICである。 よほど変わったアナログ電子工学の達人でもない限り、作る電子工作プロジェクトにはたいてい少なくとも1つのICが使われているはずであり、その中身を理解しておくことは重要である。
ICとは、抵抗器、トランジスタ、コンデンサといった電子部品の集まりを、小さなチップの中に詰め込んで互いに接続し、1つの共通の目的を果たすようにしたものである。 単純な論理ゲート1つだけのものから、オペアンプ、555タイマー、電圧レギュレータ、モータードライバ、マイコン、マイクロプロセッサ、FPGAまで、実にさまざまな種類がある。
このチュートリアルで扱う内容:
- ICの構成
- よく使われるICのパッケージ
- ICの見分け方
- よく使われるICの種類
参考になるチュートリアル:
ICの内部
集積回路と聞いて思い浮かぶのは、たいてい黒くて小さなチップである。 では、その黒い箱の中身はどうなっているのだろうか。
ICの本当の「中身」は、半導体ウエハー、銅、その他の材料を複雑に積み重ねた構造であり、これらが相互接続されて回路の中のトランジスタや抵抗、その他の部品を形作っている。 このウエハーを切り出し、成形したものをダイと呼ぶ。
IC自体は小さいが、それを構成する半導体ウエハーや銅の層は信じられないほど薄く、層と層のあいだの接続も非常に緻密である。 先ほどのダイを拡大すると、その様子がよくわかる。
ICのダイは、回路をこれ以上ないほど小さくした姿であり、そのままではんだ付けしたり接続したりするには小さすぎる。 ICに接続する作業を楽にするため、私たちはダイをパッケージに収める。 ICパッケージが、あの繊細で小さなダイを、誰もが見慣れた黒いチップへと変えてくれる。
ICのパッケージ
パッケージは、ICのダイを封入し、私たちが接続しやすいように端子を外部に引き出す役割を果たす。 ダイの外周にある接続点は、それぞれ細い金線を通じてパッケージのパッドやピンにつながっている。 ピンは、IC本体から突き出た銀色の端子であり、回路の他の部分へと接続される。 このピンこそが、回路の他の部品や配線とつながる部分であり、私たちにとってもっとも重要な要素である。
パッケージには多くの種類があり、それぞれ独自の寸法や実装方式、ピン数を持っている。
極性の表示とピン番号
すべてのICは極性を持ち、どのピンも位置と機能の両方において唯一無二である。 そのため、パッケージにはどのピンがどれかを示す何らかの方法が必要になる。 たいていのICは、1番ピンを示すために切り欠きか丸印のどちらかを使う(両方あることもあれば、どちらか一方だけのこともある)。
1番ピンの位置がわかれば、そこから反時計回りに進むにつれてピン番号が順番に増えていく。
実装方式
パッケージの種類を特徴づける主な要素の1つが、基板への実装方式である。 パッケージはすべて、スルーホール(PTH)か表面実装(SMDまたはSMT)のどちらかに分類される。 スルーホールパッケージは一般に大きく、扱いやすい。 基板の片面から挿し込み、反対側ではんだ付けするように設計されている。
表面実装パッケージは、小さなものから極小のものまでさまざまなサイズがある。 すべて基板の片面に乗せて、その面ではんだ付けするように設計されている。 SMDパッケージのピンは、チップの側面から垂直に突き出ているものもあれば、チップの底面にマトリクス状に配置されているものもある。 この形状のICは手作業での実装にあまり向いておらず、たいてい専用の道具が必要になる。
DIP(デュアルインラインパッケージ)
DIP(デュアルインラインパッケージの略)は、もっともよく見かけるスルーホール型のICパッケージである。 この小さなチップは、四角い黒いプラスチックのケースから、2列に並んだピンが垂直に突き出た形をしている。
DIP ICのそれぞれのピンは0.1インチ(2.54mm)間隔で並んでおり、これはブレッドボードをはじめとする試作用基板にぴったり収まる標準的な間隔である。 DIPパッケージ全体の大きさは、ピン数によって変わり、4ピンから64ピン程度まで幅がある。
ピンの2つの列のあいだの間隔は、DIP ICがブレッドボードの中央部分をまたげるようにちょうどよく設計されている。 これにより、それぞれのピンが基板上で独立した行に対応し、互いにショートしないようになっている。
DIP ICはブレッドボードで使うだけでなく、PCBにはんだ付けすることもできる。 基板の片面から挿し込み、反対側ではんだ付けして固定する。 ICを直接はんだ付けする代わりに、ソケットを使うのがよい場合もある。 ソケットを使えば、ICが「青い煙を吐いて」しまったときに、取り外して交換できる。
表面実装(SMD/SMT)パッケージ
今日では、表面実装パッケージには実に多くの種類がある。 表面実装型のICを扱うには、たいてい対応する銅箔パターンを持つ専用のプリント基板(PCB)が必要になる。
ここでは、比較的よく見かける表面実装パッケージをいくつか紹介する。 手はんだのしやすさで言えば、「なんとかできる」ものから、「専用の道具があればなんとかできる」もの、「非常に特殊な、たいていは自動化された道具でなければ無理」なものまで幅がある。
スモールアウトライン(SOP)
スモールアウトラインIC(SOIC)パッケージは、DIPの表面実装版のようなものである。 DIPのすべてのピンを外側に折り曲げ、サイズを小さくしたものだと考えるとよい。 手先が安定していて、よく目を凝らせば、SOICパッケージは手はんだしやすいSMD部品の部類に入る。 SOICパッケージでは、ピンの間隔はたいてい0.05インチ(1.27mm)程度である。
SSOP(シュリンクスモールアウトラインパッケージ)は、SOICパッケージをさらに小さくしたものである。 似たようなICパッケージには、TSOP(シンスモールアウトラインパッケージ)やTSSOP(シンシュリンクスモールアウトラインパッケージ)もある。
MAX232やマルチプレクサのような、比較的単純で1つの役割に特化したICの多くは、SOICやSSOPの形で提供される。
クアッドフラットパッケージ
ICのピンを四方すべてに広げると、クアッドフラットパッケージ(QFP)のような形になる。 QFPのICは、1辺あたり8ピン(合計32ピン)から、70ピン以上(合計300ピン以上)まで幅がある。 QFPのピン間隔はたいてい0.4mmから1mm程度である。 標準的なQFPパッケージをさらに小さくしたものに、シン(TQFP)、ベリーシン(VQFP)、ローププロファイル(LQFP)パッケージがある。
QFPのICのピンを削り取ったような形にすると、クアッドフラットノーリード(QFN)パッケージになる。 QFNパッケージの接続部は、ICの底面の角に露出した小さなパッドである。 側面と底面の両方に露出しているものもあれば、底面だけに露出しているものもある。
シン(TQFN)、ベリーシン(VQFN)、マイクロリード(MLF)パッケージは、標準的なQFNパッケージをさらに小さくしたものである。 デュアルノーリード(DFN)やシンデュアルノーリード(TDFN)のように、2辺だけにピンを持つパッケージもある。
多くのマイクロプロセッサやセンサー、その他の現代的なICはQFPやQFNパッケージで提供されている。 人気の高いATmega328マイコンはTQFPパッケージとQFN系(MLF)パッケージの両方で提供されており、MPU-6050のような小型の加速度センサー兼ジャイロセンサーは極小のQFN形状で提供されている。
ボールグリッドアレイ
最後に、より高度なICのために、ボールグリッドアレイ(BGA)パッケージがある。 これは、ICの底面に小さなはんだのボールを2次元格子状に並べた、驚くほど緻密なパッケージである。 はんだボールがダイに直接取り付けられていることさえある。
BGAパッケージは、pcDuinoやRaspberry Piに搭載されているような、高度なマイクロプロセッサ向けに使われることが多い。
BGAパッケージのICを手ではんだ付けできるなら、はんだ付けの達人と自負してよい。 たいていは、ピックアンドプレース機やリフロー炉を使った自動化された工程でPCBに実装される。
よく使われるIC
集積回路は電子工作のあらゆる場面に登場するため、そのすべてを網羅するのは難しい。 ここでは、電子工作の学習でよく出会うICをいくつか紹介する。
論理ゲート、タイマー、シフトレジスタなど
ICそのものを構成する基本要素である論理ゲートも、それ自体を1つのICとしてパッケージ化できる。 論理ゲート用のICには、この4入力ANDゲートのように、1つのパッケージに複数のゲートが収められているものもある。
論理ゲートをIC内部で組み合わせることで、タイマー、カウンター、ラッチ、シフトレジスタなど、その他の基本的な論理回路も作れる。 こうした単純な回路の多くは、DIPだけでなくSOICやSSOPのパッケージでも見つかる。
マイコン、マイクロプロセッサ、FPGAなど
数千、数百万、数十億個ものトランジスタを小さなチップに詰め込んだマイコン、マイクロプロセッサ、FPGAも、すべて集積回路の一種である。 これらの部品は、機能、複雑さ、大きさにおいて非常に幅広い。 Arduinoに搭載されているATmega328のような8ビットマイコンから、パソコンの動作を統括する複雑な64ビットマルチコアのマイクロプロセッサまで、さまざまなものがある。
これらの部品は、たいてい回路の中でもっとも大きなICになる。 単純なマイコンは、DIPからQFN/QFPまでのパッケージに収められ、ピン数は8から100程度である。 これらの部品が複雑になるほど、パッケージも同じように複雑になっていく。 FPGAや複雑なマイクロプロセッサは1000本を超えるピンを持つこともあり、QFN、LGA、BGAといった高度なパッケージでしか提供されない。
センサー
温度センサーや加速度センサー、ジャイロセンサーといった現代のデジタルセンサーも、すべて集積回路として作られている。
これらのICは、基板上のマイコンや他のICと比べてたいてい小さく、ピン数は3から20程度である。 DIPパッケージのセンサーICは珍しくなりつつあり、現代の部品はたいていQFP、QFN、あるいはBGAパッケージで提供されている。
まとめ
集積回路は、ほぼすべての回路に登場する部品である。 ICについて理解できたところで、次のような関連する概念のチュートリアルも確認してみてほしい。
- PCB基板の基礎:ICは何らかの方法で回路に接続する必要がある。たいていはプリント基板(PCB)にはんだ付けすることになる。あの緑色の小さな基板について、このチュートリアルで学べる。
- シリアル通信、SPI通信、I2C:どれも、ICどうしが通信するための通信プロトコルである。
次のようなスキル系のチュートリアルもおすすめである。電子工作を始めたばかりの人なら、ぜひ身につけておきたいスキルである。
タグ: 部品、電気工学、技術
出典:Integrated Circuits(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
ボタンとスイッチの基礎
もっとも基本的でありながら見落とされがちな回路部品の1つが、スイッチである。
スイッチを評価するのに複雑な計算式は必要ない。 スイッチがしているのは、開放回路と短絡回路を切り替えることだけである。 単純な部品だが、ボタンやスイッチなしで暮らすことなど考えられるだろうか。 ユーザーからの入力を受け付けないブリンク回路に何の意味があるだろうか。 非常停止スイッチのない危険なロボットなど論外である。 絶対に押してはいけない大きな赤いボタンのない世界を想像できるだろうか。
このチュートリアルで扱う内容:
- モーメンタリー(自動復帰)スイッチとメンテイン(維持)スイッチの違い
- SPST、SPDT、DPDTなどの表記が何を意味するか
- ノーマリークローズとノーマリーオープンのボタンの違い
- スイッチのさまざまな見た目
- 重要なスイッチの定格
- スイッチの応用例
参考になるチュートリアル:
スイッチとは何か
スイッチは、電気回路が開いているか閉じているかを制御する部品である。 配線を実際に切ったり継ぎ足したりすることなく、回路内の電流の流れを制御できる。 スイッチは、ユーザーの操作や制御を必要とするあらゆる回路に欠かせない部品である。
スイッチが取りうる状態は、開(オフ)か閉(オン)のどちらか一方だけである。 オフの状態では、スイッチは回路の中に開いた隙間があるように見える。 これは実質的に開放回路であり、電流が流れるのを妨げる。
オンの状態では、スイッチは完全に導通する1本の電線のようにふるまう。 つまり短絡である。 これにより回路が閉じ、システムが「オン」になって、残りの部分に電流が滞りなく流れられるようになる。
スイッチにはトグル式、ロータリー式、DIP式、押しボタン式、ロッカー式、メンブレン式など、実にさまざまな種類がある。 それぞれのスイッチには、他と区別するための固有の特徴がある。 どんな動作でスイッチが切り替わるか、あるいはスイッチがいくつの回路を制御できるか、といった特徴である。 次は、スイッチの基本的な特徴をいくつか見ていこう。
スイッチを特徴づける要素
操作方法
ある状態から別の状態へ切り替えるには、スイッチを操作(アクチュエート)する必要がある。 つまり、スイッチの状態を「切り替える」には何らかの物理的な動作が必要になる。 スイッチの操作方法は、そのスイッチを特徴づけるもっとも大きな要素の1つである。
スイッチの操作には、押す、スライドさせる、揺らす、回す、倒す、引く、鍵を回す、加熱する、磁化する、蹴る、はじく……など、スイッチ内部の機械的な接点を接触させたり離したりできる物理的な動作であれば、どんなものでもありうる。
モーメンタリーとメンテイン
すべてのスイッチは、モーメンタリー(自動復帰)かメンテイン(維持)のどちらかに分類できる。
メンテインスイッチは、壁の照明スイッチのように、操作されるまで1つの状態を保ち続け、新しい状態に切り替わった後もその状態を保つ。 「トグルスイッチ」や「ON/OFFスイッチ」と呼ばれることもある。
モーメンタリースイッチは、操作され続けているあいだだけ有効な状態を保つ。 操作されていなければ、常に「オフ」の状態に戻る。 キーボードのキーは、身近なモーメンタリースイッチの代表例である。
用語について1つ補足しておくと、一般に「ボタン」と呼ばれるスイッチの多くはモーメンタリー型に分類される。 ボタンを押すという操作自体が、いかにも「押している間だけ」という感覚に結びつくからである。 中にはメンテイン式のボタンも存在するが、このチュートリアルで単に「ボタン」と言うときは、基本的に「押している間だけオンになるモーメンタリースイッチ」を指すものと考えてほしい。
実装方法
多くの部品と同じく、スイッチの端子の形式も表面実装(SMD)かスルーホール(PTH)のどちらかになる。 スルーホール型のスイッチはたいてい大きめで、ブレッドボードでの試作に使いやすいよう設計されているものもある。
SMD型のスイッチはPTH型より小さく、PCBの上に平らに実装される。 たいてい軽い力での操作を前提としており、スルーホール型ほどの操作力には耐えられないことが多い。
筐体の外側に取り付けるパネルマウント型のスイッチも、よく使われる実装方法の1つである。 筐体の内側に隠れたスイッチは操作しづらい。 パネルマウント型のスイッチには、PTH、SMD、あるいは配線をはんだ付けする頑丈なラグ端子など、さまざまな端子形式がある。
もう1つ重要なスイッチの特徴として、スイッチ内部の回路構成があり、これは章を1つ割くだけの価値がある話題である。 SPSTなのか、DPSTなのか、4PDTなのか、こうした表記は、いったい何を意味しているのだろうか。
極(ポール)と投(スロー)、開と閉
スイッチには少なくとも2本の端子が必要であり、一方から電流が(場合によっては)入り、もう一方から(場合によっては)出ていく。 ただし、これはもっとも単純なスイッチの説明にすぎない。 実際には、スイッチに2本より多くのピンがあることのほうが多い。 では、こうした端子はスイッチの内部構造とどう対応しているのだろうか。 ここで重要になるのが、スイッチが持つ「極(ポール)」と「投(スロー)」の数である。
スイッチの極(ポール)の数は、そのスイッチが制御できる独立した回路の数を表す。 極が1つのスイッチは、1つの回路にしか影響を与えられない。 4極のスイッチなら、4つの異なる回路を個別に制御できる。
スイッチの投(スロー)の数は、それぞれの極が接続できる位置の数を表す。 たとえば投が2つのスイッチなら、スイッチ内の各回路(極)は2つの端子のどちらかに接続できる。
極と投の数がわかれば、スイッチをより具体的に分類できる。 よく見かけるのは「単極単投」「単極双投」「双極双投」といった分類で、それぞれ略してSPST、SPDT、DPDTと呼ばれる。
SPST
単極単投(SPST)スイッチは、もっとも単純な構成である。 出力が1つ、入力が1つしかない。 このスイッチは閉じているか、完全に切り離されているかのどちらかである。 SPSTはオンとオフの切り替えに最適であり、モーメンタリースイッチの一般的な形式でもある。 SPSTスイッチに必要な端子は2本だけである。
SPDT
もう1つよく使われるのがSPDTである。 SPDTには3本の端子があり、1本の共通ピンと、共通ピンとの接続を奪い合う2本のピンで構成される。 SPDTは、2つの電源の切り替えや入力の入れ替えなど、2つの回路のどちらかを選びたい場面に適している。 シンプルなスライドスイッチの多くはSPDT型である。 SPDTスイッチにはたいてい3本の端子がある(余談だが、SPDTの投を1つ未接続のままにしておけば、実質的にSPSTとして使うこともできる)。
DPDT
SPDTにもう1つ極を追加すると、双極双投(DPDT)スイッチになる。 基本的にはSPDTスイッチを2つ組み合わせたもので、2つの独立した回路を制御できるが、常に1つのアクチュエーターで一緒に切り替わる。 DPDTには6本の端子がある。
XPYT
3極以上、あるいは3投以上のスイッチはあまり一般的ではないが、実際に存在する(形も独特で接続もしにくいことが多い)。 極や投が2つを超えると、略称にはそのまま数字を当てはめていく。 たとえば4PDTスイッチは、4つの独立した回路を、それぞれ2つの位置で制御できる。
Note
豆知識:英語では“poles“(極)を“pulls“と間違えて発音してしまう人がよくいるが、正しくは“poles“である。
ノーマリーオープンとノーマリークローズ
モーメンタリースイッチが操作されていないとき、それは「通常」の状態にある。 ボタンの構造によって、この通常の状態は開放回路にも短絡回路にもなりうる。 操作されるまで開いているボタンはノーマリーオープン(略してNO)と呼ばれる。 NOスイッチを操作すると回路が閉じるため、「push-to-make(押して導通させる)」スイッチとも呼ばれる。
逆に、操作されない限り短絡回路のようにふるまうボタンはノーマリークローズ(NC)スイッチと呼ばれる。 NCスイッチは「push-to-break(押して遮断する)」であり、操作すると回路が開く。
この2つのうち、ノーマリーオープンのモーメンタリースイッチに出会う機会のほうがずっと多いだろう。
モーメンタリースイッチ
モーメンタリースイッチは、操作されている(押されている、保持されている、磁化されているなど)あいだだけオンの状態を保つスイッチである。 たいていは、リセットボタンやキーパッドのボタンのように、断続的なユーザー入力に使うのに適している。
モーメンタリースイッチの例
押しボタン
押しボタンスイッチは、モーメンタリースイッチの代表格である。 たいてい押したときに心地よい「クリック」というタクタイルフィードバックがある。 大きさや色、照光式(内部のLEDがボタン越しに光る)など、実にさまざまなバリエーションがある。 端子はスルーホール、表面実装、パネルマウントなど、いろいろな形式がある。
ボタンマトリクス
キーボードのような大量のモーメンタリーボタンの集まりや、キーパッドのようなもう少し小さなまとまりでは、たいていすべてのスイッチを大きなマトリクス状に配置する。 パッド上のそれぞれのボタンには、行と列が割り当てられる。 これによりマイコン側で多少の処理が余分に必要になるが、その分I/Oピンを大幅に節約できる。
その他
モーメンタリースイッチは、必ずしも押し下げる動作で操作するとは限らない。 一部のジョイスティックのように、横に押す動作で操作するものもある。
もう一方の極端な例として、リードスイッチは磁場にさらされると開閉する。 非接触式のスイッチを作るのに適している。
メンテインスイッチ
メンテインスイッチは、新しい状態に操作されるまでその状態を保ち続ける。 身近な例は、すぐそこの壁にある(部屋の照明を制御しているあのスイッチである)。 メンテインスイッチは、電源のオンとオフのように「一度設定したらそのまま」にしておきたい用途に適している。
メンテインスイッチの例
スライドスイッチ
飾り気のないシンプルなON/OFFスイッチや切り替えスイッチが必要なら、スライドスイッチがぴったりかもしれない。 このスイッチにはスイッチ本体から突き出た小さなつまみがあり、それを本体の上でスライドさせて2つ(またはそれ以上)の位置のどれかに合わせる。
スライドスイッチはたいていSPDTかDPDTの構成で見られる。 共通端子はたいてい中央にあり、2つの選択位置がその両側に配置される。
トグルスイッチ
「トグルスイッチ」と聞くと、「ミサイル発射!」のようなイメージを思い浮かべるかもしれない。 トグルスイッチには長いレバーがあり、揺らすような動きで動作する。 新しい位置に切り替わるとき、トグルスイッチは実に気持ちのよい「カチッ」という音を立てる。
トグルスイッチにはSPST(2端子)やSPDT(3端子)が一般的だが、それ以外の構成のものも見つかる。 他のスイッチと同じく、スルーホール型、表面実装型、そしておそらくもっとも一般的なパネルマウント型がある。
DIPスイッチ
DIPスイッチは、スルーホール型のDIP ICと同じ考え方で設計されたスルーホール型のスイッチである。 DIP ICと同じように、中央部分をまたぐ形でブレッドボードに配置できる。 8個以上の独立したSPSTスイッチが、小さなスライドレバーとともに配列されている製品が多い。 コンピュータの黎明期には広く使われていたが、今でもハードウェア側で機器を設定する用途に役立っている。
ラッチングボタン
押しボタンのすべてがモーメンタリーというわけではない。 一部の押しボタンは、一度押すとその位置で固定され、もう一度押すまでその状態を保つ。 ギターのエフェクトペダルにあるようなスイッチが、この一例である。
その他
メンテインスイッチの多様さは、ここで紹介した以上に広がっている。 プルチェーンスイッチはプロジェクトに気の利いた雰囲気を加えてくれる。 キースイッチは、誰にでも殺人ロボットの電源を入れられては困る場面に。 テスターに付いているようなロータリースイッチは、特に多くの投を必要とする場面でユニークな入力手段になる。
そしてもちろん、あの大きなナイフスイッチなしで暮らせるマッドサイエンティストなどいないだろう。
スイッチの応用例
オンとオフの制御
スイッチのもっとも身近な応用が、単純なオンとオフの制御である。 暗い部屋に入るたびにしているあの動作である。 オンとオフスイッチは、電源ラインに直列にSPSTスイッチを1つ挟むだけで実現できる。 たいていはトグルスイッチやスライドスイッチのようなメンテイン型が使われるが、モーメンタリー型のオンとオフスイッチにも用途はある。
このようなスイッチを実装するときは、プロジェクトが消費するすべての電流がそのスイッチを通ることになる点に注意してほしい。 理想的にはスイッチは完全な導体だが、現実には2つの接点のあいだにわずかな抵抗がある。 その抵抗のせいで、すべてのスイッチには耐えられる最大電流の定格が定められている。 スイッチの最大電流定格を超えると、プラスチックが溶けたり、魔法の煙が出てきたりすることになる。
たとえば、このSPDTスライドスイッチは、小規模なプロジェクト(Simon風のゲームやメトロノームなど)の電流を制御するのには適しているが、大出力のモータードライバーや100個連なったLEDストリングの制御には向かない。 そうした用途には、4A対応のトグルスイッチや6A対応のランプスイッチのようなものを検討するとよい。
ユーザー入力
もちろん、ユーザー入力もスイッチのもっとも一般的な応用の1つである。 たとえばスイッチをマイコンの入力ピンに接続したいなら、次のような簡単な回路だけで済む。
スイッチが開いているとき、MCUのピンは抵抗を通して5Vにつながっている。 スイッチが閉じると、ピンは直接GNDにつながる。 この回路の抵抗はプルアップ抵抗であり、入力をハイにバイアスし、スイッチが閉じたときにグラウンドへの短絡が起きないようにするために必要である。
まとめ
これでスイッチの基礎はひととおりカバーできた。 次は、次のような関連するチュートリアルを探ってみるとよい。
- プルアップ抵抗:プルアップ抵抗は、モーメンタリーボタンのほとんどの回路と組み合わせて使われる。電源とグラウンドが短絡しないようにし、I/Oラインがフローティングにならないようにしてくれる。
- トランジスタ:これも(他の多くの用途とあわせて)電子的に制御できるスイッチのようなものとして使える。
- リレー:もう1つの電子的に制御できるスイッチであり、大電力の回路のオンとオフに適している(SparkFun Learnには独立したリレーの概念解説チュートリアルは現時点で存在しない)。
- 加速度センサーの基礎:スマートフォンや新しいゲームコントローラーに搭載されている動き検出用の加速度センサーは、こうした従来型のスイッチに代わる入力デバイスとして急速に普及している。
- プロジェクトへの電源供給:あなたのスイッチは、どんな電源をオンとオフすることになるだろうか。
タグ: 部品、概念、電気工学、入力デバイス、技術
出典:Button and Switch Basics(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
電池とは何か
電池とは、1つ以上のセルが化学反応を起こし、回路の中に電子の流れを生み出す装置の集合体である。 すべての電池は、アノード(「-」側)、カソード(「+」側)、そして電解質(アノードやカソードと化学的に反応する物質)という3つの基本的な要素から構成される。
電池のアノードとカソードが回路に接続されると、アノードと電解質の間で化学反応が起きる。 この反応によって電子が回路を流れ、再びカソードへと戻り、そこで別の化学反応が起きる。 カソードやアノードの物質が消費され、あるいは反応にこれ以上使えなくなると、電池は電気を生み出せなくなる。 この状態が、いわゆる電池が「切れた」状態である。
使い切ったら捨てなければならない電池は一次電池と呼ばれる。 充電できる電池は二次電池と呼ばれる。
電池がなければ、クアッドコプターは壁につながれたままになり、車は手回しクランクで動かさなければならず、Xboxのコントローラーも(懐かしい時代のように)常にケーブルをつないでおく必要があっただろう。 電池は、電気的な位置エネルギーを持ち運び可能な容器に蓄える手段を提供してくれる。
現代的な電池の発明は、しばしばアレッサンドロ・ボルタの功績とされている。 実はその始まりは、カエルの解剖にまつわる意外な偶然の出来事だった。
このチュートリアルで扱う内容:
- 電池がどのように発明されたか
- 電池を構成する部品
- 電池の仕組み
- 電池を説明する際によく使われる用語
- 回路の中で電池を使うさまざまな方法
参考になるチュートリアル:
このガイドを読み始める前に、知っておくとよい概念がいくつかある。
歴史
「バッテリー」という言葉
歴史的に、「バッテリー(battery)」という言葉は、大砲の一群(バッテリー)のように、「ある機能を果たすために似たものを一連にまとめたもの」を表すのに使われてきた。 1749年、ベンジャミン・フランクリンは、自身の電気実験のためにつなぎ合わせた一連のコンデンサを指して、初めてこの言葉を使った。 その後、この言葉は電力を供給する目的でつなぎ合わされた電気化学セルの集まり全般を指すようになった。
電池の発明
1780年のある運命的な日、イタリアの物理学者であり医師、生物学者、哲学者でもあったルイージ・ガルヴァーニは、真鍮のフックに取り付けられたカエルを解剖していた。 鉄製のメスでカエルの脚に触れると、脚がぴくりと動いた。 ガルヴァーニは、そのエネルギーは脚そのものから来ていると考えたが、彼の同僚科学者であったアレッサンドロ・ボルタはそうは考えなかった。
ボルタは、カエルの脚の反応は実際には液体に浸された異なる金属によって引き起こされていると仮説を立てた。 彼はカエルの死骸の代わりに塩水に浸した布を使って同じ実験を繰り返し、同様の電圧が得られることを確かめた。 ボルタは1791年にこの発見を発表し、その後1800年に、最初の電池であるボルタ電堆を作り上げた。
ボルタの電堆には2つの大きな問題があった。 積み重ねた重みによって電解質が布から漏れ出してしまうことと、材料の特定の化学的性質により、寿命が非常に短かった(およそ1時間程度)ことである。 その後の200年間は、ボルタの設計を改良し、これらの問題を解決することに費やされることになる。
ボルタ電堆の改良
スコットランドのウィリアム・クルックシャンクは、ボルタ電堆を横向きに寝かせることで「トラフ電池」を考案し、漏れの問題を解決した。
もうひとつの問題である短い寿命は、不純物による亜鉛の劣化と、銅の表面に水素の泡が蓄積することが原因だった。 1835年、ウィリアム・スタージャンは、亜鉛を水銀で処理することでこの劣化を防げることを発見した。
イギリスの化学者ジョン・フレデリック・ダニエルは、水素と反応する2つ目の電解質を使うことで、銅のカソード表面での水素の蓄積を防いだ。 ダニエルの2種類の電解質を使う電池は「ダニエル電池」として知られ、誕生したばかりの電信網に電力を供給する非常に普及した解決策となった。
最初の充電式電池
1859年、フランスの物理学者ガストン・プランテは、硫酸に浸した2枚の鉛のシートを丸めて使う電池を作り出した。 電池を流れる電流の向きを逆にすることで、化学的な状態を元に戻すことができ、これが最初の充電式電池となった。
その後1881年、カミーユ・アルフォンス・フォールは、鉛のシートを板状に成形することでプランテの設計を改良した。 この新しい設計により電池の製造が容易になり、鉛蓄電池は自動車で広く使われるようになった。
乾電池
1800年代後半までは、電池の電解質は液体の状態だった。 そのため電池の輸送には細心の注意が必要であり、たいていの電池は一度回路に接続したら動かすことを想定されていなかった。
1866年、ジョルジュ・ルクランシェは、亜鉛のアノード、二酸化マンガンのカソード、そして電解質として塩化アンモニウム溶液を使う電池を作った。 ルクランシェ電池の電解質はまだ液体だったが、この電池の化学方式は乾電池の発明にとって重要な一歩となった。
カール・ガスナーは、塩化アンモニウムと石膏(プラスターオブパリ)からペースト状の電解質を作る方法を編み出した。 彼は1886年、ドイツでこの新しい「乾電池」の特許を取得した。
これらの新しい乾電池は「マンガン乾電池(亜鉛-炭素電池)」と一般に呼ばれ、大量生産され、1950年代後半まで絶大な人気を誇った。 炭素は化学反応そのものには関与していないが、亜鉛-炭素電池の中で電気伝導体としての重要な役割を果たしている。
1950年代、ユニオン・カーバイド社(のちに「エバレディ」、さらに「エナジャイザー」として知られるようになる)のルイス・アーリー、ポール・マーサル、カール・コルデシュは、1899年にヴァルデマール・ユングナーが考案した電池の化学方式をもとに、塩化アンモニウムの電解質をアルカリ性の物質に置き換えた。 アルカリ乾電池は、同じ大きさのマンガン乾電池よりも多くのエネルギーを蓄えることができ、保存期間も長かった。
アルカリ電池は1960年代に人気を高め、マンガン乾電池を追い抜き、それ以来、消費者向けの標準的な一次電池となっている。
20世紀の充電式電池
1970年代、COMSATは通信衛星向けにニッケル水素電池を開発した。 この電池は、加圧された気体の状態で水素を蓄える。 国際宇宙ステーションをはじめ、多くの人工衛星が今もニッケル水素電池に頼っている。
1960年代後半から複数の企業が行ってきた研究の成果として、ニッケル水素電池(NiMH)が生まれた。 NiMH電池は1989年に消費者市場に投入され、充電式のニッケル水素セルよりも小型で安価な代替品となった。
日本の旭化成は1985年に最初のリチウムイオン電池を製作し、ソニーは1991年に最初の商用リチウムイオン電池を作り出した。 1990年代後半には、リチウムイオン電池向けに柔らかく柔軟な外装が開発され、これが「リチウムポリマー」あるいは「LiPo」電池の誕生につながった。
もちろん、これ以外にも実に多くの電池の化学方式が発明され、製造され、そして時代遅れになっていった。 現代の主流となっている電池の技術についてさらに読みたい場合は、電池の技術のチュートリアルを確認してほしい。
構成要素
電池はアノード、カソード、電解質という3つの基本的な要素で構成されている。 電解質だけでは不十分な場合、アノードとカソードが接触しないようにするためにセパレータが使われることも多い。 これらの構成要素を収めるため、電池にはたいてい何らかの外装がある。
アノードとカソードはどちらも電極の一種である。 電極とは、回路の中の部品に電気が出入りする際に通る導体のことである。
アノード
回路に接続された機器の中では、電子はアノードから外へ流れ出る。 つまり、従来の意味での「電流」はアノードへ流れ込むということである。
電池の中では、アノードと電解質の間の化学反応によって、アノードに電子が蓄積される。 これらの電子はカソードへ移動したがるが、電解質やセパレータを通り抜けることはできない。
カソード
回路に接続された機器の中では、電子はカソードへ流れ込む。 つまり、従来の意味での「電流」はカソードから流れ出るということである。
電池の中では、カソードの内部や周辺で起きる化学反応が、アノードで生み出された電子を消費する。 電子がカソードに到達する唯一の経路は、電池の外部にある回路を通ることである。
電解質
電解質とは、たいてい液体やゲル状の物質で、アノードとカソードでそれぞれ起きる化学反応の間でイオンを運ぶことができる。 また電解質は、アノードとカソードの間を電子が直接流れるのを妨げる役割も持っており、そのおかげで電子は電解質の中ではなく外部の回路を通って流れやすくなっている。
電解質は電池の動作にとって非常に重要である。 電子は電解質を通り抜けられないため、アノードとカソードをつなぐ回路という形の電気的な導体を通らざるを得なくなる。
セパレータ
セパレータは、アノードとカソードが接触して電池内で短絡(ショート)が起きるのを防ぐ、多孔質の素材である。 セパレータには、綿、ナイロン、ポリエステル、厚紙、合成ポリマーフィルムなど、さまざまな素材が使われる。 セパレータは、アノード、カソード、電解質のいずれとも化学的に反応しない。
電解質中のイオンは正に帯電しているものも負に帯電しているものもあり、大きさもさまざまである。 特定のイオンだけを通し、他は通さないように作られた専用のセパレータも存在する。
外装
たいていの電池には、内部の化学成分を封じ込めておく何らかの方法が必要である。 外装は「ハウジング」や「シェル」とも呼ばれ、電池の内部構造を保持するための単純な機械的構造にすぎない。
電池の外装には、プラスチック、鋼鉄、柔らかいポリマーラミネートのパウチなど、ほぼどんな素材でも使うことができる。 一部の電池は、いずれかの電極に電気的に接続された導電性の鋼鉄製外装を使っている。 一般的な単3形アルカリ電池の場合、鋼鉄製の外装はカソードに接続されている。
動作の仕組み
電池が動作するには、たいてい複数の化学反応が必要である。 少なくとも1つの反応がアノードの内部または周辺で起こり、1つ以上の反応がカソードの内部または周辺で起こる。 いずれの場合も、アノードでの反応は酸化と呼ばれる過程で余分な電子を生み出し、カソードでの反応は還元と呼ばれる過程でその余分な電子を消費する。
つまり本質的には、ある種の化学反応、すなわち還元酸化反応(レドックス反応)を2つの部分に分離しているのである。 レドックス反応は、化学物質の間で電子が移動する際に起こる。 この反応における電子の動きを、電池の外へと導くことで、私たちは回路に電力を供給することができる。
アノードでの酸化
レドックス反応の最初の部分である酸化は、アノードと電解質の間で起こり、電子(e-と表記される)を生み出す。
酸化反応の中には、リチウムイオン電池のようにイオンを生み出すものもあれば、一般的なアルカリ電池のようにイオンを消費するものもある。 いずれの場合も、イオンは電子が通れない電解質の中を自由に移動できる。
カソードでの還元
レドックス反応のもう半分である還元は、カソードの内部または周辺で起こる。 酸化反応によって生み出された電子は、還元の過程で消費される。
リチウムイオン電池のように、酸化反応によって生じた正に帯電したリチウムイオンが還元の過程で消費される場合もあれば、アルカリ電池のように、還元の過程で負に帯電したイオンが生み出される場合もある。
電子の流れ
たいていの電池では、回路に接続されていない状態でも、一部またはすべての化学反応が起こりうる。 これらの反応は、電池の保存期間に影響を与えることがある。
たいていの場合、これらの反応が最大の勢いで進むのは、アノードとカソードの間で電気を通す回路が完成しているときだけである。 アノードとカソードの間の抵抗が小さいほど、より多くの電子が流れることができ、化学反応もより速く進む。
これは、電池内で短絡(意図しないものも含む)を起こすことが、いかに危険であるかを示している。 リチウムイオン電池は、短絡が起きると過熱し、煙を出したり発火したりすることが知られている。
このように動いている電子を、「負荷」と呼ばれるさまざまな電気部品に通すことで、私たちは何か役に立つことを実現できる。
電池切れ
電池内の化学物質は、最終的に平衡状態に達する。 この状態になると、化学物質はもはや反応しようとしなくなり、その結果、電池はそれ以上電流を生み出せなくなる。 この時点で、電池は「切れた」と見なされる。
一次電池は、切れたら廃棄しなければならない。 二次電池は、電池に逆方向の電流を流すことで充電できる。 充電は、化学物質が一連の反応を経て元の状態に戻ることによって行われる。
用語集
電池の電圧、容量、電流供給能力などについて語るとき、よく使われる共通の用語がある。
セル
セルとは、電解質によって隔てられた1組のアノードとカソードのことで、電圧と電流を生み出すために使われる。 電池は1つ以上のセルから構成される。 たとえば単3形電池1本は1つのセルである。 自動車用バッテリーは、それぞれ2.1Vの6個のセルを含んでいる。
一次電池
一次電池は、元に戻すことのできない化学反応を利用している。 そのため、電池が切れたら廃棄しなければならない。
二次電池
二次電池は充電することができ、化学的な状態を元に戻すことができる。 「充電式電池」とも呼ばれ、これらのセルは何度も使うことができる。
公称電圧
電池の公称電圧とは、メーカーが表示している電圧のことである。
たとえば、アルカリ単3形電池は1.5Vと表示されている。 実際にテストされたアルカリ電池は、およそ1.55Vから始まり、放電が進むにつれて徐々に電圧が下がっていくことが分かっている。 この例では、「1.5V」という公称電圧は、電池の最大電圧、つまり使い始めの電圧を指している。
一方、クアッドコプター用のあるLiPoバッテリーパックでは、放電曲線がおよそ4.2Vから始まり、放電が進むにつれておよそ2.8Vまで下がっていくことが示されている。 たいていのリチウムイオン電池やLiPo電池に表示されている公称電圧は3.7Vである。 この場合、「3.7V」という公称電圧は、放電サイクル全体を通じた電池の平均電圧を指している。
容量
電池の容量とは、特定の電圧でその電池が供給できる電荷の量を示す指標である。 たいていの電池は、アンペア時(Ah)またはミリアンペア時(mAh)で定格が示される。
たいていの電池の放電グラフは、電圧を容量の関数として示している。 自分の回路に十分な容量の電池かどうかを判断するには、許容できる最低電圧を見つけ、それに対応するmAhまたはAhの定格を確認するとよい。
Cレート
多くの電池、特に高出力なリチウムイオン電池では、電池の特性をより明確に示すため、放電電流を「Cレート」として表す。 Cレートとは、電池の最大容量に対する放電速度の比率である。
1Cとは、電池を1時間で放電しきるのに必要な電流量である。 たとえば、400mAhの電池が1Cの電流を供給する場合、それは400mAを意味する。 同じ電池での5Cは2Aになる。
たいていの電池は、大きな電流を取り出すほど容量が減少する。
Note
一般的な助言として、LiPo電池は1C以下で充電すべきとされている。
MITには、この概要よりもさらに踏み込んだ、電池の仕様と用語についての優れたガイドがある。
使い方
単セル
一部の回路は単セルの電池だけで動かせるが、その電池が十分な電圧と電流を供給できることを確認しておこう。
電圧が回路にとって高すぎる、あるいは低すぎる場合は、たいていDC/DCコンバータが必要になる。
直列
電池の端子間の電圧を高めるには、セルを直列に接続するとよい。 直列とは、セルを端から端へと積み重ね、あるセルのアノードを次のセルのカソードに接続することを意味する。
電池を直列に接続すると、合計の電圧が増加する。 動作電圧を求めるには、すべてのセルの電圧を足し合わせればよい。 容量は変わらない。
アルカリ電池を使うたいていの消費者向け電子機器では、電池は直列に積み重ねられている。 たとえば、単3形電池2本用のホルダーを使えば、プロジェクトの公称電圧を3Vまで高めることができる。
Note
リチウムイオン電池やLiPo電池を直列に接続して充電する場合は、セル間の電圧を均等に保つため、「バランサー」と呼ばれる専用の回路を必ず使う必要がある。バランサーを内蔵し、安全な充電を可能にする充電器もある。
並列
単セルの電圧が負荷にとって十分であれば、電池を並列に追加することで容量を増やすことができる。 これは同時に、取り出せる電流(Cレート)も増加させることに注意してほしい。
電池を並列に接続する際は注意が必要である。 すべてのセルは同じ公称電圧、同じ充電レベルでなければならない。 電圧に差があると、短絡が起きて過熱し、最悪の場合は発火する可能性がある。
直列と並列の組み合わせ
電圧と容量の両方を増やしたい場合は、直列と並列を組み合わせることができる。 この場合も、短絡を防ぐため、並列に接続する電池どうしの電圧レベルが同じであることを必ず確認すること。
特にリチウムイオン電池を使った大型のバッテリーパックでは、直列と並列の構成を「S」と「P」を使って表すことがよくある。 上の回路の構成は2S2Pである。 実際の例として、現代の電気自動車は、直列と並列に接続された膨大な数の電池群を使っている。
まとめ
これで、電池がどのように発明され、どのように動作するかについて理解できたはずである。 電池はプロジェクトに電気エネルギーを供給する方法のひとつであり、持ち運び可能な電源が必要な場合には非常に役立つ。
電池についてさらに詳しく知りたい場合は、次のようなチュートリアルも参考になる。
タグ: 概念、電気工学、電力
出典:What is a Battery?(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
電池の技術
電池の技術には実に多くの種類がある。 電池の化学的な仕組みの細かい話については、優れた資料がすでにたくさんある。 特にWikipediaの「電池」のページは充実しており、網羅的である。 このチュートリアルでは、組み込みシステムやDIYの電子工作でよく使われる電池に焦点を当てる。
参考になるチュートリアル:
用語
電池について語るときによく使われる用語をいくつか紹介する。
容量:電池には、どれだけの電力を蓄えられるかを示す定格がある。 電池が満充電のとき、その容量がその電池に蓄えられている電力量にあたる。 同じ種類の電池どうしは、時間あたりに出力できる電流量で定格を表すことが多い。 たとえば1000mAh(ミリアンペア時)や2000mAhの電池がある。
公称セル電圧:充電されたセルが出力する平均的な電圧である。 電池の公称電圧は、その背後にある化学反応によって決まる。 鉛蓄電池を使った自動車用バッテリーは12Vを出力し、リチウムコイン電池は3Vを出力する。
ここで重要なのは「公称」という言葉である。 実際に測定される電圧は、放電が進むにつれて下がっていく。 満充電のLiPo電池はおよそ4.23Vを出力するが、放電しきった状態ではおよそ2.7V程度まで下がることがある。
形状:電池にはさまざまな大きさや形がある。 「単3形」という呼び方は、特定の形状と規格のセルを指す。 形状には非常に多くの種類がある。
一次電池と二次電池:一次電池は使い切りの電池とほぼ同じ意味である。 一次電池は一度完全に使い切ると、(安全かつ確実には)再充電できない。 二次電池は充電式の電池としてよく知られている。 満充電にするには別の電源が必要になるが、寿命が尽きるまで何度も充放電を繰り返せる。 一般に一次電池は放電速度が遅く長持ちするが、充電式の電池ほど経済的でないこともある。
| 電池の形状 | 化学的方式 | 公称電圧 | 充電式か |
|---|---|---|---|
| 単3、単4、単2、単1形 | アルカリまたはマンガン | 1.5V | いいえ |
| 9V形 | アルカリまたはマンガン | 9V | いいえ |
| コイン電池 | リチウム | 3V | いいえ |
| シルバーフラットパック | リチウムポリマー(LiPo) | 3.7V | はい |
| 単3、単4、単2、単1形(充電式) | ニッケル水素またはニッケルカドミウム | 1.2V | はい |
| 自動車用バッテリー | 6セル鉛蓄電池 | 12.6V | はい |
エネルギー密度:電池の容量と、形状や大きさを組み合わせることで、エネルギー密度を計算できる。 技術によって実現できる密度は異なり、たとえばリチウム系の電池は、アルカリ電池やコイン電池に比べて同じ体積でより多くのエネルギーを詰め込めることが多い。
自己放電率:6か月放置していた車のエンジンをかけようとしたことはないだろうか。 電池は、棚に置いたまま使わずにいても放電していく。 時間の経過とともに電池自身が放電していく速さを、自己放電率と呼ぶ。
安全性:電池はエネルギーを蓄えているため、基本的にはごく小さな爆発物のようなものである。 危害を防ぐため、電池はできる限り安全に設計されている。 たいていの電池技術は、誤った使い方をされた場合でも安全に放電するように設計されている。 アルカリ電池を間違った向きに接続すると、熱くなることはあっても、発火することはないはずである。 たいていのリチウムポリマー電池には、電池を保護し、危険な使い方を防ぐための保護回路が内蔵されている。
用語の一覧や技術的な概要については、Wikipediaが優れた資料になる。
リチウムポリマー
リチウムポリマー(LiPoと略されることが多い)電池は、組み込み電子工作にとって非常に有用な電池である。 市場で手に入るものの中でも最高水準のエネルギー密度を持つ。 携帯電話の多くにこのタイプの電池が使われているため、手頃な価格で入手しやすい。 専用の充電が必要なので、必ず適切な充電器を使うこと。 SparkFunでは3.7Vのリチウムポリマーバッテリーをさまざまなサイズで扱っている。 どの容量を選ぶかは、プロジェクトの想定稼働時間やサイズの制約など、さまざまな要因によって決まる。
公称電圧
LiPoの1セルの公称電圧は3.7Vである。 満充電時には4.3V近くまで達するが、通常の使用ではすぐに3.7Vまで下がる。 使い切った状態では、セルの電圧はおよそ3V程度になる。 つまり、セルから直接電源を取るプロジェクトでは、さまざまな電圧に対応できる設計にする必要がある。 5Vが必要な場合は、2本のLiPoを直列につないで7.4Vのパックを作り、そこから5Vまで降圧する必要がある。
コネクタ
小型電子機器の世界では、たいていのLiPo電池は何らかの2ピンコネクタで終端されている。 SparkFunではJSTコネクタを採用している。 これにより、電池を間違った向きに接続してしまうことを防げる。 このコネクタは摩擦だけで固定されているため、電池を取り外すときはペンチなどを使って優しく引き抜くのが一般的である。
充電と放電
LiPo電池を充電するための安価な充電器は数多く販売されている。 たいていUSB経由で充電する。 専用の充電器なしでLiPo電池を充電しようとしてはいけない。 LiPo電池は過充電によって傷んでしまうことがあるので、必ずLiPo専用に設計された充電器を使うこと。
リチウムイオン電池を充電する前に、電池の容量と、充電器が供給する充電電流を必ず確認しておくこと。
LiPo電池は、放電しすぎることでも傷んでしまう。 これを防ぐため、ほとんどのLiPo電池にはセルの上部に小さな安全回路が内蔵されており、電圧が一定のしきい値(たいてい3V)を下回ると電池を遮断するようになっている。 この保護回路の基板は、たいてい配線が接続されている黄色いカプトンテープの下に隠れている。
LiPo電池は自己放電率が非常に低い。 そのため、消費電力が少なく、何日も、あるいは何か月も動作させ続ける必要があるプロジェクトに適している。
エネルギー密度には注意すること: これらの電池は大きな力を秘めており、連続して数アンペアもの電流を供給できる。 ショート保護機能はショートを検知すると電池を遮断してくれるが、これらの電池を使うプロジェクトでは常識的な注意を払うべきである。
Note
メーカーが提供するデータシートの中には、定格容量を「C 5 A」のような単位で表記しているものがある。 これはLiPo電池の測定に使われる標準的な表記であり、たとえば850mAhのLiPo電池が「0.2C 5 A」という定格容量を持つ場合、これは容量850mAに0.2を掛けた電流を、5時間にわたって流し続けたときの値であることを示している。 この電流値を負荷にかけ続け、その時間内に電池の電圧が最低値に達するかどうかを見て容量を測定している。
ほぼすべての携帯用途において、LiPoをおすすめする。 そこそこ頑丈であり、安全に使えば優れた電源になる。
その他の種類のリチウムイオン電池
円筒形の大容量リチウムイオン電池
この種の電池は主に懐中電灯用途で使われてきたが、扱いやすく取り付けも簡単で、大きな電力を蓄えられる。
- 公称電圧:これらの電池も3.7Vの公称電圧を持つが、平型のLiPo電池とは異なり、これらの円筒形セルには保護回路が内蔵されていない。傷めないようにするには、充放電時に特別な注意が必要である。
- コネクタ:専用の電池ホルダーを使えば、プロジェクトに簡単に組み込める。
- 充電と放電:これらの電池には保護回路がないため、過充電や過放電によって電池が傷まないよう、使う側が注意する必要がある。汎用の充電器を使うことをおすすめする。
高放電リチウムイオン電池
高放電リチウムイオン電池は、大きな力を必要とする小型のR/C、ロボット、携帯用プロジェクトの電源として優れている。
- 公称電圧:これらは7.4Vの公称電圧を持ち、円筒形セルと同様に保護回路は内蔵されていない。傷めないようにするには、充放電時に特別な注意が必要である。
- コネクタ:充電用コネクタは3ピンのJST-XHプラグである。放電にはディーンズコネクタのリード線を使う。
- 充電と放電:これらの電池には保護回路がないため、過充電や過放電によって電池が傷まないよう、使う側が注意する必要がある。たいてい2セル構成のパックであるため、専用の充電器が必要であり、単セル用の充電器は使えない。専用の充電器の使用をおすすめする。
ニッケル水素
ニッケル水素(NiMHと略されることが多い)電池は、実績のある充電式の技術である。 他の化学方式に比べて安価なことが多いが、LiPoに比べるとエネルギー密度で劣る。 NiMH電池は充電カーブがそれほど厳密でなくてよいため、充電器のコストも抑えられる。 NiMHは、出力電圧がそれほど重要でない電動歯ブラシやコードレスシェーバーのような、比較的安価な電子機器でよく使われている(電池が減ってくると歯ブラシの動きが遅くなるが、それでも動き続けるのに気づくだろう)。
それぞれのセルは公称1.2Vを出力する。 これは、同じサイズで1.5Vを出力するアルカリ電池とよく似ている。 単3形のNiMHを4本組み合わせれば4.8Vのパックになり、たいていの5V系システムを動かせるが、放電が進むにつれて電圧は下がっていく。
充電と放電
NiMH電池自体には放電保護回路が内蔵されていない。 放電保護回路は、電池が一定の電圧を下回って放電するのを防ぎ、電池が傷むのを防ぐ役割を持つ。
一般的な消費者向け電池とよく似た性質を持つことから、NiMH電池の充電には壁のコンセントに直接差し込むタイプの充電器がよく使われる。 すでに単3形の電池を使う前提で設計された機器には、NiMHをおすすめする。
コイン電池
コイン電池は、非常に小型で消費電力の少ないプロジェクトに適している。 安価であり、大量に必要なら、まとめ買いするとよい。 LEDのテストにも重宝する。 リモコンや電子キャンドルなど、多くの使い捨て小型機器の内部にこのタイプの電池が隠れているのを見つけられるだろう。
これらの電池は充電できない。 複雑な仕組みを持つ充電可能なバージョンも一部にはあるが、コイン電池の大半は使い切ったら捨てることを前提としている。
コイン電池を支える化学的方式や技術はさまざまである。 アルカリ系のものもあれば、リチウム系のものもある。 アルカリ系のコイン電池の公称電圧は1.5Vであり、リチウム系のコイン電池の公称電圧は3Vである。
コイン電池にはいくつかのサイズがあり、それぞれサイズと化学方式を示す専用のコード名が付けられている。 アルカリ系のコイン電池はすべて「L」で始まり、リチウム系のコイン電池はすべて「C」で始まる。 たとえば人気のCR2032はリチウム電池(公称3V)で、直径20mm、厚さ3.2mmである。 LR1154(LR44とも呼ばれる)はアルカリ電池(1.5V)で、直径11mm、厚さ5.4mmである。
コイン電池は、ATtinyのような小型マイコンとLEDを使ったプロジェクトの電源にも適している。
アルカリ電池
私たちは皆、この使い切りタイプの電池とともに育ってきた。 何十年も前から存在するため、どこでも見つかる。 単3形や9V形の電池ホルダーやアクセサリーも数多くある。
これらの電池は安価で、安全に使え、どこでも手に入るが、残念ながら充電はできない。 アルカリという化学方式のおかげで、これらの電池は特に扱いを間違えにくい(安全な)設計になっている。
単3形と単4形がもっとも一般的なアルカリ電池であり、公称1.2Vを出力する(使い始めはおよそ1.5V程度になる)。 単3形は1.2Vしか出力しないため、3.3Vや5V系のシステムを動かすには3本または4本を組み合わせる必要がある。 9V形の電池は、当然ながら公称9Vである。
接続ケーブル付きの9V電池は、プロジェクトを手早く携帯用にするのに優れた方法だが、あまり長持ちするとは期待しないほうがよい。 9Vを出力するとはいえ、9V電池の容量自体はかなり小さい。
私たちは初心者向けにこのタイプの電池をよく使っている。 初心者はこの種の電池に慣れており、簡単に手に入れられることが多い。 電池を逆向きに取り付けてしまっても、熱くなる程度でほとんど問題は起きない。 基礎を身につけた生徒には、より長持ちし、充電もできるLiPoへの移行を勧めることが多い。
まとめ
電池の技術について少し詳しくなったところで、次のような関連するチュートリアルやプロジェクトも確認してみてほしい。
- コネクタの基礎:コネクタは、電子工作を始めたばかりの人にとって混乱のもとになりやすい。さまざまな選択肢や用語、名称があるため、必要なものを選んだり見つけたりするのは大変である。このチュートリアルで、コネクタの世界への足がかりをつかめる。
- How to Power a Project(プロジェクトへの電源供給):プロジェクトに必要な電源の条件を見極める手助けになるチュートリアルである。
- テスターの使い方:テスターを使って導通、電圧、抵抗、電流を測定する基本を学べる。
タグ: 部品、電気工学、電力、技術
出典:Battery Technologies(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
プロジェクトへの電源供給
このチュートリアルでは、電子工作プロジェクトに電源を供給するさまざまな方法を紹介する。 検討すべき電圧や電流の考え方についても解説する。 また、プロジェクトが持ち運び可能だったり、遠隔地に置かれたりする場合、つまり壁のコンセントのそばに置けない場合に必要となる追加の検討事項についても触れる。
はじめて電子工作プロジェクトに取り組むのであれば、このチュートリアルを読み進めるか、あるいは選んだプロジェクトや開発ボードで推奨されている電源をそのまま使うという選択肢もある。 SparkFun Inventor’s KitにはUSBケーブルが同梱されており、キット内のすべてのプロジェクトはもちろん、より高度なプロジェクトの多くにも十分対応できる。 迷っているなら、まずはこのキットから始めるのがよい。
参考になるチュートリアル:
プロジェクトへの電源供給の方法
プロジェクトに電源を供給するもっとも一般的な方法には、次のようなものがある。
- USB電源
- 可変DCベンチトップ電源
- AC-DCウォールアダプタ(パソコンやノートパソコンで使われるようなもの)
- 電池
どの方法を選べばよいか
この問いへの答えは、プロジェクトごとの要件に大きく左右される。
USB電源
SparkFun Inventor’s Kitや、その他の基本的な開発ボードから始めるのであれば、たいていはUSBケーブルだけで十分である。 Arduino Unoは、キット内のサンプル回路を動かすのにUSB A-Bケーブルしか必要としない例のひとつである。
可変DCベンチトップ電源
継続的にプロジェクトを製作したり回路をテストしたりする仕事をしているなら、可変DCベンチトップ電源を用意することを強くおすすめする。 プロジェクトに応じて電圧を特定の値に設定できるほか、最大許容電流も設定できるため、ある程度の保護にもなる。 プロジェクト内で短絡(ショート)が起きた場合、ベンチ電源が停止することで、部品への被害を防げる可能性がある。
AC-DCウォールアダプタ
回路の動作確認が済んだあとは、専用のAC-DC電源がよく使われる。 同じ開発ボードを何度もプロジェクトで使い回す場合にも、この選択肢は優れている。 ウォールアダプタはたいてい決まった電圧と電流を出力するため、電源を供給したいプロジェクトの仕様に合ったアダプタを選び、その仕様を超えないようにすることが重要である。
電池
プロジェクトを持ち運びできるようにしたい場合や、電力網から電源を取れない遠隔地に設置したい場合は、電池が解決策になる。 電池には非常に多くの種類があるため、どれを選ぶべきかはこのチュートリアルの後半で詳しく扱う。 よく選ばれるものとして、アルカリ電池、充電式のニッケル水素単3形、リチウムポリマー電池などがある。
プロジェクトに特定の電圧や、もう少し多くの電流が必要な場合は、ブーストコンバータやスイッチングレギュレータを追加するとよい。 電池から得られる変動する電圧を、5Vなどの一定の電圧に変換して出力できる。 使用するボードや部品によっては、構成次第で9Vや10Vを出力することも可能である。 5Vより高い電圧を出力するには、そのために必要な部品を揃えて回路を組む必要がある。
電圧と電流の検討事項
プロジェクトXにはどのくらいの電圧が必要か
これは回路によって大きく異なるため、簡単には答えられない問いである。 とはいえ、Arduino Unoのようなたいていのマイクロプロセッサ開発ボードには、オンボードの電圧レギュレータが搭載されている。 これにより、レギュレータが出力する電圧より高い、特定の範囲内の電圧を供給できるようになっている。 開発ボード上の多くのマイクロプロセッサやICは3.3Vや5Vで動作するが、電圧レギュレータ自体は6V〜12V程度まで対応できることが多い。
電源から得られた電力は電圧レギュレータによって細かく調整され、電流の消費量が変動する場面でも各チップに一定の電圧が供給されるようになっている。 SparkFunでは、3.3V〜5V系で動作する製品の多くに9V電源を使っている。 ただし、どの電圧が安全かを確認するには、開発ボードに搭載されている電圧レギュレータのデータシートを見て、メーカーが推奨する電圧範囲を確認することをおすすめする。
プロジェクトXにはどのくらいの電流が必要か
この問いも、使用する開発ボードやマイクロプロセッサ、そしてそこに接続する回路によって変わってくる。 電源がプロジェクトの必要とする電力を供給しきれない場合、回路が不安定で予測できない動作をすることがある。 これはブラウンアウトとも呼ばれる。
電圧の場合と同様に、データシートを確認し、回路の各部分が必要とする電流を見積もっておくことをおすすめする。 また、必要な電流を少なめに見積もるよりも、多めに見積もっておくほうが良い習慣である。 モーターや大量のLEDなど、大きな電流を必要とする要素が回路に含まれる場合は、大容量の電源が必要になったり、マイクロプロセッサ用とモーター用で電源を分ける必要が出てきたりすることもある。 そうしないと、電力の落ち込みによってマイクロプロセッサがリセットしてしまったり、モーターの出力が足りなくなったり、LEDが十分な明るさで点灯しなくなったりすることがある。 電流に余裕のある電源を選び、足りなくなるよりは余らせるほうが、常に得策である。
プロジェクトが消費する電流が分からない場合
しばらく回路を扱っていれば、プロジェクトに必要な電流量を見積もるのも徐々に簡単になってくる。 とはいえ、実験的に電流を調べる一般的な方法としては、電流の読み取り機能を備えた可変DCベンチトップ電源を使うか、テスターを使って動作中の回路に流れる電流を測定するという方法がある。 これにより、プロジェクトにどのような電源を選べばよいか、おおまかな見当がつく。
テスターでの電流の測り方が分からない場合は、テスターのチュートリアルを参照してほしい。 デジタルマルチメーター(DMM)は電子工作の道具箱に必ず入れておくことをおすすめする。 電流や電圧を測定するのに非常に役立つ。
接続方法
電池や電源をどうやって回路に接続するか
電源をプロジェクトに接続する方法は数多くある。
可変ベンチトップ電源は、バナナジャックや配線を使って回路に直接接続するのが一般的である。 これはテスターのプローブケーブルに使われているコネクタともよく似ている。
多くのプロジェクトは、まずブレッドボードの上で配線を使って試作されたのち、最終的な製品になっていく。 ブレッドボード回路への電源供給には数多くの方法があり、その多くはここで紹介したコネクタを利用するものである。
プロジェクトが試作段階を終えたあとは、たいていPCB(プリント基板)に落とし込まれる。 一度か二度しか製作しない予定であれば、プロトタイピング基板に回路を移し、手作業で配線して固定するという方法もある。 何度も製作する予定であるか、回路全体を小型化したい場合は、EagleのようなCADソフトウェアで回路を設計することを検討するとよい。 配線にかかる時間を節約できる。
完成したPCBでもっともよく使われる電源コネクタのひとつが、バレルコネクタ(バレルジャックとも呼ばれる)である。 バレルコネクタにはさまざまなサイズがあるが、いずれも同じ仕組みで動作し、シンプルで信頼性の高い電源供給手段を提供する。 設計によっては、パソコンやウォールアダプタのUSBポートから電源を取ることもできる。
電池は、電池を収める電池ケースに入れて使い、配線やバレルジャックを通じて回路に接続するのが一般的である。 リチウムポリマー電池のような一部の電池は、JSTコネクタを使うことが多い。
コネクタについてさらに詳しく知りたい場合は、コネクタのチュートリアルを参照してほしい。
遠隔地や持ち運び用の電源
どの電池を選べばよいか
遠隔地の回路に電源を供給する場合も、必要な電圧と電流を供給できる電池を見つけるという課題は変わらない。 電池の寿命、つまり容量は、電池に蓄えられている総電荷量を示す指標である。 電池の容量はたいていアンペア時(Ah)またはミリアンペア時(mAh)で表され、満充電の電池が1時間にわたって供給できる電流量を示している。 たとえば2000mAhの電池であれば、2A(2000mA)を1時間供給できる。
プロジェクトを持ち運び可能にする場合、電池の大きさ、形状、重さも考慮すべき点である。 特に小型のクアッドコプターのような、空を飛ぶものに搭載する場合は重要になる。 Wikipediaの一覧を見れば、電池のサイズがいかに多様であるかがおおまかに分かる。 電池の種類についてさらに詳しく知りたい場合は、電池の技術のチュートリアルを参照してほしい。
電池の直列接続と並列接続
プロジェクトに必要な電圧や電流を得るために、電池を直列または並列に接続することができる。 2つ以上の電池を直列に接続すると、電池の電圧が合算される。 たとえば鉛蓄電池を使った自動車用バッテリーは、実際には2.1Vのセル6個を直列につないだものであり、合計で12.6Vになる。 電池を直列に接続する際は、同じ化学方式の電池を組み合わせることが推奨される。 また、直列接続した電池を充電する場合は注意が必要である。 充電器の多くは単セルの充電にしか対応していない。
2つ以上の電池を並列に接続すると、容量が合算される。 たとえば単3形電池4本を並列に接続した場合、電圧は1.5Vのままだが、容量は4倍になる。
プロジェクトに必要な電池容量はどのくらいか
この問いは、回路が通常どのくらいの電流を消費するかが分かれば、答えやすくなる。 以下の例では見積もりによる計算を行うが、実際にはテスターを使って回路の消費電流を測定し、正確な値を得ることをおすすめする。
例として、ある回路を用意し、その消費電流を見積もったうえで電池を選び、電池でどのくらいの時間動かせるかを計算してみよう。 回路の頭脳としてATmega328マイクロコントローラを使うとする。 これは通常時ではおよそ20mAを消費する。 これに赤色LED3個と、電流制限用の標準的な330Ω抵抗をマイクロコントローラのデジタル入出力ピンに接続する。 この構成では、LEDを1個追加するごとに、消費電流がおよそ10mA増える。 さらに、マイクロメタルモーターを2個マイクロコントローラに接続するとする。 それぞれのモーターは、動作時におよそ25mAを消費する。 これらを合計すると、回路全体の消費電流は次のようになる。
ここでは標準的なアルカリ単3形電池を選ぶことにする。 十分な電流供給能力(最大1A程度)を持ち、容量もそこそこ大きく(1.5Ah〜2.5Ah程度)、非常に入手しやすいためである。 この例では平均的な容量として2Ahを想定する。 単3形の欠点は出力電圧が1.5Vしかないことであり、残りの部品はすべて5Vで動作するため、電圧を昇圧する必要がある。 これには5V昇圧ブレイクアウトを使う方法もあれば、単3形電池を3本直列にしておおよそ必要な電圧に近づけるという方法もある。 単3形電池を3本直列にすると、電圧は4.5V(1.5V×3)になる。 電池をもう1本追加して合計6Vにし、必要な電圧までレギュレータで降圧するという方法もある。
回路が電池でどれくらいの時間動作するかを計算するには、次の式を使う。
単3形電池3本を並列に接続し、常に100mAの電流を消費する回路の場合、次のようになる。
(3 × 2Ah) / 100mA = 6000mAh / 100mA = 60h
この並列構成のアルカリ単3形電池3本からは、理想的には60時間の駆動時間が得られる計算になる。 とはいえ、電池は「ディレーティング」、つまり理想値より少なめに見積もっておくのがよい習慣である。 控えめに見て理想値の75%が得られると仮定すると、このプロジェクトの駆動時間はおよそ45時間になる。
電池の駆動時間は、実際の消費電流量によっても変動する。 次のグラフは、エナジャイザーの単3形電池について、一定の電流を消費し続けた場合に予想される駆動時間を示したものである。
これは、プロジェクトに遠隔から電源を供給するための、数ある構成のひとつに過ぎない。
Note
LEDを使ったLilyPadプロジェクトの消費電力の計算例も、参考になるだろう。 プロジェクトが何個のLEDをどれだけの時間点灯させられるかを見積もる方法を学べる。
ストレステスト
電源とコネクタを選んだら、実際にプロジェクトを動かして動作を確認しておくこと。 メーカーによって電源の性能にはばらつきがある。 ウォールアダプタは、一定の期間動かし続けてもマイクロコントローラがブラウンアウトを起こさないか、電源が負荷によってリセットしないかを確認すること。 静電容量式のタッチセンサーを使うプロジェクトでは、電源のノイズによって遅延が生じていないかも確認しておくとよい。
プロジェクトを遠隔地で動かす場合は、必ず実際の電池を使ってテストすること。 電池は、接続されている負荷や電池の化学方式によって出力が変動することがある。 これによってもマイクロコントローラがブラウンアウトを起こしたり、電源供給が止まったりすることがある。
まとめ
これで、回路への電源供給によく使われる方法と、プロジェクトの要件に応じてどの方法を選べばよいかが分かったはずである。 電流、電圧、コネクタ、持ち運びのしやすさといった観点から、プロジェクトに合った判断ができるようになったことだろう。 プロジェクトの監視、制御、電源供給についてさらに学びたいなら、次のチュートリアルもおすすめである。
- LiPo USB充電器の使い方
- 電池とは何か:電池の内部の仕組みと、その発明の歴史を扱う
- LilyPadの基礎:プロジェクトへの電源供給
回路の試作についてさらに学びたいなら、ブレッドボードのチュートリアルを確認してほしい。 PCBの設計や製作についてさらに知りたいなら、次のチュートリアルもおすすめである。
タグ: 電気工学、LED、電力、スキル、プロジェクトを始める
出典:How to Power a Project(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
LiPo USB充電器の使い方
私たちはLiPo電池が大好きである。 小さく平たいパッケージの中に、驚くほどの電力を詰め込んでいる。 そして、充電が必要になったときにも非常に簡単に充電できる。 プロジェクトを持ち運び可能にし、なおかつ手軽に充電できるようにしたいなら、850mAhのLiPo電池と、基板に組み込めるUSB LiPo充電器の組み合わせを強くおすすめする。
このチュートリアルでは、USB LiPo充電器を、あらゆる単セルLiPo電池と組み合わせて使う方法を説明する。 ここでは主にLiPo充電器と電池のリテールキットを例に説明するが、この情報はその充電器と互換性のあるどんな電池にも応用できる。
必要なもの
- USB LiPo充電器
- 単セルLiPo電池
充電器は、40mAh、110mAh、400mAh、850mAh、1000mAh、2000mAh、6000mAhの大容量パックまで、あらゆる容量の電池と組み合わせて使える。
さらに、5Vの電源が必要である。次のような選択肢がある。
- パソコンのUSBポートとミニB USBケーブル
- USBウォールアダプタとミニBケーブル
- 5Vのウォールワート電源
参考になるチュートリアル:
入力と出力
このセクションでは、USB充電器を分解し、基板のすべての入力、出力、仕様を確認していく。
充電器の入力:電源
まず、充電器に電力を供給する何かが必要である。それによって充電器が電池への電力を調整できるようになる。 電源は、次の2つの入力のどちらかに接続する。バレルジャック(外径5.5mm、中心ピン径2.1mm、中心が正極)か、ミニB USBコネクタである。
電源の供給電圧は4.75V〜6Vの間にする必要がある。 パソコンのUSBポートやウォールアダプタに接続したミニBケーブルから得られる5VのUSB電源は、理想的な電源になる。 バレルジャック入力を使いたい場合は、5Vのウォールアダプタをおすすめする。
電源に必要な電流は、基板上で充電電流をどう設定しているかによって変わる。 デフォルトでは、充電電流は500mAに設定されているため、使用する電源がそれに対応できることを確認しておこう。 特に注意すべきなのがパソコンやノートパソコンのUSBポートである。500mAはUSBポートが供給できる規定の最大値であり、実際にはそれより低い出力(たとえば100mAなど)に制限されていることも多い。
5Vのウォールワート供給とUSB供給の両方を、この基板に安全に同時接続することができる。 基板上には逆流防止のための保護回路(ダイオード)が搭載されている。 より高い電圧を供給している側から、チップへ電力が供給される。
Note
警告:チップは最大6Vまでの電圧に対応しているが、電流については最大1500mAまでしか対応していない。電源として6V/2Aの電源を使うと、基板上のチップを焼き切ってしまう可能性が非常に高い。バレルジャック付きのウォールアダプタが必要な場合は、5V/2Aの電源をおすすめする。
充電器の出力:単セルLiPo電池
充電器に電源を接続したら、次は電池を接続する番である。 この基板は、非常に限られた種類の電池しか充電できないため、次の条件を満たしているか必ず確認すること。
- 単セル電池のみ:LiPo電池の公称電圧はおよそ3.7Vで、満充電時にはおよそ4.2Vまで上がる。つまり、対応するのは単セルのLiPoだけである。公称電圧が7.4V以上の複数セルの電池を使っている場合、この充電器は使えない。
- 電池の化学方式:この充電器はリチウムポリマーまたはリチウムイオン電池にのみ対応している。
- 容量に関する注意:(ほんの一瞬だけ楽しい)爆発を避けるため、これらのLiPo電池は1C(公称容量と同じ数値のアンペア数)を超える電流で充電すべきではない。つまり、500mAhの電池には500mAを超える充電電流を与えるべきではなく、100mAhの電池には100mAを超える充電電流を与えるべきではない。この基板は工場出荷時には500mAで充電するように設計されているが、その速度を変更するのも簡単である。電池の容量が500mAh未満の場合は、後述の充電電流の設定を確認してほしい。
対応するすべての電池は、白いJSTコネクタで終端されており、*BATT IN→*のラベルの隣にある対になった黒いコネクタに直接差し込める。 もし電池が見慣れない非JST系のコネクタで終端されている場合は、JSTコネクタのすぐ後ろにある未実装の0.1インチピッチのヘッダーを使うこともできる。 必要であれば、このヘッダーに配線や他のコネクタをはんだ付けすることもできる。
システム出力
LiPo USB充電器は、プロジェクトの中に簡単に組み込めるように設計されている。 ←SYS OUTコネクタを使えば、電池の出力をプロジェクトの残りの部分に接続できる。
電池の接続と同じように、プロジェクトへの接続にはJSTコネクタか、近くにある0.1インチピッチのヘッダーのどちらかを使える。
SYS OUT出力は、プロジェクトを電池に直接接続する。 つまり、電池の供給電圧(3.6V〜4.2V程度)がそのままプロジェクトに供給されるということである。 必要に応じて、その電圧を適切にレギュレートすること。
充電状態LED
基板上の赤いChargingLEDは、電池の充電状態を確認するために使える。
| 充電状態 | LEDの状態 |
|---|---|
| 電池なし | フローティング(OFFになるはずだが、点滅することもある) |
| シャットダウン | フローティング(OFFになるはずだが、点滅することもある) |
| 充電中 | ON |
| 充電完了 | OFF |
もっと大きな独自のLEDを追加したい場合は、未実装のフットプリントが用意されており、小さな(しかし明るい)赤色LEDの代わりに3mmまたは5mmのLEDをはんだ付けできる。 ただし、極性を正しく合わせることを忘れないように。
充電電流を設定する
電池を充電器に接続する前に、電池の容量と充電器が供給する充電電流を把握しておく必要がある。 安全のため、充電電流は電池の1C以下に抑えておくべきである。 つまり、850mAhの電池は850mA以下、100mAhの電池は100mA以下で充電すべきということである。
充電電流は、電池がどれだけ速く充電されるかを決める。 1000mAhの電池を1000mAで充電すれば、1時間で満充電になる。 500mAで充電すれば、満充電までに2倍の時間、つまり2時間かかる。 つまり充電電流は大きいほうがよいが、電池の仕様を超えない範囲に限られる。
LiPo USB充電器基板の主要部品であるMCP73831には、プログラム可能な充電電流という機能がある。 15mAから500mAの間で、電池に供給する電流を設定できる。 この値を設定するには、PROGピンからグラウンドへ抵抗を接続する。 基板上にはすでに2つの抵抗があり、充電電流を500mAまたは100mAに設定できるようになっている。 小さなジャンパーを使って、どちらかを選択する。 独自の抵抗を追加して、任意の充電電流を設定することもできる。
ジャンパーによる選択
充電状態LEDの隣に、2択のジャンパーを構成する3つの露出したパッドがある。 中央のパッドはMCP73831のPROGピンに接続されており、外側の2つのパッドはそれぞれ抵抗器に接続されている。 外側のパッドの隣にあるラベルは、それぞれが設定する充電電流を示している。
このジャンパーをよく見ると、中央のパッドと「500mA」とラベル付けされた外側のパッドをつなぐ小さな配線パターンが見えるはずである。 そのため、この基板はデフォルトで500mAの電流を供給するように設定されている。
充電電流を100mAに変更するには、そのパッド間の小さな配線パターンを切断し(ホビーナイフの使用をおすすめする)、「100mA」とラベル付けされたピンと中央のパッドをはんだの塊でつなぐ必要がある。
独自の充電電流を設定する
100mAでも500mAでも都合が悪い場合は、独自の充電電流を設定できる未実装の抵抗フットプリントが用意されている。
抵抗を追加する前に、前のセクションで説明した両方のジャンパーを切り離しておくこと。 そのうえで、次の式を使って抵抗値を選ぶ。
Rprog = 1000 / 目標の充電電流(A)
たとえば、400mAhの電池をちょうど400mAで充電したい場合は、2.5kΩの抵抗をはんだ付けする(2.2kΩと330Ωを直列にする必要があるかもしれない)。
Note
たいていの電池には、電流を供給しすぎたときに電池が破裂しないよう保護する、過電流保護機能が(黄色いテープの下の小さな回路基板に)内蔵されている。とはいえ、その回路をあてにしないほうがよい。そのほうが電力も、あなたの精神的な安らぎも守られる。
まとめ
さらに詳しく知りたい場合は、次のような情報源も参考になる(いずれも英語)。
- LiPo Battery Care Tutorial(LiPo電池のお手入れ):やや古いチュートリアルだが、内容の多くは今でも通用する。ストレインリリーフについての情報や、充電器から電池を安全に取り外すためのヒントが得られる。
- USB LiPo Charger Schematic(USB LiPo充電器の回路図):回路レベルの疑問があれば、回路図を確認してほしい。
- MCP73831 Datasheet(MCP73831のデータシート):単セルLiPo充電管理ICであるMCP73831についての詳細情報。
- USB LiPo Charger GitHub Repository(USB LiPo充電器のGitHubリポジトリ):最新の設計ファイルが公開されている。
補給可能な電源が手に入ったところで、次はどう使うか考えてみよう。 アイデアが必要なら、次のようなチュートリアルも確認してみてほしい(いずれも英語)。
- Uh-Oh Battery-Level Indicator Hookup Guide(電池残量インジケーターの使い方):電池電圧が下がりすぎると通知してくれるキットの組み立てと使い方を学べる。
- MYST Linking Book(MYSTのリンキングブック):LiPo電池を使って、あの名作コンピュータゲーム『MYST』に登場するリンキングブックを自作するプロジェクト。
- Sunny Buddy Solar Charger Hookup Guide(Sunny Buddyソーラー充電器の使い方):LiPo USB充電器をソーラー充電器に置き換えたい場合は、Sunny Buddyを確認してみてほしい。
タグ: 接続ガイド、電力
出典:LiPo USB Charger Hookup Guide(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
はんだ付け対応ブレッドボードの使い方
はんだ付け不要のブレッドボードは試作にとても便利である。 しかし、機械的な頑丈さという点では今ひとつである。 どこかしらのパーツが、いつも緩んでしまうものである。 同じ配線パターンを持つはんだ付け対応の基板を使えば、専用のPCBを設計しなくても、試作をより頑丈な形にすることができる。
一見すると、はんだ付け対応の大型ブレッドボードは、通常のはんだ付け不要の大型ブレッドボードと同じ穴の配置になっている。 しかし、よく見てみると、はんだ付け不要の基板からの移行をスムーズにするための、いくつかの追加機能があることに気づくはずである。
このチュートリアルでは、このはんだ付け対応ブレッドボードの特徴を紹介し、もっとも基本的な使い方を示したうえで、より高度な使用例も紹介する。
参考になるチュートリアル:
概要
これまで長年にわたって、似たようなはんだ付け対応ブレッドボードをいくつも使ってきたが、そのほとんどには物足りなさが残っていた。 よくあるものは、もろいフェノール樹脂製のPCB素材でできている。 銅の配線パターンは薄く、接着も弱いため、基板をやり直すと剥がれてしまいがちである。 そしてもっとも問題なのは、配線パターンがはんだ付け不要のブレッドボードと必ずしも一致していない点である。電源レールの位置が合わなかったり、中央部が5つ穴ではなく4つ穴になっていたりする。 回路をはんだ付け基板に移すには、余計な変換作業が必要になっていた。
この大型のはんだ付け対応ブレッドボードは、こうした問題を解決するために作られている。 本物のFR4ガラス繊維基板であり、ソルダーマスクとめっきスルーホールを備え、レイアウトははんだ付け不要のブレッドボードの接続をそのまま再現している。
このブレッドボードの中央部は、はんだ付け不要のブレッドボードと同じ接続パターンを再現しており、0.3インチ間隔で5つ穴が2列並んだ構成になっていて、DIP ICを取り付けられるようになっている。 対応するはんだ付け不要の基板と同じく、このはんだ付け対応の基板にも63列ある。 行と列の座標ラベルは、はんだ付け不要のブレッドボードと一致している。
はんだ付け不要のブレッドボードと比べて、このはんだ付け対応の基板は電源の配線方法にも柔軟性がある。
電源についての基礎知識
一般的な電源は、接続された回路にいくつかの電圧を供給する。 それぞれの電圧はレールと呼ばれることが多い。 必要な電源レールの数と、それぞれのレールが供給する電圧は、実際に使う回路の種類によって異なる。
- まず、どの電源にも「グラウンド」レールがある。グラウンドは0Vの基準点として使われ、他の電圧はこの基準点を基に測定される。実際に大地に接続されているとは限らない。
- 長年にわたり、デジタル回路は単一の5Vレールを使ってきた。近年ではより低い供給電圧、主に3.3V、時にはさらに低い1.8Vなどが一般的になっている。
- アナログ設計では、正負が対になったバイポーラ電源がよく使われ、正と負の鏡像のようなレールを供給する。±12Vや±15Vがよく使われる。
- ミックスドシグナル設計は、アナログとデジタルの両方のセクションを含み、それぞれの供給電圧の要件を併せ持つ。よい例がパソコンの電源であり、デジタルロジック用に3.3Vと5Vを、ディスクドライブのモーターや冷却ファンのようなもの用に±12Vを供給している。
はんだ付け不要のブレッドボードでは、たいてい基板の両端に沿って1組ずつの電源レールがある(ただし、途中で分断されていて完全には連続していないこともある)。 これらはたいてい「+」「-」の記号が付けられ、赤と青の色分けがされていることもある。 ブレッドボード自体は、レールがどう使われるかについて何も想定していない。電圧をレールに供給するのは利用者の役目である。
それでは、このブレッドボードの電源レールをどう設定するかを見ていこう。
「rail」という用語の由来を確実に特定するのは難しいが、1880年代にさかのぼる、電気鉄道に電圧を供給するための「第三軌条(サードレール)」の用法に由来していると考えられる。
任意のジャンパー
追加の設定をしなければ、この基板には基板の長さ全体にわたって伸びる5本の配線パターンがある。 そのうち4本は、基板の上端と下端にある「+」と「-」の配線であり、はんだ付け不要の基板の対応する箇所を再現している。 5本目の配線パターンは基板中央の「溝」に沿って伸びており、グラウンドとして使うことを意図している。
これらの5本の配線パターンは、基板の両端にある5ピンの5mmネジ端子とつながっている。 端子の並び順は、基板を横切る配線パターンの並び順と一致している。 下の図のように、一番上のネジ端子のピンは上側の「-」レールに、その次のネジ端子は上側の「+」レールに、というようにつながっている。
この基板は、配線用のジャンパーを使うことで、さまざまな電圧レールの組み合わせに対応できるようになっている。
ジャンパーは次のとおりである。
- JG1、JG2、JG3、JG4は、取り付け穴をグラウンドの配線パターンに接続するために実装できる。基板を金属製の筐体に取り付ける場合、筐体をグラウンドに落とし、回路のグラウンドを筐体に結線しておくのがよい習慣である。
- JG5とJG6は、基板の端にある「-」レールを、基板中央のグラウンド配線に接続するために使える。
- TIE+とTIE-は、それぞれ基板の両側にある「+」レールどうし、「-」レールどうしを接続する。はんだ付け不要のブレッドボードと同じく、これらはデフォルトでは接続されていないが、この基板ではそれらを簡単につなげられるようになっている。
この基板は、電源接続用の5mmネジ端子も取り付けられるようになっており、レールの構成に合わせて実装できる。 ネジ端子よりもしっかりした接続を好む場合は、パッドに配線を直接はんだ付けすることもできる。
電源の接続部とジャンパーは、基板の両端にそれぞれ用意されている。 たいていの用途では、どちらか一方の端の接続だけを使えば十分である。
いくつかの例
単一の電源レールを持つデジタル回路
単一の電源レール(たいてい3.3Vまたは5V)を使うデジタル回路を組む場合は、次のように接続する。
- TIE+とTIE-のジャンパーをブリッジする。
- JG5またはJG6のジャンパーをブリッジする。
- 2極の5mmネジ端子を取り付ける(上の図のとおり)。
- 赤い配線が供給電圧である。
- 黒い配線がグラウンドである。
部品を取り付ける際は、どちらかの「+」レールから供給電圧を、「-」レールまたは中央のグラウンド配線からグラウンドを取ることができる。
バイポーラレールを持つアナログ回路
バイポーラ電源を使うアナログ回路の場合は、次のようにジャンパーを設定する。
- TIE+とTIE-のジャンパーをブリッジする。
- 3極の5mmネジ端子を取り付ける(上の図のとおり)。
- 赤い配線が「+」の供給電圧である。
- 青い配線が「-」の供給電圧である。
- 黒い配線がグラウンドである。
部品は、どちらかの「+」レールから正の供給電圧を、どちらかの「-」レールから負の供給電圧を、そして中央の配線からグラウンドを取ることができる。
複数の基板を使う場合
この基板を複数使ってより大きな回路を組む場合、それらの基板で1つの電源を共有することができる。 もっとも一般的な構成は「スター型電源配電」として知られている。 電源をシステムの中心に据え、それぞれの基板を電源に直接接続する。
シンプルに描き直すと、次のようになる。
この構成では、電源とそれぞれの基板の間が直接つながる。
まとめ
この基板を手元に置いておくだけで、何かをはんだ付けしたくなってくる。 小さな試作には、30行のはんだ付け不要ブレッドボードと組み合わせて使える小型版の中型はんだ付け対応ブレッドボードもある。
この大型はんだ付け対応ブレッドボードについてさらに詳しく知りたい場合は、GitHubリポジトリを確認してほしい。
試作についてさらに学びたいなら、次のようなチュートリアルもおすすめである。
タグ: 接続ガイド、プロトタイピング、はんだ付け
出典:Large Solderable Breadboard Hookup Guide(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
はんだ付けの基本(スルーホール編)
はんだ付けは、電子工作の世界に足を踏み入れるうえでもっとも基本的なスキルのひとつである。 はんだごてを持たずに電子工作を学んだり作ったりすることも可能だが、このひとつのスキルを身につけるだけで、まったく新しい世界が開けることにすぐ気づくはずである。 SparkFunでは、はんだ付けはすべての人が身につけておくべきスキルだと考えている。 技術に囲まれる世界が広がるにつれて、日々使っている技術を理解するだけでなく、それを自分で作り、改造し、修理できることが重要になってきている。 はんだ付けは、それを可能にしてくれる数あるスキルのひとつである。
このチュートリアルでは、スルーホールはんだ付け(めっきスルーホールはんだ付け、PTHとも呼ばれる)の基本を扱い、必要な道具、正しいはんだ付けの技法を解説し、そこから先にどう進めばよいかを紹介する。 また、スルーホールはんだ付けに関するリワーク(やり直し)についても触れ、電子機器の修理を楽にするコツも紹介する。 このガイドは初心者にも熟練者にも役立つ内容になっている。
参考になるチュートリアル:
はんだごてに触れずに電子工学の理論から先に学びたい場合は、次のチュートリアルから始めることをおすすめする。
はんだごてを使わずに回路を組みたい場合は、ブレッドボードのチュートリアルを確認してほしい。
このチュートリアルはいくつかの既存のチュートリアルの内容の上に成り立っているため、先に次の話題を読んで理解しておくことをおすすめする。
はんだとは何か
はんだ付けの方法を学ぶ前に、はんだそのものについて、その歴史や用語を少し知っておくとよい。
はんだ(solder)という単語には2通りの使い方がある。 名詞としての「はんだ」は、スプールやチューブに入った長く細い線として売られている合金(2種類以上の金属からなる物質)を指す。 動詞としての「はんだ付けする(solder)」は、2つの金属をはんだ接合と呼ばれる形でつなぎ合わせることを意味する。 つまり、はんだ(を使って)はんだ付けするというわけである。
鉛入りはんだと鉛フリーはんだ:簡単な歴史
はんだについて知っておくべきもっとも重要なことのひとつは、伝統的なはんだの多くが、鉛(Pb)、スズ(Sn)、そのほか微量の金属でできていたという点である。 このはんだは鉛入りはんだとして知られている。 よく知られているように、鉛は人体に有害であり、大量にさらされると鉛中毒を引き起こすことがある。 とはいえ鉛は非常に有用な金属でもあり、融点が低く優れたはんだ接合を作れることから、はんだ付けの定番の金属として選ばれてきた。
鉛入りはんだの悪影響が知られるようになると、一部の団体や国は、鉛入りはんだをもう使わないほうがよいと判断した。 2006年、欧州連合は特定有害物質使用制限指令(RoHS)を採択した。 簡単に言えば、この指令は、電子機器や電気機器における鉛入りはんだ(をはじめとする一部の材料)の使用を制限するものである。 これにより、電子機器の製造では鉛フリーはんだの使用が標準となった。
鉛フリーはんだは、名前のとおり鉛を含まない点を除けば、鉛入りはんだとよく似ている。 その代わりに、主にスズと、銀や銅といった微量の金属で構成されている。 このはんだには、規格に適合していることを示すRoHSマークが付けられていることが多い。
用途に合ったはんだの選び方
電子機器を製造する場合、製品の安全性を確保するために鉛フリーはんだを使うのが望ましい。 とはいえ、自分自身のプロジェクトで使うはんだの種類は、自分で選ぶことができる。 多くの人は、接合材としての優れた性能から今でも鉛入りはんだを好んで使う。 一方で、機能性よりも安全性を優先し、鉛フリーを選ぶ人もいる。 SparkFunでは両方の種類を扱っており、それぞれが自分で選べるようにしている。
鉛フリーはんだにも欠点がないわけではない。 先に述べたように、鉛が選ばれてきたのは、はんだ付けのような用途において最良の性能を発揮するからである。 鉛を取り除くと、2つの金属をつなぎ合わせるという目的にとって理想的だった、はんだのいくつかの特性も失われてしまう。 そのひとつが融点である。 スズは鉛より融点が高いため、流動させるにはより多くの熱が必要になる。 スズはそれでも役目を果たすが、時には少し助けが必要になる。 多くの鉛フリーはんだにはフラックスコアと呼ばれるものが入っている。 フラックスとは、鉛フリーはんだの流動を助ける化学物質だと考えておけばよい。 フラックスなしで鉛フリーはんだを使うことも可能だが、フラックスがあれば鉛入りはんだと同じような効果をずっと簡単に得られる。 また、鉛フリーはんだは製造コストが余分にかかるため、鉛入りはんだより高価になることもある。
鉛入りか鉛フリーかを選ぶこと以外にも、はんだを選ぶ際に考慮すべき要素がいくつかある。 まず、鉛とスズ以外にも実に多くのはんだの組成が存在する。 次に、はんだにはさまざまなゲージ(太さ)がある。 小さな部品を扱うときは、細いはんだを使うほうがよいことが多い(番号が大きいほどゲージは細くなる)。 大きな部品には、太い線のほうがおすすめである。 最後に、はんだは線状以外の形でも売られている。 表面実装のはんだ付けに取り組むようになると、はんだペーストという形が主流になる。 ただしこのチュートリアルはスルーホールはんだ付けのチュートリアルであるため、はんだペーストについては詳しく扱わない。
用途に合ったはんだの選び方が分かったところで、道具とさらなる用語の話に進もう。
はんだごて
はんだ付けを助ける道具は数多くあるが、はんだごてほど重要なものはない。 最低限、作業をこなすには、こてとはんださえあればよい。 はんだごてにはさまざまな形状があり、単純なものから複雑なものまであるが、いずれもおおむね同じように機能する。 ここでは、こての各部の名称と、こての種類について見ていく。
はんだごての構造
はんだごてを構成する基本的な部品は、次のとおりである。
- こて先:こて先のないはんだごては存在しない。こて先は、はんだごての中で熱くなり、接合する2つの部品の周りにはんだを流し込む部分である。はんだを当てるとこて先にくっつくため、こて先がはんだを運んでいると誤解されがちだが、実際にはこて先が伝えているのは熱であり、金属部品の温度をはんだの融点まで上げることで、はんだが溶けるのである。たいていのこては、古くなったこて先を交換したり、別の形状のこて先に切り替えたりできるようになっている。こて先にはさまざまな大きさや形があり、あらゆる部品に対応できる。
こて先の交換は簡単で、ワンド(こて本体)のネジを緩めるか、こて先を押し込んで引き抜くだけでよい。
Note
こて先から接合部への熱伝達の効率は、使っているはんだごてのこて先の大きさによって左右される。一般に、はんだ付けするパッドと同じくらいの幅のこて先を使うのがよいとされる。
- ワンド:ワンドは、こて先を保持し、作業者が手に持つ部分である。ワンドはたいてい、こて先の熱が外側に伝わらないよう、ゴムなどの絶縁材料でできているが、内部には、ベースやコンセントからこて先へ熱を伝えるための配線や金属の接点が収められている。加熱と火傷防止という2つの役割を両立させているからこそ、質の高いワンドが重宝される。
こての中には、ワンドだけをコンセントに直接差し込むタイプもある。 これらはもっともシンプルなこてであり、温度を変える機能はない。 このタイプでは、発熱体がワンドに直接組み込まれている。
- ベース:はんだごてのベースは、温度を調整できるコントロールボックスである。ワンドはベースに接続され、内部の電子回路から熱を受け取る。温度をダイヤルで調整するアナログベースと、ボタンで温度を設定し、現在の温度を表示するデジタルベースがある。中には、さまざまな部品をはんだ付けする際にこて先への熱量をすばやく切り替えられる、ヒートプロファイル機能を備えたベースもある。
ベースの内部にはたいてい大きなトランスと、こて先の熱を安全に調整するための各種制御回路が収められている。
- スタンド(クレードル):アイアンスタンド(クレードルとも呼ばれる)は、使っていないときにこてを置いておく場所である。些細なことのように思えるかもしれないが、加熱されたこてを机の上に放置しておくのは、やけどや、最悪の場合は火災につながる潜在的な危険がある。シンプルな金属製のスタンドから、ワンドをクレードルに置くとこて先の温度を下げて摩耗を防ぐ、自動オフ機能付きの複雑なものまでさまざまである。
- 真鍮製スポンジ:はんだ付けをしていると、こて先は酸化しやすくなる。つまり黒ずんで、はんだがのりにくくなる。特に鉛フリーはんだには不純物が含まれており、それがこて先に蓄積して酸化を引き起こす。そこで登場するのがスポンジである。時々、こて先をこのスポンジで拭って汚れを落とす必要がある。伝統的には濡らした普通のスポンジが使われてきたが、これはこて先の寿命を大幅に縮めてしまう。冷たく濡れたスポンジでこて先を拭くと、温度変化によってこて先が膨張と収縮を繰り返し、それが摩耗の原因になり、時にはこて先の側面に穴があいてしまうこともある。穴があいたこて先は、もうはんだ付けには使えない。そのため、こて先の掃除には真鍮製スポンジが標準になっている。真鍮製スポンジは、こて先の現在の温度を保ちながら余分なはんだを取り除いてくれる。真鍮製スポンジがない場合は、普通のスポンジでもないよりはましである。
はんだごての選び方
初心者であれ熟練者であれ、用途に合ったはんだごてを見つけることができる。 シンプルな固定温度タイプの安価なもの、調整可能な温度のもの、より高機能なデジタルソルダリングステーションまで、幅広い選択肢がある。 SparkFunのカタログのはんだ付けカテゴリーで、自分に合った1本を探してみてほしい。
はんだ付けの補助道具
はんだごての細部が分かったところで、はんだ付け作業を助けるそのほかの道具についても紹介する。
- はんだ吸取り線:はんだ付けの「消しゴム」のような存在である。ジャンパーの問題や部品の取り外し(取り外しはんだ付け)を扱うときに非常に役立つ。はんだ吸取り線は、細い銅線を編み込んで作られており、はんだを銅線に染み込ませることで、余分なはんだの塊を「消す」ことができる。
- チップティナー:はんだごてのこて先を掃除するための化学ペースト。穏やかな酸が含まれており、こびりついた汚れ(部品にこて先を誤って溶かしてしまったときなど)を取り除いたり、使っていないときにこて先に蓄積する酸化(あの黒い汚れ)を防いだりする。
- はんだ吸取り器(はんだシュッ太郎のようなもの):部品を取り外す際に、スルーホールに残ったはんだを取り除くのに便利な道具である。
- フラックス:フラックスは、鉛フリーはんだの流動を助ける化学物質である。フラックスペンを使えば、扱いにくい部品に液体フラックスを塗って、より見た目のよいはんだ接合を作ることができる。水溶性フラックスを使った場合は、基板に残った残留物を洗浄して除去することが推奨される。ノークリーンフラックスの場合は洗浄の必要はないが、除去したい場合はイソプロピルアルコール(IPA)が必要になる。
- シリコン製はんだ付けマット:机を保護し、清潔に保つためのマット。
- はんだディスペンサー:スプールが転がっていかないようにし、はんだを取り出しやすくする道具。
そのほかおすすめの道具
以下の道具は必須ではないが、あるとはんだ付けがずっと楽になる。
- サードハンド(第三の手):はんだ付けの間、PCBや配線、部品を固定しておくのに便利である。
- パナバイス Jr.:真空ベース付きのバイスで、PCBや配線、部品を固定するのに役立つ。
- スティックバイスPCBバイス:低床タイプのPCBバイスで、はんだ付けやテスト、配線の際に基板を平らに保つのに適している。顕微鏡の下でも扱いやすい。
- PCBiteキット:ステンレス製のバネ式ジョーでPCBの端を挟み込む固定具。柔軟なアームこそないが、平らな机の上でPCBをしっかり固定してはんだ付け、取り外し、リワークを行うのに適している。
- ラジオペンチ:ブレッドボードに部品を挿したり、ピンを曲げたりするのに欠かせない。
- 斜めニッパー:PCBにはんだ付けした部品の脚を切りそろえるのに使う。コネクタやケーブルをつかんだり、こじ開けたりするのにも使える。
- フラッシュカッター:はんだ接合部のすぐ近くで、リード線をきれいに切るための道具。
- 保護メガネ:切ったリード線や溶けたはんだが飛んでくることがあるため、目を保護する。SparkFunの生産ラインでも使用している。
- モノクル(拡大鏡):PCB上のはんだ接合部やSMD部品を検査するのに便利。LEDが作業距離で十分な明るさを提供してくれる。
はじめてのはんだ付け
これらの道具を実際に使ってみよう。 基本のルールは次のとおりである。
- 熱いこてを扱うときは注意する
- サードハンドやバイスを使って、はんだ付け中は基板を固定する
- こての温度は適度な中温(325〜375℃)に設定する
- はんだから煙が出ているようなら、温度を下げる
- 接合部を準備するため、はんだ付けのたびにこて先にはんだを馴染ませておく(予備はんだ)
- こての先端そのものではなく、こての側面(スイートスポットと呼ばれる部分)を使う
- パッドとはんだ付けしたい部品の両方を、同時に均等に加熱する
- はんだを離してから、こてを離す
- よいはんだ接合は、ボールや塊ではなく、火山やハーシーのキスチョコレートのような形になる
次の図は、よいはんだ接合がどのようなものかを理解する助けになるはずである。
作業が終わったら、はんだごての電源を切る前に、こて先を予備はんだしておくと寿命が延びる。
コツと裏技
サードハンドを使う以外にも、部品を基板にはんだ付けする方法はいくつかある。 完璧なはんだ接合を作るために、状況に応じたさまざまな技法が必要になることもある。 いくつか追加のコツを紹介しよう。
テープや粘着タックで部品を固定する
テープや粘着タックがあれば、配線やヘッダーを基板に押さえつけておくのに使える。
シリコンや厚紙のかけらを断熱材として使う
部品を押さえておきたいが、熱くて指では触れられないという場合は、シリコンや厚紙のかけらを使って数秒間押さえておくとよい。
古いシールドや開発ボード、ブレッドボードを補助として使う
手がそれほど器用でない場合は、古いシールドや開発ボードを使ってヘッダーをはんだ付け前に位置合わせすることができる。 シールドやブレイクアウト基板がブレッドボードに収まる場合は、ブレッドボードを使ってピンを固定しながらはんだ付けすることもできる。 2列のヘッダーを持つ基板におすすめの方法だが、熱をかけすぎるとブレッドボードが溶けてしまうことがあるので注意すること。
グラウンドプレーンと大きなスルーホール
設計によっては、めっきスルーホールのパッドがグラウンドプレーンに接続されていたり、通常より大きかったりすることがある。 これらにはより多くの熱が必要である。 はんだが「くっついている」ように見えても、実際にはただ玉になって盛り上がっているだけということがある。 次のような対策が必要になる場合がある。
- より大きなこて先を使う
- はんだ付けステーションの温度をより高く(およそ380℃程度)設定する
- フラックスを追加する
- こてを接合部に少し長く当てておく
フラックスを足し、こてを少し長く当てておくと、たいていうまくいく。 出力の大きい、温度調整可能なはんだ付けステーションを使うと、冷たいものに触れたあとのこて先の温度回復が速くなる。 友人やもう1本のはんだごてがあれば、2本のこてで同時に接合部を温めるという方法もある。
高度な技法とトラブルシューティング
高度なPTH技法
よいはんだ接合の基本を身につけたら、より高度なPTHの技法を学ぶ番である。 フラックスの使い方、はんだブリッジの除去、部品の取り外しなどが含まれる。
PTHはんだ付けに関するそのほかのコツを紹介する。
- 取り外し(デソルダリング)は、はんだ付けを学ぶのに最適な方法であることが多い。修理、アップグレード、部品の再利用など、部品を取り外す理由はさまざまである。
- スルーホールからはんだを取り除くもうひとつの方法として、「スラップ法」と呼ばれる方法もある。
- 作ったはんだ接合が本当に電気的な接続を作っているか分からない場合は、テスターの導通モードを使って確認できる。
ヘッダーを基板に押さえつけて固定する
手先が器用であれば、ピンを基板に指で押さえつけながらヘッダーの列を取り付けることもできる。 先述のテープや粘着タックを使う方法も試してみてほしい。
ヘッダーを取り付ける際は、片手ではんだ付けする手を使い、もう片方の手の人差し指と親指でヘッダーを基板の端に向かって引き寄せ、中指で押さえながら固定する。 はんだごてが触れる予定のヘッダーピンには触れないように注意すること。
はんだ付けする手でこてを持ち、各ヘッダーにつき1本のピンを仮止めしていく。 すべてのヘッダーに1本ずつ仮止めが終わったら、ピンがまっすぐで基板に対して垂直になっているか確認する。 そうでなければ、ヘッダーピンを再加熱して位置を調整できる。
位置合わせができたら、残りのすべてのヘッダーピンをはんだ付けして完成させる。
高度なSMD技法
はんだごてだけでできる、より高度なテクニックについては、SMD部品のリワークに関する専用のチュートリアルも参考になる。
フラックスの残留物を洗浄する
鉛フリーはんだを扱っていると、はんだに含まれるフラックスや、作業者が外部から塗布したフラックスがあちこちに付着しがちである。 一部のフラックスは時間の経過とともにPCBや部品を腐食させることがあるため、フラックスの残留物を除去する洗浄方法を知っておくことが重要である。 これは、空気中の湿気によって微細な樹枝状の析出物ができ、ピン間に高抵抗の短絡を引き起こすこともある。
水溶性フラックスの残留物は、はんだ接合部やその周辺に黄色や茶色のコーティングとして現れることが多い。 ノークリーンフラックスは、基板上に白くベタついたものとして残ることが多いが、非導電性なので基板上に残しておいてもかまわない。
基板に水溶性フラックスの残留物がある場合は、除去する必要がある。 ノークリーンフラックスの場合は、基本的に除去は不要である。 水溶性フラックスを洗浄するもっとも簡単な方法は、毛先の硬い小さなブラシ(歯ブラシでもよい)や綿棒を使い、熱い純水ではんだ接合部をこすることである。 水の代わりにイソプロピルアルコールを使うこともできる。 ノークリーンフラックスをどうしても除去したい場合は、水ではなくイソプロピルアルコールを使うのが最善である。 使っているはんだのドキュメントを確認し、正しい洗浄方法を確かめること(アセトンが必要なフラックスもある)。
複数の基板をはんだ付けする場合は、まとめて洗浄する必要が出てくることもある。 その場合は、蒸留水を入れたスロークッカー(クロックポット)を使うことをおすすめする。 蒸留水を使えば、回路に不純物が付着するのを防げる。 ただし、すべての基板を水に浸けられるわけではないため、手作業で洗浄しなければならない場合もある。 熱い純水を満たしたスロークッカーがあれば、この作業を速く進められる。
水に濡れると困るセンサーや部品には十分注意すること。 特定の部品は水に弱いため、そうした基板を水に浸けたり濡らしたりしないように気をつけよう。 以下は水との接触を避けるべき部品の一例である。水がこれらの内部に入り込んだまま電源を入れると、部品を損傷する可能性が高い。
- キャラクターLCD
- 7セグメントLEDディスプレイ
- 電池
- GPSモジュール
- 無線モジュール
- 気圧センサー
- スライド式ポテンショメータ
- マイク
- スピーカー
- 心拍センサーIC
洗浄が終わったら、基板の余分な水分を取り除く。 エアダスターを使えば、自然乾燥を待たずに済む。 紙タオルで拭くこともできるが、繊維くずが残ることがあるため、リントフリーのワイプを使うほうがよい。 ヒートガンがあれば、それを使って基板を温めることもできるが、基板上の部品を溶かさないよう注意すること。
基板の洗浄は必須ではないが、回路の寿命を大きく伸ばしてくれる。 また、基板がきれいであれば、シリアル通信で送られるデータの信頼性も高まる。
はんだ接合のテストとトラブルシューティング
洗浄が終わったら、先ほど述べたとおり、テスターの導通モードではんだ接合を確認してみるとよい。 問題が起きて、あるピンが基板に正しくはんだ付けされているかを確認したいときに役立つ。
まとめ
はんだ付けの世界の入り口に立ったところである。 PTHはんだ付けを習得したら、次のようなスキルやチュートリアルにも挑戦してみてほしい。
- Electronics Troubleshooting(電子機器のトラブルシューティング)
- Electronics Assembly(電子部品の組み立て)
- SMD How To Soldering Series(SMDはんだ付けの実践シリーズ)
- Making Your Own Solder Paste Stencils(自作のはんだペーストステンシルの作り方)
- Solder Paste and Stenciling(はんだペーストとステンシル)
castellated(お城の縁のような形状の)取り付け穴をパッドにはんだ付けする方法については、専用のガイドも確認してほしい。 表面実装部品(SMD)をブレイクアウト基板にはんだ付けする方法についても、関連チュートリアルが参考になる。
タグ: スキル、はんだ付け、プロジェクトを始める、道具
出典:How to Solder: Through-Hole Soldering(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
電子部品の組み立て
SparkFunでは、電子機器を組み立てるにあたって、かなり型破りな方法を採用している。 DIYによるPCBA(プリント基板の組み立て)に取り組んできたこの10年間で得られたステップと教訓の一部をここにまとめた。 今では自宅の地下室でやるようなことではなくなった部分もあるが、私たちがどうやって(毎月8万個以上のガジェットを)作っているのか気になるなら、ぜひ読み進めてほしい。
まずは生産の最初の段階から見ていこう。 つまり、設計はすでに検証、試作、レビューを経て「赤い基板に進む」段階にある(緑色の試作基板が量産の準備が整うと、赤色でPCBを作る)ことを前提としている。 あとは実際に作るだけである。
電子工作にまったく初めて触れるなら、まずPCB基板の基礎を確認しておくとよい。
参考になるチュートリアル:
SparkFunでの電子部品の組み立ては、たいてい次の7つの工程を経る。
- ペーストステンシリング
- 部品の配置
- リフロー
- 手作業でのはんだ付け
- 検査とテスト
- 洗浄
- パッケージング
それでは、それぞれの工程を順番に見ていこう。
ステンシリング
はんだペーストのステンシリングは、Tシャツにシルクスクリーンで印刷するのとよく似ている。 インクを塗りたいものの上にマスクを重ねるのと同じように、私たちはPCB(プリント基板)の特定の部分にだけペーストを塗るために、金属製のステンシルを使う。
SparkFunでは、まずPCBパネルから作業を始める。 パネルとは、同じ設計を何枚も繰り返し並べた、扱いやすくするための大きな基板である。 この例では、EL Escudo Dosを16枚まとめている。 このような大きなパネルを使うのは、複数の基板を同時にステンシリングできるようにするためである。 もちろん、1枚ずつステンシリングすることも同じように可能である。
部品が乗る予定のそれぞれのパッドに、少量のはんだペーストを乗せていく。 この作業を速くするため、基板の上にステンシルを重ね、金属製のスキージーでステンシルの上からペーストを塗り広げる。
これが実際のはんだペーストの姿である。 金属合金の混合物であり、スズ(Sn)96.5%、銀(Ag)3%、銅(Cu)0.5%で構成されている。 たいていのペーストには使用期限があり、涼しい場所で保管する必要がある。 これは、ペーストの粘度を作り出すために金属に加えられているフラックスに関係している。 フラックスは、金属が液体になったときの表面張力を変化させ、接合部への流れ込みを助ける役割を持つ。
SparkFunでは鉛フリーのはんだペーストを使っているが、ヨーロッパで製品を販売する予定がないのであれば、鉛入りのペーストのほうが多少扱いやすく、失敗にも寛容である。
すべての基板はEagle PCBで設計している。 このソフトウェアは、PCBメーカーが実際の基板を作るために使うさまざまなレイヤーファイルを出力する。 このほかにも(表面用と裏面用の)2つのペーストレイヤーがあり、これをステンシル製造業者に送っている。 彼らは高出力のCO2レーザーを使い、薄いステンレス板からステンシルを切り出している。
ステンシリングは手作業でも行える。 ペーストをぐいっと塗りつけるのに魔法のようなコツがあるわけではない。 市販のパテナイフをそのまま使うことが多い。
SparkFunにはステンシリング用の機械もある。 機械を設定するのはかなり手間がかかるが、非常に大量(500個以上)に生産する場合には、ステンシリングがいくらか楽になる。
ピックアンドプレース
基板にペーストを塗り終えたら、その上に部品を配置していく。 これは手作業でも機械でも行える。 ピンセットを使うのは、部品を配置するのによい方法である。 電子機器を作るには大きくて高価な機械が必要だという思い込みがよくあるが、それは事実ではない。 人間は部品の配置がかなり速く、液体金属の表面張力のおかげで、たいていの部品はリフローの過程で正しい位置に収まっていく。 とはいえ、人間には体力の限界がある。 数時間もすると、部品を素早く配置するのが難しくなってくる。 部品の小ささは目にも負担をかける。
電子機器を作るのにピックアンドプレース機は必要ないが、大量の電子機器を作るにはピックアンドプレース機が必要になる。
SparkFunは、すべての部品を手作業で配置することから始まり、今もそれは変わっていない。 とはいえ、100個以上作る必要がある場合は、ピックアンドプレース機を使って大量の基板を組み立てている。
ピックアンドプレース(PNP)機とは、真空を使ってテープから部品を持ち上げ、正しい向きに回転させてから基板に配置する、ロボット式の組み立て装置である。 組み立てのために機械をセットアップするのには数時間かかるが、いったん動き出せば非常に速い。
大きな工場では、コンベアベルトが自動ペースト塗布機から直接ピックアンドプレース機へと基板を運ぶことが多いが、SparkFunでは生産フロアの中を基板を手作業で運んでいる。
リフロー
ピックアンドプレースのあとは、しっかりしたはんだ接合を作るためにペーストをリフローする必要がある。 基板はコンベアベルトに乗せられ、大きなオーブンの中をゆっくりと通過しながら、はんだを溶かすのに十分な熱(およそ250℃)にさらされる。 基板がオーブンの中を進むにつれて、さまざまな温度ゾーンを通過し、制御された速度で温度が上下する。
ペーストは、お皿にくっついたバターのように、ねばつく質感をしている。 基板がリフロー炉の中をゆっくり通過する間、部品はその場に固定されたままになる。
リフロー炉は、いわばピザ窯のようなものである。 基板の温度はおよそ250℃(約480°F)まで上げられ、その時点でペーストは液体状の金属に変わる。 基板がリフロー炉から出てくると急速に冷え、すべての部品がその場ではんだ付けされる。
DIYのトースターオーブンを使ったリフローの各段階の様子を見てみると分かりやすい。 最初は、さまざまなパッドの上に灰色のはんだペーストの小さな塊が見える。 このペーストはステンシルではなく手作業で塗られたものと思われるが、この程度の雑さがあとになってもさほど問題にならないことがすぐに分かるはずである。 やがて最初の節目が訪れる。ペースト内のフラックスがサラサラになり、水たまりのように広がり始める。 金属のはんだはまだ溶けていない。 そのあと、はんだが溶け始め、溶けたはんだの表面張力によって、パッドの中心にできるだけ小さな塊にまとまろうとする。
部品がリフローの過程でどれほど動かされるかも見て取れる。 一部の部品は位置がずれてしまい、あとでやり直しが必要になる。 とはいえ、この収縮して動こうとする性質のおかげで、わずかな位置ずれやはみ出したはんだは、たいてい自然と修正される。 ただし、非常に小さな部品では、片側だけが強く引っ張られると、部品が縦に立ち上がってしまうことがある。 これは「トゥームストーニング(墓石現象)」と呼ばれ、基板の機能的な不良の原因になる。
触っても冷たいこの基板には、すべてのSMD部品がPCBに完全にはんだ付けされている。 これで次の工程に進む準備が整った。
両面基板はどう作るのか
一部の組み立て品(たとえばArduino Fio)は、基板の両面に部品を持つ。 このような場合、まず部品数が少なく、部品も小さいほうの面にステンシリングとリフローを行う。 リフロー炉から出てきたら、反対側にもステンシリングと部品配置、リフローを行う。 金属の表面張力は非常に高く、すべてをその場に固定してくれる。 より複雑な組み立て品を扱う大規模な工場では、リフローの間に部品が動かないよう、ピックアンドプレースの段階で基板の各部を接着剤で固定することもある。
手作業でのはんだ付け
リフローのあと、技術者が基板を受け取り、PTH(めっきスルーホール)部品を手作業ではんだ付けする。 より大規模な生産施設では、スルーホール部品のはんだ付けに「波はんだ付け」と呼ばれる技法が使われることもある。 これは、溶けたはんだの定常波の上に基板を通過させ、部品のリード線や基板上の露出した金属にはんだを付着させる方法である。
SparkFunでは、設計や数量が非常に多岐にわたるため、できるだけ多くの部品をSMD(表面実装部品)に寄せ、PTH部品は手作業ではんだ付けするほうが効率的だと分かった。 生産フロアではHakko FX-888Dのはんだごてを使っている。 これは非常によく機能するが、より低価格なAtten 937bも、はんだ付けを始めたばかりの人にはちょうどよい。
検査とテスト
次の工程は光学検査である。 光学検査では、部品に関する問題(間違った抵抗値、コンデンサの欠品など)を見つけ出す。 AOI(自動光学検査)機は非常に高速で、ほぼリアルタイムに近い速度で動作する。 AOIは、異なる角度から複数の高性能カメラを使い、はんだ接続部(「フィレット」と呼ばれることもある)のさまざまな部分を確認する。 良好なはんだフィレットと不良なはんだフィレットとでは光の反射のしかたが異なるため、AOIは異なる色のLEDで照らしながら、すべての接続を高い精度と速度で検査している。
自分の基板にも光学検査が必要かというと、おそらくそうではない。 SparkFunでも、月に3万枚を超える基板を生産するようになり、すべてのエラーを見つけるのがだんだん難しくなってきてから、ようやく導入した。
たいていの基板は、自動光学検査(AOI)機に通される。 光学検査では、正しい部品が正しい位置に配置されているか、はんだフィレットが正しいか、隣接するピンの間にはんだブリッジがないかを確認する。
基板の検査が終わったら、次はそれが意図どおりに動作するかをテストする。
1枚の基板をテストするのに15秒かかると想像してみてほしい。 10枚テストするなら、およそ3分である。 1500枚だとしたら、6時間を超える気の遠くなるようなテスト作業になる。 私たちは、テスト手順とプログラムをできるだけ迅速にするために、多大な時間を費やしている。
この工程を速くするため、技術者たちは「ポゴベッド」と呼ばれることもあるテスト治具を使っている。 ポゴピンは、バネ仕掛けの先端を使って、基板上のさまざまな電源やデータのポイントに一時的な電気的接続を作る。 基板やパネルがポゴベッドに載せられると、基板が電気的に完全に機能しているかを確認するためのさまざまなテストが行われる。 これには、レギュレータの出力電圧のテスト、特定のピンで期待される電圧の確認、テスト対象の基板にさまざまなコマンドを送って正しく応答するかを確かめる作業などが含まれる。 プログラム書き込みや校正が必要な基板では、コードを書き込んで出力を検証する追加の手順も行われる。
より大規模な施設では、電源を入れる前に基板上のすべての接続の導通をテストするために、フライングプローブやベッドオブネイルズと呼ばれる治具が使われることもある。 これらのより大がかりな治具は、より複雑で高価な製品に向いているが、製作には数万ドルかかることも珍しくない。
洗浄
製造工程のさまざまな段階で、基板には残留物が残る。 SparkFunのはんだ付けキットを組み立てたことがあれば、はんだ付けによって基板にわずかなフラックスが残ることを知っているはずである。 数か月が経過すると、このフラックスの残留物はべたつき、見た目も悪くなり、わずかに酸性になってはんだ接合を弱めてしまうことがある。 これを防ぐため(そしてお客様に一番きれいな基板を届けるため)、SparkFunでは生産するすべての基板を洗浄している。
基板をきれいにするため、私たちは「食器洗い機」と呼んでいる装置にまとめて基板を入れる。 この高温かつ高圧のオールステンレス製食器洗い機は、脱イオン水を使って製造工程で付着した残留物を取り除く。
この洗浄機は閉じたループのシステムを採用している。 洗浄が終わると、排水はいったん洗浄機の下にある槽に集められ、自動的に電気伝導度がテストされる。 電気伝導度が非常に低ければ(つまり抵抗が非常に高ければ)、洗浄工程は完了しており、排水は非常に高品質なフィルターを通して再利用される。
そう、私たちは高価な電子機器を丸ごと水に浸けているのである。 秘密は水の種類にある。 脱イオン水は、イオンをまったく含まない非常に純粋な水である。 携帯電話をトイレに落としても壊れないのは水そのもののせいではなく、機器のさまざまな部分をショートさせるのはイオンのほうである。 DI水(脱イオン水)にはイオンが含まれていないため、実は人体にとってはかなり有害である。 DI水を扱うこと自体は安全だが、DI水を飲んでしまうと、体内に取り込む過程で体からイオンを奪ってしまい、深刻な害を及ぼすことがある。 DI水はイオンに対する「渇き」が非常に強いため(うまいことを言ったつもりである)、食器洗い機の内部はすべてステンレス製になっている。 他の金属ではあっという間に腐食してしまうだろう。
高価な洗浄機を持っていない場合はどうすればよいだろうか。 脱イオン水を入れた安価なスロークッカーと歯ブラシがあれば、十分にうまくいく。 数枚の基板だけを洗浄したいなら、イソプロピルアルコールを含ませた綿棒でもよく機能する。
扇風機や圧縮空気を使えば、残った水分をうまく取り除ける。
パッケージング
基板は、その旅の終わりに近づいている。
洗浄が終わり乾燥したバッチの基板は、パッケージング工程へと進み、それぞれの基板が個別にESD対応のプラスチックに熱圧着される。
ピッキングや注文の梱包作業をできるだけ速く行えるようにするため、すべての製品が出荷部門にとって「すぐ取り出せる」状態になるようにしている。 たいていの製品では、両端にバーコードラベルを付けた10個1組の連なりを作る。 このバーコードラベルには、製品名、SKU、そして問題が起きたときに追跡できるようにするためのバッチ識別子が含まれている。
製品の梱包が完全に終わると、出荷フロアへと送られる。 出荷される在庫を記録し、「仕掛品」の数量をすべて差し引き、新しい数量を店頭の在庫に加える。 そこから製品は、あなたの手元へと届くまったく新しい旅を始めることになる。 そのチュートリアルはまた別の機会に譲ろう。
まとめ
SparkFunでの電子機器の作り方を紹介した。 ここまで読んでくれたなら、次のようなチュートリアルもおすすめである。
タグ: 記事、はんだ付け、道具
出典:Electronics Assembly(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
PCB基板の基礎
電子工学における重要な概念のひとつが、プリント基板(PCB)である。 あまりにも基本的な存在であるため、PCBとはそもそも何なのかを説明することを忘れられがちである。 このチュートリアルでは、PCBがどのように構成されているか、そしてPCBの世界でよく使われる用語のいくつかを解説する。
これから、プリント基板の構成、用語、組み立て方法、そして新しいPCBを設計する際の設計プロセスについて簡単に紹介していく。
参考になるチュートリアル:
始める前に、このチュートリアルが前提としているいくつかの概念について読んでおくとよい。
PCBとは何か
プリント基板(printed circuit board)というのがもっとも一般的な呼び方だが、「プリント配線板」や「プリント配線カード」と呼ばれることもある。 PCBが登場する以前、回路は配線を1本ずつ手作業でつなぐ、非常に手間のかかるポイントツーポイント配線という方法で作られていた。 このため、配線の接合部でよく故障が起きたり、被覆が経年劣化してひび割れると短絡(ショート)が起きたりしていた。
大きな進歩となったのがワイヤーラッピングの登場である。 これは、細い配線を各接続点のピンに文字どおり巻きつける方法で、気密性が高く、非常に丈夫でありながら簡単に配線をやり直せる接続を作り出せた。
電子機器が真空管やリレーからシリコンや集積回路へと移り変わるにつれて、電子部品の大きさとコストは低下し始めた。 電子機器が消費者向け製品に広く使われるようになると、電子製品の小型化と製造コスト削減への圧力から、メーカーはより優れた解決策を模索するようになった。 こうして生まれたのがPCBである。
PCBとはprinted circuit board(プリント基板)の略である。 これは、さまざまな地点どうしをつなぐ配線パターンとパッドを備えた基板である。 上の写真では、配線パターン(トレース)がさまざまなコネクタや部品を電気的に接続している。 PCBを使うことで、物理的な部品間で信号や電力をやり取りできる。 はんだは、PCBの表面と電子部品の間に電気的な接続を作る金属である。 金属であるはんだは、強力な機械的接着剤としての役割も果たす。
構成
PCBは、いわば層状のケーキやラザニアのようなもので、異なる材料の層が熱と接着剤によって積層され、ひとつの物体としてまとめられている。
中心から外側に向かって順番に見ていこう。
FR4
基材、つまり土台となる素材には、たいていガラス繊維が使われる。 このガラス繊維の呼び名として歴史的にもっとも一般的なのが「FR4」である。 この固い芯材が、PCBに剛性と厚みを与えている。 Kapton(あるいは同等品)のような柔軟な耐熱プラスチックの上に作られた、柔軟なPCBもある。
PCBの厚さにはさまざまな種類があり、SparkFun製品でもっとも一般的な厚さは1.6mm(0.063インチ)である。 一部の製品(LilyPad基板やArduino Pro Micro基板など)では、0.8mm厚の基板が使われている。
より安価なPCBやパーフボード(穴あき基板)には、エポキシ樹脂やフェノール樹脂のような、FR4ほどの耐久性はないがずっと安価な素材が使われることがある。 このタイプの基板にはんだ付けをすると、非常に特徴的な嫌な臭いがするため、すぐに見分けがつく。 このような基材は、低価格帯の家電製品でもよく見られる。 フェノール樹脂は熱分解温度が低いため、はんだごてを基板に長く当てすぎると、層が剥離したり、煙が出たり、焦げたりすることがある。
銅
次の層は薄い銅箔であり、熱と接着剤によって基材に積層される。 一般的な両面PCBでは、基材の両面に銅が貼られる。 より低コストな電子機器では、片面にしか銅が貼られていないPCBが使われることもある。 両面基板や2層基板と呼ぶとき、それはこのラザニアの中にある銅の層の数(2層)を指している。 これは1層だけのこともあれば、16層以上に及ぶこともある。
銅の厚さはさまざまだが、1平方フィートあたりのオンス数で規定される。 たいていのPCBは1平方フィートあたり1オンスの銅を使っているが、非常に大きな電力を扱うPCBでは2オンスや3オンスの銅が使われることもある。 1平方フィートあたり1オンスは、およそ35マイクロメートル(0.0014インチ)の銅の厚さに相当する。
ソルダーマスク
銅箔の上に重ねられる層は、ソルダーマスク層と呼ばれる。 この層が、PCBに緑色(あるいはSparkFunの場合は赤色)を与えている。 これは銅の層の上に重ねられ、銅の配線パターンが他の金属やはんだ、導電性のものにうっかり触れてしまわないよう絶縁する役割を持つ。 この層のおかげで、使う人は正しい場所にはんだ付けしやすくなり、意図しないはんだブリッジを防げる。
下の例では、緑色のソルダーマスクがPCBの大部分に施され、細い配線パターンを覆い隠しつつ、はんだ付けできるように銀色のリングやSMDパッドの部分だけを露出させている。
ソルダーマスクにもっともよく使われる色は緑だが、ほぼどんな色でも可能である。 SparkFunではほぼすべての基板に赤を、IOIO基板には白を、LilyPad基板には紫を使っている。
シルクスクリーン
白いシルクスクリーン層は、ソルダーマスク層の上にさらに重ねられる。 シルクスクリーンは、PCBに文字、数字、記号を印刷し、組み立てをしやすくしたり、人間が基板を理解しやすくしたりする役割を持つ。 それぞれのピンやLEDの機能を示すために、シルクスクリーンのラベルがよく使われる。
シルクスクリーンにもっともよく使われる色は白だが、どんなインクの色でも使うことができる。 黒、灰色、赤、さらには黄色のシルクスクリーンも広く使われているが、1枚の基板の上に複数の色を使うのはあまり一般的ではない。
用語集
PCBの構造についてのイメージがつかめたところで、PCBを扱う際によく耳にする用語をいくつか定義しておこう。
- アニュラーリング:PCB上のめっきされたスルーホールの周りにある銅のリング。
- DRC:デザインルールチェック。誤って接触している配線パターン、細すぎる配線パターン、小さすぎる穴など、設計上のエラーがないかを確認するソフトウェアによる検査。
- ドリルヒット:設計上で穴をあけるべき場所、あるいは実際に基板上に穴があけられた場所のこと。切れ味の悪いドリルビットによる不正確なドリルヒットは、製造上よくある問題である。
- フィンガー:基板の端に沿って露出した金属パッドで、2枚の基板の間を接続するために使われる。よくある例として、コンピュータの拡張基板やメモリ基板、古いカートリッジ式ビデオゲームの端の部分がある。
- マウスバイト:パネルから基板を切り離すための、Vスコアに代わる手法。多数のドリルヒットを近くに密集させることで、あとから簡単に折り取れる弱い部分を作り出す。SparkFunのProtoSnap基板がよい例である。
- パッド:部品をはんだ付けするための、基板表面に露出した金属部分。
- パネル:使用前に切り離す、多数の小さな基板をまとめたより大きな基板。自動化された基板取り扱い装置は小さな基板をうまく扱えないことが多いため、複数の基板を一度にまとめることで工程を大幅に速められる。
- ペーストステンシル:基板の上に重ねる薄い金属(あるいはプラスチック)製のステンシルで、組み立ての際に特定の場所にはんだペーストを塗布できるようにする。
- ピックアンドプレース:基板に部品を配置するための機械、あるいはその工程のこと。
- プレーン:経路ではなく境界線によって定義される、基板上の連続した銅の塊。「ポア(pour)」とも呼ばれる。
- めっきスルーホール:アニュラーリングを持ち、基板を貫通してめっきされた穴。スルーホール部品の接続点、信号を通すためのビア、あるいは取り付け穴として使われる。
- ポゴピン:テストやプログラム書き込みのために一時的な接続を作る、バネ仕掛けの接点。
- リフロー:パッドと部品のリード線の間にはんだ接合を作るために、はんだを溶かすこと。
- シルクスクリーン:基板上の文字、数字、記号、図柄のこと。たいてい1色しか使えず、解像度も比較的低い。
- スロット:基板上にある、丸くない穴のこと。めっきされている場合もされていない場合もある。切り抜きに余分な時間がかかるため、基板のコストを押し上げる要因になることがある。
- はんだペースト:ジェル状の媒体の中に小さなはんだの粒を分散させたもので、部品を配置する前に、ペーストステンシルを使ってPCBの表面実装用パッドに塗布する。リフローの過程で、ペースト内のはんだが溶け、パッドと部品の間に電気的にも機械的にも接合を作り出す。
- はんだポット:スルーホール部品を使った基板を素早く手作業ではんだ付けするための容器。少量の溶けたはんだが入っており、そこに基板を素早く浸すことで、露出したすべてのパッドにはんだ接合を作る。
- ソルダーマスク:短絡、腐食、その他の問題を防ぐために金属の上に敷かれる保護材料の層。たいてい緑色だが、他の色(SparkFunの赤、Arduinoの青、Appleの黒など)も可能である。「レジスト」と呼ばれることもある。
- はんだブリッジ:基板上の部品の隣接する2本のピンをつなぐ、小さなはんだの塊。設計によっては、2つのパッドやピンをあえて接続するために使われることもあるが、意図しない短絡の原因になることもある。
- 表面実装:部品のリード線を基板の穴に通す必要がなく、基板の上にそのまま置くだけで済む実装方式。現在もっとも主流の組み立て方法であり、基板への部品実装を素早く簡単に行える。
- サーマル:パッドをプレーンに接続するための小さな配線パターン。パッドが適切にサーマルリリーフされていないと、良好なはんだ接合を作るのに十分な温度までパッドを上げるのが難しくなる。適切にサーマルリリーフされていないパッドは、はんだ付けしようとすると「ねばつく」ように感じられ、リフローに異常に長い時間がかかる。
- 銅箔ハッチング(thieving):プレーンや配線パターンが存在しない基板上の領域に残される、格子状の網目や点状の銅。エッチング液に浸す時間を短縮でき、不要な銅を取り除く作業が楽になる。
- トレース(配線パターン):基板上の連続した銅の経路。
- Vスコア:基板に入れる部分的な切り込みで、その線に沿って基板を簡単に折り取れるようにする。
- ビア:ある層から別の層へ信号を通すために基板にあけられた穴。テンテッドビアはソルダーマスクで覆われ、はんだ付けされてしまわないよう保護されている。コネクタや部品を取り付けるビアは、簡単にはんだ付けできるよう、たいていテントされていない(覆われていない)。
- 波はんだ付け:スルーホール部品を使った基板に使われるはんだ付け方法で、基板を溶けたはんだの定常波の上に通過させ、露出したパッドや部品のリード線にはんだを付着させる。
自分でPCBを設計する
自分でPCBを設計するには、どうすればよいのだろうか。 PCB設計の細部はここで語り尽くせるものではないが、本当に始めてみたいなら、次のようなポイントを押さえておこう。
- CADソフトを見つける。市場には低価格または無料のPCB設計用ソフトウェアが数多くある。ソフトウェアを選ぶ際に考慮すべき点は次のとおりである。
- コミュニティの充実度:そのソフトウェアを使っている人は多いか。使っている人が多いほど、必要な部品のライブラリがすでに用意されている可能性が高くなる。
- 使いやすさ:使うのが苦痛であれば、結局使わなくなってしまう。
- 機能面での制約:一部のソフトウェアは、レイヤー数、部品数、基板サイズなどに制限を設けている。たいていはライセンス料を払うことで機能を拡張できる。
- 移植性:無料のソフトウェアの中には、設計データのエクスポートや変換を許可しておらず、特定の1社にしか発注できなくなるものもある。それが利便性や価格に見合った代償かどうかは、場合によるだろう。
- 他の人の基板レイアウトを見て、どのように設計されているかを参考にする。オープンソースハードウェアのおかげで、これはかつてないほど簡単になっている。
- とにかく練習を重ねる。
- 期待しすぎないこと。最初に設計する基板には、たくさんの問題があるはずである。20枚目の基板になれば問題は減るだろうが、それでもいくつかは残る。問題を完全になくすことは決してできない。
- 回路図は重要である。しっかりした回路図を用意せずに基板を設計しようとするのは、徒労に終わる試みである。
最後に、自分で基板を設計することの有用性について触れておこう。 あるプロジェクトを2枚以上作る予定があるなら、基板を設計する見返りはかなり大きい。 プロトボード上でポイントツーポイント配線をするのは面倒であり、専用に設計された基板に比べて壊れやすい傾向がある。 また、その設計が人気を博せば、それを販売することもできる。
まとめ
PCBはほんの入り口にすぎない。 ここからさらに、次のようなチュートリアルを探求していくことをおすすめする。
- はんだ付けの基本(スルーホール編)
- 回路図の読み方
- PCB設計ツールEagleの使い方
- How to layout PTH PCBs: Schematic(スルーホールPCBのレイアウト:回路図編)
- How to layout PTH PCBs: Board Layout(スルーホールPCBのレイアウト:基板レイアウト編)
- Creating SMD Footprints(SMDフットプリントの作成)
- Creating SMD PCBs(SMD PCBの作成)
- 電子部品の組み立て
自分のPCB作品を世界に発信したいなら、次のようなチュートリアルも確認してみてほしい(いずれも英語)。
タグ: 概念、電気工学、ProtoSnap
出典:PCB Basics(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
PCB設計ツールEagleの使い方
プリント基板(PCB)は、あらゆる電子ガジェットの背骨とも言える存在である。 マイクロプロセッサのような華やかさはなく、抵抗器のようにありふれてもいないが、回路の中のすべての部品を正しくつなぎ合わせるためには欠かせない存在である。
SparkFunでは、PCBの設計が大好きである。 その愛を広めたいと思っている。 これは、あらゆるレベルの電子工作愛好家にとって役立つスキルである。 このチュートリアルとそれに続くシリーズでは、私たちがすべてのPCBを設計するのに使っているのと同じソフトウェアであるEAGLEを使って、PCBを設計する方法を解説していく。
この最初のチュートリアルでは、ソフトウェアのインストール方法と、インターフェースやサポートファイルを自分好みに調整する方法を扱う。
なぜEAGLEなのか
EAGLEは、数あるPCB CADソフトウェアのひとつにすぎない。 では「EAGLEの何がそんなに特別なのか」と思うかもしれない。 私たちが特にEAGLEを気に入っている理由は、次のとおりである。
- クロスプラットフォーム:EAGLEはWindows、Mac、さらにはLinuxまで、あらゆる環境で動作する。これは、他の多くのPCB設計ソフトウェアにはあまりない特徴である。
- 軽量:EAGLEは、PCB設計ソフトウェアの中でもかなりスリムな部類に入る。必要なディスク容量はおよそ50〜200MB程度である(より高度なツールでは10GB以上必要になることもある)。インストーラー自体もおよそ25MBしかない。そのため、ダウンロードからインストール、実際にPCBを作り始めるまで、あっという間である。
- 無料または低コスト:EAGLEのフリーウェア版は、SparkFunのカタログにあるほぼすべてのPCBを設計できるだけの機能を備えている。上位のライセンスにアップグレードする場合(自分の設計で利益を得たい場合)も、多くのハイエンドツールに比べて2桁は安く済む。
- コミュニティのサポート:こうした理由から、EAGLEはホビイストのコミュニティにおけるPCB設計の定番ツールのひとつになっている。Arduino基板の設計を研究したい場合でも、人気のセンサーを自分の設計に取り込みたい場合でも、たいてい誰かがすでにEAGLEでそれを作り、共有してくれている。
もちろん、EAGLEにも弱点はある。 より高機能なPCB設計ツールの中には、より優れた自動配線機能や、シミュレータ、プログラマー、3Dビューアといった気の利いた道具を備えたものもある。 とはいえ私たちにとっては、EAGLEは初級から中級レベルのPCBを設計するのに必要なものをすべて備えている。 これまでPCBを設計したことがないなら、始めるのにうってつけのツールである。
参考になるチュートリアル:
この沼にはまる前に、次のようなチュートリアルや概念に慣れておくとよい。
ダウンロード、インストール、起動
EAGLEはAutodeskから提供されており、Fusion 360ソフトウェアパッケージの一部として、あるいはEAGLE単体の無料版として入手できる。 自分のOSに合ったバージョンを入手しよう(Windows、Mac、Linux向けが用意されている)。 ダウンロードサイズは比較的軽く、およそ125MBほどである。
EAGLEのインストールは、たいていのソフトウェアと同じである。 ダウンロードされるのは実行ファイルであり、それを開いてインストール手順に従うだけでよい。
EAGLEのライセンスについて
EAGLEのお気に入りの点のひとつは、無料で使えるということである。 無料版はホビイスト向けの制限付きバージョンで、個人が個人的かつ非営利の目的で利用できる「パーソナルラーニングライセンス」となっている。 無料版を使う際に知っておくべき制限がいくつかある。
- PCBの設計面積は最大80cm²(12.4平方インチ)までに制限されているが、これでもかなり大きい。大きめのArduinoシールドを設計する場合でも、余裕でこの上限を下回るはずである。
- 使用できる信号層は2層まで。それ以上のレイヤーが必要な場合は、シングルユーザーのFusion 360ライセンスへのアップグレードを検討するとよい。
- 回路図エディタで使えるシートは2枚まで。
- パーソナルラーニングライセンスは、個人による個人的かつ非営利の利用に限られる。自分の設計を販売するつもりであれば、Fusion 360ライセンスに含まれるシングルユーザーEAGLEライセンスを確認する必要がある。
こうした制限があっても、EAGLEは依然として素晴らしいソフトウェアである。 SparkFunのエンジニアたちも、あの非営利という制約さえなければ、フリーウェア版だけで自分たちの基板の99%を設計できるだろう。 自動配線機能を含め、EAGLEソフトウェアのすべての機能に無料版でもアクセスできる。
コントロールパネルを探索する
初めてEAGLEを開くと、コントロールパネルという画面が表示されるはずである。 コントロールパネルはEAGLEの「本拠地」であり、ソフトウェア内の他のすべてのモジュールをここから開くことができる。
コントロールパネルには6つのツリーがあり、それぞれソフトウェアの異なる機能を表している。
- ライブラリ:ライブラリには部品が保存されている。部品とは、回路図記号とPCBフットプリントの組み合わせのことである。ライブラリにはたいてい関連する部品のグループが含まれており、たとえば
atmel.lbrにはAtmel社のAVRデバイスが数多く収められており、74xx-us.lbrライブラリにはほぼすべてのTTL 74xxシリーズのICが収められている。 - デザインルール(DRU):デザインルールとは、基板の設計データを製造業者に送る前に満たしておくべき一連のルールである。このツリーには、あらかじめ定義されたルールの集合であるDRUファイルが収められている。
- ユーザー言語プログラム(ULP):ULPは、EAGLEのユーザー言語で書かれたスクリプトである。部品表の生成(
bom.ulp)や、画像のインポート(import-bmp.ulp)といった作業を自動化するのに使える。 - スクリプト(SCR):スクリプトファイルは、EAGLEのユーザーインターフェースをカスタマイズするのに使える。ワンクリックで配色やキー割り当てを設定できる。
- CAMジョブ(CAM):CAMジョブは、ガーバーファイルの作成を助けるCAMプロセッサで開くことができる。
- プロジェクト:それぞれのプロジェクトが1つのプロジェクトフォルダにまとめられている場所である。プロジェクトには回路図、基板設計、場合によってはガーバーファイルが含まれる。
ツリーの中のファイルを選択すると、ウィンドウの右側にそのファイルについての情報が表示される。 これは、ライブラリやプロジェクトの設計例(EAGLEには楽しいサンプルがいくつか同梱されている)を探索したり、スクリプトの目的を大まかに把握したりするのに便利な方法である。
SparkFunのライブラリを使う
EAGLEには、コントロールパネルから確認できる充実した部品ライブラリのリストが同梱されている。 何百ものライブラリがあり、抵抗器やNPNトランジスタのような特定の部品に特化したものもあれば、特定のメーカーに特化したものもある。 これは素晴らしいリソースだが、少々圧倒されてしまうこともある。 単純なスルーホール型の電解コンデンサを1つ追加したいだけでも、正しいものを見つけるために何十ものライブラリや部品をふるいにかける必要がある。
デフォルトの何百ものライブラリを使う代わりに、SparkFun EAGLEライブラリを使うという方法もある。 これは、SparkFun自身の設計で実際に使用した部品だけに絞り込んだライブラリであり、新しく見つけた部品が発見されるたびに継続的に更新されている。
デフォルトのライブラリの代わりに(あるいは追加で)SparkFunのライブラリをインストールして使う方法を紹介する。
ステップ1:SparkFunライブラリをダウンロードする
最新版のライブラリは、常にGitHubリポジトリで公開されている。 GitHubの使い方について助けが必要な場合は、Using GitHubのチュートリアルを参考にしてほしい。 基本的には、リポジトリのメインページで**「Download ZIP」をクリックする**だけでよい。
ZIPファイルを分かりやすい場所に保存し、フォルダを展開する(場所を忘れないように)。
ステップ2:ディレクトリウィンドウを更新する
EAGLEのコントロールパネルウィンドウに戻り、「Options」メニューから**「Directories」を選択する**。 これは、EAGLEがライブラリを含む6つのツリーの内容を表示する際に参照する、コンピュータ上のディレクトリの一覧である。
「Libraries」ボックスに、SparkFun EAGLEライブラリが保存されているディレクトリへのリンクを追加する。 デフォルトのライブラリを残したままSparkFunのライブラリを追加したい場合は、「$EAGLEDIR\lbr」の後ろにセミコロン(;)を追加し、その後にSparkFun EAGLEライブラリのディレクトリのパスを貼り付ける。
Note
MacとLinuxのユーザーは、セミコロンの代わりにコロン(:)でディレクトリを区切ること。
ステップ3:ライブラリを「使用する」
コントロールパネルの「Libraries」ツリーに戻ると、2つのフォルダが表示されているはずで、そのうちの1つがSparkFun EAGLEライブラリになっているはずである。 最後の手順は、(少なくとも今のところは)デフォルトのライブラリを使わないようEAGLEに伝えることである。 そのためには、「lbr」フォルダを右クリックし、「Use none」 を選択する。
次に、「SparkFun-Eagle-Libraries-master」フォルダを右クリックし、「Use all」 を選択する。 それぞれのフォルダ内のライブラリを確認すると、隣に灰色または緑色の点が表示されているはずである。 緑色の点はそのライブラリが使用中であることを、灰色の点は使用されていないことを示す。
自分で作ったライブラリの部品をSparkFunのEAGLEライブラリに追加してもらいたい場合は、専用のチュートリアルを参照してほしい。
プロジェクトを開いて探索する
EAGLEには、いくつかの気の利いたPCB設計のサンプルが同梱されている。 「Projects」ツリーを展開し、そこから「examples」フォルダの中の「arduino」プロジェクトを、赤いフォルダをダブルクリックして開いてみよう(あるいは右クリックして「Open project」を選択する)。 この画面では、プロジェクトフォルダは赤色で、通常のフォルダは標準の黄色で表示されることに注意してほしい。
プロジェクトを開くと、さらに2つのEAGLEウィンドウが立ち上がるはずである。基板エディタと回路図エディタである。 これらはEAGLEにおける陰と陽のような関係にあり、機能するPCB設計という完成品を作るために、両方を組み合わせて使う必要がある。
回路図エディタ(上の画像の左側)は、緑色のネット(配線)で相互に接続された、赤色の回路記号の集まりである。 プロジェクトの回路図は、プログラムのコードにおけるコメントのようなものである。 その基板設計が実際に何をするのかを説明するのに役立つが、最終製品そのものにはあまり影響を与えない。 回路図の中の部品は正確な寸法で配置されているわけではなく、あなたや他の人がその基板設計で何が起きているかを理解しやすいように、読みやすい形で配置され、接続されている。
基板エディタでは、実際の魔法が起きる。 ここでは色分けされた層が重なり合い、交差しながら、正確な寸法のPCB設計が作られていく。 2つの銅層(上が赤、下が青)は、異なる信号どうしが交差してショートしないよう、戦略的に配線される。 黄色い円(この設計では黄色だが、たいていは緑色)は「ビア」と呼ばれ、信号を片面からもう片面へと通す役割を持つ。 より大きなビアは、スルーホール部品を挿入してはんだ付けできるようにするためのものである。 このほかにも、現時点では隠れている層があり、部品をはんだ付けできるように銅を露出させている。
両方のウィンドウを開いたままにしておくこと
これら2つのウィンドウは、互いに連携して動作する。 回路図に加えた変更は、自動的に基板エディタにも反映される。 設計を修正する際は、常に両方のウィンドウを開いたままにしておくことが重要である。
たとえば、基板ウィンドウを閉じたまま回路図を修正し続けたとしよう。 回路図に加えた変更は、基板設計には反映されない。 これはよくない事態である。 回路図と基板設計は、常に一致していなければならない。 あとから整合性を取り戻そうとして変更をさかのぼるのは、非常に骨の折れる作業である。 常に両方のウィンドウを開いたままにしておこう。
ウィンドウ間の整合性が取れていないかどうかを見分ける方法がいくつかある。 まず、両方のウィンドウの右下隅に「ドット」がある。 このドットが緑色であれば問題ない。 マゼンタ色であれば、閉じるべきでないウィンドウが閉じられている可能性が高い。 もうひとつ、より分かりやすいサインとして、どちらか一方のウィンドウを閉じると、もう一方に大きな警告が表示される。 この警告が表示されたら、すぐに作業を止めて、閉じてしまったウィンドウを開き直そう。 基板エディタや回路図エディタのウィンドウを再度開く簡単な方法は、「Switch to board/schematic」アイコンをクリックすることである(「File」メニューの中にもある)。
画面の操作方法
見過ごされがちな話題だが、これら2つのウィンドウの中をどう操作するかを知っておくことは重要である。
エディタウィンドウの中を移動するには、スクロールホイール付きのマウスが非常に役立つ。 ホイールを前後に回すことで拡大したり縮小したりできる。 ホイールを押し込んだままマウスを動かすと、画面をドラッグして動かせる。 3ボタンマウスがない場合は、表示オプションを使ってエディタ内を移動する必要がある。 これらのツールはツールバー上部の中央付近、あるいは「View」メニューの中にある。 拡大や縮小のツールはもちろん便利であり、選択範囲に合わせて表示を変える「Zoom select」ツールも便利である。 とはいえ、本気でEAGLEを使うつもりなら、やはりマウスを用意することをおすすめする。
UIを設定する
EAGLEのユーザーインターフェースは非常に細かくカスタマイズできる。 背景色からレイヤーの色、キー割り当てまで、好みに合わせて変更できる。 インターフェースを自分好みに調整しておくと、PCBの設計がずっと楽になる。 ここでは、SparkFunで好んで行っているUIのカスタマイズ方法を紹介する。 これらの手順は必須ではなく、自分の好みに合わせてUIをカスタマイズしてかまわない。 あくまで私たちが慣れ親しんでいる設定にすぎない。
背景色を設定する
私たちがいつも最初に行うUIの調整は、基板エディタの背景色である。 標準の白い背景は、基板設計に必要なさまざまな色のレイヤーとあまり相性がよくないことが多い。 そのため、たいてい黒い背景を選んでいる。
背景色を変更するには、「Options」メニューから「User interface」を選択する。 「Layout」ボックスの中で、背景を黒、白、あるいは特定の色に設定できる。 このボックスには他にも設定項目があるが、ソフトウェアにもう少し慣れるまでは、あまり手を加えないほうがよいかもしれない。
グリッドを調整する
基板エディタでもうひとつよく行うUI改善が、グリッドを表示することである。 PCB設計では寸法とサイズが非常に重要であるため、サイズを視覚的に確認できる目印があると非常に役立つ。 グリッド表示を有効にするには、基板ウィンドウの左上付近にあるアイコンをクリックする(あるいは「View」メニューから「Grid」を選択する)。
「Display」のラジオボタンを「On」に切り替える。 また、「Size」を100mil(0.1インチ)、「Alt」を50mil(0.05インチ)に設定して、グリッドの目を少し粗くしておくとよい。
スクリプトを実行する
スクリプトを使えば、インターフェースをもっと手早く設定できる。 ボタンを1回クリックするだけで、色やキー割り当てをすべて自動的に設定できる。 スクリプトファイルは共有することもでき、誰でも実行できる。 SparkFunのEAGLEスクリプトを実行すれば、私たちとまったく同じUIになる。
まず、専用のスクリプト(ZIPフォルダに入っている)をダウンロードする。
spk.scrファイルを、あとで分かりやすい場所に展開する。
次に、そのスクリプトを実行する。
基板ウィンドウでScriptアイコンをクリックする(あるいは「File」から「Execute Script」を選択する)。
ファイルブラウザで、先ほどダウンロードして展開したspk.scrファイルを選択する。
これで、次のような配色に自動的に設定されるはずである。
このUI設定は、レイヤーを見やすく論理的に表示してくれる。 重要な銅の層は非常に見やすく、かつ区別しやすい色になっており(上が赤、下が青、ビアが緑)、シルクスクリーンはたいていのPCB設計と同じように白になっている。
これらの色分けされたレイヤーの意味は、EAGLEを使い続けて探索していくうちに、より理解が深まっていくはずである。
SparkFunのカスタムEagle設定
SparkFunの最新のスクリプトやその他の便利なファイルは、GitHub上のEAGLE設定リポジトリで公開されている。
まとめ
EAGLEのセットアップが終わり、いよいよPCBの設計を始めたくてうずうずしているなら、次はEAGLEの使い方を扱う2部構成のチュートリアル、Using EAGLE: SchematicとUsing EAGLE: Board Layoutに進むとよい。 この2つのチュートリアルでは、回路図の設計から、基板のレイアウトと配線、ガーバーファイルの生成、製造業者への送付までの流れを説明している。
このほかにも、EAGLEシリーズの次のようなチュートリアルがある(いずれも英語)。
- How to Create SMD PCBs(SMD PCBの作り方):論理的にはPTH(スルーホール)のEAGLEチュートリアルの次に読むとよい内容である。もう少し高度で、テンポも速い。
- How to Create SMD Footprints(SMDフットプリントの作り方):ライブラリの中に独自の部品を作りたい場合は、このチュートリアルを確認してほしい。
- Making Custom Footprints in EAGLE(EAGLEでカスタムフットプリントを作る):もうひとつのフットプリント作成チュートリアルで、独自の1:1フットプリントを作るための特有の手順を詳しく解説している。
タグ: Eagle、スキル、プロジェクトを始める
出典:How to Install and Setup EAGLE(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
Arduinoとは何か
Arduinoは、電子工作プロジェクトを作るためのオープンソースのプラットフォームである。 Arduinoは、物理的にプログラム可能な回路基板(しばしばマイクロコントローラと呼ばれる)と、パソコン上で動作するソフトウェア(統合開発環境、IDE)の2つから構成される。 このソフトウェアを使って、コードを書き、それを実際の基板に書き込む。
Arduinoプラットフォームは、電子工作を始めたばかりの人たちの間で非常に人気があり、それには理由がある。 これまでのプログラム可能な回路基板の多くとは異なり、Arduinoは新しいコードを基板に書き込むのに別売りの専用機器(プログラマー)を必要としない。USBケーブルを使うだけでよい。 さらに、Arduino IDEはC++を簡略化したような言語を使うため、プログラミングを学ぶのが簡単である。 そして最後に、Arduinoはマイクロコントローラの機能を扱いやすい形に引き出した、標準的なフォームファクタを提供している。
Unoは、Arduinoファミリーの中でも特に人気の高い基板であり、初心者にとってすばらしい選択肢である。 Unoに何が載っているか、それで何ができるかについては、このチュートリアルの後半で説明する。
信じられないかもしれないが、Arduino基板上のLEDを点滅させるには、わずか10行ほどのコードで十分である。 今の時点ではコードの意味が完全には分からなくても心配は要らない。 このチュートリアルと、このサイトに用意されている数多くのArduino関連チュートリアルを読み進めていけば、あっという間に理解できるようになるはずである。
このチュートリアルで扱う内容:
- Arduinoで実現できるプロジェクトにはどのようなものがあるか
- 一般的なArduino基板に何が載っているか、そしてそれがなぜ必要か
- Arduino基板のさまざまな種類
- Arduinoとあわせて使うと便利な部品
参考になるチュートリアル:
Arduinoは、あらゆるスキルレベルの人にとってすばらしい道具である。 とはいえ、基本的な電子工学の知識をあらかじめ理解しておくと、Arduinoでの学習がずっと楽しくなる。 Arduinoのすばらしい世界に飛び込む前に、少なくとも次のような概念をある程度理解しておくことをおすすめする。
Arduinoで何ができるのか
Arduinoのハードウェアとソフトウェアは、アーティスト、デザイナー、趣味人、ハッカー、初心者、そしてインタラクティブなモノや空間を作りたいと考えるあらゆる人のために設計されている。 Arduinoは、ボタン、LED、モーター、スピーカー、GPSユニット、カメラ、インターネット、さらにはスマートフォンやテレビとまでやり取りできる。 この柔軟性に加え、Arduinoのソフトウェアが無料であること、ハードウェア基板が手頃な価格であること、ソフトウェアとハードウェアの両方が学びやすいことから、非常に大きなユーザーコミュニティが生まれ、Arduinoを使った実に多種多様なプロジェクトのコードや作り方が公開されてきた。
ロボットや、暖かい手袋型のヒーティングパッド、正直すぎる占いマシン、さらにはダイスを振るガントレット型のデバイスまで、Arduinoはほぼどんな電子工作プロジェクトの頭脳としても使うことができる。
これはまだほんの入り口にすぎない。 Arduinoを使ったプロジェクトの例をもっと見てみたいなら、次のようなリソースが参考になる。
- Instructables
- Arduino Playground
- The ITP Physical Computing Wiki
- LadyAda
- Make: Projects
- もちろん、learn.sparkfun.comにも数多くのArduinoチュートリアルが用意されている
基板には何が載っているのか
Arduino基板にはさまざまな種類があり(異なる用途に応じて使い分けられる)、下の写真とは見た目が少し異なるものもあるが、たいていのArduinoは次のような部品の大部分を共通して備えている。
電源(USB/バレルジャック)
すべてのArduino基板には、電源に接続する何らかの方法が必要である。 Arduino UNOは、パソコンから伸びるUSBケーブルからでも、バレルジャックで終端された壁面電源からでも電源を取ることができる。 上の写真では、USB接続が**(1)、バレルジャックが(2)**とラベル付けされている。
USB接続は、Arduino基板にコードを書き込む手段でもある。
注記: 20ボルトを超える電源は絶対に使用しないこと。Arduinoに過大な電圧がかかり、破損してしまう。たいていのArduinoモデルで推奨される電圧は6〜12ボルトである。
ピン(5V、3.3V、GND、アナログ、デジタル、PWM、AREF)
Arduinoのピンは、回路を組み立てるために配線を接続する場所である(たいていブレッドボードや配線と組み合わせて使う)。 たいてい黒いプラスチックの「ヘッダー」が付いており、配線をそのまま差し込むだけで接続できる。 Arduinoにはいくつかの種類のピンがあり、それぞれ基板上にラベルが付けられ、異なる機能を持つ。
- GND (3):「グラウンド(Ground)」の略。Arduinoには複数のGNDピンがあり、どれを使って回路をグラウンドに接続してもよい。
- 5V (4) と 3.3V (5):想像どおり、5Vピンは5ボルトの電力を、3.3Vピンは3.3ボルトの電力を供給する。Arduinoと組み合わせて使う単純な部品の多くは、5Vまたは3.3Vで問題なく動作する。
- アナログ (6):「Analog In」というラベルの下にあるピン(UNOではA0からA5まで)はアナログ入力ピンである。これらのピンは、温度センサーのようなアナログセンサーからの信号を読み取り、コード側で扱えるデジタルの値に変換できる。
- デジタル (7):アナログピンの反対側にあるのがデジタルピン(UNOでは0番から13番まで)である。これらのピンは、ボタンが押されたかどうかを調べるデジタル入力にも、LEDを点灯させるデジタル出力にも使える。
- PWM (8):一部のデジタルピン(UNOでは3、5、6、9、10、11番)の横にチルダ(~)が付いていることに気づいたかもしれない。これらのピンは通常のデジタルピンとしても使えるが、パルス幅変調(PWM)と呼ばれる機能にも使える。今のところは、これらのピンがアナログ出力のようなふるまい(LEDを徐々に明るくしたり暗くしたりするなど)をシミュレートできる、と考えておけばよい。
- AREF (9):アナログリファレンス(基準電圧)の略。たいていの場合、このピンには手を触れなくてよい。アナログ入力ピンの上限として、外部の基準電圧(0〜5ボルトの間)を設定するために使われることがある。
リセットボタン
Arduinoにはリセットボタン**(10)**が付いている。 これを押すと、リセットピンが一時的にグラウンドに接続され、Arduinoに書き込まれているコードが再起動する。 コードが繰り返し実行されない場合でも、何度もテストしたいときにとても便利な機能である。
電源LEDインジケーター
回路基板の「UNO」という文字の下、少し右側に、「ON」という文字の横に小さなLED**(11)**がある。 このLEDは、Arduinoを電源に接続すると点灯するはずである。 もしこのランプが点灯しなければ、何かがおかしい可能性が高い。回路をもう一度確認してみよう。
TXとRXのLED
TXは送信(transmit)、RXは受信(receive)の略である。 これらの表記は電子工学の世界でよく見かけるもので、シリアル通信を担当するピンを示している。 Arduino UNOでは、TXとRXの表記はデジタルピンの0番と1番の横、そしてTXとRXのインジケーターLED**(12)**の横という2か所に現れる。 これらのLEDは、Arduinoがデータを受信または送信しているとき(新しいプログラムを基板に書き込んでいるときなど)に、視覚的な手がかりを与えてくれる。
メインIC
金属製の脚がたくさん付いた黒い部品が、IC(集積回路)**(13)**である。 これはArduinoの頭脳だと考えればよい。 Arduinoに搭載されているメインICは基板の種類によって多少異なるが、たいていATMEL社のATmegaシリーズのICが使われている。 新しいプログラムをArduinoソフトウェアから書き込む前に、基板の種類とあわせてICの種類を知っておく必要がある場合があるため、この点は覚えておくとよい。 この情報はたいていICの上面に印字されている。
電圧レギュレータ
電圧レギュレータ**(14)**は、Arduino上で実際に操作する部品ではないが、それが何のためにそこにあるのかを知っておくとよい。 電圧レギュレータは、その名のとおり、Arduino基板に取り込む電圧の大きさを制御している。 一種の門番のようなもので、回路を傷める恐れのある過大な電圧をはじいてくれる。 もちろん限界はあるので、20ボルトを超える電源をArduinoに接続してはいけない。
Arduinoファミリー
Arduinoにはさまざまな基板があり、それぞれ異なる能力を持っている。 また、オープンソースハードウェアであることの利点として、他の人々がArduino基板を改造したり派生版を作ったりすることで、さらに多くのフォームファクタや機能が生まれている。 Arduinoの世界に入ったばかりの人に向いている選択肢をいくつか紹介する。
Arduino Uno (R3)
Unoは、最初のArduinoとしてすばらしい選択肢である。 始めるのに必要なものはすべて揃っており、余計なものは何もない。 14本のデジタル入出力ピン(うち6本はPWM出力として使える)、6本のアナログ入力、USB接続、電源ジャック、リセットボタンなどを備えている。 マイクロコントローラを動かすために必要なものはすべて内蔵されており、USBケーブルでパソコンに接続するか、AC-DCアダプタや電池で電源を供給するだけで使い始められる。
LilyPad Arduino
これはLilyPad Arduinoのメイン基板である。 LilyPadは、Leah Buechleyによって開発され、LeahとSparkFunが共同で設計したウェアラブルなe-テキスタイル技術である。 それぞれのLilyPadは、大きな接続パッドと平らな背面を持つように工夫されており、導電糸を使って布に縫い付けることができる。 LilyPadには、e-テキスタイル専用に作られた入力、出力、電源、センサー用の基板ファミリーもある。 水洗いすらできるものもある。
RedBoard
SparkFunでは数多くのArduinoを使っており、常にもっともシンプルで安定した基板を探し求めている。 どの基板も少しずつ違い、私たちが求めるすべての機能を備えたものはなかったため、お気に入りの機能をすべて組み合わせた独自バージョンを作ることにした。
RedBoardは、Arduino IDEを使ってUSB Mini-Bケーブル経由でプログラムできる。 Windows 8でもセキュリティ設定を変更する必要なく動作する(UNOとは異なり、署名済みのドライバーを使っているため)。 使用しているUSB/FTDIチップのおかげで安定性が高く、背面が完全に平らなためプロジェクトへの組み込みも簡単である。 基板を接続し、ボードメニューから「Arduino UNO」を選ぶだけでコードを書き込む準備が整う。 RedBoardはUSB経由でもバレルジャック経由でも電源を供給でき、基板上の電源レギュレータは7〜15VDCの範囲に対応している。
Arduino Mega (R3)
Arduino Megaは、いわばUNOの兄貴分である。 非常に多くの(なんと54本もの)デジタル入出力ピン(うち14本はPWM出力として使える)、16本のアナログ入力、USB接続、電源ジャック、リセットボタンを備えている。 マイクロコントローラを動かすために必要なものはすべて内蔵されており、USBケーブルでパソコンに接続するか、AC-DCアダプタや電池で電源を供給するだけで使い始められる。 ピンの数が多いため、大量のデジタル入出力を必要とするプロジェクト(多数のLEDやボタンを使うものなど)にとても便利である。
Arduino Leonardo
Leonardoは、USB機能を内蔵した単一のマイクロコントローラを採用した、Arduinoとして初めての開発ボードである。 これにより、より安価でシンプルな構成が可能になった。 また、基板自体がUSBを直接処理するため、コンピュータのキーボードやマウスなどをエミュレートできるコードライブラリも利用できる。
Arduinoを拡張する仲間たち
Arduino基板そのものは見た目こそかっこいいが、単体ではあまり多くのことができない。何かと組み合わせる必要がある。 このサイトには数多くのチュートリアルが用意されているが、Arduinoに簡単に組み合わせられる一般的な種類のものについてはあまり語られてこなかった。 このセクションでは、プロジェクトに命を吹き込むためのもっとも便利な道具として、基本的なセンサーとArduinoのシールドを紹介する。
センサー
簡単なコードを書くだけで、Arduinoは実に多種多様なセンサーを制御し、やり取りできるようになる。 光、温度、曲げ具合、圧力、近接、加速度、一酸化炭素、放射線、湿度、気圧など、あらゆるものを測定できるセンサーが存在する。
シールド
さらに、シールドと呼ばれるものもある。 これは基本的に、Arduinoの上に重ねて装着できる、あらかじめ作られた回路基板であり、モーターの制御、インターネットへの接続、セルラー通信やその他の無線通信、LCD画面の制御など、さまざまな追加機能を提供してくれる。
シールドについてさらに詳しく知りたい場合は、次のようなリソースを参照してほしい。
- ShieldList.org
- ShieldStravaganza!!!(SparkFunが扱うシールドを簡単に紹介する動画シリーズ)
まとめ
これでArduinoファミリーについて、プロジェクトにどの基板を使えばよいか、そしてプロジェクトをさらに一歩進めるためのセンサーやシールドが数多く存在することが分かったはずである。 Arduinoについてさらに詳しく知りたいなら、次のようなチュートリアルもおすすめである(いずれも英語)。
- Choosing an Arduino for Your Project(プロジェクトに合ったArduinoの選び方):多種多様なArduino基板の世界を概観し、プロジェクトに合わせて基板を選ぶ前に知っておくべき違いを解説する。
- Installing Arduino IDE(Arduino IDEのインストール):Windows、Mac、Linuxのそれぞれで、Arduinoのソフトウェアをインストールし、動作確認するまでの手順を紹介する。
- Data Types in Arduino(Arduinoにおけるデータ型):Arduinoのプログラミング環境でよく使われるデータ型と、その意味を学べる。
ハードウェア関連のチュートリアルとしては、次のようなものもおすすめである。
タグ: Arduino、シールド、プロジェクトを始める、技術
出典:What is an Arduino?(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
加速度センサーの基礎
加速度センサー(アクセロメータ)とは、物体の速度がどれだけの割合で変化しているかを表す加速度を測定する装置である。 単位は毎秒毎秒メートル(m/s²)、あるいはG(重力加速度)で表される。 地球上での1Gは9.8m/s²に相当するが、これは標高によってわずかに変化する(また、重力の強さが異なる他の惑星では値も変わってくる)。 加速度センサーは、システムの振動を検知したり、姿勢を検出したりする用途に役立つ。
参考になるチュートリアル:
以下の話題に馴染みがなければ、加速度センサーに進む前に目を通しておくとよい。
加速度センサーの仕組み
加速度センサーは、静的または動的な加速度の力を検知する電気機械式の装置である。 静的な力には重力があり、動的な力には振動や動きなどがある。
加速度センサーは1軸、2軸、あるいは3軸の加速度を測定できる。 開発コストが下がるにつれて、3軸タイプが一般的になりつつある。
一般に、加速度センサーは内部に静電容量式のプレートを持っている。 一部のプレートは固定されており、他のプレートは非常に小さなバネに取り付けられ、加速度の力がセンサーに加わると内部で動くようになっている。 これらのプレートが互いに動くと、その間の静電容量が変化する。 この静電容量の変化から、加速度を求めることができる。
このほかに、圧電材料を中心に構成された加速度センサーもある。 これらの小さな結晶構造は、機械的な力(加速度など)が加わると電荷を出力する。
加速度センサーの接続方法
たいていの加速度センサーでは、動作に必要な基本的な接続は電源と通信線である。 いつものように、正しく接続するためにデータシートを確認すること。
通信インターフェース
加速度センサーは、アナログ、デジタル、あるいはパルス幅変調のいずれかの接続インターフェースで通信する。
- アナログ:アナログインターフェースを持つ加速度センサーは、電圧レベルの変化を通じて加速度を示す。この値はたいてい、グラウンドと供給電圧の間で変動する。マイクロコントローラのADCを使えば、この値を読み取ることができる。これらはたいてい、デジタル式の加速度センサーよりも安価である。
- デジタル:デジタルインターフェースを持つ加速度センサーは、SPIまたはI2Cの通信プロトコルで通信する。これらはたいてい、アナログ式の加速度センサーよりも機能が豊富で、ノイズの影響を受けにくい。
- パルス幅変調(PWM):パルス幅変調でデータを出力する加速度センサーは、周期は一定だが、加速度の変化に応じてデューティ比が変化する矩形波を出力する。
電源
加速度センサーは一般に低消費電力の装置である。 必要な電流はたいていマイクロ(µ)アンペアからミリアンペアの範囲に収まり、供給電圧は5V以下であることが多い。 消費電流は設定(省電力モードか通常動作モードかなど)によって変わる。 こうした複数の動作モードがあることから、加速度センサーは電池駆動の用途にも適している。
特にデジタルインターフェースを使う場合は、適切なロジックレベルが一致しているかを必ず確認すること。
加速度センサーの選び方
どの加速度センサーを使うかを選ぶ際には、先に述べた消費電力や通信インターフェースをはじめ、いくつかの重要な特徴を考慮する必要がある。 このほかに考慮すべき特徴を以下に挙げる。
測定範囲
たいていの加速度センサーには、測定できる力の範囲を選択できるようになっている。 この範囲は±1gから±250gまでさまざまである。 一般に、範囲が小さいほど、加速度センサーの読み取り値の感度は高くなる。 たとえば、テーブルの上の小さな振動を測定したい場合、250gレンジ(ロケットの測定などに向いている)よりも、小さいレンジの加速度センサーを使うほうが詳細なデータが得られる。
そのほかの機能
加速度センサーの中には、タップ検出(低消費電力用途に便利)、自由落下検出(ハードディスクの衝撃保護機能に使われる)、温度補償(デッドレコニングの精度向上に役立つ)、0g検出といった機能を備えたものもあり、購入時に考慮すべき点となる。 こうした機能が必要かどうかは、加速度センサーを組み込むアプリケーションの用途によって決まる。
また、加速度センサーだけでなく、ジャイロセンサー、さらには磁力センサーまでも1つのICパッケージや基板にまとめたIMU(慣性計測装置)というものもある。 その例として、MPU6050やMPU9150が挙げられる。 これらは、物体の位置や姿勢が重要になるモーショントラッキングの用途や、UAV(無人航空機)の誘導システムなどでよく使われている。
まとめ
これで、自分のプロジェクトに加速度センサーを組み込むために必要な基本的な道具とスキルが身についたはずである。
加速度センサーについてさらに学びたいなら、次のようなチュートリアルも確認してみてほしい(いずれも英語)。
- Accelerometer Buying Guide(加速度センサー購入ガイド)
- MMA8452Q Accelerometer Breakout Hookup Guide(MMA8452Q加速度センサーブレイクアウトの使い方)
- The Uncertain 7-Cube(不確かな7面サイコロ)
- Das Blinken Top Hat(光るシルクハット)
タグ: 概念、モーション、センサー、技術
出典:Accelerometer Basics(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
ジャイロスコープとは何か
ジャイロスコープ(略してジャイロ)とは、回転運動を測定したり、維持したりする装置である。 MEMS(微小電気機械システム)ジャイロは、角速度を測定する小型で安価なセンサーである。 角速度の単位は、1秒あたりの角度(°/s)や1秒あたりの回転数(RPS)で表される。 角速度とは、単純に回転の速さを測ったものである。
ブレイクアウトボードに搭載されたLPY503ジャイロ。
上の写真のようなジャイロは、姿勢を判断するために使われ、ほとんどの自律航法システムに搭載されている。 たとえばロボットのバランスを取りたい場合、ジャイロスコープを使ってバランスの取れた姿勢からの回転を測定し、モーターへ補正指令を送ることができる。 SparkFunのカタログにある、いくつかの製品も確認してみてほしい。
このチュートリアルで扱う概念
このチュートリアルを読み進める前に、なじみのない概念があれば、次のトピックに目を通しておくとよい。
ジャイロの仕組み
物体がある軸を中心に回転しているとき、それには角速度と呼ばれる量がある。 回転する車輪は、1秒あたりの回転数(RPS)や1秒あたりの角度(°/s)で測定できる。
以下のジャイロのz軸が、車輪の回転軸と一致していることに注目してほしい。
上の図のようにセンサーを車輪に取り付ければ、ジャイロのz軸まわりの角速度を測定できる。 他の2つの軸では回転は測定されない。
車輪が1秒間に1回転すると想像してみよう。 その角速度は1秒あたり360度になる。 車輪の回転方向も重要な要素である。軸を中心に時計回りなのか、反時計回りなのかということである。
上の図に写っているような3軸のMEMSジャイロスコープ(ITG-3200など)は、x軸、y軸、z軸という3つの軸まわりの回転を測定できる。 ジャイロには単軸や2軸のものもあるが、1つのチップに収まった3軸ジャイロは、年々小型化と低価格化が進み、普及しつつある。
ジャイロは、それほど速く回転していない物体にもよく使われる。 航空機は(願わくば)回転はしないが、代わりに各軸でわずかに数度ずつ姿勢が傾く。 ジャイロはこのようなわずかな変化を検知することで、航空機の飛行を安定させる助けになる。 また、航空機の加速度や直線方向の速度は、ジャイロの測定値に影響しないことにも注意してほしい。 ジャイロが測定するのは、あくまで角速度だけである。
では、MEMSジャイロは、どうやって角速度を検知しているのだろうか。
MEMSジャイロセンサーの内部の動作を示した図。
MEMSの中にあるジャイロスコープのセンサーは非常に小さく(1〜100マイクロメートル程度で、人間の髪の毛ほどの大きさである)。 ジャイロが回転すると、角速度の変化に応じて、内部の小さな共振質量体(レゾネーター)がわずかに動く。 この動きは非常に微弱な電流の電気信号に変換され、増幅されてホストのマイコンによって読み取られる。
ジャイロの接続方法
ジャイロを使うために必要な主なハードウェア接続は、電源と通信インターフェースである。 仕様や接続例についての詳しい情報は、必ずセンサーのデータシートを参照してほしい。
通信インターフェース
ジャイロにはデジタルインターフェースとアナログインターフェースのいずれかが搭載されている。
デジタルインターフェースを持つジャイロは、通常SPIまたはI2C通信プロトコルのいずれかを使用する。 これらのインターフェースを使えば、ホストのマイコンに簡単に接続できる。 デジタルインターフェースの制約の1つが、最大サンプルレートである。 I2Cの最大サンプルレートは400Hzである。 一方でSPIは、はるかに高いサンプルレートを実現できる。
アナログインターフェースを持つジャイロは、回転速度を、通常はグラウンドと供給電圧の間で変化する電圧として表す。 マイコンのADCを使えば、この信号を読み取ることができる。 アナログジャイロは、アナログ信号の読み取り方によっては、より安価で、時にはより高精度になることもある。
電源
MEMSジャイロは、一般に低消費電力の部品である。 動作電流はmA、時にはμAのオーダーである。 ジャイロの供給電圧は、通常5V以下である。 デジタルジャイロには、ロジック電圧を選択できるものや、供給電圧のまま動作するものがある。 デジタルインターフェースを使う場合は、必ず5Vラインどうし、3.3Vラインどうしを接続するようにすること。 また、デジタルインターフェースを持つジャイロには低消費電力モードやスリープモードが備わっているものがあり、バッテリー駆動のアプリケーションで使いやすくなっている。 これは、アナログジャイロに対する利点になることがある。
ジャイロの選び方
どの種類のジャイロを使うべきかを判断する際に考慮すべき仕様は数多くある。 ここでは、特に重要でよく使われるものをいくつか紹介する。
レンジ(測定範囲)
測定範囲、つまりフルスケールレンジとは、そのジャイロが読み取れる最大の角速度のことである。 自分が何を測定したいのかを考えてみてほしい。 レコードプレーヤーのような非常に遅い回転を測定したいのか、それとも非常に速く回転する車輪を測定したいのか、ということである。
感度
感度は、1秒あたりの角度に対するmV数(mV/°/s)で表される。 この見慣れない単位に戸惑う必要はない。 これは、与えられた角速度に対して出力電圧がどれだけ変化するかを示す値である。 たとえば、あるジャイロの感度が30mV/°/sと指定されており、出力に300mVの変化が見られた場合、そのジャイロは10°/sで回転させられたことになる。
覚えておくとよい原則がある。感度が上がるほど、レンジは狭くなる。 たとえば、LPY503ジャイロのデータシートや、レンジを選択できる他のジャイロのデータシートを見てみるとよい。
レンジが大きくなるほど感度は低下し、得られる分解能も小さくなることが分かる。
バイアス
どんなセンサーでも、測定値にはある程度の誤差やバイアスが含まれる。 ジャイロが静止しているときの出力を測定すれば、このバイアスを確認できる。 静止しているときは0°が出力されると思うかもしれないが、実際には常にわずかにゼロからずれた誤差が出力される。 この誤差は、バイアスドリフトやバイアス不安定性と呼ばれることもある。 センサーの温度は、このバイアスに大きな影響を与える。 この誤差の原因を最小限に抑えるため、ほとんどのジャイロには温度センサーが内蔵されている。 これにより、センサーの温度を読み取り、温度に依存する変化を補正できるようになっている。 こうした誤差を補正するには、ジャイロを較正する必要がある。 これは通常、ジャイロを静止させた状態にして、コード上ですべての読み取り値をゼロ点に合わせることで行われる。
さらに学ぶために
ここまで読めば、ジャイロの仕組みが理解でき、自分のプロジェクトでジャイロを使い始めるための土台ができたはずである。
ジャイロを使った次のようなチュートリアルも確認してみてほしい(いずれも英語)。
- Analog Gyro + Arduino(アナログジャイロとArduino)
- Gyro Buying Guide(ジャイロの選び方ガイド)
- Balancing Robot(バランスを取るロボット)
タグ: 概念、センサー、技術
出典:Gyroscope(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
GPSの基礎
GPSの基本
おそらく誰もが、GPS受信機を使ったり、その恩恵を受けたりしたことがあるだろう。 GPSはほとんどのスマートフォンや多くの新しい自動車に搭載されており、世界中の物流の追跡にも利用されている。 この小さな装置は、地球上のほぼどこにいても、瞬時に無料で正確な位置情報と時刻を教えてくれる。 必要なのはGPS受信機だけであり、しかも受信機は日に日に安く小さくなっている。
一般的なGPS受信機、あるいはGPSモジュール。
このように小さく安価なモジュールを、当たり前のものだと思わないでほしい。 いつでもどこでも正確な位置を提供できるようになるまでには、何十年にもわたる工学の積み重ねがある。 1970年代後半から、非常に正確な原子時計を搭載したGPS衛星が数十機打ち上げられ、現在も打ち上げは続いている。 これらの衛星は、専用の無線周波数を使って絶えずデータを地球に送り続けている。 私たちのポケットサイズのGPS受信機は、小さなプロセッサとアンテナを使って衛星から送られてくるデータを直接受信し、その場で位置と時刻を計算している。 実に驚くべきことである。
参考になるチュートリアル
このチュートリアルは、いくつかの概念の上に成り立っている。 始める前に、次のトピックを知っておくとよい。
- ロジックレベル
- コネクタの基礎
- 2進数(設定の項で使用する)
- シリアル通信:パケット、信号レベル、ボーレート、UARTなど、非同期シリアル通信の概念を扱う。
- シリアルターミナルの基礎:さまざまなターミナルエミュレータアプリケーションを使って、シリアル機器と通信する方法を紹介する。
GPSはどうやって動作するのか
GPS受信機は、衛星と地上局からなる測位システムを利用して、地球上のほぼどこでも位置と時刻を計算する。
地球上を動く点と、見える衛星の数に注目してほしい。
どの瞬間においても、地球の上空12,000マイル以上を周回する、少なくとも24機の稼働中の衛星が存在する。 これらの衛星の配置は、地球上のどの地点からでも、上空に常に最大12機の衛星が見えるように設計されている。 見える12機の衛星の主な役割は、無線周波数(1.1〜1.5GHz程度)を使って地球へ情報を送信することである。 この情報といくらかの計算があれば、地上の受信機であるGPSモジュールは、自分の位置と時刻を計算できる。
GPS受信機はどうやって位置と時刻を計算するのか
それぞれの衛星から地球に送られるデータには、GPS受信機が位置と時刻を正確に計算するために必要な、いくつかの情報が含まれている。 各GPS衛星に搭載されている重要な機器の1つが、非常に正確な原子時計である。 原子時計の時刻は、その衛星の軌道上の位置や、空の中でのさまざまな地点への到達時刻とともに、地球へ送信される。 言い換えれば、GPSモジュールは見えている衛星それぞれからタイムスタンプを受信し、あわせて各衛星が空のどこに位置しているかというデータ(その他のデータとともに)も受信する。 この情報から、GPS受信機は見えている各衛星までの距離を知ることができる。 GPS受信機のアンテナが少なくとも4機の衛星を捉えられれば、正確な位置と時刻を計算できる。 これはロック(lock)あるいはフィックス(fix)とも呼ばれる。
ここまでの内容をすべて理解できただろうか。 もし理解できなかった場合や、さらに詳しく知りたい場合は、Dan Doberstein著『GPS Fundamentals』の第1巻に、はるかに詳細な説明が載っている。 第1巻は無料で公開されているが、第2巻を読むには著者を支援する必要がある。
コントロールセグメントを描いたイラスト。
測位システムには、もう1つ説明していない要素がある。 衛星とGPS受信機に加えて、衛星ネットワークや一部のGPS受信機と通信できる地上局が存在する。 このシステムは正式にはコントロールセグメントと呼ばれ、GPS受信機の精度を向上させる役割を持つ。 コントロールセグメントを利用して精度を高める一般的なシステムには、WAASやDGPSがある。 WAASはほとんどのGPS受信機で利用でき、精度をおよそ5メートルまで向上させる。 DGPSは特定の種類のGPS受信機を必要とし、センチメートル単位の精度が得られる。 DGPSの機器は追加のアンテナが必要になるため、高価で大型になりがちである。
GPSの精度
GPSの精度は、信号対雑音比(受信ノイズ)、衛星の位置、天候、建物や山などの障害物といった、さまざまな要因に左右される。 これらの要因は、実際の位置とのずれを生み出す。 信号ノイズは通常、1〜10メートル程度の誤差を生む。 山や建物など、受信機と衛星の間を遮る障害物は、信号ノイズの3倍もの誤差を生むことがある。 GPS受信機が位置を計算するには、4機の衛星をロックできなければならない。 最初のロックによって受信機はアルマナック情報を取得し、その後どの衛星を探せばよいかが分かるようになる。 4機未満の衛星からでも位置を得ることは可能だが、その場合の誤差はかなり大きくなりうる。 もっとも正確な位置情報が得られるのは、障害物のない開けた空が見え、かつ4機を超える衛星が見えている場合である。 このような誤差に対処するため、いくつかの補助的な仕組みが作られてきた。
アシステッドGPS
その補助的な仕組みの1つが、Assisted GPS、通称AGPSである。 この方式は、GPS信号が弱い場合や受信できない場合に、衛星と受信機の間を中継するために無線の地上ネットワークを利用する。 AGPSが役立つ方法は2つある。 1つ目は、受信機に正しいアルマナックデータと正確な時刻を提供することである。 2つ目は、地上局の高い計算能力と良好な衛星信号を利用して、受信機が受け取った断片的な情報を補完し、より正確な位置情報を提供することである。 AGPSは主に、携帯電話の基地局に搭載されたGPS受信機によって実現されている。 これらの受信機と通信することで、GPSはより速く衛星をロックでき、より正確な情報も得られる。 この方式は携帯電話のGPSで使われており、単体のGPS受信機よりも正確になることがある理由でもある。 とはいえAGPSは携帯電話だけでなく、カメラや一部の車両など、より多くの機器にも搭載されている。 特に、建物が密集した都市部でGPS信号が届きにくい状況で効果を発揮する。
ディファレンシャルGPS
もう1つの方式が、Differential GPS、通称DGPSである。 DGPSも地上の固定GPS局を使って位置を求める点はAGPSと同じだが、衛星からの読み取り値と地上局での読み取り値の差分を求める点が異なる。 これらの地上局は受信機から最大200海里ほど離れていることがあり、地上局から離れるほど精度が落ちる点に注意が必要である。 DGPSでは、実際の疑似距離(pseudorange)と測定された疑似距離との誤差を示す信号を、地上局が送信することで実現されている。 この値は、光速に、衛星から受信機まで信号が伝わるのにかかった時間を掛け合わせることで計算される。 一例として、DGPSの一種にWide Area Augmentation System、通称WAASがある。
(画像提供:ASMA)
もともとFAA(アメリカ連邦航空局)によって航空機のGPSを補助するために開発されたWAASは、専用に建てられた地上局のネットワークを利用する。 WAASには、地上局の測定値が満たすべき、明確な精度基準が定められている。 水平方向と垂直方向のいずれについても、WAASは95%の確率で7.6メートル以内の精度を保証しなければならない。 これらの地上局は測定値をマスターステーションに送り、マスターステーションは5秒ごと、あるいはそれより短い間隔でWAAS衛星に補正情報を送る。 衛星から地上の受信機へ信号が送信され、その補正情報を使ってGPSの精度が向上する。 場所によっては、WAASは水平方向1メートル、垂直方向1.5メートルという精度を実現できる。 WAASは北米地域だけのシステムだが、世界の他の地域にも同様の仕組みが存在する。
Note
さらに精度を高める技術を探しているなら、GPS RTKについてのチュートリアルを確認してほしい。GPS RTKとは何か。最新世代のGPS受信機やGNSS受信機を使って、14mmの位置精度を実現する方法を学べる。
メッセージフォーマット
GPSのデータは、シリアルインターフェースを通じて、さまざまなメッセージフォーマットで出力される。 標準的なフォーマットと、非標準(独自仕様)のフォーマットが存在する。 ほとんどすべてのGPS受信機はNMEA形式のデータを出力する。 NMEA規格は、センテンスと呼ばれるデータの行で構成される。 それぞれのセンテンスには、カンマ区切り形式(つまりデータがカンマで区切られている形式)で、さまざまなデータが含まれている。 以下は、衛星をロックしている(4機以上の衛星が見えており、正確な位置が得られている)GPS受信機から得られる、NMEAセンテンスの例である。
$GPRMC,235316.000,A,4003.9040,N,10512.5792,W,0.09,144.75,141112,,*19
$GPGGA,235317.000,4003.9039,N,10512.5793,W,1,08,1.6,1577.9,M,-20.7,M,,0000*5F
$GPGSA,A,3,22,18,21,06,03,09,24,15,,,,,2.5,1.6,1.9*3E
たとえばGPGGAセンテンスには、次のような情報が含まれる。
- 時刻:235317.000は、グリニッジ標準時で23時53分17.000秒を表す
- 緯度:4003.9040,Nは度.10進分形式の緯度で、北緯を表す
- 経度:10512.5792,Wは度.10進分形式の経度で、西経を表す
- 見えている衛星の数:08
- 高度:1577メートル
このデータがカンマで区切られているのは、コンピュータやマイコンが読み取ったり解析したりしやすくするためである。 このデータは、更新レートと呼ばれる間隔でシリアルポートに送信される。 ほとんどの受信機は1秒に1回(1Hz)この情報を更新するが、より高性能な受信機は1秒間に複数回更新できる。 最新の受信機では5〜20Hzでの更新も可能である。
GPSデータの読み取り
ほとんどのGPSモジュールにはシリアルポートが搭載されており、マイコンやパソコンへの接続に適している。
マイコンへの接続
EM-506 GPSおよびGP-735 GPSとGPS Breakout。
GPSモジュールに電源が入ると、ロックの有無にかかわらず、シリアル送信ピン(TX)から特定のボーレートと更新レートでNMEAデータ(あるいは別のメッセージフォーマット)が出力される。 マイコンにNMEAデータを読み取らせるには、GPSのTXピンをマイコンのRX(受信)ピンに接続するだけでよい。 GPSモジュールを設定するには、GPSのRXピンもマイコンのTXピンに接続する必要がある。
マイコン側でNMEAデータを解析(パース)するのが一般的である。 パースとは、NMEAセンテンスから必要なデータの塊を取り出し、マイコンがそのデータを使って何らかの処理を行えるようにすることである。
たとえば、マイコンがGPSの高度だけを読み取りたい場合を考えてみよう。
$GPGGA,235317.000,4003.9039,N,10512.5793,W,1,08,1.6,1577.9,M,-20.7,M,,0000*5F
このテキスト全体を扱う代わりに、マイコンはGPGGAセンテンスを解析して、高度(メートル単位)だけを取り出せる。
1577
必要なデータをマイコンが取得できるようになれば、その情報を使ってマイコン上でさまざまな処理を行える。
Arduinoは、Tiny GPSライブラリの助けを借りることで、NMEAデータを簡単に解析できる。 ArduinoとGPSモジュールを接続してNMEAセンテンスを解析する手順を実際に確認したい場合は、GPS Shield Getting Started Guideを参照してほしい。
パソコンへの接続
NMEAデータを直接確認する簡単な方法は、GPSモジュールをパソコンに接続することである。 配線としては、FTDI Basicを使ってGPSに電源を供給し(この場合は5VとGND)、GPSのTXピンをFTDI BasicのRXピンに接続するだけでよい。
EM-506 GPS、GPS Breakout、5V FTDI Breakoutの接続。GP-735 GPSでも同様に接続できる。
次に、GPSモジュールと同じボーレートでシリアルターミナルプログラムを開く。 GPSがロックしていなくても、NMEAセンテンスが次々と流れてくるのが見えるはずである。
$GPRMC,235316.000,A,4003.9040,N,10512.5792,W,0.09,144.75,141112,,*19
$GPGGA,235317.000,4003.9039,N,10512.5793,W,1,08,1.6,1577.9,M,-20.7,M,,0000*5F
$GPGSA,A,3,22,18,21,06,03,09,24,15,,,,,2.5,1.6,1.9*3E
GPS受信機の設定
GPS受信機を設定するには、使用しているチップセットの種類を把握しておくことが非常に重要である。 GPSのチップセットには強力なプロセッサが搭載されており、ユーザーインターフェース、各種計算処理、そしてアンテナ用のアナログ回路までを担っている。 このチップセットには、更新レートやボーレート、出力するセンテンスの選択といったパラメータを設定するためのデータを送ることもできる。
シリアルインターフェースを通じてGPS受信機にコマンドを送るには、コマンド一覧やリファレンスマニュアルが必要になる。 特定のモジュール向けのコマンド体系に深入りする前に、必ずベンダーに確認すること。 多くのチップセットベンダーは、シリアルポート経由でGPSモジュールと簡単に通信し、設定を行えるソフトウェアを提供している。
以下は、代表的なチップセットのデータシートとコマンド一覧である。
- SiRFチップセット
- SiRF NMEA Reference Manual
- SiRF Binary Reference Manual
- SiRF Demo Software
- U-Bloxチップセット
- u-blox6 NMEA and UBX Reference Manual
- u-center Demo Software
- SkyTraqチップセット
- Skytraq Reference Manual
- SkyTraq Demo Software
チップセットによっては、SiRFバイナリ(SiRFチップセット)やUBX(ubloxチップセット)、あるいは独自のメッセージ形式といった、別のプロトコルにも対応している。 これらのプロトコルは同じ内容の情報を含んでいるが、通信を高速化するためにASCIIではなくバイナリでやり取りする点が異なる。
GPS受信機と通信する際、ほとんどのコマンドはチェックサムで終端する必要がある。 多くの場合、送信するセンテンスの各バイトをXOR演算する必要がある。 簡単なXORオンライン計算ツールも存在する。
GPS用語集
精度(Accuracy):GPSはどれくらい正確なのだろうか。多少のばらつきはあるが、通常は世界中どこにいても30秒以内に、±5メートル程度の誤差で自分の位置を知ることができる。 実に驚くべきことである。 「±」が付くのは、モジュールや時間帯、受信状況の良し悪しなどによって精度が変動するためである。 ほとんどのモジュールはWAASを有効にすれば±3m程度まで精度を高められるが、サブメートルやセンチメートル単位の精度が必要な場合は、非常に高価になり、DGPSと呼ばれる仕組みが必要になる。
全体として、GPSから最良の精度を得るには、空が開けた場所にいて、かつ移動していることが重要である。
旧SparkFun本社の周辺で記録し、プロットしたGPSのウェイポイント。それぞれの軌跡は異なる種類のGPSモジュールに対応する。
SparkFunの建物周辺の軌跡の例を見ると分かるように、「ロック開始」と「ロック終了」の地点ではGPSの位置が跳ね回っている。 これは、GPSモジュールが静止しているときに起こる現象である。 GPSにはおよそ5メートル程度の誤差があり、静止しているときにはその誤差がそのまま見えてしまう。 モジュールが動き始めると、軌跡は比較的正確になり、GPSは進行方向を「推測」できるようになる。 ただし、高い建物に挟まれたアーバンキャニオンに近づくと、精度が悪化することに注意してほしい。 GPS信号は、必ずしも真上にあるとは限らない衛星から送信されており、地平線に近い位置にある衛星もある。 また、電波は建物や物体で反射し、マルチパス干渉と呼ばれる現象を引き起こすことがある。 GPSは、空が開けた場所でもっともよく機能するということを、常に覚えておいてほしい。
アンテナ(Antenna):忘れてはならないのは、あの小さなGPSモジュールが、頭上だけでなく空のあらゆる方向にある、およそ12,000マイル彼方の衛星からの信号を受信しているという点である。 最良の性能を得るには、アンテナと空の大部分との間に遮るもののない経路が必要である。 天候や雲、雪嵐は信号にほとんど影響しないはずだが、木々や建物、山、頭上の屋根などは望ましくない干渉を生み、GPSの精度を低下させる。
アンテナにはさまざまな選択肢があるが、代表的なものをいくつか紹介する。
もっとも小型で一般的な形状のアンテナが、セラミックパッチアンテナである。
このアンテナは薄型で安価、かつコンパクトだが、他の種類のアンテナに比べると受信感度は劣る。 良好な信号を得るには、このアンテナを空に向けて上向きに設置する必要がある。つまり利得(ゲイン)は上向きのときに最大になる。
GPSモジュールの中には、ヘリカルアンテナを使用するものもある。
このアンテナはセラミックパッチよりも場所を取るが、その形状のおかげでどの向きでも比較的良好な信号が得られる。ただし、特定の1方向における利得はやや低くなる。
モジュールによっては、SMAアンテナを取り付けられるものもある。
SMA接続を使えば、メイン基板とは別の場所にアンテナを設置できる。 これは、メインシステムが空を見渡せない場所(建物の内部や車の中など)にある場合に有用である。
ボーレート(Baud Rate):GPS受信機は、送信ピン(TX)から特定のビットレートでシリアルデータを出力する。 もっとも一般的なのは1Hzの受信機で使われる9600bpsだが、57600bpsも一般的になりつつある。 詳しくは、受信機のデータシートを確認してほしい。
チャンネル数(Channels):GPSモジュールが処理できるチャンネル数は、最初の測位までの時間(TTFF)に影響する。 モジュールはどの衛星が見えているかをあらかじめ知らないため、一度に確認できる周波数やチャンネルの数が多いほど、より速く測位できる。 モジュールがロックやフィックスを得たあと、消費電力を抑えるために余分なチャンネルのブロックを停止するものもある。 ロックまで多少時間がかかってもかまわないのであれば、追跡用途には12〜14チャンネルで十分である。
チップセット(Chipset):GPSのチップセットは、計算処理からアンテナ用のアナログ回路の提供、電源管理、ユーザーインターフェースに至るまで、あらゆる処理を担っている。 非常に多くの仕事をこなしているが、これらの小さなGPSユニットはまさにそれをやってのけている。 チップセットはアンテナの種類とは独立しているため、特定のチップセットを搭載したGPSモジュールにさまざまな種類のアンテナを組み合わせることができる。 一般的なチップセットにはublox、SiRF、SkyTraqなどがあり、いずれも高速な測位と高い信頼性を実現する強力なプロセッサを搭載している。 チップセットごとの違いは、たいてい消費電力、測位にかかる時間、ハードウェアの入手のしやすさのバランスによって決まる。
DGPS(ディファレンシャルGPS):DGPSは特定の種類のGPS受信機である。 DGPS受信機には追加のアンテナが搭載されており、衛星からだけでなく、地上局からも直接信号を受信する。 DGPS機器には通常2本のアンテナが必要である。 これらは標準的なGPS機器よりもはるかに大きく高価だが、センチメートル単位の位置精度を実現できる。
利得(Gain):利得とは、特定の向きにおけるアンテナの効率を表す。 これは送信用アンテナにも受信用アンテナにも当てはまる。
ロックまたはフィックス(Lock or Fix):GPS受信機がロックまたはフィックスを得ている状態とは、少なくとも4機の衛星が良好に見えており、正確な位置と時刻が得られている状態を指す。
NMEA:ほとんどのGPSモジュールが使用する、一般的なデータフォーマットである。 NMEAデータはセンテンスの形で表され、GPSモジュールのシリアル送信(TX)ピンから出力される。 NMEAセンテンスには、位置や時刻など、有用なデータがすべて含まれている。
電力(Power):GPSモジュールは電力を大量に消費するわけではないが、衛星からのデータを計算処理し、ロックを得るためにはある程度の電力が必要である。 一般的なGPSモジュールは、ロックを得ている状態で平均して3.3Vで約30mAの電流を消費する。 また、起動時間を短く保つことも、消費電力の節約につながる。
PPS:1秒あたりのパルス(Pulse per second)の略である。 一部のGPSモジュールに搭載されている出力ピンで、通常このピンが1秒に1回切り替わり、これを使ってシステムクロックをGPSのクロックに同期できる。
起動時間(ホットスタート、ウォームスタート、コールドスタート):GPSモジュールの中には、電源を切ったあとも、スーパーキャパシタやバッテリーバックアップによって、以前の衛星データを揮発性メモリ上に保持できるものがある。 これにより、次回起動時のTTFFを短縮できる。 また、起動時間が短くなることは、全体としての消費電力の削減にもつながる。
コールドスタート(Cold Start):モジュールの電源を長時間切ったままにし、バックアップ用のキャパシタが放電してしまうと、データは失われる。 次に電源を入れたとき、GPSは新しいアルマナックデータとエフェメリスデータをダウンロードし直す必要がある。
ウォームスタート(Warm Start):バックアップ電源がどれくらい持続するかにもよるが、アルマナックデータとエフェメリスデータの一部が保持された状態で起動することもある。この場合、ロックの取得には多少余分に時間がかかることがある。
ホットスタート(Hot Start):ホットスタートとは、すべての衛星のデータが最新で、前回の電源投入時とほぼ同じ位置に衛星がある状態を指す。 ホットスタートであれば、GPSはすぐにロックできる。
トライラテレーション(Trilateration、三辺測量):複数の基準点を使って位置を計算する数学的な手法である。 GPS受信機が正確な位置と時刻を計算するには、空にある少なくとも4機の衛星を良好に捉えられている必要がある。 この状態がGPSのロックまたはフィックスと呼ばれる。 2つの基準点(x, y)を使って対象物までの距離を計算する三角測量についてはよく知られているが、GPSの場合は緯度、経度、高度、時刻という4つの値を求める必要がある。
TTFF:最初の測位までの時間(Time to first fix)の略である。 電源投入後、少なくとも4機の衛星を使って正確な位置と時刻を計算するまでにかかる時間を指す。 空の見通しが悪い場所にいる場合、TTFFは非常に長くなることがある。
更新レート(Update Rate):GPSモジュールの更新レートとは、位置を計算して報告する頻度のことである。 ほとんどの機器の標準は1Hz(1秒に1回)である。 UAV(無人航空機)など高速で移動する機体では、より高い更新レートが必要になることがある。 低価格なモジュールでも、5Hzや10Hzといった更新レートが利用できるようになりつつある。 更新レートが高いほど、モジュールから送出されるNMEAセンテンスの量も増えることに注意してほしい。
WAAS:WAAS(広域補強システム)は、北米にある地上局のネットワークであり、衛星に補正データを送り返す。 WAASは位置精度をおよそ5メートルまで高める。 他の国にも同様のシステムがあり、たとえばヨーロッパのEGNOS、日本のMSAS、インドのGAGANなどがある。 ほとんどのGPS受信機はデフォルトでWAASが有効になっており、EGNOS、MSAS、GAGANにも対応している。
トラブルシューティング
ロックに関する問題
Mikal Hart氏のTinyGPS++ライブラリは、GPSをすばやく動かし始めるのに非常に優れている。 とはいえ、アーバンキャニオンの間にいる場合や、コンクリート製の建物の中、あるいはおよそ無線信号を通さない暗闇のような場所にいる場合は、うまくいかないこともある。 実際に問題になったのは、屋内でGPSを使う場合であり、SparkFunの建物のようにコンクリートや金属の梁、大きな太陽光パネルが数多くあると、GPS信号(ついでに言えばほとんどの携帯キャリアの電波も)が大きく乱れ、GPSのロックを得るのが非常に難しくなる。
GPSモジュールのデータがライブラリを使ってもうまく見えない場合や、出力が不完全な場合は、より多くの衛星が見える別の場所に移動する必要があるかもしれない。 GPSモジュールを数歩動かしたり、建物の周辺部に移したりするだけで改善することもある。 見えている衛星数を確認するには、GPGGAセンテンスの6番目と7番目のフィールドを見て、ロックに問題がないか確認できる。 以下は、GPSモジュールが衛星をロックできていないときのGPGGAセンテンスの例である。 見てのとおり、GPSのフィックスがなく、見えている衛星もないため、出力は無効であることを示している。
$GPGGA,105317.709,8960.0000,N,00000.0000,E,0,0,,137.0,M,13.0,M,,*4C
ボーレートの不一致
GPSモジュールのシリアルUARTからシリアルモニタにデータを流したときに、以下の画像のような「文字化け」しか表示されない場合は、ボーレートの設定が正しいかどうかを確認してほしい。 GPSモジュールによってボーレートは異なることがあるため、使用しているGPSモジュールのデータシートを確認し、ボーレートが一致しているか確かめること。
この節で説明したような、ボーレートの不一致(いわゆる文字化け)の例。
まとめ
これで、GPSユニットがどのように動作するか、そして次のプロジェクトにどう組み込めばよいかが、はっきりと理解できたはずである。 さらに優れたプロジェクトのアイデアを探しているなら、次のようなSparkFunのチュートリアルも確認してほしい。
- ジャイロスコープとは何か:ジャイロスコープは軸を中心とした回転の速さを測定するもので、空間内での姿勢を判断するうえで欠かせない部品である。
- 加速度センサーの基礎:加速度センサーとは何か、どのように動作するのか、なぜ使われるのかについての簡単な入門である。
- プロジェクトへの電源供給:プロジェクトに必要な電源要件を見極めるためのチュートリアルである。
- 電力:電力、つまりエネルギー伝達の速さについての概要である。電力の定義やワット、計算式、定格出力について解説する。
- ブレッドボードの使い方:ブレッドボードの世界へようこそ。ブレッドボードとは何か、それを使って最初の回路を組み立てる方法を学べる。
タグ: GPS、技術、無線
出典:GPS Basics(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
シリアルグラフィックLCDの使い方
はじめに
Serial Graphic LCD Backpack(シリアルグラフィックLCDバックパック)の使い方ガイドへようこそ。 このチュートリアルでは、このバックパックの機能をフルに活用する方法を学ぶ。 まずハードウェアの基本概要から始め、続いてマイコンへの接続方法へと進む。 最後まで読めば、バックパックのすべての機能と、任意のホスト機器での実装方法が分かるはずである。
参考になるチュートリアル
このガイドを最大限に活用するには、事前に次のトピックを理解しておくことをおすすめする。 なじみのない概念があれば、目を通しておいてほしい。
バックパックの概要
Serial Graphic LCD Backpackは、大型のグラフィック液晶ディスプレイ(LCD)に対して、シンプルなシリアルインターフェースを提供するために設計された。 文字の描画に加えて、直線や円、四角形を描いたり、個々のピクセルを設定したり解除したり、画面の特定のブロックを消去したり、バックライトを制御したりできる。 ピクセルの色と背景色を入れ替える反転モードも備えている。
SparkFunではこのバックパックを単体でも販売しているが、128x64ピクセルのグラフィックLCDや160x128ピクセルのグラフィックLCDとセットになった製品も存在する。 このチュートリアルでは、両方のLCDを使ってバックパックの機能を紹介する。
バックパックは、5V/16MHzで動作するATmega168マイコンによって制御されている。 この製品は主に組み込み用途を想定しているが、パソコンに接続してターミナルエミュレータから書き込むことも簡単にできる。 このチュートリアルでは両方の方法を扱う。
電源についての要件
バックパックには最大7Vまで電圧をかけて電源供給できるが、その場合はバックパック上の電圧レギュレータへの負荷を減らすため、バックライトのデューティ比を下げるように注意する必要がある。 電圧レギュレータまわりの問題を避けるには、バックパックを6Vで駆動するのが最も無難である。 別の5V電源から給電しても問題ない。 ただし5V未満の電圧では、バックライトやディスプレイに不具合が生じることに注意してほしい。 パソコンのUSBポートやマイコンから電源を取る場合は、出力が確かに5Vであり、4.5Vのような低い値になっていないかを確認すること。
その他のハードウェアの特徴
コントラスト用ポテンショメーター(左)とはんだジャンパー(右)を強調した写真。
コントラスト用ポテンショメーター
バックパックには、コントラストを調整するための小さなポテンショメーターが搭載されている。 出荷時にすでに調整済みだが、文字がはっきり見えない場合や好みに合わない場合は、自由に調整してかまわない。 LCDの文字が読めなくなった場合は、必ず最初にこのコントラスト用ポテンショメーターを確認すること。 非常に感度が高く、わずかにぶつけただけでもLCDのコントラストが崩れ、読めなくなることがある。
はんだジャンパー
バックパックには、どちらのディスプレイを使うかを決めるはんだジャンパーがある。 このジャンパーが閉じている(はんだ付けされている)場合は128x64ディスプレイ用のコードが動作し、開いている場合は160x128ディスプレイ用のコードが動作する。 このジャンパーは、どちらのLCDが取り付けられているかに応じて、製造時にはんだ付けされる。 ただし、自分の持っているLCDでこのバックパックを使いたい場合は、このジャンパーを適切に扱う必要がある。
TXライン
バックパックのTXラインは、将来のコード改訂やデバッグ、ユーザー開発のために最終設計に残されているが、執筆時点では利用されていない。
LCDの概要
このチュートリアルの後半で使うファームウェアの仕組みをよりよく理解するために、これらのLCDがどう動作するかを簡単に説明しておこう。 まずは、LCD上のピクセルがどのようにマッピングされているかについてである。
グラフィックLCDは、次の図のようにデカルト座標でマッピングされている。
160x128ピクセルのLCDを使う場合は、次の図のようになる。
ASCII文字は、ユーザーが変更可能な2つの設定値であるx_offsetとy_offsetにもとづいて画面に表示される。 この2つの設定値は、6x8ビットの文字用スペースの左上隅のビット位置を定義する。 x_offsetとy_offsetを変更することで、画面上の任意の場所に文字を配置できる。
文字用スペースに描かれた大文字の「B」。
x_offsetとy_offsetを調整しない限り、文字は左から右へ、上から下へと表示されていく。 さらに、オフセットを変更すると文字全体の基準枠が変わる。 つまり、あるフォームの端まで書き込んで次の行に移る処理は、あらかじめ書き込み可能な位置と不可能な位置が決まっているわけではないため(画面の左端や下端に近い位置を除く)、シームレスに行われる。
バックスペースキーも機能し、ユーザーが設定した基準枠をできる限り維持しようとする。
バックパックには416バイトの入力バッファがあり、これは画面いっぱいに表示できる文字数に相当する。 一度に416文字を超えるデータを送信すると、バッファオーバーランが発生する可能性がある。 また、ファームウェアがバッファ全体を処理するのにかかる時間は、送信する文字と特殊コマンドの組み合わせによって変わる。 最適な動作を見つけるには、多少の試行錯誤が必要になるかもしれない。
ASCIIコマンド
Graphic Serial LCD Backpackは、さまざまな方法で制御できるように設計されている。 その1つがシリアルターミナルを使う方法である。 パソコンを制御機器として使いたい場合に便利である。 また、ASCIIコマンドを使ってリアルタイムにバックパックへコマンドを送ることもできる。 これは、プロジェクトに組み込む前にLCDをテストしたい場合に役立つ。 以下に、ASCIIコマンドの一覧をすべて示す。
注記: キーボードから特殊なキー操作が必要になるASCII値を送る場面がいくつかある。
< control 何らかの値 >という表記が出てきたら、それはControlキーとその文字を同時に押す必要があるという意味である。
Macを使っている場合、これらのコマンドの一部はやや異なる方法で入力する必要がある。
Controlキーを使ってもうまくいかないコマンドがあれば、そのキャラクタのUnicode版を試してみてほしい。
すべてのコマンドの先頭には「|」(ASCIIの10進数で124、16進数で0x7C)を付ける必要がある。 これは、続けてコマンド列が送られてくることをディスプレイに知らせるものである。 以下のコマンドの前には、必ず「|」を付けなければならない。 実際の「|」という文字そのものが画面に表示されることはない(また、表示することもできない)。
画面のクリア
「@(0x00)」を送信すると、書き込まれていたすべてのピクセルを画面から消去する。 通常モードで動作している場合はすべてのピクセルがリセットされ、反転モードで動作している場合はすべてのピクセルがセットされる。 「画面のクリア」コマンドの例としては、0x7C 0x00を送信するか、キーボードから「|」と@を送信する。
デモモード
「\d(0x04)」を送信すると、デモ用のコードが実行される。 これはディスプレイの機能を示す一例として、ファームウェアに組み込まれている。 デモを見るには、0x7C 0x04を送信するか、キーボードから「|」と\dを送信する。
反転モード
「\r(0x12)」を送信すると、160x128ピクセルディスプレイでは白地に青と青地に白、128x64ピクセルディスプレイでは黒地に緑と緑地に黒の間で表示が切り替わる。 反転モードを設定すると、新しい背景色で画面が即座にクリアされる。 反転モードを設定するには、0x7C 0x12を送信するか、キーボードから「|」と\rを送信する。 この設定は電源の入れ直しをまたいで保存される。 反転モードのままディスプレイの電源を切った場合、次に電源を入れたときも反転モードのままで起動する。
スプラッシュ画面
「\s(0x13)」を送信すると、電源投入時にSparkFunのロゴを表示するかどうかを切り替えられる。 このスプラッシュ画面には2つの役割がある。 1つは製品に自分たちの刻印を残すことであり、もう1つは、電源投入時に短い時間を確保し、ボーレートの誤った変更からディスプレイを復旧できるようにすることである(詳しくはボーレートの変更の項を参照)。 スプラッシュ画面を無効にするとロゴの表示は抑制されるが、遅延自体は残る。 スプラッシュ画面を無効にするには、0x7C、0x13を送信するか、キーボードから「|」と\sを送信する。
バックライトのデューティ比の設定
「\b(0x02)」に続けて0から100までの数値を送信すると、バックライトの明るさ(したがって消費電流)が変わる。 値を0に設定するとバックライトはオフになり、100以上に設定すると完全に点灯し、その中間の値では明るさもその中間になる。 コマンド列の中の数値は8ビットのASCII値である。 たとえばデューティ比を50に設定するには、0x7C 0x02 0x32を送信するか、キーボードから「|」、\b、「2」を送信する。
ボーレートの変更
「\g(0x07)」に続けて「1」から「6」までのASCII文字を送信すると、ボーレートが変更される。 デフォルトのボーレートは115,200bpsだが、バックパックはさまざまな通信速度に設定できる。
| 文字 | ボーレート |
|---|---|
| “1” | 4800 |
| “2” | 9600 |
| “3” | 19200 |
| “4” | 38400 |
| “5” | 57600 |
| “6” | 115200 |
たとえばボーレートを19,200bpsに設定するには、0x7C 0x07 0x33を送信するか、キーボードから「|」、\g、「3」を送信する。 ボーレートの設定は電源の入れ直しをまたいで保持されるため、19,200bpsの状態で電源を切った場合、次に電源を入れたときもその設定のままになる。
万一の場合は、ボーレートを115,200に戻すこともできる。 電源投入時の1秒間の遅延の間に、115,200bpsで任意の文字をディスプレイに送信すればよい。
X座標とY座標の設定
「\x(0x18)」または「\y(0x19)」に続けて新しい基準座標を表す数値を送信すると、X座標またはY座標が変更される。 X座標とY座標の基準値(ソースコード上ではx_offsetとy_offset)は、テキストジェネレータが画面上の特定の位置に文字を配置するために使われる。 先に述べたとおり、この座標は文字用スペースの左上のピクセルを指す。 オフセットが画面の右端から6ピクセル以内、あるいは下端から8ピクセル以内にある場合、テキストジェネレータは文字を部分的にではなく丸ごと表示できるよう、次の行に自動的に移る。 たとえばx_offsetを80(160x128ピクセルディスプレイの水平方向の中央)に設定するには、0x7C 0x18 0x50を送信するか、キーボードから「|」、\x、「P」を送信する。 各軸の長さを超える値を設定しようとした場合は、それぞれのオフセットの最大値に丸められる。
ピクセルの設定と解除
「\p(0x10)」に続けてxとyの座標、およびそのピクセルを設定するか解除するかを表す0か1を送信する。 画面上の任意のピクセルを、このコマンドで個別に設定したり解除したりできる。 たとえば座標(80, 64)のピクセルを設定するには、0x7C 0x10 0x50 0x40 0x01を送信するか、キーボードから「|」、\p、「P」、「@」、\aを送信する。 ピクセルを「設定する」とは、必ずしもそこに1を書き込むという意味ではなく、背景色の反対の色を書き込むという意味であることに注意してほしい。 つまり反転モードで動作している場合、ピクセルを設定すると実際にはそのピクセルはクリアされ、白い背景の中で目立つようになる。 そのピクセルを解除すると、背景と同じ白色に戻る。
直線の描画
「\l(0x0C)」に続けて、線の始点と終点を表す2組の(x, y)座標を送信し、さらに直線を描くか消すかを表す0か1を送信する。 たとえば(0,10)から(50,60)まで直線を描くには、0x7C 0x0C 0x00(x1)0x0A(y1)0x32(x2)0x3C(y2)0x01を送信するか、キーボードから「|」、\l、@、\j、「2」、「<」、\aを送信する。 その直線を消す(周囲の文字や図形はそのまま残す)には、同じコマンドの最後の\aを@に変えて送信する。
円の描画
「\c(0x03)」に続けて、円の中心を表すxとyの座標、円の半径を表す数値、さらに円を描くか消すかを表す0か1を送信する。 たとえば中心(80, 64)、半径10の円を描くには、0x7C 0x03 0x50 0x40 0x0A 0x01を送信するか、キーボードから「|」、\c、「P」、「@」、\j、\aを送信する。 その円を消す(周囲の文字や図形はそのまま残す)には、同じコマンドの最後の\aを@に変えて送信する。 円は画面の外側にはみ出して描くこともできるが、実際に表示されるのはディスプレイの範囲内に収まるピクセルだけである。
四角形の描画
「\o(0x0F)」に続けて、四角形の対角の2つの角を表す2組の(x, y)座標を送信し、さらに四角形を描くか消すかを表す0か1を送信する。 このコマンドは直線を描くコマンドと全く同じ形式だが、線の代わりに、指定した座標間の直線をちょうど囲む四角形が描かれる。 たとえば(0,10)から(50,60)までの直線を囲む四角形を描くには、0x7C 0x0F 0x00(x1)0x0A(y1)0x32(x2)0x3C(y2)0x01を送信するか、キーボードから「|」、\o、@、\j、「2」、「<」、\aを送信する。 その四角形を消す(周囲の文字や図形はそのまま残す)には、同じコマンドの最後の\aを@に変えて送信する。
ブロックの消去
「\e(0x05)」に続けて、消去したいブロックの対角の2つの角を表す2組の(x, y)座標を送信する。 これは四角形を描くコマンドとほぼ同じだが、四角形の中身が背景色に消去される点が異なる。 たとえば(0,10)から(50,60)までの直線を囲む矩形ブロックを消去するには、「0x7C 0x05 0x00(x1)0x0A(y1)0x32(x2)0x3C(y2)」を送信するか、キーボードから「|」、\e、@、\j、「2」、「<」を送信する。
例1:FTDI Basicを使う
LCDを制御するコマンドが分かったところで、実際に試してみよう。 この例では、FTDI Basicを使ってLCDと通信し、制御を行う。
必要なもの
- 128x64ピクセルのグラフィックLCDまたは160x128ピクセルのグラフィックLCDのいずれか
- FTDI Basic - 5V または FTDI Cable
- Mini USBケーブル
- オス-メスのジャンパー線
ハードウェア
LCDに接続して表示を行う、もっとも簡単で手早い方法は、FTDI BasicやFTDI Cableを使うことである。 ジャンパー線を使って、次のようにFTDIとLCDを接続する。
| FTDI | グラフィックLCD |
|---|---|
| 5V | Vin |
| GND | GND |
| TXO | RX |
LCDを正しく配線できたら、FTDI機器をパソコンに接続する。 ターミナルウィンドウを開こう。 設定が正しいことを確認すること(ボーレート:115200、8-N-1-NONE)。 接続できたら、文字を入力してみよう。 入力した内容がすべてLCDに表示されるはずである。 画面のクリア、円の描画、特定のx, y座標への文字の表示といった特定のコマンドを実行するために押すべきキーについては、ASCIIコマンドの項を振り返って確認してほしい。
パソコンからLCDに話しかけるのも楽しいが、組み込み機器からLCDに情報を表示できるようになると、本当の面白さが始まる。 次の例では、Arduinoを使ってLCDに情報を表示する。
ファームウェアの概要
ArduinoにLCDを接続する前に、少しファームウェアについて説明しておこう。 ファームウェアとは、バックパック上で動作するコードのことである。 LCDと、それと通信するマイコンとの間の橋渡し役、いわば翻訳者としての役割を果たす。 このファームウェアの上に、バックパックをさらに使いやすくするためのArduinoライブラリを用意した。
バックパックのファームウェア
バックパックに付属するファームウェアは刷新されており、以前よりも滑らかに動作し、どんなプロジェクトにも素晴らしいグラフィック表示をもたらしてくれる。 特に凝ったことをしたいのでなければ、デフォルトのファームウェアだけでLCDに必要な機能はほぼ満たせるはずである。 とはいえ、内部の仕組みを理解しておく価値はある。 ファームウェアを見るには、Serial Graphic LCD BackpackのGitHubリポジトリを訪れてほしい。 zipファイルをダウンロードするか、リポジトリをパソコンにクローンするか、あるいはGitHub標準のエディタで内容を確認することもできる。
Firmwareフォルダの中には、多数の.cファイルと.hファイルがある。 これらは、受け取った入力に応じてバックパックがLCDとどうやり取りするかを定めているファイルである。 ソースコードの改変はこのチュートリアルの範囲を超えるため、ここでは詳しく扱わない。 内部の機能を追加、削除、変更したい場合は、ここが該当する場所だということだけ覚えておいてほしい。
なお、バックパックのファームウェアを書き換えるにはプログラマが必要になる。 バックパックに搭載されているICは、多くのArduinoボードに使われているものと同じATmega328であるにもかかわらず、Arduino互換ではない。 ファームウェアの再書き込み方法についての詳細は、トラブルシューティングの項を参照してほしい。
Arduinoライブラリ
Serial Graphic LCD Backpackをできるだけ簡単に使えるように、Arduinoライブラリを用意した。 このライブラリはGitHubリポジトリから入手できる。 このライブラリは、前述のASCIIコマンドの一覧にある各コマンドに対応する関数を提供している。 ライブラリに付属するサンプルスケッチでは、各関数の使い方が示されており、LCD上でさまざまな用途にどう実装するかが分かる。 Arduinoライブラリのインストール方法について復習が必要な場合は、Installing an Arduino Libraryのチュートリアルを参照してほしい。
以下では、それぞれの関数を簡単な説明とともに紹介する。 ただし、これらの関数はいずれもASCIIコマンドの項で紹介したコマンドの上に成り立っている。 それぞれの詳細については、その項を参照するか、ライブラリファイル内のコメントを読んでほしい。
表示用コマンド
printStr(char Str[78])- 文字列をLCDに表示する。バッファのデフォルトサイズは78だが、ヘッダファイルで変更できる。printNum(int num)- 1つの数値をLCDに表示する。nextLine()- 文字表示における改行として機能する。
これら3つの関数が用意されているのは、バックパックとの通信にSoftware Serialライブラリのインスタンスがライブラリファイル内で宣言されているためである。
そのため、このライブラリを使っている間は、通常のserial.print()コマンドではLCDに文字を送信できない。
LCDの機能
clearScreen()- LCD上のすべてのピクセルを消去する。toggleReverseMode()- 反転モードを切り替える。160x128ディスプレイでは白地に青、128x64ディスプレイでは黒地に緑になる。toggleSplash()- SparkFunのスプラッシュ画面のオンとオフを切り替える。スプラッシュ画面が有効か無効かにかかわらず、起動時の1秒間の遅延は残ることに注意。setBacklight(byte duty)- バックライトの明るさを設定する。引数として1つのint値を取る。範囲は0〜100で、0はオフ、100は最大輝度である。100を超える値を指定しても、最大値の100として扱われる。setBaud(byte baud)- バックパックのボーレートを設定する。引数として1つのint値(範囲は49〜54)を取る。restoreDefaultBaud()- LCDのボーレートをデフォルトの115200bpsに戻す。
カーソル位置の指定
setX()- 画面上で文字が表示されるx位置を設定する。setY()- 画面上で文字が表示されるy位置を設定する。setHome()- xとyの両方を位置(0, 0)に戻す。
描画
setPixel(byte x, byte y, byte set)- LCD上の任意のピクセルを設定したり解除(背景色に戻す)したりする。drawLine(byte x1, byte y1, byte x2, byte y2, byte set)- 2つのx, y座標の間に直線を描く。drawBox(byte x1, byte y1, byte x2, byte y2, byte set)- 2つのx, y座標の間に四角形を描く。drawCircle(byte x, byte y, byte rad, byte set)- 指定したx, y座標を中心とし、指定した半径まで広がる円を描く。eraseBlock(byte x1, byte y1, byte x2, byte y2)- 指定した2つのx, y座標にまたがるブロックを消去する。demo()- ファームウェアに組み込まれた内部デモを起動する。
例2:Arduinoを使う
まずは、Arduinoから手早くLCDに文字を表示するシンプルな方法を紹介し、続いてLCDのファームウェアに組み込まれた特殊文字を活用する、より本格的な方法を紹介する。
必要なもの
- Arduino互換ボード(RedBoardやArduino Unoをおすすめする)
- 128x64ピクセルのグラフィックLCDまたは160x128ピクセルのグラフィックLCDのいずれか
- お使いのArduinoに適したUSBケーブル
- オス-メスのジャンパー線
シリアルのパススルー
最初の例では、Arduinoに内蔵されているUARTを利用する。 そのため、LCDを接続したままArduinoにコードを書き込む際には注意が必要である。両者が同じラインを共有することになるからである。 ここでは少し順番を変えて、先にコードを書き込んでから、LCDを接続することにする。
わずか数行のコードで、Arduinoを経由してターミナルウィンドウに文字を送ることができる。 次のコードを新しいスケッチにコピーし、Arduinoに書き込む。
void setup() {
Serial.begin(115200);
}
void loop() {
if(Serial.available() > 0){
Serial.write(Serial.read());
}
}
このコードは、ArduinoがRXラインで受信した内容を、そのままTXラインからSerial Graphic LCDへ送信する。
ASCIIの数値ではなく実際の文字をLCDに表示したい場合は、Serial.printではなくSerial.write()を使う必要がある。
ハードウェア
次に、以下のようにLCDをArduinoに接続する。
配線が次のようになっていることを確認する。
| Arduino | グラフィックLCD |
|---|---|
| 5V | Vin |
| GND | GND |
| TX | RX |
LCDのTXラインには接続する必要がない。LCDに対してデータを送るだけだからである。
ここで、ターミナルウィンドウを(同じく115200で)開き、文字を入力してみよう。 今度もLCDに文字が表示されるはずである。バックスペースも問題なく機能する。
Arduinoライブラリを使った例
最後の例では、Serial Graphic LCDライブラリを使ってすべての処理を任せてしまう。 このライブラリの重要な特徴の1つは、Software Serialライブラリを使って、ArduinoがLCDと通信するための別のシリアルポートを作り出している点である。 先ほどの例の問題点は、内蔵のUARTを使っているため、コードを書き込むたびにLCDを取り外す必要があったことである。 開発中に何度も書き込みを行う場合、これはかなり面倒である。
ハードウェア
このセットアップは、先ほどの例のものをそのまま使い、ジャンパー線を1本だけ変更すればよい。 ArduinoのTXピンに接続していたジャンパー線を、Arduinoのデジタルピン3に移動する。 これは、Serial Graphic LCDライブラリがSoftware Serialライブラリを初期化する際に使用するピンである。
配線は次のようになるはずである。
| Arduino | グラフィックLCD |
|---|---|
| 5V | Vin |
| GND | GND |
| Pin 3 | RX |
図で確認したい場合は、以下の配線例を参考にしてほしい。
ファームウェア
まだの場合は、Arduinoライブラリをダウンロードしてインストールするか、パソコンにクローンしてほしい。 ライブラリのインストール方法については、前述のファームウェアの詳細の項を参照すること。 インストールが済んだら、Arduino IDEを開き、ライブラリのサンプルスケッチへ移動する。
適切なシリアルポートとボードを選択し、サンプルスケッチをArduinoに書き込む。 書き込みが完了すると、ライブラリのデモが開始される。 ライブラリに含まれるほぼすべての関数の使用例が、一通り実行される。 あとは座って眺めているだけでよい。
トラブルシューティング
表示に関する問題
- 文字が全く見えない場合は、バックパック上のコントラスト用ポテンショメーターが適切に調整されているか確認すること。調整には精密ドライバーが必要である。このトリムポットを調整する際は注意すること。回しすぎたり、強く力を加えすぎたりすると、トリムポットが壊れることがある。
- バックパックに少なくとも5Vを供給していることを確認すること。それより低いとコントラストに問題が生じることがある。USBポートの中には4.7〜4.8V程度しか出力しないものもあり、LCDとバックパックを完全に駆動するには電圧が足りないことがある。LCDには6〜7Vで電源供給することをおすすめする。
- コントラストを適切に調整しても文字が全く見えない場合は、ボーレートに問題がある可能性がある。ボーレートを変更して、何に変更したか忘れてしまった場合は、Arduinoライブラリの
restoreDefaultBaud()コマンドを使って、デフォルトの115200bpsに戻すことができる。Graphic Serial LCDライブラリをインポートするスケッチを作成し、setup内でこの復元用の関数を呼び出せばよい。
次のコードをArduinoにコピー&ペーストし、LCDのRXピンがArduinoのデジタルピン3に接続されていることを確認したうえで書き込む。 画面に「Baud restored to 115200!」と表示されるはずである。
#include <SparkFunSerialGraphicLCD.h> // Serial Graphic LCDライブラリをインクルードする
#include <SoftwareSerial.h>
LCD LCD;
void setup()
{
delay(1200); // 1秒間のスプラッシュ画面を待つ
LCD.restoreDefaultBaud();
}
void loop()
{
// loop内では何もしない
}
ファームウェアの再書き込み
バックパックの動作がおかしいと感じたら、ファームウェアが原因である可能性がある。 その場合は、最新のファームウェアに更新することをおすすめする。 適切な道具があれば自分自身で行える方法を、ここで簡単に説明する。
最新版のファームウェアはGitHubにある。 リンク先のリポジトリを訪れ、クローンするかzipファイルをダウンロードし、その保存場所を覚えておく。
ファームウェアをバックパックに書き込む何らかの手段が必要になる。 Atmel AVR MKIIプログラマの使用をおすすめするが、MKIIを持っていない場合は、Pocket AVR Programmerのような類似の製品を使うこともできる。 プログラマをパソコンに接続する。 Arduinoボードをプログラマとして使うこともできる。 これについての詳細や、ファームウェアの再書き込み全般については、Installing an Arduino Bootloaderのチュートリアルを参照してほしい。
この例では、Atmel AVR Studio(v4.18)を使って.hexファイルをバックパックに書き込む。 コマンドラインからAVRDudeを使って同じことを行うこともできる。 MacやLinuxを使っている場合は、それぞれのOS上でAVRコードを書き込む方法を調べるか、WineやVMWareのような仮想マシンを使ってWindows上でAVR Studioを動かす必要がある。
AVR Studioを起動する準備ができたら、プログラムを起動しよう。 使用しているプログラマを選択するよう求めるプロンプトが表示されるはずである。 AVR MKII、あるいは自分が使っているプログラマを選択する。
次に、書き込み先のチップを選択する。ATmega168Pを選択する。
Programタブをクリックする。「Flash」の項目で、3つの点が描かれたボタンをクリックし、GitHubからダウンロードしたhexファイルを参照する。
GitHubからダウンロードした際に付属する.hexファイルを参照する。
AVR Studioにhexファイルの場所を指定したら、プログラマをバックパックのISPヘッダーに接続し、「Program」をクリックする。
プログラムの下部に成功のメッセージが表示されるはずである。 表示されれば、新しいファームウェアがバックパックに書き込まれ、使用できる状態になっている。
まとめ
これでひととおり完了である。 Serial Graphic LCDの仕組みと、さまざまな方法でLCDを制御する方法について理解できたはずである。 あとは実際に、洗練されたユーザーインターフェースを持つ素晴らしいプロジェクトを作ってみてほしい。 S-G-LCDバックパックについてのさらなる情報は、以下のリンクを確認してほしい。
- Serial Graphic LCD Backpack GitHubリポジトリ
- Serial Graphic LCD Backpack製品ページ
- データシート(160x128 LCD)
- T6963Cマニュアル
- T6963アプリケーションノート
- Graphic LCD VU Meters(グラフィックLCDを使ったVUメーター)
タグ: ディスプレイ、接続ガイド
出典:Serial Graphic LCD Hookup(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
双方向ロジックレベルコンバータの使い方
3.3VのI2CセンサーやSPIセンサーを5VのArduinoに接続して、煙を出してしまいそうで心配になったことはないだろうか。 あるいは、5Vのデバイスを3.3VのRaspberry Pi 4やRaspberry Pi Zero、RedBoard Turbo、Arduino Dueと組み合わせるために、何らかの回避策が必要になったことは。
この壁を乗り越えるには、3.3Vを5Vに、あるいは5Vを3.3Vに変換できる装置が必要になる。 これはロジックレベルシフトと呼ばれる。 レベルシフトはあまりにもよくある悩みであるため、SparkFunでは機器どうしのインターフェースを少し簡単にするシンプルなPCB基板、双方向ロジックレベルコンバータを設計した。
形と大きさは同じだが、この双方向ロジックレベルコンバータは、より単純な“単方向“バージョンとは区別する必要がある。 このコンバータは、すべてのチャンネルにおいて、高い電圧から低い電圧へ、あるいはその逆の両方向にデータを通すことができる。 I2Cやワンワイヤーインターフェースのように、データ線を共有する機器どうしのレベルシフトに最適である。
このチュートリアルで扱う内容:
このチュートリアルでは、双方向ロジックレベルコンバータについて詳しく見ていく。 回路図と基板のレイアウトを確認し、それぞれのピンの役割を説明する。 最後に、さまざまなインターフェースに合わせてこの基板をどう接続するか、いくつかの接続例を紹介する。
参考になるチュートリアル:
以下の概念に馴染みがなければ、続きを読む前にこれらのチュートリアルを確認しておくことをおすすめする。
基板の概要
この基板の回路図を見てみると、双方向ロジックレベルコンバータ(以下BD-LLCと略す)は実はとても単純な装置であることが分かる。 基板上には基本的に1つのレベルシフト回路があり、それが4回繰り返されて4つのレベルシフトチャンネルを作り出している。 この回路は、1個のNチャンネルMOSFETと2、3個のプルアップ抵抗を使って、双方向のレベルシフトを実現している。
半導体のちょっとした魔法によって、この回路は低電圧信号を高電圧に、あるいは高電圧信号を低電圧に変換できる。 片側で0Vの信号は、もう片側でも0Vのままである。 この回路の完全な解析については、優れたPhilips Application Note AN97055を参照してほしい。
ピン配置
BD-LLCには合計12本のピンがあり、6本ずつ2列に並んだヘッダーになっている。 一方の列には高電圧側(たとえば5V)の入出力がすべて、もう一方の列には低電圧側(たとえば3.3V)のものがすべて配置されている。
ピンは基板の表と裏の両方にラベル付けされており、いくつかのグループに分かれている。 いくつかのピングループを詳しく見ていこう。
電圧入力
HV、LV、そして2つのGNDというラベルの付いたピンは、基板に高電圧と低電圧の基準電圧を供給する。 この両方の入力に安定したレギュレート済みの電圧を供給することが必須である。
HVとGNDの入力に供給する電圧は、LV側に供給する電圧よりも高くなければならない。 たとえば5Vから3.3Vへ変換する場合、HVピンの電圧は5V、LVの電圧は3.3Vにする。
データチャンネル
BD-LLCには4つの独立したデータチャンネルがあり、それぞれ高電圧と低電圧の間でデータを双方向にシフトできる。 これらのピンはHV1、LV1、HV2、LV2、HV3、LV3、HV4、LV4とラベル付けされている。 それぞれのラベルの末尾の数字はピンのチャンネルを示し、HVまたはLVという接頭辞は、そのチャンネルの高電圧側か低電圧側かを示している。
たとえばLV1に入力された低電圧信号は、より高い電圧にシフトされてHV1から出力される。 HV3に入力されたものは、低電圧にシフトされてLV3から出力される。 プロジェクトに必要な数だけこれらのチャンネルを使えばよく、すべてのチャンネルを使う必要はない。
これらのレベルシフターは純粋にデジタルである点に注意してほしい。 あるアナログの最大電圧を別の最大電圧に対応付けるような使い方はできない。
接続例
組み立て
コンバータをシステムに接続する前に、何かをはんだ付けする必要がある。 ここにはさまざまな選択肢がある。 まっすぐなオスヘッダーをはんだ付けしてブレッドボードにそのまま挿すこともできるし、配線を直接はんだ付けすることもできる。 自分の使い方に合った組み立て方法を選ぼう。
BD-LLCのはんだ付けが終わったら、いよいよ接続する番である。 接続方法は、使う通信インターフェースによって変わってくる。 以下では、もっともよく使われる3つの通信プロトコルについて、レベルコンバータの接続方法を紹介する。
BD-LLCをシリアル通信に使う
BD-LLCの双方向という機能を活かしきることにはならないが、シリアル通信のレベルシフトにこの基板を使ってもまったく問題ない。 シリアル通信にはたいていRX(受信)とTX(送信)という2本の信号線が必要であり、どちらも決まった方向を持つ。 これらの信号は、BD-LLCの4つのチャンネルのどれを使って通してもよい。
たとえば、最大入力電圧が3.6VのElectric Imp Breakout Boardを、UART経由でArduino Unoに接続したいとしよう。 接続方法の一例は次のとおりである。
この例では、ArduinoとElectric Impの両方がそれぞれ独自の電源を持っていることに注意してほしい。
LVが3.3Vで、HVが5Vで電源供給されていることを確認しよう。 チャンネルの対応が合っているか再確認すれば、あとはレベルシフトが行われるだけである。 残りの2チャンネルは好きなように使うことができる。
BD-LLCをSPI通信に使う
BD-LLCの4つのチャンネルは、たいていのSPI通信にちょうどよく対応する。 SPIにはたいてい4本の配線、MOSI(コントローラ出力/ペリフェラル入力)、MISO(コントローラ入力/ペリフェラル出力)、SCLK(シリアルクロック)、CS(チップセレクト)が必要である。 これら4本の配線は、それぞれBD-LLCのチャンネルに通すことができる。
たとえば、動作範囲が2.0V〜3.6VのADXL345 Breakout Boardに、Arduinoを接続したい場合、BD-LLCを次のように組み込むことができる。
BD-LLCの各チャンネルはすべて双方向であるため、SPIの4本の線のどれを、BD-LLCの4つのチャンネルのどれに通してもかまわない。
BD-LLCをI2C通信に使う
I2Cは、BD-LLCが真価を発揮する通信規格である。 なぜなら、データ線とクロック線の両方、つまりSDAとSCLの両方が双方向でなければならないからである。 これらの線はそれぞれ、BD-LLCのレベルシフトチャンネルのどれかに通すことができる。
この例でも引き続きADXL345 breakoutを使うが、今度はI2Cインターフェースに切り替えてみよう。 さらに別のI2Cデバイス、たとえばL3G4200D Gyroscope Breakoutを追加することもできる。 I2Cは2本の配線だけのインターフェースなので、BD-LLCにはそれぞれの基板の割り込み出力のような、追加の信号を通す余裕がある。
2つの3.3VのI2Cデバイスは、どちらも同じレベルシフトされたSDAとSCLの線を共有できる。 それぞれが固有のアドレスを持っている限り、さらに多くのI2Cデバイスを追加することもできる。
まとめ
LLCとレベルシフト全般に関連するリソースをいくつか紹介する。
- Schematic(回路図PDF)
- Eagle Files(Eagleファイルのzip)
- Philips AN97055(PDF):双方向レベルシフト回路について扱った優れたアプリケーションノート
- GitHub Repo(GitHubリポジトリ)
LLCの使いどころを探しているなら、次のようなチュートリアルもヒントになるかもしれない(いずれも英語)。
- Using the Arduino Pro Mini 3.3V(3.3V版Arduino Pro Miniの使い方):Arduinoにこだわりつつ3.3Vのセンサーを使いたいなら、3.3Vで動作するArduinoを使うという選択肢もある。そうすれば、そもそもLLCを用意する手間すら要らなくなる。
タグ: 通信、部品、接続ガイド
出典:Bi-Directional Logic Level Converter Hookup Guide(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
バイナリブラスターの組み立てガイド
Binary Blaster(バイナリブラスター)は、2進数での数え方や、10進数(や16進数)と2進数の間をすばやく変換する方法を学べるゲームである。 7セグメントディスプレイに値が表示され、プレイヤーはそれに対応する2進数を表すようにボタンを押すことに挑戦する。 ボタンを押せばそのビットが「立ち」、押さなければそのビットは「0のまま」になる。 ボタンは4つあり、それぞれが1ビットを表す。 つまり15通りの組み合わせがある。 15問すべてに正解すればクリアである。 経過時間のスコアも表示されるので、自分の最速記録を追いかけながら、より速くなるよう練習できる。
この製品はスルーホールはんだ付けキットとして販売されており、自分で組み立てる必要がある。
はんだ付けが初めてであれば、Binary Blaster PTHキットは始めるのにうってつけの製品である。 このガイドでは、キットに含まれる部品を1つずつ説明し、それぞれをどうはんだ付けするかを紹介する。
必要な道具
- はんだごて
- はんだ
- ニッパー
あるとよい追加の道具
- 保護メガネ
- フラックスペン
- はんだ吸取り線
- 洗浄用のブラシ(古い歯ブラシで十分)
- 洗浄用の脱イオン水(水道水でも代用可能)
参考になるチュートリアル:
スルーホールはんだ付けについてさらに一般的な知識を得たい場合は、次のようなチュートリアルもおすすめである。
- はんだ付けの基本(スルーホール編)
- Decoding Resistor Markings(抵抗器のカラーコードの読み方)
- Diode and LED Polarity(ダイオードとLEDの極性)
- Electronics Assembly - Washing(電子部品の組み立て:洗浄)
クイックスタート:最初の部品
10kΩの抵抗器を見つけよう。 茶、黒、橙、金という特定の縞模様が入っている。
なお、この模様は逆順になっていることもあるが、それでも正しい抵抗器である。
抵抗器のカラーコードについてさらに理解を深めたい場合は、Decoding Resistor Markingsのチュートリアルを参照してほしい。
脚を下向きに曲げる。
基板上の10kΩ抵抗器の位置を確認する。
抵抗器をPCBに挿入する。 この部品には極性がないため、どちらの脚をどちらの穴に入れても構わない。 このキットの一部の部品には極性があり、その際には正しい向きで挿入するよう特に注意を払う。
抵抗器を、ほぼ基板に密着するまで押し込む。
脚を少しだけ外側に曲げて、抵抗器を固定する。
基板を裏返す。 はんだごての「スイートスポット」を、脚と金属のリングの両方に触れるように当てる。 2秒間そのまま保持する。
接合部にはんだを流し込む。
まず、はんだを離す。
次に、こてを離す。
はんだ接合部は、次のような見た目になっているはずである。
余分な脚を切り落とす。
コンデンサ
0.1µFのコンデンサを2つ見つけよう。 これらは抵抗器とは少し見た目が異なる。 部品の底面から2本のリード線が伸びており、「104」という表記がある。 底面には「K5M」のような別の文字が書かれていることもある。
PCB上のそれぞれの位置を確認する。
コンデンサがPCBの表面に密着し、まっすぐ立っていることを確認する。 はんだ付けし、余分なリード線を切り落とす。
マイクロコントローラ
マイクロコントローラを見つけよう。 このマイクロコントローラはATmega328である。 この部品には極性があるため、基板に正しく取り付けるよう特に注意する必要がある。 切り欠きに注目してほしい。
次に、PCB上の対応する位置を確認する。 ここでも、PCBの白い印刷の中に同じような切り欠きの記号があることに注目してほしい。
切り欠きの向きを正しく合わせながら、ATmega328をPCBに配置する。 最初の1本の脚をはんだ付けする際(どの脚からでもよい)、部品がPCBに密着した状態を保つようにする。
この部品のはんだ付けが終わると、基板の裏面は、きれいに並んだ火山のような形のはんだ接合になっているはずである。
ブザーとスイッチ
PCB上のそれぞれの位置を確認する。
部品をPCBに配置する。 裏返してはんだ付けする。 終わったら、PCBは次のような見た目になっているはずである。
Note
ブザーには極性を示すマークが付いているが、基板にはんだ付けする向きはどちらでも問題ない。ブザーは向きにかかわらず正常に動作する。このガイドに沿って作業したい場合は、画像で示されているように「BIT 0」のシルクスクリーンに近い側に「+」が来るようにブザーを挿入するとよい。もし向きを間違えてはんだ付けしてしまった場合は、はんだごとで両方のスルーホールを加熱し、部品を慎重に取り外すことでやり直せる。はんだ吸取り器やスラップ法を使って、PTHパッドに残ったはんだを取り除こう。ピンから余分なはんだを取り除いたら、ガイドどおりの向きでブザーをスルーホールに戻し、ピンを再びはんだ付けする。PTH部品をやり直す際は、パッドが剥がれてしまう危険があるため、はんだ接合部を十分に加熱するよう気をつけよう。
光るボタン
4個のLED付きタクトボタンを見つけよう。
これらのボタンには極性がある。 白いプラスチックの脚の上面にある小さな「+」の印に注目してほしい。
PCB上の4か所の位置を確認する。
PCB上の極性マークに注目する。 ボタンの「+」側が、PCBの「+」マークと揃っていることを確認する。
はんだ付けする。 終わったら、基板は次のような見た目になっているはずである。
7セグメントディスプレイ
2個の7セグメントディスプレイを見つけよう。
これらのディスプレイには極性がある。 数字の下にある小数点の位置に注目してほしい。
PCB上の2か所の位置を確認する。
PCB上の極性マークに注目する。 ディスプレイの小数点が、PCBの小数点マークと揃っていることを確認する。 はんだ付けする。 終わったら、基板は次のような見た目になっているはずである。
電池クリップ
4個の電池クリップを見つけよう。
PCB上の4か所の位置を確認する。
これらの部品には極性があり、裏面が外側を向くようにはんだ付けする必要がある。 向きを間違えると、電池が収まらなくなる。 基板に密着し、裏面が外側を向いていることを確認する。
はんだ付けする。 終わったら、基板は次のような見た目になっているはずである。
スタンドオフ
4個のプラスチック製スタンドオフと4本の金属ネジを見つけよう。
なお、これらをPCBに取り付けるのにドライバーは必要ない。 手で締めるだけで十分である。
スタンドオフを取り付けると、Binary Blasterはテーブルの上に平らに置けるようになる。
電池
2本の単3形電池を見つけよう。
これらには極性があるため、「+」と「-」の向きを正しく合わせること。
電池をクリップに入れ、電源を入れて正しく取り付けられているか確認する。 電池が正しく入っていれば、LEDタクトボタンが点灯し、Binary Blasterに電源が入ったことを確認できるはずである。
ゲームの遊び方
まず、Binary Blasterの電源を入れる。 電源用のスライドスイッチはPCBの左上にある。 「ON」の位置(左側)にスライドさせる。
サウンドスイッチも確認しておくとよいだろう。 音を鳴らしたいかどうかに応じて、左右どちらかにスライドさせる。
何も反応がない場合、電池の向きが間違っている可能性がある。 極性をもう一度確認してほしい。
電源を初めて入れると、ボタンが右から左へ素早く点灯し、その後ディスプレイが円を描くように点滅を始める。 この点滅は、LEDとディスプレイが正しく動作しているかを確認するための「起動処理」の一部である。
ディスプレイが円を描くパターンで点滅している間、Binary Blasterは新しいゲームを開始する準備ができている。
新しいゲームを始めるには、いずれかのボタンを押すだけでよい。
ディスプレイに最初の値が表示される。 これは毎回異なる値になりうる。
その値に対応する2進数を、4つのボタンで入力する必要がある。 参考になる対応表を示す。
| 10進数 | 2進数 |
|---|---|
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
| 10 | 1010 |
| 11 | 1011 |
| 12 | 1100 |
| 13 | 1101 |
| 14 | 1110 |
| 15 | 1111 |
ボタンの使い方を示すいくつかの例を紹介する。
例1
ディスプレイに「1」と表示された場合、対応する2進数「0001」を入力する必要がある。 つまり、「BIT 0」ボタン(一番右のボタン)を押すということである。 残りの3つのボタンには触れてはいけない(押さないこと)。 こうすることで、「BIT 0」だけを立てる(0のままにせず1にする)ことになる。
例2
ディスプレイに「2」と表示された場合、対応する2進数「0010」を入力する必要がある。 つまり、「BIT 1」ボタン(右から2番目のボタン)を押すということである。 こうすることで、そのビットを立てる(0のままにせず1にする)ことになる。
例3
ディスプレイに「5」と表示された場合、対応する2進数「0101」を入力する必要がある。 つまり、「BIT 0」と「BIT 2」のボタンを同時に押すということである。
数秒以内に正しい値を入力できなければ、Binary Blasterはタイムアウトし、そのラウンドは失敗となる。 もう一度挑戦するには、いずれかのボタンを押すだけでよい。
正しい2進数を入力すると、次のランダムな値に進む。 全部で15問ある。 タイムアウトすることなく15問すべてを変換できればクリアである。
新しいゲームを始めるたびに、出題順序は変わる。 これは、パターンを筋肉記憶で覚えるのではなく、変換そのものを学べるようにするための工夫である。 また、15問すべてを終えると、ディスプレイに「スコア」が表示される。 これは、クリアするのにかかった秒数である。 変換の練習を重ねるにつれて、この数字をどんどん小さくできるはずである。 健闘を祈る。
標準の遊び方(10進数変換)を極めたら、16進数表記から2進数への変換にも挑戦してみるとよい。 16進モードでは、Binary Blasterは10〜15の値を16進数で表示する。 なお、小さい値(1〜9)はどちらの表記でも同じであるため、10進数のまま表示される。
16進モード
16進モードで遊ぶには、次の3つの手順に従う。
- Binary Blasterの電源を切る。
- 「BIT 0」ボタンを押したままにする。
- 「BIT 0」ボタンを押したまま、Binary Blasterの電源を再び入れる。ディスプレイに「A b C d E F」と表示されるはずである。これで16進モードに入った。標準の10進モードに戻すには、ボタンを何も押さずに電源を入れ直すだけでよい。
参考になる16進数の対応表を示す。
| 10進数/16進数 | 2進数 |
|---|---|
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
| A | 1010 |
| b | 1011 |
| C | 1100 |
| d | 1101 |
| E | 1110 |
| F | 1111 |
Binary Blasterを楽しんでもらえたら幸いである。
ボタンのトラブルシューティング
ボタンのひとつが点灯しない場合でも、心配は要らない。簡単な直し方がある。 LEDが点灯しない原因としてもっとも多いのは、極性の間違いである。 Binary BlasterのPCBには、これを直すための特別な工夫が施されている。 2本の配線パターンを切断し、2つのジャンパーを閉じるだけで、ボタンを取り外すことなく極性を入れ替えられる。
まず、問題のあるボタンの隣にあるはんだジャンパーを見つける。 それぞれのボタンには2つのジャンパーがあり、PCBの裏面、各ボタンの近くにある。
それぞれのジャンパーには、中央のパッドとデフォルトの極性設定をつなぐ小さな配線パターンがある。 この小さな配線パターンは見えにくいことがあるが、明るい赤色をした細い金属の筋として見えるはずである。 ホビーナイフ(Xactoナイフとも呼ばれる)を使って、デフォルトの配線パターンを切断する。
はんだごてを使って、中央のパッドともう一方の外側のパッドの間にジャンパーを作る。
これで、そのLEDにつながる配線パターンの極性が入れ替わり、LEDが点灯するようになるはずである。
まとめ
Binary Blasterの設計をさらに理解したい場合は、まず設計ファイルを確認してみるとよい。 ハードウェアとファームウェアのファイル一式は、GitHubリポジトリで公開されている。
Binary BlasterのゲームはArduinoで再プログラムできる。 つまり、ゲームのルールを変えたり、機能を追加したり、まったく別のプロジェクトに作り変えたりすることもできるということである。 Arduinoでの再プログラムについて詳しくは、次のチュートリアルを参照してほしい。
タグ: オーディオ、ゲーム、接続ガイド、プログラミング、はんだ付け
出典:Binary Blaster Assembly Guide(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
LilyPadの基礎:導電糸で縫う
縫えるエレクトロニクスとは何か
縫えるエレクトロニクス(sewable electronics)は、伝統的な手芸の工程(裁縫、ファッションデザイン、テキスタイルデザイン)と、電気工学、コンピュータサイエンス、ハードウェアのスキルを組み合わせたものである。
縫えるエレクトロニクスを使えば、e-テキスタイル(電子繊維)を作ることができる。 これは、従来の電子工作というよりも手芸やアート作品に近い見た目をした、身に着けられる柔軟なプロジェクトであることが多い。 多くのe-テキスタイルプロジェクトでは、配線の代わりに導電糸や導電性の布のような柔軟な導電性の素材を使う。 このガイドで扱うプロジェクトでは、導電糸を使って回路を縫い合わせていく。
参考になるチュートリアル:
回路という概念に初めて触れるなら、続きを読む前に次のチュートリアルにも目を通しておくとよい。
LilyPadとは何か
LilyPadシステムは、柔らかく、縫うことができ、インタラクティブなe-テキスタイルプロジェクトを作るために設計された、縫い付け可能な電子部品の集まりである。 LilyPadの部品を使うことは、手芸というレンズを通して電子工作を実験する優れた方法である。 それぞれのLilyPadの部品には、縫いやすいように大きな導電性の縫い付けタブが付いており、布を引っかけたり糸を切ったりしないよう、丸みを帯びた形をしている。
LilyPadシステムは、コロラド大学ボルダー校でコンピュータサイエンスの博士号を取得する過程にあった、Leah Buechleyによって設計された。 2007年に発売された商用版キットは、LeahとSparkFun Electronicsが共同で設計したものである。
一部のLilyPadの部品は、ProtoSnapという構成で提供されている。 これは、LED、電池ホルダー、スイッチ、ボタンといった個々の部品が、あらかじめひとつの機能する回路基板としてつながっている構成である。 これにより、プロジェクトに組み込む前に、その回路を思いどおりにプログラムして試すことができる。 ProtoSnap基板は、LilyPadプロジェクトの制作を始める準備が整ったら、個々の部品に簡単に切り離せるように設計されている。
これは、パネル構成で提供されているLilyPad製品とは少し異なる。 LilyPadのLEDはひとつながりになってはいるものの、機能する回路としてつながっているわけではない。 回路に縫い込む前に、それぞれを切り離す必要がある。
導電糸とは何か
導電糸は、ステンレス鋼の繊維で作られた特殊な糸である。 銅線の代わりに使うことで、LilyPad(あるいは他のe-テキスタイル)の部品どうしをつないで回路を作ることができる。
LilyPad Sewable Electronics Kitのようなキットを使っているなら、導電糸のボビンが同梱されているはずである。
Note
このチュートリアルでは、手縫いの技法を中心に扱うが、導電糸はミシンや刺しゅうミシンでも使うことができる。
導電糸で縫う
Note
このチュートリアルの例では、LilyPadコイン電池ホルダーとLilyPad LEDを手縫いの導電糸回路でつなぐ手順を紹介する。ここで紹介する技法は、どのLilyPadの部品どうしをつなぐ場合にも応用できる。
たいていのLilyPadプロジェクトでは、導電糸を使って電気回路を完成させる。 以降のセクションでは、基本的な縫い方の技法と、導電糸を使って動作する回路を作るためのちょっとしたコツを紹介する。 針と糸の扱いにすでに慣れている場合でも、特にLilyPadの部品を縫う際に役立つ内容が含まれているはずである。
部品を固定する
それぞれのLilyPadの部品には、縫い付けタブと呼ばれる、導電性の銀色のパッドが付いた大きな穴がある。 これらのタブは、針と糸を穴に何度も通せるよう、十分な余裕を持って設計されている。 回路を縫い始める前に、つなぎたい縫い付けタブを確認し、デザインの中で扱いやすい位置になるよう向きを調整しておこう。 SparkFunのテンプレートに沿って作業する場合、各部品は縫いやすさと見た目の両方を考慮した、決まった位置に配置されている。
縫っている間にLilyPadの部品がずれないよう、少量のホットグルー(推奨)または布用接着剤で布に固定しておくことをおすすめする。 その際、縫い付けタブの穴を誤ってふさいでしまわないように注意すること。
ステッチをどこに通すか計画するために、マーカーで部品どうしを結ぶ線を描いておくとよい。
針に糸を通す
導電糸を60cmほど(およそ2フィート)切り取る。 糸の片端を針の穴(目)に通し、5インチ(約13cm)ほど糸端を残して引き抜く。
プロジェクトを縫い始める前に、糸が布から完全に抜けてしまわないよう、糸の長いほうの端に結び目を作っておく必要がある。 単純な片結びや本結びでもよい。 次のセクションでは、他にいくつかの結び方も紹介する。
スターターノット
スターターノットは、布の上に直接結び目を作って縫い始める方法である。
キルターズノット
キルターズノットは、もう少し高度な結び方で、糸に手早くしっかりとした結び目を作る方法である。 何度か練習すれば、非常に素早く結べるようになる。
Note
プロジェクトに取り組んでいる間は、部品を傷めないよう、必ず電池を外しておくこと。
LilyPadの縫い付けタブへの接続
回路の中でLilyPadの部品どうしをつなぐには、縫い付けタブの周りに導電糸を巻きつけるように縫っていく。 空の縫い付けタブに糸を巻きつけるときは、必ず3〜4回ループさせ、そのたびに糸をしっかりと締めることが重要である。 これにより、糸と縫い付けタブの間に、電気的にも物理的にもしっかりとした接続が生まれる。 次のステッチに進む前に、ループをしっかり締めておくこと。
縫い方の基本
縫い付けタブの周りにループを縫ったら、ランニングステッチ(並縫い)を使って、1本の連続した導電糸でLilyPadの部品どうしをつないでいく。 次の手順で行う。
- 針を、縫い進めたい方向へ布の中を約6mm(1/4インチ)進めて刺す。
- 布にぴったり沿うように、糸のたるみを引いて締める。
- 縫い進める方向にさらに約6mm、針を布の下から上へ刺す。
- 布にぴったり沿うように、糸のたるみを引いて締める。
この工程を繰り返しながら、つなぎたい次のLilyPadの部品まで、ステッチの間隔を均一に保ちながら進んでいく。
ランニングステッチと隠しステッチ
基本的なランニングステッチでは、布の表と裏の両方に均等にステッチが現れる。
プロジェクトの表面にステッチを見せたくない場合は、プロジェクトの裏側では長めのステッチを、表側では非常に小さなステッチを作るとよい。 この方法は「隠しステッチ」と呼ばれる。
縫っている間は、導電糸が絡まったり結び目ができたりしていないか確認するため、ときどき布を裏返してチェックしよう。 裁縫を始めたばかりであれば、心地よく縫えるようになるまでに多少の練習が必要かもしれない。 焦らず、時間をかけて縫うようにしよう。 もし糸が切れてしまっても、既存の導電糸の上から重ねて縫うことで、電気的な接続を保ちながら続けることができる。
両方のステッチ方法を使えば、1本の導電糸でLilyPadの部品どうしをつなぐことができる。 2つのLilyPadの部品をつなぐには、縫い付けタブの周りに3〜4回ループさせたあと、そのまま縫い続ければよい。
複数のLilyPadの部品をつなぐ
3つ以上のLilyPadの部品をつなぐには、糸を切って新しく縫い始めるのではなく、そのまま次の部品まで縫い進め、3〜4回ループさせ、必要な分だけこれを繰り返す。 部品どうしが接続を共有する場合、新しい糸に取り替える必要はない。
接続を仕上げる
すべての部品の接続を終えたら、仕上げの結び目を作る。 糸の切れ端が電気的なショートを引き起こすことがあるため、結んだあとは必ず余分な糸を切り取ること。
導電糸による短絡(ショート)のチェック
プロジェクトの中に、ほつれた糸や結び目の切れ端が残っていないか注意しよう。 回路の正極(+)側にある導電糸の切れ端が、うっかり負極(-)側に触れてしまうと、短絡(ショート)が起きることがある。 短絡が起きると、電池が自分自身に接続された状態になり、プロジェクトの残りの部分をバイパスして、電池から望ましくない量の電流が流れ出してしまう。 回路の別の部分のステッチの真上を縫ってしまうことでも、ショートが起きることがある。
Note
e-テキスタイルでもっともよくある短絡のひとつは、電池ホルダーの負極タブの近くにあるほつれた糸の切れ端が、電池に触れてしまうことで起きる。プロジェクトに電源を入れる前に、必ず縫い目を確認しよう。
ステッチどうしが交差したり、回路の他の部分に触れたりしないようにすることが重要である。 これらのプロジェクトで使う電池は、短絡しても発火したり感電したりする心配はまずない(熱くなることはある)が、より高い電圧のプロジェクトや電源では危険を伴うこともある。
電池を入れて完成した回路をテストする
すべての部品を導電糸でつなぎ終えたら、完成した回路には電源が必要である。 コイン電池を、正極(+)側を上にして電池ホルダーに入れる。
Note
プロジェクトの作業を続ける必要がある場合は、部品を傷めないよう、必ず電池を取り外しておくこと。
導電糸での接続が終わったら、回路のスイッチを入れて、何が起こるか確認してみよう。 もし回路が動作しない場合は、どこかがショートしているか、接続が緩んでいるか、部品が逆向きになっているか、あるいは単に電池切れかもしれない。
電池ホルダーのスイッチを入れると、導電糸を通じて電流が回路の他の部分へと流れる。
電流と電気についてさらに知りたい場合は、次のチュートリアルも参考になる。
トラブルシューティング
e-テキスタイルのプロジェクトに取り組んでいると、接続が緩んでLEDが点灯しなかったり、回路が誤動作したりする問題に出会うことがある。
回路がときどきしか動かない場合:接続の緩みを確認する
導電糸がLilyPadの部品の縫い付けタブにしっかりと接続されていないと、電流が安定して流れなくなる。 プロジェクトを動かすと、導電糸が縫い付けタブから離れて、回路が切断されてしまうことがある。 対処法としては、可能であればピンセットや針でステッチをしっかりと引き締める。 既存の糸の上から重ねて縫うことで、より強い張力を作り、縫い付けタブにしっかりと糸を固定することもできる。
回路が動かない場合:極性を再確認する
一部のLilyPadの部品には極性があり、電流が一方向にしか流れない。 回路に誤って縫い込んでしまうと、その部品は機能しない。 縫う前に、縫い付けタブのラベルを再確認し、向きが正しいかどうかを確かめよう。
そのほか確認すべきこと:
- 電池ホルダーのスイッチがONの位置になっているか確認する
- 電池切れになっていないか確認する。テスターを使って確認できる。予備の電池を試してみるのもよい
- プロジェクトのテンプレートに沿っている場合、部品が正しい構成でつながっているか再確認する
それでも問題が解決しない場合は、テスターを使って導通を確認したり、回路の問題を調べたりすることができる。 テスターの使い方のチュートリアルが助けになるはずである。
プロジェクトを大切に扱う
被覆のある銅線とは異なり、導電糸には絶縁がされていない。 そのため、糸はむき出しの配線のようにふるまい、はぐれた繊維どうしが触れ合うと誤って短絡してしまうことがある。
縫い終えてテストが済んだあとに誤った短絡が起きないようにするため、糸の上に布用接着剤や布用塗料を薄く塗るか、もう1枚布を重ねることをおすすめする。 これは、身に着けるプロジェクトや立体的なプロジェクトでは特に重要である。 導電糸を扱うときは、金属製の作業台の上で作業しないこと。
プロジェクトの手入れ
プロジェクトが汚れた場合は、電池を取り外し、中性洗剤を使って手洗いすること。 プロジェクトは自然乾燥させること。乾燥機を使うとLilyPadの部品や縫い目を傷める可能性がある。
まとめ
これで、導電糸を使った縫い方の基本が身についたはずである。 LilyPad Sewable Electronics Kitに含まれる、次のようなプロジェクトにもぜひ挑戦してみてほしい(いずれも英語)。
- Project 1: Glowing Pin(光るピンバッジ)
- Project 2: Illuminated Mask(光るマスク)
- Project 3: Light-Up Plush(光るぬいぐるみ)
- Project 4: Night-Light Pennant(光るペナント)
タグ: 概念、e-テキスタイル技法、e-テキスタイル、LilyPad、スキル、ウェアラブル
出典:LilyPad Basics: E-Sewing(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。
LilyPadの基礎:プロジェクトへの電源供給
このガイドでは、LilyPadプロジェクト(e-テキスタイルとArduinoベースの両方)への電源供給の選択肢、電池の安全な取り扱いとお手入れ、そしてプロジェクトの消費電力を計算し考慮する方法について解説する。 ウェアラブルや布を使ったプロジェクトには独自の注意点があるため、導電糸による接続から配線による接続へ切り替えたほうがよい場面についても扱う。
LilyPadプロジェクトは身に着けたり持ち運んだりできることが多く、そのため完成したプロジェクトを持ち歩くには電池を使うことになる。 とはいえ、単に電池をつなぐ以外にも、プロジェクトに電源を供給する方法はいくつかある。 以降のセクションで、さまざまな電源とLilyPadシステムで使える選択肢を詳しく見ていこう。
Note
警告:LilyPadのエコシステムは3.3Vで動作するように設計されており、このシリーズのたいていの電源基板は3VのCR2032コイン電池か3.7Vのリチウムポリマー電池のどちらかに対応している。一部のLilyPad基板には電圧レギュレータが搭載されており、使用できる電源にもう少し柔軟性がある。代替の電源の選択肢については、このガイド全体を通して解説していく。
どの電源を使うべきか、電池でどれだけの時間動かせるか、そのほかの注意点を判断する助けになるよう、いくつかのコツをまとめた。 プロジェクトに必要な電圧、プロジェクトで使うLilyPad基板の合計消費電流、そして電池容量を把握しておくことが、最適な動作を実現する電源を選ぶ助けになる。
参考になるチュートリアル:
以下の概念に馴染みがなければ、続きを読む前にこれらのチュートリアルを確認しておくことをおすすめする。
消費電力の計算:動作電圧
たいていのLilyPadプロジェクトは、3.7Vの充電式リチウムポリマー電池で問題なく動作する。 それぞれのLilyPad基板の中核となるマイクロコントローラや主要なセンサー、部品には、それぞれ固有の動作電圧が定められており、データシートに記載されている。 製品のデータシートは、SparkFun.comのカタログページのDocumentsタブから見つけられる。
データシートを読む際は、Operating Voltages(動作電圧)の項目を探そう。 たいていのドキュメントには最小電圧と最大電圧の範囲が示されている。 製品にデータシートが添付されていない場合は、回路図を確認するという方法もある。
基板に十分な電圧を供給しないと、正しく動作しないことがある(LilyPad Arduino上のコードの動きが不安定になったり、シリアルポートに表示されるセンサーの値がおかしくなったり、LEDが暗くなったりすることがある)。 逆に、推奨範囲を超える電圧をプロジェクトに供給すると、基板を損傷したり、動作時間を大幅に縮めたりする可能性がある。 プロジェクトに選ぶ電源が、基板の推奨範囲に収まっていることを必ず確認しよう。
よく使われるLilyPad基板と、その必要条件の一覧を示す。 中央の列は、入力電圧から基板上で調整された(レギュレートされた)電圧を示している。 内蔵レギュレータのない基板を選ぶ場合は、電源がプロジェクトと互換性があるかどうかに特に注意を払う必要がある。 最後の列は、それぞれの基板が受け付けられる入力電圧を示しており、これはLilyPadプロジェクトの推奨動作電圧である3.3Vを上回ることもある点に注目してほしい。
| 基板 | 電圧レギュレーション | 入力電圧 |
|---|---|---|
| LilyTiny | なし | 1.8V〜5.5V |
| LilyTwinkle / LilyTwinkle ProtoSnap | なし | 1.8V〜5.5V |
| LilyMini ProtoSnap | 3.3V | 1.62V〜3.63V、USB経由で5.0V |
| LilyPad Arduino Simple | なし | 2.7V〜5.5V |
| LilyPad Arduino SimpleSnap | 3.3V | 2.7V〜5.5V |
| LilyPad Arduino USB - ATmega32U4 Board | 3.3V | 2.7V〜5.5V |
| LilyPad USB Plus | 3.3V | 1.8V〜5.5V |
| LilyPad Arduino 328 Main Board | なし | 2.7V〜5.5V |
| LilyPad XBee | 3.3V | 1.8V〜9V |
| LilyPad Simblee BLE Board - RFD77101 | 3.3V | 1.8V〜3.6V |
| LilyPad MP3 | 3.3V | 3.7V〜6V |
Note
プロジェクトの中の一部の部品が動作に3.3V以上を必要とする場合、それでもLilyPad Arduinoと組み合わせて使えるだろうか。LilyPadシステムのたいていの基板はシステム電圧(3.3V)で動作するように設計されているが、他の縫い付け可能な製品や縫い付けできない製品を組み合わせる場合、5Vを必要とするセンサーや基板に出会うこともある。その場合、まずはその基板の3.3V版を探してみよう。必要であれば、双方向ロジックレベルコンバータを使って接続することもできる。
消費電力の計算:消費電流
プロジェクトで使うLilyPad基板の動作電圧を確認するのに加えて、プロジェクトが消費する電流と、マイクロコントローラや電池が供給できる電流も比較しておく必要がある。
プロジェクトの消費電流は、プロジェクトで使用するLilyPad基板の総数によって決まり、これはLilyPad Arduinoで制御する回路にもe-テキスタイルのプロジェクトにも当てはまる。 電源や電池がプロジェクトに必要な電流を供給できない場合、回路が不安定で予測できない動作をすることがある。
電圧と同じように、それぞれのLilyPad基板のデータシートを確認することで、プロジェクトがどれだけの電流を消費するか見積もることができる。
LilyPad Arduinoを使うプロジェクトでは、それぞれのI/O(入出力)用の縫い付けタブがどれだけの電流を供給できるかを確認しておこう。LEDのようなLilyPad基板の数は、この値によって制限される。 たいていのLilyPad Arduinoでは、これはI/O用縫い付けタブ1つあたり40mAである。
また、必要な電流を少なめに見積もるよりも、多めに見積もっておくほうが良い習慣である。
モーターや大量のLEDのように大きな電流を必要とする部品をプロジェクトで使う場合、電源の選び直しが必要になったり、LilyPad Arduino用と電力を大きく消費する基板用とで別々の電源を用意する必要が出てきたりすることもある。
LilyPad基板を扱う経験を積んでいくにつれて、各基板のデータシートを確認して計算するだけで、プロジェクトに必要な電流量を簡単に見積もれるようになるはずである。 デジタルマルチメーターや、電流を表示できる可変DC電源を使って、プロジェクトが実際に消費する電流を正確に測定することもできる。
実例:LilyPad LEDとLilyTiny
LilyPadプロジェクトについてよく寄せられる質問の例をひとつ見てみよう。 LilyTiny(あるいはLilyTwinkle)基板には、LEDを何個まで接続できるだろうか。
典型的なLilyPad LEDは、最大輝度でおよそ20mAの電流を消費する。 これに使用するLEDの個数を掛け、全体を動かすLilyPad自身の消費分として10mAを加えれば、おおよその平均消費電流が見積もれる。
例:
LilyTiny基板に10個のLilyPad LEDを接続したプロジェクトの場合
20mA × 10 + 10mA = 210mA
LilyPad LEDの扱いについてさらに詳しい情報は、Powering LilyPad LED Projectsのチュートリアルを参照してほしい。
導電糸の抵抗を考慮する
ここまでの計算が終わったところで、もうひとつ考慮すべき要素がある。導電糸の抵抗である。 抵抗がほとんどない銅線とは異なり、導電糸の抵抗は、糸を作る金属の種類や糸の太さによって変わってくる。 多くの導電糸は、抵抗値をΩ/フィートという単位で表示している。 この数値は小さいほどよい。抵抗が小さいほど、プロジェクトで使う部品により多くの電気を届けられるからである。
プロジェクトが完璧に動作すると期待していても、接続の距離による抵抗が、回路にさらなる問題を引き起こすことがある。
オームの法則という基本的な電気の性質によれば、抵抗の高い素材に電流を流すと電圧が降下する。 電流が大きいほど、電圧の降下も大きくなる。 つまり、LilyPadに電力を供給するLiPo電池が3.7ボルトを出力していても、糸を通って部品に届くころには3.0ボルト以下まで下がっていることがあるということである。 LEDのような多くの電気部品は、正しく動作するために一定の電圧を必要とする。 電圧降下を最小限に抑えるには、電源となる接続部分の抵抗を減らす必要がある。 方法はいくつかある。
- 電源用の接続部分の長さをできるだけ短くする。抵抗は長さに比例して増えるため、長さを短くすれば抵抗も小さくなる。
- 糸自体の抵抗を減らす。太い糸は細い糸よりも抵抗が小さく、複数本をまとめて使うことでさらに抵抗を減らせる。
Note
ヒント:複数本の糸を束ねた(あるいは編んだ)ものを基布に縫い付けるには、非導電性の糸を使うとよい。部品を接続する際に、その太い糸の束に導電糸を縫い付けられるよう、縫い目の間に十分な余白を残しておこう。
導電糸の代替手段
導電糸を長い距離にわたって這わせる必要がある大きなプロジェクトや、LilyPad Pixel基板を大量に使うような電力消費の大きいプロジェクト、あるいは糸が負荷で切れやすい箇所には、ウェアラブル向けによく機能する次のような代替手段がある。
導電性リボン
柔軟なより線がナイロンリボンに織り込まれた専用のリボンは、抵抗の低い導電糸の代替品として優れている。 リボンの中にある金属糸にはんだ付けする必要がある。
導電性ファブリックトレース
薄い導電性の布の帯を使って、独自の低抵抗トレースを作ることもできる。 布やリボンに貼り付けるにはアイロン接着剤を使い、そのトレースに部品を接続するには導電糸で手縫いすることをおすすめする。
導電糸と同じように、ファブリックトレースの絶縁も忘れないようにしよう。
より線
もうひとつの代替手段は、導電糸から従来型の配線に切り替えることである。 配線は糸よりもはるかに抵抗が小さいため、導電糸の回路よりも多くのLEDを使うことができる。 縫うのではなくはんだ付けに切り替える必要があるが、通常糸を接続するのと同じ縫い付けタブに配線をはんだ付けするのは簡単である。
配線は、繰り返し曲げられると切れやすい。 高い柔軟性が必要なウェアラブルプロジェクトには、単線ではなくより線を使い、非常に柔軟なシリコン被覆の配線を探すとよい。 洗濯するプロジェクトでは、むき出しのより線に水が染み込み、時間の経過とともに腐食してしまうことがある。 これを防ぐには、配線の切り口に少量のシリコンシーラントを塗るとよい。
Note
はんだ付けする際は、近くの布を溶かしたり焦がしたりしないよう注意すること。熱を加える前に、LilyPad基板の裏側を裏地の布から浮かせるか、絶縁しておこう。
はんだ付けや配線の扱いが初めての場合は、次のチュートリアルを確認することをおすすめする。
プロジェクトの消費電力と注意点を把握できたら、次はプロジェクトの電源を選ぶ番である。
電源の選択肢:内蔵USBコネクタを使う
LilyPad Arduinoプロジェクトのプログラミング作業中は、LilyPad ArduinoとパソコンをつなぐUSBケーブルから供給される電力を使うことができる。 試作中にコードを書き込み、基板に電源を入れるには、LilyPad Arduinoのスライドスイッチが必ずONの位置になっていることを確認しよう。
この方法は、内蔵のマイクロUSBポートを持つLilyPad Arduinoにも、プログラミング用ヘッダーとLilyPad FTDI Basic Breakoutを使うタイプにも使える。
マイクロUSBコネクタを持つLilyPad基板は、Spectacleシリーズや携帯電話の充電バックアップに使われるような、5Vのリチウムイオン電池パックでも電源を供給できる。
プロジェクトが持ち運び可能でもウェアラブルでもない場合(壁掛けや常設展示など)は、5Vのウォールアダプタ電源を使うという選択肢もある。 専用の電源に接続すれば、プロジェクトの電池を絶えず交換したり充電したりする必要がなくなる。
Note
マイクロUSBコネクタが付いたウォールアダプタや電池パックを見つけたが、LilyPadプロジェクトに使えるだろうか。マイクロUSBだからといって、その電池パックが必ずしもプロジェクトに適しているとは限らない。SparkFunのカタログ以外から電池パックを調達する場合は、パッケージや製品のラベルを必ず確認し、5V電源であることを確かめよう。
LilyPad Simple Powerは柔軟性のある基板であり、充電式電池にもマイクロUSBケーブル経由のウォールアダプタにも対応できるため、電池コネクタが内蔵されていないLilyPadプロジェクトに使うことができる。
電源の選択肢:充電式リチウムポリマー電池
Note
LilyPadのJSTポートには、必ず3.7VのLiPo電池を接続すること。同じコネクタを使っていても、LiPo以外の電池をこれらのJSTポートに接続してはいけない。充電回路が電池を損傷する可能性がある。電池の電源線とグラウンド線の向きは、メーカーによって逆になっていることがあるため、必ず確認すること。SparkFunが扱うすべてのLiPo電池は標準的な構成になっている。
多くのLilyPad製品には、3.7Vのリチウムポリマー(LiPo)電池を接続するためのJSTコネクタが搭載されている。 これらの基板には充電回路が内蔵されており、USB接続でパソコンやウォールワートにつなぐとLiPoを充電できる。
SparkFunでは、LilyPadシステムと互換性のある3.7Vリチウムポリマー電池を各種取り扱っている。 どの容量の電池を選ぶかは、プロジェクトの想定稼働時間やサイズの制約など、さまざまな要因によって決まる。
LiPo電池の使用と充電
Note
LilyPadプロジェクトは手洗いできるが、洗う前には必ず電池を取り外し、電池を戻す前に数日間しっかりと自然乾燥させること。
充電機能を備えたそれぞれのLilyPad基板には、デフォルトの充電レートが設定されている。 このデフォルトの充電電流が100mAに設定されている場合、100mAhの電池は1時間で、1000mAhの電池は10時間で充電できるということになる。 基板が100mAで充電するように設定されているため、それより低い容量のLiPo電池(たとえば40mAhのLiPo電池)を接続して充電することはおすすめしない。
Note
充電回路を内蔵するたいていのLilyPad製品は100mAに設定されているが、LilyPad MP3とLilyPad Simple Powerのデフォルトの充電レートは500mAである。設定された充電レートより容量の小さいLiPo電池を使う場合は、SparkFun Adjustable LiPo Chargerを使って別途充電することをおすすめする。
接続した電池を充電するには、基板をUSB電源に接続する。 電池の充電中は「CHG」LEDが点灯する。 電池が満充電になると、このLEDは消灯する。
USB電源を接続したままの状態でも、LiPo電池を基板に恒久的に接続しておいて問題ない。 電池が過充電になることはない。 とはいえ、充電中の電池をそのまま放置しないことをおすすめする。
Note
電池を挿抜する前は、必ずLilyPad基板の電源を切ること。
電池のコネクタはきつくはまっていることがあり、取り外しにくいことがある。電池を取り外す際は、決して配線を引っ張らないこと。 ラジオペンチやニッパーをプラスチックの部分に添えて、コネクタからプラグを優しく引き抜こう。
ヒント:プラスチック製の電池コネクタの上部には小さな「突起」が2つあり、ホビーナイフで削り取ると電池を取り外しやすくなる。
Note
JSTコネクタが付いたかっこいい電池パックを見つけたが、LilyPadプロジェクトに使えるだろうか。JSTコネクタはよく使われる種類のコネクタであり、それが付いているからといってLilyPadと互換性があるとは限らない。SparkFunのカタログ以外から電池を調達する場合は、必ず次の点を確認しよう。3.7Vか。充電式のリチウムポリマー/リチウムイオン電池か。
LiPo電池の安全な取り扱いとお手入れ
Note
警告:LiPo電池は、扱いを誤ったり損傷したりすると、発火や爆発の恐れがある。穴があいたり高温にさらされたりすると、不安定になり危険な状態になることがある。
LiPo電池は充電式の電源としてプロジェクトに優れた選択肢だが、いくつかの安全上の注意点がある。 このセクションでは、プロジェクトでLiPoを安全に扱い、使用するためのコツを紹介する。
保管
- 電池は必ず、鋭利なものがない収納場所に保管すること。プロジェクトに電池を組み込む際は、電池を挟んだり、突き刺したり、負荷をかけたりする可能性のある部分から離しておくこと。
- ヘアピンやネックレスなど、金属製あるいは導電性のある物と一緒にLiPo電池を運んだり保管したりしないこと。
- プロジェクトに組み込んだ状態でも保管中でも、電池は涼しく乾燥した場所に保つこと。プロジェクトを長期間使わない予定であれば、電池を取り外して別に保管すること。
熱と湿気を避ける
- LiPo電池を傷める恐れのある環境から遠ざけること。LiPo電池を液体に浸さないこと。プロジェクトを洗う必要がある場合は、電池を取り外すこと。
- 熱源の近くで電池を使ったり保管したりしないこと。プロジェクトに電池を固定するには、面ファスナーを使うか、ポーチに縫い付けるか、プラスチックの収納ケースに入れるとよい。LiPo電池の上や周囲に直接アイロンをかけたりホットグルーを使ったりしないこと。
ストレインリリーフ
これらのLiPo電池を使う際の欠点のひとつが、電源接続部分の脆弱さである。 このタイプの電池は機器への恒久的な組み込みを想定して作られており、ウェアラブルでよくあるように頻繁に取り外すことは想定されていない。 電池に内蔵された保護回路の端子から、うっかり配線を引っ張って壊してしまうことがある。
配線を横に寄せて絶縁テープで固定することで、ストレインリリーフ(負荷の分散)を施すことができる。これにより、取り外す際に電池への接続部分にかかる負荷を和らげられる。
使用前に毎回電池を点検する
- LiPo電池の短絡や損傷は、必ずしも見た目で分かるとは限らない。膨らみ、発熱、その他の変化がないか確認すること。電池が損傷しているように見えたら、すぐに取り外すこと。
- 使用中、充電中、保管中に電池から異臭がしたり、発熱したり、変色や変形が見られたり、少しでも異常な様子が見られたりした場合は、すぐにプロジェクトや充電器から取り外し、使用をやめること。電池は必ず適切な方法で廃棄すること。ゴミ箱に捨ててはいけない。地域の電子廃棄物処理団体に、電池の廃棄方法について問い合わせること。
電源の選択肢:コイン電池
LilyPadシステムには、3VのCR2032コイン電池を1枚収める基板もある。 これらの電池はたいてい使い切りだが、充電式のコイン電池がホルダーに収まる場合もある。
CR2032という電池の名前には、いくつかの重要な情報が含まれている。
- Cはリチウム電池の種類を示す
電池を選ぶ際は電圧(3V)を確認するのに加えて、名前の末尾2桁の数字にも特に注意を払おう。互換性がありそうに見えても、LilyPadの電池ホルダーに対してわずかに大きすぎたり小さすぎたりする電池もある。
LilyPad製品ラインには、カスタムプロジェクトに接続できるスイッチ付きの単体電池ホルダーがあるほか、LilyMini基板に内蔵されているものや、一部のProtoSnap製品にも用意されている。 SparkFunでは、小さなフットプリントが必要なプロジェクトや、はんだ付けを好むユーザー向けに、縫い付けタブのないLilyPad以外のコイン電池ホルダーも扱っている。
Note
LilyPadの電池ホルダーを2つ直列につないだり、見つけてきた2電池パックを使ったりしてもよいだろうか。これは、電源を供給するLilyPad基板によって異なる。3Vの電池を2つ直列にすると6Vが供給されるが、一部のLilyPad基板にはオンボードのレギュレーション回路がなく、3Vを超える電圧を供給すると損傷する可能性がある。たとえばLilyTinyやLilyTwinkle基板は2.4V〜5.5Vの範囲でもっともよく動作する。このような場合は、リチウムイオン電池やリチウムポリマー電池のほうがプロジェクトに適しているかもしれない。プロジェクト固有のニーズに合った電池を選ぶコツについては、消費電力の計算のセクションを参照してほしい。
電池の安全な取り扱いとお手入れ
Note
リチウム金属電池は、扱いを誤ったり損傷したりすると、発火や爆発の恐れがある。穴があいたり高温にさらされたりすると、不安定になり危険な状態になることがある。
このセクションでは、プロジェクトでコイン電池を安全に扱い、使用するためのコツを紹介する。
保管
- ヘアピンやネックレスなど、金属製あるいは導電性のある物と一緒にコイン電池を運んだり保管したりしないこと。複数のコイン電池をばらばらのまま一緒に保管しないこと。電池どうしが接触して短絡し、放電してしまうことがある。
- プロジェクトに組み込んだ状態でも保管中でも、電池は涼しく乾燥した場所に保つこと。プロジェクトを長期間使わない予定であれば、電池を取り外して別に保管すること。
熱と湿気を避ける
- コイン電池を傷める恐れのある環境から遠ざけること。コイン電池を液体に浸さないこと。プロジェクトを洗う必要がある場合は、電池を取り外すこと。
- 熱源の近くで電池を使ったり保管したりしないこと。プロジェクトに電池を固定するには、専用の電池ホルダーを使うか、ポーチに縫い付けるか、プラスチックの収納ケースに入れるとよい。コイン電池に直接はんだ付けしないこと。プロジェクトにはんだ付けする必要がある場合は、専用の電池ホルダーを使うか、はんだ付け用のタブが付いた電池を購入すること。
使用前に毎回電池を点検する
- コイン電池の短絡や損傷は、必ずしも見た目で分かるとは限らない。膨らみ、発熱、その他の変化がないか確認すること。電池が損傷しているように見えたら、すぐに取り外すこと。
- 使用中、充電中、保管中に電池から異臭がしたり、発熱したり、変色や変形が見られたり、少しでも異常な様子が見られたりした場合は、すぐにプロジェクトや充電器から取り外し、使用をやめること。電池は必ず適切な方法で廃棄すること。ゴミ箱に捨ててはいけない。地域の電子廃棄物処理団体に、電池の廃棄方法について問い合わせること。
プロジェクトは電池でどれだけの時間動くのか
プロジェクトが電池でどれだけの時間動くかを知るには、次の2つを把握する必要がある。
- プロジェクトが消費する電流
- 電池の容量
電池の容量はミリアンペア時(mAh)で表される。 これは、満充電の電池が空になるまでに1時間あたり何ミリアンペア(mA)供給できるかを示す数値である。 たいていのLilyPad Arduinoキットに付属するe-Textiles Batteryの容量は110mAhである。 LEDなど多数の部品を使うプロジェクトなど、多くのプロジェクトでは、より長い稼働時間を得るためにより大容量の電池を使いたくなるだろう。
電池がどれくらい持つかを求めるには、次の式を使う。
時間 = 電池のmAh ÷ プロジェクトのmA
つまり、e-Textiles Batteryではプロジェクトをおよそ30分程度しか動かせないことになる。 イベントや展示会のように長時間の稼働が必要な場合は、より大容量の電池を選ぶのが理にかなっている。 そのトレードオフとして、大容量の電池は物理的にも大きくなる。プロジェクト上での電池の収納方法や固定方法をあらかじめ計画し、配線や布への負荷を減らすようにしよう。
* 注:コイン電池は充電式ではない。
Note
注意:カタログにあるそのほかの電池は、e-テキスタイル専用に作られたものではない。代替の電池を使う場合は、導電糸のトレースを短絡させないよう注意すること。
まとめ
LiPo電池やウェアラブルプロジェクトについてさらに情報が必要な場合は、次のような関連チュートリアルも確認してみてほしい(いずれも英語)。
- How Lithium Polymer Batteries are Made(リチウムポリマー電池の製造工程):Great Power Battery社の工場を見学する機会があった。LiPoがどのように作られているかを紹介する。
- LilyPad Simple Power Hookup Guide(LilyPad Simple Powerの使い方):LiPo電池と組み合わせてLilyPad Simple Powerを使い始めるための基本ガイド。
- Insulation Techniques for e-Textiles(e-テキスタイルの絶縁技法):次のウェアラブルプロジェクトで導電糸やLilyPadの部品を保護するいくつかの方法を学べる。
- Planning a Wearable Electronics Project(ウェアラブル電子工作プロジェクトの計画):ウェアラブルプロジェクトのアイデア出しと制作のコツを紹介する。
タグ: Arduino、記事、概念、E-Craft、e-テキスタイル、LilyPad、電力、プロトタイピング、ウェアラブル
出典:LilyPad Basics: Powering Your Project(SparkFun Learn)を日本語に翻訳し、再構成した。 原文は CC BY-SA 4.0 ライセンスで公開されており、本ページも同ライセンスの下で提供する。