본문 바로가기

분류 전체보기

(37)
[ZMR250] 7. 코드 최적화 지금까지 제어한 코드의 경우 loop()함수를 4ms 의 주기로 계산 및 제어하였다. 다음 목표인 플립을 구현하기 위해 조금 더 빠르고 높은 주기로 계산하기 위해 코드를 수정했다. 우선 드론에 전원을 넣으면 PWM 핀을 초기화하면서 최저 값을 넣어주지 않아 가끔식 ESC 세팅 모드로 진입하는 경우가 있었다. 그래서 초기화와 동시에 최저 PWM 제어를 추가하였다. 기존 double 데이터 타입의 rawVector 변수를 int16_t 의 정수형 타입으로 수정하여 더욱 빠른 계산을 할 수 있도록 수정하였다. 그리고 계산주기를 2.5ms 로 줄여 최대 250Hz -> 400Hz의 연산이 가능하도록 수정할 것이다. 플립을 구현하기 위해 -90도 ~ 90도의 인식 범위를 -180 ~ 180으로 360 인식이 가능..
[ZMR250] 6. PID 튜닝 및 비행 앞서 기체의 상태를 피드백하여 모터를 제어하는 PID 제어를 공부했다. 나아가 드론은 다양한 외란의 영향을 받기 때문에 2중 PID 구조를 가져야하는 등의 여러가지를 알아보았다. 이번 시간에는 PID를 튜닝하고 몇몇 코드를 수정하여 기체가 잘 비행할 수 있도록 수정할 것이다. 먼저 P.I.D제어는 실시간으로 기체의 현 상태를 피드백 제어하기 때문에 주기적인 제어가 필요하다. 우리는 DT를 피드백 제어값에 반영하지 않았기 때문에 DT를 고정시킬 수 있는 수식을 추가해야한다. 아두이노에 DT 값을 주어 추가적인 계산을하면 loop() 함수를 한번 실행하여 계산하는 시간이 매우 커지고, 최악의 경우 드론 추락의 원인으로 자리잡기도한다. 그렇기게 안정적인 DT 를 잡아주는 것이 좋다. 먼저 빠르고 간편하게 PI..
[ZMR250] 5. 기체 PID 제어하기 제작 중인 드론은 모터가 4개인 쿼드콥터로 두 개의 모터가 한쌍으로 서로 다른 회전 방향으로 반발력을 상쇄하여 기체를 안정적으로 상승시킬 수 있는 구조이다. 하지만 모든 모터를 같은 속도로 제어한다고 기체가 안정적으로 날 수 있는 것은 아니다. 기체의 현재 상태를 무시하고 모터를 작동하면 주변 환경으로부터 드론에 주는 영향을 피드백받아 제어할 수가 없기 때문에 많은 드론 제어시스템이 PID 제어를 사용한다. PID 제어는 주어진 목표와 현재 상태의 오차를 [ 비례 + 적분 + 미분 ] 계산으로 피드백하여 장치를 제어하는 이론이다. 제어 수식값은 위와 같이 나타나는데, 목표값과 현재의 값의 차이를 오차값 e(t)로 두고 각각 비례, 적분, 미분의 값을 모두 더하여 제어 값에 반영한다. PID 제어기는 위와..
[ZMR250] 4. MPU6050 센싱 + 변속기 제어하기 앞서 송수신기를 연결하고, 그 값을 읽어들이는 것까지 무선조종의 모든 것을 제작하였다. 이번에는 MPU6050 IMU의 값을 읽어들여 변속기를 제어하는 것까지 해볼 것이다. 수신기 코드에서 [ 새 탭 ]을 눌러 [ Sensor ]라는 이름의 탭을 추가해준다. 위 5개의 변수를 만들어준다. 순서대로 각도를 저장하는 변수, 각가속도를 저장하는 변수, 루프 주기를 저장하는 변수, 센서의 초기보정값을 저장하는 변수와 주기를 저장할 때 사용하는 시간 변수이다. 그리고 센서를 초기화하기 위해서 InitMPU() 라는 함수를 만들어 주었다. MPU6050의 레지스터 제어 및 데이터시트 분석에 관한 포스팅을 다음 포스팅을 참고하고 다시 오길 바란다. [MPU6050] 1. 데이터 시트를 통해 센서 값 확인하기 구글에 ..
[ZMR250] 3. 인터럽트 수신 및 송수신기 세팅, 바인딩 기체 프레임과 모든 부품의 준비는 끝났다. 이제는 송수신기를 연결하고, 제어기로 값을 읽어 기체를 제어하기만 하면 된다. 먼저 송신기와 수신기를 연결하여 서로가 통신이 되도록 하여야한다. 바인딩은 송신기와 수신기의 주파수를 동일하게하여 연결하는 작업을 말하는데, 그 작업은 간단하다. 조종기에는 왼쪽하단에 [ BIND KEY ] 가 있고, 수신기의 경우 바인드를 위한 쇼트핀을 함께 제공한다. 수신기의 [ B/VCC ] 포트에 쇼트핀을 연결하고 전원을 켠다. 이후 송신기의 [ BIND KEY ]를 누른 상태로 전원을 켜면 두 송수신기 사이에 연결이 성공적으로 된 것이다. 조종기에는 총 10개의 신호를 보낼 수 있는 부품들이 있는데, 조이스틱 4개, 토글 스위치 4개, 가변저항 2개이다. FS-IA6 수신기는..
[ZMR250] 2. 프레임과 부품 조립 및 제어기 제작 1편에서 주문한 부품들을 조립하고 제어기를 제작하여 연결할 것이다. 구매한 부품들을 잘 정리하여 조립시 수량에 문제가 없는지 잘 체크한다. 먼저 프레임을 조립한다. 프레임의 경우 앞뒤 구분이 따로 없기 때문에 임의로 정하여 제작하면된다. 그리고 프레임의 상단부에는 고무부싱과 짐벌 판을 조립한다. (이거 조립하기 되게 힘들다..) RS2205 모터를 프레임에 장착하고 중앙에 전원 분배 모듈을 고정한다. 모터의 경우 CW, CCW 방향에 맞춰 대각선으로 마주보는 모터가 동일한 회전방향을 가지도록 조립한다. 변속기를 프레임에 고정하고, 각 변속기의 전원케이블을 전원 모듈에 납땜한다. 항상 납땜 후에는 테스터기를 사용해서 합선이 일어난 곳은 없는지 확인하며 진행한다. (냉납 현상 역시 없어야 한다) 변속기와 모..