基于DIY Arduino的RC气垫船

在本教程中,我们将学习如何构建基于Arduino的RC气垫船。我将向你展示建造它的整个过程,从设计和3D打印气垫船部件,包括螺旋桨,到连接电子元件和Arduino编程。yabo7. com

概述

为了控制气垫船,我使用了我的DIY Arduino基于RC发射器,我在我之前的一个视频中制作。我设置正确的操纵杆以控制伺服电机,用于将舵机定位在推力电机的背面,设置一个电位计,以控制实际连接在无刷直流电动机上的电梯螺旋桨,并将左侧操纵杆设置为控制推进。所以,让我们来看看建立这个RC气垫船所需的内容。

控制RC气垫船与DIY Arduino基于RC发射器

气垫船三维模型

首先,我用3D建模软件设计了气垫船。

气垫船3D型号 - 免费下载

你可以在此下载3D模型及用于3D打印的STL文件:

STEP文件(你可以用Fusion 360打开):

3D打印STL文件:

气垫船工作原则

气垫船的基础工作原理是该工艺被空气垫抬起。中央螺旋桨将空气吹入工艺下方,这膨胀了由软材料制成的裙子。

气垫船如何工作 - 工作原理

当裙子的气压足够高时,该工艺被抬起。经常供应的空气从工艺中间逃脱,裙子和地面之间,这会产生额外的升力,并降低气垫船与地面之间的摩擦。

一旦上升,利用第二个螺旋桨产生的推力推动气垫船前进。

DIY Arduino RC气垫船-工作原理

在推力螺旋桨的背面有一组简单的舵,用于操纵气垫船。

3 d打印技术

然而,一旦我完成了设计,我开始3D打印的部分。

3D打印带有Creality CR-10 3D打印机的大零件

气垫船的船体是打印的最大部分,我专门设计了适合我的Creality CR-10 3D打印机,它有一个30x30cm的打印床。

3D打印气垫船的船体

这是A.链接到此3D打印机如果你想看的话。

打印完成后,是时候做一些清理。打印时间最长的是气垫船的主体或驾驶舱,大约需要18个小时。因为弯曲的设计,因为我想要一个单一的打印,有很多支持材料用于这个打印。

气垫船座舱- 3d打印与许多支持材料使用Creality CR-10 3d打印机

然而,去掉它真的很容易,最后一块做得很完美。气垫船的船体被印颠倒了,只有少量的支撑材料需要被移除。事实上,我不得不对这个图案做一些调整,从中央鼓风机外壳上剪下一些材料,这样裙座就能合适地配合。

DIY钢筋混凝土气垫船船体和裙架

我已经更新了3D模型,所以不会有这个问题。

部分的一些圆形区域有点粗糙,所以我用简单的送纸来平滑它们。

使用120砂砂纸打印3D印刷部分

螺旋桨不需要任何清理,它们直接从3D打印机出来工作得很好。

3D印刷推进器

绘画气垫船

好的下一步是绘制3D打印部分。我之前没有使用任何底漆,而是直接用丙烯酸漆喷涂。

使用丙烯酸喷漆绘制3D打印

我用了一件巧克力眉纹。对于一些较小的部分,实际上只是装饰零件,我使用浅棕色。

为了使气垫船看起来有点冷却,一旦第一层外套干燥,我继续向部件增加两种颜色。为此目的,我在一张简单的纸上进行了一些随机的模式,并用它们以不同的颜色制作条纹和斑点。我用较轻的棕色和黑色为此目的。

DIY气垫船 - 驾驶舱绘画

组装Arduino RC气垫船

我真的很喜欢零件如何结果,所以一旦他们干涸,我继续组装它们。

Diy钢筋混凝土气垫船-油漆零件准备组装

我开始安装伺服电机,控制舵上的推力鼓风机壳体。我用2个M2螺栓和螺母固定伺服。

将伺服电机安装到推力鼓风机外壳

接下来是无刷电机。我有一个特别的型号是D2830,直径为28mm,长度为30mm,当然,外壳是专门为适合这个电机而设计的。

BLDC-MOTOR  -  D2830

在这里,当插入电机,首先我必须通过电线通过开口。这有点紧,但仍然可以通过他们。然后在背面,使用M3螺栓我固定电机到住房。

接下来,我可以将推力外壳与气垫船的主体合并。该部分有一个开口,因此伺服和BLDC电动机电线可以通过。

将推力鼓风机壳体与气垫船主体连接

使用四个M3螺栓,我将它们牢牢固定在一起。

一旦我完成了,我继续将第二无刷电机安装到气垫船的船体上。我再次使用相同的方法。首先,我通过开口,然后在背面使用四个M3螺栓固定电动机。

线路图

接下来是电子产品。yabo7. com电子元件将放置在船体和气垫船的主体之间。但在我们这样做之前,让我们来看看电路图,看看需要如何连接。

所以,这种气垫船的大脑是arduino板。使用Arduino,我们可以轻松控制伺服以及使用两个电子速度控制器或ESC的无刷电机。为了为BLDC电机供电,我将使用提供大约11V的3S Li-Po电池,并为Arduino供电,我们可以使用受调节的5V,ESC通过其电池消除器电路功能提供。

DIY Arduino RC气垫船电路图

对于无线通信,我将使用NRF24L01收发模块,如果使用一个放大天线,它可以有一个稳定的范围高达700米在开放空间。的RC发送器我将用于控制气垫船,是我在我以前的一个教程之一中自定义的那个,因此如果您需要更多关于它的详细信息,可以查看它。NRF24L01模块还有详细教程,以及如何使用arduino使用无刷电机。然而,基本的工作原理是,发射器发送操纵杆或电位器数据到接收器,其中控制无刷电机的速度和伺服的位置。

在该电路图上有一种更小的细节,这是电池监视器。我添加了一个简单的分压器,其中两个电阻器直接连接到电池,其输出转到Arduino的模拟输入。分压器将11伏降至约4伏,然后由5V arduino引脚接受。通过这种情况,我们可以监控电池电压,并将LED设置为亮起,例如,当电池的电压下降到11伏特时。

你可以从下面的链接获得这个Arduino教程所需的组件:

yaboAG娱乐城披露:这些是附属链接。作为一名亚马逊助理,我从合格的购买中获得收入。

因此,我开始如解释的连接组件。将两个ESC连接到单个电池,我使用并联电池连接器分离器,键入XT60。

XT60并联连接器 -  2 ESC 1电池 - 额外的电源开关

为了在项目中添加电源开关,我使用了另一个XT60连接器,在它上我切断了一根电线,并在那里焊接了一个拨动开关。所以,一边是Y分线,另一边是电池。

接下来,我把ESCs放到主体中,把它们困在主体和气垫船的船体之间。然后用4个M3螺栓将两个部分固定在一起。从顶部开口的身体,我然后把电池插入驾驶舱区域。

将电子元件添加到气垫船中

接下来,我们需要将组件连接到Arduino,为此我添加了两个引脚头到Arduino,这将作为GND和5V引脚。

Arduino Uno -这个DIY RC气垫船的大脑

因此,一旦将所有内容连接到Arduino,我通过了NRF24L01天线,指示灯LED和电源开关,通过驾驶舱的顶盖。

然后我只需要将一切挤入驾驶舱内。这里有点紧张,因为我使用了Arduino Uno,并且可能已经使用了和Arduino Nano。

然而,我设法适合一切,也将一个小装饰部分连接到盖子上,然后把它夹在驾驶舱的身体上。

我继续安装转向系统。首先,我使用M2螺栓和螺母将小链路连接到伺服喇叭。然后我将第一方向舵插入到位并使用2mm金属线将其固定到推力壳体上,该金属线穿过其主体,因此舵可以旋转。以同样的方式我附着第二档。

安装气垫船转向系统

该舵具有额外的插槽,因此我们可以将其连接到以前插入伺服的链接。同样,我使用M2螺栓和螺母来保护它们。最后,我使用另一个链接和转向系统彼此连接两个角膜。

DIY Arduino RC气垫船舵-转向系统

接下来,我将把这个小装饰部分附在气垫船的一侧。我用钻头钻了一个洞,然后用一个单一的螺钉把这个部分固定在船体上。我把这些部分放在两边,我认为他们非常适合气垫船的整体外观。

Diy钢筋混凝土气垫船-装饰部件

好的,接下来我继续制作这个气垫船的裙子。你可以在这里注意到裙子支架上面有孔,这是为了将它连接到船体上。

也有可以放置螺母的槽,这样我们就可以使用M3螺栓轻松地将裙座固定在船体上。当我把所有的螺母固定好后,我继续做这条裙子,我用了一个简单的垃圾桶塑料袋。

所以我首先在支架的中间区域涂上了交流胶水,然后把它粘到塑料袋上。然后我把支架的周长偏移在6厘米左右。我在几个点上做了标记,然后把它们连接在一起。

根据裙子支架标记塑料袋

使用实用刀,将塑料袋切割成正确的尺寸。然后我翻了一把裙子,向袋子添加了一些额外的支架,在那里我们以前使用AC胶水胶合。

接下来,袋子的外部需要粘到持有人的顶部。再一次,我用了交流胶水,小心地把塑料袋固定在上面。

一旦完成了,这就是裙子的样子。

DIY气垫船裙-气垫

接下来,我通过塑料袋制成孔,其中螺栓应该穿过。裙子支架只有1毫米较小,然后小气垫船的船体,所以与塑料袋相结合,它完美地适合船体。为了将裙子固定到船体上,我简单地将M3螺栓固定在整个周边周围。

将裙固定在气垫船本体上

裙子还有一件事要做,这是塑料袋的中心区域。

所以,这一半的空气会直接使裙子膨胀然后从这个开口流出,在中间形成一个额外的气泡。

最后,剩下的是要做的,是将螺旋桨连接到无刷电机。为此目的,我正在使用无刷电机附带的夹头。将螺旋桨紧固到电机轴真的是简单有效的方式。

然而,我丢失了夹头为我的另一个电机,所以我不得不打印一个不同版本的螺旋桨直接适合到电机轴,这是3.15毫米。实际上,打印出来的效果非常好,它与马达完美地契合和固定,甚至不用胶水。

3D印刷螺旋桨 - 将其连接到无刷电机

就是这样,我们的无线电控制气垫船终于完成了。

DIY RC气垫船 -  Arduino项目

但是,在此视频中留下的是看看Arduino代码以及程序的工作原理。

Arduino RC气垫船代码

这里是这个DIY Arduino基于RC气垫船项目的代码:

/* Arduino based RC Hovercraft == Receiver Code - ESC and Servo Control = by Dejan, www.亚搏手机版官方下载HowToMechatronics.com Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */ #include  #include  #include  #include  #define led 10 RF24 radio(8,9);// nRF24L01 (CE, CSN) const byte address[6] = "00001";unsigned long lastReceiveTime = 0;unsigned long currentTime = 0;伺服esc1;//创建伺服对象控制ESC伺服esc2;伺服servo1;int esc1Value, esc2Value, servo1Value;NRF24L01 buffer limit struct Data_Package{字节j1PotX;字节j1PotY; byte j1Button; byte j2PotX; byte j2PotY; byte j2Button; byte pot1; byte pot2; byte tSwitch1; byte tSwitch2; byte button1; byte button2; byte button3; byte button4; }; Data_Package data; //Create a variable with the above structure void setup() { Serial.begin(9600); radio.begin(); radio.openReadingPipe(0, address); radio.setAutoAck(false); radio.setDataRate(RF24_250KBPS); radio.setPALevel(RF24_PA_LOW); radio.startListening(); // Set the module as receiver resetData(); esc1.attach(7); esc2.attach(6); servo1.attach(5); pinMode(led, OUTPUT); } void loop() { // Check whether we keep receving data, or we have a connection between the two modules currentTime = millis(); if ( currentTime - lastReceiveTime > 1000 ) { // If current time is more then 1 second since we have recived the last data, that means we have lost connection resetData(); // If connection is lost, reset the data. It prevents unwanted behavior, for example if a drone jas a throttle up, if we lose connection it can keep flying away if we dont reset the function } // Check whether there is data to be received if (radio.available()) { radio.read(&data, sizeof(Data_Package)); // Read the whole data and store it into the 'data' structure lastReceiveTime = millis(); // At this moment we have received the data } // Controlling servos servo1Value = map(data.j2PotX, 0, 255, 0, 50); servo1.write(servo1Value); // Controlling brushless motor with ESC // Lift propeller esc1Value = map(data.pot1, 0, 255, 1000, 2000); // Map the receiving value form 0 to 255 to 0 1000 to 2000, values used for controlling ESCs esc1.writeMicroseconds(esc1Value); // Send the PWM control singal to the ESC // Thrust propeller esc2Value = constrain(data.j1PotY, 130, 255); // Joysticks stays in middle. So we only need values the upper values from 130 to 255 esc2Value = map(esc2Value, 130, 255, 1000, 2000); esc2.writeMicroseconds(esc2Value); // Monitor the battery voltage int sensorValue = analogRead(A0); float voltage = sensorValue * (5.00 / 1023.00) * 3; // Convert the reading values from 5v to suitable 12V i Serial.println(voltage); // If voltage is below 11V turn on the LED if (voltage < 11) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } void resetData() { // Reset the values when there is no radio connection - Set initial default values data.j1PotX = 127; data.j1PotY = 127; data.j2PotX = 127; data.j2PotY = 127; data.j1Button = 1; data.j2Button = 1; data.pot1 = 1; data.pot2 = 1; data.tSwitch1 = 1; data.tSwitch2 = 1; data.button1 = 1; data.button2 = 1; data.button3 = 1; data.button4 = 1; }

描述:因此,首先我们需要包括无线电通信的RF24库以及用于控制伺服和无刷电机的伺服库。然后我们需要定义无线电和伺服对象,下面的程序需要一些变量以及用于将传入数据从DIY RC发射器存储的变量的结构。有关更多详细信息,此沟通如何工作我会建议检查我的特定教程

在设置部分中,我们需要初始化无线电通信以及定义连接伺服和ESCs的引脚。

在回路部分,我们读取从发射机输入的数据,并使用该值控制伺服和无刷电机。操纵杆输入的数据从0到255转换成0到50的值我们用这些值来控制伺服的位置。

用同样的方法,我们用ESCs控制无刷电机。从0到255的传入数据被转换为1000到2000的值,并使用wirteMicroseconds()函数将该数据作为控制信号发送给ESC。

为了监控电池电压,我们读取来自分压器的模拟输入,并使用一些简单的数学,将输入值转换为电池电压的实际值。如果电池电压降至11V以下,我们只需亮起指示灯LED。

就是这样。如果您需要更多的细节,您可以查看其他建议的教程,这样您就能够完全理解一切是如何工作的。

我希望你喜欢这个教程,并学到一些新的东西。欢迎在评论区提出任何问题,并查看我的Arduino项足彩网女欧洲杯目集合

21回应

  1. 约翰

    这是一个伟大的项目,并解释得很好。

    然而,由于我已经有一个9通道的标准R/C发射器和接收器,我是否在技术上仍然需要Arduino来控制电机和伺服,或这一切可以从接收器模块直接通过连接接收机到ESCs和伺服?

    什么实际值是arduino在此添加(除了监控电池电压)?

    谢谢。

    回复
    • 德国

      谢谢你!
      是的,你绝对可以用标准的RC发射器和接收器做这个项目。我只是想做一个很酷的Arduino项目,其中将包括无刷电机控制,所以这就是为什么我使用Arduino。

      回复
  2. 泰德

    用于电压检测的电压分界电阻,不是会对电池造成持续的损耗吗?(意思是,当系统处于“关闭”状态时,电池会因为电压检测而耗尽,对吧?)如何解决这个问题?

    回复
    • 德国

      好吧是的,这是一个很好的点。但是如果在电源开关后连接分压器,则不会通过它流过任何电流。

      回复
  3. 泰德

    用我的儿子制作这个项目,这是一个很棒的项目。谢谢你的伟大工作。我非常感激。

    我们可能会稍后升级到使用Arduino,但是现在我们正在使用一些外墙控制部件。Flysky I6x发射器可轻松连接到FS-X6B接收器(PWM输出),这是如此微小的,可以直接发出电动机/伺服电机...电压监控显示在I6x上。您可能会考虑这样的内容,因为它使Newbies更容易获得工作,如果它们不是Arduino / Programmer Savvy。(或提供制作您的自定义发射器之一的替代方案。)

    在玩这些自制EDF时,请警告每个人的人至少会戴上安全眼镜。我们最初在PLA中印刷,我有点害怕破碎......所以我们正在切换到PETG或ABS。在远程操作时可能不是一个问题,但任何近距离测试都可能对您的脸部危险。

    谢谢STEP文件。我设法修改了它们,增加了一些关节,这样它们就可以打印在更小的25厘米的Prusa打印床上。

    我还没有,但考虑配置ESC从“平滑”到“加速”的推力,因为它可能使推力加速一点更snapper和更少的滞后。

    回复
  4. 泰德

    仍然享受这个伟大的项目…

    如果你有一把旧的,半破的伞,那么这些提供了一些很棒的部分。我们使用雨伞衬里作为一种升级的裙子材料(而不是塑料袋)。伞状结构为舵提供了一些大小适中的硬金属丝。

    PS。您的融合项目不包括较小,最底部的保留支架机身,您可以安全地握住裙子。(也许是它在STL文件中,但我刚刚从较大的上括号中制作一个。

    回复
  5. Jan Aerth.

    很好的教育项目。我做了两个。现在是代码。这对我来说有点太难了。
    是否有一个用于Ardino RC发射机的完整Arduino代码来控制气垫船?
    非常感谢。

    回复
  6. 基里

    我想尝试这个项目,但下载3D视觉的链接是死的,你能纠正这个吗?

    回复
  7. 1月

    嗨Dejan,我想从印刷气垫船开始。在我开始之前,退款是否正确?
    对于文件“boddy6”:278.0×147.0x70.0

    谢谢你的回答。

    回复
  8. 迈克尔

    嗨Dejan,

    我已经制作了这个很酷的项目,但我有esc的问题,他们让这个哔哔声很热,真的很热。当我在无线电控制器上调整电位计时,没有任何反应。我试图重新连接从ESC到发动机的电线,但这不会改变任何东西。希望您可以提示暗示如何排除此问题的故障。

    谢谢

    回复
    • 德国

      嘿,你有足够的电池电量,你用的是什么样的控制器?确保为控制ESC提供适当的50Hz PWM信号。使用Arduino控制BLDC电机的其他详细教程获取更多详细信息。

      回复
  9. 阿德里安

    嘿,德扬,

    首先神奇的网站,但我有点困惑,我想构建控制器和悬停接收机作为一艘船项目我想适应它,但当我看着项目部分列出了似乎有一个未列出的条目数量,有没有一个完整列表为每个项目吗?

    尽可能多的信息,因为它似乎很难得到零件在英国

    回复
    • 德国

      嘿,谢谢!嗯,我没有特定的完整零件列表,但您可以从电路图中查看所有所需组件。

      回复
  10. 谢尔比

    嘿,德扬,

    将文件放入3D打印软件时,组件将大。你有什么规模的stl文件是???

    干杯

    回复
    • 德国

      好吧,它取决于3D打印机的床大小。我使用了30x30cm的CR-10。如果您使用的是较小的打印机,则它们将出现床位。

      回复

发表评论

您的电子邮件地址将不会被公布。

受到推崇的

2019年初学者和爱好者的最佳进入级示波器

为初学者和爱好者最好的示波器

受到推崇的

2019年初学者的8个最佳Arduino Starter Kits

初学者的8个最佳Arduino Starter Kits

受到推崇的

最佳3D打印机初学者和爱好者- 3D打印

最好的3d打印机初学者和爱好者