如何構(gòu)建一個(gè)用于3D掃描的電動(dòng)轉(zhuǎn)臺(tái)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在這個(gè)項(xiàng)目中,我將向您展示如何構(gòu)建一個(gè)用于3D掃描的電動(dòng)轉(zhuǎn)臺(tái)。這個(gè)DIY項(xiàng)目由三個(gè)主要部分組成:頂板、中央齒輪驅(qū)動(dòng)板和底座。頂板保持靜止,作為放置待掃描物體的平臺(tái)。
在設(shè)計(jì)的核心,中間板的特點(diǎn)是一個(gè)內(nèi)部齒輪機(jī)構(gòu),隱藏在視線之外,這是由一個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)。這個(gè)齒輪板旋轉(zhuǎn)360度,包括一個(gè)安裝點(diǎn),用于附加一個(gè)外部3d打印的手機(jī)支架。這使得智能手機(jī)可以在保持固定距離的情況下圍繞物體平滑旋轉(zhuǎn)。
底板提供結(jié)構(gòu)支撐,容納所有必要的部件。頂、底板固定在一起,中間齒輪盤(pán)獨(dú)立旋轉(zhuǎn)。為了確保運(yùn)動(dòng)平穩(wěn),系統(tǒng)用四個(gè)滾珠軸承加固。
掃描時(shí),我使用了一款基于ios的應(yīng)用程序,但用戶可以選擇任何適合自己需求的軟件。這個(gè)項(xiàng)目的主要目標(biāo)是演示逐步建立一個(gè)電動(dòng)轉(zhuǎn)臺(tái)的3D掃描過(guò)程。我們開(kāi)始吧!
這個(gè)項(xiàng)目由三個(gè)主要的3d打印部分組成。第一部分為底座,包括三個(gè)軸承槽、一個(gè)步進(jìn)電機(jī)座、三個(gè)側(cè)面安裝支腿槽和一個(gè)電源開(kāi)關(guān)槽。
第二部分是齒輪盤(pán)。它在中心有一個(gè)軸承槽,是唯一負(fù)責(zé)旋轉(zhuǎn)的運(yùn)動(dòng)部件。在它的一側(cè),有一個(gè)安裝點(diǎn),用于連接手機(jī)座。
第三部分為頂板,放置待掃描物體。這塊是直接從它的中心固定到底板,確保兩者保持完全靜止。
此外,該項(xiàng)目還包括一個(gè)連接到步進(jìn)電機(jī)的小齒輪,三個(gè)固定軸承的引腳和三個(gè)安裝腿。此外,手機(jī)還配有加長(zhǎng)臂和固定板。
如果你沒(méi)有3D打印機(jī),你可以使用PCBWay的3D打印服務(wù)來(lái)獲得這些零件。STL文件是免費(fèi)的。
在硬件方面,需要四個(gè)608 ZZ軸承來(lái)確保更平穩(wěn)的旋轉(zhuǎn)。需要一些螺栓和螺母來(lái)固定步進(jìn)電機(jī)和手機(jī)支架。最后,將使用流行的28BYJ-48愛(ài)好步進(jìn)電機(jī)。
我們將在接下來(lái)的步驟中介紹電子元件?,F(xiàn)在,讓我們開(kāi)始建立固定軸承的基礎(chǔ)。
?將引腳插入底座的引腳槽中,但不要完全插入。
?然后將軸承插入軸承殼,并將銷完全壓入槽中。
?然后將3英尺的碎片插入基座的腳槽中。它足夠緊,但如果你愿意,你可以用M3螺栓固定它。
?取齒輪部件,將一個(gè)軸承壓入齒輪部件中心的軸承槽內(nèi)。
?將齒輪部分放在基座部分的頂部。
?放置頂板,使頂板部分的母槽與底座中心的公槽相匹配。
?最后,插入手機(jī)支架臂和支架,用M5螺栓和螺母固定。
完成了所有3D部件的裝配。手動(dòng)將中間層齒輪部分轉(zhuǎn)動(dòng)幾圈,若轉(zhuǎn)動(dòng)平穩(wěn),拆下頂板和齒輪部分,將步進(jìn)電機(jī)放入槽內(nèi),用M3螺栓固定。然后插入步進(jìn)電機(jī)齒輪。這是所有!現(xiàn)在讓我們進(jìn)入電子步驟。
在電子方面,該項(xiàng)目使用ESP8266開(kāi)發(fā)板,允許在需要時(shí)無(wú)線控制轉(zhuǎn)臺(tái)。對(duì)于步進(jìn)電機(jī)驅(qū)動(dòng)器,使用流行的ULN2003。需要一個(gè)面包板和幾根跳線來(lái)建立電路。
為了給系統(tǒng)供電,將使用一個(gè)9伏的適配器,以及一些電容器和一個(gè)電壓調(diào)節(jié)器,為開(kāi)發(fā)板提供5伏的電壓。一個(gè)電路圖已經(jīng)分享,以幫助您建立面包板設(shè)置。但是,將面包板放置在底座內(nèi)可能會(huì)干擾旋轉(zhuǎn)齒輪,并且松動(dòng)的電線可能導(dǎo)致斷開(kāi)或短路。
出于這個(gè)原因,將使用自定義PCB代替。先前設(shè)計(jì)的PCB非常適合這個(gè)項(xiàng)目。PCB上的電源連接器已經(jīng)更新,最新的版本現(xiàn)在可以在PCBWay項(xiàng)目頁(yè)面上找到。
現(xiàn)在,收集必要的組件和焊接工具——讓我們開(kāi)始焊接吧!
如果PCB的焊接過(guò)程完成,將步進(jìn)電機(jī)驅(qū)動(dòng)芯片插入板中。確保正確對(duì)齊-芯片上的缺口應(yīng)該與PCB上的缺口匹配。
接下來(lái),將PCB放在基板上并連接步進(jìn)電機(jī)。現(xiàn)在,是時(shí)候設(shè)置電源連接了。一個(gè)2針的開(kāi)關(guān)用于接通和關(guān)閉電路,但這是可選的——你也可以直接連接電源適配器。
由于該項(xiàng)目使用較舊的PCB版本,因此將使用桶頂連接。然而,更新的PCB版本包括一個(gè)2針端子塊,更容易布線。將電源線剪成合適的長(zhǎng)度,連接到開(kāi)關(guān)上,并焊接固定。為了防止短路,我使用了電工膠帶,但為了更安全的連接,建議使用熱縮管。
一旦電路設(shè)置好,我們就可以開(kāi)始編程了。打開(kāi)提供的源代碼,并根據(jù)您的電機(jī)連接更新引腳號(hào)碼。這是一個(gè)簡(jiǎn)單的代碼,使步進(jìn)電機(jī)在一個(gè)方向上旋轉(zhuǎn)。將代碼上傳到電路板后,將其插入PCB板并上電。
在第一次測(cè)試中,馬達(dá)熄火并發(fā)出一些噪音。如果發(fā)生這種情況,請(qǐng)嘗試反轉(zhuǎn)電機(jī)連接。您可以更改代碼中的引腳序列或簡(jiǎn)單地翻轉(zhuǎn)電機(jī)連接器。
現(xiàn)在它工作了!馬達(dá)運(yùn)轉(zhuǎn)平穩(wěn)。接下來(lái),把齒輪板在中心。如果旋轉(zhuǎn)仍然是平穩(wěn)的,附加頂板以及。
正如你所看到的,轉(zhuǎn)盤(pán)現(xiàn)在功能齊全,旋轉(zhuǎn)起來(lái)毫不費(fèi)力。在下一步中,我們將探索應(yīng)用程序端。
在研究iPhone的3D掃描應(yīng)用程序時(shí),我在YouTube頻道Through Iris上看到了一個(gè)很棒的視頻。這個(gè)視頻回顧了多個(gè)應(yīng)用程序,對(duì)于這個(gè)項(xiàng)目,我選擇了Polycam。由于這個(gè)項(xiàng)目的主要焦點(diǎn)是電動(dòng)轉(zhuǎn)盤(pán),我將只介紹應(yīng)用程序的基本使用。如果你也想使用Polycam,我建議你在YouTube上觀看Andrew Sink的一步一步的指南。
下載應(yīng)用程序后,您可以關(guān)閉訂閱頁(yè)面,繼續(xù)免費(fèi)測(cè)試。在掃描界面中,您將發(fā)現(xiàn)兩種捕獲模式。在手動(dòng)模式下,每次拍攝你都需要按下快門(mén)按鈕,而在自動(dòng)模式下,你只需要在掃描開(kāi)始和結(jié)束時(shí)按下錄制按鈕。
現(xiàn)在,把你想要掃描的對(duì)象放在旋轉(zhuǎn)工作臺(tái)的正中央。然后,把你的手機(jī)安裝在支架上,按下錄制按鈕,然后啟動(dòng)轉(zhuǎn)盤(pán)。該應(yīng)用程序?qū)⒆詣?dòng)捕獲和保存圖像在定期間隔的桌子旋轉(zhuǎn)。如果需要,還可以降低電機(jī)步進(jìn)速度,這可以提高掃描質(zhì)量?;谠创a中當(dāng)前的步進(jìn)速度,一個(gè)完整的旋轉(zhuǎn)捕獲大約60個(gè)圖像。
掃描完成后,停止錄制并按應(yīng)用程序中的上傳和過(guò)程完成掃描?,F(xiàn)在,你的3D網(wǎng)格已經(jīng)準(zhǔn)備好了!看看結(jié)果,我對(duì)它的效果感到驚訝,即使是快速的測(cè)試掃描。有了更精確的設(shè)置,我相信細(xì)節(jié)會(huì)更好。
代碼
// wait for a single step of stepper
int delaytime = 2;
// ports used to control the stepper motor
// if your motor rotate to the opposite direction,
// change the order as {4, 5, 6, 7};
int port[4] = {15, 13, 12, 14};
// sequence of stepper motor control
int seq[8][4] = {
{ LOW, HIGH, HIGH, LOW},
{ LOW, LOW, HIGH, LOW},
{ LOW, LOW, HIGH, HIGH},
{ LOW, LOW, LOW, HIGH},
{ HIGH, LOW, LOW, HIGH},
{ HIGH, LOW, LOW, LOW},
{ HIGH, HIGH, LOW, LOW},
{ LOW, HIGH, LOW, LOW}
};
void rotate(int step) {
static int phase = 0;
int i, j;
int delta = (step > 0) ? 1 : 7;
step = (step > 0) ? step : -step;
for(j = 0; j < step; j++) {
phase = (phase + delta) % 8;
for(i = 0; i < 4; i++) {
digitalWrite(port[i], seq[phase][i]);
}
delay(delaytime);
}
// power cut
for(i = 0; i < 4; i++) {
digitalWrite(port[i], LOW);
}
}
void setup() {
pinMode(port[0], OUTPUT);
pinMode(port[1], OUTPUT);
pinMode(port[2], OUTPUT);
pinMode(port[3], OUTPUT);
}
void loop() {
rotate(100);
}
本文編譯自hackster.io