專案位置: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
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