第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
为了使电路尽可能小,我选择了印刷电路板。你可以在家里自己蚀刻电路板,或让专业人士为你努力工作,这就是我所做的。
当一切正常在面包板上工作时,我们可以从PCB设计过程开始。我选择EasyEDA进行设计,因为它让像我这样的初学者很容易。
检查,检查并检查! 确保您没有遗漏任何内容。一旦你完全确定,点击Generate Fabrication File下载Gerber文件,或者你可以使用下面给出的选项直接从JLCPCB订购它只需2美元。
一旦你收到/制作你的PCB,它就是时间来填充它。准备好电路图并按照丝网标记开始焊接组件。
用异丙醇焊接后清洁PCB以去除焊剂残留物。
步骤4:把事情放在一起
您不需要花哨的3D打印机。使用适当的工具可以非常轻松地构建零件。我最近买了一台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轴将处于活动状态。选择Y轴起始位置。
对X轴和Y轴停止位置重复上述步骤。
现在,使用底池,选择之间的时间间隔。每一枪。锅的旋转分为6个部分,间隔为1秒,2秒,5秒,10秒,30秒和60秒。您可以更改 setTimeInterval()功能中的间隔,如图所示。按下“选择”按钮进行确认。
舵机将到达其起始位置,并在时间间隔后移动1度。
顺序:
设置X轴起始位置
设置Y轴起始位置
设置X轴停止位置
设置Y轴停止位置
设置时间间隔
步骤6:未来升级
1 )目前,由于1次拍摄/度数,我们可以获得的最多照片是180,因为伺服器可以从0度旋转到180度。添加齿轮将提高分辨率。因此,我们将有更多的镜头,因此,平滑的时间间隔。我对电子产品很满意,但对机械方面却不太满意。期待改进它。
2)电位器可以用旋转编码器代替。
3)无线控制,也许?!
-
伺服电机
+关注
关注
85文章
2030浏览量
57710 -
电位计
+关注
关注
0文章
253浏览量
16953
发布评论请先 登录
相关推荐
评论