0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

利用Arduino實(shí)現(xiàn)DIY伺服相機(jī)云臺

樓斌 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-02-24 15:18 ? 次閱讀

這篇文章來源于DevicePlus.com英語網(wǎng)站的翻譯稿。

目錄

水平相機(jī)支架簡介

設(shè)備規(guī)格

3D 打印安裝部件

編寫程序

測試!

poYBAGPzFnKAepoeAAHFe7FFJdA007.jpg

在上一篇文章中,我們構(gòu)建了一個(gè)伺服控制的無線照明開關(guān)。今天,我們打算更上一層樓,嘗試創(chuàng)建一個(gè)水平相機(jī)支架或云臺。如果您還沒有準(zhǔn)備好,請隨時(shí)查閱我們的第一個(gè)相機(jī)云臺項(xiàng)目:第1部分第2部分。

今天的電子食譜

預(yù)計(jì)完成時(shí)間:60分鐘

所需部件:

Arduino UNO R3 或 Arduino Pro Mini

面包板

三軸加速度計(jì) KXR94-2050

Towerpro MG996R 伺服電機(jī)

1. 水平相機(jī)支架簡介

水平相機(jī)支架,通常稱為“穩(wěn)定器”或“云臺”,過去僅用于高預(yù)算生產(chǎn)環(huán)境。由于無人機(jī)行業(yè)的繁榮和新興消費(fèi)技術(shù),現(xiàn)在利用配備云臺的無人機(jī)拍攝高質(zhì)量的視頻已經(jīng)非常普遍——用無人機(jī)或智能手機(jī)都可以。市面上易于操作的相關(guān)消費(fèi)產(chǎn)品有很多種。其中一些產(chǎn)品采用無刷電機(jī)進(jìn)行主觀視角拍攝(噪音、速度等)。

pYYBAGPzFnOANNYKAAEa2WZeXHo028.jpg

圖1.穩(wěn)定器

我一直想親手制作一個(gè)這樣的設(shè)備。上次,我挑戰(zhàn)自己,構(gòu)建了一個(gè)這種設(shè)備,具體內(nèi)容請參見這篇文章,但是結(jié)果卻并不理想……

該設(shè)備有其自身的魅力……但是如果無法作為穩(wěn)定器使用,那么也毫無用處。我回顧了之前的項(xiàng)目,發(fā)現(xiàn)許多需要改進(jìn)的地方。最大的問題就是我選擇的伺服電機(jī)。之前的電機(jī)功率不夠。其扭矩不足以操作智能手機(jī)。

出于這個(gè)原因,在繼續(xù)其他工作之前我想先關(guān)注一下設(shè)備規(guī)格選型。

2. 設(shè)備規(guī)格

首先,我們來看一下伺服電機(jī)。雖然之前使用的伺服電機(jī)SG90價(jià)格便宜且易于使用,但是顯然其扭矩不夠。因此,這次我們使用MG996R伺服電機(jī),其扭矩幾乎是之前電機(jī)的5倍,可能動作會略微延遲/減慢。

poYBAGPzFnWAEy4UAADikOfp1ZU049.jpg

另外,其他部件基本就是Arduino和加速度計(jì),所以設(shè)置幾乎與上次相同。由于新伺服電機(jī)較大,我用適配器為其供電。電路接線也是相同的。

poYBAGPzFneAZksCAAG7LONkd8M021.jpg

poYBAGPzFnmAI3i-AAGlhCOqORs997.jpg

3. 3D 打印安裝部件

對于支架的部件,您可以使用上次的木材和金屬配件。但這一次,我想利用3D打印來制作各個(gè)部件。這次我準(zhǔn)備的三腳架帶有螺絲孔,即使伺服電機(jī)較大,也可以保持穩(wěn)定。我設(shè)計(jì)的小三腳架具有方向性,而且可以單手操作。

poYBAGPzFnuAMcLsAAF9_spGHUk597.jpg

這是我3D打印的部件。組裝后的樣子如下所示:

poYBAGPzE6aAJ6EJAAFgvcBkgow166.jpg

請注意,如果使用ABS樹脂進(jìn)行3D打印,那么材料固化時(shí)會發(fā)生收縮。我打印部件時(shí)發(fā)現(xiàn)了這個(gè)問題。我注意到部件產(chǎn)生輕微變形,組裝時(shí)螺釘很難擰入。經(jīng)過多次試驗(yàn)和錯(cuò)誤后,我決定分別打印安裝在伺服電機(jī)上的部件。您可以在這里下載適用于該支架的3D模型: https://github.com/DevicePlus/ServoGimbal

pYYBAGPzFoCACUoYAAIDT6vGVcY901.jpg

三腳架組裝如下所示:

poYBAGPzFoKAYO4pAAHWq6EzIYk185.jpg

pYYBAGPzFoSAMBIyAAFUBJnIUBg900.jpg

至于外殼,這取決于您的相機(jī)類型等因素。此外,您還可以根據(jù)您的手機(jī)類型改進(jìn)/更改部件的整體設(shè)計(jì)。

4. 編寫程序

對于程序,我們有必要進(jìn)行校準(zhǔn)。首先將加速度傳感器傾斜180度,并根據(jù)輸出值調(diào)整伺服電機(jī)的傾斜度。所以我們稍微改進(jìn)了第17個(gè)程序并進(jìn)行了校準(zhǔn)。讓我們用比較容易理解的方式輸出數(shù)字。

首先需要將加速度計(jì)傾斜180度,并根據(jù)輸出值調(diào)整伺服電機(jī)的傾斜度來校準(zhǔn)加速度計(jì)。讓我們稍微修改一下 第1部分 中的程序,以易于理解的方式輸出校準(zhǔn)值。

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) ;
}

poYBAGPzFoWAf2bZAAB1a6qdNP4573.jpg

pYYBAGPzFoeAGYSRAAE-oS_E-Y0054.jpg

運(yùn)行此程序后,啟動串口監(jiān)視器,然后將傳感器分別在X和Y方向-90度到90度之間傾斜,并確認(rèn)輸出值。將輸出值的最小值和最大值除以180度,獲得的數(shù)值為加速度計(jì)傾斜值/度,這樣可以與伺服電機(jī)的操作同步。

pYYBAGPzFomAVvzjAAGHhTahw1I021.jpg

串口監(jiān)視器上的數(shù)值在激活伺服電機(jī)的程序中有所反應(yīng)。

//********************************************
//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. 測試!

這次我們有了足夠的功率,但是支架的運(yùn)動仍然很有趣……

在上面的視頻中,用手握住設(shè)備時(shí),加速度計(jì)可以捕獲最輕微的搖動。即使傳感器軸對齊,也會出現(xiàn)到一些不同角度的意外運(yùn)動。解決這個(gè)問題對于平滑旋轉(zhuǎn)和未來改進(jìn)來說至關(guān)重要。

運(yùn)動(或搖動)與相機(jī)(或智能手機(jī))的重量成比例。如果物體小而輕,移動就相對輕微;但是如果放置像智能手機(jī)那樣較重的物體,搖晃就會很嚴(yán)重。還應(yīng)該改進(jìn)該程序以提高性能并提高可靠性。

我們的最終目標(biāo)是創(chuàng)建一個(gè)像下面的產(chǎn)品一樣穩(wěn)定的云臺:

似乎很多人都嘗試用無人機(jī)這樣做。有些無人機(jī)可以保持穩(wěn)定的姿態(tài),所以該設(shè)備可能更適合無人機(jī)。

今天,我們重新制作了 第1部分第2部分構(gòu)建的水平相機(jī)云臺。我們對云臺的機(jī)械設(shè)計(jì)進(jìn)行了一些改進(jìn),但是隨著項(xiàng)目的進(jìn)一步推進(jìn),我們發(fā)現(xiàn)了更多的挑戰(zhàn)。我們?nèi)匀粺o法順利控制云臺?,F(xiàn)在,該設(shè)備只能說仍處于測試階段,但是我們不會善罷甘休。我們一定會在不久的將來重新解決這個(gè)問題,并使其成為一個(gè)功能正常的設(shè)備。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 編輯團(tuán)隊(duì)

設(shè)備升級版適用于所有熱愛電子和機(jī)電一體化的人。

審核編輯黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 智能手機(jī)
    +關(guān)注

    關(guān)注

    66

    文章

    18493

    瀏覽量

    180207
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6469

    瀏覽量

    187063
收藏 人收藏

    評論

    相關(guān)推薦

    如何使用Arduino的藍(lán)牙控制伺服電機(jī)

    使用伺服電機(jī)在機(jī)器人技術(shù)中很常見,以實(shí)現(xiàn)精確控制。在這里,在本教程中,我們將向您展示如何通過藍(lán)牙連接將伺服電機(jī)與Arduino UNO和Android設(shè)備無線使用。我們已經(jīng)使用
    發(fā)表于 11-16 16:19 ?3558次閱讀
    如何使用<b class='flag-5'>Arduino</b>的藍(lán)牙控制<b class='flag-5'>伺服</b>電機(jī)

    DIY 相機(jī)穩(wěn)定器,是省錢還是敗家?

    上,這些需要慢慢的調(diào)試才行。 第七步:完成整個(gè)DIY的穩(wěn)定器就完成了,其主要內(nèi)核就是廢棄的無人機(jī)利用,剩下其他的都沒有什么技術(shù)含量,經(jīng)過計(jì)算,整套穩(wěn)定器制作下來,差不多成本在60
    發(fā)表于 11-04 16:04

    超聲電機(jī)—的應(yīng)用

    ,與外殼之間狹小空間安裝微型超聲電機(jī)伺服控制電路,作為運(yùn)動控制部件,將微型高精度閉環(huán)控制系統(tǒng)安裝在微型超聲電機(jī)背部,
    發(fā)表于 09-30 11:11

    如何制作相機(jī)跟拍?

    如何制作相機(jī)跟拍實(shí)現(xiàn)目標(biāo):當(dāng)相機(jī)或拍攝對象向左或向右移動時(shí),相機(jī)鏡頭也相應(yīng)轉(zhuǎn)動,始終對著
    發(fā)表于 12-05 09:05

     佳能相機(jī)專利通過:可換鏡頭設(shè)計(jì)

    據(jù)外媒 newsshooter 消息,佳能最新的一款相機(jī)專利在日本通過申請。這款設(shè)備有著人體工程學(xué)手柄,搭載可換鏡頭的
    的頭像 發(fā)表于 12-31 09:04 ?2127次閱讀
     佳能<b class='flag-5'>云</b><b class='flag-5'>臺</b><b class='flag-5'>相機(jī)</b>專利通過:可換鏡頭設(shè)計(jì)

    佳能通過日本最新相機(jī)專利

    為了實(shí)現(xiàn)更穩(wěn)的拍攝,相機(jī)往往需要一手持,兩者加在一起體積碩大,需要兩只手才能拿穩(wěn)。
    的頭像 發(fā)表于 12-31 09:49 ?1773次閱讀
    佳能通過日本最新<b class='flag-5'>云</b><b class='flag-5'>臺</b><b class='flag-5'>相機(jī)</b>專利

    佳能申請相機(jī),可更換鏡頭設(shè)計(jì)

    為了實(shí)現(xiàn)更穩(wěn)的拍攝,相機(jī)往往需要一手持,兩者加在一起體積碩大,需要兩只手才能拿穩(wěn)。
    發(fā)表于 12-31 09:57 ?545次閱讀

    DIY自己的arduino項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《DIY自己的arduino項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-27 10:17 ?2次下載
    <b class='flag-5'>DIY</b>自己的<b class='flag-5'>arduino</b>項(xiàng)目

    DIY ARDUINO UNO板

    電子發(fā)燒友網(wǎng)站提供《DIY ARDUINO UNO板.zip》資料免費(fèi)下載
    發(fā)表于 08-19 09:28 ?7次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>ARDUINO</b> UNO板

    德州儀器運(yùn)動相機(jī)和手持解決方案

    德州儀器運(yùn)動相機(jī)和手持解決方案
    發(fā)表于 10-31 08:23 ?1次下載
    德州儀器運(yùn)動<b class='flag-5'>相機(jī)</b>和手持<b class='flag-5'>云</b><b class='flag-5'>臺</b>解決方案

    DIY Arduino角燈

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino角燈.zip》資料免費(fèi)下載
    發(fā)表于 11-02 10:46 ?1次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>角燈

    DIY Arduino示波器

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino示波器.zip》資料免費(fèi)下載
    發(fā)表于 11-11 11:06 ?5次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>示波器

    基于Arduino平臺的DIY示波器

    電子發(fā)燒友網(wǎng)站提供《基于Arduino平臺的DIY示波器.zip》資料免費(fèi)下載
    發(fā)表于 11-30 14:23 ?6次下載
    基于<b class='flag-5'>Arduino</b>平臺的<b class='flag-5'>DIY</b>示波器

    Arduino DIY鬧鐘

    電子發(fā)燒友網(wǎng)站提供《Arduino DIY鬧鐘.zip》資料免費(fèi)下載
    發(fā)表于 12-01 09:23 ?0次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>DIY</b>鬧鐘

    DIY Arduino電子沙漏

    電子發(fā)燒友網(wǎng)站提供《DIY Arduino電子沙漏.zip》資料免費(fèi)下載
    發(fā)表于 02-06 11:09 ?10次下載
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>電子沙漏