2022年11月8日火曜日
2020年2月5日水曜日
Lチカでトランジスタの使い方を学ぼう
概要
トランジスタの使い方を簡単に学ぶために Lチカ回路にトランジスタを組み合わせて動作させてみました
負荷の高い抵抗を使って小さな電流を作りそこからトランジスタを使って電流を増幅し LED を点灯させてみます
環境
- トランジスタ 2N5088
- 抵抗 (47, 330, 470, 1k, 330k)
- 赤色LED
実験で使う回路
電源は単三電池 2 本 (約 1.5v + 1.5v = 3V) を使用します
単純な Lチカの回路になります
電流の計測が必要になるので以下のような感じで LED に流れる電流を測れるようにしておきます
電流計は直列に接続する必要があるのでご注意を
電流を計測する
まずは抵抗の値を変えて LED に流れる電流を計測していきます
47オーム
30mA
やはり抵抗が小さいと流れる電流も大きくなるので LED もだいぶ明るくなります
330オーム
470オーム
5mA
330 オームとそこまで変わらない感じでしたが電流は少し少なくなっています
1kオーム
2mA
明るさもだいぶなくなりました
330kオーム
?
自分の電流計だとほとんど針が振れなかったので計測不能でした
写真だと全くわかりませんがすごい小さい明かりが点灯しています
トランジスタあり
今回は 330k オームを使った場合に LED を点灯させようと思います
トランジスタを使うことで電流を増幅させ点灯させる感じです
使用するトランジスタ
手元にあるトランジスタが 2N5088 しかないので今回はこれを使います
そもそもトランジスタを電流増幅部品として使っていますがトランジスタ自体は増幅というよりも電流の値を調整するための部品かなと思います
データシートを見ると増幅率は 300 倍ほどあるようです
頑張れば 900 倍くらいはいけるそうです
今回は電圧も低めなので 300 倍あれば十分です
写真左から「エミッタ」「ベース」「コレクタ」になります
回路作成
トランジスタを使った回路を作成します
2N5088 は NPN トランジスタなのでベースにプラスエミッタ、コミッタにマイナス側の端子を接続します
またベースに 330k オームの抵抗を挟んで先程計測した超微量な電流を流します
そうすることでエミッタとコミッタ間に増幅した電流が流れるようになります
電流の計測
下の写真のコレクタと LED のカソード部分にある緑の配線部分を電流計に変えて計測しました
結果は「8mA」ほど流れました
だいたい 330 オームを使っている場合と同じくらいの明るさになりました
300 倍の増幅率だとすると 8mA / 300 = 0.027mA がもともとの L チカ回路で流れていた電流かなと予測できます
おまけ: 10kオーム
もう少し小さい抵抗があったのでやってみました
これだと増幅後は 50mA も流れたので明るさもかなり変わったので実験の変化としてはわかりやすかったです
ただ 50mA も LED に流すのはあまり意味がないし壊れる可能性があるので実際の回路では 20mA 程度が流れるようにしましょう
最後に
トランジスタの使い方の基本を学ぶために Lチカ回路でトランジスタを使ってみました
簡単な回路を使って変化を確認することで使い方の理解がより深まると思います
今回は LED で試しましたが少し大きめの電流が必要なアクチュエータなどでよく使われるイメージがあります
なのでトランジスタを使えるようになると大きな電力が必要な部品や回路を動作させることもできるようになるので覚えておいて損はないかなと思います
ただ大きな電流を流せば流すほど電源の電圧降下が早まりバッテリーなどの消耗も早くなるのでそこは電源の容量とも相談しながら回路を作成すると良いかなと思います
2017年3月8日水曜日
分圧回路で必要な抵抗値を計算する
概要
前回、分圧回路を使って 1 つのアナログピンで複数の値を読み込みました
その際に同じ値の抵抗を使っていたので分割した電圧が二次関数的な増え方をしてしまいました
今回は各電圧が均一なるような抵抗値を求めてみました
環境
- Mac OS X 10.11.3
- Arduino IDE 1.6.7
抵抗値を求めるためのスクリプト
電源電圧と基準となる抵抗値が分かればある規則で計算できることがわかったのでスクリプトにしました
- vim resistor_divider.rb
SW=10
R0=ARGV[0].to_i
VIN=ARGV[1].to_f
VOUTS = 0.step(VIN, VIN / SW).to_a
VOUTS.shift
VOUTS.pop
puts "R0: #{R0}, VOUT: 0"
rp = 0
VOUTS.each_with_index {|v, i|
r = (R0 * v) / (VIN - v.round(2))
puts "R#{i + 1}: #{(r - rp).round(1)}, VOUT: #{v.round(2)}"
rp = r
}
- ruby resistor_divider.rb 470 3.3
とすると以下のように必要な抵抗と得られる電圧がわかります
単位はそれぞれオームとボルトです
R0: 470, VOUT: 0
R1: 52.2, VOUT: 0.33
R2: 65.3, VOUT: 0.66
R3: 83.9, VOUT: 0.99
R4: 111.9, VOUT: 1.32
R5: 156.7, VOUT: 1.65
R6: 235.0, VOUT: 1.98
R7: 391.7, VOUT: 2.31
R8: 783.3, VOUT: 2.64
R9: 2350.0, VOUT: 2.97
第一引数に基準となる抵抗を指定して、第二引数に電源電圧を指定します
このスクリプトは 10 個のスイッチからの電圧を取得することを想定しているため、電源電圧を 10 等分した電圧を取得するようになっています
これで 10 個のスイッチの情報を 1 つのアナログピンで読み込むために必要な抵抗値がわかりました
E24系の抵抗値に変換すると
E24系とは抵抗の値として使われる推奨値のラインナップです
取得できた抵抗値をこの E24 系の抵抗を使って最小限の数の抵抗を使って変換してみると
- R0: 470 -> 470オーム抵抗 x 1
- R1: 52.2 -> 51オーム抵抗 x 1
- R2: 65.3 -> 33オーム抵抗 x 2
- R3: 83.9 -> 33オーム抵抗 x 1 + 51オーム抵抗 x 1
- R4: 111.9 -> 100オーム抵抗 x 1 + 10オーム抵抗 x 1
- R5: 156.7 -> 150オーム抵抗 x 1 + 4.7オーム抵抗 x 1
- R6: 235.0 -> 240オーム抵抗 x 1
- R7: 391.7 -> 390オーム抵抗 x 1
- R8: 783.3 -> 750オーム抵抗 x 1 + 33オーム抵抗 x 1
- R9: 2350.0 -> 2.2kオーム抵抗 x 1 + 200オーム抵抗 x 1
こんな感じの抵抗を使って実現することができます
複数の抵抗を組み合わせても OK です
もっと極端に言えば、例えば 1 オームの抵抗しかもっていないのであれば、R8 とかであれば 783 個直列に 1 オームの抵抗を接続しても OK です ( 普通はやりませんが )
一応今回は秋月さんの 1/4W カーボン抵抗の一覧で購入できる抵抗を使って構成してみました
もちろん、これ以外にも抵抗はあるのでご自身の環境に合わせてお好きな抵抗を使って構成してもらえれば OK です
最高 2 本の抵抗を使って実現しているので、もう少し余裕があれば 1 オームの抵抗を使って誤差を埋めてもいいと思います
最後に
紹介は以上です
いろいろと試行錯誤しながら算出したので的はずれなことを言っている可能性もあるので、間違いがあれば指摘してほしいです
分圧回路で一番大変なのは指定の抵抗を手に入れることですかね、、、
あと、自分は今回紹介した組み合わせの抵抗を実際に手に入れることができていないので試せていません
実際は回路を組んで電圧を測定してみて、予想した出力の電圧が得られているかちゃんと確認しながら抵抗値の調整をしたほうがいいと思います
参考サイト
2016年11月9日水曜日
はじめてのユニバーサル基板入門
概要
初めてにしては難しい回路に挑んだと自分では思うのですが、過去に ESP-WROOM-02 を使ってエアコンを制御できるデバイスを作成しました
今回はこれをユニバーサル基板化してみました
環境
- ハンダ: 白光 半田ゴテ レッド 40W No.502
- ESP-WROOM-02
- 抵抗 47kΩ x 2
- 抵抗 470kΩ x 2
- タクトスイッチ x 2
- 赤外線 LED
- NPN トランジスタ
- メスピンソケット x 2
- ユニバーサル基板 47x36mm
完成図
いきなりですが完成図は以下のような感じです
電源は ESP-WROOM-02 の microUSB を使って取るようにしています
これでだいたい 2 時間ほどかかりました
表

裏

合体版

手順
簡単に自分がやった手順を記載しておきます
おそらく「これが一番いい」みたいな手順はなく自分が好きなようにやったらいいという感じだと思うので参考程度に見てもらえればと思います
1 各種部品を配置する
ユニバーサル基板上に部品を配置します
ハンダ付けするほうに足が飛び出すので、部品をハンダしやすいように足を折り曲げて固定します
今回は、写真の表にあるように部品を配置しました
でここが一番のポイントだと思います
この部品の配置は正直「センス」だと思います
自分も間隔で固定しました
その後ハンダ作業に入るのですが、部品の配置が悪いと今回の自分のように裏面がスパゲッティ状態になってしまいます
なので、センスではありますがちゃんと回路図を作成してなるべくジャンパ線が交差しないように部品を配置するほうがキレイになるしハンダ付けもしやすくなると思います
2 部品をとりあえずハンダ付けする
部品を固定するために先に部品のハンダ付けを行いました
折り曲げた足の部分にハンダ付けをしていきます
あまった足の部分はとりあえず残しておくと良いと思います
この後ジャンパ線を使って配線していくのですが、例えば隣のスルーホールに伸ばしたいときには余った足を使ってハンダすることができるので、ジャンパ線の節約にもなります
3 配線していく
今回はスズメッキ線と耐熱電子ワイヤーを使って配線していきました
まっすぐな部分はスズメッキ線を使い、交差する部分は耐熱電子ワイヤーを使いました
これも特に順番はないですが、今回であればタクトスイッチの配線をしてから、赤外線 LED の配線をしました
理由は単純にやりやすかったからです
もう少し言うとブレッドボード上での配線をより頭で理解しているほうがタクトスイッチだったので、そちらから行いました
配線するときに 1 つのスルーホールに 2, 3 つの線をハンダするケースが多々ありました
それが結構難しくハンダを当てると元あった部品が外れてしまったり、つけたい部品から手を離すと外れてしまったりと大変でした
片手にハンダごてを持ってもう片方にハンダを持ってやっていたので、ハンダ付けしたい部品を固定化できないとハンダ付けが難しかったです
うまく固定化できない場合は、一旦ハンダごて部品を抑えてからハンダをあててやったりしていたのですが、当てすぎて回りの部品のハンダまで溶かしたり、焦げたりしたのでやはり固定化できていないと辛いと思います
4 テストする
実際にちゃんと配線できているか確認します
全部配線できたあとに ESP-WROOM-02 にスケッチを書き込んでテストするのも良いですが、自分はタクトスイッチの配線ができた段階で一旦テストを行いました
そして、タクトスイッチの動作確認ができたあとで、赤外線 LED の配線をしてその後両方合わせたテストを行いました
状況によっては、配線 -> テスト -> 配線 -> テストみたいなことができない場合もあるかもしれませんが、できれば小さい回路ができたら一旦その回路のテストをしたほうが配線ミスにも早く気付けるので修正する箇所が小さくて済むと思います
感想とか Tips
実際やってみた感想ですがユニバーサル基板化してよかったかなと思います
そもそもユニバーサル基板化した理由なのですが、一番の理由は「勉強したかった、やってみたかった」という好奇心的な理由です
あとは小型化したかったというものあります
ブレッドボードを使うとどうしてもブレッドボードの大きさ以上は小さくできないので無駄なスペースが出来がちです
ユニバーサル基板だと自分の好きな大きさで配線できるので、小型化することができます
技術的な理由もあります
実はこのリモコンデバイス自体自宅で常設して使っていました
常設しているのにブレッドボードやワイヤジャンパを使っていたので、他の検証のときにそこで使っているパーツが使えないという状況が発生していました
なので、ユニバーサル基板化してパーツを検証に使えるようにしたかったというのも理由の一つです
あとは、ブレッドボード上の配線だとたまにパーツが外れてしまうので、それを修正するのが面倒だということもあったので、ユニバーサル基板化してハンダ付けすることで部品を取れなくしたという理由もあります
やった後で「こうしたほうが良かった」という点ですが、一番は部品の置き場所かなと思います
特にタクトスイッチの場所を変えたかったです
冒頭に完成図がありますが、よく見ると合体版でタクトスイッチが ESP-WROOM-02 の下に隠れてしまっているのがわかります
隠れている方のスイッチはエアコンを付ける方のスイッチになります
押せないことはないですが、非常に押しづらいので、タクトスイッチの場所は申し少し考えてから配線したかったと思います
あとは見えないですが、やっぱり裏側はキレイに配線したかったなと思います
耐熱電子ワイヤーがあったので、交差しまくりでも問題なかったのですが、できればスズメッキ線だけで配線したほうが、かさ張らないしキレイに見えるしよかったかなと思います
今回のユニバーサル基板には固定用の穴が 2 箇所ありました
この後はこの穴を使って箱を作ったり、見栄えを良くしようかなと思います
最後に
はじめて自分のデバイスをユニバーサル基板化してみました
ハンダ付けは経験がものをいう場合がほとんどなので、今後もハンダ付けレベルを上げるために積極的にユニバーサル基板化していきたいなと思いました
2016年10月14日金曜日
乾電池だけで L チカしてみた
概要
Arduino やら RaspberryPi などから電子工作に入門した自分はマイコンやシングルボードコンピュータを使わないで L チカをしてみたことがありませんでした
応用から基礎を勉強する感じですが、それらを使わないで LED を点灯させてみました
環境
- ブレッドボード
- 単三電池 x 2
- 電池ソケット
- 抵抗 1kΩ
- LED
- ジャンパケーブル
- タクトスイッチ
配線 (電池のみ)
2 本の電池を使って LED を点灯させます
プルダウンで GND 側に 1kΩ の抵抗を接続しています

せっかくなので回路図も作成してみました
見た目の配線は適当です

動作確認
電池をセットすると LED が点灯します
適当にテスターで LED にかかる電圧を計測したのですが、だいたい 2V くらいでした
配線 (タクトスイッチ)
毎回電池をセットしたり外したりするのが面倒なのでタクトスイッチで点灯できるようにしてみます
単純にスイッチが押されたときに回路がつながるように配線し直すだけです
抵抗は同じくプルダウンで接続しています

こちらも回路図を作成しました
配線がガタガタです

動作確認
タクトスイッチを押すと LED が点灯します
この回路でもだいたい 2V の電圧が LED に掛かっていました
おまけ
おまけでタクトスイッチの反対側にも LED をつけてみました
これでも問題なく点灯しましたが、LED が一つのときよりかは光が暗くなりました

LED と抵抗がスイッチに対して並列に接続されているだけです
最後に
乾電池だけで LED を点灯させてみました
タクトスイッチも入れることでスイッチを押したときだけ点灯する回路も作成しました
Arduino や RaspberryPi の GPIO も今回使ったようなタクトスイッチのような働きがありますが、GPIO は read もできるし一番はプログラムできるのが大きいと思います
逆にいうとそのような必要がない場合はハードウェア (回路) だけでも動くものは作れるということです










