用于自动 360° 产品摄影的 Arduino 控制器





收集零件和文件





部分:
- Arduino Uno(或类似产品)
- 面包板(适合半尺寸面包板)
- Easydriver 步进电机驱动器 https://www.sparkfun.com/products/12779
- Easydriver 的 2 个散热器(可选,但强烈推荐) https://www.sparkfun.com/products/11510你需要用导热胶带将散热器固定在芯片上。如果你订购了散热器,请确保导热胶带已包含在内,或者可以单独订购。
- 红外 LED 950nm(用于红外摄像机触发器)
- 电阻 220 欧姆(红外 LED 预电阻)
- 压电声音元件(可选,如果您想要反馈声音)
- 一些跳线
- 步进电机外部电源: 我用一个 12V 1A 电源适配器驱动 Trinamic 的 1A NEMA 17 步进电机,效果不错。我还用了一个 24V 3A 电源适配器。Easydriver 开发板最高支持每相 30V 和 750mA 的电压和电流。更多关于 easydriver 规格的信息,请访问: http://www.schmalzhaus.com/EasyDriver/index.html
- 步进电机外部电源插座
- 双极 NEMA 17 步进电机和转盘,例如 FluxGarage“带步进电机的自动转盘”链接: https://www.instructables.com/id/Automated-Turnta...
添加基本按钮控制器...
- 按钮
- 电阻 10k 欧姆(用于按钮)
- LED(状态指示灯)
- 电阻 220 欧姆(状态 LED 的预电阻)
... 或者添加带有显示屏+键盘菜单的高级控制器:
- Adafruit LCD Shield 套件,带 16x2 字符显示屏,例如 https://www.adafruit.com/product/714
下载基本和高级控制器的 Arduino 代码和 Fritzing 图表: https://github.com/FluxGarage/Controller-for-Stepp...
如果您想打开高级控制器的 Fritzing 文档,请确保下载并安装 adafruit 元素:https://blog.adafruit.com/2012/08/27/how-to-insta...
请注意: 图片中我使用的是FluxGarage 的“Tinkerer's Baseplate”和FluxGarage 的“16x2 LCD + 键盘屏蔽前板”。这些组件的使用是可选的,如果您也想使用它们,请点击链接查看相关说明。
组装电路





焊接Easydriver 电路板用于面包板: 为了在面包板上使用 Easydriver,您需要在电路板上焊接一些公针接头。最好的方法是将公针接头插入面包板,将 Easydriver 放在上面,然后焊接针脚。
接线: 按照 Fritzing 基本控制器或高级控制器的接线图所示,连接各个部件。在 GitHub 上下载 Firtzing 接线图,并在第一步中找到链接。
再次检查所有部件是否按如下方式连接:
- Arduino 数字引脚 02 = Easydriver 的 dir 引脚
- Arduino 数字引脚 03 = Easydriver 的步进引脚
- Arduino 数字引脚 09 = 压电输出
- Arduino 数字引脚 12 = 红外 LED 输出(在 LED 前放置 220 欧姆预电阻)
+ 对于基本控制器:
- Arduino 数字引脚 04 = 按钮输入(在按钮接地前放置 10k 欧姆电阻)
- Arduino 数字引脚 13 = 状态 LED 输出(在 LED 前放置 220 欧姆预电阻)
+ 高级控制器:
- 将显示器 + 键盘屏蔽堆叠到 arduino 上,实际上使用的那些引脚是:Arduino 模拟引脚 A4 + A5 和 5V + GND。
连接步进电机: 连接双极步进电机(4 线)需要将电机的两个线圈(A 和 B)连接到 EasyDriver 开发板的正确引脚。 请查看本页中间的图表以及您具体步进电机的规格: http://www.schmalzhaus.com/EasyDriver/index.html
您还可以在这里找到有关连接步进电机和 Easydriver 的更多信息:http://bildr.org/2011/06/easydriver/
连接外部电源 Easydriver 开发板在右上方有两个独立的电源引脚(M+ 和 Ground)。开发板本身从 Arduino 获取电源,而独立的输入为步进电机供电。如果您使用典型的“开箱即用”电源适配器和插座,则应将“+”线连接到 easydriver 的“M+”引脚,将“-”线连接到 easydriver 的“GND”引脚。通常“+”在内侧,而“-”在插头的外侧。但要小心,有些电源适配器允许切换极性!如果您错误地连接了 easydriver,它可能会损坏,请记住这一点。
将源代码上传到Arduino

在 Github 下载 Arduino 源代码: https://github.com/FluxGarage/Controller-for-Steppermotor-Turntable-and-IR-Camera-Shutter
下载Arduino IDE:
https://www.arduino.cc/en/Main/Software
下载第三方库并将其复制到 IDE 的库文件夹: ... 用于相机快门: https://github.com/dharmapurikar/Arduino/tree/mast... ... 用于 Adafruit 16x2 显示器+键盘屏蔽: https://github.com/adafruit/Adafruit-RGB-LCD-Shiel...
该代码已经过测试,可以与最新的 Arduino IDE(Windows 上为 1.8.7)和 Arduino Uno + Easydriver 步进电机驱动器 + Adafruit 16x2 显示器+键盘屏蔽、+ Trinamic 步进电机和尼康 D60 相机完美配合。
调整代码以适应您的特定相机: 如上所述,我使用了 Sebastian Setz 的“multiCameraIrControl.h”库。为了使其适用于您的相机,您必须删除相机制造商名称前的注释斜杠,并在所有其他制造商名称前添加斜杠:
在“snap”功能中做类似的调整:
请注意:很遗憾,除了我自己的尼康 D60 之外,我暂时无法测试其他红外触发相机。相机快门库应该兼容不同厂商的多种相机,而不仅仅是代码中提到的特定型号。如果您能分享您使用佳能、美能达、奥林巴斯、宾得或索尼相机的体验,那就太好了。
操作控制器




控制器的代码分别做了什么? 按下按钮,就会触发“拍照”。每次拍照都是以下序列的有限循环:
- 相机已触发
- 短暂延迟
- 步进电机将旋转预定的角度
- 短暂延迟
拍摄基于一组决定其具体行为的变量。您可以在源代码(简易控制器版本)或显示菜单(高级控制器版本)中更改这些变量。
操作基本控制器:
在基础控制器上,状态 LED 指示灯会显示系统是否已准备好运行。开始拍摄时,LED 指示灯会熄灭。您可以按住按钮,直到出现“中断音”且转盘停止,从而中断拍摄。观看本教程顶部的视频,在“实际操作”中体验一下。
拍照的变量可以在代码顶部找到,可以通过修改它们来修改拍照效果。以下是它们的初始值:
操作高级控制器:
开启高级控制器后,FluxGarage 徽标会显示 4 秒。之后,控制器即可运行,并显示可调整变量列表:
- ST = 步数,可以是 10、20 或 40
- SP = 旋转速度,可以是 1-5,其中 1 是最慢的
- DE = 每一步前后的延迟,以十分之一秒为单位,可以是 5、10、25、50
- LI = 确定拍摄时显示屏背景灯是否开启。可以是 1 = 开启,也可以是 0 = 关闭。
您可以使用左右按钮浏览变量类型,并使用上下按钮更改值。 按下“选择”按钮即可开始拍摄,按住“选择”按钮直至出现“中断音”即可中断拍摄。观看本教程顶部的视频,在“实际操作”中体验一下。
开始拍摄

如果你已经搭建了自己的控制器和转盘,并且相机也安装好了,那么你几乎就可以开始拍摄了。让我分享一些我自己的实验心得:
- 使用灯罩均匀地照亮物体。你可以在 instructables.com 上找到很多很棒的教程,教你如何制作自制灯箱。此外,你也可以在很多网店买到价格实惠的纺织灯罩。
- 使用相同色温(开尔文)的灯泡
- 手动将物体聚焦在转盘上,关闭相机的自动对焦功能
- 如果使用三脚架,请关闭相机的图像稳定器
- 在背景中选择一个不会出现拍摄物体的测量范围。这样做可以避免图像序列中出现闪烁。另一种方法是手动设置相机的曝光时间等。
- 如果您想将 360 度图像包含到您的网站中,请使用 JavaScript 插件,例如 Petr Vostřel 开发的“Jquery Reel Plugin”,又名“PISI” → http: //jquery.vostrel.cz/reel “Codyhouse”开发的“360 Degrees Product Viewer” → https://codyhouse.co/gem/360-degrees-product-view...
这是我的一次拍摄的结果(使用上述设置创建): http://www.fluxgarage.com/turntable_360viewer.html











