이전 포스트에서 말한 바와 같이 일반적인 아두이노 우노와 모터쉴드(R3)를 사용하여 모터를 구동해 보기로 하였다. 이 로봇에 포함된 모터가 6V/2A 의 모터라 BA6208이나 LM1630 같은 IC등은 구동 전류를 충분히 내지 못해서 모터의 토크가 약해진다. 모터 한 개당 BA6208 두 개를 병렬로 연결하여 제어해 보았으나 크게 성능이 향상되지는 않았다. 모터쉴드에 대한 설명은 아래 포스트를 참조하면 된다.
다음 사진은 모터 쉴드에 DC모터 전원선을 연결한 것이다. 밑에 아두이노 우노가 있고 모터 쉴드를 얹어서 모터에 연결하였고 전원은 1.5V AA건전지 6개(9V)를 사용한다.
첫 번째 실험으로 2초 동안 전진하고 2초 동안 후진하기를 무한 반복하는 간단한 예제이다. 프로그램 소스는 다음과 같다. 실험할 때 한가지 주의할 점은 반드시 외부전원(건전지나 변압기)를 보드에 연결하여야 한다는 것이다 USB만으로 모터를 구동시키려다가 PC보드가 손상될 수도 있다.
소스 코드:
───────────────────────────────
#define PWM_RIGHT 3
#define DIR_RIGHT 12
#define BRAKE_RIGHT 9
#define PWM_LEFT 11
#define DIR_LEFT 13
#define BRAKE_LEFT 8
void setup() {
pinMode(PWM_LEFT, OUTPUT);
pinMode(DIR_LEFT, OUTPUT);
pinMode(BRAKE_LEFT, OUTPUT);
pinMode(PWM_RIGHT, OUTPUT);
pinMode(DIR_RIGHT, OUTPUT);
pinMode(BRAKE_RIGHT, OUTPUT);
analogWrite(PWM_LEFT,0);
analogWrite(PWM_RIGHT,0);
}
void loop() {
digitalWrite(DIR_LEFT, LOW);
digitalWrite(DIR_RIGHT,LOW);
analogWrite(PWM_LEFT, 255);
analogWrite(PWM_RIGHT, 255);
delay(2000);
digitalWrite(DIR_LEFT, HIGH);
digitalWrite(DIR_RIGHT, HIGH);
analogWrite(PWM_LEFT, 255);
analogWrite(PWM_RIGHT, 255);
delay(2000);
}
───────────────────────────────
'연구 > 마이크로로봇' 카테고리의 다른 글
마이크로로봇용 스테핑 모터들 (0) | 2015.06.09 |
---|---|
메이크블럭(makeblock)의 로봇 키트 사용기 (0) | 2015.04.25 |