0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心
发布

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Arduino实现DIY伺服相机云台

楼斌 来源:DevicePlus 作者:DevicePlus 2023-02-24 15:18 次阅读

这篇文章来源于DevicePlus.com英语网站的翻译稿。

目录

水平相机支架简介

设备规格

3D 打印安装部件

编写程序

测试!

poYBAGPzFnKAepoeAAHFe7FFJdA007.jpg

在上一篇文章中,我们构建了一个伺服控制的无线照明开关。今天,我们打算更上一层楼,尝试创建一个水平相机支架或云台。如果您还没有准备好,请随时查阅我们的第一个相机云台项目:第1部分第2部分

今天的电子食谱

预计完成时间:60分钟

所需部件:

ArduinoUNO R3 或 Arduino Pro Mini

面包板

三轴加速度计 KXR94-2050

Towerpro MG996R伺服电机

1. 水平相机支架简介

水平相机支架,通常称为“稳定器”或“云台”,过去仅用于高预算生产环境。由于无人机行业的繁荣和新兴消费技术,现在利用配备云台的无人机拍摄高质量的视频已经非常普遍——用无人机或智能手机都可以。市面上易于操作的相关消费产品有很多种。其中一些产品采用无刷电机进行主观视角拍摄(噪音、速度等)。

pYYBAGPzFnOANNYKAAEa2WZeXHo028.jpg

图1.稳定器

我一直想亲手制作一个这样的设备。上次,我挑战自己,构建了一个这种设备,具体内容请参见这篇文章,但是结果却并不理想……

该设备有其自身的魅力……但是如果无法作为稳定器使用,那么也毫无用处。我回顾了之前的项目,发现许多需要改进的地方。最大的问题就是我选择的伺服电机。之前的电机功率不够。其扭矩不足以操作智能手机

出于这个原因,在继续其他工作之前我想先关注一下设备规格选型。

2. 设备规格

首先,我们来看一下伺服电机。虽然之前使用的伺服电机SG90价格便宜且易于使用,但是显然其扭矩不够。因此,这次我们使用MG996R伺服电机,其扭矩几乎是之前电机的5倍,可能动作会略微延迟/减慢。

poYBAGPzFnWAEy4UAADikOfp1ZU049.jpg

另外,其他部件基本就是Arduino和加速度计,所以设置几乎与上次相同。由于新伺服电机较大,我用适配器为其供电。电路接线也是相同的。

poYBAGPzFneAZksCAAG7LONkd8M021.jpg

poYBAGPzFnmAI3i-AAGlhCOqORs997.jpg

3. 3D 打印安装部件

对于支架的部件,您可以使用上次的木材和金属配件。但这一次,我想利用3D打印来制作各个部件。这次我准备的三脚架带有螺丝孔,即使伺服电机较大,也可以保持稳定。我设计的小三脚架具有方向性,而且可以单手操作。

poYBAGPzFnuAMcLsAAF9_spGHUk597.jpg

这是我3D打印的部件。组装后的样子如下所示:

poYBAGPzE6aAJ6EJAAFgvcBkgow166.jpg

请注意,如果使用ABS树脂进行3D打印,那么材料固化时会发生收缩。我打印部件时发现了这个问题。我注意到部件产生轻微变形,组装时螺钉很难拧入。经过多次试验和错误后,我决定分别打印安装在伺服电机上的部件。您可以在这里下载适用于该支架的3D模型: https://github.com/DevicePlus/ServoGimbal

pYYBAGPzFoCACUoYAAIDT6vGVcY901.jpg

三脚架组装如下所示:

poYBAGPzFoKAYO4pAAHWq6EzIYk185.jpg

pYYBAGPzFoSAMBIyAAFUBJnIUBg900.jpg

至于外壳,这取决于您的相机类型等因素。此外,您还可以根据您的手机类型改进/更改部件的整体设计。

4. 编写程序

对于程序,我们有必要进行校准。首先将加速度传感器倾斜180度,并根据输出值调整伺服电机的倾斜度。所以我们稍微改进了第17个程序并进行了校准。让我们用比较容易理解的方式输出数字。

首先需要将加速度计倾斜180度,并根据输出值调整伺服电机的倾斜度来校准加速度计。让我们稍微修改一下 第1部分 中的程序,以易于理解的方式输出校准值。

int _maxX = 0; int _minX = 1000; int _maxY = 0; int _minY = 1000; int _maxZ = 0; int _minZ = 1000; //****************************************** //Programforacquiring accelerometer values //****************************************** void setup() { // initialize the serial monitor Serial.begin(9600) ; } void loop() { long x , y , z ; x = y = z = 0 ; x =analogRead(1) ; // X axis y = analogRead(2) ; // Y axis z = analogRead(3) ; // Z axis if(_maxX < x){ _maxX = x; } if(_minX > x){ _minX = x; } if(_maxY < y){ _maxY = y; } if(_minY > y){ _minY = y; } if(_maxZ < z){ _maxZ = z; } if(_minZ > z){ _minZ = z; } int centerX = (_maxX-_minX)/2+_minX; int centerY = (_maxY-_minY)/2+_minY; int centerZ = (_maxZ-_minZ)/2+_minZ; float rotateX = ((float)_maxX-(float)_minX)/180; float rotateY = ((float)_maxY-(float)_minY)/180; float rotateZ = ((float)_maxZ-(float)_minZ)/180; Serial.print("X:") ; Serial.print(_minX) ; Serial.print(" ") ; Serial.print(centerX) ; Serial.print(" ") ; Serial.print(_maxX) ; Serial.print(" ") ; Serial.print(rotateX) ; Serial.print(" Y:") ; Serial.print(_minY) ; Serial.print(" ") ; Serial.print(centerY) ; Serial.print(" ") ; Serial.print(_maxY) ; Serial.print(" ") ; Serial.print(rotateY) ; Serial.print(" Z:") ; Serial.print(_minZ) ; Serial.print(" ") ; Serial.print(centerZ) ; Serial.print(" ") ; Serial.print(_maxZ) ; Serial.print(" ") ; Serial.println(rotateZ) ; delay(50) ; }

poYBAGPzFoWAf2bZAAB1a6qdNP4573.jpg

pYYBAGPzFoeAGYSRAAE-oS_E-Y0054.jpg

运行此程序后,启动串口监视器,然后将传感器分别在X和Y方向-90度到90度之间倾斜,并确认输出值。将输出值的最小值和最大值除以180度,获得的数值为加速度计倾斜值/度,这样可以与伺服电机的操作同步。

pYYBAGPzFomAVvzjAAGHhTahw1I021.jpg

串口监视器上的数值在激活伺服电机的程序中有所反应。

//******************************************** //Program 2 for acquiring accelerometer values //******************************************** #include Servo myservoX; Servo myservoY; void setup() { // initialize the serial monitor Serial.begin(9600) ; myservoX.attach( 5 ); myservoY.attach( 6 ); } void loop() { int i ; long x , y; // read each data 100 times and average x = y = 0 ; for (i=0 ; i < 100 ; i++) { x = x + analogRead(1) ; // read x axis y = y + analogRead(2) ; // read y axis } x = x / 100 ; y = y / 100 ; int rotateX = (x-493)/1.30; //obtain anble myservoX.write( 90-rotateX ); Serial.print("X:") ; Serial.print(x) ; Serial.print(" ") ; Serial.print(rotateX) ; int rotateY = (y-488)/1.23; myservoY.write( 90-rotateY ); Serial.print(" Y:") ; Serial.print(y) ; // Y axis Serial.print(" ") ; Serial.println(rotateY) ; // Y axis delay(10) ; }


5. 测试!

这次我们有了足够的功率,但是支架的运动仍然很有趣……

在上面的视频中,用手握住设备时,加速度计可以捕获最轻微的摇动。即使传感器轴对齐,也会出现到一些不同角度的意外运动。解决这个问题对于平滑旋转和未来改进来说至关重要。

运动(或摇动)与相机(或智能手机)的重量成比例。如果物体小而轻,移动就相对轻微;但是如果放置像智能手机那样较重的物体,摇晃就会很严重。还应该改进该程序以提高性能并提高可靠性。

我们的最终目标是创建一个像下面的产品一样稳定的云台:

似乎很多人都尝试用无人机这样做。有些无人机可以保持稳定的姿态,所以该设备可能更适合无人机。

今天,我们重新制作了第1部分第2部分构建的水平相机云台。我们对云台的机械设计进行了一些改进,但是随着项目的进一步推进,我们发现了更多的挑战。我们仍然无法顺利控制云台。现在,该设备只能说仍处于测试阶段,但是我们不会善罢甘休。我们一定会在不久的将来重新解决这个问题,并使其成为一个功能正常的设备。

pYYBAGPbhjqAbi1JAAAGd6_rQT0867.png

DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

审核编辑黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 智能手机
    +关注

    关注

    66

    文章

    18302

    浏览量

    178297
  • Arduino
    +关注

    关注

    186

    文章

    6451

    浏览量

    185735
收藏 人收藏

    评论

    相关推荐

    如何使用Arduino的蓝牙控制伺服电机

    使用 伺服电机在机器人技术中很常见,以 实现精确控制。在这里,在本教程中,我们将向您展示如何通过蓝牙连接将 伺服电机与 ArduinoUNO和Android设备无线使用。我们已经使用
    发表于11-16 16:19 3132次阅读
    如何使用<b class='flag-5'>Arduino</b>的蓝牙控制<b class='flag-5'>伺服</b>电机

    DIY相机稳定器,是省钱还是败家?

    上,这些需要慢慢的调试才行。 第七步:完成整个 DIY的稳定器就完成了,其主要内核就是废弃的无人机 利用,剩下其他的都没有什么技术含量,经过计算,整套稳定器制作下来,差不多成本在60
    发表于11-04 16:04

    如何制作相机跟拍

    如何制作 相机跟拍 实现目标:当 相机或拍摄对象向左或向右移动时, 相机镜头也相应转动,始终对着
    发表于12-05 09:05

    怎样用Arduino蓝牙控制伺服电机

    我在 DIY Arduino&amp; amp;蓝牙机器人手臂,使用ESP8266的网络控制 伺服Arduino操纵杆界面等等。实际上, 伺服
    的头像 发表于07-29 09:55 7012次阅读

     佳能相机专利通过:可换镜头设计

    据外媒 newsshooter 消息,佳能最新的一款 相机专利在日本通过申请。这款设备有着人体工程学手柄, 搭载可换镜头的
    的头像 发表于12-31 09:04 1984次阅读
     佳能<b class='flag-5'>云</b><b class='flag-5'>台</b><b class='flag-5'>相机</b>专利通过:可换镜头设计

    佳能通过日本最新相机专利

    为了 实现更稳的拍摄, 相机往往需要一 手持 ,两者加在一起体积硕大,需要两只手才能拿稳。
    的头像 发表于12-31 09:49 1659次阅读
    佳能通过日本最新<b class='flag-5'>云</b><b class='flag-5'>台</b><b class='flag-5'>相机</b>专利

    佳能申请相机,可更换镜头设计

    为了 实现更稳的拍摄, 相机往往需要一 手持 ,两者加在一起体积硕大,需要两只手才能拿稳。
    发表于12-31 09:57 492次阅读

    DIY自己的arduino项目

    德赢Vwin官网 网站提供《 DIY自己的 arduino项目.zip》资料免费下载
    发表于07-27 10:17 2次下载
    <b class='flag-5'>DIY</b>自己的<b class='flag-5'>arduino</b>项目

    DIYARDUINOUNO板

    德赢Vwin官网 网站提供《 DIY ARDUINOUNO板.zip》资料免费下载
    发表于08-19 09:28 7次下载
    <b class='flag-5'>DIY</b> <b class='flag-5'>ARDUINO</b> UNO板

    德州仪器运动相机和手持解决方案

    德州仪器运动 相机和手持 解决方案
    发表于10-31 08:23 1次下载
    德州仪器运动<b class='flag-5'>相机</b>和手持<b class='flag-5'>云</b><b class='flag-5'>台</b>解决方案

    DIYArduino角灯

    德赢Vwin官网 网站提供《 DIY Arduino角灯.zip》资料免费下载
    发表于11-02 10:46 1次下载
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>角灯

    DIYArduino示波器

    德赢Vwin官网 网站提供《 DIY Arduino示波器.zip》资料免费下载
    发表于11-11 11:06 5次下载
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>示波器

    基于Arduino平台的DIY示波器

    德赢Vwin官网 网站提供《基于 Arduino平台的 DIY示波器.zip》资料免费下载
    发表于11-30 14:23 6次下载
    基于<b class='flag-5'>Arduino</b>平台的<b class='flag-5'>DIY</b>示波器

    ArduinoDIY闹钟

    德赢Vwin官网 网站提供《 Arduino DIY闹钟.zip》资料免费下载
    发表于12-01 09:23 0次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>DIY</b>闹钟

    DIYArduino电子沙漏

    德赢Vwin官网 网站提供《 DIY Arduino电子沙漏.zip》资料免费下载
    发表于02-06 11:09 10次下载
    <b class='flag-5'>DIY</b> <b class='flag-5'>Arduino</b>电子沙漏