아두이노 MOSFET 모듈

이 튜토리얼에서는 다음을 배웁니다:

준비물

1×아두이노 우노 R3 쿠팡 | 아마존
1×USB 2.0 타입 A-to-B 케이블 (USB-A PC용) 쿠팡 | 아마존
1×USB 2.0 타입 C-to-B 케이블 (USB-C PC용) 아마존
1×MOSFET Module (AOD4184, LR7843 or FR120N) 아마존
1×12V LED 스트립 아마존
1×(또는) 12V DC 선풍기 아마존
1×12V 전원 어댑터 아마존
1×DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 우노용 스크루 터미널 블록 쉴드 쿠팡 | 아마존
1×(추천) Sensors/Servo Expansion Shield for Arduino Uno 쿠팡 | 아마존
1×(추천) 아두이노 우노용 브레드보드 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노용 케이스 쿠팡 | 아마존
1×(추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

MOSFET 모듈에 대하여

아두이노 핀은 5V와 아주 작은 전류만 줍니다. 그래서 12V LED 스트립, DC 모터, 팬, 펌프, 솔레노이드 밸브, 히터에 전원을 공급할 수 없습니다. MOSFET 모듈은 아두이노와 부하 사이에 놓입니다. 아두이노가 작은 신호를 보내면, 모듈이 부하의 큰 전력을 켜고 끕니다.

AOD4184(D4184로도 판매됨), LR7843, FR120N 모듈은 같은 보드 설계를 사용합니다. 크기, 핀, 배선, 코드가 모두 같습니다. MOSFET 칩만 다릅니다.

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는 작은 보드가 아니라 칩의 한계 값입니다. 실제 한계는 열입니다. 몇 분 뒤에 MOSFET을 만져 보세요. 너무 뜨거우면 방열판을 달거나 전류를 낮추세요.

핀아웃

aod4184, lr7843, fr120n mosfet 모듈 핀아웃

모듈에는 두 그룹의 핀이 있습니다. 제어 쪽은 2핀 헤더(2.54mm)라서 브레드보드에 꽂을 수 있습니다. 전원 쪽은 나사 단자 3개를 사용합니다.

  • 제어 쪽:
    • PWM 핀: 아두이노의 출력 핀에 연결해야 합니다. 이 핀이 제어 신호를 받습니다.
    • GND 핀: 아두이노의 GND(신호 접지)에 연결해야 합니다.
  • 전원 쪽:
    • + 핀: 부하 전원(예: 12V)의 양극(+)과 부하의 양극 전선에 연결해야 합니다. 두 전선이 이 한 단자를 함께 씁니다.
    • LOAD 핀: 부하의 음극 전선에 연결해야 합니다. MOSFET이 켜고 끄는 쪽입니다.
    • − 핀: 부하 전원의 음극(−)에 연결해야 합니다.

    배치(batch)에 따라 라벨이 조금 다를 수 있습니다. 항상 보드에 인쇄된 글자를 확인하세요.

    동작 원리

    • 신호는 이렇게 흐릅니다: 아두이노 핀 → PWM 핀 → 작은 저항 → PC817 포토커플러 안의 LED → 빛 → PC817 안의 포토트랜지스터 → MOSFET 게이트.
    • 신호가 빛으로 전달되므로 아두이노 쪽과 부하 쪽은 절연됩니다. 신호 GND와 부하 GND는 모듈에서 연결되어 있지 않습니다.
    • MOSFET은 N채널, 로우 사이드 스위치입니다. LOAD 단자와 − 단자 사이에 있어서 부하의 음극 전선을 켜고 끕니다.
    • 게이트의 저항은 포토커플러가 꺼졌을 때 게이트를 0V로 당겨 줍니다.

    이 모듈은 액티브 HIGH입니다. PWM 핀의 신호 종류마다 어떤 일이 일어나는지 살펴봅시다.

    아두이노 핀 LOW(0V): 부하 꺼짐

    • 포토커플러로 전류가 흐르지 않아 LED가 꺼진 상태로 있습니다.
    • 포토트랜지스터도 꺼진 상태입니다. 게이트 저항이 MOSFET 게이트를 0V로 유지합니다.
    • MOSFET이 꺼집니다. LOAD와 − 사이는 열린 스위치와 같습니다.
    • 부하의 − 전선이 접지에 연결되지 않아 전류가 흐르지 않습니다. 부하는 0V를 받습니다.
    • 코드: digitalWrite(MOSFET_PIN, LOW); 또는 analogWrite(MOSFET_PIN, 0);

    아두이노 핀 HIGH(5V): 부하 켜짐

    • 몇 mA가 포토커플러로 흐릅니다. 칩 안에서 LED가 켜집니다(눈으로는 보이지 않습니다). 아두이노 핀은 이 작은 전류를 쉽게 줄 수 있습니다.
    • 포토트랜지스터가 켜집니다. 이제 MOSFET 게이트는 부하 전원의 약 절반, 12V 어댑터에서는 약 6V를 받습니다.
    • MOSFET이 완전히 켜집니다. 저항이 아주 낮은 닫힌 스위치와 같습니다. AOD4184와 LR7843은 몇 mΩ, FR120N은 약 0.2Ω입니다.
    • 전류 경로는 이렇습니다: 어댑터 + → + 단자 → 부하 → LOAD 단자 → MOSFET → − 단자 → 어댑터 −.
    • 부하는 거의 12V 전체를 받아 최대 전력으로 동작합니다.
    • 코드: digitalWrite(MOSFET_PIN, HIGH); 또는 analogWrite(MOSFET_PIN, 255);

    PWM 신호: 부하가 전력의 일부를 받음

    • analogWrite()를 사용하면 핀이 초당 약 500~1000번 LOW와 HIGH 사이를 오갑니다.
    • MOSFET은 핀을 따라갑니다. HIGH 구간마다 켜지고 LOW 구간마다 꺼집니다. 그래서 부하는 빠른 12V 펄스를 받습니다.
    • 듀티 사이클은 핀이 HIGH인 시간의 비율입니다. 평균 전압과 전력은 듀티 사이클에 최대 값을 곱한 값입니다. 0–255 값이 듀티 사이클을 정합니다(듀티 = 값 / 255).
    듀티 사이클 analogWrite() 값 부하가 켜진 시간 평균 전압(12V 전원)
    0% 0 전혀 없음 0V
    25% 64 1/4 시간 약 3V
    50% 128 절반 시간 약 6V
    75% 191 3/4 시간 약 9V
    100% 255 항상 12V
    • LED 스트립은 더 어둡게 보입니다. 여전히 깜빡이지만 눈으로 보기에는 너무 빠릅니다.
    • 팬이나 모터는 더 느리게 돕니다. 회전하는 질량이 펄스를 부드럽게 해 줍니다.
    • PC817이 느리기 때문에 PWM 주파수는 약 500 Hz~1 kHz로 낮게 유지하세요. 주파수가 너무 높으면 MOSFET이 완전히 스위칭하지 못합니다. 그러면 펄스가 깨끗하지 않고 MOSFET이 뜨거워집니다. 아두이노 우노의 analogWrite() 기본값(약 490 Hz, 5번과 6번 핀은 약 1 kHz)이면 충분합니다.
    • 이 튜토리얼의 코드는 10%에서 100%까지 PWM으로 부하를 서서히 바꿉니다.

    중요한 규칙 몇 가지:

    • 게이트가 부하 전원의 절반만 받기 때문에(위의 HIGH 경우 참고) 부하 전원은 최소 약 6V여야 합니다. 그래서 5V 부하 전원에서는 모듈이 잘 동작하지 않습니다. 부하가 몇 A 이상 흐르면 9V 이상을 사용하세요.
    • DC 부하만 사용하세요. 이 모듈에 AC 주전원을 절대 연결하지 마세요. AC 부하는 아두이노 - 릴레이 튜토리얼을 참고하세요.
    • 보드에는 플라이백 다이오드가 없습니다. 모터, 펌프, 솔레노이드, 릴레이에는 부하에 병렬로 외부 플라이백 다이오드(예: 1N5819 또는 1N4007)를 추가하세요. 캐소드(줄무늬 쪽)는 부하 +, 애노드는 부하 −에 연결합니다.

    릴레이와 비교하면 MOSFET 모듈은 딸깍 소리가 나지 않고, 움직이는 부품이 없으며, 매우 빠르게 스위칭하고, 수명이 길며, PWM을 지원합니다. 릴레이는 PWM을 할 수 없습니다.

선연결

아래 이미지와 같이 아두이노의 9번 핀을 PWM 핀에, 아두이노 GND를 GND 핀에, 12V 어댑터(DC 전원 잭 경유)를 +와 −에, LED 스트립을 +와 LOAD에 연결합니다.

아두이노 aod4184, lr7843, fr120n mosfet 모듈 배선도

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

12V를 아두이노의 어떤 핀에도 연결하지 마세요.

연결할 수 있는 다른 장치

LED 스트립은 하나의 예일 뿐입니다. 팬, 펌프, 모터, 솔레노이드로 바꿀 수 있습니다. 아두이노 쪽의 두 전선은 바뀌지 않습니다. 전원 쪽 규칙은 항상 같습니다:

  • 전원 어댑터 + → +
  • 전원 어댑터 − → −
  • 장치 + → +(어댑터 +와 같은 단자)
  • 장치 − → LOAD

시작하기 전에 간단히 확인할 것:

  • 장치와 같은 전압의 어댑터를 사용하세요(12V 장치 → 12V 어댑터). 6V 아래로 내려가면 안 됩니다.
  • 장치의 전류를 확인하세요. FR120N은 작은 장치에만 맞습니다(방열판 없이 약 2A). 전류가 더 크면 AOD4184나 LR7843을 선택하세요.
  • 코일이 있는 장치(모터, 팬, 펌프, 솔레노이드)에는 1N5819 또는 1N4007 플라이백 다이오드가 필요합니다. 장치에 병렬로 연결하세요. 줄무늬 쪽은 장치 +, 반대쪽은 장치 −입니다. 아래에서는 이를 "다이오드: 예"로 표시했습니다.

이 장치들을 위해 새 코드가 필요하지 않습니다. 같은 코드가 모두에 동작합니다. 솔레노이드는 HIGH와 LOW(100%와 0%)만 사용하고 페이드는 건너뛰세요.

아두이노 MOSFET 모듈 - 12V LED 스트립

mosfet 모듈에 연결한 단색 12v LED 스트립

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

  • 스트립 +(종종 "12V"로 인쇄됨) → +, 스트립 − → LOAD
  • 다이오드: 아니요. LED 스트립에는 코일이 없습니다.
  • PWM으로 밝기를 조절합니다.
  • 단색 스트립만 사용할 수 있습니다. 긴 스트립은 전류가 더 필요하므로 먼저 전류를 확인하세요.

아두이노 MOSFET 모듈 - 12V 쿨링 팬

mosfet 모듈 쿨링 팬 배선도

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

  • 빨간 전선 → +, 검은 전선 → LOAD
  • 세 번째 전선(노란색)은 속도 신호입니다. 연결하지 않고 비워 두세요.
  • 다이오드: 예. 비용이 아주 적고 해가 되지 않습니다.
  • PWM으로 속도를 조절합니다. 약 30%보다 크게 사용하세요. 아니면 팬이 시작되지 않을 수 있습니다.

아두이노 MOSFET 모듈 - 12V 워터 펌프

12v 워터 펌프를 mosfet 모듈에 연결하는 배선

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

  • 펌프 + → +, 펌프 − → LOAD
  • 다이오드: 예
  • PWM으로 물의 흐름을 조절합니다.
  • 물 없이 펌프를 작동시키지 마세요.

아두이노 MOSFET 모듈 - 12V DC 모터

mosfet 모듈 dc 모터 12v 배선

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

  • 모터 + → +, 모터 − → LOAD
  • 다이오드: 예
  • PWM으로 속도를 조절합니다.
  • 모터는 한 방향으로만 회전합니다. 방향을 바꾸려면 L298N 같은 모터 드라이버가 필요합니다. 아두이노 - DC 모터를 참고하세요.

아두이노 MOSFET 모듈 - 12V 솔레노이드 밸브

12v 상시 닫힘 솔레노이드 밸브와 mosfet 모듈 배선

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

  • 밸브 + → +, 밸브 − → LOAD
  • 다이오드: 예
  • 상시 닫힘(normally closed) 밸브: ON이면 열리고 OFF이면 닫힙니다.
  • ON/OFF만 가능합니다. PWM은 사용하지 않습니다.

아두이노 MOSFET 모듈 - 12V 솔레노이드 잠금장치

mosfet 모듈을 사용한 솔레노이드 잠금장치 배선도

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

  • 잠금장치 + → +, 잠금장치 − → LOAD
  • 다이오드: 예
  • 완전히 ON 또는 완전히 OFF만 가능합니다. PWM은 사용하지 않습니다.
  • 잠금을 풀려면 짧은 ON 펄스를 주세요. 오래 ON 상태로 두면 뜨거워집니다. 아두이노 - 솔레노이드 잠금장치도 참고하세요.

MOSFET 모듈을 위한 아두이노 프로그래밍 방법

  • 라이브러리 불필요: 코드는 내장 함수만 사용합니다.
  • 핀 정의: const int MOSFET_PIN = 9; (9번 핀은 PWM을 지원하며 ~ 표시가 있습니다)
  • 핀을 출력으로 설정: pinMode(MOSFET_PIN, OUTPUT);
  • 부하를 완전히 켜기: digitalWrite(MOSFET_PIN, HIGH); 또는 analogWrite(MOSFET_PIN, 255);
  • 부하를 완전히 끄기: digitalWrite(MOSFET_PIN, LOW); 또는 analogWrite(MOSFET_PIN, 0);
  • analogWrite()로 부하 전력 설정: 값은 0(OFF)에서 255(최대 전력)까지입니다. 예를 들어 약 50%는 analogWrite(MOSFET_PIN, 128);입니다.
  • 퍼센트(0–100%)를 PWM 값(0–255)으로 변환: int duty = map(percent, 0, 100, 0, 255);

ON/OFF만 필요하면 digitalWrite()로 충분합니다. 밝기나 속도를 바꾸려면 analogWrite()를 사용하세요. 아두이노 - LED - 페이드 튜토리얼과 같은 방식으로 동작하지만, 이번에는 12V 부하를 제어합니다.

아두이노 코드 - MOSFET 모듈

아래 코드는 다음 동작을 계속 반복합니다:

  • 부하를 2초 동안 완전히 켜고, 2초 동안 끕니다
  • 0.5초마다 10%씩 전력을 10%에서 100%까지 올립니다
  • 전력을 90%에서 0%까지 내린 뒤 1초 기다립니다
/* * 이 아두이노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-mosfet-module */ const int MOSFET_PIN = 9; // Arduino 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); }

빠른 단계

  • 위 다이어그램과 같이 배선합니다.
  • USB 케이블로 아두이노를 PC에 연결합니다.
  • 12V 전원 어댑터를 DC 전원 잭에 꽂습니다.
  • Arduino IDE를 엽니다. Tools 메뉴로 이동하여 올바른 보드와 포트를 선택합니다.
  • 위 코드를 복사하여 Arduino IDE에 붙여넣습니다.
  • Arduino IDE에서 Upload 버튼을 클릭하여 코드를 아두이노에 업로드합니다.
  • LED 스트립을 보세요. 2초 동안 최대 밝기이고, 2초 동안 꺼진 뒤, 천천히 밝아졌다가 다시 천천히 어두워집니다.
  • 시리얼 모니터(보드레이트 9600)를 열고 결과를 확인합니다.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' 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 Uno on COM15
2

LED 스트립 대신 12V 팬을 사용하면 팬이 최고 속도로 돌다가 멈추고, 그다음 빨라졌다가 느려집니다. 팬이나 모터에는 플라이백 다이오드를 잊지 마세요.

동영상

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

댓글