GPIOピンから5Vリレーに給電


22

Piから実行するリレーのバンク(5)があります。NPNトランジスタを使用してリレーをトリガーするSparkfunのハイパワーリレーキットを搭載した5V TE Con​​nectivityリレーを使用しています。

これまでのところ、私が抱えている問題は、リレーを切り替えることができないことです。GPIO出力ピンは5Vを供給しませんか?私はPiがGPIOでやったと思った。


4
Gpioピンは3.3ボルトではありません。
スティーブロビラード

次に、回路を変更する方法を知っていますか?
hightekjonathan

1
すべてのグラウンドを接続するには、5ボルトの電源と記憶装置が必要です-このようにタワー信号灯を切り替えるためにこれを行っていますebay.com/itm/…-
スティーブ

2
最初に別の電源で動作させることをお勧めします。次に、Piの電力ニーズの複雑さと移植性に取り組みます。彼らが言うように、象を食べるための最良の方法は一度に一口です。
スティーブロビラード

1
すべての根拠は結びついています。そして、5vプラスはダーリントンのコモンに接続されています。図に従いました。
-hightekjonathan

回答:


36

単純にこのようにしないのはなぜですか?

Raspberry Piは、0と3V3を切り替えます。これは、Q1を飽和させるのに十分以上で、「重い」作業を引き継ぎます。つまり、+ 5Vリレーのオン/オフを切り替えます。使用しているリレーによっては、D1とQ1に小さな変更が適用される場合があります。

リレーを制御するRaspberry Pi


素晴らしい答えです!そして、これを行う非常に安全な方法。
ピョートルクラ

3
いい答え、それは「リレーの質問」を一度だけ解決するはずです。おそらく、Piとリレーの電源電圧は同じであるか、少なくとも共通のGNDを共有する必要があるという事実を追加するとよいでしょう。これは電気技術者には明らかなように思えるかもしれませんが、初心者にとって落とし穴になる可能性があります。
ガニマ

@Ghanima:はい、確かにポイントがあります。しかし、あなたが述べたように、私にとっては、これが両側(ここではラズベリーとリレー)であることは、地上シンボルを見れば「明らか」です。そして、意図的に+ 5V(+ 24Vでも安全な低DC電圧でも可能)でリレーに電力を供給し、上記の回路の目的が両方のサイトで異なる電圧であることを明示的に聴衆に示しました。それが回路の目的です。
GeertVc

1
R2の目的は何ですか?
erikH

2
R 入力がフロートしないことが確実な場合、R2は必要ありませんが、これは一種の「保護手段」です。入力がフロートでき、R2が接続されていない場合、トランジスタは制御されない方法でスイッチングを開始できます。
GeertVc

7

# 前書き #

OPはRpiを使用して、5つのSparkfunのBeefcakeリレーモジュールのバンクを安全に制御したいと考えています。Rpi GPIOロジックレベルは3.3Vであるため、彼は問題を抱えていましたが、彼のリレーは5Vロジック制御を使用しています。彼は、論理レベルの格差問題を回避するためにRpiを変更する方法を知りたいと思っています。以下を含む彼の選択:トランジスタBC5468を使用してリレーコイルを駆動する。光絶縁リレーを取得し、ULN2803を使用して駆動します。UDN2981などのソースドライバを使用して...

調査の後、それぞれの長所と短所を備えたいくつかのソリューションを提案します。OPは、リスク、信頼性、コストなどをトレードオフした後、ソリューションを選択できます。

#目次#

解決策1-NPNトランジスターのバイアス抵抗を変更する

解決策2-UDN2981を使用してRpiの3.3V GPIO信号を5Vにシフトアップする

解決策3-74HC03および74HC04を使用してRpiの3.3V GPIO信号を5Vにシフトアップする

解決策4-74HCT125を使用して論理レベル変換を行う

解決策5-TXS0102を使用して論理レベル変換を行う

Soution 6-2N2222を使用して論理レベル変換を行う

解決策7-2N7000を使用して論理レベル変換を行う

FAQ1-Rpiとリレーモジュールに電力を供給し、グランドを結合する方法

FAQ2-浮動入力の問題を回避する方法

FAQ3-高入力でも低入力でも、リレーは常にオンになっていますが、これはRpi Low信号が十分に低くないためですか?

FAQ3-Rpi GPIO Low信号でリレーをオフにすることはできませんが、入力としてGPIOを設定するとできます。そうすると、Rpiを傷つけますか?

ハードウェアのトラブルシューティングの提案

ソフトウェアのトラブルシューティングの提案

参照資料

#解決策1. NPNトランジスタバイアスを変更して3.3V互換にする#

一般的なソリューションには次の2つがあります。

(1)モジュールの5Vロジックレベル入力回路を変更して、3.3V信号に適応させます。

(2)3.3 Vから5 Vの論理レベルコンバーターを使用して、Rpiの3.3 V信号を5 Vにシフトアップします。

私は今(1)から始めます。

調査

SparkfunのBeefcakeリレーモジュールには、コイル(U1)を駆動するNPNトランジスタ2N3904(Q2)があります。Arduinoの5Vロジック信号用に設計されています。

SparkFunリレー制御キットの回路図

Rpiの3.3V信号で駆動できる同様のNPNトランジスタモジュールKY019があります。そこで、KY019が3.3V信号を受信できるのにBeecakeができない理由を見つけるために、入力信号の要件を確認しました。

KY019仕様

KY-019のトリガーレベルは2.5Vおよび0.1mAであることがわかりました。この信号は、NPNトランジスタによって50mAに増幅され、コイルを活性化してリレーをアクティブにするのに十分な高さになります。

銅線仕様

Rpi GPIO(2.8Vを超える高レベル、および16mAの最大電流制限)、4mAを快適にソースできます。モジュールを直接駆動しても問題はないはずです。

コイルの応答時間は10mSです。Rpi GPIOピン17をプログラムして、40mS周期(25cps)でリレーモジュールを切り替えたところ、期待どおりにリレーがうまくクリックすることがわかりました。(GPIO信号に2メートルの長さの接続ワイヤを使用していたため、リレー入力端の信号は少しうるさいです。)

KY019トグルテスト

Beefcakeモジュールを変更して3.3Vロジックとの互換性を持たせる方法

Beefcake NPNトランジスタには、値1Kの電流制限抵抗R2があります。この抵抗は、Arduino 5Vロジックの高レベルでベース電流を制限します。増幅後の制限内のベース電流(通常hFE> 100)は、コイルを活性化するのに十分な大きさです。

BeefcakeリレーモジュールへのArduino 5V GPIO電流の計算:

Arduino電流i〜(4V [Arduino High]-1V [Vce(sat)])/ 1K [R])= 3V / 1K = 3mA

ただし、Rpiの論理High信号はArduinoよりも低いため、対応する制限電流は小さく、増幅後はコイルを駆動するのに十分な大きさではありません。

Rpi電流i〜((3V [Rpi High]-1V)/ 1K = 2mA

変更は簡単です-1K R2を510Rなどの小さな抵抗に置き換えるだけです。

Rpi電流i(変更後)=(3V-1V)/ 501R = 4mA

私は回路解析と実験に基づいて教育を推測しています。私の推測は90%が正しいと思います。

リスク分析

小信号NPNトランジスタ2N3094は小負荷スイッチングに使用できますが、信頼性はそれほど高くありません。リレースイッチングには、誘導負荷用に特別に設計されたSS8050、UDN2981などのパワートランジスタを使用する方が安全です。

OPは、Piを揚げない安全な方法を求めているため、信頼性のために、UDN2981などのソースドライバーを使用する方法があります。

/ ...

#解決策2-UDN2981を使用してBeefcakeリレーモジュールを駆動する#

コメントでは、OPのSparkfun Beefcakeリレーモジュールは高レベルトリガーであるため、一般的に使用されるシンクドライバーULN2803は使用できないと指摘しています。ULN2803に似たドライバーですが、代わりに電流シンクではなく電流ソースを使用する必要があります

UDN2981は、OPのリレーモジュールに適したドライバだと思います。

Beefcakに似た高レベルのtirggerリレーモジュールを駆動するUDN2981と、低トリガーモジュールを駆動するULN2803を正常に検証しました。以下は要約です。

ハイトリガー、NPNトランジスタ入力タイプのリレーモジュールを制御するUDN2981

最初にRDNに接続せずにUDN2981を手動でテストし、4つのLEDを点滅させて、回路が正常に機能していることを確認しました。

uln2803 udn2981写真

次に、4つのNPNトランジスタ入力タイプのリレーモジュール(KY019)をセットアップし、4つのリレーモジュール入力を4つのUDN2981チャネル出力に接続しました。

KY019 x 4

次に、4つのRpi 3.3V GPIOピンを4つのUDN2981チャネル入力に直接接続しました。次のpython関数を使用して、25 cpsで4つのリレーモジュールを切り替えました。

4つのリレーを切り替えるPython関数

結果は良かった。4つのリレーモジュールがクリックされ、LEDが25cpsで期待どおりに点滅します。Rpi GPIO出力信号は3.3V付近に留まり、UDN出力信号は4.0V付近にあり、入力が過負荷になっていないことを意味します。

モジュール波形の切り替え

ハイトリガー、光絶縁リレーモジュールを制御するUDN2981

OPは、より安全であるため、光絶縁リレーモジュールの使用も検討しました。同じUDN2981を使用して、4つの高レベルトリガー、光絶縁リレーモジュール(MK055)を正常に制御しました。

MK055リレーモジュール

実際、UDN2981は、NPNトランジスタや光絶縁タイプに関係なく、あらゆる種類の高トリガーモジュールの制御に使用できます。

ただし、PNPトランジスタまたはオプト絶縁のいずれでも、低トリガーモジュールの場合、ソースドライバーUDN2981は機能しません。ULN2803または他のシンクドライバーを使用する必要があります。

低トリガーPNPトランジスタ入力または光絶縁リレーモジュールを制御するULN2803

ULN2083シンクドライバーが4つの低トリガー光絶縁リレーモジュールを制御できることを確認しました。最初に4つのLEDを手動で点滅さ​​せてテストし、次に上記の同じPython関数を使用して4つのモジュールをテストしました。結果も良かった。

MK101リレーモジュール

討論

ULN2803およびUDN2981の長所と短所

長所

  1. ULN2803およびUDN2981は、3.3Vまたは5Vの供給電圧でTTLまたはCMOSロジック信号によって直接駆動できます。

  2. クランプダイオードを備えた定格500mA出力は、リレーとステッピングモーターの切り替えに適しています。

短所

  1. ULN2803、特にUDN2981はそれほど一般的ではありません。

  2. 8チャンネルであるため、18ピンDIPパッケージサイズが大きくなります。より少ないチャンネルの場合、14ピンDIPパッケージを備えたより一般的な74HC03 / 04または74HCT125がより一般的で取り扱いが容易です。

#解決策3-74HC03および74HC04を使用してRPiの3.3V GPIO信号をシフトアップする#

UDN2981を使用してリレーモジュールを駆動することは、リレーに直接通電するためのフライバックダイオードを内蔵して設計されているため、過剰な殺害です。

UDN2981は一般的ではなく、初心者が実験することもできません。初心者にとって、非常に一般的で安価なロジックゲートIC、74HC03クアッドNANDゲート、およびHC04ヘキサインバータは、UDN2981と同じ仕事をして、3.3Vロジック信号を調整できます。

HC03およびHC04が3.3Vロジックを5Vにシフトすることを検証し、トランジスタ入力と光絶縁高レベルトリガーモジュールの両方で機能することを確認しました。

hc03 04コンバーター回路図

hc03 hc04 ky019 mk047

hc03 hc04 ky019 ky047

#参考文献#

R1。電気リレーはどのように機能しますか?-TechyDIY

R2。リレースイッチ回路-エレクトロニクスチュートリアル

R3。ビーフケーキリレー制御接続ガイド-SparkFun

R4。デジタルバッファおよびトライステートバッファ-エレクトロニクスチュートリアル

R5。プルアップ抵抗-エレクトロニクスチュートリアル

R6。論理レベルのチュートリアル-SparkFun

Arduino Voh 4.2V、Vol 0.9V

R7。Rpi GPIOピンの電圧と電流の仕様

Rpi Voh 2.4V、Vol 0.7V

R8。バイポーラトランジスタ-エレクトロニクスのチュートリアル

================

#A.3 HCT125を使用した論理レベルコンバーター#

そこで、別のアップコンバーターHCT125をテストしました。私はそれがうまくいくことを見つけてうれしかったです。HCT125変換5V0信号は、NPNトランジスタ駆動のリレーモジュールに接続してもドロップしませんでした。

HCT125レベルコンバーター

/ ...

付録の終わり

** *削除される長い回答* **

この長い答えは長すぎて面倒です。私は今、無関係な段落を削除し、おそらく関連する質問をして自分自身に答えることによってそれらを置き換えることを試みています。


フォトカプラ/光絶縁リレーモジュールの確認方法

  1. ジャンパー線を入手してください。
  2. 一端をリレーモジュールの信号/入力ピンに接続します。
  3. もう一方の端を持ち、Vcc(+)およびGnd(-)ピンに触れて、以下の結果を確認します。

リレーモジュールのテスト結果表

2.1トランジスタ入力タイプ

一般的なバイポーラNPNトランジスタ入力タイプの場合、ソースドライバ信号(Rpi GPIO信号または3.3Vから5Vへの論理レベル変換後のRPi GPIO信号)は、直列LEDおよびバイアス抵抗を介してトランジスタのベースに送られます。

トランジスタ入力タイプ(BJT NPN)リレーモジュールの例

このリレースイッチングチュートリアルで説明されているように、他のそれほど一般的ではないリレースイッチング回路があります。

2.2フォトカプラ入力タイプ

フォトカプラ入力タイプのリレーには、入力としてフォトカプラがあります。フォトカプラは別のトランジスタを駆動し、トランジスタはリレーコイルを駆動します。


付録C-TXS0102を使用した論理レベルコンバーター

これで、Rpi GPIOがリレーモジュールを直接駆動できることがわかりましたが、2つの問題があります。まず、長い接続ワイヤを使用したGPIO信号はノイズが多いため、それほど信頼できません。第二に、フライホイールダイオード1N4148はコイルバックEMFを完全に抑制しない可能性があり、不運にも1N4148が故障したり、正しく接続されていない(接触不良、乾式はんだ付けジョイントなど)場合、バックEMFがRpiを損傷する可能性があります。

そこで、論理レベルコンバーターを使用して、Rpi GPIO信号を3V3から5Vにシフトアップすることにしました。最初にTXS102コンバーターを試したところ、うまく機能していることがわかりました。GPIO信号をシフトするだけでなく、高レベルのノイズも大幅に削減されます。

TXs0102の写真と波形

ただし、変換された5V GPIO信号をリレーモジュールに供給すると、大きな問題が見つかりました。リレーは3V3信号で以前と同様にオンとオフを切り替えましたが、スコープを使用して波形をチェックアウトすると、5V信号が2.2Vに半分に低下したことが非常に驚くほどわかりました。

理由は、TXS0102がリレーモジュールに電流を供給するよりもはるかに優れた電流をシンクできるからだと考えました。推測を確認するために、プルダウンフォトカプラータイプのモデルMK01である別のリレーモジュールに5V信号を供給しました。

今回は、5V信号が目立った量を落とさないことがわかりました。

したがって、NPNトランジスタタイプのリレーモジュールは悪い選択であるとすぐに結論付けました。これからこの種のリレーのテストを停止し、フォトカプラータイプのリレーに進みます。

また、別のフォトカプラドライバモジュールMK101もテストしました。このモジュールには、HigherトリガーまたはLowトリガーを選択するジャンパーがあります。Lowトリガーの場合、TSX0102に変換された5V信号レベルは影響を受けません。しかし、Lowトリガーが選択されると、変換された5V信号レベルは約2.5Vに低下しましたが、リレーはまだ動作しています。

txs0102高低トリガーモジュールのテスト


付録E-HC04を使用した論理レベルコンバーター

HCT125はそれほど一般的ではありません。そこで、HC03クワッドオープンドレインNANDゲートとHC04ヘキサインバーターを使用して、もう1つのコンバーター回路を試しました。HC04の出力をテストしたところ、非常にうるさいことがわかりました。理由の1つは、rpi用とコンバーター用の、それぞれ別の電源を使用していたためだと推測しました。電源の接地点を接続して共通点を作成しても、ノイズは消えませんでした。次に、RPIとコンバーターの両方に1つの電源を使用しましたが、ノイズは消えました。

ノイズの多いコンバーター出力

ここに画像の説明を入力してください

リレーモジュールのHC04出力信号を低トリガーモード(シンク電流が必要ですが、高トリガーモード(ソース電流が必要)ではありません)で試しました。したがって、電流をソースできるHC04 hex NOTゲートを追加します。リレーモジュール。

付録F-HC04レベルコンバーターの浮動入力の問題

前回、フォトカプラーリレーモジュールでHC03ベースのレベルコンバーターを初めて試したとき、入力をフロート状態のままにすると、モジュールがノイズを拾い、リレーが不規則にオンとオフに切り替わることがわかりました。周波数はおそらく1kHzだと思いました。何らかの正のフィードバック振動であるかどうかはわかりませんでした。しかし、スコープを使用してチェックアウトすると、驚くべきことに50Hzであることがわかりました。何らかの共鳴だと思います。しかし、私は共振と振動の違いがわからない。おそらく私は再びゴーグルする必要があります。とにかく、どこかにプルアップ/ダウン抵抗を追加する必要があると思います。

HC04レベルコンバーターの浮動入力の問題


以下は短縮または削除されます

#付録#

#A1。光絶縁/フォトカプラーリレーモジュールボードと回路図#

光絶縁リレーモジュールには、4ピンICであるフォトカプラがあります。下の写真は、photoCoupler PC1(緑色の1、2、3、4というラベルの付いた4つのピン)とトランジスタQ1を示しています。ICは常にマークされているわけではありません。この図では、PC1はEL354、Q1 8050です。

フォトカプラ入力タイプのリレーモジュール写真

フォトカプラ入力リレーモジュールの回路図

図リンク

 35https : //i.stack.imgur.com/cWkRi.jpg


1
tlfong01:「だからRpiの3V3 GPIO信号はリレーを直接駆動できます。」:この行を読むことで、技術に詳しくない人にもRPiのGPIOピンをリレーのコイルに直接接続できる印象を与える可能性があると言ってはいけません。結果を壊滅的で... 2N3904を追加するための理由があります...あなたは言うべき「だから、RPIの3V3 GPIO信号が直接リレー駆動することができますモジュールを ...ではなく
GeertVc

技術に詳しくない人々を思いやらないという私の不注意な過ちを指摘してくれてありがとう。そして、修正を行ったとき、KY019の2つの同一の写真を挿入するという別の間違いを見つけました。実際には、最初のものはSparkFunモジュールの回路図でなければなりません。
tlfong01

問題ありません、私たちは互いに助け合うためにここにいます... :
GeertVc

GPIOを直接使用する場合とシフターを使用するGPIOを使用する場合に相違があるのは、シフターが特定の電圧(5V)を供給することを目的としているためです。一方、3.3Vのロジックピンには、ローとハイの違いを示すしきい値が指定されています。piの場合、これは1.3Vを超えるものが高いことを意味します。グランドへの抵抗を介してシンクしている場合(つまり、電流を引いている場合)、3.3Vを取得する必要がありますが、おそらくリレーの入力はフローとは異なります。
goldilocks

@goldilocks:はい、わかりにくいです。OAは、彼のリレーキットはNPNトランジスタを使用してリレー[コイル]をトリガーすると言います。1つの答えは、トランジスタを[BC5468に]修正することを示唆しているようです。もう1つの提案は、ダーリントンULN2803を使用することです。..心をクリアにするために、もう一度コメントを読む必要があります。
tlfong01
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.