BOB-12009 Bi-directional Level Converter
BOB-12009 Bi-directional Level Shifter
로직레벨컨버터
사용처
로직 레벨은 0과 1을 인식하는 전압을 의미한다. 아두이노를 사용할 때 보통 1 (High)는 5V를 의미하고 0 (Low)는 0V를 의미한다. 하지만, 4.8V를 입력하면 아두이노는 1로 인식하지 못한다는 것은 아니다.
아두이노에 사용되는 ATmega328의 datasheet을 보면 다음과 같다.
- voltage lower than 0.3*VCC = LOW
- voltage higher than 0.6*VCC = HIGH
아두이노는 보통 5V 이상에서 구동되므로 3V 이상이면 1, 1.5V이하이면 0으로 인식한다. 1.5V~3V 전압은 0일지 1일지 장담할 수 없다.
문제는 3.3V 로직 레벨을 가진 장치가 5V의 신호를 받게 되면 터져버릴 수도 있다는 것이다. 예를 들어, 5V 로직 레벨을 사용하는 아두이노의 GPIO를 3.3V 로직 레벨을 사용하는 ESP8266의 GPIO에 직접 연결하면 ESP8266의 GPIO가 손상될 수 있다.
혹은 1.8V 로직 레벨을 가진 장치의 High 신호를 아두이노는 High로 인식하지 못할 수도 있다. 1.8V는 확실히 1이라고 할 수도 없고 확실히 0이라고 할 수도 없는 애매한 영역에 속하기 때문이다.
이와 같은 경우에 로직 레벨을 바꿔주는 변환기가 필요하다. 저항으로 전압분배기를 만들어 로직 레벨을 바꿔주는 방법도 있지만 0과 1 사이에서 신호가 빠르게 바뀌는 통신에서는 저항으로 인해 transient time이 길어지며 문제가 생길 수 있다. 그래서 안정적인 작동을 위해서라면 logic converter를 사용하는 것이 좋다.
사용법
HV --- 5V의 고정 전압
LV --- 3.3V의 고정전압
GND --- 양쪽 디바이스의 GND
HVx --- 아두이노의 GPIO
LVx --- ESP8266의 GPIO
원리
원리는 한 채널 당 한 개의 NMOS를 통해 구현한 것으로 매우 간단하다.
LV1 ---> HV1 로직 레벨 승압
3.3V를 가하면 NMOS의 VGS = 0V 이므로 cutoff되어 HV1은 풀업 전압인 5V를 띈다.
0V를 가하면 NMOS의 VGS = 3.3V > VTH 이므로 saturation mode. HV1은 LV1과 같은 전압인 0V를 띈다.
HV1 ---> LV1 로직 레벨 감압
5V를 가하면 LV1이 3.3V인 상태가 평형상태가 된다.
0V를 가하면 HV1 쪽 핀이 NMOS source가 되면서 saturation mode. LV1은 HV1과 같은 전압인 0V를 띈다.
회로에 사용된 BSS138의 특성을 보면 HV > LV > 1.5V 이면 작동할 듯. 12V, 5V, 3.3V, 2.8V, 1.8V 레벨에 대해 두루 쓰일 수 있을 것이다.
주의점
- 모듈의 크기는 5mm x 6mm 이다. 보이는 것보다 훨씬 작다.
- 실험 결과 LV1에 3.3V를 인가하면 HV1에서는 정확히 5V가 아닌 4.7V 정도가 출력된다.
- BSS138의 최대 정격전류가 220mA이므로 로직 수준에서만 사용이 가능하고 전원 공급용으로는 무리가 따른다.
참고
BSS138 datasheet : https://www.onsemi.cn/pub/Collateral/BSS138-D.PDF
'개발&공작' 카테고리의 다른 글
도,분,초 -> 도 변환 (0) | 2019.09.07 |
---|---|
NMEA GGA, RMC parsing C code (0) | 2019.09.06 |
HM-10 블루투스 모듈 115200bps에서 data drop 문제 (0) | 2019.09.06 |
[STM32] TrueStudio 디버깅 오류 (0) | 2019.08.17 |
[NRF52] NRF52 DK 보드(PCA10040/PCA10056) 기본적인 사용법 (0) | 2019.08.17 |
[STM32] ST-Link가 없을 때 커스텀 보드 프로그래밍하기 (0) | 2019.08.17 |