정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

블루투스를 이용한 모터제어 질문 드립니다.
jessi | 2015-08-12

제가 블루투스를 이용하여 두개의 dc모터제어를 시도 하였습니다.

그런데 모터 두개중 하나만 동작을 합니다.

A채널의 모터는 문제없이 돌아가는데 B채널은 led도 들어오지 않습니다.

하지만 블루투스가 아닌 그냥 모터 동작에는 A,B 둘다 제대로 동작을 하는것을 보니 모터쉴드에는 문제가 없는 것 같습니다.

대체 뭐가 문제인지 알고싶습니다.

아래는 제가 B채널 모터의 블루투스제어를 위해 코딩한 것입니다.

이 코딩으로 핀번호만 바꿨을때, A채널의 모터는 아무 문제 없이 동작 하였습니다.

 

 

#include <SoftwareSerial.h>

SoftwareSerial btSerial(2, 3);
char val;


void setup(){
  Serial.begin(9600);
  btSerial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(8, OUTPUT);
}

void loop(){
  while(!btSerial.available());
  while(btSerial.available()){
     val = btSerial.read();
     Serial.print(val);
 
     if(val == 'f'){//forward
       Serial.println("forward");
       forward();
     }else if(val == 'b'){//backward
       Serial.println("backward");
       backward();
     }else if(val == 's'){//stop
       Serial.println("stop");   
      stop();
     }
  }
}

void forward(){
  digitalWrite(13, HIGH);
  digitalWrite(8, LOW);
}

void backward(){
  digitalWrite(13, LOW);
  digitalWrite(8, LOW);
}

void stop(){
  digitalWrite(13, LOW);
  digitalWrite(8, HIGH);
}

프로필사진

판다마니아 2015-08-12 08:44:01

혹시 이 코드로 핀번호 바꾸면 A채널 모터는 돌아가나요??

 

지금 코드상에서 PWM을 제어하는 부분이 없어서 모터가 동작하지 않는것 같습니다.

 

제가 위의 코드로 직접 테스트해본 결과 저 코드만을 이용하면 A채널이나 B채널 모터 둘다 움직이지 않고 가만히 있습니다.(방향 설정과 브레이크는 동작하겠지만 속도를 지정해주지 않아 속도가 0인상태라서 움직이지 않는 것 같습니다.)

* 직접 테스트한 쉴드는 아두이노 정품 모터 쉴드를 이용했습니다.(밑의 링크 따라 가시면 제가 사용한 모터쉴드가 나옵니다.)

 

밑의 표를 참고하셔서 PWM을 이용해 속도를 설정해보세요.  

Fuction Ch.A Ch.B  
Direction D12 D13 방향제어 담당
PWM D3 D11 속도제어 담당
Brake D9 D8 HIGH일때 모터 강제 정지
Current Sensing A0 A1 전류 센싱

 

모터쉴드에 대한 자세한 내용은 모터쉴드 사용하기 튜토리얼을 참고해 주세요.

 

프로필사진

판다마니아 2015-08-12 08:45:08

혹시 PWM을 추가로 하셧는데도 제어가 안되시면 지금 사용하고 계신 부품 사진과 코드를 올려주시면 한번 직접 확인해보겠습니다.

(사진은 크기를 가로 800 이하로 줄여야 업로드가 됩니다.)

이전글   |    이 회로도의 74HC595의 역할과 아두이노 핀에 대해 이해가 안가네요 ㅠㅠ... 2015-08-11
다음글   |    오픈소스하드웨어의 장점 2015-08-12