DIY相机滑块与平移和倾斜的头- Arduino为基础的项目

在本教程中,我们将学习如何制作带有云台和云台的电动相机滑块。这个基于Arduino的项目是100%DIY,采用中密度纤维板和胶合板等廉价材料建造,使用Arduino、三个步进电机、一些按钮和一个附在定制PCB上的操纵杆进行控制。尽管如此,最终的结果还是令人印象深刻,超平滑的镜头移动使我们能够获得专业的电影画面。

Overview

使用控制器,我们可以手动移动摄像机,也可以设置起点和终点,然后摄像机将自动从一个位置移动到另一个位置。使用支撑臂,我们可以把滑块安装在一个更小的三脚架上,以任何我们想要的角度,仍然可以得到稳定的运动。

DIY电动相机滑块与平移和倾斜机制Arduino为基础

首先,我使用3D建模软件设计了滑块。

DIY相机滑块与平移和倾斜头部3D模型

你可以从下面的3D模型下载并获得所有尺寸。

Solidworks:

COLLADA文件(可使用SketchUp免费三维建模软件打开):

3D打印GT2滑轮连杆:

Thingiverse

构建相机滑块

所以我开始制作滑轨,我使用了22mm滴答铜管。我决定把滑块做成1米长,所以我把两块切成1米长。铜管很容易氧化,所以我们需要用金属抛光。在我的例子中,我没有,所以我用牙膏来达到这个目的。

清洁铜管道

这不是一个完美的解决方案,但我可以注意到不同,让管道更干净。

然后我继续制作木制底座,两根管子将连接在上面,它也将用于将滑块安装到三脚架上。使用一个圆锯我切了两片21毫米蜱胶合板,并把他们粘在一起,以得到一个单一的ticker片。然后,我用实木制作了一个三脚架安装板的复制品,并用木胶和螺丝钉把它粘在胶合板上。现在滑块底座可以很容易地安装在三脚架上。

木制三脚架安装板

我将使用8mm螺纹杆安装滑轨的基础上,所以我在基础上做了两个洞,插入138mm长的杆,我之前削减他们的尺寸。接下来,我不得不在管道上钻8毫米的孔,这实际上有点棘手。

将导轨安装到底座上

为了这个目的,我做了一个简单的夹具,我把铅笔提高到11mm的高度,或者是管径的一半。然后我把管子固定在一个平面上,用夹具从两边标出管子。这样就可以从两边精确地得到小孔。所以首先我用一个锋利的螺旋尖标记钻孔点,然后用2、4、6和8毫米钻头逐渐钻孔。

为中心钻孔标记管道

之后,我插入导轨通过螺纹杆和使用一些垫圈和螺母,我把他们固定到滑块基地。用同样的方法,我用一块胶合板和一根螺纹杆固定了铁轨的两端。

固定滑轨的两端

接下来是滑动平台。再次,我使用圆锯切割8毫米刻度中密度纤维板的大小根据三维模型。我还做了一些8毫米的孔,螺纹杆上的轴承将被连接。为了组装平台,我用了木胶和一些螺丝。使用无绳钻,首先,我做了导向孔,然后做了反水槽,把3毫米的螺丝拧到位。

一旦面板是固定的,我继续组装轴承系统。我使用的轴承是608Z,外径22mm。两个垫圈和两个轴承之间的螺母使他们之间有足够的距离,从而使22毫米轨道良好接触。

滑动轴承系统用于22mm管道

为了使平台在一定角度使用滑块时更加安全,我以同样的方式在平台的底边又插入了两组轴承。最后,滑台运转得很好。

摄像滑块轴承系统

在这里,我们可以注意到,现在在我的小型非重型三脚架上沿滑块移动平台时,头部无法承受平台的重量,因此我必须制作一个支撑臂以稳定滑块。因此,我用两块木头和一些螺母和螺栓制作了一个简单的夹子,可以固定在三脚架的一条腿上。

三脚架腿夹diy

该夹具上有一个螺栓,可以固定支撑臂。接下来,我必须在支撑臂上做一个槽,以便能够以不同的角度定位滑块。我简单地钻了许多6毫米的孔,彼此接近,然后用锉刀做了一条细直线。这个支持系统最终运行得很完美。

摄像机滑块支撑臂

我继续这个构建与添加腿的滑块,以防你不想或需要使用三脚架。我用8毫米中密度纤维板做的。使用手锯和锉刀,我很容易就得到了想要的腿的形状。然后用一些胶水和两个螺母,我把它们固定到滑块的末端。

将腿连接到滑块上

下一阶段是构建云台和倾斜系统,该系统将连接在滑动平台的顶部。我用圆锯切下所有需要的部分,尺寸取自3D模型。当滑块设置成一定角度时,我使用了几块胶合板来制作相机调平平台的铰链机构,以及一些MDF板,我在这些板上为电机和平移系统的轴承制作了适当的孔。

我继续安装步进电机和滑动平台的正时皮带。在平台的一侧,我用一块MDF板和一些螺钉和螺栓固定了步进电机。在滑块的另一侧,我固定了一个惰轮,这样现在我就可以安装正时皮带了。使用两个螺栓和拉链,我轻松地将正时皮带固定到滑动平台上。

通过这一步,滑动机构就完成了。

我继续制作平底锅和倾斜系统的上部。根据3D模型,我为步进电机和轴承做了所有合适的孔,并把所有的东西粘在一起。

我的一个朋友3D打印了80个牙齿滑轮给我。这样,我得到了5倍的速度减少相对于16齿滑轮附在步进电机。

80齿皮带轮,减速5倍

现在我需要根据我的设置做一个闭环定时皮带,所以我测量了我需要多少皮带的长度,剪了它,然后简单地用CA胶水粘上它,并添加了一块胶带在它上面。CA胶做了一个伟大的工作与橡胶,所以闭环皮带工作没有一个问题。

接下来,我开始了平移和倾斜系统的最后组装。首先,我确定倾斜电机使用一些螺栓,然后添加两个轴承的地方,而固定他们在槽与一些环氧树脂。然后我用一些8mm的螺栓将倾斜平台固定在盘式平台上,同时我将80齿滑轮与同步带连接在一起。

安装平底锅和倾斜平台

这里,我注意到皮带有点松,但我添加了一个小轴承的地方,步进电机螺栓去作为一个皮带张紧器。这件事成功了,所以现在腰带有了足够的张力来正常工作。

接下来,我固定了盘式电机,并在调平平台的顶部加上轴承,以及底部。然后我通过它们插入一个螺栓,添加推力轴承,80齿滑轮和同步带,并在它们的顶部添加之前组装的倾斜头。最后,我使用螺栓固定它,这是它,与此步骤的建设滑块完成。

固定平底锅并倾斜头部

线路图

好的,接下来是有趣的部分或安装电子元件。必威lol这里是这个DIY相机滑块项目的电路图。

DIY电动摄像滑块,Arduino项目电路图

因此,三个NEMA 17步进电机通过三个A4988步进驱动器控制.我们使用一个连接Arduino模拟输入的电位器来控制滑块的移动,我们使用一个操纵杆模块来控制平移和倾斜的头部,操纵杆模块实际上是由两个电位器组成的,所以它连接两个模拟输入。还有另一个电位器用于设置自动运动的速度,从进和出的位置。这些进出位置是在按钮的帮助下设定的。这个按钮有一个上拉电阻,它连接到Arduino板的一个数字引脚。还有一个复位按钮,一个电源开关和一个电源插孔,以及一个限位开关的滑块和两个led指示进出状态。我们可以用9v或12V为这个项目供电。

你可以从下面的链接获得这个项目所需的组件:

必威外围提钱披露:这些是附属链接。作为一个亚马逊助理,我从合格的购买中赚取。

印刷电路板设计

接下来,根据电路图我设计了一个定制印刷电路板以保持电子元件的组织性。必威lol

DIY相机滑块PCB设计

我是用EasyEDA免费在线电路设计软件。电路有相当多的连接,所以我使用了顶部和底部层,并设法得到功能和良好的外观PCB。完成这一步后,我生成了制造PCB所需的Gerber文件。然后我从JLCPCB该公司实际上是本教程的赞助商。

在这里,我们可以简单地上传Gerber文件,一旦上传,我们可以再次在Gerber查看器中查看PCB。如果一切正常,那么我们可以继续,为我们的PCB选择我们想要的属性,然后我们可以以合理的价格订购我们的PCB。请注意,如果这是您第一次从JLCPCB订购,您最多只需2美元即可获得10块PCB。

然而,一周后pcb就到了。PCB的质量是伟大的,我必须承认,这是相当令人满意的有自己的PCB设计制造。

摄像滑块PCB质量

组装电子产品必威lol

好了,接下来我开始组装电子元件。必威lol我开始焊接引脚头PCB。这使得在需要时更容易连接和断开组件。我实际上使用引脚头的一切,除了电容和电阻,我直接焊接在PCB上。因此,我继续焊接跳线到所有的电子元件。必威lol

通过这种方式,我可以轻松地将组件安装在控制器外壳上,同时将它们连接到PCB。

Arduino diy相机滑块电子元器件必威lol

至于控制器的外壳,我决定用4毫米的透明亚克力做,因为我想让所有电子元件的美都可见。必威lol我用圆锯把嵌板按箱子的尺寸锯开。然后,我用钻头和Forstner钻头在面板上开了一个口子,用于按钮、电位器、电源开关和操纵杆。在使用了5分钟的环氧树脂后,我组装了外壳,至于顶部,我插入并粘上了两个螺栓,通过这两个螺栓,前面板可以插入,并使用螺母固定在它的顶部。

透明亚克力控制器盒

最后我开始组装电子,将Arduino板和A4988步进驱动插入到P必威lolCB上。然后我继续插入和固定按钮和前面板上的其他组件。

一旦我把它们固定好,我就把元件连接到PCB上合适的引脚头上。在机箱的侧面板上,我添加了电源插座,然后将PCB插入机箱。在同一个面板上还有一个孔,我通过这个孔将跨接导线连接到驱动器和步进电机上,还有一个限位开关,我把它放在滑块的末端。

使用一些热收缩管,我组织了从控制器外壳的跳线,最后,剩下要做的是连接控制器与三个步进电机和限位开关。

至于给滑块供电,我用了三节3.7V的锂离子电池串联起来,产生大约11V的电流。就这样,滑动条完成了,工作得很好。

DIY相机滑块Arduino代码

现在,本教程剩下的内容是看看Arduino代码,并解释程序如何工作。由于代码较长,为了更好地理解,我将在小节中发布程序的源代码,并对每个小节进行说明。在本文的最后,我将发布完整的源代码。

这个程序是基于AccelStepper图书馆迈克·麦考利。这是一个令人难以置信的图书馆,使容易控制多个步进电机在同一时间。因此,一旦我们包含了这个库和multistep .h库(它是其中的一部分),我们需要定义所有将要使用的Arduino引脚,定义步进程序的实例,以及下面程序所需的一些变量。

#包括#包括#定义JoyX A0/操纵杆X引脚#定义JoyY A1/操纵杆Y引脚#定义滑块A2/滑块电位计#定义输入点A3/输入和输出速度电位计#定义操纵杆开关10/连接的操纵杆开关#定义输入12/设置按钮#定义限位开关11#定义输入8#outLED 9//定义步进电机和将使用Accel步进电机1(1、7、6)的引脚;//(类型:驱动器、步进、直接)加速步进器步进2(1、5、4);加速步进器步进3(1,3,2);多步步步进控制;//创建MultiStepper long gotoposition的实例[3];//存储每个步进电机int JoyXPos=0的输入或输出位置的阵列;int-joypos=0;int sliderPos=0;int currentSpeed=100;int-inOutSpeed=100;int XInPoint=0;int-YInPoint=0;int点=0;int XOutPoint=0;int点=0;int ZOutPoint=0;int InandOut=0;

在设置部分,我们为步进器设置初始速度值,定义一些引脚模式,以及将三个步进器添加到多步进控制实例“StepperControl”。使用while循环,我们将滑块移动到初始位置,或者它移动到按下限位开关,然后后退200步以释放限位开关。

void setup(){//设置步进初始种子值stepper1.setMaxSpeed(3000);stepper1.setSpeed (200);stepper2.setMaxSpeed (3000);stepper2.setSpeed (200);stepper3.setMaxSpeed (3000);stepper3.setSpeed (200);pinMode(控制操纵开关,INPUT_PULLUP);pinMode (InOutSet INPUT_PULLUP);pinMode (limitSwitch INPUT_PULLUP);pinMode(茵莱、输出); pinMode(outLED, OUTPUT); // Create instances for MultiStepper - Adding the 3 steppers to the StepperControl instance for multi control StepperControl.addStepper(stepper1); StepperControl.addStepper(stepper2); StepperControl.addStepper(stepper3); // Move the slider to the initial position - homing while (digitalRead(limitSwitch) != 0) { stepper1.setSpeed(3000); stepper1.runSpeed(); stepper1.setCurrentPosition(0); // When limit switch pressed set position to 0 steps } delay(20); // Move 200 steps back from the limit switch while (stepper1.currentPosition() != -200) { stepper1.setSpeed(-3000); stepper1.run(); } }

在循环部分,我们开始检查滑块是否已经达到极限位置,或那是极限开关或在它的另一边80cm。

//限制移动-如果按下限位开关或移动距离大于80cm,则不做任何操作,而(digitalRead(limitSwitch) == 0 || stepper1.currentPosition() < -64800) {}

在下一个if语句中,我们通过每次按下操纵手柄开关来增加摇摄和倾斜速度。

//如果按下操纵杆,增加平移和倾斜速度If (digitalRead(JoySwitch) == 0) {currentSpeed = currentSpeed + 50;延迟(200);}

然后我们检查是否按下了Set按钮,这个按钮是用来设置IN和OUT位置的。第一次按下按钮,我们存储步进电机的IN位置,并点亮IN LED。

switch (InandOut) {case 0: //设置IN位置InandOut = 1;XInPoint = stepper1.currentPosition ();inpoint = stepper2.currentPosition();//设置步骤2的IN位置ZInPoint =步骤3. currentposition ();//设置步进3 digitalWrite的IN位置(inLED, HIGH);//在led break中点亮;

同样,在第二次按下时,我们存储输出位置并点亮输出LED。

case 1: // Set OUT position InandOut = 2;XOutPoint = stepper1.currentPosition ();//设置两个步进的OUT点YOutPoint = stepper2.currentPosition();ZOutPoint = stepper3.currentPosition ();digitalWrite (outLED、高);休息;

然后与下一个按钮,我们读取自动速度电位器的值,这是用来设置电机的最大速度。我们还将IN位置放入“gotopposition”数组中,该数组用于moveTo()函数,该函数分别计算所有步进所需的速度。然后使用runspeedtopposition()函数,滑块自动移动到In位置。

case 2: // Move to IN position / go to case 3 InandOut = 3;inOutSpeed = analogRead (inOutPot);//自动速度电位器//将IN位置放入数组gotopposition [0] = XInPoint;gotoposition [1] = YInPoint;gotoposition [2] = ZInPoint;stepper1.setMaxSpeed (inOutSpeed);stepper2.setMaxSpeed (inOutSpeed);stepper3.setMaxSpeed (inOutSpeed);StepperControl.moveTo (gotoposition);//计算所有电机所需的速度steppercontrol . runspeedtopposition (); // Blocks until all steppers are in position delay(200); break;

以完全相同的方式,在第3种情况下或通过再次按下按钮,我们将滑块移动到OUT位置。

case 3: // Move to OUT position / go back to case 2inOutSpeed = analogRead (inOutPot);//将OUT位置放入数组gotopposition [0] = XOutPoint;gotoposition [1] = YOutPoint;gotoposition [2] = ZOutPoint;stepper1.setMaxSpeed (inOutSpeed);stepper2.setMaxSpeed (inOutSpeed);stepper3.setMaxSpeed (inOutSpeed);StepperControl.moveTo (gotoposition);//计算所有电机所需的速度steppercontrol . runspeedtopposition (); // Blocks until all are in position delay(200); break;

如果我们按住Set按钮的时间超过半秒,则执行第4个case语句,这将重置In和OUT位置,以便我们可以设置新的位置。

接下来是操纵杆的平移和倾斜控制。我们从操纵杆获得的模拟值是从0到1024,或者当它停在中间时,数值大约是500。如果我们移动操纵杆到左和模拟值大于600,我们将设置特定的速度运动积极,相反,我们移动操纵杆的正确,我们将电动机的速度设置为负数,这意味着它将旋转相反的方向。

//操纵杆X -平移运动JoyXPos = analogRead(JoyX);//如果操纵杆向左移动,则移动步长2或向左平移if (JoyXPos > 600) {stepper2.setSpeed(currentSpeed);} //如果操纵杆向右移动,则将步进2或向右移动else if (JoyXPos < 400) {stepper2.setSpeed(-currentSpeed);} //如果操纵杆停留在中间,没有移动else {stepper2.setSpeed(0);}

如果它停留在中间,速度设置为0。这种方法用于操纵杆的两轴以及滑块电位器。实际上,在电位器的情况下,我们使用它的模拟值也增加了电机的速度,当我们进一步转动电位器。

//滑动电位器sliderPos = analogRead(Slider);//如果电位器向左,移动滑块向左If (sliderPos > 600) {sliderPos = map(sliderPos, 600, 1024, 0, 3000);stepper1.setSpeed (sliderPos);//当转动时增加速度}//如果电位器向右转动,则滑动条向右移动else If (sliderPos < 400) {sliderPos = map(sliderPos, 400, 0,0, 3000);stepper1.setSpeed (-sliderPos);//在旋转时增加速度}//如果电位器在中间,则没有移动,否则{stepper1.setSpeed(0);}

最后,我们为三个步进电机中的每一个调用runSpeed()函数,并执行上述命令,或适当地旋转电机。

//执行上面的命令-运行步进电机stepper1.runSpeed();stepper2.runSpeed ();stepper3.runSpeed ();

以下是完整的源代码:

/ * DIY相机滑盖云台由德扬Nedelkovski www.HowToMechatronics.com图书馆 -  AccelStepbet188官方网站per迈克麦考利:http://www.airspayce.com/mikem/arduino/AccelStepper/index.html * /#包括的#include 的#define JoyX A0 //游戏杆X销的#define JoyY A1 //操纵杆ý销的#define滑块A2 //滑块电位的#define inOutPot A3 //和移出速度电位的#define JoySwitch10 //操纵杆切换连接的#define InOutSet 12 //设置按钮的#define LimitSwitch使用11#定义inLED 8的#define outLED 9 //定义步进电机和所述销将使用AccelStepper stepper1(1,7,6);//(类型:驱动器,STEP,DIR)AccelStepper stepper2(1,5,4);AccelStepper stepper3(1,3,2);MultiStepper StepperControl;//创建MultiStepper长gotoposition的实例[3];//数组,该数组存储每个步进电机INT JoyXPos = 0 In或Out位置;INT JoyYPos = 0;INT sliderPos = 0;INT currentSpeed = 100; int inOutSpeed = 100; int XInPoint = 0; int YInPoint = 0; int ZInPoint = 0; int XOutPoint = 0; int YOutPoint = 0; int ZOutPoint = 0; int InandOut = 0; void setup() { // Set initial seed values for the steppers stepper1.setMaxSpeed(3000); stepper1.setSpeed(200); stepper2.setMaxSpeed(3000); stepper2.setSpeed(200); stepper3.setMaxSpeed(3000); stepper3.setSpeed(200); pinMode(JoySwitch, INPUT_PULLUP); pinMode(InOutSet, INPUT_PULLUP); pinMode(limitSwitch, INPUT_PULLUP); pinMode(inLED, OUTPUT); pinMode(outLED, OUTPUT); // Create instances for MultiStepper - Adding the 3 steppers to the StepperControl instance for multi control StepperControl.addStepper(stepper1); StepperControl.addStepper(stepper2); StepperControl.addStepper(stepper3); // Move the slider to the initial position - homing while (digitalRead(limitSwitch) != 0) { stepper1.setSpeed(3000); stepper1.runSpeed(); stepper1.setCurrentPosition(0); // When limit switch pressed set position to 0 steps } delay(20); // Move 200 steps back from the limit switch while (stepper1.currentPosition() != -200) { stepper1.setSpeed(-3000); stepper1.run(); } } void loop() { // Limiting the movement - Do nothing if limit switch pressed or distance traveled in other direction greater then 80cm while (digitalRead(limitSwitch) == 0 || stepper1.currentPosition() < -64800) {} // If Joystick pressed increase the Pan and Tilt speeds if (digitalRead(JoySwitch) == 0) { currentSpeed = currentSpeed + 50; delay(200); } // If Set button is pressed - toggle between the switch cases if (digitalRead(InOutSet) == 0) { delay(500); // If we hold set button pressed longer then half a second, reset the in and out positions if (digitalRead(InOutSet) == 0) { InandOut = 4; } switch (InandOut) { case 0: // Set IN position InandOut = 1; XInPoint = stepper1.currentPosition(); // Set the IN position for steppers 1 YInPoint = stepper2.currentPosition(); // Set the IN position for steppers 2 ZInPoint = stepper3.currentPosition(); // Set the IN position for steppers 3 digitalWrite(inLED, HIGH); // Light up inLed break; case 1: // Set OUT position InandOut = 2; XOutPoint = stepper1.currentPosition(); // Set the OUT Points for both steppers YOutPoint = stepper2.currentPosition(); ZOutPoint = stepper3.currentPosition(); digitalWrite(outLED, HIGH); break; case 2: // Move to IN position / go to case 3 InandOut = 3; inOutSpeed = analogRead(inOutPot); // Auto speed potentiometer // Place the IN position into the Array gotoposition[0] = XInPoint; gotoposition[1] = YInPoint; gotoposition[2] = ZInPoint; stepper1.setMaxSpeed(inOutSpeed); stepper2.setMaxSpeed(inOutSpeed); stepper3.setMaxSpeed(inOutSpeed); StepperControl.moveTo(gotoposition); // Calculates the required speed for all motors StepperControl.runSpeedToPosition(); // Blocks until all steppers are in position delay(200); break; case 3: // Move to OUT position / go back to case 2 InandOut = 2; inOutSpeed = analogRead(inOutPot); // Place the OUT position into the Array gotoposition[0] = XOutPoint; gotoposition[1] = YOutPoint; gotoposition[2] = ZOutPoint; stepper1.setMaxSpeed(inOutSpeed); stepper2.setMaxSpeed(inOutSpeed); stepper3.setMaxSpeed(inOutSpeed); StepperControl.moveTo(gotoposition); // Calculates the required speed for all motors StepperControl.runSpeedToPosition(); // Blocks until all are in position delay(200); break; case 4: // If Set button is held longer then half a second go back to case 0 InandOut = 0; digitalWrite(inLED, LOW); digitalWrite(outLED, LOW); delay(1000); break; } } // Joystick X - Pan movement JoyXPos = analogRead(JoyX); // if Joystick is moved left, move stepper 2 or pan to left if (JoyXPos > 600) { stepper2.setSpeed(currentSpeed); } // if Joystick is moved right, move stepper 2 or pan to right else if (JoyXPos < 400) { stepper2.setSpeed(-currentSpeed); } // if Joystick stays in middle, no movement else { stepper2.setSpeed(0); } //Joystick Y - Tilt movement JoyYPos = analogRead(JoyY); if (JoyYPos > 600) { stepper3.setSpeed(currentSpeed); } else if (JoyYPos < 400) { stepper3.setSpeed(-currentSpeed); } else { stepper3.setSpeed(0); } // Slider potentiometer sliderPos = analogRead(slider); // If potentiometer is turned left, move slider left if (sliderPos > 600) { sliderPos = map(sliderPos, 600, 1024, 0, 3000); stepper1.setSpeed(sliderPos); // Increase speed as turning } // If potentiometer is turned right, move slider right else if (sliderPos < 400 ) { sliderPos = map(sliderPos, 400, 0, 0, 3000); stepper1.setSpeed(-sliderPos); // Increase speed as turning } // If potentiometer in middle, no movement else { stepper1.setSpeed(0); } // Execute the above commands - run the stepper motors stepper1.runSpeed(); stepper2.runSpeed(); stepper3.runSpeed(); }

以上就是所有内容,我希望你们喜欢这个Arduino项目并学到了一些新东西。请在下方的评论部分提出任何问题,并检查我的Arduino项bet188me目集合

114关于“带云台和云台的DIY相机滑块——基于Arduino的项目”的思考

  1. 多么酷的项目啊!摄影真的很流畅,给人一种有趣的感觉。教程和视频是无可挑剔的-做得很好!在教程中很难找到这样的细节。

    回复
  2. 你好
    一个非常成功的项目
    在pcb绘制电机滑块时会有一些责任——在a4988连接处只有一个连接(1a, 2a, 2b),在电机盘处有四个连接,pcb设计是否有问题?法拉有多少个电容器?

    回复
  3. 嘿,伟大的教程,因为我想自己做这个构建,我需要尺寸,但我没有程序需要的文件,有办法把它们转换成。pdf文件吗?

    回复
      • 谢谢你分享这个很棒的项目。我最终在SketchUp 2015中打开collada文件,但尺寸与现实相差甚远。我可以做什么来重新调整prolly ?

        回复
        • 谢谢!我最初在Solidworks中设计这个项目,然后将文件转换为collada文件,这样就可以使用SketchUp打开它。我猜是转换后的尺寸不对。我不知道我能做什么。

          回复
  4. 嗨。
    这是一个惊人的工作,你把这里。我很快就能做到。
    只是一个问题可以A4988驱动器可以处理更高的扭矩电机额定nema 17。
    我右边的相机很重(大约3.7公斤),所以要确保垂直/角度提升平稳。
    谢谢。

    回复
    • 谢谢A4988可以处理的额定电流最大为2A,或者您可以使用额定电流为2.5A的DRV8825。然而,3.7kg相当重,所以老实说,我不确定nema 17或这些驱动器是否能够正确完成垂直/角度提升的工作。

      回复
  5. 嗯,视频里的一切都是我做的。但如果我试图连接pcp与电源,短路。或者变得非常非常热。
    我做错什么了吗?

    回复
  6. 你好
    那是一份很棒的工作,一个完美的DIY
    自从我开始在youtube上关注你,已经快一年多了。
    我试着在你们网站上找关于我的部分,但我什么都找不到。我个人更喜欢阅读那些像你这样鼓励别人自己开始做项目并支持他们的人。bet188me
    所以,如果你能提供一个关于你自己的简短故事就太好了,我期待着在你的网站上看到它。
    谢谢你的项目,祝你取得更大的成功bet188me

    附注:如果我的语法不好,很抱歉

    回复
  7. 你好,德扬,

    我遵循你的教程一步一步,但在最后,我没有12V进入,但只有几个mV !
    我使用220欧姆的led电阻,1k的上拉电阻和10 uF / 50V电容。
    你能给我一些解决这个问题的建议吗?Arduino卡根本没在运行……

    谢谢!

    回复
    • 您是否使用JLCPCB的PCB进行项目?仔细查看正极和负极输入端子。最初PCB设计中有一个错误,但是我已经更新了PCB,不确定您是否已经提前订购了PCB。如果您有一个错误,您可以使用一把工具刀将正极(+)引脚从PCB的铜板区域隔离(切断),然后使用导线将+12引脚连接到开/关引脚。

      回复
      • 你好,Dejan,我在2018年7月12日使用你们的布局从JLCPCB订购了我的电路板。PCB在此日期之前被纠正了吗?我现在就要开始建了。多谢。

        回复
        • 约会的事我不太确定。在你开始之前,请好好看看你的pcb。检查我在上面的评论中提到的引脚。很抱歉给您带来不便。

          回复
  8. 伟大的教程!我会试着做一个我自己的版本,但是我对使用的部件有点困惑…哪里可以提供完整的部件清单和它们的规格?
    再次感谢教程!

    回复
  9. 嘿,

    首先,很棒的工作和教程!我真的很喜欢这个项目。你认为有可能添加一个时间间隔模式(电机步进- >等待Xseconds或可能触发相机- >电机步进…)?我认为当你拍照时,当滑块还在移动时,高曝光时间是个问题。

    回复
  10. 我想知道是否有办法在这个设计中增加2个步骤?看起来3使用了所有的数字引脚,但我想添加焦距和变焦控制。我知道电路需要更换,但它能工作吗?我知道我有4/5挂在坡道板,但我喜欢这个定制的想法。

    回复
    • 当然你可以再用两步。是的,有这样的坡道板,那不是问题。虽然5个步进器需要10个数字引脚,但如果使用Arduino nano,还剩下4个数字引脚。

      回复
  11. 我喜欢整个项目,我试图查看所有项目的测量值,但无法访问您放入的2个文件了解所有详细信息,我想知道您是否有一份包含平面图的PDF,或者一些不需要三维建模即可查看的内容。。

    我真的想建立这个设置,但只是不能访问所有部分的测量。

    回复
    • 谢谢你!很抱歉,我没有零件尺寸的PDF文件。实际上,你可以打开STEP文件,使用Autodesk Fusion 360获得正确的测量值,它可以免费安装。

      回复
  12. 非常好,谢谢分享你的努力。
    我计划把它做成4-6电机,更先进的6轴起重机滑块,如hydra scope等。
    我想知道我可以添加更多的电机到代码和替换一个电位器与第二个操纵杆和添加另一个操纵杆。
    将使用arduino mega和重新包装扩展盾:)
    你现在能帮我把代码里的电位器换成操纵杆,增加对4个电机的支持吗?有两个操纵杆吗?
    非常感谢。
    马丁

    回复
    • 谢谢你!当然,你可以以这种方式扩展项目,但保留它可能需要相当多的修改。实际上,如果你知道如何编码,那根本就不是问题。在这一点上我现在帮不上什么忙。

      回复
  13. 伟大的工程。我对做一个很感兴趣。
    请问这里的Arduino代码是否适应滑块在连续循环的In和Out位置之间移动?

    例如,设定“在”和“在”位置,然后设定速度,让滑块在这两个位置之间来回移动,直到手动停止或复位。

    这对于捕捉采访场景来说是完美的。谢谢你!

    回复
    • 谢谢!我没有做这样一个函数,但是如果你知道一些编码,你可以编程。我是说,你可以上传任何功能更强大的程序到你的Arduino上。

      回复
  14. 嗨,德扬,希望你是个天才!

    杰出的工作。我试着跟上这个。我一点都不知道。我纯粹是即兴发挥。几个问题:
    什么连接到a4988与12v电源?
    我可以使用其他汽车驱动如TMC2130吗?
    启动和停止功能是否可以像在拍摄中一样包括长曝光时间间隔?

    如能回音,我将不胜感激。

    谢谢。

    回复
    • 嘿,谢谢!是的,我想你可以用一下TMC2130。步进器需要12V电源,所以12V电源连接到A4988驱动器,它旁边有一个旁路电容,以避免电压尖峰或保持电压稳定。另一方面,对于A4988需要的逻辑操作,所以Arduino上的5V连接到驱动器上的5V引脚。如果你需要更多关于A4988的工作细节,你可以查看我的其他详细教程。betway
      当然,你可以给Arduino编程,让它做任何你想做的事。我没有为长时间曝光延时编写这样的函数,但你可以自己编写。

      回复
  15. 伟大的项目。下载了Solidworks文件,但没看到大齿轮。不在文件夹和他们的错误和缺失在Solidworks本身。
    你能否上传完整的文件,或者至少是3d打印的装备,以便我们在代码中使用相同的比例?

    回复
      • 你好,这是一个很好的项目,我正在编译一个零件列表,但是我无法定位到80齿滑轮的链接,我使用谷歌Chrome,不确定链接在哪里。
        能帮个忙吗?
        你用的是什么牌子的操纵杆?我看过的几个操纵杆有一个很短的主轴。
        威廉非常感谢。

        回复
        • 威廉,谢谢你!齿轮的链接位于3D模型下载文件的正下方。我也更新了部分列表,并添加了我使用的操纵杆。

          回复
  16. 优秀的项目。我想把它当生日礼物送给我女朋友,你能帮我看看电机的规格吗?我想用无线控制。

    回复
  17. 嘿,德扬,
    我想把这个制作成我在学校的科学项目,你能分享一下轮子的3d文件吗?
    谢谢你的建议。
    提前感谢您的回复。

    回复
  18. 你好,德扬,

    很喜欢这个项目,你做得很好,现在自己收集材料来建造它。
    只有一个问题,你认为有可能添加一个LCD (20×4为例),以看到什么设置,你正在应用到步进电机?如果可能,你会怎么做?

    亲切的问候,
    基尔特•

    回复
    • 嘿,吉耶特,谢谢!
      嗯,是的,它可以添加液晶显示器,并使某种菜单系统选择设置和输入值从液晶显示器使用电位计和按钮。但当然,这一切都必须进行适当的编程。我不确定我是否能给你一些提示,因为它需要相当多的编码。

      回复
  19. 我打开电源板,马达在“抽搐”。我按下了设置/重置按钮;电机将停止,但又开始“抽搐”。我甚至重新编程了Nano,它成功上传,检查了电路板上的焊点,步进电机被纠正了(没有过热),检查了所有与电路板的连接,一切都很好。是什么导致马达“抽搐”?

    谢谢你!

    回复
      • 好吧,我是这么做的:
        -对每个驾驶员分别进行测试;所有人都做了同样的“抽搐”。
        -用你在视频中使用的电阻替换所有的电阻(使用了5个电阻,欧姆错了)
        -检查所有焊点是否短路;没有伤害。
        -检查所有开关和按钮;所有这些都有连续性。
        -更换了操纵杆(总共订购了5个)同样“抽搐”
        -检查电容器极性(100uf/16v);所有的纠正。
        -甚至重新编程了Nano;上传完毕。
        -检查了锅(一个是100K的滑块/一个是250K的高速)当我转动滑块锅,电机响应,但确实转动。(注意:我没有组装电机到滑块,所以他们只是坐在我的工作台上“抽搐”,因为我转动滑块锅没有旋转)。
        -Mircoswitch作品完美
        -使用不同的马达,三个都做相同的事情。

        在你的图上,我只看到4个电阻,但在PCB上有5个(R4是我不知道那里的电阻值的那个,所以我放了一个1K欧姆)

        我被踩死了,德扬。如果你有电子邮件,我可以拍下我正在做的事情的照片(甚至视频)。我猜可能是马达的尺寸不对。

        谢谢。

        回复
  20. 你好,德扬,

    还有,你用的电阻和电容的值是多少?我在评论中看到了相互矛盾的价值观……

    亲切的问候
    基尔特•

    回复
  21. 嗨,德扬,

    非常感谢你分享这个精彩的项目!
    我目前正在为我的需要调整它,并想知道你如何确定所需的步进扭矩。我想使用更轻的NEMA17步进电机的平移和倾斜,因为他们基本上只旋转相机围绕自己的中心轴和大80齿齿轮降低速度的因素4。也许26 N/cm就足够了?
    可以这样计算吗?
    (26 N/cm持力矩* 100)/ 0.8 mm滑轮半径= 3250g

    最好的,菲利普

    回复
  22. 德扬,
    很棒的教程集。在假期里,我决定尝试一下相机滑块。几年前我做了一个DIY滑块,一直想添加一些机动运动。我在路上遇到了一些麻烦,比如把一个步进驱动器倒着安装,然后把驱动器和Arduino Nano都烧坏了。现在我一切都正常了。我调整了滑块的整体距离后,按下限制开关96cm”stepper1.currentPosition()从限制开关位置50cm和/或“OUT”>从“IN”15cm滑块以某种方式重置值,并移动回限制开关。大多数时候都是不停地击打。
    当我自动运行较短的距离,从限制开关和<15cm之间的“IN”/“OUT”滑块工作伟大。ie。短相机移动
    这就像在计算电机步长时currentPosition或gotopposition数组值有一个限制。

    回复
  23. 你好,德扬,非常感谢你的分享。
    你认为Nema 17高扭矩60Ncm能处理à 3公斤相机的平移和倾斜吗?即使相机真的很好平衡,以避免过度的强度时,旋转和维护?
    感谢。

    回复
    • 谢谢!60Ncm的意思是在1cm的距离上举起6kg。但是我们也有减速,这增加了扭矩。所以我认为它应该能够处理3公斤的相机。

      回复
  24. 你好,德扬,你的东西真棒。

    我已经搜索了一个月了,如何适应这样的系统,以便我可以用蓝牙控制它。你能给我指出正确的方向吗?

    回复
    • 谢谢!代码的工作原理是一样的,只是输入变量需要来自蓝牙模块。您可以在我的其他蓝牙相关教程中看到这样的示例,例如无线控制机器人汽车项目。你看,我们通过蓝牙从智能手机发送命令,然后我们可以用这些命令对Arduino做任何我们想做的事情。

      回复
  25. 你好,
    一个优秀的项目!
    我很好奇,发动机在工作时有多安静?
    如果我用这个来拍摄采访,噪音会被剪掉吗?

    提前谢谢。

    回复
  26. 你好,Dejan,滑块设置是否也与铝或不锈钢管工作?如果22mm不可用呢?20或25毫米是否可行?

    亲切的问候
    基尔特•

    回复
  27. 嗨。这是一个非常有趣的项目。我试着这样做,但当我使用平底锅和倾斜操纵杆在非常慢的速度,运动是不流畅的。你知道我该怎么解决吗?
    谢谢你的问候。

    回复
  28. 感谢您对我即将开始的项目进行了精彩的描述和介绍。在开始之前,我在寻找一个组件列表。一切都很明显(谢谢!)除了我找不到值的*电阻*(从视频看起来像10k欧姆5%)和*电容* -我错过了什么?

    我还想确认一下在线的pcb文件是不是最新的版本。

    非常感谢这个超级项目!

    回复
  29. 你好,
    不错的设计。我已经订购了所有零件。但我使用DRV8825驱动程序而不是你列出的。那些应该工作,但当我连接一切像在图片提供,电机有时工作,但司机得到极端热,然后死亡。
    我尝试了不同的连接方法,但没有任何效果。你有什么想法吗?
    谢谢

    回复
    • 嘿,试着限制驱动可以使用驱动顶部的小电位器的电流。你可以限制在0.5/0.6A左右,这样它们就不会过热。DRV8825驱动应该和A4988驱动一样工作。只要确保通过连接适当的分辨率选择引脚匹配步骤分辨率。

      回复
  30. 嘿,我能用TMC2208代替A4988吗?

    一切都好。

    但是当我用TMC2208替换一台A4988时,电机就不工作了…

    问题是什么?

    回复
  31. 嗨,德扬,
    我在做你的滑块项目。它工作得很好,但是马达的震动会使相机抖动。电动机运转不平稳。他们工作起来就像不是在1/16步。我用了你的电路板,一切都做得很好。我更新了我使用的电位器和操纵杆值。这些马达的速度也很慢吗?他的值是3000,跑一圈只需6秒。

    回复
    • 嘿,确保它真的设置为1/16步,或者你也可以尝试使用DRV8825驱动程序。另外,问题可能是你的程序很慢,我的意思是如果你在程序中添加了一些代码。Arduino无法快速完成代码,所以步进器使步骤变慢,这就是嗡嗡声发生的原因。尝试减少代码,你也可以尝试使用更高的波特率,如果使用串行端口打印东西,或者如果有一些serial .println()行,确保你删除/注释他们,因为他们是缓慢的功能。

      回复
  32. 你好,Dejan,这是一个非常有趣的项目,谢谢你所做的工作。
    我是个“老”新手,正在努力提高自己的技能。
    我到达了一个点,小心你的PCB组装,很快转过身,包含库文件和你的草图已经上传好了但是当我申请Nano上的红色led灯,但滑块运动不断旋转,另外两个似乎被锁定。触摸限制SW或任何按钮不会改变任何东西。
    是否有可能建议在哪里和如何开始故障排除。
    非常感谢你的帮助。
    威廉。

    回复
    • 嘿,谢谢!好的,你可以开始检查滑块电位器是否连接和工作正常。如果滑块电机连续旋转,这意味着你从电位器得到一个错误的值(当电位器设置在中间,你应该收到512左右的值,你可以检查你正在使用串行得到的值。Println函数,并在串行监视器上打印模拟输入)。另外两个电机也有同样的问题,检查操纵杆的数值是否正确,连接是否正确。

      回复
  33. 你好,
    只有一个问题…我是新项目像你的…我必须连接所有的地面s,我的bet188me意思是地面从部分到最后在“-”?

    回复
  34. 这就跟你问声好!

    伟大的项目!我对自己做这件事的想法感到惊讶。
    然而,收到PCB后,它看起来只是不工作。我认为一切都是正确的。我在A4899的控制器和电机输入上都有电源,但整个事情没有像预期的那样表现。

    工作原理:通电后,滑动电机继续运行。重置按钮将工作

    不起作用的是:其他一切。调整电位计不会影响速度。第二个按钮没有任何作用。操纵杆不会让其他电机工作,单击停止传感器也不会停止电机。

    据你所知,有人曾经解决过这个问题吗?
    尝试使用不同的arduino没有改善

    回复
    • 嘿,谢谢!上面有人报告了同样的行为。我看了一下PCB,我可以看到一切看起来都很好。可能是代码出了问题。滑动电机在通电时运行的事情是,它正在寻找它的主位置,这发生在按下限位开关按钮时(查看Arduino代码的设置部分,while循环等待,直到按下限位开关)。因此,请确保限位开关连接正确,试另一种方式NC或NO。

      回复
  35. 如果我们正在使用位置设置按钮
    当我们按下初始位置时,是否真的需要用手手动移动相机以达到末端位置?然后,我们再次按下设置按钮设置终点,相机滑块将来回移动

    回复
  36. 你好!
    你的项目太棒了,非常感谢你细致的工作。我建立了我自己的版本,我正试图使它适应我的需要。我擅长所有的机械,电气和BASIC编码,但我似乎不能做我想做的。我想提高滑块的速度很多,因为我使用它在一个很大的距离,也我想限制旋转的锅到360,因为我不想我的电缆缠绕在axel。你能帮我吗?或者给我指出正确的方向。

    回复
    • 嘿,谢谢!你可以通过setSpeed()函数增加速度的值来增加速度。虽然我发现有时候如果Arduino不能那么快的执行步骤,设置更高的值也没有任何意义。我猜问题在于代码并没有那么好或者优化过。在这种情况下,您可以尝试降低步进分辨率,这将增加速度,但您将失去平滑。
      至于限制锅旋转,也许你可以使用currentPosition()函数,通过它,你可以得到多少步骤汽车在一个特定的方向,并使用一个简单的“如果”声明限制的运动锅如果价值大于周围的一些步骤使在特定方向180度,或者类似的东西。

      回复
  37. 你好,
    感谢你的精彩教程。
    我是个新手,我有一个问题:
    如果我使用3台电机(12V, 2A),是否需要12V 6A电源;还是12V 2A ?
    我不知道我是否需要增加力度。

    谢谢你的帮助。

    回复
    • 嘿,是的,没错。然而,这些步进电机额定2A,但它们通常消耗约1A至1.5A。此外,驱动器有一个旋钮,尽管你可以控制电流限制,或者你也可以设置电机消耗更少,例如0.5A左右。

      回复

  38. 这是一个非常好的相机滑块,你已经建立!
    我也做了一个,但我有一个问题。当滑块启动时,它移动到一边,直到限制开关被激活,然后它移动200步,这是好的,但之后什么都没有发生。我不能倾斜,平移或移动滑块。我已经尝试了2个不同的pcb,电机驱动器,电机,操纵杆,arduino板??
    是Arduino板吗?不是原来的。
    可以是电位器og电阻的大小吗?
    请帮助。

    回复
    • 嘿,谢谢!已经有几个人报告了类似的问题。我已经再次检查了当前的PCB,一切看起来都很好。也许是代码的问题,但我真的不能说任何具体的东西。
      希望有人有类似的问题,并设法解决它,将告诉我们。现在我真的不能给你任何建议,很抱歉。

      回复
  39. 你好,再一次
    我发现这是arduino代码是缓慢的arduino板,我可以看到电机移动非常非常慢,我已经尝试了很多东西,但当我在程序中做这样的一个循环:
    潘:
    步进2.设定速度(-3000);
    stepper2.runSpeed();
    转到锅;
    然后朝那个方向快速移动。
    我在Banggood.com上买了Arduino Nano,但是它显然太慢了。
    Br Steen

    回复
  40. 我想复制控制系统。我已经报废了三个arduino。控制中心对我为所欲为。一旦电机运动,下次我打开它,你可以在轴上自由转动它。我绝望
    aduiono克隆版也可以使用,还是我需要原始版本?

    回复
    • 你可以用克隆的,当然有用。你是使用JLCPCB的PCB还是在面包板上进行连接?我的意思是,有很多事情可能会出错。试着提供一些额外的信息,这样我们就可以试着弄清楚到底发生了什么。

      回复
      • 没有电动机我就不能使电路运转吗?我想检查一下Vref。我把驱动器在另一个测试电路中调整vref到0.4 v。
        当我把驱动器放在滑块pcb上时,vref上升到0.7 v,没有电机插入。
        在这之后,当我尝试在我的测试电路的司机,我必须意识到它是坏了。
        此时此刻,我拷问了大约10名司机

        回复
  41. 我终于让它工作了,我很喜欢它,但有一个警告;没有加速或减速的运动,所以它只是jarrs到停止在周期结束和震动整个总成,这看起来非常糟糕的电影。有没有可能你有一些代码可以让它“轻松地进入和退出”动作?谢谢。

    回复
    • 嘿,很高兴听到你成功了。AccelStepper库具有加速和减速功能,但只能在一次移动一个电机时使用。当使用多步程序库时,当2或3个电机同时移动时,更复杂的移动需要多步程序库,则加速度和减速不可用。
      可能有另一种方法来实现这一点,可能是另一个库,但现在我不知道,也无法提供任何帮助。

      回复

留言