HOME > 技術談話 > PIC® microcontroller > 補足資料その1
はじめに ブレッドボード 発振子の精度 電圧・電流・抵抗 分圧 LEDの接続
PICマイコンを使用する上での補足事項を随時追記します。 出現順番は…思いつきの順番になりますが御容赦願います。 |
▲ |
電子回路を組み立てる際に半田付けなしで簡単に部品を接続することができる汎用ボードです。 2.54mm間隔で多くの穴があり、この穴に抵抗やIC等の部品、ジャンパ線を差し込むことで有意味な回路を短時間で作ることができます。接続した部品の取り外しも容易なのでCut&Tryする時は非常に便利です。 |
これは小型タイプのブレッドボードです。 大型のブレッドボードでは電源端子が実装されている場合があります。この時、電源端子から各穴への結線はユーザが行います。 マウスカーソルを画像の上に置くと内部配線が表示されます。この内部配線はブレッドボードの種類により異なるのでテスター等で導通確認が必要です。 |
ブレッドボードとDIP型部品は相性が良く、試しにPIC12F683(8pin DIP)とジャンパ線を載せてみました。 |
PICマイコンがボード中央にあり、その両端には穴が4つ。前述しましたが内部で穴同士が接続されているので、この穴と、利用していない列の穴を利用して抵抗やLEDを接続します。 接続されない穴同士を接続する為にジャンパ線を利用します。ジャンパ線はn個飛ばしで接続します。長めのジャンパ線が無い場合は短いジャンパ線を複数個利用することで接続距離を延ばすことができますが、穴を消費してしまいます。 |
ジャンパ線は固定長タイプだけでなく柔らかいケーブルもあります。このジャンパ線は穴の距離に関係なく接続することができますが、ケーブルが余ってカーブを描くことが多いです。 |
使い勝手が良いのですが、ジャングル模様… 部品の交換にケーブルをかきわける事も(汗 |
ブレッドボードは電子部品を取り扱う店舗や通信販売で購入することができます。ブレッドボード単品だけでなくジャンパ線がセットになっている種類もあります。 余談ですが… ブレッドボードへ部品を実装する時に素手で取り扱うことが多いと思います。短期間の場合は良いのですが同じ部品を何回も繰り返し使用していると部品のリード線に錆が出てくる場合があります。接触不良等のトラブルを招きやすいので数カ月ごとに交換するか、部品のリード線は素手で触らず、ピンセットや小型のラジオペンチを利用して抜き差しすることを勧めます。 |
2009.12.25 新規作成。 |
▲ |
PICマイコンに限らずマイコンを動作させるためには発振子が必要です。マイコンによっては発振子を内蔵している種類もありますが、内蔵していない場合は外部に発振子を接続します。 実現する仕様、開発環境に応じて発振子を選択しますが…。まずは代表的な発振子を挙げてみます。 |
種類 | 速度 | 特徴 | 精度(目安) | 備考 | |
RC発振子 | 低~中速 | 安価 | ±2.5% | 部品固有のばらつきあり、温度にも注意 | |
内蔵発振子 | 低~中速 | 内蔵 | ±2.0% | 外付け部品不要、製造後に補正値設定済み | |
セラミック振動子 | 中~高速 | 安価 | ±0.5% | コンデンサ内蔵タイプもあり | |
水晶発振子 | 低~高速 | 高精度 | ±50ppm | 高速になるほど消費電力は増加 |
水晶振動子は精度が良いのですが、精度が良すぎて表記上は ppm になってます。 ppm を % に置き換える場合は…たまに悩むので整理します。 % は百分率で ppm は百万分率です。1% = 1/100。1ppm = 1/1000000。なので、1%=10000ppm、0.0001%=1ppm。 前述の ±50ppm を % に変換すると、±0.005% になります。 時計用に 32.768KHz の水晶振動子が使われることが多いです。半端な数字ですがマイコンの世界では綺麗な数字である16進数0x8000のカウントで1秒を得ることができます。.0x4000で0.5秒、0x2000で0.25秒、0x1000で0.125秒…・。分周比を小さくすると人間に対する綺麗な数字は出てきません。そういえば、1/100秒を計測できるストップウォッチの源発振は幾つなのだろうか?と悩みたくなります。 小さな時間を計測する場合には水晶発振子が有利ですが、長時間を測定する場合はどうなるでしょうか? 例えば、20MHzの水晶発振子(誤差50ppm と仮定)を搭載した場合を考えます。2千万回のカウントで1秒になるわけですが、誤差があるので実時間に対して0.005%の誤差、1秒あたり最大50usになります。 誤差の単位は非常に小さいですが時計と言う性質上、無限に時を刻み、かつ誤差は累積します。 1秒で50usであれば、1分で3ms、1時間で180ms、1日で4.32秒、30日で約2分。 大きなずれですが、実運用上はそこまでずれている時計は無いですね。実際。 まぁ、誤差は±の範囲があるので、もしかしたら量産品でも±0%という非常に優秀な個体が有るかもしれません。 さて、 PICマイコンの内蔵発振子は製造後に補正値が埋め込まれます。この補正値があるおかげでPICマイコン毎の内蔵発振子のばらつきを抑えています。試しに1KHzの矩形波を出力するプログラムを作ってオシロスコープで観測してみましたが、補正が効いていることもあり意外と正確です(常温環境下)。少しだけお得な気分になります。 この補正値。PICマイコンの種類によってはプログラムコード領域にデータが書き込まれているので、プログラム書き換えの時に消さないように注意してください。また、直接アクセスすることができない特殊な領域に補正値が書き込まれているPICマイコンでは補正値に対して更に補正をかける機能が備わっている種類もあります。 |
2010.01.05 新規作成。 |
▲ |
ざっくり言えば、電圧=抵抗×電流。 電力=電圧×電流。これは覚えるしかありません。いわゆるオームの法則。 |
電圧=電流×抵抗 抵抗=電圧÷電流 電流=電圧÷抵抗 電力=電圧×電流 |
V = I * R R = V / I I = V / R W = V * I |
負荷を直列につないだ場合、各負荷の電流は同じで、負荷の両端にかかる電圧は異なります。 この時の各負荷を合成した1つの負荷Rは、R = R1 + R2 になります。 |
V0 = V1 + V2 I = V0 / (R1 + R2) V1 = I * R1 V2 = I * R2 |
負荷を並列につないだ場合、各負荷の電流は異なりで、負荷の両端にかかる電圧は同じです。 この時の各負荷を合成した1つの負荷Rは、逆数を加算して逆数にした値、R = 1 / ((1 / R1) + (1 / R2))。 この式を展開すると、R = (R1 * R2) / (R1 + R2) になります。「和分の積」と覚えます。 |
V0 = V1 I1 = V0 / R1 I2 = V0 / R2 |
2010.01.06 新規作成。 |
▲ |
高い電圧を減圧する場合に利用されます。基本は前述の負荷を直列につないだ場合の応用です。 今回は Vin ≧ GND ≧ 0V として計算式を導き出します。 |
VinとGNDの間で流れる電流は同じなので、前述の負荷を直列にした場合と同様、 I = Vin / (R1 + R2) 分圧された電圧VoutはR2の両端にかかる電圧に等しいので、 Vout = V2 = I * R2 Vout = V2 = (Vin / (R1 + R2)) * R2 Vout = V2 = (Vin * R2) / (R1 + R2) Vout = Vin * (R2 / (R1 + R2)) … R2 / (R1 + R2)で覚えるとベター VoutからVinを推測する場合は、逆に計算すれば済みます。 Vin = Vout / (R2 / (R1 + R2)) |
R1R2の指定を上手く組み合わせることで任意の分圧結果を得られます。 |
R1 | R2 | 分圧結果 | R1 | R2 | 分圧結果 | ||
1 | 1 | 1/2 | 1 | 1 | 1/2 | ||
1 | 2 | 2/3 | 2 | 1 | 1/3 | ||
1 | 3 | 3/4 | 3 | 1 | 1/4 |
上表はあくまでも比率を記述しているので、実際に抵抗を組み合わせる場合は電流値に注意してください。 R1=R2=1Ω、Vin=10V の場合に5Vを得られますが、流れる電流は5Aになります。火事には注意です。 |
2010.01.06 新規作成。 |
▲ |
LEDはLight Emitting Diodeの略でモニタ表示、状態表示用途で多く使われます。 |
豆電球は電池に接続するだけで点灯することができますが、LEDの場合は電流に注意しないと破壊してしまう恐れがあり、通常は電流を制限して使用します。 この電流の制限を行う方法として、 ・電流制限用の抵抗を直列に接続する ・定電流ダイオードを直列に接続する 等があります。今回は抵抗を使用した電流制限の方法について取り上げます。 |
発光ダイオードとも呼ばれるだけあって、ダイオードの記号に発光を示す矢印が付与されます。接続はアノード(A)をプラス側、カソード(K)をGND側に接続します。電流制限用の抵抗はアノード側に接続することが多いです。 実物ではリード線の長い方がアノード(A)になります。 |
まず、LEDの特性について概要をさらりと。 |
グラフにはメモリをつけていませんが、使用するLEDにより特性が異なるので注意してください。 デバイスの特性としては電流を流せば流すほど明るく光り、電流を上げるとLED両端の電圧も上昇します。 実運用では横ばいの範囲で使用することは無いと思います。基本は定格の値で使用することでしょうか。 |
ただ、定格で使用すると結構眩しいです(スタティック接続の場合)。PWMを利用して高速に点滅させ、明るさを抑える方法もありますが、制御が面倒なので流れる電流を下げて明るさを抑える方が簡単です。 仕様として明るさを基準に電流を求めたいところですが、明るさを認識する人間の目は結構あいまいです。明るさ基準で電流を求めても発光する色が異なると違った印象を受けることがあります。いくつかのパターンを作って発注元に確認するのも手ですが、後で変更することを考えると明るさを最大にしてPWM方式で明るさを抑えた方が改修費用が少なくて済む場合も「時には」あります。 |
それでは、電流を制限する場合の抵抗を求める計算はどうなるでしょうか? |
基本的な接続は左図の様になります。 この形に見覚えありませんか?負荷を直列に接続した場合と同じです。 直列の負荷に流れる電流(I)は同じなので、データシートを元に電流値から決まる電圧(V2)を読み取ります。そして、全体の電圧(V0)からLEDの電圧(V2)を引いた残りの電圧(V1)と流れる電流(I)で抵抗(R)を求めます。 V1 = V0 - V2、 R = V1 / I |
最後に抵抗のワット数も計算しましょう。電圧(V1)と電流(I)が判明しているので掛け算します。電流値は mA表現が多いので単位に注意してください。 W = V1 * I 得られたワット数に対応する(耐える)抵抗を選択することも大切です。 |
説明上、電圧(V)、電流(I)と表現してきましたが、LEDのデータシートでは順電圧(Vf)、順電流(If)と表現されているので適宜読み換えてください。本項では前述の電圧・電流・抵抗の関係と関連付けるために表現を抑えています。 |
例題です。 明るさの単位として「5」を要求。その時の準電流(I:If)が5mA、順電圧(V2:Vf)が1.925V。電源(V0)が6.0Vの場合。 V1 = 6.0 - 1.925 R = (6.0 - 1.925) / 0.005 = 815Ω W = (6.0 - 1.925) * 0.005 = 0.02W 1/4W=0.250W、1/6W=0.167W、1/8W=0.125Wなので1/8Wのグレードでも大丈夫。 計算で求めた抵抗値にフィットする抵抗は無いと思います。抵抗を下げることでLEDは明るく(電流が流れる)なるので、目標値に近い大きめの抵抗値を選択します。なお、抵抗は数%の誤差を含んでいます。この誤差を考慮して検算するのをお忘れなく。 |
さて、データシートがあり、仕様として「明るさ」が明示されている場合は以上の計算方法で良いのですが… 無い無い尽くしのLEDを手に入れた場合はどうしましょう?時として定格の準電流のみ表記されるLEDもあります。 現物合わせになりますが、数mAも流せばLEDは点灯するので、ブレッドボード上に回路を構成しテスターで電流を確認しつつ、抵抗を変えてみるのも手です。なお、抵抗値は数KΩの大きな抵抗値から始めることをお忘れなく。 |
注意: これまでの計算方法は電源を直接接続した場合を想定しています。 マイコンのポートに直接LEDを接続した場合は出力ポートのHL制御でLEDを制御しますが、出力ポートの電圧に注意してください。データシートを確認すると判明しますが、例えばLレベルの電圧にMax0.6V、Hレベルの電圧に電源電圧の95%等の記述を見ることがあります。記載されている条件の電圧でLED、マイコンの絶対定格を超えない電流値(抵抗値)を選択する必要があります。 この課題はマイコンポート直接接続だけでなく、トランジスタやLEDドライバを使用した時も同様です。 定格の半分程度の明るさで使用している場合には問題は無いと思いますが…。 |
2010.01.07 新規作成。 |
▲ |
■題名
▲ |