arduino quadcopter

專案位置:https://github.com/mlwmlw/flyingCat

預計紀錄製作過程,先作為暫存區,先試過 multiwii,感測器畫面讀得到,只是沒有遙控以後就不知道要幹麼了,開啟土炮之路..。

零組件

電機:arduino uno
機架:FY450
電調(ESCs):新西達四軸 30A
馬達(Motors):高品質黑金剛 2212/15T 930KV 無刷馬達 * 4
感測器:GY80
通訊:藍牙 A09 HC-05
電池:拔拔的三顆 3.7v 鋰電池串聯

先練習分別使用每個零件,用 arduino 控制或讀取感測器的值,來檢查每個零件是否正常運作,馬達、GY80 的每個感測器。

陀螺儀(gyro)

可以讀到 x y z 三軸分別的角速度,理論上是要積分才能得到角度?

資料來源:http://www.csulb.edu/~hill/ee444/Labs/5%20Gyro/5%20Arduino%20IDE%20Gyro.pdf
以 x 軸為例,先取樣取得 offset 與 noise,再於 loop 以內取 rate 扣掉 offset 與 noise 以後就是角度。

int offset = 0;
int noise = 0;
int angle = 0;
int rate = 0;
int sampleNum = 200;
void setup() {
  for(int n = 0; n < sampleNum; n++){
    gyro.read();
    offset += (int) gyro.g.x;
  }
  offset /= sampleNum;
  int val = 0;
  for(int n = 0; n < sampleNum; n++){
    gyro.read();
    val = gyro.g.x - offset;
    if(val - offset > noise)
      noise = val - offset;
    else if(val - offset[i] < -noise[i])
      noise = -val - offset;
  }
  noise /= 100;
}
void loop() {
  gyro.read();
  int prev_rate = 0
  int rate;
  rate = (gyro.g.x - offset) / 100;
  if(rate >= noise || rate <= -noise)
    angle += ((double)(prev_rate + rate) * 10) / 2000;
  prev_rate = rate;
  if(angle >= 360)
    angle -= 360;
  else if(angle < 0)
    angle += 360;
}

IMU – GY80

https://github.com/ptrbrtz/razor-9dof-ahrs
razor 9dof 是一個 IMU(整合的感測器)的函式庫,他支援幾種 IMU 並且有多種平台的實作可以參考。

在 arduino 裡面他會讀出感測器的值從 Serial 吐出這種格式,讓 processing 可以用來畫圖。
#YPR=15.25,1.02,-5.77

https://github.com/vshymanskyy/GY80
這個專案則是用 razor 拿來改成支援 GY80 的數據讀出來的範例,猜測是只有改加速度器(Sensors.ino) 裡面 buff 的位置而已,格式會變成。
82.64;0.54;-6.00;29.90;1009.36;98.84

gy80


https://github.com/philtkp/GY80-arduino
另外一個範例也是讀 razor 原本的格式來畫更漂亮的圖,只是我試出來怪怪的。

紀錄問題:

  • 感測器怎麼接?:大都是三條線,一條接 5v 一條接地 一條選一個 pin 腳當信號輸入
  • gy80好多腳要接幾隻腳:一電源(VCC_IN)一接地(GND) 兩個信號 (SDA, SCL) 接到 A4 A5 就夠讀到所有感測器的值了
  • 電調怎麼接:三條粗的線隨便跟馬達三個腳對接,剩下兩個腳接電源,三條細線一樣 電 接地 信號
  • 怎麼讓馬達轉:送脈波訊號,或者 servo.h write 到 pin 腳
  • 機架怎麼裝:底板有一個很多洞的可以把電調焊上去 有正負兩個迴路,再把電源線焊上去 + – 兩個洞
  • 電池?:三顆3.7v 串連起來接到底板上,可以提供電調(馬達)電,也能供應給 arduino 電
  • 要怎麼整合陀螺儀與加速度器的角度值? http://www.geek-workshop.com/thread-1695-1-1.html

零散資源

機架、馬達、電調套裝組合
http://goods.ruten.com.tw/item/show?21205263215975
四軸飛行器基本架構
http://imakerxyz.com/content/%E5%9B%9B%E8%BB%B8%E9%A3%9B%E8%A1%8C%E5%99%A8%E5%9F%BA%E6%9C%AC%E6%9E%B6%E6%A7%8B/
http://sgeorgiev.com/blog/2014/02/25/quadcopter-with-multiwii-running-on-arduino-uno/
Quadcopter with MultiWii running on Arduino Uno
https://sites.google.com/site/diycopternote/home

pid
http://oaione.blogspot.tw/2014/02/multiwii-vi-pid.html
GY80
http://dutch-arduino-tinkering.blogspot.tw/2014/01/gy-80-bmp085-9-axis-magnetic.html
A Guide To using IMU (Accelerometer and Gyroscope Devices) in Embedded Applications.
http://www.starlino.com/imu_guide.html

HW30A 測試 code: https://www.sendspace.com/file/jrtfu0

電變行程校正(啟動先滿載過一秒在 0v)

HW 30a datasheet
http://www.hobbywing.com/uploadfiles/sx/file/manual/HW-01-V4.pdf

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *