BLDC 모터로 각도 제어를 하기 위해서는 출력하는 전압을 제어할 수 있어야 한다.
하지만 아두이노에서는 고정적으로 3.3V 또는 5V의 출력밖에 표현을 할 수 없다.
아두이노에서는 이런 단점을 보완하기 위해 PWM(Pulse Width Modulation : 펄스폭 변조)라는 기술을 사용한다.
아두이노에서 기본적으로 High(ON) 와 Low(OFF) 두 가지의 신호밖에 출력을 못하니 두 신호를 매우 빠르게 번갈아 출력하면서 On/Off의 비율을 조정하면 아날로그 출력의 값과 근사한 값을 만들어 낼 수 있는 것이다.
아두이노에는 디지털 핀 중에 ~로 표시된 PWM 핀들을 사용해서 PWM을 출력 할 수 있다.
아두이노 IDE 에서는 analogWrite(); 명령어를 사용해 0~5V사이의 값을 0~255까지의 256단계로 나눠서 출력을 할 수 있다.
다음은 아두이노를 사용해 PWM을 출력하는 코드이다.
void setup() { // 시작할 때 한번 실행되는 코드
pinMode(3,OUTPUT); //3번 핀을 OUTPUT으로 설정
}
void loop() { // setup() 후 반복되는 코드
for (int i = 0; i < 256; i++){ // 0 ~ 255 까지 i증가
analogWrite(3, i); // i값만큼 PWM출력
delay(10); // 10ms 정지 (1000ms = 1초)
}
for (int i = 255; i >= 0; i--){ // 255 ~ 0 까지 i감소
analogWrite(3, i);
delay(10);
}
}
[코드 : analogWrite]
아두이노 중 많이 사용하는 보드인 우노(UNO) 보드 기준으로 PWM 지원 핀이 3, 5, 6, 9, 10, 11번 이므로 3번 핀을 출력 핀으로 설정해서 0~5V까지 증감을 반복하는 코드이다.
'Project > Gimbal' 카테고리의 다른 글
[액션캠 짐벌 제작] 06. 프레임 모델링 (0) | 2019.06.09 |
---|---|
[액션캠 짐벌 제작] 05. 릴레이, MOSFET (0) | 2019.06.08 |
[액션캠 짐벌 제작] 03. 제어기 선정 및 개발환경 구축 (0) | 2019.06.08 |
[액션캠 짐벌 제작] 02. 모터 선정 (0) | 2019.06.08 |
[액션캠 짐벌 제작] 01. Prologue (0) | 2019.06.08 |