第1步:計劃
我希望相機在兩個方向上移動,即在水平(X)和垂直(Y)軸。為此,我需要兩臺電機。
我們應該可以選擇兩個軸的起始位置和停止位置。
電機的運動將使每個照片后的軸旋轉1度。
為了獲得如此精確的控制,我將使用伺服電機。
此外,我們應該能夠設置時間間隔。
我希望它是便攜式的,所以我決定在LiPo電池上運行它,這意味著需要充電和升壓電路。
最后,大腦控制所有這一切將是Arduino。 ATMega328p將作為一個獨立的微控制器使用。
我使用的是GoPro相機,因為它很小,并且很容易使用時間。您可以使用任何其他小型相機或手機。
第2步:組件列表
1x ATmega328p(帶Arduino引導程序)
2x MG995伺服電機
1x MT3608升壓轉換器
1x TP4056 LiPo電池充電模塊
1x SPDT開關
1x 16 MHz晶振
2x 22pF電容
2x 10k電阻
1x電位計(任何值)
1x按鈕(常開)
可選:
3D打印機
第3步:設計PCB
為了使電路盡可能小,我選擇了印刷電路板。你可以在家里自己蝕刻電路板,或讓專業(yè)人士為你努力工作,這就是我所做的。
當一切正常在面包板上工作時,我們可以從PCB設計過程開始。我選擇EasyEDA進行設計,因為它讓像我這樣的初學者很容易。
檢查,檢查并檢查! 確保您沒有遺漏任何內容。一旦你完全確定,點擊Generate Fabrication File下載Gerber文件,或者你可以使用下面給出的選項直接從JLCPCB訂購它只需2美元。
一旦你收到/制作你的PCB,它就是時間來填充它。準備好電路圖并按照絲網標記開始焊接組件。
用異丙醇焊接后清潔PCB以去除焊劑殘留物。
步驟4:把事情放在一起
您不需要花哨的3D打印機。使用適當?shù)墓ぞ呖梢苑浅]p松地構建零件。我最近買了一臺3D打印機,并且急于在我的項目中使用它。我找到了Thingiverse的部分零件。
GoPro Mount:https://www.thingiverse.com/thing:53680
Servo Horn:https://www.thingiverse。 com/thing:2794688
焊接到電源開關的電線,帶有母頭的電位器和按鈕,并將它們連接到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:工作
打開主開關。
X軸有效。將鍋轉到您想要開始游戲中時光倒流的位置。按“選擇”按鈕確認起始位置。之后,Y軸將處于活動狀態(tài)。選擇Y軸起始位置。
對X軸和Y軸停止位置重復上述步驟。
現(xiàn)在,使用底池,選擇之間的時間間隔。每一槍。鍋的旋轉分為6個部分,間隔為1秒,2秒,5秒,10秒,30秒和60秒。您可以更改 setTimeInterval()功能中的間隔,如圖所示。按下“選擇”按鈕進行確認。
舵機將到達其起始位置,并在時間間隔后移動1度。
順序:
設置X軸起始位置
設置Y軸起始位置
設置X軸停止位置
設置Y軸停止位置
設置時間間隔
步驟6:未來升級
1 )目前,由于1次拍攝/度數(shù),我們可以獲得的最多照片是180,因為伺服器可以從0度旋轉到180度。添加齒輪將提高分辨率。因此,我們將有更多的鏡頭,因此,平滑的時間間隔。我對電子產品很滿意,但對機械方面卻不太滿意。期待改進它。
2)電位器可以用旋轉編碼器代替。
3)無線控制,也許?!
-
伺服電機
+關注
關注
85文章
2049瀏覽量
57953 -
電位計
+關注
關注
0文章
253瀏覽量
16983
發(fā)布評論請先 登錄
相關推薦
評論