아두이노 나노 ESP32 PC817 옵토커플러: 12V/24V DC 입력 신호 모니터링
소규모 홈 오토메이션이나 오프그리드 설치에 쓰이는 많은 장비는 이미 12V 또는 24V로 신호를 주고받습니다: "부하 켜짐" 상태 라인이 있는 태양광 충전 컨트롤러, 12V 초인종 변압기, 게이트 또는 차고 컨트롤러, 경보 패널의 사이렌 출력 등이 그렇습니다. 이 중 어느 것이든 Arduino Nano ESP32 핀에 직접 연결하면 프로젝트는 즉시 끝나 버립니다. PC817 옵토커플러 모듈은 그 중간에 위치하여 정보를 전기가 아닌 빛으로 전달하므로, 보드는 라인에 직접 닿지 않고도 라인을 감시할 수 있습니다. 대부분의 경우 진짜 질문은 "이 두 선에 전압이 있는가?"가 아니라 "그 장치가 실제로 켜졌는가?"입니다 - 그리고 같은 부품이 이 질문에도 답해 줍니다. 감시하는 라인이 바로 그 장치에 전원을 공급하는 라인이기 때문입니다.
이 가이드에서는 Arduino Nano ESP32와 함께 PC817 옵토커플러를 사용하는 방법을 배웁니다. 자세히 말하면 다음을 배웁니다:
- PC817 옵토커플러가 12V 또는 24V 회로를 Arduino Nano ESP32와 전기적으로 분리하는 방법.
- 세 가지 모듈 종류 - 3-5V, 12V, 24V - 중 감시하려는 신호에 맞는 것은 무엇이며, 다른 것을 사용하면 어떤 문제가 생기는지.
- PC817 옵토커플러 모듈을 Arduino Nano ESP32에 배선하는 방법.
- 모듈이 액티브 로우인지 액티브 하이인지 1분 안에 알아내고, 상수 하나로 스케치를 바꾸는 방법.
- 모듈을 장치 양단에 병렬로 연결하여, 보드가 그 장치가 지금 켜져 있는지 꺼져 있는지 알 수 있게 하는 방법.
- 절연된 입력이 살아 있는지 알려주는 Arduino Nano ESP32 스케치를 작성하는 방법.

Nano ESP32는 작고 WiFi가 내장되어 있어서, 항상 켜져 있는 작은 모니터로 딱 알맞습니다: 12V 태양광 캐비닛 안이나 게이트 컨트롤러 옆에 넣어 두고, 게이트 모터가 실제로 시작되었는지 휴대폰으로 알려주게 할 수 있습니다.
준비물
| 1 | × | 아두이노 나노 ESP32 | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-A to 타입-C (USB-A PC용) | 쿠팡 | 아마존 | |
| 1 | × | USB 케이블 타입-C to 타입-C (USB-C PC용) | 아마존 | |
| 1 | × | PC817 Optocoupler Module, 3-5V input | 아마존 | |
| 1 | × | PC817 Optocoupler Module, 12V input | 아마존 | |
| 1 | × | 브레드보드 | 쿠팡 | 아마존 | |
| 1 | × | 점퍼케이블 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 스크루 터미널 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노용 브레이크아웃 확장 보드 | 쿠팡 | 아마존 | |
| 1 | × | (추천) 아두이노 나노 ESP32용 전원 분배기 | 쿠팡 | 아마존 |
모듈은 하나만 구입하면 됩니다 - 감시하려는 신호와 입력 전압이 맞는 모듈입니다. 어떤 것인지는 다음 섹션에서 알아봅니다.
PC817 옵토커플러에 대하여
PC817은 포토커플러 또는 광절연기(opto-isolator)라고도 판매되며, 하나의 플라스틱 몸체 안에 두 가지를 담은 4핀 DIP 부품입니다: 적외선 LED와 포토트랜지스터가 절연 간격을 사이에 두고 서로 마주 보고 있습니다. LED에 전류를 흘리면 그 빛이 포토트랜지스터를 켭니다. 신호는 전류가 아닌 빛으로만 건너가며, 바로 이 때문에 12V 또는 24V 쪽과 Arduino Nano ESP32 쪽이 전기적으로 분리된 상태를 유지합니다.
PC817 옵토커플러 모듈은 이 칩을 작은 보드에 미리 장착한 것으로, 직렬 저항이 공장에서 장착되어 있고, 절연된 쪽에는 나사 단자가, 상태 LED가, 보드 쪽에는 헤더 핀이 있습니다. 이 장착된 저항 때문에 모듈이 여러 종류로 판매되며, 또 이 때문에 여러분이 계산할 것이 아무것도 남지 않습니다.
| PC817 옵토커플러 | |
|---|---|
| 패키지 | 4핀 DIP, 1번 핀은 점 또는 홈으로 표시 |
| 입력 LED 순방향 전압 | 일반적으로 약 1.2V, 최대 1.4V |
| 입력 LED 순방향 전류 | 정상 범위 5-20mA, 최대 20mA |
| 출력 컬렉터-이미터 전압 | 최대 35V |
| 출력 컬렉터 전류 | 최대 50mA |
| 컬렉터 전력 손실 | 150mW |
| 절연 전압 | 1분간 5000Vrms |
| 전류 전달비(CTR) | 등급에 따라 50% ~ 600% |
| 스위칭 속도 | 상승 약 4us, 하강 약 3us |
| 동작 온도 | -30C ~ +100C |
작동 원리
모듈의 두 부분은 절대 서로 닿지 않습니다. IN+와 IN-는 외부 12V 또는 24V 회로에 속합니다. VCC, GND, OUT은 Arduino Nano ESP32에 속합니다.
OUT에 연결된 핀에서 Arduino Nano ESP32의 내부 풀업을 활성화하면, 측정값은 다음과 같이 나옵니다:
- 외부 12V 또는 24V 신호가 있을 때: 내부 LED가 켜지고, 포토트랜지스터가 도통하여 핀을 GND로 끌어내리므로, 핀은 LOW를 읽습니다.
- 외부 12V 또는 24V 신호가 없을 때: LED가 꺼져 있고, 포토트랜지스터가 차단되며, 풀업이 핀을 높게 유지하므로, 핀은 HIGH를 읽습니다.
즉 측정값은 반전됩니다: LOW는 라인이 살아 있다는 뜻입니다. 이것은 옵토커플러 자체의 확정된 물리이며, 대부분의 모듈이 이렇게 동작합니다. 하지만 일부 제조사는 모듈의 출력 쪽에 반전 단계를 넣어 OUT이 입력과 반대가 아니라 입력을 따르도록 만들며, 포장 어디에도 여러분이 어느 쪽을 가지고 있는지 적혀 있지 않습니다. 아래에 이를 확인하는 1분짜리 테스트가 있고, 스케치는 상수 하나로 바꿀 수 있습니다.
접지를 분리해 두기
절연은 두 접지가 분리되어 있는 동안에만 존재합니다. 12V 또는 24V 전원의 음극 - IN-에 연결되는 선 - 을 Arduino Nano ESP32의 GND에 연결하지 마세요. 둘을 연결해도 모듈은 여전히 스위칭하고 스케치도 올바른 값을 출력하므로 아무 문제가 없어 보입니다 - 하지만 보드를 보호하던 간격은 사라지고, 24V 쪽의 고장이 이제 Nano ESP32로 곧장 들어오는 경로가 생깁니다.
출력 쪽은 3.3V로 동작
Arduino Nano ESP32는 3.3V 보드이며, 핀은 전통적인 ATmega Arduino처럼 5V를 견디지 못합니다. 하지만 서로 독립적인 두 가지 결정을 머릿속에서 분리해 두기만 하면, 여기서는 생각보다 크게 문제가 되지 않습니다:
- 구입할 종류는 감시하는 신호에 따라 결정됩니다. 24V 태양광 컨트롤러 상태 라인에는 24V 모듈이 필요합니다 - 그리고 이를 읽는 보드가 3.3V든, 5V든, 다른 무엇이든 이는 변하지 않습니다. 입력 쪽은 간격 너머에 어떤 보드가 있는지 전혀 알지 못합니다.
- 모듈의 출력 쪽은 항상 이 보드에서 전원을 공급받습니다. 어떤 입력 종류를 구입했든, VCC는 Nano ESP32의 3.3V 핀에서, GND는 보드 GND에서 받습니다.
두 번째 규칙이 중요한 이유는 포토트랜지스터가 GND로 연결되는 단순한 스위치이기 때문입니다: 입력 쪽에 12V가 흐르든 24V가 흐르든, OUT이 낼 수 있는 가장 높은 전압은 출력 쪽에 공급되는 전원 전압입니다. 이를 3.3V에서 받으면 핀은 구조적으로 안전합니다. 대신 모듈의 VCC를 5V 레일에서 공급하면, 입력 쪽은 아무 문제가 없더라도 OUT이 5V를 내보내 Nano ESP32에 부담을 줍니다 - 올바른 종류를 구입하는 것은 이를 막아 주지 않습니다. 두 가지는 별개의 선택이기 때문입니다. D2에서 내부 풀업을 활성화하는 것이 문제없는 것도 같은 이유입니다: 풀업은 보드 자체의 3.3V 레일을 기준으로 합니다.
어떤 PC817 옵토커플러 모듈이 필요한가요?
모듈에는 직렬 저항이 이미 장착되어 있으며, 하나의 저항은 하나의 입력 전압에만 맞습니다. 그래서 이 보드들은 세 가지 종류로 따로 판매됩니다. 여기서 계산할 것은 없습니다 - 감시하려는 신호에 맞는 것을 구입하면 됩니다.
| 감시하려는 신호 | 모듈 종류 | 일반적인 신호원 |
|---|---|---|
| 3.3V 또는 5V 로직 | 3-5V 모듈 | 센서 출력, 다른 마이크로컨트롤러, 가전제품 내부의 저전압 제어 보드 |
| 12V DC | 12V 모듈 | 게이트 또는 차고 문 컨트롤러 출력, 초인종 변압기, 캠핑카 및 자동차 회로 |
| 24V DC | 24V 모듈 | 태양광 충전 컨트롤러 상태 라인, 경보 패널 출력, PLC 출력 |
주문하기 전에 잘못 선택하는 두 가지 경우를 알아 두면 좋습니다:
- 24V 라인에 12V 모듈. 저항이 12V에 맞춰져 있으므로 내부 LED에 의도한 전류의 약 두 배가 흐릅니다. 모듈이 뜨거워지고, 성능이 떨어지다가 결국 고장납니다. 부품을 잃게 되는 실수입니다.
- 12V 라인에 24V 모듈. 이번에는 LED가 충분히 구동되지 않습니다. 출력이 늦게 스위칭하거나, 가끔만 스위칭하거나, 아예 스위칭하지 않을 수 있습니다 - 그러면 저녁 내내 스케치를 탓하게 됩니다.
종류를 고르는 것은 모듈 버전의 저항 값 정하기입니다: 배선하기 전에 내리는 단 한 번의 구매 결정이며, 여기서 정말 중요한 유일한 결정입니다.
3.3V와 5V는 Nano ESP32가 직접 받을 수 있는 전압이라는 이유로 3-5V 종류를 건너뛰지도 마세요. 로직 레벨 신호도 두 회로가 별도의 전원에서 동작하거나, 긴 케이블의 양 끝에 있거나, 한쪽이 전기적으로 노이즈가 많을 때 - 모터 드라이버나, 상용 전원으로 동작하는 가전제품 안에 묻혀 있는 저전압 제어 보드 같은 경우 - 절연할 가치가 있습니다. 절연은 높은 전압을 견디는 것만이 아니라, 두 회로 사이의 접지 경로를 끊는 것입니다.
배선도
PC817 옵토커플러 모듈 배선

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
외부 12V 또는 24V 신호를 IN+ 단자에, 같은 외부 회로의 접지를 IN- 단자에 나사로 고정합니다. 보드 쪽에서는 모듈의 VCC를 3.3V에, GND를 GND에, OUT을 Arduino Nano ESP32의 D2 핀에 연결합니다. 추가할 저항도, 다시 계산할 것도 없습니다 - 선택한 종류에 이미 올바른 저항이 들어 있습니다. 2, 4, 8채널 모듈도 같은 방식으로 동작합니다: 채널마다 입력 단자 한 쌍과 OUT 핀 하나가 있고, 각 채널은 독립적으로 절연됩니다.
모듈은 장치와 병렬로 연결하고, 절대 직렬로 연결하지 마세요
위의 배선도는 12V 또는 24V 신호가 이미 남는 선 한 쌍에 있어서 읽기만 하면 되는 상황을 가정합니다. 실제 설치에서는 그런 경우가 드뭅니다 - 신호는 이미 무언가를 구동하고 있는 선이고, 그 선은 사용 중입니다. 12V 게이트 또는 차고 문 컨트롤러를 예로 들어 봅시다: 컨트롤러가 출력을 닫으면 모터로 가는 선 쌍에 12V가 나타나고, 게이트가 움직입니다. 할 일은 그 순간에 아무것도 바꾸지 않고 Arduino Nano ESP32가 그 순간을 볼 수 있게 하는 것입니다. 라인이 12V이므로 12V 모듈을 사용합니다.
모듈의 입력은 장치 양단에 병렬로 연결됩니다. 아무것도 자르지 않고, 경로를 바꾸지 않으며, 기존 배선은 그대로 둡니다 - 이미 있는 단자에서 선 두 개만 추가로 끌어오면 됩니다:
- 장치의 양극(스위칭되는) 단자 → 모듈의 IN+.
- 장치의 음극(복귀) 단자 → 모듈의 IN-.
이 연결 어디에도 직렬 저항은 필요 없습니다. 모듈 자체의 저항이 이미 경로에 있으며, 바로 이 때문에 종류가 장치의 동작 전압과 맞아야 합니다.
절대 해서는 안 되는 것은 모듈을 장치와 직렬로 연결하는 것입니다. 직렬로 연결하면 게이트 모터의 전체 부하 전류가 내부 LED를 통과해야 하며, 20mA 정격의 부품은 컨트롤러가 작동하는 순간 파괴됩니다. 병렬이 유일하게 올바른 연결 방식입니다.
단자 양단에서 이 연결은 약 10mA를 소비합니다. 이는 릴레이 코일, 솔레노이드, 램프, 모터가 소비하는 전류에 비하면 아무것도 아니므로, 게이트 컨트롤러는 이전과 똑같이 계속 동작합니다 - 측정은 읽기 전용이며 비침습적입니다.
이 연결이 첫 스위칭 사이클에서 살아남을지는 두 가지 세부 사항에 달려 있습니다:
- 극성이 중요합니다. 입력 쪽은 LED이므로 한 방향으로만 도통합니다. IN+와 IN-를 바꿔 연결해도 고장나지는 않지만, 동작하지도 않습니다 - 모듈이 전혀 켜지지 않고 상태 LED도 꺼진 채로 있습니다. 배선하기 전에 연결 지점의 어느 쪽이 양극인지 확인하세요.
- 유도성 부하에는 클램프 다이오드가 필요합니다. 릴레이 코일, 접촉기, 솔레노이드, 밸브, 모터는 꺼지는 순간 큰 역전압 스파이크를 발생시키며, PC817 입력 LED의 역방향 정격은 6V에 불과합니다. 일반 다이오드를 입력 단자 양단에 직접 역병렬로 장착하세요 - 다이오드 캐소드를 IN+에, 다이오드 애노드를 IN-에 연결합니다. 정상 동작 시 이 다이오드는 역바이어스되어 아무 일도 하지 않습니다. 스파이크가 발생하면 도통하여 역전압을 1볼트보다 훨씬 낮게 제한합니다. 작은 연결에는 1N4148, 더 큰 연결에는 1N4007이면 충분합니다.
염두에 둘 한계가 하나 있습니다: PC817 입력은 단일 LED이므로 한 극성에만 반응하며, AC 라인을 감지하는 데는 맞지 않는 부품입니다 - AC에는 입력단에 LED 두 개가 역병렬로 들어 있는 옵토커플러가 필요합니다. 그리고 연결하는 단자가 무전압 접점이나 릴레이가 아니라 반도체(솔리드 스테이트) 출력이라면, 측정값을 믿기 전에 아래 문제 해결 섹션의 누설 전류 항목을 읽어 보세요.
게이트 컨트롤러가 실제로 켜져 있는지 꺼져 있는지 모니터링하기
연결이 장치에 명령하는 경로가 아니라 장치 양단에 있기 때문에, Arduino Nano ESP32가 읽는 것은 여러분의 의도가 아니라 장치의 실제 상태입니다. 누군가 리모컨으로 게이트를 열면 측정값이 이를 따라갑니다. 경보 패널이 아무에게도 묻지 않고 스스로 사이렌을 울리면 측정값도 이를 따라갑니다. 그리고 컨트롤러에 작동 명령이 내려졌는데 출력에 아무것도 나타나지 않으면 측정값은 대기 상태로 남습니다 - 이렇게 해서 게이트가 시작되지 않았다는 것을 알게 됩니다. "명령을 보냈다"와 "장치가 실제로 동작했다" 사이의 차이가 이것을 만들 가치가 있게 합니다: 운전 시간 카운터, 기계 유휴 시간 기록, 그리고 WiFi로 보내는 "정말 시작했나?" 알림 같은 것들입니다.
하지만 측정값이 실제로 무엇을 의미하는지 분명히 알아 두세요. 측정값은 장치에 전원이 들어와 있다는 것을 알려줄 뿐, 제대로 동작한다는 것을 알려주지는 않습니다 - 걸려서 멈춘 게이트 모터나 끊어진 히터 소자도 여전히 전력을 소비하므로 켜짐으로 읽힙니다.
칩 단품으로 직접 만들고 싶다면

4핀 칩 단품과 저항 하나로 나사 단자만 없는 같은 회로를 만들 수 있습니다 - 저항 값 계산만 직접 하면 됩니다. 점 또는 홈이 왼쪽 위에 오도록 칩을 잡고 반시계 방향으로 셉니다: 1번 핀 애노드와 2번 핀 캐소드는 입력 LED이고, 3번 핀 이미터와 4번 핀 컬렉터는 출력 쪽입니다. 신호는 저항을 거쳐 1번 핀으로, 2번 핀은 외부 회로의 접지에만 연결하고, 3번 핀은 Arduino Nano ESP32의 GND에, 4번 핀은 D2 핀에 연결합니다. 저항은 R = (Vin - 1.2) / 0.01로 계산하여 LED에 약 10mA가 흐르게 합니다: 3.3V에서 220 ohm, 5V에서 390 ohm, 12V에서 1 kohm, 24V에서 2.2 kohm - 마지막은 1/2 W, 나머지는 1/4 W입니다. 12V에서 24V로 바꾸면서 1 kohm을 그대로 두면 LED에 약 23mA가 흘러 최대 20mA를 넘게 되고, 성능이 떨어지다가 고장납니다: 칩 단품 버전의 잘못된 종류 장착입니다. 이 페이지의 나머지 내용은 모두 그대로 적용됩니다.
옵토커플러 모듈은 액티브 로우인가요, 액티브 하이인가요?
두 종류 모두 판매되고 있고, 작업대 위에서는 똑같아 보이며, 구입한 상품 설명에는 거의 확실히 나와 있지 않습니다. 측정값 위에 로직을 작성하기 전에 보드 자체로 확인하세요:
- 위와 같이 모듈을 배선하고 아래 섹션의 스케치를 업로드합니다. 입력 단자에는 아직 전원을 넣지 않습니다.
- 시리얼 모니터에서 몇 줄을 지켜보며, 입력에 신호가 없을 때 무엇이 출력되는지 기록합니다.
- 입력 단자에 전원을 넣습니다. 모듈의 온보드 상태 LED는 입력 쪽에 전류가 흐를 때마다 켜지므로, 이 LED를 교차 확인용으로 사용하세요 - 핀이 무엇을 읽든, LED는 입력에 실제로 전원이 들어왔는지 알려줍니다.
- 이제 시리얼 모니터에 무엇이 출력되는지 기록합니다. 상태 LED가 켜져 있는 동안 나타나는 것이 여러분 모듈의 활성 상태입니다.
출력이 LED를 따른다면 - LED가 꺼져 있을 때 idle, 켜져 있을 때 present - 모듈은 액티브 로우이며 스케치는 이미 올바릅니다. 둘이 정확히 반대로 동작한다면, 모듈이 보드에서 반전하는 것입니다. 스케치를 열어 MODULE_ACTIVE_LOW를 false로 설정하고 다시 업로드하세요. 바꿀 것은 이 상수 하나뿐입니다. 배선은 문제없고 나머지 코드는 상관하지 않습니다.
PC817 옵토커플러 프로그래밍 방법
- 보드에 인쇄된 핀 이름을 사용하세요. Arduino Nano ESP32의 실크스크린에는 D0, D1, D2 등으로 적혀 있으며, 이 번호는 내부 ESP32-S3의 실제 GPIO 번호가 아닙니다. 스케치에 2가 아니라 D2라고 쓰면, Arduino 코어가 올바른 GPIO로 매핑해 줍니다.
- pinMode()를 사용하여 해당 핀을 내부 풀업이 있는 입력으로 설정합니다. 예를 들어 D2 핀:
- digitalRead()로 핀을 읽습니다.
- 상수 하나를 통해 원시 레벨을 단순한 true 또는 false로 바꿉니다. 이렇게 하면 반대로 읽히는 모듈이라도 코드를 다시 쓰지 않고 한 곳만 수정하면 됩니다.
- 라이브러리 검색은 건너뛰세요. PC817용 라이브러리는 없으며 필요하지도 않습니다 - 일반적인 디지털 입력 읽기입니다.
Arduino Nano ESP32 코드 - PC817 옵토커플러
빠른 단계
다음 지침을 단계별로 따르세요:
- Arduino Nano ESP32를 처음 사용한다면 아두이노 나노 ESP32 - 소프트웨어 설치을 참고하세요.
- 신호에 맞는 종류를 사용하여 위의 모듈 배선도와 같이 모듈을 Arduino Nano ESP32에 연결합니다: 로직 레벨 신호에는 3-5V 모듈, 12V 라인에는 12V 모듈, 24V 라인에는 24V 모듈을 사용합니다.
- 12V 또는 24V 회로의 접지가 Arduino Nano ESP32의 GND 근처에도 가지 않는지 다시 확인합니다.
- USB 케이블로 Arduino Nano ESP32를 컴퓨터에 연결합니다.
- 컴퓨터에서 Arduino IDE를 실행합니다.
- Arduino Nano ESP32 보드와 해당 COM 포트를 선택합니다.
- 위의 코드를 복사하여 Arduino IDE에 붙여넣은 다음, Upload 버튼을 클릭합니다.
- 시리얼 모니터를 열고 외부 12V 또는 24V 신호를 켰다 껐다 합니다.
- 이 출력이 모듈의 상태 LED와 반대로 동작한다면, 여러분의 모듈은 액티브 하이 종류입니다: MODULE_ACTIVE_LOW를 false로 설정하고 다시 업로드하세요.
여기서부터 스케치를 쉽게 확장할 수 있습니다. 절연된 라인이 살아나면 아두이노 나노 ESP32 - 릴레이를 토글하거나, 밤사이 게이트 컨트롤러가 몇 번 작동했는지 세거나, 태양광 캐비닛 안에서 WiFi로 상태를 전송하게 해 보세요.
문제 해결
측정값이 외부 신호를 따르지 않는다면, 다음 항목을 차례로 확인하세요:
- 아무것도 바뀌지 않고 상태 LED도 전혀 켜지지 않음: 입력 쪽이 전혀 구동되지 않고 있습니다. IN+와 IN-가 바뀌었을 가능성이 큽니다 - 입력은 LED이므로 한 방향으로만 도통합니다 - 또는 라인에 맞지 않는 종류일 수 있습니다. 12V 회로의 24V 모듈은 구동이 부족하여 전혀 스위칭하지 않을 수 있습니다. 칩 단품이라면 같은 증상은 칩이 거꾸로 꽂혔다는 뜻입니다. 1번 핀은 점 또는 홈 옆에 있는 핀입니다.
- 측정값이 정확히 반대 - 장치가 동작 중일 때 idle, 꺼져 있을 때 present: 배선은 잘못되지 않았습니다. 출력 쪽에서 반전하는 모듈을 가지고 있는 것이므로, OUT이 입력과 반대가 아니라 입력을 따릅니다. 위의 "옵토커플러 모듈은 액티브 로우인가요, 액티브 하이인가요?" 섹션의 확인 방법으로 상태 LED와 대조하여 확인한 다음, 스케치에서 MODULE_ACTIVE_LOW를 false로 설정하고 다시 업로드하세요.
- 입력 단자를 분리해도 측정값이 present에 고정됨: 보드 쪽 배선이 잘못되었습니다. OUT이 정말 D2에, VCC가 3.3V에 연결되어 있는지 확인하세요. 칩 단품이라면 3번 핀과 4번 핀이 바뀐 것입니다 - 이미터(3번 핀)는 GND에, 컬렉터(4번 핀)는 D2에 연결해야 합니다.
- 측정값이 깜빡임: 내부 풀업이 활성화되지 않았을 가능성이 큽니다. 스케치가 일반 INPUT이 아니라 INPUT_PULLUP을 사용하는지 확인하세요. 플로팅 입력은 아두이노 나노 ESP32 - 버튼에서와 똑같이 저절로 흔들립니다.
- 측정값이 idle로 돌아오지 않음: 연결한 대상이 반도체 출력 - PLC 트랜지스터 출력, 트라이액 출력, LED 램프 드라이버 - 일 가능성이 큽니다. 이런 출력은 꺼져 있어도 작은 전류가 누설됩니다. 누설이 충분하면 내부 LED가 부분적으로 켜지고, 장치가 멈춘 뒤에도 한참 동안 보드가 장치를 켜짐으로 보고합니다. 약 4.7 kohm ~ 10 kohm의 블리더 저항을 모듈 입력과 병렬로, IN+와 IN- 사이에 연결하여 누설 전류가 옵토커플러 대신 저항으로 빠져나가게 하세요.
- 모듈이 따뜻해지거나, 몇 주에 걸쳐 측정값이 불안정해짐: 입력 전압이 해당 종류의 설계 전압보다 높습니다 - 보통 24V 라인에 12V 모듈을 둔 경우입니다. 24V 종류로 교체하세요. 칩 단품이라면 직렬 저항이 너무 작은 것입니다. 칩 단품 섹션의 값과 다시 비교해 보세요.
- 있음/없음이 아니라 실제 전압이 필요함: 옵토커플러는 켜짐 또는 꺼짐만 알려줍니다. 전압 레벨을 읽으려면 아두이노 나노 ESP32 - 전압 측정을 참고하세요.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.