', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 전기 자전거 쓰로틀을 이용해 RC모터 제어하기 :: MakerLee's Workspace
728x90


#include <Servo.h>


Servo controllservo;  // 서보를 제어할 서보 오브젝트

Servo motorservo;     // 모터를 제어할 서보 오브젝트       

int servopos = 0;     // 서보 위치를 저장할 변수 선언

int motorspeed = 0;   // 모터 속도를 저장할 변수 선언

int throttlePin = A0; // 쓰로틀의 입력을 A0 로 선언

int throttleValue = 0;   // 쓰로틀의 수치를 0으로 선언



void setup() 

  controllservo.attach(9);  // 핀 9의 서보신호를 컨트롤서보에 연결

  motorservo.attach(8);     // 핀 10의 서보신호를 모터에 연결

 

 

void loop() 

  throttleValue=analogRead(throttlePin);  // 쓰로틀의 입력값을 아날로그로 읽음

  throttleValue=map(throttleValue,0,1023,0,179); //서보모터의 각도에 맞게 매핑함

  controllservo.write(throttleValue);

  delay(15);

  }



컨트롤러의 홀센서out 신호를 A0 에 연결, 전원선을 아두이노의 5V, GND에 연결,

아두이노의 9번핀을 서보모터의 컨트롤 핀에 연결하고

서보모터의 전원을 연결합니다. 

서보모터의 전원 GND와 아두이노의 GND를 연결합니다. 




대충 짠 코드입니다. motorservo나 servopos  등 쓰이지 않는 것들이 있습니다. 

나중에 쓰게 되겠지요




http://pashiran.tistory.com/669 이 링크에서 분석한 바 있지만


쓰로틀에 따라 홀 센서의 전압 출력은 쓰로틀을 올릴수록 올라갑니다. 


5V 안쪽의 값이기 때문에 그대로 analogRead() 명령어를 사용한 후


서보 범위에 맞도록 map 명령어를 사용해 수치를 바꿔줍니다. 


throttleValue=map(throttleValue,0,1023,0,179) 라는 부분이 있는데


아날로그 입력값인 0~1023 을 0~179 범위로 매핑하게 됩니다. 



이 출력을 이용해 RC용 서보모터를 조정하거나 ESC에 연결해서 모터를 가감속할 수 있습니다. 







새로 산 부품이 도착하는 대로 추가설계 진행 예정입니다. 

728x90

+ Recent posts