3D打印Arduino 四轴飞行器

查看原文

简介:3D打印Arduino Quadricopter


概述:

在网上搜索了构建四轴飞行器的廉价方法并且没有找到可行的解决方案之后,我们决定最好自己制造一个四轴飞行器。我们的模型试图创造一种可以依靠自己的电源运行、悬停和稳定飞行的直升机。使用 Arduino Uno、陀螺仪/加速度计和一组有刷 RC 电机等组件,我们能够生产出可以工作的四轴飞行器。虽然这个特殊的设计没有实现控制飞行的方法,但它肯定是可以添加的。

第 1 步:背景

现在您对四轴飞行器有了更多的了解,让我们来看看我们是如何制作四轴飞行器的:

我们设计过程的第一步是查看市场上的当前系统,以便了解我们需要哪些组件。经过一些研究,我们发现大多数四轴飞行器模型都使用了集成电路、微型微控制器和无刷电机。为我们的直升机构建电路似乎是一项可行的任务,我们知道我们想使用 Arduino,所以这个项目看起来绝对可以实现。主要问题在于电机。因为我们在预算范围内工作,所以无刷电机是不可能的。这些电机的价格从每件 20 美元到 60 美元不等,为了使这些电机发挥作用,需要速度控制器. 所以我们只能选择有刷电机。因为我们知道我们想制造一个小型四轴飞行器,所以我们决定研究具有低扭矩能力的电机。然后我们找到了一个现有的四轴飞行器模式l,它使用了一组可行的电机。这些电机可以轻松提升高达 55 克的重量,这对我们的设计来说已经足够了。然后我们在这里购买了这些电机,并继续研究我们可以稳定这些电机的方法。稳定这些电机的一种方法是使用陀螺仪和加速度计。陀螺仪是一种利用地球重力帮助确定方向的设备。它的设计包括一个称为转子的自由旋转盘,安装在一个更大、更稳定的轮子中心的旋转轴上。当轴转动时,转子保持静止以指示中心引力,从而指示哪条方向是“向下”。另一方面,加速度计是一种紧凑型设备,旨在测量非重力加速度。当它集成的物体从静止状态变为任何速度时,加速度计旨在响应与这种运动相关的振动。它使用在发生振动时承受压力的微观晶体,并且从该应力产生电压以产生任何加速度的读数。这两个组件对我们的设计至关重要,因为它们有助于确定哪些电机需要改变速度以进行调整和稳定。

步骤 2:零件清单

以下是我们用于项目的部件和工具:

  • 电线
  • 剥线钳
  • 剪线钳
  • 烙铁
  • 锡焊料
  • 3D打印机
  • 3.7伏锂离子电池组(我们使用了一些AA Trustfire电池)
  • ULN2003A达林顿晶体管(注意:我们发现,如果我们将电机转速提高到最大容量,该晶体管就会发生故障,因此我们建议购买可以处理更大负载的晶体管)
  • 针座引脚
  • 0820 空心杯电机 (http://www.amazon.com/Hubsan-H107-A23-Clockwise-Co…
  • 电机螺旋桨(http://www.amazon.com/Hubsan-四轴飞行器-螺旋桨…
  • Arduino Uno (http://www.amazon.com/Arduino-UNO-SMD-R3-board/dp/…(我们建议购买Arduino Uno Rev 3)
  • 三轴加速度计和陀螺仪 - MPU-6050(sparkfun.com 购买,尽管您可以在亚马逊上找到更便宜的)

步骤3:3D打印


我们设计过程的下一部分是创建四轴飞行器的实际框架。对于框架的材料选择,我们有很多选择,但经过快速考虑,我们选择了 3D 打印。我们之前有很好的机会使用 3D 打印,所以打印我们的框架似乎很自然。我们还选择了这种介质,因为它可以消除不必要的重量。为了设计框架,我们使用了计算机辅助设计程序Solidworks. 。为您节省了时间和精力,并附上了下面的 3-D 打印文件。这些文件保存为立体光刻文件(.stl 文件),并且可以使用 CAD 软件(如 Solidworks)在一定程度上进行编辑。如果您最终购买了更大的电机,您可以编辑下面的电机安装文件并更改参数。如果这不起作用,我建议在这里阅读一些 Solidworks 的教程并开始新的设计。这个过程很简单,完成教程后应该很容易。

附件

diy_bottom_plate.stl

下载
diy_motormount。断续器

下载

  • diy_quad_boom.stl

    下载

步骤4:I2C加速度计-陀螺仪设置

  1. 不要连接5V。

  2. 不要惊慌

  3. 使用此库: https://github.com/jrowberg/i2cdevlib

  4. 在运行校准之前,不要焊接电路板。

我们使用了SparkFun的MPU6050,。这些可以在网上找到,而且我有好消息说它们工作正常,但是布线将与图片略有不同。此步骤将用作设置和使用I2C加速度计的通用背景和教程,因为大部分信息分散在十几个论坛线程中。

什么是 I2C?

您可能已经见过简单的电路板,例如具有,带有用于 X、Y 和 Z 的单独模拟输出。这些是有道理的;每个输出与加速度计的一个轴相关。然后你看到一个 I2C 板,里面有点吓坏了。I2C 是一种通信标准,其中板使用数字逻辑脉冲而不是模拟输出来传达大量信息。MPU6050 有 6 轴(3 陀螺仪、3 加速度计),所以如果它们是模拟的,它们会用完 Arduino 上的所有端口。底线是 Arduino 向电路板发送数字控制信号,并从输入引脚以数字方式读取信息。

布线:

我们特定的MPU6050的接线如下。请注意,库代码假定这些是使用的输入。其他板子也会类似。

VDD -> 3.3vGND-》GNDINT-> 数字 2整流板 -> A5SDA -> A4VIO ->GND

通过电路板运行 5v 可以并且会破坏它,所以不要。一些 MPU6050 板具有应该保护它的电压调节器,但不值得冒险。如果您的电路板有 AD0 引脚,则应将其接地。在我们的板上,VIO 端口连接到内部 AD0,因此它用作 AD0 引脚。AD0/VIO 是接地还是 VDD 实际决定了电路板与 Arduino 接口的内存地址(0x68 或 0x69)。如果这令人困惑,请不要担心,只需将其接地即可。如果您遇到问题,请尝试将 VIO/AD0 从接地切换到 VDD。

代码:

现在事情变得有点棘手。希望您有一点编码/弄乱软件经验。如果你不这样做,那就慢慢来,用谷歌搜索你不知道的任何东西。那里有很多信息。我会尽量说清楚,但我不能涵盖所有问题

将 MPU 连接到 Arduino 后,打开它并上传此 I2C 扫描仪代码: http://playground.arduino.cc/Main/I2cScanner#。呃…

滚动到底部,将代码复制粘贴到空草图中并运行它。打开串行监视器(工具>串行监视器),并确保位于端口 9600(左下角)上。这是在代码中,但无论如何你都没有读过它。

如果一切正常,它应该找到一个I2C设备,并给你一个0x68或0x69的内存地址。把它写下来。如果出现错误,请检查接线。

现在,您将要安装实际与加速度计/陀螺仪通信的代码。那里有一堆东西,但我发现最有效的东西是 https://github.com/jrowberg/i2cdevlib。 单击“下载Zip”,记住您但的位置(可能是桌面),然后解压缩它。打开 Arduino IDE 程序。现在转到 sketch->import 库 ->添加库。您应该将 I2Cdev 文件夹和 MPU6050 文件夹都添加为库(它们位于文件夹中的 Arduino 下)。

安装完成后,您应该在Arduino中打开MPU6050_DMP6(它在MPU6050 ->示例下)文件。我建议你仔细阅读它(即使你不懂太多的代码),它有很好的注释,并且有一些选项来说明它如何从电路板输出读数。如果您从扫描仪获得0x69,则需要在代码顶部取消注释一行(在#includes之后;只是愚蠢地阅读注释),因为默认值是0x68。程序现在应该编译。

上传代码,打开串口(这次为115200),然后按照说明进行操作。恭喜你,你应该从董事会获得工作读数。如果一开始它似乎漂移,不要担心它需要大约10秒的静止才能休息。此外,偏航输出将漂移(一点),因为它没有参考系。该板使用加速度计来获取重力并找到“向下”,作为俯仰和滚动的参考。一些更高档的板子包含指南针以供参考。

现在,在继续之前,您需要校准电路板。找到一个水平表面,并确保板上板是平坦的,标签朝上。

然后,您应该运行顶部提供的这个方便的花哨校准代码,这要归功于Luis Ródenas。同样,默认值0x68,但您可以更改它。确保记下它给你的偏移值。您可以并且应该将这些作为MPU6050_DMP6代码(以及后来的四轴飞行器代码)中的偏移量。

您现在有一个工作和有用的加速度计/陀螺仪。我现在建议你花一些时间搞砸MPU6050_DMP6代码,并尝试不同的输出类型。

附件

MPU6050_calibration.ino

下载

步骤 5:构建和布线









上面讨论了加速度计的接线。下一步是让 Arduino 控制电机。Arduino 本身只能输出少量的电流和电压,因此我们没有将电机直接连接到数字输出引脚,而是使用一对达林顿晶体管来“放大”电压。如果您对晶体管不太了解,我们基本上将晶体管用作开/关开关,以获得直接来自电池的更大电流。

你应该从面包登机开始。对于这一步,您需要 Arduino、电机和达林顿晶体管对(以及面包板和电线)。接线可以在上面看到,但我将解释发生了什么。如图所示,将四个数字 PWM 输出(在 Arduino 上标有 ~)连接到 darlington。然后输出进入连接到电源的电机。我会用 5v 电源开始测试,但 3-5v 电池对于最终结果应该没问题。

确保您的 darlington 接地,并且您将 Arduino 上的地线连接到电源的地线。确保您的转子以正确的方向旋转(以获得升力)并且总扭矩为零。如果将电机引线从 5v 切换到达林顿,电机将切换方向。正确设置电机后,转子将永远不需要切换方向,只需改变速度即可。

测试完所有内容并启动并运行加速度计后,您需要将所有内容焊接到 ProtoBoard 上。不要将 darlington 直接焊接到板上,如果需要更换 darlington,您需要使用插座。我们将加速度计直接焊接到电路板上并重新校准,但事后看来,我建议将加速度计平放在框架上,然后将其连接到电路板上。这应该有助于加速度计的准确性。

步骤 6:编码

我们已经编写了一些代码,可以稳定四轴飞行器并保持稳定。如果你想要更花哨的运动和/或控制,可以随意使用它作为基础。您应该首先安装此处提供的Arduino PID库: http://playground.arduino.cc/Code/PIDLibrary

我建议阅读编码技术细节的链接,但我会给出一个快速概述。PID类采用三个输入:设定点、测量和输出。输出应以某种方式改变测量值,PID将改变输出以使测量值与设定点相匹配。库背后有很多花哨的数学,但它试图以一种值保持稳定的方式做到这一点。

在我们的稳定算法中,我们有两个PID控制器:一个用于俯仰,一个用于滚动。螺旋桨 1 和 2 之间的速度偏移量可以保证与螺旋桨 3 和 4 之间的偏移量相同。对于 1、3 和 2、4 也是如此。然后,PID改变偏移量,以保持俯仰和滚动为零。

您还需要确保知道Arduino上的哪个数字输出引脚连接到哪个电机,然后相应地更改代码。电机的标签如上。

附件

quad.ino

下载

第 7 步:建议

小型四轴飞行器的最大问题是重量。您可以考虑寻找更大/更强的电机,但除非您想改用无刷电机,否则真的没有更好的电机。无刷电机要好得多,但你需要速度控制器。

为了减轻重量,我们建议购买SainSmart UNO R3(或较旧的Arduino型号),因为主芯片是可拆卸的。这意味着您可以将芯片直接焊接到ProtoBoard上,这将减少约30克的重量。您需要连接时钟和一些电容器,但网上有很多帮助。或者也可以使用Arduino Pro Mini 这可能更容易。

我们编写的代码也可以轻松扩展以添加更多功能。关键是直升机能够自稳定。您需要熟悉C / Arduino,但是添加新功能和改进的空间很大。如果你想让它远程控制,我会考虑使用蓝牙:https://www.sparkfun.com/products/12576。这里使用的任何东西都不会花费太多,因此您可以玩不同的零件。感谢您的阅读。

3D打印Arduino 四轴飞行器相关推荐

  1. 物联网技术周报第 143 期: Unity 3D 和 Arduino 打造虚拟现实飞行器

    新闻 \\ \\t <西门子.阿里云签约助力中国工业物联网发展>德国工业集团西门子和中国阿里巴巴集团旗下的云计算公司阿里云9日在柏林签署备忘录,共同推进中国工业物联网发展.根据备忘录内容, ...

  2. 基于Arduino Pro Mini的四轴飞行器

    一.四轴飞行器的结构 四轴飞行器属于一种多旋翼飞行装置,有四个轮子来保持悬浮和推进飞行,简称四轴或四旋翼.四轴飞行器的四个旋翼具有相同的大小,位置分布对称,成十字形交叉状.四轴飞行器搭载的飞行控制装置 ...

  3. 用arduino从零开始做一个《儿童算术智能出题机》——NO.1硬件篇(MAX7219、矩阵键盘、GD3800D、3D打印)

    目录 一.前言 1)欢迎界面welcome: 2)答题中--按键答题: 3)答完题评分--答题时间和分数: 二.硬件选型 2.1单片机选型 2.2屏幕选型 2.3键盘选型 2.4语音输出模块 2.5外 ...

  4. 模仿3d打印中使用 Arduino 来根据 NTC 温度传感器的查询表来测量温度的示例程序。

    3d打印中NTC 温度传感器是用的查询表法进行温度测量,如下是示例 #define NTC_PIN A0 // NTC接在A0口上// NTC查询表// 温度(°C) 电阻(Ω)// -50 1000 ...

  5. 《3D打印:三维智能数字化创造(全彩)》

    <3D打印:三维智能数字化创造(全彩)> 基本信息 作者: 吴怀宇 出版社:电子工业出版社 ISBN:9787121220630 上架时间:2014-1-13 出版日期:2014 年1月 ...

  6. Udacity机器人软件工程师课程笔记(二十五) - 使用PID控制四轴飞行器 - 四轴飞行器(四旋翼)模拟器

    1.四轴飞行器运动学和动力学模型 在讨论四轴飞行器时,明确定义两个参考坐标系会很有帮助:一个固定的世界坐标系W{W}W和一个牢固地附着到四轴飞行器的质心(CoM)的运动坐标系B{B}B. 假设运动坐标 ...

  7. 3D打印控制板初步认识

    3D打印控制板 RAMPS1.4 3D打印控制板:软件下载\连接\安装\测试 电源接反,电机驱动板接反将有可能烧毁芯片和电路,请再三确认后再进行通电. 如何使用: 1.需要用到的模块或器件: Ardu ...

  8. RAMPS1.4 3d打印控制板接线与测试

    "工欲善其事,必先利其器",在开始工作之前,你应该准备下面所说的工具(包括软件和硬件). 1.需要下载的软件 1.1 固件上传工具--Arduino IDE 这是上传固件的必备工具 ...

  9. RAMPS1.4 3d打印控制板接线与测试2

    http://learn.makerlab.me/guides/1/articles/2 mega 2560板子在3d打印机中相当于大脑,控制这所有的3d打印配件来完成复杂的打印工作,但mega256 ...

最新文章

  1. linux 正则查找email_Linux生产环境上,最常用的一套“Sed“技巧
  2. Python告诉你这些旅游景点好玩、便宜、人又少!
  3. mysql backdoor_Mysql UDF BackDoor
  4. 服务器异常下电文件系统,SUN服务器Solaris异常情况下恢复操作步骤(8页)-原创力文档...
  5. 完课率最高 | 带学吴恩达《机器学习》课程和作业,带打Kaggle全球顶级大赛!...
  6. Java服务CPU飙到99%问题排查
  7. 【系统设计】发现类的方法
  8. [Matlab]求解线性方程组
  9. DW06、DW07 锂电保护IC手册电路,锂电池过充过放过流短路保护芯片电路
  10. python中的字符数字之间的转换函数
  11. 计算机二级的理论知识点,计算机二级必备知识点
  12. 2021FME博客大赛 —— 基于FME的土地利用与夜光遥感数据综合统计
  13. Zabbix4.0安装教程
  14. mysql codesmith_CodeSmith连接不上MySQL的解决方法
  15. 面对互联网寒冬,程序员能够做什么?
  16. 电脑桌面有计算机和回收站怎么办,电脑回收站不见了怎么办 电脑回收站找回的4种方法...
  17. IDEA使用Statistic插件统计代码数量
  18. c语言分桃分题设计思路,C语言实现的猴子分桃问题算法解决方案
  19. Flowplayer一款免费的WEB视频播放器
  20. 【VideoQA最新论文阅读】第一篇视频问答综述Video Question Answering: a Survey of Models and Datasets

热门文章

  1. [ 物联网篇 ] 27 -使用libcur API 实现本地时间同步的功能,类似NTP功能
  2. MyBatis(一)—— 2h学完这篇就可以入门mybatis啦
  3. Java两个线程交替打印奇偶数(两种方法对比)
  4. android开发——RecycleView
  5. 系统方法定位 IOS
  6. 微信服务器与客户端消息通讯机制,微信在部分地区发生连接故障,你遇到了么?...
  7. 使用sunshine+moonlight 实现电脑串流到电视(Android 设备)低延迟投屏
  8. dell进入u盘启动模式_如何调整戴尔电脑硬盘模式设置U盘第一启动
  9. 《使用Python进行自然语言处理》学习笔记六
  10. android stdio findViewById(R.id.报错