顯示具有 無人機 標籤的文章。 顯示所有文章
顯示具有 無人機 標籤的文章。 顯示所有文章

2022年3月26日 星期六

[Sensor]MPU92/65

MPU92/65是很久以前買的感測器

基本上有加速度計、陀螺儀、電子羅盤、溫度計

以下是該電子商城的介紹

https://www.factoryforward.com/product/gy-87-mpu-9265-3-axis-9-dof-attitude-gyro-magnetometer-accelerator-sensor-module/

This is GY-87 MPU-9265 3-axis 9-DOF Attitude Gyro Magnetometer Accelerator Sensor Module. GY-87 MPU-9250 9 axis attitude gyro is a 9 degree of freedom (DOF) device which incorporates an MPU6500 accelerometer and gyro chip, and HMC5883L digital compass.

要注意加速度計跟陀螺儀軸向相同,但是電子羅盤則不是,剛好顛倒

電子羅盤的X等於加速度計及陀螺儀的Y



2017年3月30日 星期四

[無人機]MPU-9255姿態計算




mega的I2c接腳位置不同
https://www.arduino.cc/en/Reference/Wire

磁力計
http://wukcsoft.blogspot.tw/2014/06/read-gy-80.html

校正方式
http://gogoprivateryan.blogspot.tw/2014/07/mpu-6050-google.html

2016年12月12日 星期一

[Ardunio]MPU9250


手邊的MPU9255是九加一軸感測器
基本上就是MPU9250加上溫度,
MPU9250是三軸加速度計加上三軸陀螺儀加上三軸羅盤
挺威的,

今天測試拿掉範例的中斷,直接存取Row data
看起來應該正常,但因為時間趕,得多測幾次看看有沒有bug。

MPU9250規格書
https://www.invensense.com/products/motion-tracking/9-axis/mpu-9250/


2016年11月30日 星期三

[無人機]姿態擷取問題



如官網上說的,擷取raw值很容易,剩下的很麻煩,
其實,歸功於許多開源的前輩,在ardunio上已經很容易取得raw值了,

至於如何估算姿態?
用MPU6050有個好處,裡面的DMP模組已經可以提供pitch,row,yaw角度了,
如果單純只做角度估測,DMP就夠用。

But....
四軸的控制,我們還有許多工作得處理,像是再加上其他的感測器如超音波,
就會造成時序的衝突,導致DMP或者超音波其中一個不work,

所以,拿掉DMP吧,如果你未來的內容不只是角度估測而已的話。

好家在,之前碩論做過,不過之前只用卡曼估算Pitch、Roll兩軸,很快就可以解決,
但是如果想加上Yaw軸,網路上多用四元數來解決,下面就紀錄一下這過程。

拿到MPU6050,有幾項工作得做,

一、確認raw值的scale範圍
在下面網頁有說明
http://www.i2cdevlib.com/forums/topic/4-understanding-raw-values-of-accelerometer-and-gyrometer/

在MPU6050.cpp初始化函示有提到,預設為+/-2g,+/-250degree/s
/** Power on and prepare for general usage.
 * This will activate the device and take it out of sleep mode (which must be done
 * after start-up). This function also sets both the accelerometer and the gyroscope
 * to their most sensitive settings, namely +/- 2g and +/- 250 degrees/sec, and sets
 * the clock source to use the X Gyro for reference, which is slightly better than
 * the default internal clock source.
 */
void MPU6050::initialize() {
    setClockSource(MPU6050_CLOCK_PLL_XGYRO);
    setFullScaleGyroRange(MPU6050_GYRO_FS_250);
    setFullScaleAccelRange(MPU6050_ACCEL_FS_2);
    setSleepEnabled(false); // thanks to Jack Elston for pointing this one out!
}

如果有必要修改,下面是修改方式
mpu.setFullScaleGyroRange(0);
//0 = +/- 250 degrees/sec | 1 = +/- 500 degrees/sec | 2 = +/- 1000 degrees/sec | 3 =  +/- 2000 degrees/sec
mpu.setFullScaleAccelRange(0);
 //0 = +/- 2g | 1 = +/- 4g | 2 = +/- 8g | 3 =  +/- 16g 


二、取得重力與角速度
在這個函式拿到xyz軸的加速度計重力值以及陀螺儀的角速度
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

三、四元數是啥?

幾個背景知識參考
四元數四元數與旋轉
開源飛行器crazepony的軟體姿態解法,他的參考來源
對岸的參考資料有提到Z方向的需求要看應用
關於六軸與九軸的比較

一個簡單的範例,這個範例簡單好用,不過只有在運動時穩定,靜止時十分糟糕,
應該是沒有濾波的關係。


But....我發現我手邊有個九軸感測器,對於Yaw旋轉的效果會比六軸好

網路資源,網路資源二資源三感覺資源二可以試試看。
如果還是會造成時序衝突,那就用之前碩論的卡曼,可能還比較好一點。









2016年11月29日 星期二

2016年11月28日 星期一

[無人機]關於Schedule-MPU6050 DMP Mode的中斷問題


加入超音波後,DMP常常會當掉,或者OVERFLOW

研究了超音波的讀取方式使用pulsein()
詳見官網文件如下連結
https://www.arduino.cc/en/Reference/PulseIn
發現這個會依照echo長度而變動的值,也就是echo高電位多久,就會被hold在這裡多久,


另外
下面連結
http://www.i2cdevlib.com/forums/topic/27-fifo-overflow/
有提到修改I2C的傳輸頻率,以及DMP資料的輸出速度


目前將I2C改成100KHz
DMP輸出改50Hz

發現沒有用,超音波很容易就會因為距離太遠而停止

2016年11月25日 星期五

[無人機]Ardunio Shield 規劃與參考



http://forum.arduino.cc/index.php?topic=7013.0
https://aaroneiche.com/2010/06/24/a-beginners-guide-to-making-an-arduino-shield-pcb/


The SparkFun Eagle Library
http://www.opencircuits.com/SFE_Footprint_Library_Eagle


這個擴展版的接腳比較符合我想用的,因為目前UNO上面還是有接腳未用完,
如果就直接蓋住,實在浪費
http://matthewcmcmillan.blogspot.tw/2014/09/seeed-can-bus-shield-with-arduino-mega.html

比較麻煩的是這種連接器要去哪買?
https://www.adafruit.com/products/192


另外,Ardunio Mega的接腳較多,後面有一部份可以考慮做成可折斷的版本,
這樣就可以通用於UNO以及MEGA
http://tmuel1123.blogspot.tw/2013/12/the-idea-design-mistake.html


目前預計要上shield的幾個模組有
1.GY521
2.超音波
3.BT,要加上降壓與分壓電阻
4.四組ESC
5.一組5V轉3v3的buffer, 74lvc125
6.Mega的ICSP要接出來,Reset要按的到

2016年11月24日 星期四

[無人機]出來跑還是要還的


今天測試懸停的時候,用手拿著四軸,慢慢開油門,
轉到高速時,兩片槳片噴飛,
敲到我小指,立馬噴血,不過槳片沒斷,倒是槳夾只找回來一個,
晚點去模型店找找,否則就只能上網訂了。




2016年11月23日 星期三

[無人機]第一次懸停





[無人機]X Type



http://technicaladventure.blogspot.tw/2012/09/quadcopter-stabilization-control-system.html
https://rcexplorer.se/educational/2011/02/kk-quad-x-setup-guide/
https://www.quora.com/Why-is-x-configuration-preferred-over-+-config-of-quadcopter

http://www.crazepony.com/book/wiki/algorithm-pid.html
http://blog.csdn.net/nemol1990/article/details/45131603

2016年11月20日 星期日

[Arduino]HC-05 BT Module




http://www.martyncurrey.com/arduino-with-hc-05-bluetooth-module-at-mode/
http://www.martyncurrey.com/using-an-arduino-mega-with-a-hc-05-zs-040-at-mode/
http://gsyan888.blogspot.tw/2014/03/arduino-hc-06-at-command.html

http://swf.com.tw/?p=693
http://swf.com.tw/?p=705
http://swf.com.tw/?p=712


最後接線起來能夠正確的資料是參考
TX線的接法
http://www.martyncurrey.com/arduino-with-hc-05-bluetooth-module-at-mode/
RX線的接法
http://swf.com.tw/?p=705

這真是詭異...= =

Arduino裡面的設定要記得
// 定義連接藍牙模組的序列埠
SoftwareSerial BT(8, 7); // 接收腳, 傳送腳要設定


關於藍芽
AT模式的命令要參考HC-05,不能參考HC-06
藍芽連接後,出現COM27以及COM28,必須使用COM27,鮑率9600。



2016年11月17日 星期四

[無人機]運動學方程式


以下方程式是下面論文的筆記
微型四旋翼直升機之模擬、設計與控制,龍華科大,廖啟賓


\(\Omega_{1}^{2}=\frac{1}{4b}\mathit{U}_{1}-\frac{1}{2bl}U_{3}-\frac{1}{4d}U_{4}\)
\(\Omega_{2}^{2}=\frac{1}{4b}\mathit{U}_{1}-\frac{1}{2bl}U_{2}+\frac{1}{4d}U_{4}\)
\(\Omega_{3}^{2}=\frac{1}{4b}\mathit{U}_{1}+\frac{1}{2bl}U_{3}-\frac{1}{4d}U_{4}\)
\(\Omega_{4}^{2}=\frac{1}{4b}\mathit{U}_{1}+\frac{1}{2bl}U_{2}+\frac{1}{4d}U_{4}\)

其中\(\mathit{U}_{1}\) ~ \(\mathit{U}_{4}\)分別代表了力或者力矩\((U\)),這個將會與馬達轉速\((\Omega)\)平方成正比,力矩種類如下

\(\mathit{U}_{1}\):垂直升力
\(\mathit{U}_{2}\):滾轉力矩
\(\mathit{U}_{3}\):俯仰力矩
\(\mathit{U}_{4}\):偏航力矩

\(\Omega_{1}\) ~ \(\Omega_{1}\)分別為前、右、後、左的馬達轉速
\(b\)為推力系數,\(d\)為推力系數,\(l\)為馬達中心到四旋翼中心距離[m],

四旋翼的直線加速度運動方程式如下

\(\ddot{X}=(sin\varphi sin\phi +cos\varphi sin\theta cos\phi )\frac{U_{1}}{m}\)
\(\ddot{Y}=(-cos\varphi sin\phi +sin\varphi sin\theta cos\phi )\frac{U_{1}}{m}\)
\(\ddot{Z}=-g+(cos\theta cos\phi  )\frac{U_{1}}{m}\)

\(\)
要再讀第六章 系統控制,可以求出U1~U4



直線運動方程式參考
http://ezphysics.nchu.edu.tw/ccp/kinematics/k1.htm
當加速度為定值時,運動方程式 可直接積分得到avst的關係式。
等加速度直線運動的公式:物體的初始位置x0、初速度v0,由t=0開始。
,末速度
t秒內的位移 
末速度的平方




綜合以上

因為我們會固定\(\theta\) 以及\(\phi \)為零,
所以把起飛的運動簡單想,Z軸加速度就可簡化如下
\(\ddot{Z}=-g+\frac{U_{1}}{m}\)

Z=1/2(a)t2






2016年11月14日 星期一

[無人機]組裝後輸出測試




[無人機]動力學



http://www.crazepony.com/book/about-algorithm.html
http://www.neovincent.com/?p=465
http://andrew.gibiansky.com/blog/physics/quadcopter-dynamics/


目前我的配置



3、10
9、11

2016年11月10日 星期四

[無人機]MPU6050控轉速




[Ardunio]GY-521六軸姿態


這顆六軸姿態很普及,Arduino對這顆已經有現成資源
可以看下面文章

http://dory168.blogspot.tw/p/gy-521sensormpu-6050dmp-ic.html

http://ming-shian.blogspot.tw/2014/05/arduino21mpu6050row-data.html

http://playground.arduino.cc/Main/MPU-6050

http://www.i2cdevlib.com/usage





2016年11月9日 星期三

[無人機]電調測試與自動油門行程偵測


這幾天測試了好盈Flyfun

根據使用手冊上的內容,將電機一上電要做的初始化寫在Arduino裡

一開始很不順利,一直無法正確抓到油門行程

後來測試出來將電調調回原廠設定的方式,

再將PWM經過LVC245調整電壓為3.3V

整個就回春了,下面是初始化的影片



Ardunio code
========================================================

int potpin=0;
int PWM_pin=10;//use timer1
int Pot_Value=0;
int Throttle_Min = 500;
int Throttle_Max = 900;
//

void setup() {
// put your setup code here, to run once:
int fff = 3;  // 可以是 1~5
TCCR1B = TCCR1B & 0xF8 | fff;//3設定PWM頻率為 490 Hz
pinMode(PWM_pin,OUTPUT);
Serial.begin(9600);

//  //編程模式
//  Serial.print("Set ESC: Max Throttle! \n");//
//  analogWrite(PWM_pin,Throttle_Max/4);//
//  delay(10000);

//  //初始化電變
  Serial.print("Set ESC: Max Throttle! \n");//
  analogWrite(PWM_pin,Throttle_Max/4);//
  delay(3000);

  Serial.print("Set ESC: Min Throttle! \n");//
  analogWrite(PWM_pin,Throttle_Min/4);//
  delay(2000);

  Serial.print("Set ESC OK \n");//
}

void loop() {
  // put your main code here, to run repeatedly:
  Pot_Value=analogRead(potpin);
  Serial.println(Pot_Value);//一邊將數值往序列埠顯示
  if(Pot_Value < Throttle_Max && Pot_Value > Throttle_Min)
  {
    analogWrite(PWM_pin,Pot_Value/4);//對Digital腳位寫入PWM
    delay(10);
  }
 
}

2016年11月8日 星期二

[無人機]測試用硬體


電機
新西達480S/950KV 無刷馬達
http://blueskymodel.com/product_info.php?products_id=2380

15級引擎馬力...高效率優質馬達!!!
輕質量高扭力大馬力的一顆優質馬達
全新改款設計…精選材料/精緻設計/精密加工/高品質/重量輕/高馬力/高推力/
適用保麗龍及巴爾沙木製大小機型相當於15級2行程引擎馬力
 3D機、滑翔機、特技機、像真機、適用 
高效能12槽14極外轉子無刷馬達高精度動平衡設計
◎最新高純度超薄0.2mm矽鋼片定子,低鐵損無磁殘留,有效提昇馬達效率降低馬達溫度
◎高精度防磁外轉子高轉速平衡低噪音
◎加強型耐衝擊低阻力日本高速培林
◎三個培林支撐軸心設計運轉精度更高
 480S /A2217/15級飛機用外轉子無刷馬達規格表

直徑                     
27.8mm
長度
34mm
重量
65g
軸心尺寸
4.00mm
每伏特轉速
950/1100/1250/1500/1750rpm/V
最佳效率值
85%
適用電池數
2~3cell Li-ion/Li-poly
最大持續電流 
20~28A 
最大瞬間電流
22~35A / 60sec
最佳效率電流
8~28A(>80%)
建議機體重量     

600~1000g
電調
好盈 飛騰系列 FlyFun-40A/2~6S/NO BEC 無刷電子調速器/電變
http://www.gejore.tw/shop/goods-5034.html


適用於
1. 400/450直升機3D。
2. 32級固定翼Sports。
3. 多軸飛行器。


FlyFun-40A和FlyFun-40A-OPTO的主要區別在於:前者有內置BEC而後者沒有。
產品編號分別為:80020620(FlyFun-40A) 和  80020622 (FlyFun-40A-OPTO)



產品規格: 
1、 輸出能力:持續電流40A,短時電流55A(不少於10秒)。
2、 電源輸入:2-6節鋰電池組或5—18節鎳氫/鎳鎘電池組。
3、 BEC輸出:
      ●FlyFun-40A: 3A (開關電源穩壓模式-switch mode)
      ●FlyFun-40A-OPTO:無
4、 油門信號頻率範圍(Refresh rate):50Hz—432Hz。
5、 最高轉速:2極馬達210000轉/分鐘,6極馬達70000轉/分鐘,12極馬達35000轉/分鐘。
6、 尺寸:
      ●FlyFun-40A: 60mm(長)*28mm(寬)*15mm(高)。
      ●FlyFun-40A-OPTO: 60mm(長)*28mm(寬)*12mm(高)。
7、 重量:
      ●FlyFun-40A: 38.8g(含散熱片)。
      ●FlyFun-40A-OPTO: 35.2g(含散熱片)。
8、 附件: 參數設定卡(可選配)。
 
產品功能:
1、 安全上電功能:接通電源時,無論油門搖桿處於任何位置均不會立即啟動電機,避免造成人身傷害。
2、 油門行程校調功能:適應不同遙控器油門行程的差別,提高油門響應的線性度。
3、 程序設定項目:
      ●剎車設定:無剎車/有剎車。
      ●電池類型:Li-xx(鋰電池)/ Ni-xx(鎳鎘或鎳氫)。
      ● 低壓保護模式:降低功率/關閉輸出。
      ●低壓保護閾值:低/中/高。
      ●啟動模式:普通/柔和/超柔和啟動。
      ●進角:低/中/高。
      ●恢復出廠默認值。
4、 全面的保護功能:
      ●欠壓保護:由用戶通過程序設定,當電池電壓低於保護閾值時,電調自動降低輸出功率。
      ●過壓保護:輸入電壓超過輸入允許範圍不予啟動,自動保護,同時發出急促的「嗶嗶」告警音。
      ●過熱保護:內置溫度檢測電路,電調溫度過高時自動降低輸出功率。
      ●遙控信號丟失保護:遙控信號丟失1秒後降低功率,再有2秒無遙控信號則關閉輸出。

工藝特點:1、 電源輸入端採用超低阻抗大容量電解電容,極大提高抗干擾能力。
2、 輸出MOSFET功率管配備獨立散熱片,有效降低器件溫升,提高系統大電流工作能力。
3、 單片機採用獨立穩壓芯片,避免BEC負載變化造成電源干擾,提高單片機工作穩定性。

2016年10月18日 星期二

[Arduino]Quadcopter


https://www.youtube.com/watch?v=A3FyJZbtSBk

http://diydrones.com/profiles/blogs/arduimu-quadcopter-part-iii

http://www.robotshop.com/blog/en/make-uav-lesson-1-platform-rtf-arf-kit-custom-13989

http://kitsprout.logdown.com/?page=3

http://csenichijou.blogspot.tw/2014/03/Quadcopter-1.html

MPU-9250 and Arduino (9-Axis IMU)
http://www.lucidarme.me/?p=5057

http://diydrones.com/forum

http://www.instructables.com/id/DIY-Drones/


https://hom-wang.gitbooks.io/quadcopter/content/

2016年10月12日 星期三

[Ardunio]四軸飛行機工作坊



http://www.techbang.com/posts/46439-course-real-workshop-arduino-four-axis-aircraft-unmanned-aerial-vehicle-hardware-wireless-remote-control-flight-instruction-flight-control-software-integration-society

[Sensor]MPU92/65

MPU92/65是很久以前買的感測器 基本上有加速度計、陀螺儀、電子羅盤、溫度計 以下是該電子商城的介紹 https://www.factoryforward.com/product/gy-87-mpu-9265-3-axis-9-dof-attitude-gyro-magnet...