GPIO 핀에서 5V 릴레이 전원 공급


22

Pi에서 실행하려고하는 릴레이 뱅크 (5)가 있습니다. NPN 트랜지스터를 사용하여 릴레이를 트리거하는 Sparkfun의 고전력 릴레이 키트로 구동되는 5V TE Connectivity 릴레이를 사용하고 있습니다.

지금까지 내가 겪고있는 문제는 릴레이를 전환 할 수 없다는 것입니다. GPIO 출력 핀이 5V를 공급하지 않습니까? Pi가 GPIO에서했다고 생각했습니다.


4
Gpio 핀은 3.3V가 아닙니다.
Steve Robillard

그런 다음 회로를 수정할 수있는 방법을 알고 있습니까?
hightekjonathan

1
모든 접지를 함께 연결하려면 5 볼트의 전원 공급 장치와 리 메이버가 필요합니다. ebay.com/itm/
Steve Robillard

2
먼저 별도의 전원 공급 장치를 사용하여 작업 한 다음 Pi의 전원 요구 사항의 복잡성과 이식성을 해결하는 것이 좋습니다. 그들이 말하는 것처럼 코끼리를 먹는 가장 좋은 방법은 한 번에 한 입입니다.
Steve Robillard

1
모든 근거는 서로 묶여 있습니다. 그리고 5V 포지티브는 달링턴에서 공통으로 연결됩니다. 나는 다이어그램을 따랐다.
hightekjonathan

답변:


36

왜 이렇게 좋아하지 않습니까?

Raspberry Pi는 0과 3V3 사이에서 Q1을 포화시키기에 충분한 양으로 전환합니다. 이는 "무거운"작업을 대신합니다 : + 5V 릴레이 켜기 / 끄기. 사용중인 계전기에 따라 D1 및 Q1에 대한 약간의 수정 사항이 적용될 수 있습니다.

릴레이를 제어하는 ​​라즈베리 파이


훌륭한 답변! 그리고 이것을하는 매우 안전한 방법입니다.
Piotr Kula

3
좋은 답변은 "릴레이 질문"을 한 번에 해결해야합니다. Pi와 계전기의 공급 전압이 동일하거나 최소한 공통 GND를 공유해야한다는 사실을 추가하는 것이 좋을 것입니다. 전기 기술자에게는 이것이 분명해 보일 수 있지만 초보자에게는 함정이 될 수 있습니다.
Ghanima

@ 가니 마 : 예, 확실합니다. 그러나 당신이 언급했듯이, 나에게 지상 기호가 보이면 "분명한"것입니다. 이것은 양쪽에 있습니다 (여기서는 라즈베리와 릴레이). 또한 의도적으로 + 5V (+ 24V 또는 안전한 저 DC 전압 일 수 있음)로 계전기에 전원을 공급하여 청중에게 명시 적으로 보여주는 것은 위 회로의 목적이 두 사이트에서 서로 다른 전압을 갖는 것입니다. 그것이 회로의 목표입니다.
GeertVc

1
R2의 목적은 무엇입니까?
erikH

2
@erikH :이 저항은 R1의 입력이 플로팅 될 경우를 대비하여 Q1의베이스가 고정 레벨 (이 경우 접지에 연결됨)을 갖도록합니다. 입력이 플로팅되지 않을 것이라고 확신하는 경우 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 신호가 충분히 낮지 않기 때문에 High 또는 Low 입력이든 상관없이 항상 릴레이가 켜져 있습니까?

FAQ3-My Rpi GPIO Low 신호는 릴레이를 끌 수 없지만 GPIO를 입력으로 설정하면됩니다. 그렇게하면 Rpi를 다치게합니까?

하드웨어 문제 해결 제안

소프트웨어 문제 해결 제안

참고 문헌

# 솔루션 1. NPN 트랜지스터 바이어스를 수정하여 3.3V 호환 가능

다음과 같은 두 가지 일반적인 유형의 솔루션이 있습니다.

(1) 3.3V 신호에 맞게 모듈의 5V 로직 레벨 입력 회로를 수정합니다.

(2) 3.3V ~ 5V 논리 레벨 변환기를 사용하여 Rpi의 3.3V 신호를 5V로 전환하십시오.

나는 이제 (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입니다. 40mS주기 (25cps)에서 릴레이 모듈을 토글하도록 Rpi GPIO 핀 17을 프로그래밍하고 릴레이가 예상대로 행복하게 클릭되는 것을 발견했습니다. (GPIO 신호에 2m 길이의 연결 와이어를 사용하고 있었으므로 릴레이 입력 끝의 신호가 약간 시끄 럽습니다.)

KY019 토글 테스트

3.3V 로직과 호환되도록 Beefcake 모듈을 수정하는 방법

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의 로직 하이 신호는 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과 유사한 높은 수준의 티거 릴레이 모듈을 작동시키는 UDN2981과 낮은 트리거 모듈 인 ULN2803을 성공적으로 검증했습니다. 아래는 요약입니다.

높은 트리거, NPN 트랜지스터 입력 유형 릴레이 모듈을 제어하는 ​​UDN2981

먼저 회로가 제대로 작동하는지 확인하기 위해 Rpi에 연결하지 않고 UDN2981을 수동으로 테스트하여 4 개의 LED를 깜박였습니다.

uln2803 udn2981 사진

그런 다음 4 개의 NPN 트랜지스터 입력 유형 릴레이 모듈 (KY019)을 설정하고 4 개의 릴레이 모듈 입력을 4 개의 UDN2981 채널 출력에 연결했습니다.

KY019 x 4

그런 다음 4 개의 Rpi 3.3V GPIO 핀을 4 개의 UDN2981 채널 입력에 직접 연결했습니다. 다음 파이썬 기능을 사용하여 25 cps에서 4 개의 릴레이 모듈을 토글했습니다.

4 릴레이를 토글하는 파이썬 기능

결과는 좋았습니다. 4 개의 릴레이 모듈 클릭 및 LED가 예상대로 25cps에서 깜박입니다. Rpi GPIO 출력 신호는 3.3V에 가깝고 UDN 출력 신호는 4.0V에 가깝습니다. 이는 입력에 과부하가 발생하지 않았 음을 의미합니다.

모듈 파형 전환

높은 트리거, 광 절연 릴레이 모듈을 제어하는 ​​UDN2981

OP는 또한 옵토 절연 릴레이 모듈을 사용하는 것이 안전하기 때문에 고려했습니다. 동일한 UDN2981을 사용하여 4 개의 고수준 트리거, 광 분리 계전기 모듈 (MK055)을 제어했습니다.

MK055 릴레이 모듈

실제로 UDN2981은 NPN 트랜지스터 또는 옵토 절연 유형에 관계없이 모든 종류의 High 트리거 모듈을 제어하는 ​​데 사용할 수 있습니다.

그러나 PNP 트랜지스터 또는 광 분리 된 저 트리거 모듈의 경우 소스 드라이버 UDN2981이 작동하지 않으면 ULN2803 또는 기타 싱크 드라이버를 사용해야합니다.

로우 트리거 PNP 트랜지스터 입력 또는 옵토 절연 릴레이 모듈을 제어하는 ​​ULN2803

ULN2083 싱크 드라이버가 4 개의 낮은 트리거 옵토 절연 릴레이 모듈을 제어 할 수 있음을 성공적으로 확인했습니다. 먼저 4 개의 LED를 수동으로 깜박이는 테스트 한 다음 위의 동일한 Python 기능을 사용하여 4 개의 모듈을 테스트했습니다. 결과도 좋았습니다.

MK101 릴레이 모듈

토론

ULN2803 및 UDN2981 장단점

찬성

  1. ULN2803UDN2981 은 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 Quad NAND 게이트 및 HC04 Hex Inverter가 3.3V 로직 신호에 맞는 UDN2981과 동일한 작업을 수행 할 수 있습니다.

HC03 및 HC04가 3.3V 로직을 5V로 전환하는 것을 성공적으로 확인했으며 트랜지스터 입력 및 옵토 절연 하이 레벨 트리거 모듈 모두에서 작동하는 것으로 나타났습니다.

hc03 04 변환기 회로도

hc03 hc04 ky019 mk047

hc03 hc04 ky019 ky047

# 참조 #

R1. 전기 릴레이는 어떻게 작동합니까? -TechyDIY

R2. 릴레이 스위치 회로-전자 자습서

R3. 비프 케익 릴레이 제어 연결 가이드-SparkFun

R4. 디지털 버퍼 및 3 상태 버퍼-전자 자습서

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를 테스트했습니다. 나는 그것이 잘 작동한다는 것을 알게되어 기뻤습니다. NPN 트랜지스터 구동 릴레이 모듈에 연결했을 때 HCT125로 변환 된 5V0 신호가 떨어지지 않았습니다.

HCT125 레벨 변환기

/ ...

부록의 끝

** * 긴 답변 삭제 예정 * **

이 긴 대답은 너무 길고 지저분합니다. 나는 이제 관련없는 문단을 제거하고 관련 질문을하고 나 자신에게 답함으로써 대체 할 것이다.


포토 커플러 / 옵토 절연 릴레이 모듈 확인 방법

  1. 점퍼 와이어를 가져옵니다.
  2. 한쪽 끝을 릴레이 모듈의 신호 / 입력 핀에 연결하십시오.
  3. 다른 쪽 끝을 잡고 Vcc (+) 및 Gnd (-) 핀을 터치하고 아래 결과를 확인하십시오.

릴레이 모듈 테스트 결과 테이블

2.1 트랜지스터 입력 유형

널리 사용되는 바이폴라 NPN 트랜지스터 입력 유형의 경우, 소싱 드라이버 신호 (3.3V에서 5V 논리 레벨 변환 후 Rpi GPIO 신호 또는 RPi GPIO 신호)는 직렬 LED 및 바이어 싱 저항을 통해 트랜지스터의베이스로 이동합니다.

트랜지스터 입력 타입 (BJT NPN) 릴레이 모듈의 예

이 릴레이 스위칭 튜토리얼에 설명 된 다른 인기없는 릴레이 스위칭 회로가 있습니다

2.2 포토 커플러 입력 유형

포토 커플러 입력 타입 계전기는 입력으로 포토 커플러를 가지고 있습니다. 광 커플러는 다른 트랜지스터를 구동하여 릴레이 코일을 구동합니다.


부록 C-TXS0102를 사용한 논리 레벨 변환기

이제 Rpi GPIO가 릴레이 모듈을 직접 구동 할 수 있지만 두 가지 문제가 있음을 알고 있습니다. 첫째, 긴 연결 와이어가있는 GPIO 신호는 잡음이 많으므로 신뢰할 수 없습니다. 둘째, 플라이휠 다이오드 1N4148이 코일 백 EMF를 완전히 억제하지 못할 수 있으며, 불행하게도 1N4148이 고장 나거나 제대로 연결되지 않으면 (접점 불량, 건식 납땜 조인트 등) REM이 손상 될 수 있습니다.

그래서 논리 레벨 변환기를 사용하여 Rpi GPIO 신호를 3V3에서 5V로 전환하기로 결정했습니다. 먼저 TXS102 변환기를 사용해 보았고 제대로 작동하는 것으로 나타났습니다. GPIO Siganl을 위로 올리는 것 외에도 높은 수준의 노이즈도 크게 줄어 듭니다.

TXs0102 사진 및 파형

그러나 변환 된 5V GPIO singal을 릴레이 모듈에 공급할 때 큰 문제가 발견되었습니다. 릴레이는 여전히 3V3 신호로 이전과 같이 켜지고 꺼졌습니다. 그러나 스코프를 사용하여 파형을 확인했을 때 5V 신호가 절반으로 2.2V로 떨어 졌다는 사실이 놀랍습니다 .

TXS0102가 계전기 모듈에 전류를 공급하는 것보다 전류를 훨씬 잘 싱크 할 수 있기 때문인 것으로 의심됩니다. 추측을 확인하기 위해 5V 신호를 풀다운 포토 커플러 유형 MK01 모델 인 다른 릴레이 모듈에 공급했습니다.

이번에는 5V 신호가 눈에 띄는 양을 떨어 뜨리지 않았다는 것을 알았습니다.

그래서 나는 NPN 트랜지스터 타입 릴레이 모듈이 나쁜 선택이라고 빨리 결론을 내 렸습니다. 지금부터 이러한 종류의 릴레이 테스트를 중단하고 포토 커플러 유형의 릴레이로 이동합니다.

다른 포토 커플러 드라이버 모듈 MK101도 테스트했습니다. 이 모듈에는 더 높은 트리거 또는 낮은 트리거를 선택하기위한 점퍼가 있습니다. Low 트리거의 경우 TSX0102로 변환 된 5V 신호 레벨은 영향을받지 않습니다. 그러나 낮은 트리거를 선택하면 릴레이가 여전히 작동하지만 변환 된 5V 신호 레벨이 약 2.5V로 떨어졌습니다.

TXS0102 테스트 고저 트리거 모듈


부록 E-HC04를 사용한 논리 레벨 변환기

HCT125는 그리 일반적이지 않습니다. 그래서 HC03 쿼드 오픈 드레인 NAND 게이트와 HC04 16 진수 인버터를 사용하여 변환기 회로를 하나 더 시도했습니다. HC04 출력을 테스트했을 때 매우 시끄 럽습니다. 한 가지 이유는 다른 전원 공급 장치를 사용하고 있었기 때문입니다. 하나는 rpi 용이고 다른 하나는 변환기 용입니다. 공통점을 만들기 위해 전원 공급 장치의 접지 지점을 연결하더라도 소음이 사라지지 않았습니다. 그런 다음 rpi와 변환기 모두에 하나의 전원 공급 장치를 사용했는데 소음이 사라졌습니다.

노이즈 컨버터 출력

여기에 이미지 설명을 입력하십시오

저 트리거 모드 (싱크 전류는 필요하지만 하이 트리거 모드 (소싱 전류 필요)는 아님)에서 릴레이 모듈의 HC04 출력 신호를 사용해 보았습니다. 따라서 전류를 공급할 수있는 HC04 16 진수 NOT 게이트를 추가하겠습니다 릴레이 모듈.

부록 F-HC04 레벨 변환기 부동 입력 문제

마지막으로 포토 커플러 릴레이 모듈에서 HC03 기반 레벨 컨버터를 처음 시도했을 때 입력 플로팅을 떠난 경우 모듈이 노이즈를 포착하고 릴레이가 미묘하게 켜지고 꺼지는 것을 발견했습니다. 나는 주파수가 아마도 1kHz라고 생각했다. 그것이 일종의 긍정적 인 피드백 진동인지 확실하지 않았습니다. 그러나 스코프를 사용하여 체크 아웃했을 때 놀랍게도 50Hz라는 것을 알았습니다! 나는 일종의 공명이라고 생각합니다. 그러나 공명과 진동의 차이점이 무엇인지 모르겠습니다. 아마도 다시 고글해야 할 것입니다. 어쨌든, 어딘가에 풀 업 / 다운 저항을 추가해야한다고 생각합니다.

HC04 레벨 변환기 플로팅 입력 문제


단축되거나 삭제되는 아래

# 부록 #

# A1. 옵토 절연 / 포토 커플러 릴레이 모듈 보드 및 회로도 #

옵토 절연 릴레이 모듈에는 4 핀 IC 인 포토 커플러가 있습니다. 아래 그림은 photoCoupler PC1 (녹색으로 1, 2, 3, 4로 표시된 4 개의 핀이 있음) 및 트랜지스터 Q1을 보여줍니다. IC가 항상 표시되어 있지는 않습니다. 이 그림에서 PC1은 EL354이고 Q1 8050입니다.

포토 커플러 입력 형 릴레이 모듈 사진

포토 커플러 입력 릴레이 모듈 회로도

다이어그램 링크

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


1
tlfong01 : "Rpi의 3V3 GPIO 신호는 계전기를 직접 구동 할 수 있습니다." :이 라인을 읽는 것은 비 기술적 인 사람들에게 인상을 줄 수 있기 때문에 RPi의 GPIO 핀을 릴레이 코일에 직접 연결할 수 있습니다. 결과를 파괴로 ... 당신은 말을해야 ... 2N3904의 추가 이유있다 "그래서 RPI의 3V3 GPIO 신호가 직접 릴레이 구동 할 수 모듈 " ... 대신을
GeertVc

비 기술적 인 사람들을 생각하지 않는 부주의 한 실수를 지적 해 주셔서 감사합니다. 그리고 내가 교정을 할 때, 나는 KY019의 두 개의 동일한 그림을 삽입하는 또 다른 실수를 발견했습니다. 실제로 첫 번째는 SparkFun 모듈의 회로도 여야합니다.
tlfong01

문제 없습니다, 우리는 서로를 돕기 위해 여기 있습니다 ... :-)
GeertVc

시프터가있는 GPIO와 GPIO를 직접 사용하는 경우 불일치가 발생하는 이유는 시프터가 특정 전압 (5V)을 전달하기위한 것입니다. 반면에 3.3V 로직 핀에는 로우와 하이의 차이를 나타내는 임계 값이 지정됩니다.파이에게 이것은 1.3V 이상의 것이 높다는 것을 의미한다 . 접지에 대한 저항을 통해 싱크하는 경우 (즉, 전류 당기기) 3.3V를 가져와야하지만 이는 아마도 릴레이의 입력이 아닌 플로팅입니다.
goldilocks

@ goldilocks : 예, 혼란 스럽습니다. OA는 그의 계전기 키트가 NPN 트랜지스터를 사용하여 계전기 [코일]를 작동 시킨다고 대답했다. 또 다른 제안은 달링턴 ULN2803을 사용하는 것입니다.
tlfong01
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.