IRF5305 E-스위치 모듈을 사용하여 모터 속도 제어하기
이 가이드는 IRF5305 E-스위치 모듈을 살펴봅니다. 이 모듈은 P-채널 MOSFET을 사용하여 Arduino의 저전압 신호로 고전류 DC 부하를 제어하는 강력하고 다재다능한 구성 요소입니다. 기계식 릴레이와 달리 이 솔리드 스테이트 스위치는 더 빠른 스위칭, 더 긴 수명, 물리적 접점 열화가 없습니다. 실제 가치가 있는 이유는 Arduino 핀이 공급할 수 있는 것보다 훨씬 더 많은 전류를 소비하는 부하를 안전하고 효율적으로 스위칭하거나 디밍할 수 있기 때문입니다.
이 모듈은 다음과 같은 다양한 프로젝트에 적합합니다:
- 로봇 공학 또는 맞춤형 전동 공구에서 고전류 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 변수는 프로그램이 부하를 켤지 끌지 결정하기 위해 확인하는 상태 플래그입니다. 켜기/끄기 타이밍을 변경하려면 if 및 else 블록 내의 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에서). 결론은 연속적이고 높은 전류 응용의 경우 모듈을 시원하게 유지하고 손상을 방지하기 위해 방열판이 필요하다는 것입니다.
손상을 방지합니다.
챕터
- [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] 결론 및 테스트 결과 요약
이미지
/*
* 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
}
/*
* 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;
}
}
/*
* 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 DatasheetDatasheet 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.pdf0.16 MB