3.3V 입력 / 출력을 5V 출력 / 입력에 인터페이스하는 IC가 있습니까? 나는 주로 Arduino Due에 필요하지만 양방향 IC가 있으면 좋을 것입니다.
어떤 사람들은 SN74AHC125 및 CD4050 IC를 사용하라고 조언했지만, 작동 방식이나 인터페이스와의 인터페이스를 이해하지 못합니다.
3.3V 입력 / 출력을 5V 출력 / 입력에 인터페이스하는 IC가 있습니까? 나는 주로 Arduino Due에 필요하지만 양방향 IC가 있으면 좋을 것입니다.
어떤 사람들은 SN74AHC125 및 CD4050 IC를 사용하라고 조언했지만, 작동 방식이나 인터페이스와의 인터페이스를 이해하지 못합니다.
답변:
하나의 N-mosfet으로 매우 간단한 양방향 레벨 변환기를 만들 수 있습니다.
사용되는 MOSFET은 의도 된 입력 전압 레벨 (이 경우 3.3v)에서 상대적으로 낮은 Rds-ON (ON 저항)을 가질 수 있도록 Vgs 임계 값이 낮은 모델이어야합니다. 하나의 그러한 예에서,
BSS138 은 최대 1.5V의 Vgs-th를 가지며 2.5v의 낮은 Vgs 전압 (약간 더 낮을 수 있음)으로 낮은 드레인-소스 저항을 갖도록 지정된다.
표시된 예는 3.3v <-> 5v 변환을 사용하지만 2.5v <-> 5v, 심지어 2.5v <-> 12v 사이에서도 2.5v <-> 3.3v 또는 2.5v <-> 5v에서 작동 할 수 있습니다. 범위는 사용되는 MOSFET의 특성에 의해서만 제한됩니다.
표시된 회로는
N2500 및 기타 시스템 용 NXP AN97055 양방향 레벨 시프터 의 애플리케이션 노트를 기반으로 합니다.
새로운 버전 : AN10441 I2C 버스 설계의 레벨 시프 팅 기술
L1이 높거나 (3v3) 플로팅 R1은 MOSFET을 차단하여 R2가 드레인 쪽을 5V까지 끌어 올립니다.
L1을 낮게 당기면 MOSFET이 전도되고 드레인이 낮아집니다.
저수준 (0)이 H1에인가되면, 그 전압은 기판 다이오드를 통해 소스 측 (L1)으로 전달된다
저항 크기는 속도 ( 이미지 소스 )에 영향을 줄 수 있습니다.
대체 트랜지스터 솔루션
유용한 기사 :
문제는 양방향 레벨 시프 팅을 제공하는 IC를 지향하는 것으로 보이므로 Texas Instruments TXB010x 부품 제품군을 고려하십시오. TXB0102 에는 2 개의 채널이 있고 TXB0104 에는 4 개의 채널이 있으며 TXB0108 에는 8 개의 채널이 있습니다.
이 IC 제품군의 두드러진 특징은 신호 방향이 자동으로 감지되므로 별도의 방향 설정 핀이 필요하지 않다는 것입니다.
최대 10MHz의 스위칭 속도가 안정적으로 작동합니다. 이론상 최대 속도가 더 높을 수 있습니다. 데이터 시트는 내가 결정할 수있는 것에서 이것에 대해 명시 적이 지 않습니다.
3.6V MSP430 런치 패드와 5V Arduino Nano 사이에서 작동하는 TXB0108을 가지고 있으므로 질문의 사용 사례를 다룹니다.
시험해보기 위해 Adafruit는 TXB0108을 내장 한 사전 제작 된 모듈을 제공 하므로 SMD 부품 납땜 문제를 줄일 수 있습니다. 0102 및 0104에 대해서는 유사한 옵션이있을 수 있습니다.
의도가 이상인 경우, 레벨 시프트 I2C 신호 즉, 풀업 저항 및 I2C의 오픈 콜렉터 토폴로지를 해결 옵션은이고, 이상적 TXB 시리즈 IC에 적합하지 않고, 이와 같은 모듈에 다시 그리고 Adafruit 판매, 그리고 다른 벤더.
이 모듈은 alexan_e 의 답변에 설명 된 방식으로 BSS138 MOSFET을 사용합니다 . 질문과 같은 단일 IC는 아니지만 의도 한 목적을 달성 할 수 있습니다. 또는 MOSFET을 사용하여이 회로를 직접 구축하는 것이 간단합니다.
고려해야 할 또 다른 사항은 실제로 레벨 이동이 필요한지 여부입니다. 많은 칩은 3.3과 같은 낮은 전압에서 작동하더라도 5V 허용 입력 핀을 가지고 있습니다. atmega CPU는 또한 arduino의 0.6 * Vcc 또는 3V 이상을 로직 하이로 해석하므로 3.3V 신호는 레벨 시프 팅없이 arduino 핀을 직접 구동 할 수 있습니다.
5V arduino를 사용 중이고 3.3V 부품과 통신해야한다고 가정하면 부품에 5V 허용 입력이있는 경우 (많은 요즘) em을 연결하면 작동합니다. 양방향 라인이 i2c와 같은 개방형 콜렉터 설계 인 경우 디바이스가 라인을 낮게 당기는 경우 풀업 저항을 5V 대신 3.3V에 연결하면 문제가 해결됩니다.
그렇지 않으면 라인이 3.3V를 초과하지 않도록해야합니다. 저항과 제너를 사용하여 arduino 라인에 저항을 넣고 제너를 사용하여 전압을 3.3V로 클램핑하십시오. (출처 : repetae.net )
위험하게 살고 싶은 유혹을 느끼고 10k 저항 만 사용하면됩니다. 이것이 작동하는 이유는 수신 칩 내부에 과도한 전압을 vcc 또는 3.3V로 분류하는 클램핑 다이오드가 있기 때문입니다. 이 다이오드는 전체 3.3V 라인을 최대 5V까지 끌어 당기려고 할 때 (그 라인을 5V로 당기면 발생하는 손상 외에도) 저항이 많으면 전류가 흐르지 않고 3.3V 라인을 가정합니다 그것은 당신에게 전력선의 수준을 실질적으로 변화시키지 않지만 많은 경고가 있습니다. 따라서 일반적으로 로컬에 고립 된 3.3V 버스가없고 제너를 위해 여분의 2 센트를 절약 할 수 없다면이 작업을 수행하지 마십시오. 나는 당신이 이베이에 타고 먼지가 싼 보드 보드에 대한 회로도에서 그것을 볼 수 있기 때문에 그것을 언급하고 복사를 유혹 할 수 있습니다, 브레드 보드를지나 프로덕션 디자인으로 몰래 들어 가지 마십시오. :)
편집 은 최신 3.3V arduino를 사용하고 있음을 알았으므로 위에서 말한 것을 반전하면 제너 저항 트릭이 여전히 작동하지만 마감의 일부 I / O 라인은 5V를 견딜 수 있지만 약간의 불일치가있는 것으로 보입니다. 포럼에서. teensy 3.1은 또한 모든 5V 허용 핀을 가지고 있으며, 더 우수하고 더 나은 IMHO 설계 비용의 절반 미만인 멋진 작은 ARM 보드입니다. http://www.pjrc.com/store/teensy31.html
저렴한 솔루션 부서에서 FET (NXP 애플리케이션 노트를 기반으로 허용 된 답변에서)는 Silicon Labs AN883 에서와 같이 BJT 및 쇼트 키 다이오드로 대체 될 수 있습니다 . 그들의 회로도는 다른 것들과 약간 복잡하므로 여기에서 필수 비트를 추출하고 방향을 조정하여 두 회로도를 쉽게 비교할 수 있도록 허용 된 답변처럼 보입니다.
BJT는 단일 트랜지스터 레벨 업 시프터 에서 논의 된대로 정확하게 낮은 방향에서 높은 방향으로 만 변환 합니다. 쇼트 키는 하이-> 로우 변환을 위해 FET의 바디 다이오드를 대체합니다.
아래는 3.3V ~ 1.8V 변환기의 스코프 측정에서 확대 한 것입니다. 그들은 또한 5-1.8V 변환 등에 대한이 회로도를 제안한다. 3.3-1.8V 변환을 수행 할 때 MMBT3904는 150mV (포화) 드롭 만 가졌다. BAS40 다이오드는 반대 방향으로 350mV 강하했습니다. 이러한 단점은 번역기의 낮은 쪽과 높은 쪽의 로직 로우 레벨 출력에 영향을 미칩니다.
양쪽에 멋진 CMOS 장치가 있었기 때문에 입력 임피던스는 큰 문제가되지 않았습니다. 1V / div 트레이스에서 로직 하이 마진의 눈에 띄는 저하 / 오프셋은 없었으므로 여기에 포함시키지 않아도됩니다. 디바이스의 입력 임피던스는 시뮬레이션에서 알 수 있듯이 최소 1Mohm입니다. 로직 하이 마진은 100K 입력 임피던스 이하로 저하되기 시작합니다.
또한이 BJT 기반 변환기는 최대 300KHz 정도만 권장합니다.
실제로 이러한 솔루션 중 FET 또는 Schottky + BJT 중 어떤 솔루션이 더 저렴한 지 잘 모르겠지만 PZMT1101 과 같은 다이오드 + 트랜지스터 패키지 중 하나를 사용하지 않으면 확실히 더 많은 부품이 필요합니다 . 그러나 3 개의 저항도 필요합니다.
글쎄, 많은 있습니다. 최대 주파수, 필요한 비트 수 등을 지정해야합니다. 간단히 말해서 전압 레벨 변환기 IC를 사용할 수 있습니다. Texas Instruments에는 동일한 목적을위한 깔끔한 선택 도구가 있습니다. http://www.ti.com/logic/docs/translationresults.tsp?sectionId=458&voltageIn=5.0&searchDirection=2&voltageOut=3.3#voltintf
또한 양방향 레벨 시프 팅 기능뿐만 아니라 뛰어난 전기적 절연을 원한다면 ISO1541 을 권장 합니다 . 상당히 저렴하고 격리를 통해 우수한 보호 기능을 제공합니다.
여기에 모든 방법에 대한 좋은 요약이 있습니다.
http://playground.arduino.cc/Main/I2CBi-directionalLevelShifter
가장 간단한 해결책은 모든 회로를 3.3V에서 실행하는 것입니다. HC 칩은 그 수준에서 행복하게 실행될 것입니다.
그것이 가능하지 않은 경우, 자신을 한 방향으로 제한하면 훨씬 간단하게 만들 수 있습니다. 5V의 HCT 칩은 3.3V 레벨 만 허용하고 간단한 2 저항 분배기는 5V를 3.3V로 줄일 수있다. 일부 uC는 핀에 5V를 허용하므로 디바이더가 필요하지 않습니다. 그리고 핀에 5V 풀업을 연결하고 접지와 개방 (= 입력) 사이를 전환하면 통과 가능한 0-5V 출력이 있습니다.
오픈 컬렉터 버스 (I2C, 달라스 1- 와이어)를 결합하기 위해 BS138 트릭은 갈 길입니다. 하나의 하우징에 두 개의 FET를 배치하는 I2C 용 소형 칩이 있습니다. (PCA9306 등)
그러나 만약 당신이 bi-drection level translation을 원한다면 : 그러한 칩들이 존재한다면 TXB0108를 확인하십시오.