코드 검색

IRF5305 E-스위치 모듈을 사용하여 모터 속도 제어하기

IRF5305 E-스위치 모듈을 사용하여 모터 속도 제어하기

이 가이드는 IRF5305 E-스위치 모듈을 살펴봅니다. 이 모듈은 P-채널 MOSFET을 사용하여 Arduino의 저전압 신호로 고전류 DC 부하를 제어하는 강력하고 다재다능한 구성 요소입니다. 기계식 릴레이와 달리 이 솔리드 스테이트 스위치는 더 빠른 스위칭, 더 긴 수명, 물리적 접점 열화가 없습니다. 실제 가치가 있는 이유는 Arduino 핀이 공급할 수 있는 것보다 훨씬 더 많은 전류를 소비하는 부하를 안전하고 효율적으로 스위칭하거나 디밍할 수 있기 때문입니다.

E-스위치_모듈-1-MOS
E-스위치_모듈-블랙-1-mos
E-스위치_모듈-그린-1-MOS-치수

이 모듈은 다음과 같은 다양한 프로젝트에 적합합니다:

  • 로봇 공학 또는 맞춤형 전동 공구에서 고전류 DC 모터의 속도 제어.
  • 자동차 또는 건축용 애플리케이션을 위한 고출력 LED 조명 시스템 디밍.
  • 릴레이의 마모 없이 부하를 켜고 끄는 안정적이고 오래 지속되는 전원 관리 시스템 구축.
  • 저전압 마이크로컨트롤러에서 고전압(최대 36V) 회로를 제어하기 위한 절연 인터페이스 생성.

하드웨어 개요

IRF5305 E-스위치 모듈은 쉽게 통합할 수 있도록 설계되었습니다. 고전력 측에는 터미널 블록이 있고 제어 신호용 핀 2개가 있습니다. 이 모듈은 포토커플러를 통합하여 Arduino와 고전력 회로 사이에 완전한 전기적 절연을 제공하므로 마이크로컨트롤러를 잠재적 손상으로부터 보호합니다. 주요 MOSFET(IRF5305)은 단 65밀리옴의 매우 낮은 온 저항으로 거의 이상적인 스위치 역할을 하여 전압 강하와 전력 손실을 최소화합니다(비디오 01:47).

모듈의 물리적 치수는 길이 40mm, 너비 30.1mm, 깊이 16.4mm입니다(비디오 05:09).

하드웨어/구성 요소

  • Arduino Uno 또는 유사한 보드
  • IRF5305 E-스위치 모듈
  • DC 모터 또는 고출력 전구
  • 외부 전원 공급 장치(최대 36V)
  • 점퍼 와이어

배선 가이드

모듈 연결은 간단합니다. 신호 측의 두 핀은 양극접지로 표시되어 있습니다. 접지 핀을 Arduino의 GND 핀에 연결합니다. 양극 핀을 Arduino의 디지털 핀(예: 핀 9)에 연결합니다(비디오 07:53).

고전력 측에서는 외부 전원 공급 장치의 양극 단자를 모듈 입력 측의 + 단자에 연결하고 음극 단자를 - 단자에 연결합니다. 그런 다음 부하(예: 모터)를 출력 측의 +- 단자에 연결합니다(비디오 07:24).

중요: 모터와 같은 유도성 부하를 구동할 때는 부하와 병렬로 플라이백 다이오드를 배치하는 것이 중요합니다. 이 다이오드는 모터가 꺼질 때 발생하는 전압 스파이크로부터 MOSFET을 보호합니다(비디오 09:52).

코드 설명

이 튜토리얼은 각각 다른 수준의 제어를 보여주는 세 가지 별도의 프로그램을 제공합니다. 각각의 코드는 기사 아래에 있습니다.

IRF5305 모듈을 항상 켜두는 기본 코드

이 첫 번째 스케치는 가장 간단합니다. 부하를 켜고 무기한 유지하도록 설계되었습니다. 이 코드의 핵심 부분은 상단의 핀 정의입니다.

int loadPin =9;// 부하 핀

이 줄은 Arduino의 어느 디지털 핀이 모듈의 "양극" 신호 핀에 연결되어 있는지 정의합니다. 다른 곳에 연결한 경우 숫자 9를 다른 디지털 핀으로 변경할 수 있습니다. setup() 함수는 이 핀을 출력으로 설정하고, loop() 함수는 부하를 켜고 영원히 대기하는 로직을 포함합니다.

IRF5305 모듈용 기본 코드, 켜기/끄기

이 스케치는 시간 기반 스위칭을 보여주며 부하를 3초 동안 켜고 3초 동안 끕니다. 사용자가 구성할 수 있는 부분은 핀 정의와 지연 시간입니다.

int cont = HIGH;
int loadPin = 9; 

loadPin 변수는 첫 번째 프로그램과 동일한 목적을 수행합니다. cont 변수는 프로그램이 부하를 켤지 끌지 결정하기 위해 확인하는 상태 플래그입니다. 켜기/끄기 타이밍을 변경하려면 ifelse 블록 내의 delay(3000); 명령을 수정할 수 있습니다. 지연은 밀리초 단위로 측정되므로 3000은 3초와 같습니다.

IRF5305 모터 속도/조명 밝기 제어용 기본 코드

마지막 프로그램은 펄스 폭 변조(PWM)를 사용하여 모터의 속도나 조명의 밝기를 제어합니다. 전력을 루프에서 점진적으로 위아래로 램프합니다. 주요 변수는 모두 스케치 상단에 있습니다.

int motorPin =9;// 모터 모듈에 연결할 핀
int mSpeed = 0;// 속도 값을 저장할 변수
int mStep = 15;// PWM 모터 속도의 증가/감소 단계
  • motorPin: 모듈에 연결된 PWM 지원 핀을 정의합니다. PWM을 지원하는 핀(Arduino 보드에서 종종 ~ 기호로 표시됨)을 사용하는 것이 중요합니다.
  • mSpeed: 이 변수는 현재 PWM 값을 보유하며, 0(꺼짐)에서 255(최대 속도)까지 범위를 가집니다.
  • mStep: 이는 각 주기마다 속도가 변경되는 증분입니다. 더 큰 값(예: 25)은 속도가 더 빠르게 증가 및 감소하게 하고, 더 작은 값(예: 5)은 전환이 더 부드럽고 느리게 만듭니다.

상승/하강 효과의 속도를 변경하려면 루프 끝에 있는 delay(200); 값을 수정하세요. 이는 각 속도 단계 사이의 시간(밀리초)입니다.

실시간 프로젝트/데모

비디오에서는 세 가지 프로그램 각각이 시연됩니다. 첫 번째 프로그램은 모터를 연속적으로 계속 작동시키는 데 성공합니다. 그런 다음 두 번째 프로그램이 업로드되고, 모터가 3초 동안 켜지고 3초 동안 꺼지는 것이 표시됩니다. 마지막으로 PWM 프로그램이 시연되며, 모터가 최대 속도로 천천히 가속한 다음 다시 정지 상태로 감속하고 이 주기를 연속적으로 반복하는 것을 보여줍니다(비디오 15:42에서).

비디오에는 포괄적인 전류 처리 테스트도 포함되어 있습니다. 모듈은 추가 방열판 없이 실제 한계를 결정하기 위해 전자 부하에 연결되었습니다. 결과는 더 높은 전압(최대 24V)에서 모듈이 최대 10암페어를 처리할 수 있음을 보여주었습니다. 그러나 더 낮은 전압(약 5V)에서는 전류 처리 용량이 크게 감소했고, 모듈은 10암페어 이상의 전류에서 과열되고 연기가 나기 시작했습니다(비디오 21:49에서). 결론은 연속적이고 높은 전류 응용의 경우 모듈을 시원하게 유지하고 손상을 방지하기 위해 방열판이 필요하다는 것입니다.

E-switch_module-2-MOS
E-switch_module-green-2-mos-bottom
E-switch_module-black-2-mos-top

손상을 방지합니다.

챕터

  • [00:00] 소개 및 모듈 개요
  • [01:13] MOSFET E-스위치를 사용하는 이유
  • [03:45] 모듈 연결 및 물리적 치수
  • [05:24] IRF5305 데이터시트 검토
  • [07:03] 모듈을 Arduino에 배선하기
  • [08:06] 회로도 설명
  • [10:29] 코드 설명: 항상 켜짐 프로그램
  • [11:04] 코드 설명: 켜짐/꺼짐 제어 프로그램
  • [12:03] 코드 설명: PWM 속도 제어 프로그램
  • [14:34] 세 가지 프로그램의 실시간 시연
  • [17:02] 전류 처리 및 부하 테스트
  • [23:34] 결론 및 테스트 결과 요약

이미지

Basic Code to keep the IRF5305 Module always ON
Basic Code to keep the IRF5305 Module always ON
Basic Code to keep the IRF5305 Module always ON
Basic Code to keep the IRF5305 Module always ON
Basic Code to keep the IRF5305 Module always ON
Basic Code to keep the IRF5305 Module always ON
Schematic diagram of an E-switch based on the IRF5305 MOSFET
Schematic diagram of E-Switch based on IRF5305 Mosfet
E-switch_module-black-2-mos-top
E-switch_module-black-2-mos-top
E-switch_module-black-1-mos
E-switch_module-black-1-mos
E-switch_module-green-2-mos-bottom
E-switch_module-green-2-mos-bottom
E-switch_module-green-1-MOS-dimentions
E-switch_module-green-1-MOS-dimentions
E-switch_module-2-MOS
E-switch_module-2-MOS
E-switch_module-1-MOS
E-switch_module-1-MOS
156-Basic code to keep the IRF5305 module always on
언어: C++
/*
 * This is an Arduino sketch for a tutorial video 
 * explaining the 5305 MOSFET used as a switch 
 * This sketch turns the MOSFET ON and keeps it ON forever
 * Download and resource page https://robojax.com/RJT125

 * Written by Ahmad Shamshiri on Sep 12, 2018 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch instruction video for this code: https://youtu.be/eAANkWDvusU
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */
int loadPin =9;// load pin

  
void setup() {
  // Robojax.com demo
  pinMode(loadPin,OUTPUT);
  Serial.begin(9600);
  Serial.println("Robojax Demo"); 

}

void loop() {
  // Robojax.com tutorial

  digitalWrite(loadPin, HIGH);
 while(1);// wait forever


}
157-Basic code to for IRF5305 modul, turns ON/OFF
언어: C++
/*
 * This is an Arduino sketch for a tutorial video 
 * explaining the 5305 MOSFET used as a switch 
 * This sketch turns the MOSFET ON for 3 seconds then turns it OFF for 3 seconds.
 * Download and resource page https://robojax.com/RJT125
 * Written by Ahmad Shamshiri on Sep 12, 2018 at 17:36 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/eAANkWDvusU
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */
int cont = HIGH;
int loadPin = 9; 
void setup() {
  // Robojax.com demo
  pinMode(loadPin,OUTPUT);
  Serial.begin(9600);
  Serial.println("Robojax Demo");
  

}

void loop() {
  // Robojax.com tutorial

 
  if(cont == HIGH)
  {
    Serial.println("OUTPUT is HIGH");
    digitalWrite(loadPin,HIGH);
    delay(3000);
    cont = LOW;
  }else{
    Serial.println("OUTPUT is LOW");
    digitalWrite(loadPin,LOW);
    delay(3000);
    cont = HIGH;   
  }

}
158-Basic code to keep the IRF5305 speed of motor intensitiy of light
언어: C++
/*
 * This is an Arduino sketch for a tutorial video 
 * explaining the 5305 MOSFET used as a switch 
 * This sketch will control the speed of a motor or the intensity of a light using PWM
 * Download and resource page https://robojax.com/RJT125

 * Written by Ahmad Shamshiri on Sep 12, 2018 at 23:23 in Ajax, Ontario, Canada
 * For Robojax.com
 * Watch the instruction video for this code: https://youtu.be/eAANkWDvusU
 * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
 */
int motorPin =9;// pin to connect to motor module
int mSpeed = 0;// variable to hold speed value
int mStep = 15;// increment/decrement step for PWM motor speed
  
void setup() {
  // Robojax.com demo
  pinMode(motorPin,OUTPUT);// set mtorPin as output
  Serial.begin(9600);// initialize serial motor
  Serial.println("Robojax Demo");
  

}

void loop() {
  // Robojax.com tutorial

analogWrite(motorPin, mSpeed);// send mSpeed value to motor
    Serial.print("Speed: ");
    Serial.println(mSpeed);// print mSpeed value on Serial monitor (click on Tools->Serial Monitor)
  mSpeed = mSpeed + mStep;
  // See the video for details.
  if (mSpeed <= 0 || mSpeed >= 255) {
    mStep = -mStep;
  }  

delay(200);

}

자원 및 참고자료

아직 자원이 없습니다.

파일📁

다른 파일들

  • IRF5305 P-Channel MOSFET Datasheet
    Datasheet for the IRF5305, a P-channel power MOSFET. It features a drain-to-source voltage of -55V, continuous drain current of -31A, and low on-resistance, suitable for high-power switching applications.
    robojax_e-switch_IRF5305_datasheet.pdf 0.16 MB