這篇文章來源于DevicePlus.com英語網站的翻譯稿。
目錄
水平相機支架簡介
設備規格
3D 打印安裝部件
編寫程序
測試!
在上一篇文章中,我們構建了一個伺服控制的無線照明開關。今天,我們打算更上一層樓,嘗試創建一個水平相機支架或云臺。如果您還沒有準備好,請隨時查閱我們的第一個相機云臺項目:第1部分 和 第2部分。
今天的電子食譜
預計完成時間:60分鐘
所需部件:
Arduino UNO R3 或 Arduino Pro Mini
面包板
三軸加速度計 KXR94-2050
Towerpro MG996R 伺服電機
1. 水平相機支架簡介
水平相機支架,通常稱為“穩定器”或“云臺”,過去僅用于高預算生產環境。由于無人機行業的繁榮和新興消費技術,現在利用配備云臺的無人機拍攝高質量的視頻已經非常普遍——用無人機或智能手機都可以。市面上易于操作的相關消費產品有很多種。其中一些產品采用無刷電機進行主觀視角拍攝(噪音、速度等)。
圖1.穩定器
我一直想親手制作一個這樣的設備。上次,我挑戰自己,構建了一個這種設備,具體內容請參見這篇文章,但是結果卻并不理想……
該設備有其自身的魅力……但是如果無法作為穩定器使用,那么也毫無用處。我回顧了之前的項目,發現許多需要改進的地方。最大的問題就是我選擇的伺服電機。之前的電機功率不夠。其扭矩不足以操作智能手機。
出于這個原因,在繼續其他工作之前我想先關注一下設備規格選型。
2. 設備規格
首先,我們來看一下伺服電機。雖然之前使用的伺服電機SG90價格便宜且易于使用,但是顯然其扭矩不夠。因此,這次我們使用MG996R伺服電機,其扭矩幾乎是之前電機的5倍,可能動作會略微延遲/減慢。
另外,其他部件基本就是Arduino和加速度計,所以設置幾乎與上次相同。由于新伺服電機較大,我用適配器為其供電。電路接線也是相同的。
3. 3D 打印安裝部件
對于支架的部件,您可以使用上次的木材和金屬配件。但這一次,我想利用3D打印來制作各個部件。這次我準備的三腳架帶有螺絲孔,即使伺服電機較大,也可以保持穩定。我設計的小三腳架具有方向性,而且可以單手操作。
這是我3D打印的部件。組裝后的樣子如下所示:
請注意,如果使用ABS樹脂進行3D打印,那么材料固化時會發生收縮。我打印部件時發現了這個問題。我注意到部件產生輕微變形,組裝時螺釘很難擰入。經過多次試驗和錯誤后,我決定分別打印安裝在伺服電機上的部件。您可以在這里下載適用于該支架的3D模型: https://github.com/DevicePlus/ServoGimbal
三腳架組裝如下所示:
至于外殼,這取決于您的相機類型等因素。此外,您還可以根據您的手機類型改進/更改部件的整體設計。
4. 編寫程序
對于程序,我們有必要進行校準。首先將加速度傳感器傾斜180度,并根據輸出值調整伺服電機的傾斜度。所以我們稍微改進了第17個程序并進行了校準。讓我們用比較容易理解的方式輸出數字。
首先需要將加速度計傾斜180度,并根據輸出值調整伺服電機的傾斜度來校準加速度計。讓我們稍微修改一下 第1部分 中的程序,以易于理解的方式輸出校準值。
int _maxX = 0; int _minX = 1000; int _maxY = 0; int _minY = 1000; int _maxZ = 0; int _minZ = 1000; //****************************************** //Program for acquiring accelerometer values //****************************************** void setup() { // initialize the serial monitor Serial.begin(9600) ; } void loop() { long x , y , z ; x = y = z = 0 ; x = analogRead(1) ; // X axis y = analogRead(2) ; // Y axis z = analogRead(3) ; // Z axis if(_maxX < x){ _maxX = x; } if(_minX > x){ _minX = x; } if(_maxY < y){ _maxY = y; } if(_minY > y){ _minY = y; } if(_maxZ < z){ _maxZ = z; } if(_minZ > z){ _minZ = z; } int centerX = (_maxX-_minX)/2+_minX; int centerY = (_maxY-_minY)/2+_minY; int centerZ = (_maxZ-_minZ)/2+_minZ; float rotateX = ((float)_maxX-(float)_minX)/180; float rotateY = ((float)_maxY-(float)_minY)/180; float rotateZ = ((float)_maxZ-(float)_minZ)/180; Serial.print("X:") ; Serial.print(_minX) ; Serial.print(" ") ; Serial.print(centerX) ; Serial.print(" ") ; Serial.print(_maxX) ; Serial.print(" ") ; Serial.print(rotateX) ; Serial.print(" Y:") ; Serial.print(_minY) ; Serial.print(" ") ; Serial.print(centerY) ; Serial.print(" ") ; Serial.print(_maxY) ; Serial.print(" ") ; Serial.print(rotateY) ; Serial.print(" Z:") ; Serial.print(_minZ) ; Serial.print(" ") ; Serial.print(centerZ) ; Serial.print(" ") ; Serial.print(_maxZ) ; Serial.print(" ") ; Serial.println(rotateZ) ; delay(50) ; }
運行此程序后,啟動串口監視器,然后將傳感器分別在X和Y方向-90度到90度之間傾斜,并確認輸出值。將輸出值的最小值和最大值除以180度,獲得的數值為加速度計傾斜值/度,這樣可以與伺服電機的操作同步。
串口監視器上的數值在激活伺服電機的程序中有所反應。
//******************************************** //Program 2 for acquiring accelerometer values //******************************************** #include Servo myservoX; Servo myservoY; void setup() { // initialize the serial monitor Serial.begin(9600) ; myservoX.attach( 5 ); myservoY.attach( 6 ); } void loop() { int i ; long x , y; // read each data 100 times and average x = y = 0 ; for (i=0 ; i < 100 ; i++) { x = x + analogRead(1) ; // read x axis y = y + analogRead(2) ; // read y axis } x = x / 100 ; y = y / 100 ; int rotateX = (x-493)/1.30; //obtain anble myservoX.write( 90-rotateX ); Serial.print("X:") ; Serial.print(x) ; Serial.print(" ") ; Serial.print(rotateX) ; int rotateY = (y-488)/1.23; myservoY.write( 90-rotateY ); Serial.print(" Y:") ; Serial.print(y) ; // Y axis Serial.print(" ") ; Serial.println(rotateY) ; // Y axis delay(10) ; }
5. 測試!
這次我們有了足夠的功率,但是支架的運動仍然很有趣……
在上面的視頻中,用手握住設備時,加速度計可以捕獲最輕微的搖動。即使傳感器軸對齊,也會出現到一些不同角度的意外運動。解決這個問題對于平滑旋轉和未來改進來說至關重要。
運動(或搖動)與相機(或智能手機)的重量成比例。如果物體小而輕,移動就相對輕微;但是如果放置像智能手機那樣較重的物體,搖晃就會很嚴重。還應該改進該程序以提高性能并提高可靠性。
我們的最終目標是創建一個像下面的產品一樣穩定的云臺:
似乎很多人都嘗試用無人機這樣做。有些無人機可以保持穩定的姿態,所以該設備可能更適合無人機。
今天,我們重新制作了 第1部分 和 第2部分構建的水平相機云臺。我們對云臺的機械設計進行了一些改進,但是隨著項目的進一步推進,我們發現了更多的挑戰。我們仍然無法順利控制云臺。現在,該設備只能說仍處于測試階段,但是我們不會善罷甘休。我們一定會在不久的將來重新解決這個問題,并使其成為一個功能正常的設備。
DevicePlus 編輯團隊
設備升級版適用于所有熱愛電子和機電一體化的人。
審核編輯黃宇
-
智能手機
+關注
關注
66文章
18502瀏覽量
180447 -
Arduino
+關注
關注
188文章
6472瀏覽量
187320
發布評論請先 登錄
相關推薦
評論