이전 포스트에서 말한 바와 같이 일반적인 아두이노 우노와 모터쉴드(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]


Posted by 살레시오
,