아두이노 나노 ESP32 MOSFET 모듈

이 가이드에서는 아두이노 나노 ESP32와 MOSFET 모듈로 12V 부하를 구동하는 방법을 배웁니다. 나노 ESP32의 핀은 3.3V와 아주 작은 전류만 내보내므로 12V LED 스트립이나 팬을 혼자서는 구동할 수 없습니다. MOSFET 모듈이 중간에서 힘든 일을 대신해 줍니다. 자세히 배울 내용은 다음과 같습니다:

아두이노 나노 ESP32와 aod4184, lr7843 또는 fr120n mosfet 모듈

이것이 잘 동작하면, 나중에 같은 스케치에 WiFi를 추가하여 휴대폰이나 웹 페이지에서 스트립이나 팬의 전력을 설정할 수 있습니다.

1×아두이노 나노 ESP32 쿠팡 | 아마존
1×USB 케이블 타입-A to 타입-C (USB-A PC용) 쿠팡 | 아마존
1×USB 케이블 타입-C to 타입-C (USB-C PC용) 아마존
1×(옵션) DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
1×MOSFET Module (AOD4184, LR7843 or FR120N) 아마존
1×12V LED 스트립 아마존
1×(또는) 12V DC 선풍기 아마존
1×12V 전원 어댑터 아마존
1×DC Power Jack (for the 12V load) 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 나노용 스크루 터미널 확장 보드 쿠팡 | 아마존
1×(추천) 아두이노 나노용 브레이크아웃 확장 보드 쿠팡 | 아마존
1×(추천) 아두이노 나노 ESP32용 전원 분배기 쿠팡 | 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

MOSFET 모듈에 대하여

MOSFET 모듈은 움직이는 부품이 없는 전자 스위치라고 생각하면 됩니다. 나노 ESP32가 작은 3.3V 신호를 보내면, 모듈이 훨씬 큰 DC 전류의 경로를 열거나 닫습니다. 12V LED 스트립, DC 모터, 팬, 펌프, 솔레노이드 밸브, 히터와 함께 사용할 수 있습니다.

이 가이드 하나로 세 가지 모듈을 다룹니다: AOD4184(D4184로도 판매됨), LR7843, FR120N. 이들은 같은 보드 설계를 사용합니다. 크기, 핀, 배선, 코드가 모두 같습니다. 보드 위의 MOSFET 칩만 다릅니다.

왜 아두이노 나노 ESP32 - 릴레이 대신 MOSFET 모듈을 고를까요? 릴레이는 딸깍 소리가 나고 시간이 지나면 마모되며, 켜기와 끄기만 할 수 있습니다. MOSFET 모듈은 조용하고, 매우 빠르며, 오래 사용할 수 있습니다. PWM도 받아 주므로 LED 스트립을 어둡게 하거나 팬을 느리게 할 수 있습니다. 한 가지 한계가 있습니다: DC 부하 전용입니다. AC 전원에는 절대 사용하지 마세요.

AOD4184 LR7843 FR120N
MOSFET AOD4184A (N채널) IRLR7843 (N채널) IRFR120N (N채널)
최대 부하 전압 (MOSFET 정격) 40V DC 30V DC 100V DC
최대 전류 (MOSFET 정격) 50A 161A 9.4A
온 저항 RDS(on) 약 7 mΩ 약 3.3 mΩ 약 210 mΩ
방열판 없이 실제 사용 가능한 전류 약 10–15A 약 15A 약 2A
제어 신호 3.3V / 5V 로직, 액티브 HIGH 3.3V / 5V 로직, 액티브 HIGH 3.3V / 5V 로직, 액티브 HIGH
절연 PC817 포토커플러 PC817 포토커플러 PC817 포토커플러
PWM 가능, ~1 kHz 이하로 유지 가능, ~1 kHz 이하로 유지 가능, ~1 kHz 이하로 유지
부하 종류 DC 전용 DC 전용 DC 전용

어떤 것을 사야 할까요?

  • LR7843: 저항이 가장 낮아서 큰 전류에서도 가장 시원하게 유지됩니다. 긴 LED 스트립이나 큰 모터 같은 큰 12V 또는 24V 부하에 좋습니다. 최대 30V.
  • AOD4184: 만능으로 쓰기 좋습니다. 강한 전류로 최대 40V까지 다룰 수 있어서 12V, 24V, 36V 부하에 맞습니다.
  • FR120N: 가장 높은 전압(최대 100V)을 견디지만 저항도 가장 높습니다. 작은 전류, 방열판 없이 약 2A 이하로 사용하세요. 작은 24V 또는 48V 부하에 좋습니다.

50A와 161A라는 숫자는 작은 보드가 아니라 칩 자체의 한계입니다. 실제 사용에서는 열이 한계입니다. 몇 분 동작시킨 뒤 모듈을 만져 보세요. 너무 뜨거우면 부하를 줄이거나 방열판을 추가하세요.

작동 원리

입력 쪽에는 PC817 포토커플러가 있으며, D9 핀의 신호는 다음 경로를 지나갑니다: PWM 핀 → 작은 저항 → PC817 내부의 LED → 빛 → PC817 내부의 포토트랜지스터 → MOSFET 게이트. 게이트에 있는 저항은 PC817이 꺼져 있을 때 게이트를 0V로 당겨 둡니다. PC817을 건너는 것은 빛뿐이므로, 나노 ESP32 쪽과 12V 쪽은 서로 닿지 않습니다. 신호 GND와 부하 GND는 모듈에서 연결되어 있지 않습니다.

MOSFET은 N채널 로우사이드 스위치입니다. LOAD 단자와 − 단자 사이에 있어서, 부하의 양극선이 아니라 음극선을 스위칭합니다. 부하 자체는 +와 LOAD 사이에 연결합니다.

D9에서 오는 신호의 종류별로 모듈이 하는 일은 다음과 같습니다.

PWM 핀에 HIGH (3.3V) → 부하 전력 100%

  • 몇 mA가 PC817 내부의 LED로 흘러 LED가 켜집니다 (칩 안에 있어서 눈에는 보이지 않습니다).
  • 포토트랜지스터가 도통하여 MOSFET 게이트에 부하 전원의 약 절반을 공급합니다. 12V 어댑터라면 약 6V입니다.
  • 이제 MOSFET은 닫힌 스위치처럼 완전히 ON입니다. 저항은 아주 작아서 수 mΩ (AOD4184, LR7843) 또는 약 0.2Ω (FR120N)입니다.
  • 전류는 어댑터 +에서 + 단자로, 부하를 지나 LOAD로, MOSFET을 거쳐 −로 나가 어댑터 −로 돌아갑니다.
  • 부하는 거의 전체 12V를 받습니다. PC817 LED는 작은 전류만 필요하므로 3.3V 핀으로 충분합니다. 레벨 시프터는 필요 없습니다.
  • 코드: analogWrite(MOSFET_PIN, 255), 즉 듀티 100%.

PWM 핀에 LOW (0V) → 부하 꺼짐

  • 전류가 없으므로 PC817 내부의 LED는 꺼진 채로 있습니다.
  • 포토트랜지스터가 꺼집니다. 게이트 저항이 게이트를 0V로 유지합니다.
  • MOSFET은 OFF이며, LOAD와 − 사이의 열린 스위치와 같습니다.
  • 부하의 음극선이 어댑터에서 끊겨 전류가 흐르지 않고 부하는 0V를 받습니다.
  • 코드: analogWrite(MOSFET_PIN, 0), 즉 듀티 0%.

PWM 핀에 PWM 신호 → 부하 일부 전력

  • D9가 LOW와 HIGH 사이를 아주 빠르게 오갑니다. 나노 ESP32의 analogWrite()는 기본으로 1 kHz를 사용하며, 이는 초당 1000번이라는 뜻입니다.
  • MOSFET은 매번 전환을 따라갑니다: HIGH인 구간마다 ON, LOW인 구간마다 OFF. 부하는 12V 펄스를 받습니다.
  • 듀티 사이클은 핀이 HIGH인 시간의 비율입니다. analogWrite() 값을 255로 나눈 값입니다. 평균 전압과 전력은 듀티 사이클에 최대값을 곱한 값입니다. 12V 전원이라면:
    • AnalogWrite 64 (25%) → 평균 약 3V → 전력은 약 4분의 1
    • AnalogWrite 128 (50%) → 평균 약 6V → 전력은 약 절반
    • AnalogWrite 191 (75%) → 평균 약 9V → 전력은 약 4분의 3
  • LED 스트립은 눈이 따라가지 못할 만큼 빨리 깜박이므로 더 어둡게 보입니다. 팬, 모터, 펌프는 회전하는 부분이 펄스를 부드럽게 만들어 주므로 더 느리게 돕니다. 낮은 듀티 사이클에서는 팬이 시동되지 않을 수 있습니다.
  • PC817은 느리므로 주파수를 약 500 Hz에서 1 kHz로 유지하세요. 기본값 1 kHz면 괜찮습니다. 주파수가 훨씬 높으면 MOSFET이 완전히 스위칭되지 않고, 펄스가 지저분해지며, MOSFET이 뜨거워집니다.
  • 솔레노이드 잠금장치나 밸브에는 PWM을 사용하지 마세요. 이들에는 HIGH와 LOW만 사용하세요.

기억해 둘 몇 가지 규칙:

  • 게이트는 부하 전원의 약 절반만 받으므로, 부하 전원은 최소 약 6V 이상이어야 합니다. 5V 부하 전원은 잘 동작하지 않습니다. 부하가 몇 A 이상 흐르면 9V 이상을 사용하세요.
  • 보드에는 플라이백 다이오드가 없습니다. 모터, 펌프, 솔레노이드, 릴레이 코일에는 부하와 병렬로 외부 다이오드(예: 1N5819 또는 1N4007)를 추가하세요. 캐소드(줄무늬가 있는 쪽)를 부하 +에, 애노드를 부하 −에 연결합니다.

핀아웃

aod4184, lr7843, fr120n mosfet 모듈 핀아웃

모듈에는 두 그룹의 핀이 있습니다. 제어 쪽에는 2핀 헤더(2.54mm, 브레드보드에 맞음)가 있고, 전원 쪽에는 나사 단자가 있습니다.

제어 쪽:

  • PWM 핀: 아두이노 나노 ESP32의 GPIO 핀에 연결합니다 (제어 신호)
  • GND 핀: 아두이노 나노 ESP32의 GND에 연결합니다 (신호 접지)

전원 쪽:

  • + 핀: 부하 전원 공급 장치의 양극(예: 12V)과 부하의 양극선에 연결합니다. 두 선이 이 단자 하나를 함께 씁니다.
  • LOAD 핀: 부하의 음극선에 연결합니다 (스위칭되는 쪽이며 MOSFET 드레인으로 이어집니다)
  • − 핀: 부하 전원 공급 장치의 음극(접지)에 연결합니다

라벨은 생산 묶음에 따라 조금 다를 수 있습니다. 항상 가지고 있는 보드에 인쇄된 글자를 확인하세요.

선연결

나노 ESP32는 D9 핀(및 GND)에서 모듈의 PWM과 GND 핀으로 신호만 보내고, 12V 어댑터는 나사 단자를 통해 부하에 전원을 공급하므로 12V가 보드의 핀 근처에 가지 않습니다.

아두이노 나노 ESP32와 aod4184, lr7843 또는 fr120n mosfet 모듈 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

예제: 다른 부하 연결하기

LED 스트립이 아닌 다른 것을 구동하고 싶나요? 나노 ESP32의 D9와 GND 선은 그대로 두세요. 전원 쪽만 바뀌며, 패턴은 항상 같습니다:

  • 12V 어댑터 +는 + 단자에, 어댑터 −는 − 단자에.
  • 부하의 + 선은 같은 + 단자에, 부하의 − 선은 LOAD 단자에.

시작하기 전에:

  • 어댑터를 부하에 맞추세요. 12V 부하에는 12V 어댑터가 필요합니다. 모듈이 동작하려면 최소 6V가 필요합니다.
  • 모듈을 전류에 맞추세요. FR120N은 작은 부하(방열판 없이 약 2A)에만 괜찮습니다. 더 큰 부하에는 AOD4184 또는 LR7843을 사용하세요.
  • 모든 부하에 같은 코드를 업로드할 수 있습니다. 솔레노이드의 경우 페이드 대신 완전 ON과 완전 OFF(HIGH와 LOW)만 사용하세요.

"작동 원리"에서 설명한 플라이백 다이오드는 아래에 나오는 코일이 들어 있는 모든 부하에 필요합니다: 모터, 팬, 펌프, 솔레노이드 두 가지. 부하의 두 선 사이에 줄무늬를 +쪽으로 하여 연결하세요.

12V DC 모터 예제

아두이노 나노 ESP32 예제: mosfet 모듈로 12v dc 모터 구동

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

모터 +는 +에, 모터 −는 LOAD에 연결합니다. 다이오드(1N5819 또는 1N4007)를 추가합니다: 줄무늬 쪽(캐소드)은 모터 +에, 다른 쪽(애노드)은 모터 −에 연결합니다. PWM이 속도를 바꿉니다.

이 모듈은 모터를 한 방향으로만 돌릴 수 있습니다. 정방향과 역방향이 필요하면 L298N 같은 모터 드라이버를 대신 사용하세요. 아두이노 나노 ESP32 - DC 모터 가이드에서 방법을 볼 수 있습니다.

12V 쿨링 팬 예제

12v 쿨링 팬에 연결한 mosfet 모듈

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

빨간 선(+)은 +에, 검은 선(−)은 LOAD에 연결합니다. 팬에 노란 선이 있다면 속도 신호선입니다. 연결하지 않고 두세요. 다이오드는 싸고 안전하므로 여기에도 넣는 것이 좋습니다. PWM이 팬 속도를 정하지만, 낮은 듀티 사이클에서는 팬이 시동되지 않을 수 있으므로 약 30% 이상에서 시작하세요.

12V LED 스트립 예제

단색 12v LED 스트립을 mosfet 모듈에 연결하기

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

메인 배선도와 같은 부하입니다. 스트립 +(보통 12V로 표시됨)는 +에, 스트립 −는 LOAD에 연결합니다. LED 스트립에는 코일이 없으므로 다이오드가 필요 없습니다. PWM이 밝기를 정합니다. 긴 스트립은 더 많은 전류를 쓰므로 먼저 전류를 확인하고 그에 맞는 모듈을 고르세요. 참고: 이것은 단색 스트립용이며 RGB나 주소 지정형 스트립에는 사용할 수 없습니다.

12V 워터 펌프 예제

mosfet 모듈에 연결한 12v 워터 펌프

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

펌프 +는 +에, 펌프 −는 LOAD에 연결하고 다이오드를 추가합니다. PWM이 물의 양을 정합니다. 물 없이 펌프를 작동시키지 마세요.

12V 솔레노이드 잠금장치 예제

12v 솔레노이드 잠금장치를 사용한 mosfet 모듈 예제

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

펌프처럼 다이오드와 함께 연결합니다. 완전 ON 또는 완전 OFF(100% 또는 0%)로만 스위칭하세요. PWM 밝기 조절은 안 됩니다. 계속 ON으로 두면 잠금장치가 뜨거워지므로, 잠금을 풀 때 잠깐만 ON으로 하고 그다음 OFF로 하세요.

12V 솔레노이드 밸브 예제

mosfet 모듈에 연결한 상시 닫힘 12v 솔레노이드 밸브

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

같은 배선, 같은 다이오드입니다. 상시 닫힘 밸브입니다: ON이면 열리고 OFF이면 닫힙니다. PWM이 아니라 ON과 OFF만 사용하세요.

MOSFET 모듈을 위한 프로그래밍 방법

라이브러리는 필요 없습니다. 나노 ESP32는 내장 함수 analogWrite()를 사용합니다.

  • 모듈의 PWM 핀에 연결된 아두이노 나노 ESP32의 핀을 설정합니다:
const int MOSFET_PIN = D9;
  • 핀을 출력으로 설정하고 부하를 OFF 상태로 시작합니다:
pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0);
  • 부하를 완전히 켭니다:
analogWrite(MOSFET_PIN, 255);
  • 부하를 끕니다:
analogWrite(MOSFET_PIN, 0);
  • 부하를 퍼센트(0에서 100) 단위의 전력 수준으로 설정합니다:
int duty = map(percent, 0, 100, 0, 255); analogWrite(MOSFET_PIN, duty);

ON과 OFF만 필요하다면 digitalWrite(MOSFET_PIN, HIGH)와 digitalWrite(MOSFET_PIN, LOW)도 동작합니다.

아두이노 나노 ESP32 코드 - MOSFET 모듈

아래 코드는 부하를 2초 동안 켜고 2초 동안 끕니다. 그런 다음 0.5초마다 전력을 10%에서 100%까지 10% 단계로 올립니다. 그 후 90%에서 0%까지 다시 낮추고, 1초 기다린 뒤 처음부터 다시 시작합니다.

/* * 이 아두이노 나노 esp32 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 나노 esp32 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino-nano-esp32/arduino-nano-esp32-mosfet-module */ const int MOSFET_PIN = D9; // Arduino Nano ESP32 pin connected to the PWM pin of the MOSFET module void setup() { Serial.begin(9600); pinMode(MOSFET_PIN, OUTPUT); analogWrite(MOSFET_PIN, 0); // start with the load OFF } void setLoad(int percent) { int duty = map(percent, 0, 100, 0, 255); // convert 0-100% to 0-255 analogWrite(MOSFET_PIN, duty); Serial.print("Load power: "); Serial.print(percent); Serial.println("%"); } void loop() { // turn the load fully ON, then fully OFF Serial.println("Load: ON"); setLoad(100); delay(2000); Serial.println("Load: OFF"); setLoad(0); delay(2000); // increase the power step by step (PWM) for (int percent = 10; percent <= 100; percent += 10) { setLoad(percent); delay(500); } // decrease the power step by step (PWM) for (int percent = 90; percent >= 0; percent -= 10) { setLoad(percent); delay(500); } delay(1000); }

빠른 단계

다음 지침을 단계별로 따르세요:

  • 아두이노 나노 ESP32를 처음 사용한다면, 아두이노 나노 ESP32 - 소프트웨어 설치을 참조하세요.
  • 제공된 다이어그램에 따라 부품을 배선하세요. 12V 어댑터는 아직 꽂지 마세요.
  • USB Type-C 케이블로 아두이노 나노 ESP32를 컴퓨터에 연결하세요.
  • 컴퓨터에서 아두이노 IDE를 실행하세요.
  • 알맞은 아두이노 나노 ESP32 보드(예: Arduino Nano ESP32)와 COM 포트를 선택하세요.
  • 위의 코드를 복사하여 아두이노 IDE에 붙여넣으세요.
  • Upload 버튼을 클릭하여 코드를 아두이노 나노 ESP32에 업로드하세요.
  • 12V 전원 어댑터를 꽂으세요.
  • 시리얼 모니터를 열고 보드레이트를 9600으로 설정하세요.
  • LED 스트립을 지켜보세요: 2초 동안 최대 밝기, 2초 동안 꺼짐, 그다음 천천히 밝아졌다가 다시 천천히 어두워집니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
Load: ON Load power: 100% Load: OFF Load power: 0% Load power: 10% Load power: 20% Load power: 30% Load power: 40% Load power: 50% Load power: 60% Load power: 70% Load power: 80% Load power: 90% Load power: 100% Load power: 90% Load power: 80% Load power: 70% Load power: 60% Load power: 50% Load power: 40% Load power: 30% Load power: 20% Load power: 10% Load power: 0%
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2

12V 팬을 연결했다면, 팬이 최고 속도로 돌다가 멈춘 다음 같은 패턴으로 빨라졌다가 느려지는 소리를 들을 수 있습니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.

댓글