Quadrotor20132013. 12. 13. 19:15

쿼드의 핵심인 센서와 보드에 대해 다뤄보겠습니다.

 

일반적으로 RC하시는분들은 제어보드를 FC보드(Flight Control Board)라고 하더라구요. 갑자기 생각난건데 처음 쿼드만드시는 분들은 용어가 생소해서 고생하실 겁니다.. 프롭이니 리포배터리니 통돌이모터 프롭밸런서 등등 이런 단어를 알아야 검색도 하고 공부도 하는데 모르면 난감해요 ㅠ


제어보드의 종류는 많습니다. 아두이노 같이 빵판처럼 온갖 프로그램을 올릴 수 있는 보드에도 제어 소스만 올리면 제어가 가능하니까요. 쿼드콥터 제조 회사나 커뮤니티에서 만들어 지는 것 같습니다. AeroQuad, MultiWii 등 오픈되어있는 소스도 있구요, 이 오픈소스들을 그대로 보드에 올려서 사용하려면 해당 소스에 맞는 하드웨어에 올려야합니다. (센서나 하드웨어사양이 충족되어야 한단 소리입니다)


제어보드의 사양은.. 당연한 소리겠지만 빠르면 빠를수록 좋습니다. 제어 알고리즘을 돌리는데 1초가 걸린다면 전혀 쓸모없는게 되어버리니까요. 

뜨기 위한 보드의 제어 주기는 최소 5ms는 되어야 뜰까말까입니다. 10ms로 하면 시소제어는 되는데 전혀 뜨질 않고, 5ms로 하면 불안정하게 뜨고, 3ms로 하니까 나름 안정적으로 뜨는것 같습니다. 제가 직접 겪은 이야기입니다 ㅠ 이 글을 읽는 여러분은 이런 고생 겪지 않길 바랍니다.


이 제어 주기라는 것은 센서와 깊은 연관이 있습니다. 보드가 아무리 빨라봤자 센서의 최대 샘플링 간격이 1초라면 보드 제어주기는 1초로 맞춰질수밖에 없기 때문입니다. 센서 구매시 잘 선택하시길 바랍니다. 제 경우는 최대 10ms의 속도를 가지는 50만원짜리 센서를 가지고 제어를 해 왔는데.. 지금 보면 되지도 않는 하드웨어 사양을 가지고 엄청 고생한거네요. 50만원짜리 고급 센서보다 9천원짜리 MPU6050이 더 빠른데 말이죠. 



위 표는 MPU6050의 사양입니다. 밑의 Update rate를 보시면 자이로는 최대 0.125ms, 가속도는 최대 1ms 이네요. 왜 범위로 되어있냐면~ MPU6050센서 내부의 레지스터를 조작해서 LPF를 쓸 수 있게 되어있는데, 그 LPF설정에 따라 유동적이기 때문이라는 생각이 드네요.

아무튼, 센서마다 이런 사양이 있으니까 꼭 참고해서 결정하시기 바랍니다.


MicrocontrollerATmega2560
Operating Voltage5V
Input Voltage (recommended)7-12V
Input Voltage (limits)6-20V
Digital I/O Pins54 (of which 15 provide PWM output)
Analog Input Pins16
DC Current per I/O Pin40 mA
DC Current for 3.3V Pin50 mA
Flash Memory256 KB of which 8 KB used by bootloader   
SRAM8 KB
EEPROM4 KB
Clock Speed16 MHz

위 표는 제어보드인 아두이노 Mega2560의 사양입니다. 메인 클럭 주파수가 16MHz인데, 이걸 가지고 제어 루프의 주기를 계산하기에는 좀 막연하네요. 빠르면 빠를수록 좋긴 한데 쓸데없이 빠른건 굳이 필요 없을테니까 잘 고르시기 바랍니다. 


아두이노의 16MHz는 실시간 영상처리하기에는 턱없이 부족한 주파수인데요, 700MHz이상가는 라즈베리파이를 사용하면 굳이 저처럼 휴대폰을 달지 않고도 영상처리를 할 수 있을거 같다는 생각을 요새 하고 있는 중입니다. 근데 라즈베리파이는 불안정하다는 이야기가 들리기도 하네요.


센서와 보드의 통신 환경도 결정할때 고려해야할 요소 중에 하나인데요, 센서 표를 보시면 인터페이스가 I2C방식이라도 되어있습니다. 저는 운좋게 아두이노 보드에서 I2C전용 핀과 통신용 라이브러리를 제공해서 쉽게 통신할 수 있었는데요. 만약 다른방식이고 보드가 그 방식을 지원하지 않는다면 아날로그 신호를 분석해서 통신을 구현해야할 수도 있습니다. 저는 그렇게까지 하고싶진 않았는데 다행히 보드가 지원해줬네요.. 참고로 아두이노는 I2C통신과 시리얼통신을 지원합니다.


I2C방식(TWI통신이라고도 함)에 대한 자세한 내용은 제 블로그(http://hs36.tistory.com/29)를 참고하시구요 


mpu6050와 통신하는 라이브러리와 예제도 첨부하겠습니다.

MPU6050.zip

 

그밖에 각종 I2C를 사용하는 장치들과 아두이노간 통신 라이브러리는

https://github.com/jrowberg/i2cdevlib/tree/master/Arduino

참고하시면 되겠습니다~ 














Posted by 너를위한노래