라즈베리 파이 피코 MOSFET 모듈

이 가이드에서는 Raspberry Pi Pico와 함께 MOSFET 모듈을 전원 스위치로 설정하고 사용하는 방법을 배웁니다. 다음 내용을 다룹니다:

라즈베리 파이 피코와 aod4184, lr7843, fr120n mosfet 모듈

준비물

1×라즈베리 파이 피코 W 쿠팡 | 아마존
1×라즈베리 파이 피코 (또는) 쿠팡 | 아마존
1×마이크로 USB 케이블 아마존
1×MOSFET Module (AOD4184, LR7843 or FR120N) 아마존
1×12V LED 스트립 아마존
1×(또는) 12V DC 선풍기 아마존
1×12V 전원 어댑터 아마존
1×DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 라즈베리 파이 피코용 스크루 터미널 확장 보드 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

MOSFET 모듈에 대하여

Raspberry Pi Pico는 3.3V로 동작합니다. GPIO 핀으로는 12V LED 스트립, DC 모터, 팬, 펌프, 솔레노이드 밸브, 히터에 전원을 공급할 수 없습니다. MOSFET 모듈이 이 문제를 해결합니다. Pico가 작은 신호를 보내면, 모듈이 부하의 큰 전류가 흐르는 길을 열거나 닫습니다.

그냥 라즈베리파이 피코 - 릴레이를 쓰면 안 될까요? MOSFET은 움직이는 부품이 없어서 딸깍 소리가 나지 않고 수명도 깁니다. 또한 아주 빠르게 스위칭하므로 PWM을 사용할 수 있습니다. PWM으로 LED 스트립을 어둡게 하거나 팬의 속도를 줄일 수 있습니다. 릴레이는 완전히 켜거나 완전히 끄는 것만 가능합니다. 한 가지 제한이 있습니다. MOSFET 모듈은 DC 부하에만 사용할 수 있습니다. AC 220V 전원에는 절대 사용하지 마세요.

이 모듈은 세 가지 MOSFET 칩 중 하나로 구입할 수 있습니다: AOD4184(D4184로도 판매), LR7843, FR120N. 보드의 나머지 부분은 같습니다. 크기, 핀, 배선, MicroPython 코드가 세 가지 모두 같습니다. 이 가이드 하나로 어느 것이든 사용할 수 있습니다.

AOD4184 LR7843 FR120N
보드의 칩 AOD4184A (N채널) IRLR7843 (N채널) IRFR120N (N채널)
최대 부하 전압 (칩 정격) 40V DC 30V DC 100V DC
최대 전류 (칩 정격) 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: 24V나 48V 같은 높은 전압의 작은 부하에만 선택하세요. 최대 100V까지 받지만, 약 2A를 넘으면 뜨거워집니다.

표의 50A와 161A는 칩 자체의 한계입니다. 작은 보드는 그만큼의 전류를 흘릴 수 없습니다. 실제 한계는 열입니다. 부하를 몇 분 동안 동작시킨 뒤 MOSFET을 조심해서 만져 보세요. 손가락을 댈 수 없을 만큼 뜨겁다면 방열판을 달거나 더 작은 부하를 사용하세요.

동작 원리

입력 쪽에는 PC817 포토커플러가 있습니다. GP18의 신호는 작은 저항을 지나 PC817 안의 작은 LED로 들어갑니다. 그 LED의 빛은 역시 PC817 안에 있는 포토트랜지스터에 닿고, 포토트랜지스터가 MOSFET 게이트를 구동합니다. PC817이 꺼져 있을 때는 저항이 게이트를 0V로 끌어내립니다.

포토커플러 덕분에 Pico 쪽과 부하 쪽은 서로 배선으로 연결되지 않습니다. 모듈에서 신호 GND와 부하 GND는 분리되어 있습니다. 12V 쪽의 스파이크나 실수가 Pico에 전달되기 어렵습니다.

MOSFET은 N채널 타입입니다. LOAD 단자와 − 단자 사이, 즉 부하의 음극 선 쪽에 있습니다("로우 사이드" 스위치). 부하는 +와 LOAD 사이에 연결합니다.

다음에 어떤 일이 일어나는지는 Pico가 GP18에 무엇을 출력하느냐에 따라 달라집니다.

GP18이 0V를 출력할 때 (LOW)

  • PC817 안의 LED에 전류가 흐르지 않아서 꺼져 있습니다.
  • 포토트랜지스터는 꺼진 상태를 유지합니다. 게이트 저항이 MOSFET 게이트를 0V로 유지합니다.
  • MOSFET이 꺼집니다. LOAD와 − 사이는 열린 스위치와 같습니다.
  • 부하의 음극 선이 어댑터로 돌아갈 길이 없습니다. 전류가 흐르지 않고 부하에 0V가 걸립니다. 꺼진 상태입니다.
  • MicroPython에서는 pwm.duty_u16(0)이며, 듀티 사이클 0%입니다.

GP18이 3.3V를 출력할 때 (HIGH)

  • 몇 mA의 전류가 PC817 안의 LED로 흘러 LED가 켜집니다. 이 빛은 칩 안에 있어서 눈에 보이지 않습니다.
  • Pico가 해야 할 일은 이것뿐입니다. 3.3V GPIO 핀이면 충분하고, 별도의 트랜지스터는 필요 없습니다.
  • 포토트랜지스터가 켜집니다. 이제 MOSFET 게이트는 부하 전원의 약 절반, 즉 12V 어댑터라면 약 6V를 받습니다.
  • MOSFET이 완전히 켜집니다. 이제 저항이 거의 없는 닫힌 스위치와 같습니다(AOD4184와 LR7843은 몇 mΩ, FR120N은 약 0.2Ω).
  • 전류가 어댑터 + → + 단자 → 부하 → LOAD 단자 → MOSFET → − 단자 → 어댑터 − 순서로 한 바퀴 흐릅니다.
  • 부하는 거의 12V 전체를 받아 최대 출력으로 동작합니다.
  • MicroPython에서는 pwm.duty_u16(65535)이며, 듀티 사이클 100%입니다.

GP18이 PWM 신호를 출력할 때

  • 핀이 아주 빠르게 HIGH와 LOW를 반복합니다. 이 가이드의 코드는 500 Hz를 사용하므로 1초에 500번 반복됩니다.
  • MOSFET도 똑같이 동작합니다. HIGH 구간마다 켜지고 LOW 구간마다 꺼집니다. 부하는 12V 펄스를 받습니다.
  • 듀티 사이클은 신호가 HIGH인 시간의 비율입니다. MicroPython에서는 duty_u16() 값을 65535로 나눈 값입니다.
  • 평균 전압과 평균 전력은 듀티 사이클에 최대값을 곱한 값입니다. 12V 어댑터를 쓸 때의 예는 다음과 같습니다:
duty_u16() 값 듀티 사이클 부하가 켜져 있는 시간 평균 전압
6553 10% 전체의 1/10 약 1.2V
32767 50% 전체의 절반 약 6V
58981 90% 전체의 9/10 약 10.8V
  • LED 스트립은 더 어둡게 보입니다. 사실은 깜빡이고 있지만 눈이 알아채지 못할 만큼 빠릅니다. 팬, 모터, 펌프는 회전하는 부분이 펄스를 부드럽게 만들어 주므로 더 느리게 돌아갑니다. 참고: 듀티 사이클이 낮으면 팬이 시작하지 않을 수 있습니다.
  • PWM 주파수는 500 Hz에서 1 kHz 정도로 낮게 유지하세요. PC817은 빠른 부품이 아닙니다. 주파수가 너무 높으면 MOSFET이 완전히 스위칭되지 않고, 부하가 깨끗한 펄스를 받지 못하며, MOSFET이 뜨거워집니다.
  • 솔레노이드 락이나 솔레노이드 밸브에는 GP18에 0V 또는 3.3V만 사용하세요. PWM은 사용하지 마세요.

게이트는 공급 전압의 약 절반만 받습니다. 그래서 부하 전원은 최소 약 6V 이상이어야 합니다. 5V 부하 전원은 잘 동작하지 않습니다. 부하가 몇 A 이상 흐른다면 9V 이상을 사용하세요.

핀아웃

aod4184, lr7843, fr120n mosfet 모듈 핀아웃

모듈에는 Pico용 2핀 헤더(2.54mm, 브레드보드에 꽂을 수 있음)와 부하용 나사 단자가 있습니다:

  • PWM 핀: Raspberry Pi Pico의 GPIO 핀에 연결합니다(이 가이드에서는 GP18). 켜기/끄기 신호 또는 PWM 신호를 받습니다.
  • GND 핀: Raspberry Pi Pico의 아무 GND 핀(0V)에 연결합니다.
  • + 단자: 부하 전원 공급 장치의 양극 선(예: 12V)과 부하의 양극 선에 연결합니다. 두 선 모두 이 단자 하나에 넣습니다.
  • LOAD 단자: 부하의 음극 선에 연결합니다. MOSFET이 스위칭하는 쪽입니다.
  • − 단자: 부하 전원 공급 장치의 음극 선(그 전원의 0V)에 연결합니다.

표기는 제조 시기마다 조금 다를 수 있습니다. 항상 내 보드에 인쇄된 글자를 확인하세요.

선연결

Pico의 3.3V 신호만으로 포토커플러를 켤 수 있고, 어댑터의 12V는 Pico에 절대 닿지 않습니다.

라즈베리 파이 피코와 aod4184, lr7843, fr120n mosfet 모듈 배선도

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

전원을 켜기 전에 확인할 사항:

  • 12V 선을 Raspberry Pi Pico의 어떤 핀에도 연결하지 마세요.
  • DC 부하만 사용하세요.
  • 안에 코일이 있는 부하에는 플라이백 다이오드가 필요합니다. 다음 부분을 참고하세요.

연결할 수 있는 다른 부하

LED 스트립은 한 가지 예일 뿐입니다. 아래는 흔히 쓰는 12V 부하 여섯 가지입니다. Pico 쪽은 바뀌는 것이 없습니다. GP18은 계속 PWM에, GND 핀은 계속 GND에 연결합니다. 모든 변경은 나사 단자에서 이루어집니다:

  • 어댑터 양극 선은 +에, 어댑터 음극 선은 −에 연결합니다
  • 부하 양극 선은 같은 + 단자에, 부하 음극 선은 LOAD에 연결합니다

모든 부하에 다음 규칙을 기억하세요:

  • 어댑터 전압은 부하 전압과 같아야 합니다. 12V 부하에는 12V 어댑터를 사용하세요. 6V 아래로는 절대 내려가지 마세요. 모듈이 제대로 스위칭하지 못합니다.
  • 부하의 전류를 확인하세요. FR120N은 방열판 없이 약 2A 정도의 작은 부하용입니다. 더 큰 부하에는 AOD4184 또는 LR7843을 사용하세요.
  • 코일 부하(팬, 펌프, 모터, 솔레노이드 밸브, 솔레노이드 락)에는 모듈에 다이오드가 없으므로 플라이백 다이오드가 필요합니다. 부하의 두 선 사이에 1N5819 또는 1N4007을 연결하세요. 줄무늬가 있는 쪽(캐소드)은 부하 양극에, 다른 쪽(애노드)은 부하 음극에 연결합니다.
  • 새 코드는 필요 없습니다. 같은 MicroPython 스크립트로 모든 부하를 동작시킬 수 있습니다. 두 가지 솔레노이드에서만 전력을 100% 또는 0%(완전히 켜기 또는 완전히 끄기)로 설정하고 페이드는 건너뛰세요.

12V 팬 연결 방법

12v 쿨링 팬용 mosfet 모듈 배선도

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

  • 빨간 선이 양극, 검은 선이 음극입니다.
  • 노란색 세 번째 선은 속도 측정용입니다. 연결하지 마세요.
  • 다이오드를 추가하세요. 저렴하고 해가 되지 않습니다.
  • PWM으로 속도를 제어합니다. 아주 낮은 듀티 사이클에서는 팬이 멈춰 있을 수 있으므로 약 30% 이상에서 시작하세요.

12V 워터 펌프 연결 방법

12v 워터 펌프와 mosfet 모듈 배선도

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

  • 펌프에는 코일이 있으므로 다이오드를 추가하세요.
  • PWM으로 물이 흐르는 양을 제어합니다.
  • 물이 없는 상태에서 펌프를 돌리지 마세요.

12V LED 스트립 연결 방법

mosfet 모듈과 단색 12v LED 스트립 배선도

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

  • 스트립 양극(보통 12V라고 적혀 있음)은 +에, 스트립 음극은 LOAD에 연결합니다.
  • 여기에는 다이오드가 필요 없습니다. LED 스트립에는 코일이 없습니다.
  • PWM으로 밝기를 제어합니다. 스트립이 길수록 전류가 많이 필요하므로 모듈을 고르기 전에 확인하세요.
  • 단색 스트립만 이렇게 사용할 수 있습니다. RGB 스트립과 주소 지정형 스트립은 안 됩니다.

12V 솔레노이드 밸브 연결 방법

mosfet 모듈과 상시 닫힘(normally closed) 12v 솔레노이드 밸브 배선도
  • 이 밸브는 상시 닫힘(normally closed) 타입입니다. 완전히 켜면 열리고, 끄면 닫힙니다.
  • 다이오드를 추가하세요.
  • 켜기와 끄기만 사용하세요. PWM은 사용하지 마세요.

12V 솔레노이드 락 연결 방법

mosfet 모듈에 연결한 12v 솔레노이드 락

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

  • 다이오드를 추가하세요.
  • 완전히 켜기(100%) 또는 완전히 끄기(0%)만 사용하세요. PWM 디밍은 절대 안 됩니다.
  • 락을 계속 켜 두면 뜨거워집니다. 잠금을 풀 때 잠깐만 켠 뒤 끄세요.

12V DC 모터 연결 방법

12v dc 모터를 연결한 mosfet 모듈 배선도

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

  • 모터 양극은 +에, 모터 음극은 LOAD에 연결하고, 모터 양단에 다이오드를 연결합니다.
  • PWM으로 속도를 제어합니다.
  • 모터는 한 방향으로만 돕니다. 양방향으로 돌리려면 L298N 같은 모터 드라이버가 필요합니다. 라즈베리 파이 피코 - DC 모터 튜토리얼을 확인하세요.

Raspberry Pi Pico 코드 - MOSFET 모듈

/* * 이 라즈베리 파이 피코 코드는 newbiely.kr 에서 개발되었습니다 * 이 라즈베리 파이 피코 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/raspberry-pico/raspberry-pi-pico-mosfet-module */ from machine import Pin, PWM import time MOSFET_PIN = 18 # Pico GP18 connected to the PWM pin of the MOSFET module pwm = PWM(Pin(MOSFET_PIN), freq=500) # 500 Hz PWM, slow enough for the module's optocoupler pwm.duty_u16(0) # start with the load OFF def set_load(percent): pwm.duty_u16(percent * 65535 // 100) # convert 0-100% to 0-65535 print("Load power: {}%".format(percent)) while True: # turn the load fully ON, then fully OFF print("Load: ON") set_load(100) time.sleep(2) print("Load: OFF") set_load(0) time.sleep(2) # increase the power step by step (PWM) for percent in range(10, 101, 10): set_load(percent) time.sleep(0.5) # decrease the power step by step (PWM) for percent in range(90, -1, -10): set_load(percent) time.sleep(0.5) time.sleep(1)

이 코드는 GP18에서 500 Hz PWM을 만듭니다. 부하를 2초 동안 완전히 켜고 2초 동안 완전히 끕니다. 그다음 전력을 10%에서 100%까지 10%씩 0.5초마다 한 단계씩 올립니다. 이후 전력을 다시 0%까지 내리고, 1초 기다린 뒤 처음부터 다시 시작합니다. duty_u16() 함수는 0에서 65535 사이의 숫자를 받으므로, 코드가 퍼센트를 이 범위로 바꿔 줍니다.

빠른 단계

다음 안내를 차례대로 따라 하세요:

  • 컴퓨터에 Thonny IDE가 설치되어 있는지 확인합니다.
  • Raspberry Pi Pico에 MicroPython 펌웨어가 설치되어 있는지 확인합니다.
  • Raspberry Pi Pico를 처음 사용한다면 자세한 안내는 라즈베리 파이 피코 - 시작하기 튜토리얼을 참고하세요.
  • 제공된 배선도에 따라 부품을 연결합니다. 12V 어댑터는 아직 꽂지 마세요.
  • Micro USB 케이블로 Raspberry Pi Pico를 컴퓨터에 연결합니다.
  • 컴퓨터에서 Thonny IDE를 실행합니다.
  • Thonny IDE에서 Tools Options로 이동하여 MicroPython (Raspberry Pi Pico) 인터프리터를 선택합니다.
  • Interpreter 탭에서 드롭다운 메뉴의 MicroPython (Raspberry Pi Pico)를 선택합니다.
  • 올바른 포트가 선택되어 있는지 확인합니다. Thonny IDE가 포트를 자동으로 감지합니다.
  • 위 코드를 복사하여 Thonny IDE의 편집기에 붙여넣습니다.
  • 다음 방법으로 스크립트를 Raspberry Pi Pico에 저장합니다:
    • Save 버튼을 클릭하거나 Ctrl+S 키를 누릅니다.
    • 저장 대화상자에서 Raspberry Pi Pico를 선택합니다.
    • 파일 이름을 main.py로 저장합니다.
  • 12V 전원 어댑터를 꽂습니다.
  • 녹색 Run 버튼을 클릭하거나 F5 키를 눌러 스크립트를 실행합니다.
  • LED 스트립을 보세요. 2초 동안 최대 밝기로 켜졌다가 2초 동안 꺼집니다. 그다음 조금씩 밝아졌다가 조금씩 어두워집니다. 팬이라면 속도가 올라갔다 내려가는 소리가 들립니다.
  • Thonny 하단의 Shell에 표시되는 메시지를 확인합니다.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot 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%
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

스크립트의 이름을 main.py로 지정하고 Raspberry Pi Pico의 루트 디렉터리에 저장하면, Pico의 전원 공급 또는 리셋 시마다 자동으로 실행됩니다. LED 스트립이 켜지지 않으면 부하 전원이 최소 6V 이상인지, 그리고 부하의 음극 선이 −가 아니라 LOAD 단자에 연결되어 있는지 확인하세요.

동영상

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