sysydf 发表于 2017-9-4 22:07

教你做个小玩意儿,试着把梵高的星空拍进你自己的照片里

下午我在群里发了张螺旋星轨的图,玻豪觉得有点意思,就让我发论坛来跟大家同乐一下,我才意识到,这个真有得可聊。

螺旋星轨就如下图那样,也许有人见过,也知道它是怎么弄出来的,但我第一次看到它的时候,思路却大开了
去年夏天,我在一个专业视频制作的公众号里头次看到类似的照片,首先想起了梵高的《星空》,然后就试着拆解图片——琢磨着它是怎么拍出来的
做影视拍摄的,基本功就是推拉摇移,推和拉针对变焦镜头来说的时候,就是改变焦距,传统的星轨拍摄全程都是焦距不变的,但如果在拍摄的过程中,焦距有变化呢,如果焦距变化是有规律的,缓慢的呢……由焦距变化导致的星轨走向便慢慢的在我脑中形成,就如下图那样



为了实现镜头焦距有规律的缓慢变化,就需要一些手段了,手拧是极其不精确的,这个过程我让单片机加步进电机帮我来做

先设计流程,图我就不画了,简单说说就能明白:
我常用的广角镜头,变焦全程转动大约56.6°,每次拍星轨,不考虑做视频,至少200张照片,我希望每拍一张照片,焦距等量的变动一点,直到拍完200张照片,完成全程变焦。说白了,我要的就是一个挂在变焦环上的步进系统。

我手头有的材料:

arduino pro mini—— 做全局控制
easy driver——做电机驱动
28步进电机/42步进电机+1:120行星减速箱
12v电源
佳能相机+图丽11-16mm镜头
一个大齿轮

easy driver可以驱动普通的步进电机,具体参数可以看这里:http://www.schmalzhaus.com/EasyDriver/index.html
搭配arduino的例子可以参考这里:http://www.schmalzhaus.com/EasyDriver/Examples/EasyDriverExamples.html

我下面会给一段代码,就是用上面第二个连接里“Example 1.5: Moving when a button is pressed”改的,就连连线图也几乎一样
在程序上,基本没有难度,如果你是理科生,英语没问题的话,看一会儿就明白了,连线就更简单了,下图是我测试时候的样子,蓝色模块是arduino,红色模块是驱动easy driver,面包板在运行中没起到作用,而是用来连接arduino和下载器的



这里有一点要说明,easy driver散热量有点大,但挂上28电机之后,用一分钟,电机也会很烫,换成42电机就正常,所以成品我还是用笨重的42电机,另外,我的42电机是带减速箱的,这个好处也是很实在的,我的镜头变焦环拧到头,也只变化了56.6°,拍200张照片,对电机本身,每张照片就只能转0.283°,我的42电机和28电机转一步是1.8°,做1/8细分之后一步也有0.225°,不用减速箱,丢步是肯定的了!加上1:120减速箱之后,对于步进电机主轴来说,每拍一张照片所要转动的角度就是56.6°÷200×120=33.96°,easy driver默认的细分数是1/8,这样原本一步转1.8°,就变成了一步转0.225°,所以每拍一张照片,步进电机转动的步数就是33.96°÷0.225°=150.93,取整数为151步,这就是下面代码中要用到的重要数据“DISTANCE 151”,这样,按键每次被按下,步进电机都只会走151个细分步数。



#define DISTANCE 151


int StepCounter = 0;
int Stepping = false;


void setup() {               
pinMode(8, OUTPUT);   
pinMode(9, OUTPUT);
pinMode(7, OUTPUT);
digitalWrite(8, HIGH);
digitalWrite(9, LOW);
digitalWrite(7, LOW);


pinMode(3,INPUT);
}


void loop() {
if (digitalRead(3) == LOW && Stepping == false)
{
    Stepping = true;
}


if (Stepping == true)
{
    digitalWrite(7, HIGH);
    digitalWrite(9, HIGH);
    delay(1);         
    digitalWrite(9, LOW);
    delay(1);


    StepCounter = StepCounter + 1;


    if (StepCounter == DISTANCE)
    {
      digitalWrite(7, LOW);
      StepCounter = 0;
      Stepping = false;
    }
}
}


ps:出于省电和芯片降温的目的,我增加了一个控制键,就是代码中,arduino 7脚上的那个,它同时是整个系统的开关,每拍完一张照片,按下7脚开关键不放,系统通电,同时按一下执行按键,电机才会转动一次,然后松开开关键,系统也就完全断电了,这样真的能让easy driver凉快很多!如果拍摄全程那2个多小时一直让它开着,真不知道最后会发生什么情况……

pps:arduino的8脚决定步进电机转动的方向,也决定你拍摄时镜头起始点是广角端还是长焦端,在这里大家可以想象一下,在拍摄星轨时,焦距从大变到小和从小变到大的结果是不是一样的呢?

总之,最后安装起来就是这个样子的,如下图




为了保(zhuang)险(B)我还是给easy driver加上了散热片和风扇{:5_304:}



装个外壳更安全一些,看见那个大齿轮了没,与之对应的是下面的这个东东,把它绑在变焦环上就可以跟齿轮联动了



全都搞定了,我就出门外拍,选好地景,等公园里的灯都关了,就开始拍,把镜头中心对准北极星,200张,拼凑成下图
(请原谅,跟相机的组装图我是怎么也找不到了,或者当时根本没拍{:5_290:}这点大家可以发挥一下想象力)



幸亏那天大气一般,星轨不是那么明显,这才能对比出来,对比本贴第一张图,我拍的这张很不完美,星轨是断档的,如果在天气一般光污染比较严重的情况下,正对北天的星轨就是这样断档的,除非我从下午就开始拍,当然那是不可能的。帖子第一张照片其实只是用一张图片P出来的,插件名叫“莫迹”,貌似可以用在light room或者ps里,它还能p出下面这样的照片



这个插件我是今年才听说的,还没用过,不过我也庆幸没有在一开始就了解到它,否则也不会有这么个有意思的制作过程和拍摄过程了。

如果有一个环境极佳的地方,用这个小玩意,也许真能拍出类似《星空》的那种效果来

去年我还有几个使用这个玩意的实验要做,还没实现,不过也是可以想象出结果的,
比如:
镜头中心不对着北极星,照片会是什么样子的?
拍过南天星轨的人应该知道,正南方向的星轨是横置的双曲线,如果在拍南天星轨的时候用这个小东西,照片是怎么样的?

大家如果有兴趣,可以先在纸上画画。
最后,祝你们玩得愉快!


对了,arduino pro mini的管脚如下图,这是目前最小的arduino,你也可以用更大一些的

90后王一帆 发表于 2017-9-4 22:18

这个真心棒!!!

文玩核桃 发表于 2017-9-4 22:30

Mark!

梦中游 发表于 2017-9-4 22:49

本帖最后由 梦中游 于 2017-9-4 22:58 编辑

这个有意思啊,哈哈。不过给个建议吧,不要用那个塑料的镜头调焦环了。我买了一个塑料调焦环(0.8模齿),也是用齿轮进行咬合驱动,可是那个调焦环的齿会在拉伸的情况下变形,于是就无法和电机的齿轮咬合,所以现在改用同步带。

20040747 发表于 2017-9-4 23:20

这个可以呀,技术高超!

弼马温1984 发表于 2017-9-5 00:33

easydrive电流过大,所以才会发热厉害,可以尝试这样调电流:nano的一个模拟IO接驱动的ref脚,用程序改变IO的输出电压,从而改变驱动的电流。
简单一点可以换4988驱动,拧电位器可改变驱动电流。
另外,不工作时可以将驱动的EN脚拉高。

ccqhms 发表于 2017-9-5 07:30

这个别样的星轨很有意思。

513208396 发表于 2017-9-5 08:25

不错 思想有多远 技术就有多高

zhangshihan 发表于 2017-9-5 08:36

额,,一个字都没看明白。。太复杂了。。

B-2688 发表于 2017-9-5 09:57

zhangshihan 发表于 2017-9-5 08:36
额,,一个字都没看明白。。太复杂了。。

有单片机开发基础的就明白LZ说的是什么了

skywalkerxx 发表于 2017-9-5 10:09

玩的水平太高了!{:3_210:}

mandii 发表于 2017-9-5 10:28

螺旋軌是不錯,可用別的圖片ps合成就沒意義了

185937899 发表于 2017-9-5 10:33

66666666666

sysydf 发表于 2017-9-5 13:37

梦中游 发表于 2017-9-4 22:49
这个有意思啊,哈哈。不过给个建议吧,不要用那个塑料的镜头调焦环了。我买了一个塑料调焦环(0.8模齿), ...

那要怎样的拉伸啊?我这个用的次数少,每次也不会绑得太紧,不过同步带在镜头上是怎么用的?

1401511998 发表于 2017-9-5 13:39

对我来说,你这个就是在秀技术, 我这种小白,完全看不懂。!!

sysydf 发表于 2017-9-5 13:46

弼马温1984 发表于 2017-9-5 00:33
easydrive电流过大,所以才会发热厉害,可以尝试这样调电流:nano的一个模拟IO接驱动的ref脚,用程序改变IO ...

对,它电流是不小,还是光耦式的驱动用处更广泛,只是体积大一点,回头还得买个,之前我有一个,不知道丢哪去了……

sysydf 发表于 2017-9-5 13:48

ccqhms 发表于 2017-9-5 07:30
这个别样的星轨很有意思。

对,因为它太特别了,我一下就被吸引住了

sysydf 发表于 2017-9-5 13:50

zhangshihan 发表于 2017-9-5 08:36
额,,一个字都没看明白。。太复杂了。。

所以我给出两个方法来实现,一种是用我做的那个东西拍,一种只需要一个小插件就可以了

sysydf 发表于 2017-9-5 13:51

B-2688 发表于 2017-9-5 09:57
有单片机开发基础的就明白LZ说的是什么了

对于学过编程的人来说,应该是很好理解的

sysydf 发表于 2017-9-5 13:54

mandii 发表于 2017-9-5 10:28
螺旋軌是不錯,可用別的圖片ps合成就沒意義了

是的,所以两种方法都能实现的照片,其中的乐趣却相差甚远
页: [1] 2
查看完整版本: 教你做个小玩意儿,试着把梵高的星空拍进你自己的照片里