第1步:計劃
我希望相機(jī)在兩個方向上移動,即在水平(X)和垂直(Y)軸。為此,我需要兩臺電機(jī)。
我們應(yīng)該可以選擇兩個軸的起始位置和停止位置。
電機(jī)的運(yùn)動將使每個照片后的軸旋轉(zhuǎn)1度。
為了獲得如此精確的控制,我將使用伺服電機(jī)。
此外,我們應(yīng)該能夠設(shè)置時間間隔。
我希望它是便攜式的,所以我決定在LiPo電池上運(yùn)行它,這意味著需要充電和升壓電路。
最后,大腦控制所有這一切將是Arduino。 ATMega328p將作為一個獨(dú)立的微控制器使用。
我使用的是GoPro相機(jī),因?yàn)樗苄。⑶液苋菀资褂脮r間。您可以使用任何其他小型相機(jī)或手機(jī)。
第2步:組件列表
1x ATmega328p(帶Arduino引導(dǎo)程序)
2x MG995伺服電機(jī)
1x MT3608升壓轉(zhuǎn)換器
1x TP4056 LiPo電池充電模塊
1x SPDT開關(guān)
1x 16 MHz晶振
2x 22pF電容
2x 10k電阻
1x電位計(任何值)
1x按鈕(常開)
可選:
3D打印機(jī)
第3步:設(shè)計PCB
為了使電路盡可能小,我選擇了印刷電路板。你可以在家里自己蝕刻電路板,或讓專業(yè)人士為你努力工作,這就是我所做的。
當(dāng)一切正常在面包板上工作時,我們可以從PCB設(shè)計過程開始。我選擇EasyEDA進(jìn)行設(shè)計,因?yàn)樗屜裎疫@樣的初學(xué)者很容易。
檢查,檢查并檢查! 確保您沒有遺漏任何內(nèi)容。一旦你完全確定,點(diǎn)擊Generate Fabrication File下載Gerber文件,或者你可以使用下面給出的選項直接從JLCPCB訂購它只需2美元。
一旦你收到/制作你的PCB,它就是時間來填充它。準(zhǔn)備好電路圖并按照絲網(wǎng)標(biāo)記開始焊接組件。
用異丙醇焊接后清潔PCB以去除焊劑殘留物。
步驟4:把事情放在一起
您不需要花哨的3D打印機(jī)。使用適當(dāng)?shù)墓ぞ呖梢苑浅]p松地構(gòu)建零件。我最近買了一臺3D打印機(jī),并且急于在我的項目中使用它。我找到了Thingiverse的部分零件。
GoPro Mount:https://www.thingiverse.com/thing:53680
Servo Horn:https://www.thingiverse。 com/thing:2794688
焊接到電源開關(guān)的電線,帶有母頭的電位器和按鈕,并將它們連接到PCB上的公頭。
在Arduino IDE中下載并打開附件,并將代碼上傳到Arduino。上傳代碼后,從Arduino板上取下IC并將其插入PCB上。
/*
Author : IndoorGeek
YouTube : www.youtube.com/IndoorGeek
Thank you for downloading. Hope you like the project.
*/
#include
Servo xServo;
Servo yServo;
int potPin = A0;
int val,xStart,xStop,yStart,yStop;
int button = 2;
unsigned long timeInterval;
void setup() {
pinMode(button, INPUT);
xServo.attach(3);
yServo.attach(4);
}
void loop() {
xAxis();
delay(1000);
xStart = val;
yAxis();
delay(1000);
yStart = val;
xAxis();
delay(1000);
xStop = val;
yAxis();
delay(1000);
yStop = val;
setTimeInterval();
delay(1000);
timelapseStart();
}
void xAxis(){
while(digitalRead(button) != HIGH){
val = analogRead(A0);
val = map(val, 0, 1023, 0, 180);
xServo.write(val);
}
}
void yAxis(){
while(digitalRead(button) != HIGH){
val = analogRead(A0);
val = map(val, 0, 1023, 0, 180);
yServo.write(val);
}
}
void setTimeInterval(){ //Change the time intervals according to your camera‘s timelapse settings
while(digitalRead(button) != HIGH){
val = analogRead(A0);
if(val》=0 && val《170){
timeInterval = 1000L;
}
if(val》=171 && val《341){
timeInterval = 2000L;
}
if(val》=342 && val《512){
timeInterval = 5000L;
}
if(val》=513 && val《683){
timeInterval = 10000L;
}
if(val》=684 && val《854){
timeInterval = 30000L;
}
if(val》=855 && val《1023){
timeInterval = 60000L;
}
}
}
void timelapseStart(){
unsigned long lastMillis = 0;
xServo.write(xStart);
yServo.write(yStart);
while(xStart != xStop || yStart != yStop ){
if(millis() - lastMillis 》 timeInterval ){
if(xStart 《 xStop){
xServo.write(xStart);
lastMillis = millis();
xStart++;
}
if(xStart 》 xStop){
xServo.write(xStart);
lastMillis = millis();
xStart--;
}
if(yStart 《 yStop){
yServo.write(yStart);
lastMillis = millis();
yStart++;
}
if(xStart 》 xStop){
yServo.write(yStart);
lastMillis = millis();
yStart--;
}
}
}
}
步驟5:工作
打開主開關(guān)。
X軸有效。將鍋轉(zhuǎn)到您想要開始游戲中時光倒流的位置。按“選擇”按鈕確認(rèn)起始位置。之后,Y軸將處于活動狀態(tài)。選擇Y軸起始位置。
對X軸和Y軸停止位置重復(fù)上述步驟。
現(xiàn)在,使用底池,選擇之間的時間間隔。每一槍。鍋的旋轉(zhuǎn)分為6個部分,間隔為1秒,2秒,5秒,10秒,30秒和60秒。您可以更改 setTimeInterval()功能中的間隔,如圖所示。按下“選擇”按鈕進(jìn)行確認(rèn)。
舵機(jī)將到達(dá)其起始位置,并在時間間隔后移動1度。
順序:
設(shè)置X軸起始位置
設(shè)置Y軸起始位置
設(shè)置X軸停止位置
設(shè)置Y軸停止位置
設(shè)置時間間隔
步驟6:未來升級
1 )目前,由于1次拍攝/度數(shù),我們可以獲得的最多照片是180,因?yàn)樗欧骺梢詮?度旋轉(zhuǎn)到180度。添加齒輪將提高分辨率。因此,我們將有更多的鏡頭,因此,平滑的時間間隔。我對電子產(chǎn)品很滿意,但對機(jī)械方面卻不太滿意。期待改進(jìn)它。
2)電位器可以用旋轉(zhuǎn)編碼器代替。
3)無線控制,也許?!
-
伺服電機(jī)
+關(guān)注
關(guān)注
85文章
2053瀏覽量
58010 -
電位計
+關(guān)注
關(guān)注
0文章
253瀏覽量
16986
發(fā)布評論請先 登錄
相關(guān)推薦
評論