2015년 4월 23일 목요일

[00079] 메이크블럭(makeblock)의 로봇 키트 제어 예

  이전 포스트에서 말한 바와 같이 일반적인 아두이노 우노와 모터쉴드(R3)를 사용하여 모터를 구동해 보기로 하였다. 이 로봇에 포함된 모터가 6V/2A 의 모터라 BA6208이나 LM1630 같은 IC등은 구동 전류를 충분히 내지 못해서 모터의 토크가 약해진다. 모터 한 개당 BA6208 두 개를 병렬로 연결하여 제어해 보았으나 크게 성능이 향상되지는 않았다. 모터쉴드에 대한 설명은 아래 포스트를 참조하면 된다.

    - 아두이노 모터 쉴드 R3

다음 사진은 모터 쉴드에 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);
    }
───────────────────────────────
[#00079]

댓글 없음:

댓글 쓰기