본문 바로가기

Lab./Quadcopter

1축 구조물 1차 테스트

테스트 라고 하기도 조금 민망한 1차 테스트를 마쳤다.



쿼드콥터 1축 구조물

제작은 앵글과 합판으로 만듬 합판을 나사로 조여서 그런지 들었다 놨다 할때마다 축이 틀어지는 현상이 조금씩 일어나긴 하지.....  나름 튼튼함!!!!


위의 사진의 모습은 예전사진이고 지금은 축 위에 myARS-USB를 글루건으로 고정시켰음.....

그리고 모터드라이버에서 나오는 선들도 중간 몸통에 글루건으로 고정시키고 연장선을 만들어놨음...
(나름 깔끔히 한다고 전선으로 4줄땋기를 인터넷에서 찾아서 땋아놨더니 깔끔하니 좋긴 하네~ㅋㅋㅋ)

사진은 다음에 찍으면 올려야겠네.....


일단 첫 모터 테스트는  가변저항 2개를 이용하여 했다.

왼쪽 가변저항은 추력을....  오른쪽 가변저항은 컨트롤을 하는 식으로 해서 수동조작시 얼마나 조작이 되나 획인해보려는 의도였다.

그러나.....

조작은 생각보다 힘들었다.

일단 일정 추력을 1/3 이상 올려야 하는데....  책상에서 하기는 너무 위험해보여서....
그리고 가변저항으로 컨트롤 한다고해도 생각보다 그렇게 컨트롤이 쉽지 않았다....



다음은 센서를 이용한 컨트롤이다.

일단은 알고리즘을 구성해놓은 것이 아니기때문에

추력 + 가중치(센서값)를 통한 제어를 해보았다.

결과는... 생각보다 비관적이였으나 긍정적인 면도 있었다.

센서의 기울기 값을 읽어 적당한 값을 곱하여 추력에 더하는 방법을 사용하였다.

왼쪽은 추력 -가중치  오른쪽은 추력 + 가중치   이런식으로 코드를 구성하였다.

결과는...

이거는 컨트롤이 된다고 볼수 없을정도로 엉망으로 나왔다.

일단 특정 추력에서는 그래도 어느정도 균형을 맞추는 것을 볼 수 있었다.

그러나 그 균형이 깨지기 시작하면 가중치 값이 오른쪽으로 또 급히 왼쪽으로 바로바로 움직이다보니

진동하면서 발진하는 형태를 보였다.


그래서 가중치의 영향을 줄이기 위해 한쪽에만 센서 가중치를 부여하였다.

그랬더니 앞의 실험보다는 좀더 안정적인 모습을 보였으나  추력이 커질경우 가중치가 상대적으로 작아져
가중치의 의미가 없어졌다.

그래도 특정 추력에서 어느정도 안정적인 모습을 보였다는 것이다.

그럼 이번 실험 결과를 간단히 정리하면


문제점.
1. 추력이 변할경우 가중치도 변해야 한다...  
    즉 추력에 비례해서 값이 변해야 한다는것이다.
    지금처럼 추력에 기울기 값을 더할경우 추력이 커질경우 가중치의 의미가 너무 작아진다. 

2. 저속에서의 실험이 의미가 있을까?  
   저속보다는 어느정도 이상의 추력시 기체가 뜨기 시작한다....
   그렇다면 저속에서의 실험이 의미가 있을까?....  다음실험에서는 추력을 높여보자!!!

3. 센서값처리문제 
  피드백 받은 부분중에 실제 기울기와 센서값의 딜레이.....
  MCU 에서 보낸 신호와 보터드라이버, 모터와의 반응속도차이... 등으로 인한 오차가 생길수 있다는 것이다.....
  센서특성, 모터드라이버 특성, 모터특성도 고려해야 한다는것이다.

4. 모터제어부 코딩문제
  모터제어부에서 코딩문제가 발생했다.  PWM 신호를 포트를 이용하여 제어하는데 생각보다 시간오차가 크다는것이다.
  그리고 for 문에 넣어논 포트별 제어에 딜레이가 생겨 신호가 1번 모터가 더 길게나가 추력이 더 크게 나오는듯하다.


해결방안....
1. 추력에 비례한 알고리즘 구현.....

2. 추력을 반정도로 높여서 실험......및 다양한 추력에서 실험....  & 모터RPM을 재는 방법이 없을까?

3. 내 예상으로는 센서특성이나 모터드라이버, 모터 특성보다는 센서값이 너무 빨리 적용된다는데 있는거 같다....
   (가중치의 비중도 크고)  그렇다면 적당 시간에 걸쳐 샘플링한 후 값을 평균을 내서 적용하는건 어떨까?
   그러면 반응속도가 좀 줄고 안정성이 커지지 않을까?....  특정값 이하는 무시한다던가....

4. 타이머를 이용하여 제어한다....
   (코드 아이디어를 짜야겠네....)

+ 차후 추진계획
5. 2축 구조물을 빨리 만들어야할듯하다.....  이런저런 아이디어도 좋지만 일단 가능한 범위 내에서 제작하여 테스트해보자!!!

6. MCU를 이용한 제어가 아니라  LabView를 이용한 제어방법이 없을까?....
    그렇다면 시스템 변경및 테스트 및 모니터링을 얼른얼른 할수 있지 않을까? 란 생각 때문에.....



우선사항.
1. 타이머를 이용한 코드
2. 블루투스를 이용한 원거리 제어....
3. 추력에 비례한 알고리즘 및 다양한 추력에서의 실험



프로펠러가 생각보다 위협적으로 회전한다.....
프로펠러에 맞으면.....  적어도 피본다......

안전에 유의하자!!!!