步驟1:硬件設(shè)計(jì)+構(gòu)建+ 3D打印
作為構(gòu)建滑塊的第一步,我們將從物理部件開(kāi)始。所有部件都設(shè)計(jì)為3D打印,STEP和STL文件可以在這里下載
從上面的圖片可以看出,有很多單獨(dú)的部件。我將在這里簡(jiǎn)要介紹一下他們的目的
電機(jī)安裝 - 此部件用于保持負(fù)責(zé)橫向移動(dòng)攝像機(jī)的電機(jī)。這部分也像項(xiàng)目的立場(chǎng)。該部件通過(guò)10 mm螺紋桿和m10螺母連接到電子設(shè)備外殼。
電子設(shè)備外殼 - 此部件包含控制相機(jī)滑塊的所有電子設(shè)備。 Arduino和Roboclaw電機(jī)控制器滑入主要的大型隔間。旁邊是一個(gè)較小的電池隔間。我為這個(gè)電池調(diào)整了這個(gè)隔間的大小,但你可以修改我的電池文件。 2 M10螺母也可以插入凹孔,通過(guò)M10螺紋桿將電子設(shè)備外殼連接到電機(jī)座上。在電子元件支架的頂部,有一個(gè)用于屏幕的凹槽和用于旋轉(zhuǎn)編碼器和啟動(dòng)按鈕的孔。
惰輪 - 與電機(jī)座+電子元件相對(duì),在滑塊的另一側(cè)是惰輪側(cè)。惰輪部分使用滾珠軸承讓皮帶自由旋轉(zhuǎn)。該部件也通過(guò)M10螺紋桿固定在攝像機(jī)滑塊上,使用M10螺母夾緊零件的兩側(cè)。
滑塊底座 - 當(dāng)滑塊的主電機(jī)旋轉(zhuǎn)時(shí),該部分實(shí)際上是左右移動(dòng)的部分。該部件通過(guò)每側(cè)2 lm8uu軸承連接到8mm光滑桿上。我使用2個(gè)軸承來(lái)穩(wěn)定平臺(tái)并防止振動(dòng)。該部件還在其底部印有Gt2皮帶齒,因此您可以輕松地將皮帶從電機(jī)座安裝到該部件上。該部件在零件的兩側(cè)使用2個(gè)標(biāo)準(zhǔn)滑板軸承。這些軸承將攝像機(jī)安裝部件連接到此滑塊底座,使攝像機(jī)支架能夠以最小的摩擦自由旋轉(zhuǎn)。最后,還有將旋轉(zhuǎn)馬達(dá)連接到該部件的空間。電機(jī)座的設(shè)計(jì)使您可以在擰緊前滑動(dòng)電機(jī),以確保電機(jī)齒輪和攝像機(jī)支架齒輪之間的最佳連接。
相機(jī)裝載 - 此部分也非常獨(dú)特。它有一個(gè)四分之一英寸螺絲孔,可用于將零件連接到任何相機(jī)。該部件還有一個(gè)圓柱形擠壓件,通過(guò)2個(gè)滾珠軸承安裝在滑塊底座內(nèi)。這有助于防止摩擦。最后,該部件具有內(nèi)部環(huán)形齒輪,其與滑塊底座中的旋轉(zhuǎn)電機(jī)連接,并有助于旋轉(zhuǎn)攝像機(jī)支架。
我如何設(shè)計(jì)齒輪:
建立這個(gè)項(xiàng)目,我制作了大約30個(gè)原型,其中15-20個(gè)是齒輪。我想確保最大的平滑度和準(zhǔn)確度,所以我不得不使用高傳動(dòng)比(大馬達(dá)運(yùn)動(dòng)=小相機(jī)運(yùn)動(dòng))。使用Fusion 360的McMaster集成,無(wú)需重新CAD即可輕松嘗試不同的齒輪。通過(guò)點(diǎn)擊Fusion 360中的添加部件選項(xiàng)卡,我可以打開(kāi)整個(gè)McMaster部件目錄,只需選擇我需要的齒輪。這樣做允許我將這些齒輪的CAD版本導(dǎo)入到我的項(xiàng)目中,我可以簡(jiǎn)單地將它們添加到我現(xiàn)有的零件中而無(wú)需自己加工。
第2步:電子
接下來(lái)讓我們繼續(xù)討論電子產(chǎn)品。電子產(chǎn)品是該項(xiàng)目具有很大靈活性的地方。
讓我們從這個(gè)項(xiàng)目的核心開(kāi)始 - 2個(gè)有刷直流電機(jī)。
我選擇有刷直流電機(jī)有幾個(gè)原因。
與步進(jìn)電機(jī)相比,有刷電機(jī)的布線和操作更加簡(jiǎn)單
有刷直流電機(jī)比直流電機(jī)輕得多,這對(duì)于旋轉(zhuǎn)軸電機(jī)尤其重要電機(jī)在相機(jī)上橫向移動(dòng)并使其盡可能輕,對(duì)于防止主攝像機(jī)滑塊電機(jī)過(guò)度拉緊非常重要。
我選擇了這種特殊的直流電機(jī)。這臺(tái)電機(jī)給了我極大的扭矩,這是移動(dòng)如此沉重的相機(jī)負(fù)載所必需的。此外,高傳動(dòng)裝置意味著峰值RPM很慢,這意味著我可以拍攝較慢的運(yùn)動(dòng),而高傳動(dòng)裝置也會(huì)導(dǎo)致更高的位置精度,因?yàn)檩敵鲚S的360度旋轉(zhuǎn)意味著電機(jī)編碼器的計(jì)數(shù)為341.2。
這將我們帶到了RoboClaw運(yùn)動(dòng)控制器。 Roboclaw電機(jī)雙直流電機(jī)控制器通過(guò)簡(jiǎn)單的代碼命令從Arduino獲取簡(jiǎn)單的指令,并執(zhí)行所有繁重的處理和電源傳輸,使您的電機(jī)按預(yù)期運(yùn)行。 Arduino可以通過(guò)PWM,模擬電壓,簡(jiǎn)單串行或數(shù)據(jù)包串行向Roboclaw發(fā)送信號(hào)。數(shù)據(jù)包序列是最好的方法,因?yàn)樗试S您從Roboclaw獲取信息,這是位置跟蹤所必需的。我將在下一步(編程)深入深入了解Roboclaw的軟件/編程部分。
從本質(zhì)上講,由于RoboClaw能夠進(jìn)行位置控制,Roboclaw可以將帶有編碼器的DC有刷電機(jī)轉(zhuǎn)換為更像伺服。然而,與傳統(tǒng)伺服不同,現(xiàn)在您的有刷直流電機(jī)具有更大的扭矩,由于高電機(jī)齒輪傳動(dòng)而具有更高的定位精度,最重要的是,您的直流電機(jī)可以連續(xù)旋轉(zhuǎn)360度,這是傳統(tǒng)伺服無(wú)法做到的。
下一個(gè)電子部件是屏幕。對(duì)于我的屏幕,我選擇這款OLED面板因?yàn)樗某叽绾透邔?duì)比度。這種高對(duì)比度令人難以置信,使得屏幕在陽(yáng)光直射下非常容易使用,同時(shí)不會(huì)發(fā)出太多可能干擾潛在暗相機(jī)拍攝的光線。此屏幕可以輕松換成另一個(gè)U8G兼容屏幕。此處提供了兼容屏幕的完整列表。實(shí)際上這個(gè)項(xiàng)目是在U8G庫(kù)周圍有意編碼的,所以像你這樣的DIY建造者在他們的部件中有更多的靈活性
這個(gè)項(xiàng)目的最終電子部件是旋轉(zhuǎn)編碼器,以及用于啟動(dòng)滑塊運(yùn)動(dòng)的按鈕。編碼器允許您導(dǎo)航屏幕菜單并僅使用一個(gè)撥盤配置所有滑塊菜單。旋轉(zhuǎn)編碼器沒(méi)有像傳統(tǒng)電位器那樣的“終點(diǎn)”位置,這對(duì)于調(diào)整屏幕上對(duì)象跟蹤的x和y坐標(biāo)特別有用。按鈕專門用于啟動(dòng)滑塊的運(yùn)動(dòng),而無(wú)需擺動(dòng)旋轉(zhuǎn)編碼器。
第3步:編程相機(jī)滑塊
編碼是迄今為止最難的挑戰(zhàn)這個(gè)項(xiàng)目。你看,從一開(kāi)始我就想讓滑塊可以在屏幕上控制。為了使這個(gè)項(xiàng)目與盡可能多的屏幕兼容,我不得不使用U8Glib庫(kù)來(lái)代替Arduino。該庫(kù)支持超過(guò)32個(gè)屏幕。但是,U8Glib庫(kù)使用圖片循環(huán)在屏幕上繪制菜單,這與Arduino同時(shí)收集攝像機(jī)角度計(jì)算功能所需的攝像機(jī)位置信息的能力相矛盾(這將在接下來(lái)的幾段中介紹) )。 U8Glib2通過(guò)使用稱為全頁(yè)緩沖區(qū)選項(xiàng)的東西替代了圖片循環(huán),但是由于Arduino Uno的內(nèi)存限制,庫(kù)占用了太多內(nèi)存并且難以適應(yīng)其余代碼。這意味著我被U8G困住了,不得不通過(guò)防止屏幕在滑塊處于運(yùn)動(dòng)狀態(tài)時(shí)更新屏幕并且Arduino需要從Roboclaw收集位置數(shù)據(jù)來(lái)解決這個(gè)問(wèn)題。當(dāng)我進(jìn)入子菜單時(shí),我也被迫觸發(fā)滑塊開(kāi)始移動(dòng)到菜單循環(huán)之外,我將進(jìn)入圖片循環(huán),滑塊將無(wú)法正常工作。我還通過(guò)單獨(dú)的物理按鈕觸發(fā)滑塊的移動(dòng)來(lái)規(guī)避這個(gè)問(wèn)題。
下一步我們來(lái)談?wù)勑D(zhuǎn)跟蹤元件。這部分看起來(lái)非常復(fù)雜,但它實(shí)際上相當(dāng)簡(jiǎn)單。這個(gè)實(shí)現(xiàn)是在我的Arduino代碼中的‘motor()’函數(shù)下。第一步是制作一個(gè)二維網(wǎng)格,并決定放置要跟蹤的對(duì)象的位置。基于此,您可以在當(dāng)前位置繪制三角形。您可以從電機(jī)的編碼器值獲取當(dāng)前位置。如果要以cm/mm為單位配置被跟蹤對(duì)象的位置,則需要將編碼器值轉(zhuǎn)換為cm/mm值。這可以通過(guò)將攝像機(jī)滑塊移動(dòng)1 cm并測(cè)量編碼器值的增加來(lái)完成。您可以在encoder_mm變量下的代碼頂部輸入此值。
繼續(xù)前進(jìn),現(xiàn)在我們將使用反正切函數(shù)來(lái)獲取相機(jī)必須面對(duì)的角度以指向?qū)ο蟆7凑腥∽匀切蔚南鄬?duì)側(cè)和相鄰側(cè)。三角形的另一側(cè)永遠(yuǎn)不會(huì)改變,因?yàn)樗菑幕瑝K到對(duì)象的y距離。然而,相機(jī)滑塊的相鄰側(cè)確實(shí)改變了。可以通過(guò)獲取對(duì)象的x位置并從中減去當(dāng)前位置來(lái)計(jì)算此相鄰邊。當(dāng)滑塊移動(dòng)其運(yùn)動(dòng)范圍時(shí),它將繼續(xù)更新編碼器值上的Arduino。 Arduino將重復(fù)將此編碼器值轉(zhuǎn)換為cm/mm x位置值,然后計(jì)算相鄰邊長(zhǎng),最后計(jì)算相機(jī)需要始終面對(duì)的角度以指向?qū)ο蟆?/p>
現(xiàn)在我們的Arduino正在動(dòng)態(tài)處理攝像機(jī)角度,我們可以解決將此角度轉(zhuǎn)換為旋轉(zhuǎn)電機(jī)移動(dòng)到的位置值的問(wèn)題。這讓我們了解了RoboClaw這個(gè)項(xiàng)目的最大特色。通過(guò)賦予Roboclaw一個(gè)位置值,它基本上可以使DC有刷電機(jī)像伺服一樣工作。除了伺服之外,我們的電機(jī)具有更大的扭矩,更高的精度,還可以旋轉(zhuǎn)360度。
將Roboclaw移動(dòng)到某個(gè)位置的Arduino代碼如下:
roboclaw.SpeedAccelDeccelPositionM1(地址,‘速度’,‘加速’,‘減速’,‘你要去的位置’,1);
調(diào)整電機(jī)的位置值以對(duì)應(yīng)使用相機(jī)角度,您需要手動(dòng)將相機(jī)板移動(dòng)180度。接下來(lái)看看從將攝像機(jī)板從0度移動(dòng)到180度后編碼器值的變化程度。這為您提供了編碼器范圍。您可以在將Arduino攝像機(jī)角度映射到位置值的電機(jī)功能中輸入此范圍。這也在代碼中注釋,因此應(yīng)該很容易找到*****
RoboClaw還讓我能夠調(diào)整其他因素,如加速度,減速度和PID值。這進(jìn)一步使我能夠平滑旋轉(zhuǎn)軸運(yùn)動(dòng),特別是當(dāng)角度變化很小并且增加了沒(méi)有高“D”PID值的加速度時(shí)。您還可以通過(guò)Roboclaw的桌面應(yīng)用程序自動(dòng)調(diào)整PID值。
步驟4:操作相機(jī)滑塊
現(xiàn)在我們來(lái)到有趣的部分,操作滑塊菜單有4個(gè)主要選項(xiàng)卡。頂部標(biāo)簽專用于速度控制。菜單的中間行包含用于以mm為單位配置被跟蹤對(duì)象的X和Y位置的選項(xiàng)卡,還可以配置我們是否希望滑塊旋轉(zhuǎn)和跟蹤我們的對(duì)象,或者只是進(jìn)行簡(jiǎn)單的滑動(dòng)而不旋轉(zhuǎn)。扭轉(zhuǎn)旋轉(zhuǎn)編碼器允許我們導(dǎo)航菜單的不同選項(xiàng)。要配置任何選項(xiàng),請(qǐng)導(dǎo)航至該選項(xiàng)并按下旋轉(zhuǎn)編碼器。按下后,旋轉(zhuǎn)旋轉(zhuǎn)編碼器將改變突出顯示的子菜單的值,而不是擦除菜單。達(dá)到所需值后,可以再次單擊旋轉(zhuǎn)編碼器。現(xiàn)在您返回主菜單,可以在不同選項(xiàng)卡之間導(dǎo)航。準(zhǔn)備好后,只需按下屏幕旁邊的“開(kāi)始”按鈕,滑塊即可完成任務(wù)!
確保完成使用相機(jī)滑塊后,相機(jī)處于“原位”位置:滑塊側(cè)面開(kāi)始。原因是電機(jī)編碼器不是絕對(duì)編碼器,這意味著Roboclaw/Arduino無(wú)法分辨編碼器的位置。它們只能說(shuō)明自上次上電以來(lái)編碼器的變化程度。這意味著當(dāng)您關(guān)閉相機(jī)滑塊時(shí),滑塊將“忘記”滑塊位置并將編碼器重置為0.因此,如果關(guān)閉另一側(cè)滑塊的電源,打開(kāi)電源時(shí),滑塊將嘗試比邊緣移動(dòng)更多并撞到滑塊墻。此編碼器行為也是相機(jī)在每次相機(jī)滑動(dòng)移動(dòng)后重置其旋轉(zhuǎn)角度的原因。旋轉(zhuǎn)軸還保護(hù)自身不會(huì)撞到其運(yùn)動(dòng)范圍的末端。
您可以通過(guò)在啟動(dòng)時(shí)添加終點(diǎn)停止和歸位過(guò)程來(lái)解決此問(wèn)題。這就是3d打印機(jī)使用的方法。
第5步:最后的想法+未來(lái)的改進(jìn)
我強(qiáng)烈建議每個(gè)構(gòu)建者自己制作這個(gè)滑塊的版本而不是構(gòu)建完全相同的滑塊。調(diào)整我的設(shè)計(jì)將允許您根據(jù)您的確切規(guī)格構(gòu)建滑塊,同時(shí)更好地了解電子設(shè)備和代碼的工作方式。
我使代碼盡可能可讀和可配置,以便您可以調(diào)整/校準(zhǔn)滑塊規(guī)格的不同代碼變量。代碼也完全圍繞函數(shù)構(gòu)建,因此如果要復(fù)制/調(diào)整/重寫滑塊的某些行為,則無(wú)需對(duì)整個(gè)代碼進(jìn)行反向工程和返工,而只需要編輯要編輯的部分。
最后,如果我制作了2.0版,我會(huì)做一些改進(jìn)
旋轉(zhuǎn)軸電機(jī)的齒輪比更高。較高的傳動(dòng)比意味著我可以做出更精確的小動(dòng)作。當(dāng)相機(jī)遠(yuǎn)離物體并且相機(jī)角度變化非常緩慢時(shí),這一點(diǎn)尤其重要。目前,我的電機(jī)沒(méi)有過(guò)高的轉(zhuǎn)速,當(dāng)相機(jī)滑塊運(yùn)行得太慢或旋轉(zhuǎn)角度變化很小時(shí),它可能導(dǎo)致略微不平穩(wěn)的運(yùn)動(dòng)。添加高‘D’PID值有助于我擺脫這一點(diǎn),但代價(jià)是略低的目標(biāo)跟蹤精度。
模塊化長(zhǎng)度。這是一個(gè)牽強(qiáng)附會(huì)的目標(biāo),但我希望相機(jī)滑塊的長(zhǎng)度模塊化,這意味著您可以輕松地為更長(zhǎng)的軌道連接相機(jī)滑上。這是非常困難的,因?yàn)橥耆仨殞?duì)齊兩個(gè)軌道并找出如何使帶系統(tǒng)工作。不過(guò),這將是一個(gè)很酷的升級(jí)!
自定義運(yùn)動(dòng)Keyframing。我很想將關(guān)鍵幀運(yùn)動(dòng)的概念引入此相機(jī)滑塊。關(guān)鍵幀是一種在視頻和音頻制作中非常常用的技術(shù)。它可以實(shí)現(xiàn)非線性相機(jī)移動(dòng),相機(jī)移動(dòng)到某個(gè)位置,等待,然后以不同的速度移動(dòng)到另一個(gè)位置,等待,然后進(jìn)入第三個(gè)位置等。
藍(lán)牙/無(wú)線電話控制。能夠無(wú)線配置攝像機(jī)滑塊的參數(shù)并能夠在難以訪問(wèn)的位置部署攝像機(jī)滑塊真的很酷。手機(jī)應(yīng)用程序還可以提供集成關(guān)鍵幀的機(jī)會(huì),如上一段所述。
-
相機(jī)
+關(guān)注
關(guān)注
4文章
1365瀏覽量
53809
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論