블로그 이미지
래머
오늘도 열심히 개발하는 개발자입니다.

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

2015. 12. 19. 21:58 아두이노



위사진에 보이는것처럼 센서의 y축이 차체의 바퀴와 나란히 배치되어 있습니다.

센서의 Y각도를 추출해서 밸런싱에 이용하고 있습니다.

아래는 올리신 사진인데, 사진이 흐려 자세히 보이지는 않지만 센서의 x축이 바퀴축과 나란한것 같습니다.




위사진에 보면 mpu6050의 int핀에 선이 연결되어 있는것 같습니다. 해당 핀에 LOW, HIGH신호를 가하는것에 따라서 mpu6050 i2c통신 주소가 달라집니다.

일단 소스코드상에서는 해당 핀에 아무것도 연결하지 않은 상태의 주소로 설정되어 있으니, 해당 핀에 연결된 선은 빼주시기 바랍니다.


그리고 소스코드상에서는y축의 각도 변화를 추출하는데, 위의 차체에서는 차체가 기울더라도 x축을 중심으로 기울기에 변화가 있기 때문에, 올바르지 않게 작동하게 될겁니다.


두가지 방법이 있는데, 한가지는 첫번째사진과 같이 축을 일치 시켜주는 방법이고, 다른 방법은 소스코드상에서

Y축 기울기를 측정하는 부분을 x축 기울기 측정으로 바꾸는 겁니다. 두번째가 더간단할거 같네요.

기울기를 측정하는 부분은 소스코드상에서 아래부분과 같습니다. 

CSelfBlancer.h 파일의 내부에 보시면 Update() 함수가 있습니다.

붉은원으로 표시해놓은 부분에 보시면 원래는 저부분이

m_Gyro.GetKalAngleY() 라고 되어 있습니다. 이것을 아래 그림에 나온것처럼 m_Gyro.GetKalAngleX()라고 바꿔주시면됩니다.



위와같이 수정하시고, 업로드 하신다음에 정상적이라면 바퀴축을 기준으로 차체를 기울일경우 기울인방향으로 모터가 회전해야 합니다.

만일 기울인 반대 방향으로 모터가 회전한다면, 정방향/역방향이 바뀐경우이니

그때는 단순하게 모터드라이버에 연결된 선을 서로 바꿔서 연결하거나 아니면 아래와 같이 소스코드 부분을 수정하시면됩니다.

역시 같은 소스인 CSelfBlancer.h 파일을 열어서

아래 사진에 표시 해놓은 부분을 수정하시면 되는데

g_Motor.Backward 부분과 g_Motor.Forward 부분을 서로 바꿔주시면 됩니다.


그러니까 아래 그림의 UpdateLeft함수와 UpdateRight함수 내부에 보시면 


g_Motor.Backward 부분과 g_Motor.Forward가 있는데

g_Motor.Backward(true, (uint8_t)(-fControl)); 를 g_Motor.Forward(true, (uint8_t)(-fControl)); 로바꾸고

g_Motor.Forward(true, (uint8_t)fControl); 는 g_Motor.Backward(true, (uint8_t)fControl); 처럼


Backward와 Forward를 서로 바꾸면 됩니다.







'아두이노' 카테고리의 다른 글

nodemcu v3 핀맵  (0) 2017.11.12
밸런싱로봇 종합사항  (3) 2015.12.21
MPU6050 자이로 가속도 센서  (0) 2015.07.25
DHT11 온습도 센서  (0) 2015.05.25
아두이노 visual studio 연동  (0) 2015.05.16
posted by 래머