', { cookie_domain: 'auto', cookie_flags: 'max-age=0;domain=.tistory.com', cookie_expires: 7 * 24 * 60 * 60 // 7 days, in seconds }); 전기자전거 간단버전 테스트 :: MakerLee's Workspace
728x90

다들 더위때문에 고생하시겠네요.


더위에 약한 체질이라 정말 올 여름은 지옥같았습니다. 


시원한 곳에서도 머리가 멍해 뭘 하기가 힘들더군요. 


전기자전거고 뭐고 할 여력이 없었습니다.


더위가 조금 가시는 듯 해 작업을 해 봤는데, 여전히 덥군요.


기상청은 양치기소년도 저리가라 할 정도로 


번복에 번복을 반복해 8월 말까지 더운게 아닐까 걱정이 될 정도네요.





 




OLED 버전은 천천히 진행할 생각이라 일단 구동계가 완성된 


아두이노 나노에 간단히 프로그래밍하고 커넥터들을 달았습니다. 


기본 서보모터 커넥터는 연결이 간편하지만 


기분상 불안한 면이 있어 커넥터를 교체했습니다. 


ESC에서 5V 출력이 나오기 때문에 배선이 편했습니다




스케치는 다음과 같습니다. 


// 스로틀과 서보를 연계시키고 

// 스로틀의 이동폭을 제한하는 스케치


#include <Servo.h>


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

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

int servopos;    // 서보 위치를 저장할 변수

int motorspeed;  // 모터 속도를 저장할 변수

int throttlePin = A0; // 쓰로틀핀을 A0 로 선언

int throttleValue;  // 쓰로틀의 수치



void setup() 

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

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

 

 

void loop() 

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

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

  bldcmotorcontrol.write(throttleValue);

  if(throttleValue>50){

  throttleValue = 90;

  }

  servocontrol.write(throttleValue);

  delay(15);

  } 


throttleValue=map(throttleValue,0,1023,0,179); 명령어로 


스로틀에 따라 서보의 PWM 신호를 매핑했기 때문에 


ESC의 모터 출력은 스로틀을 따라갑니다만 서보모터는 일정 각도 이상 올라가면 안됩니다. 


50보다 큰 값이 들어오면 90으로 고정하도록 했습니다. 


마지막에 딜레이는 지우는걸 잊었군요







일단 원하던 대로 작동하는군요.


본체는 수치를 약간 수정했기 때문에 출력을 다시 해야 합니다.


좀 시원해지면 한번에 몰아쳐 끝내려고 했는데 여전히 더워서 맥을 못추겠네요




728x90

+ Recent posts