http://scipia.co.kr/cms/blog/227
이 키트를 조립하기 전, 공부를 하려 합니다.
(해당 포스팅의 모든 출처는 싸이피아 임을 명시합니다.)
무엇을 만들려는 것인가?
두 바퀴로 균형을 유지하여 넘어지지 않는 로봇
즉, "Self-Balacing Robot" 또는 밸런싱 로봇이라 합니다.
왜 하는 것인가?
최소한의 부품으로 밸런싱 로봇을 구현해보고 원리를 이해하기 위함입니다.
다음 STEP은?
완전히 넘어지지 않는 좀더 완벽한 밸런싱 로봇을 구현하고자 합니다.
그러기 위해서는 DC모터, 배터리, 고난이도의 프로그래밍이 필요하다고 합니다.
필요한 알고리즘
두 바퀴로 균형을 잡기 위해서는 지속적으로 로봇의 기울어짐 정도를 알아내고 이를 토대로 두 개의 모터와 바퀴로 힘을 전달함으로서 로봇을 바로 세우게 하는 알고리즘이 필요합니다.
"Inverted Pendulum Algorithm" 을 공부하는 포스팅도 추후에 작성하겠습니다.
기본 동작원리
로봇의 기울어진 정도를 알아내기 -> MPU6050 자이로 가속도 센서 사용
로봇이 평행을 유지하게 하는 것 -> PID 제어 알고리즘
로봇의 기울어짐 정도 알아냄 : MPU6050 자이로+가속도 센서 사용
로봇의 평행 유지 : PID 제어 알고리즘을 사용
두 바퀴로 균형 유지 : 지속적인 로봇의 기울어짐 정도를 알아내 -> 두 개의 모터와 바퀴로 힘을 전달 -> "로봇을 바로 세우게" 하는 알고리즘이 필요함
MPU6050 : I2C 인터페이스를 통해 아두이노 우노 보드와 통신
아두이노의 SPI 통신핀 A4와 A5를 사용
바퀴 제어 : L298N 모터드라이버 보드의 1N1~IN4와 아두이노의 PWM핀인 D6, D9, D10, D11를 각각 연결
모터 속도 제어 :PWM 신호의 듀티비 사용

로봇의 기울기 확인 (MPU6050 센서) -> 기울기에 따른 회전 및 이동 + 바퀴 회전 속도 제어
로봇이 중앙에서 벗어난 정도에 따라 바퀴의 회전속도가 달라지며 중앙에서 많이 벗어날수록 속도가 빨라짐.
참고
https://m.blog.naver.com/scw0531/221276680031
https://playground.arduino.cc/Main/MPU-6050/
https://m.blog.naver.com/emperonics/221834467735