-
아두이노 | DC모터 PWM 제어Technology/Arduino 2023. 12. 29. 18:00
1. DC모터
DC모터는 직류(Direct Current, DC) 전원을 공급하면 구동축이 회전하는 구동기이다. 부가 기능이 없는 DC모터에는 두 개의 전극이 노출되어 있는데, 여기에 DC 전원을 연결하면 구동축이 한 방향으로 회전한다. 모든 DC모터에는 정격 전압이 있으며, 정격 전압보다 낮은 전압 범위 내에서 DC모터에 공급되는 전압이 커질수록 구동축의 회전 속력이 빨라진다. 이때 IRF520과 같은 트랜지스터를 사용하면 PWM 제어로 DC모터의 회전 속력을 제어할 수 있다. 이번 예제에서 사용할 DC모터는 아래 링크로 접속하면 구매할 수 있으며, 정격 전압은 DC 9V이다.
2. 역기전력
앞서 살펴본 DC모터 그림에서 DC모터 전극 사이에 다이오드가 병렬로 연결되어 있는 것을 확인할 수 있다. 이는 DC모터에서 발생할 수 있는 역기전력(Counter-electromotive Force, Back EMF)으로부터 전자 회로를 보호하기 위한 것이다. DC모터에 전원을 공급하다가 멈추면, DC모터 내부에 있는 코일에서 유도 전류가 발생해 트랜지스터를 포함한 전자 회로에 부담을 줄 수 있다. 이를 방지하기 위해 위 그림과 같이 전류 방향과 반대 방향으로 다이오드를 배치하면 전원 공급이 멈췄을 때 발생하는 유도 전류를 소산시킬 수 있다. 다이오드는 극성이 있는 전자 소자이므로 극성의 방향을 확인하여 연결해야 한다. 하얀 선으로 표시된 부분이 음극이며, 양극에서 음극으로만 전류가 흐를 수 있다. 다이오드는 아래 링크로 접속하면 구매할 수 있다.
3. 예제
3.1. 회로 구성
3.2. 프로그램 작성
void setup() { pinMode(11, OUTPUT); // 디지털 11번 핀을 출력(OUTPUT) 모드로 설정 } void loop() { analogWrite(11, 255); // 디지털 11번 핀에 PWM 아날로그 신호 5V 출력 delay(1000); // 1000 ms 대기 analogWrite(11, 0); // 디지털 11번 핀에 PWM 아날로그 신호 0V 출력 delay(1000); // 1000 ms 대기 for (int i = 1; i <= 255; i++) // 10ms 간격으로 점점 빠르게 회전 { analogWrite(11, i); // 디지털 11번 핀에 PWM 아날로그 신호 i 출력 delay(10); // 10 ms 대기 } delay(1000); // 1000 ms 대기 for (int i = 254; i >= 0; i--) // 10ms 간격으로 점점 느리게 회전 { analogWrite(11, i); // 디지털 11번 핀에 PWM 아날로그 신호 i 출력 delay(10); // 10 ms 대기 } delay(1000); // 1000 ms 대기 }
[함께 읽으면 좋은 페이지]
참고문헌
- Danial Koch. (2021). Pulse Width Modulation More Than You Might Think. DIYODE. https://diyodemag.com/education/pwm_pulse_width_modulation_555_timer_motor. 2023.10.25.
반응형'Technology > Arduino' 카테고리의 다른 글
아두이노 | DC모터 드라이버 L293D 모듈 (1) 2024.01.05 아두이노 | DC모터 드라이버 L293D (0) 2024.01.05 아두이노 | MOSFET IRF520 모듈 (0) 2023.12.22 아두이노 | 릴레이 DC 5V 모듈 (0) 2023.12.15 아두이노 시리얼 통신: 데이터 입력 (1) 2023.12.08