在本教程中,我们将学习如何构建基于Arduino的RC气垫船。我将向你们展示建造它的整个过程,从气垫船零件(包括螺旋桨)的设计和3D打印,到连接电子元件和为Arduino编程。必威lol
概述
为了控制气垫船,我使用了我在之前的一个视频中制作的基于DIY Arduino的RC发射机。我设置了右操纵杆来控制伺服电机,以将方向盘定位在推力电机的背面,设置了一个电位计来控制实际连接在无刷直流电机上的提升推进器,并设置了左操纵杆来控制推进。那么,让我们看看建造这艘RC气垫船需要什么。
气垫船三维模型
首先,我使用3D建模软件设计了气垫船。
您可以在此处下载3D模型以及用于3D打印的所有STL文件:
步骤文件(您可以使用Fusion 360打开它):
用于3D打印的STL文件:
气垫船工作原理
气垫船的基本工作原理是靠气垫上升。中间的螺旋桨将空气吹入船下,使软材料制成的裙子充气。
当裙子里的气压足够高时,飞船就会被举起来。不断供给的空气会从气垫船的中部、裙部和地面之间逸出,这就产生了额外的升力,也减少了气垫船和地面之间的摩擦。
一旦升空,使用第二个推进器产生推力,推动气垫船前进。
在推力推进器的背面有一套简单的方向舵,用于操纵气垫船。
3D打印
然而,一旦我完成设计,我就开始3D打印零件。
气垫船的外壳是需要打印的最大部分,我专门设计了适合我的Creacity CR-10 3D打印机,它有一个30x30cm的打印床。
这是一个链接到此3D打印机万一你想去看看。
打印完成后,是时候进行一些清理了。气垫船的主体或驾驶舱是最长的印刷品,印刷耗时约18小时。因为曲线的设计,因为我想成为一个单一的打印,有很多支持材料用于此打印。
然而,很容易把它取下来,最后的一块就完美无缺了。气垫船的外壳是颠倒的,只有少量的支撑材料需要取下。事实上,我不得不对这张照片做一些调整,从中央鼓风机罩上剪下一些材料,这样裙子支架就可以安装进去了正确地
我已经更新了3D模型,所以不会有这个问题。
零件的一些圆形区域有点粗糙,所以我用一张简单的信纸把它们弄平。
螺旋桨不需要任何清理,直接从3D打印机中打印出来,效果非常好。
绘画气垫船
好,下一步是绘制3D打印零件。我以前没有使用任何底漆,而是直接用喷漆的形式涂上了丙烯酸漆。
我在第一层眉毛上涂了巧克力色。对于一些较小的部分,实际上只是装饰部分,我使用了浅棕色。
为了让气垫船看起来更酷一点,一旦第一层涂层干了,我继续在零件上添加两种颜色。为此,我在一张简单的纸上做了一些随机的图案,并用它们来制作不同颜色的条纹和斑点。我用浅棕色和黑色来做这个。
组装Arduino RC气垫船
我真的很喜欢零件的制作过程,所以一旦它们干了,我就继续组装它们。
我开始安装伺服电机控制方向盘到推力鼓风机外壳。我用两个M2螺栓和螺母固定伺服。
接下来是无刷电机。我所拥有的特别型号是D2830,它的直径为28毫米,长度为30毫米,当然,外壳是专门为安装这台电机而设计的。
在这里插入电机时,首先我必须将电线穿过开口。虽然有点紧,但仍然可以通过。然后在背面,我用M3螺栓将电机固定到外壳上。
接下来,我可以将推力壳与气垫船主体合并。该部件有一个开口,以便伺服和无刷直流电机导线可以通过。
我用四个M3螺栓将它们牢固地固定在一起。
一旦我完成了,我继续安装第二个无刷电机的船体气垫船。这里我又用了同样的方法。首先,我通过电线通过开口,然后在背面固定电机使用四个M3螺栓。
电路图
接下来是电子产品。必威lol电子元件将被放置在船体和气垫船的主体之间。但在此之前,让我们先看一下电路图,看看所有东西需要如何连接。
这个气垫船的大脑是一个Arduino板。有了Arduino,我们可以轻松地控制伺服以及使用两个电子速度控制器或ESCs的两个无刷电机。为无刷直流电机供电,我将使用提供大约11V的3S Li-Po电池,为Arduino供电,我们可以使用ESCs通过其电池消除器电路功能提供的稳压5V。
对于无线通信,我将使用NRF24L01收发器模块,如果与放大天线一起使用,它可以在开放空间中具有高达700米的稳定范围。这个RC发射机我将用它来控制气垫船,这是我在以前的教程中定制的,所以如果你需要更多的细节,你可以查看它。还有关于NRF24l01模块的详细教程,以及如何使用Arduino的无刷电机. 然而,基本工作原理是,发射器将操纵手柄或电位计数据发送到接收器,接收器控制无刷电机的速度和伺服位置。
这个电路图上还有一个小细节,那就是电池监视器。我添加了一个由两个电阻器组成的简单分压器,它直接连接到电池,其输出到Arduino的模拟输入端。分压器将11伏电压降到4伏左右,这是5V Arduino引脚可以接受的。有了这个,我们可以监控电池电压,并设置一个LED灯亮起时,例如,电池电压将下降到11伏以下。
您可以从以下链接获取本Arduino教程所需的组件:
- NRF24L01收发器模块……亚马逊/Banggood/阿里巴巴全球速卖通
- NRF24L01+PA+LNA…………。…。亚马逊/Banggood/阿里巴巴全球速卖通
- 无刷电机…………………。……亚马逊/Banggood/阿里巴巴全球速卖通
- ESC 30A………………………………。…。。亚马逊/Banggood/阿里巴巴全球速卖通
- 锂电池………………………………。。亚马逊/Banggood/阿里巴巴全球速卖通
- XT60 2名女性对1名男性…………。亚马逊/Banggood/阿里巴巴全球速卖通
- XT60连接器…………………………亚马逊/Banggood/阿里巴巴全球速卖通
- 伺服电机 ......................................亚马逊/Banggood/阿里巴巴全球速卖通
- Arduino董事会…………………………亚马逊/Banggood/阿里巴巴全球速卖通
必威外围提钱披露:这些是附属链接。作为一名亚马逊员工,我通过符合条件的购买赚取收入。
因此,我开始连接组件,如前所述。为了将两个ESC连接到单个电池,我使用了一个并联电池连接器拆分器,类型为XT60。
为了在项目中添加电源开关,我使用了另一个XT60连接器,在其上我切断了一根电线并焊接了一个拨动开关。因此,一端连接到Y形分配器电缆,另一端连接到电池。
接下来,我将ESC放入主体中,并将其夹在主体和气垫船外壳之间。然后,我用四个M3螺栓将两个部件固定在一起。然后我从车身的顶部开口将电池插入驾驶舱区域。
接下来,我们需要将组件连接到Arduino,为此,我在Arduino上添加了两个引脚头,用作GND和5V引脚。
所以,一旦我把所有东西都连接到Arduino上,我就把NRF24L01天线、LED指示灯和电源开关,穿过驾驶舱的顶盖。
然后我只需要把所有东西都塞进驾驶舱。这里有点紧,因为我用的是Arduino UNO,也许我应该用Arduino Nano。
然而,我设法把所有的东西都装进去了,还把一个小的装饰部分贴在了盖子上,然后把它夹在了驾驶舱的机身上。
我继续安装转向系统。首先,我用M2螺栓和螺母将一个小连杆连接到伺服喇叭上。然后我插入第一个方向舵的地方,并将其固定到推力房屋使用2mm金属线通过其身体,因此方向舵可以围绕它旋转。我用同样的方法装上了第二个舵。
这个方向舵有一个额外的槽,所以我们可以把它连接到之前的插入连接到伺服。再次,我使用M2螺栓和螺母来固定它们。最后,我用另一个连杆把两个舵连接起来,这样转向系统就完成了。
接下来,我将在气垫船的侧面附加这个小装饰部件。我用钻头钻了一个洞,然后用一个螺丝把零件固定在船体上。我把这些部件放在两侧,我认为它们非常适合气垫船的整体外观。
好,接下来我继续做气垫船的裙子。你可以注意到这里的裙子支架周围有洞,那是用来把它固定在船体上的。
还有用于放置螺母的槽,通过这种方式,我们将能够使用M3螺栓轻松地将裙座固定到船体上。当我把所有的坚果固定好后,我继续做裙子,我用了一个简单的垃圾桶塑料袋。
所以首先我在支架的中间区域涂上一层交流胶,然后把它粘到塑料袋上。然后我将支架的周长偏移约6厘米。我在几个点上做了标记,然后把它们连接起来。
我用美工刀把塑料袋切成合适的大小。然后我把裙子翻转过来,在我们之前用AC胶水粘的地方加了一些额外的支架。
接下来,袋子的外层需要粘在支架的顶部。同样,我使用了AC胶水,并小心地将塑料袋固定在上面。
完成后,裙子应该是这样的。
接下来,我在塑料袋上打了几个孔,螺栓应该穿过。裙座比气垫船的船体小1毫米,因此与塑料袋结合后,它能完美地嵌入船体。为了将裙板固定在船体上,我只需将M3螺栓固定在整个周边。
还有一件事要做的裙子,这是削减中央地区的塑料袋。
因此,这一半的空气将直接膨胀裙子,然后它会流过这个开口,在中间产生一个额外的气泡。
最后,剩下要做的是将螺旋桨连接到无刷电机上。为了这个目的,我正在使用无刷电机附带的夹头。这是将螺旋桨固定在发动机轴上的简单而有效的方法。
然而,我失去了我的另一个电机的夹头,所以我不得不打印一个不同版本的螺旋桨直接安装到电机轴上,这是3.15毫米。打印出来的效果非常好,它完全适合并固定在电机上,甚至不用胶水。
就这样,我们的无线电控制气垫船终于完成了。
然而,在这个视频中剩下的是看看Arduino的代码和程序如何工作。
Arduino RC气垫船代码
以下是这个基于DIY Arduino的RC气垫船项目的代码:
/*基于Arduino的RC气垫船==接收器代码-ESC和伺服控制=由Dejan提供,www.HowToMechatronics.com图书馆:TMRh20/RF24,httpbet188官方网站s://github.com/tmrh20/RF24/ */#包括#包括 #包括 #包括 #定义led 10 RF24收音机(8,9);//nRF24L01(CE,CSN)常量字节地址[6]=“00001”;无符号长lastReceiveTime=0;无符号长currentTime=0;伺服esc1;//创建伺服对象以控制ESC伺服esc2;伺服伺服1;int ESC1值、ESC2值、伺服1值;//此结构的最大大小为32字节-NRF24L01缓冲区限制结构数据包{byte j1PotX;byte 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;};数据包数据//使用上述结构创建一个变量void setup(){Serial.begin(9600);radio.begin();radio.openReadingPipe(0,地址);radio.setAutoAck(false);radio.setDataRate(RF24_250KBPS);radio.setPALevel(RF24_PA_LOW);radio.startListening()//将模块设置为receiver resetData();esc1.attach(7);esc2.attach(6);servo1.attach(5);pinMode(led,输出);}void loop(){//检查我们是否继续接收数据,或者两个模块之间是否有连接currentTime=millis();如果(currentTime-lastReceiveTime>1000){//如果自我们接收到最后一个数据后,当前时间超过1秒,则意味着我们丢失了连接resetData();//如果连接断开,请重置数据。它可以防止不必要的行为,例如,如果无人机油门开了,如果我们断开连接,如果我们不重置函数,它可以继续飞走}//如果(radio.available()){radio.read(&data,sizeof(data\u Package))检查是否有数据要接收;//读取整个数据并将其存储到“数据”结构lastReceiveTime=millis();//此时我们已收到数据}//控制伺服伺服1Value=map(data.j2PotX,0,255,0,50);伺服1.write(伺服1Value);//使用ESC控制无刷电机//提升螺旋桨ESC1 Value=map(data.pot1,0,255,1000,2000);//将接收值从0映射到255到0 1000到2000,这些值用于控制ESCs esc1.writeMicroseconds(esc1值);//将PWM控制信号发送到ESC//推力推进器ESC2值=约束(data.j1PotY,130,255);//操纵杆停留在中间。因此,我们只需要130到255 ESC2值=映射的上限值(esc2值,130,255,1000,2000);esc2.writeMicroseconds(esc2值);//监控电池电压int sensorValue=analogRead(A0);浮动电压=sensorValue*(5.00/1023.00)*3;//将读取值从5v转换为合适的12V i串行。println(电压);//如果电压低于11V,则在(电压<11){数字写入时打开LED(发光二极管,高);}else{digitalWrite(发光二极管,低);}}void resetData(){//在没有无线电连接时重置值-设置初始默认值data.j1PotX=127;data.j1PotY=127;data.j2PotX=127;data.j2PotY=127;data.j1Button=1;data.j2Button=1;data.pot1=1;data.tSwitch1=1;data.tSwitch2=1;data.button1=1;data.button2=1;data.button3=1;data.button4=1;}
说明:因此,首先我们需要包括用于无线电通信的RF24库以及用于控制伺服和无刷电机的伺服库。然后我们需要定义无线电和伺服对象,下面的程序需要一些变量,以及用于存储来自我的DIY RC发射机的输入数据的变量结构。有关此通信如何工作的更多详细信息,我建议请查看我的教程.
在设置部分,我们需要初始化无线电通信,并定义伺服和ESC连接的引脚。
在回路部分,我们从变送器读取输入数据,并使用该值控制伺服和无刷电机。因此,从0到255的操纵杆输入数据被转换为从0到50的值,我们使用这些值控制伺服的位置。
采用相同的方法,我们使用ESCs控制无刷电机。将0到255之间的输入数据转换为1000到2000之间的值,并使用wirteMicroseconds()函数将该数据作为控制信号发送到ESC。
为了监控电池电压,我们读取来自分压器的模拟输入,通过一些简单的数学运算,我们将输入值转换为电池电压的实际值。如果电池电压降至11V以下,我们只需点亮指示灯LED。
就这样。如果您需要更多详细信息,您可以查看其他建议的教程,这样您就能够完全了解所有内容的工作原理。
我希望你喜欢这个教程,并学到了一些新的东西。请随时在下面的评论部分提出任何问题,并检查我的答案Arduino项bet188me目集.
这是一个伟大的项目,解释得很好。
然而,由于我已经有一个标准的R/C发射机和接收机,具有9个通道,我在技术上是否仍然需要一个Arduino来控制电机和伺服,或者通过将接收机连接到ESCs和伺服,可以从接收机模块直接完成这一切?
这里Arduino添加的实际值是什么(除了监控电池电压)?
谢谢
非常感谢。
是的,你完全可以用一个标准的RC发射机和接收机来制作这个项目。我只是想做一个很酷的Arduino项目,其中包括无刷电机控制,所以我使用了Arduino。
你把分压器接地在哪里?顺便说一句,很棒的项目
谢谢你可以在任何一个接地点接地。
我有一个Arduino Nano。如何将NRF24L01的电压降到3.3V。
用于电压检测的分压电阻器不就是电池上的一个恒定耗电元件吗?(也就是说,当系统以其他方式“关闭”时,电池将由于电压检测而耗尽…对吗?)如何修复?
好吧,说得好。但是如果你把分压器接在电源开关后面,就不会有任何电流通过它。
和我儿子一起做这个项目,这是一个伟大的项目。谢谢你发表的伟大作品。我非常感激。
我们以后可能会升级到使用arduino,但现在我们使用一些现成的控制部件。Flysky i6x变送器很容易连接到FS-X6B接收器(PWM输出),这是如此小,可以直接信号马达/伺服…电压监测显示在i6x上。你可能会考虑一个类似的附录,因为它可以让新手更容易得到一个工作,如果他们不是arduino/程序员悟性。(或者提供一个定制发射器的替代方案。)
请提醒大家在玩这些自制edf时至少要戴上安全眼镜。我们最初是用PLA打印的,我有点害怕它会碎裂……所以我们改用PETG或ABS。也许远程操作时没有那么大的问题,但任何近距离测试都可能对你的脸造成危险。
感谢STEP文件。我设法用一些附加的关节对它们进行了修改,这样它们就可以在一个更小的25厘米的普鲁士印花床上进行印花了。
我还没有,但是考虑将ESC从“平滑”配置到“加速”的推力,因为它可能会使推力加速更大的快点和更少的滞后。
还在享受这个伟大项目的乐趣…
如果你有一把破了一半的旧伞,那么这些伞就提供了一些很好的部件。我们使用伞衬作为升级的裙子材料(相对于塑料袋)。伞式结构为方向舵提供了一些尺寸合适的硬线。
附注:您的Fusion项目不包括更小的,最底部的固定支架体,你做了,以安全地夹在裙子。(也许它在stl文件中,但我只是从更大的上括号做了一个。
尼斯和教育项目。我两个都做了。现在是代码。这对我来说有点太难了。
有没有完整的Arduino代码让Ardino RC发射器来控制气垫船?
非常感谢你。
嘿,谢谢!RC变送器的完整Arduino代码可在特定RC变送器项目中找到。
我想试试这个项目,但是下载3D视觉的链接已经失效了,你能纠正这个吗?
嘿,尝试使用不同的web浏览器,以防下载文件时出现问题。
你好,德扬,我想从气垫船的印刷开始。在我开始之前,我想问一下尺寸对吗?
对于文件“boddy6”:278.0×147.0x70.0
谢谢你的回答。
是的,这些是正确的尺寸。
嗨,德扬,
我已经做了这个很酷的项目,但我有一个ESC的问题,他们使这个哔哔声声音,并得到真正的热。当我调整收音机控制器上的电位计时,什么也没发生。我已经尝试重新连接从ESC到发动机的电线,但这并没有改变任何事情。希望您能提示如何解决此问题。
谢谢
嘿,你有足够的电池电量吗?你用的是什么样的控制器?确保为控制ESC提供正确的50Hz PWM信号。查看关于使用Arduino控制无刷直流电机的其他详细教程,了解更多详细信息。
嘿,德扬,
首先是非常棒的网站,但我有点困惑,我想建立控制器和悬停接收器,因为我想适应一个船项目,但当我看项目的零件清单,似乎有一些项目没有列出,是否有一个完整的清单,请为每个项目?
尽可能多的零件信息,因为在英国很难获得零件
嘿,谢谢!好吧,我没有一个具体的完整的部件清单,但你可以从电路图上看到所有所需的组件。
嘿,德扬,
当将文件放入3D打印软件时,组件会变得非常大。STL文件的大小是多少?
干杯
这取决于你的3D打印机的床的大小。我用的是CR-10,它有一个30x30cm的打印床。如果你使用更小的打印机,它们的部件将被淘汰。