[아두이노 자작 쿼드콥터] 변속기 장착, 배터리 성능 테스트

Posted by Doony
2015. 8. 27. 19:17 아두이노 드론 프로젝트

이틀 전에 모여 모터의 회전을 확인한 후, 오늘도 만나 몇가지 실험을 해봤습니다.


우선 변속기의 상태가 너무 지저분하였는데..



후우.. 전선이 너무 대충 널부려져있는 모습입니다. 이틀 전에야 bldc 모터의 회전 자체만을 확인하는 과정이었기 때문에 이럴수밖에요.


그래서 오늘은, 좀 정리를 해보았습니다! 우선 모든 선의 중심이 되는 변속기의 자리를 잡은 후 선정리를 하였는데요.

인터넷에 찾아보니깐 다들 뼈대를 여러번 감싸면서 선을 깔끔하게 두시더라고요. 그래서 저희도 좀 따라했는데..



일단 변속기를 모터에서 모두 분리합니다. 저게 은근히 뻑뻑해서 빼는데도 약간 힘이 드네요!!




변속기 선을 가지런히 정리한 후, 프레임 안으로 깔끔하게 집어넣은 후, 다시 나사를 조입니다. 그런데 프레임이 저렴한 것이라 그런지, 저게 정말 뻑뻑하네요. 육각 렌치로 해야하는데.. 크기도 작고 마모가 발생해서 쉽게 조여지지 않더군요.

아무튼 일단 고정 자체가 목적이었으므로 계속 진행하도록 합니다.



볼트너트를 이용해서 고정을 해볼까도 했는데, 케이블 타이로도 충분히 강력하게 고정이 될 것 같아 이로 해결했습니다.

양쪽에서 두번 크로스로 잡아주니, 아주 강력하게 지탱이 되네요!! 깔끔하게 장착된 모습에 기분이 좋습니다 후후




장착 후의 모습..

밑에 상자는 저희가 bldc 출력 테스트를 위해 만들어본 임시 결과물입니다. 

이전 포스팅에서 설명했던것처럼, 모터의 출력은 PWM 신호를 통해 결정하는데요. 5%~10% 사이의 duty cycle을 통해 출력 범위가 제한되어 있기 때문에 아두이노로 이를 설정하는 코드를 짜보았습니다.


한번 보실까요?





int r=0;

void setup() {

  // put your setup code here, to run once:

pinMode(6, OUTPUT); //출력은 디지털 핀 6번을 통해..

digitalWrite(6, LOW); //초기 값은 LOW로 쏴줍니다.

Serial.begin(9600); //시리얼 통신을 시작합니다.

}


void serialEvent() 

{

  while(Serial.available()){ //시리얼 통신을 하는 동안

    r=Serial.parseInt(); // r 이란 변수에 입력값을 '정수형'으로 저장합니다. r값이 곧 출력값이 될거에요.

  }    

}



void loop() {

  // put your main code here, to run repeatedly:


  

  Serial.println(r); //모니터링을 위해 현재 출력값을 출력

  

  digitalWrite(6, HIGH); // 6번핀에 HIGH

  delayMicroseconds(r); // 입력한 r 마이크로초 만큼 HIGH가 입력됨

  digitalWrite(6, LOW); // 그 후 LOW를 쏴줌

  delayMicroseconds(20000-r); // 최대 출력치였던 20000(10%)에서 입력값인 r을 빼준 시간만큼 딜레이.


}





주석을 달아보긴 했는데.. 어떤 의미인지 아시겠나요?

원래 모터 정지 = 1ms/20ms이고, 모터 최대 속력 = 2ms/20ms 였습니다. 각각 5%와 10%인 셈이지요.

20ms는 마이크로초로 하면 20000초가 됩니다. 그래서 위에 20000이란 수치가 나온 것이구요.


제가 r값으로 1000을 입력하면 모터는 정지해있을 거고, 2000을 입력하면 최고속으로 돌겠죠?

이를 실험해본 것입니다. 1000~2000 사이값 입력을 통해 모터 출력 정도를 확인해보려고요.




위 화면은 제가 r 값으로 2000을 입력했을 때네요. 모터 사진은 안찍었지만, 이 때 모터는 최고속력으로 돌고 있습니다.



이렇게 1000을 입력하면, 정지하게 되는 것이죠.

이 테스트를 해본 목적은, 어느 정도 입력치로부터 모터가 회전하는지, 얼마나 큰 추력을 가지는지를 확인해보고자 했기 때문입니다.

결과적으로 수치는 1160~70 정도까지는 dead zone에 머물러있었습니다. dead zone이란, 모터에 걸리는 전압이 너무 작아서 모터 회전에 필요한 힘이 부족한 것인데요. 따라서 이보다 더 큰 수치를 입력하게 되면 모터가 회전하는 것을 볼 수 있었습니다.


기록해놓진 않았지만, 1400~1500정도부터 (2개 프로펠러) 동체가 뜨기 시작했어요. 2000은 말할 것도 없이 최고속도를 잘 보여주었습니다.




이제 해야할 일은 뭘까요?

저희가 위에서 한 테스트는, 4개의 모터에 모두 동일한 신호가 들어간 것입니다. 그러나 실제 PID 제어를 위해서는 당연히 4개 모터 출력을 각각 조절할 수 있어야하는데요. 그 경우에는 변속기에 딸린 throttle hub를 사용하는 것이 아니라, 변속기에서 내보내는 4개의 S 핀들을 각각 아두이노로 꼽으면 되겠네요! 

가속도, 자이로 센서 등의 값을 입력받는 것을 좀 실험해보면 그 결과값들을 토대로 pid 제어를 사용할 수 있을 것 같습니다.




자.. 변속기 테스트를 마친 우리는 .. 생각보다 모임이 너무 빨리 끝나는게 아닌가 싶어 한가지 더 해보았는데요.

바로 배터리 성능테스트입니다.


LiPo, 즉 리튬폴리머 배터리는 (11.1V / 3셀 기준으로) 9V 이하로 떨어지게 되면, 즉 각 셀당 3V 이하로 떨어지게 되면 충전이 안된다고 하네요. 그 이하로 떨어지면 배터리가 사망한다고..

(물론 방법은 있지만, 약간 위험가능성이 있어보입니다. 안전하게 하기 위해선 9V 이상으로는 늘 유지를 해주어야겠네요)


그래서 어느정도 비행시간이 지나면 전압이 떨어지는 지를 확인해볼 필요가 있었습니다.




배터리 테스트를 위한 장비입니다.

어떻게 하느냐? 방법은 간단합니다.


1. 배터리 충전기를 준비합니다. 저희가 사용한 hitec ad/dc charger는 충전 혹은 방전량을 실시간으로 체크하는 기능이 있어서 이를 사용하면서 배터리 전압을 측정할 수 있었습니다.


2. bldc모터를 최고속도로 돌립니다. 위에서 테스트했던 대로 그대로 돌리는 것입니다.


즉, 모터를 최고속으로 돌리는 건데, 거기다 배터리 잔량만 측정하는 셈이지요.




시작 하기 전 배터리 상태입니다. 3 셀 리튬폴리머이므로, 각 셀의 전압치를 볼 수 있었습니다. 

3개를 더하면 총 전압이 나오겠죠?



이제 모터를 돌리기 시작합니다. 물론 프로펠러는 장착하지 않았기 때문에, 이번 측정에서 나오는 시간은 큰 의미는 없을 수 있지만.. 심심했기에..

그래도 실험해보면 어느정도 추측은 가능하지 않겠나요? 이 상태로 30분을 돌리면, 프로펠러와 기타 장비들까지 합치면 뭐 한 15분은 돌겠구나~~ 뭐 이런 셈이죠.



이게 10분 경과 후 사진입니다. 생각보다 많이 안줄더라구요. 3개의 배터리가 똑같이 닳긴하지만, 어느정도 차이를 보이는 것을 확인할 수 있었습니다.


아무튼 모터를 계속 돌렸습니다. 물론 모터 돌리면서 변속기 상태도 계속 체크를 해줘야 합니다! 너무 뜨거워지진 않는지..

다행히 저희 변속기는 그냥 열이 조금 느껴지는 정도? 그래서 계속 진행했습니다.



20분 경과 후 상태입니다. 이 상태로라면, 9V까지 사용했을 경우 1시간 혹은 그 이상 사용할 수 있다는 결론이 나오는데요. 실제로 쿼드콥터를 완성시키고 나면 무게도 무거워지니, 이보다는 훨씬 비행시간이 짧을 듯 하네요.


아무튼 재미있는 테스트였습니다.


이제 전반적인 장비 사용법들에 대해 충분히 익힌 것 같으니, 가속도와 자이로센서 값에 대해 연구해보아야겠네요.

칼만 필터니, 상보 필터니 무슨 얘기들이 나오는데 모두 어디서 들어보기만 했지, 생소한 개념들입니다.

연구해보는 맛이 쏠쏠하네요! 대한민국 공대생 화이팅입니다.