아두이노 드론과 BLDC, 시소테스트 :: 찬찬히 로봇 메이커
반응형

PID제어를 알았으니 본격적으로 시소테스트를 해보자.

시소테스트란 드론이 외력을 받았을 때, 혹은 가만히 있을 때에 드론이 평행을 유지할 수 있는지를 테스트 하는 것으로 보통 쿼드콥터를 한다면, 마주보고있는 두 개의 프로펠러는 가만히 있고, 나머지 두 개의 프로펠러만을 이용해서 하나의 축을 보정하는 것을 말한다. 하나의 축을 완벽히 맞추었으면 나머지 축도 맞춰보고 그 후엔 실제로 날려보면서 z축을 기준으로 위, 아래로 가만히 있는지를 확인한다. 이를 호버링이라고 한다. 이 순서대로 하면 드론을 제어할 수 있다.

일단 하드웨어는 프레임에 BLDC 4개와 변속기 4개를 고정시켰고, 하단부에는 전압분배기보드를 고정, 상단부에 아두이노와 블루투스, IMU를 만능 기판에 연결시켰다.

그 후에 BLDC를 먼저 제어를 해봐야 하는데, BLDC는 변압기에 켈리브레이션을

통해 최대 전압과 최소 전압을 PWM으로 넣으며 설정을 하는 것이다.

이렇게 해야 변속기가 최대치와 최소치를 알고 사이에 값들로 모터를 굴릴 수 있다. 켈리브레이션을 하는 정확한 방법은 유튜브에 많은 사람들이 올려 놓아서 그것들을 참고해서 켈리브레이션을 하였다. 변속기의 회사마다 켈리브레이션을 하는 방법들이 다르기 때문에 주의하여 해야한다. 특히 삐리릭거리는 소리로 켈리브레이션이 되었는지 아는데, 회사마다 다르다. 그리고 주의해야할 점은, 변속기에 들어가는 pwm의 주기(주파수)가 중요하다는 점이다. 이 주파수가 맞지 않는 경우 응답을 하지 않을 수도 있다.

우리의 경우 조종기가 따로 없었기 때문에 직접 소스로 pwm의 최대값과 최소값을 짜서, 노트북과 블루투스 연결을 해서, 값을 넘겨주어서 최대값, 최소값을 변속기에 알려주었다.

BLDC의 켈리브레이션을 맞췄으면, 프로펠러를 끼지 않고 모터를 굴려보며 몇 암페어정도를 먹는지를 확인해 보는 것이 좋다. 물론 처음에 모터와 배터리, 변속기를 사기 전에 계산을 해보았겠지만 실제로도 한번 해보는 것이 좋다. 그리고 기본적으로 켈리브레이션을 하면 같은 pwm을 주었을 때, 모터 4개 모두 같은 속도로 도는 것이 맞긴 하다. 하지만 적은 pwm값부터 주게 될텐데 약간의 오차가 있어도 크게 상관은 없다. 모터 4개가 비슷하게 굴러가기만 하면 된다.

이렇게 되면 하드웨어적으로는 시소테스트를 할 준비가 완료가 된 것이다. 이제 IMU를 테스트를 해서 3축의 각도값이 제대로 나오는지를 테스트하면 된다. 우리는 MPU6050을 사용을 했는데, 아두이노와 MPU6050을 연동해서 사용한는 법은 인터넷상에 많은 라이브러리들과 소스들이 있다. 무슨 오일러 필터를 사용한다든가 칼만 필터를 사용한다든가하는 소스들이 즐비한데, 그 중에서 각도값이 제일 잘 나온다고 생각하는 소스를 가지고 실험을 하면 된다. 중요한 것은 얼추 각도값이 나온다가 아니라 정밀하게 각도값이 나와야 한다는 것이다. 90도로 꺽이면 그만큼 값이 나와야 하고, 수평에서 가만히 있을 때에는 각도값의 변화가 그만큼 없어야 한다. 45도로 꺽었을 때에는 90도의 반만큼 각도값이 추출이 되는지를 확인해야 한다. 만약 이렇게 선형적으로 각도값이 나오지 않는다면 그만큼 드론을 제어하기 힘들어진다.

각도값까지 받아 졌다면 각도에 대한 pid제어식을 세우고, 모터 출력에 대한 소스를 작성한 뒤에 시소테스트를 진행하면 된다.

 

 

 

처음에는 하드웨어 자체가 살짝 삐둘어져있다고 생각을 하여 모터 4개를 굴리며 동영상처럼 축을 잡고 시소테스트를 했었는데 굳이 그럴 필요가 없다는 것을 깨닫고 나중에는 그냥 모터 두 개씩 굴리며 테스트를 하였다. 그래서 IMU도 45도 틀어서 달게 되었다. IMU의 위치는 정 가운데가 좋고, 외각쪽이 좋다. 그래야 미세한 기울기도 알기 쉽게 된다.

그리고 드론을 개발하는 많은 사람들이 IMU에 진동을 흡수할 수 있는 진동방지 댐퍼를 많이들 단다. 아무래도 모터의 진동이 심하다보니 값을 정밀하게 받고 싶어서 댐퍼를 달게 된다.

 

댐퍼

하지만 우리는 돈이 없다. 그래서 IMU밑에 스펀지를 하나 두어서 진동이 흘러 나가게 만들고자 하였다. 실제로 효과가 있었는지는 잘 모르겠다.

그리고 시소테스트를 할 때도 중요한 점이 있는데 아무 출력에서 드론의 시소테스트를 하기 보다는 드론이 날기 직전의 파워를 알아서 그 파워에서 시소테스트를 해보는 것이 좋다. 드론의 4방향을 지면에 묶어놓고 파워를 살살 올려가면서 날라가기 직전의 파워를 보는 것이다.

이렇게 시소테스트를 해보았다. 위의 동영상은 P값이 좀 커서 계속적으로 좌우로 움직이고 있는, 다시말해 오버슈트가 난 경우이다. 저번 포스팅에도 말했지만, 보통 P제어만 완료를 해도 거의 가만히 있는 상태가 되어야 한다. 그리고 I제어까지 하면 위에처럼 툭툭 쳐도 바로 반응해서 돌아오게 되는 것이다. 사실 시소테스트만 완료하면 날리면서 보정하는 것 밖에 없기 때문에 전부라고도 말할 수 있다.

반응형

+ Recent posts