Piから実行するリレーのバンク(5)があります。NPNトランジスタを使用してリレーをトリガーするSparkfunのハイパワーリレーキットを搭載した5V TE Connectivityリレーを使用しています。
これまでのところ、私が抱えている問題は、リレーを切り替えることができないことです。GPIO出力ピンは5Vを供給しませんか?私はPiがGPIOでやったと思った。
Piから実行するリレーのバンク(5)があります。NPNトランジスタを使用してリレーをトリガーするSparkfunのハイパワーリレーキットを搭載した5V TE Connectivityリレーを使用しています。
これまでのところ、私が抱えている問題は、リレーを切り替えることができないことです。GPIO出力ピンは5Vを供給しませんか?私はPiがGPIOでやったと思った。
回答:
単純にこのようにしないのはなぜですか?
Raspberry Piは、0と3V3を切り替えます。これは、Q1を飽和させるのに十分以上で、「重い」作業を引き継ぎます。つまり、+ 5Vリレーのオン/オフを切り替えます。使用しているリレーによっては、D1とQ1に小さな変更が適用される場合があります。
# 前書き #
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ロジック信号用に設計されています。
Rpiの3.3V信号で駆動できる同様のNPNトランジスタモジュールKY019があります。そこで、KY019が3.3V信号を受信できるのにBeecakeができない理由を見つけるために、入力信号の要件を確認しました。
KY-019のトリガーレベルは2.5Vおよび0.1mAであることがわかりました。この信号は、NPNトランジスタによって50mAに増幅され、コイルを活性化してリレーをアクティブにするのに十分な高さになります。
Rpi GPIO(2.8Vを超える高レベル、および16mAの最大電流制限)、4mAを快適にソースできます。モジュールを直接駆動しても問題はないはずです。
コイルの応答時間は10mSです。Rpi GPIOピン17をプログラムして、40mS周期(25cps)でリレーモジュールを切り替えたところ、期待どおりにリレーがうまくクリックすることがわかりました。(GPIO信号に2メートルの長さの接続ワイヤを使用していたため、リレー入力端の信号は少しうるさいです。)
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を点滅させて、回路が正常に機能していることを確認しました。
次に、4つのNPNトランジスタ入力タイプのリレーモジュール(KY019)をセットアップし、4つのリレーモジュール入力を4つのUDN2981チャネル出力に接続しました。
次に、4つのRpi 3.3V GPIOピンを4つのUDN2981チャネル入力に直接接続しました。次のpython関数を使用して、25 cpsで4つのリレーモジュールを切り替えました。
結果は良かった。4つのリレーモジュールがクリックされ、LEDが25cpsで期待どおりに点滅します。Rpi GPIO出力信号は3.3V付近に留まり、UDN出力信号は4.0V付近にあり、入力が過負荷になっていないことを意味します。
ハイトリガー、光絶縁リレーモジュールを制御するUDN2981
OPは、より安全であるため、光絶縁リレーモジュールの使用も検討しました。同じUDN2981を使用して、4つの高レベルトリガー、光絶縁リレーモジュール(MK055)を正常に制御しました。
実際、UDN2981は、NPNトランジスタや光絶縁タイプに関係なく、あらゆる種類の高トリガーモジュールの制御に使用できます。
ただし、PNPトランジスタまたはオプト絶縁のいずれでも、低トリガーモジュールの場合、ソースドライバーUDN2981は機能しません。ULN2803または他のシンクドライバーを使用する必要があります。
低トリガーPNPトランジスタ入力または光絶縁リレーモジュールを制御するULN2803
ULN2083シンクドライバーが4つの低トリガー光絶縁リレーモジュールを制御できることを確認しました。最初に4つのLEDを手動で点滅させてテストし、次に上記の同じPython関数を使用して4つのモジュールをテストしました。結果も良かった。
討論
ULN2803およびUDN2981の長所と短所
長所
ULN2803およびUDN2981は、3.3Vまたは5Vの供給電圧でTTLまたはCMOSロジック信号によって直接駆動できます。
クランプダイオードを備えた定格500mA出力は、リレーとステッピングモーターの切り替えに適しています。
短所
ULN2803、特にUDN2981はそれほど一般的ではありません。
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にシフトすることを検証し、トランジスタ入力と光絶縁高レベルトリガーモジュールの両方で機能することを確認しました。
#参考文献#
R1。電気リレーはどのように機能しますか?-TechyDIY
R4。デジタルバッファおよびトライステートバッファ-エレクトロニクスチュートリアル
Arduino Voh 4.2V、Vol 0.9V
Rpi Voh 2.4V、Vol 0.7V
R8。バイポーラトランジスタ-エレクトロニクスのチュートリアル
================
#A.3 HCT125を使用した論理レベルコンバーター#
そこで、別のアップコンバーターHCT125をテストしました。私はそれがうまくいくことを見つけてうれしかったです。HCT125変換5V0信号は、NPNトランジスタ駆動のリレーモジュールに接続してもドロップしませんでした。
/ ...
付録の終わり
** *削除される長い回答* **
この長い答えは長すぎて面倒です。私は今、無関係な段落を削除し、おそらく関連する質問をして自分自身に答えることによってそれらを置き換えることを試みています。
フォトカプラ/光絶縁リレーモジュールの確認方法
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信号をシフトするだけでなく、高レベルのノイズも大幅に削減されます。
ただし、変換された5V GPIO信号をリレーモジュールに供給すると、大きな問題が見つかりました。リレーは3V3信号で以前と同様にオンとオフを切り替えましたが、スコープを使用して波形をチェックアウトすると、5V信号が2.2Vに半分に低下したことが非常に驚くほどわかりました。
理由は、TXS0102がリレーモジュールに電流を供給するよりもはるかに優れた電流をシンクできるからだと考えました。推測を確認するために、プルダウンフォトカプラータイプのモデルMK01である別のリレーモジュールに5V信号を供給しました。
今回は、5V信号が目立った量を落とさないことがわかりました。
したがって、NPNトランジスタタイプのリレーモジュールは悪い選択であるとすぐに結論付けました。これからこの種のリレーのテストを停止し、フォトカプラータイプのリレーに進みます。
また、別のフォトカプラドライバモジュールMK101もテストしました。このモジュールには、HigherトリガーまたはLowトリガーを選択するジャンパーがあります。Lowトリガーの場合、TSX0102に変換された5V信号レベルは影響を受けません。しかし、Lowトリガーが選択されると、変換された5V信号レベルは約2.5Vに低下しましたが、リレーはまだ動作しています。
付録E-HC04を使用した論理レベルコンバーター
HCT125はそれほど一般的ではありません。そこで、HC03クワッドオープンドレインNANDゲートとHC04ヘキサインバーターを使用して、もう1つのコンバーター回路を試しました。HC04の出力をテストしたところ、非常にうるさいことがわかりました。理由の1つは、rpi用とコンバーター用の、それぞれ別の電源を使用していたためだと推測しました。電源の接地点を接続して共通点を作成しても、ノイズは消えませんでした。次に、RPIとコンバーターの両方に1つの電源を使用しましたが、ノイズは消えました。
リレーモジュールのHC04出力信号を低トリガーモード(シンク電流が必要ですが、高トリガーモード(ソース電流が必要)ではありません)で試しました。したがって、電流をソースできるHC04 hex NOTゲートを追加します。リレーモジュール。
付録F-HC04レベルコンバーターの浮動入力の問題
前回、フォトカプラーリレーモジュールでHC03ベースのレベルコンバーターを初めて試したとき、入力をフロート状態のままにすると、モジュールがノイズを拾い、リレーが不規則にオンとオフに切り替わることがわかりました。周波数はおそらく1kHzだと思いました。何らかの正のフィードバック振動であるかどうかはわかりませんでした。しかし、スコープを使用してチェックアウトすると、驚くべきことに50Hzであることがわかりました。何らかの共鳴だと思います。しかし、私は共振と振動の違いがわからない。おそらく私は再びゴーグルする必要があります。とにかく、どこかにプルアップ/ダウン抵抗を追加する必要があると思います。
以下は短縮または削除されます
#付録#
#A1。光絶縁/フォトカプラーリレーモジュールボードと回路図#
光絶縁リレーモジュールには、4ピンICであるフォトカプラがあります。下の写真は、photoCoupler PC1(緑色の1、2、3、4というラベルの付いた4つのピン)とトランジスタQ1を示しています。ICは常にマークされているわけではありません。この図では、PC1はEL354、Q1 8050です。
図リンク