드론 제작 중 모터와 ESC를 검사하기 위해서
아두이노의 Servo 함수를 통하여 간단히 모터를 제어해봅니다.
사용할 모터 입니다.
브러쉬리스 모터이고 드론의 암에 고정된 상태로 진행하였습니다.
사용할 ESC입니다.
이 역시 드론의 암에 고정된 상태로 주 전원과 모터, 아두이노에 각각 연결되어 있습니다.
<배선>
1. 주전원(리포배터리 3S)은 ESC의 +,- 에 연결합니다.
2. ESC의 A, B, C는 BLDC의 모터에 무작위로 연결합니다.
3. 신호선의 흰색(Signal)은 아두이노의 9번핀에 연결합니다.
4. 신호선의 검은색(GND)은 아두이노의 GND에 연결합니다.
<배선 추가설명>
1. 이후에 ESC와 BLDC의 연결을 바꿔 회전방향을 바꿀 수 있습니다.
2. 흰색 신호선(Signal)의 경우 임의로 선택가능합니다. 다만 아두이노에서 PWM지원 가능한 핀이어야 합니다.
본 코드에서는 9번핀을 사용하였습니다.
3. 검은색 신호선(GND)의 경우 접지 동기화를 통한 작동 신호의 안정을 위해 아두이노의 GND에 연결합니다.
<코드>
#include <Servo.h> //아두이노 서보모터 제어 라이브러리
Servo test_motor; // test_motor 라는 이름을 지정합니다.
int val=70; //모터의 속도를 책임질 변수를 선언합니다.
void setup() {
Serial.begin(9600); //플로팅 시리얼을 통하여 속도를 제어하기 위하여 통신 속도를 지정합니다.
test_motor.attach(9); //PWM신호를 출력할 핀을 9번으로 설정합니다.
test_motor.write(60); //아두이노가 동작을 시작하면 초기 속도로 60을 지정하고 3초를 대기합니다.
delay(3000);
}
void loop() {
if(Serial.available()){
char temp = Serial.read();
if(temp=='u'){ //u를 입력하여 속도를 올리고
val += 5;
}
else if(temp=='d'){ //d를 입력하여 속도를 낮춥니다.
val -= 5;
}
test_motor.write(val); //루프를 반복하여 실시간으로 속도를 제어합니다.
}
Serial.print("current value : ");
Serial.println(val);
delay(100);
}
<소스 링크>
github.com/Joyonclear/Arduino-BLDC-motor-control
Joyonclear/Arduino-BLDC-motor-control
BLDC motor control by ESC and Arduino(servo library). - Joyonclear/Arduino-BLDC-motor-control
github.com
<동작영상>
위 영상에서는 속도의 값을 65에서 95까지 조절하였습니다.
70부터 모터가 제어되기 시작하며, 100이상은 위험하여 진행하지 않았습니다.
'Science > Electronic Engineering' 카테고리의 다른 글
[FPGA] 디지털 시계 설계 (0) | 2021.03.10 |
---|---|
[드론]KK multicopter v.5.5 Blackboard 펌웨어 업데이트 - 1 (0) | 2021.01.06 |
[번역] 아날로그 서보모터와 디지털 서보모터의 차이 (0) | 2021.01.06 |
[아두이노] 디지털 서보모터 제어하기 (1) | 2021.01.04 |
[드론] 전원분배보드 납땜 (0) | 2021.01.04 |
댓글