トランジスタを使って電子工作をしようとしているけど、ベースに電圧をかけてもいないのに勝手にコレクタとエミッタ間で電流が流れて接続先部品が駆動してしまう。
ベースが故障しているのかと思い、一緒に買った他のトランジスタを試してみるけど、どれも同じ結果に。
それともコレクタ-エミッタ間にかけようとしている電圧が強すぎて、今の手持ちのトランジスタでは容量か何かの問題でベースがどうなっていようと電流が流れてしまうのか・・・
先日Arduinoを使ってモーターを駆動させようとした時に上記の問題が発生し、必死になって回路設計を変えてみたり、ググって調べてみたりしたけれども一向に解決せず20時間以上が過ぎてしまいました。
そして「もう分からん! お手上げだ!!」と思ったところでなんとなく買っていたテスターを使ってみたところ、衝撃の事実が!!
僕が買ったPN2222とS8050のトランジスタは左から「エミッタ」「ベース」「コレクタ」になっていたのです!!
※通常は左から「エミッタ」「コレクタ」「ベース」
今日は僕がそんなトラブルに出くわして一体何をしたか、そしてどうやってこの問題を解決したかについて書きたいと思います。
Amazonで買ったArduinoスターターキット
先日Arduinoのスターターキットのようなものを買いました。
この『ELEGOO Arduino用のMega2560スタータキット最終版』にはそれはもう電子工作をやるためには「こんなのあったら嬉しいな」と言える部品がたくさん同梱されていて、基本的なところではジャンパー線からブレッドボード、抵抗やダイオードなどが入っていて、一番高機能な部品となると水位計やリモコン受信機などがあります。
あまりにもたくさん部品が入っていると、逆に何を作っていいかわからなくなるもので、とりあえず一番手軽にできそうなモーター駆動プログラムを作成しました。
デジタルピンからの1秒毎のON/OFF指示によって、モーターも駆動と停止を繰り返す。
モーター界のLチカとも言うべき一番オーソドックスな電子工作ですが、これが電池を接続した瞬間に
ウィィィィィーーーーーン!!!!
と勝手に駆動し続けてしまうのです。
おいおい、こんな簡単な回路構成とプログラムで何を間違えることがあるんだい。
その原因を探るべく僕は以下のようなトラブルシューティングを行いました。
配線を確認する
僕がまず確認をしたのは配線の問題です。
ジャンパー線のつなぎ方が電池からモーターに直結してしまっているような配線になっていないか。
何度も何度も目で確認しても問題ない。
もう一度ゼロからつなぎ直してみても結果は同じくモーターが勝手に駆動してしまう。
どうやら配線のつなぎ間違えではないようです。
(トランジスタの裏表も確認済み)
ソフト的にデジタルピンが常にHIGHになっていないか検証する
1秒毎にデジタルピンをHIGH/LOWにしているつもりでも、コードが正しく書けていないせいで常にHIGH状態になっていないか。
1 2 3 4 5 6 7 8 9 10 11 12 |
int motorpin = 2; void setup() { pinMode(motorpin, OUTPUT); } void loop() { digitalWrite(motorpin, HIGH); delay(1000); digitalWrite(motorpin, LOW); delay(1000); } |
・・・こんな単純なコードで間違えようがあるか!!!!
ハード的にデジタルピンが常にHIGHになっていないか検証する
コーディングミスでデジタルピンが常にHIGH状態になっていないことは分かりましたが、今度はArduinoの内部回路がショートしていて、ソフトでHIGH/LOWを制御していても勝手に電流が流れてしまっている可能性を疑いました。
そこで下のような回路を作成してみることに。
Arduinoのデジタルピンからトランジスタのベースに至るまでの間に一枚LEDを噛ませることで、もしベースに勝手に電流が流れてしまっているようなら常にLEDが点灯するはず!
・・・結果、LEDはちゃんと1秒毎に点灯と消灯を繰り返しました。
電池の電圧が強すぎるせいで電流が勝手に流れる可能性を考えてみる
モーターを駆動させるときには外部電源ということで電池ボックスを使うわけですが、この電池の電圧が強すぎるせいで勝手に電流が流れてしまうのではないか。
そう思った僕はコレクタとエミッタだけに着目した回路を作ってみることにしました。
これでもし電流も流れずLEDも点灯しないのなら、今使っているトランジスタの容量のようなものが小さすぎるせいで、電池ボックスからの電圧に耐えきれず電流を流してしまっていると証明できるはず!
・・・普通にLED、点灯しました。
今使っているトランジスタの不具合を疑う(他のトランジスタを試してみる)
僕が買ったArduinoのスターターキットではPN2222とS8050のトランジスタが合わせて10個入っていたのですが、もしかして今使っているトランジスタが不具合品で偶然ダメなだけかもしれない。
そう思い、僕は他のトランジスタを試してみました。
・・・結果、全部電流は流れてしまいました。
テスターで導通チェックを行う
もういよいよ対策の手段がなくなってきたところで、トランジスタの導通チェックなるページを発見しました。
※2024年3月23日現在、リンク切れとなりました
これによるとトランジスタの導通チェックをしたときは以下のようになればいいとのこと。
このとき僕はただなんとなくテスターを買って家に置いていたため、最後の頼みの綱ということで試してみることにしました。
おいおいおいおい!! このトランジスタめっちゃくちゃじゃねーか!!
中国の粗悪品か何かか分からねーけど、こんなテキトーな商品がAmazonで流通してもええんか!!?? おぉぉんんん!!!!????
あー、でもなんだ。単にトランジスタが欠陥品だったからアカンかったのか。
一件落着っと。これで別メーカーの新しいのを買えばOKってことね。
・・・いや、でも待てよ。こんな欠陥品流通させてたらAmazonでもレビューでボロクソ書かれているはず。でもそんなようなコメントは見当たらないし・・・ なんかおかしいんだよな。
それに欠陥品だったらトランジスタ10個あるうちの全部がダメってこともないだろ。
あと気になるのがコレクタ→ベースとコレクタ→エミッタはちゃんと導通してるところなんだよな。欠陥品だったら全部導通か全部不通な気がするけど・・・
これ、もしかしてエミッタ、コレクタ、ベースの順番が特殊なだけなんじゃ?
「エミッタ」「コレクタ」「ベース」の順番が違うPN2222/S8050
トランジスタに関するページのどこを探しても、トランジスタは左から「エミッタ」「コレクタ」「ベース」の順番でありECB:"えくぼ" と覚えようと書いています。
そして恐る恐るPN2222のデータシートを見てみると
左から「エミッタ」「ベース」「コレクタ」じゃねーか!!!!!!!!!
慌ててS8050トランジスタの方も調べてみると同じ構成になっていました。
こんなイレギュラーなモン、Arduinoのスターターキットなんかに入れるな!!
電子工作やるならテスターは買っておこう
今回はたまたま僕がテスターを持っていたから解決できましたが、これで持っていなかったら一生迷宮入りだったと思います。
「初心者がテスターなんて持っててもしょうがないかな~」なんて思っていましたが、初心者だからこそテスターは買っておいたほうがいい。
そう思った今回の電子工作でした。
<僕が今回買ったテスター>