电子发烧友App

硬声App

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

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

3天内不再提示
电子发烧友网>电子资料下载>电子资料>帆船自动驾驶仪(自动转向系统)开源分享

帆船自动驾驶仪(自动转向系统)开源分享

2022-10-21 | zip | 2.06 MB | 次下载 | 免费

资料介绍

描述

前言:

我喜欢独自航行,因为当一个人带着他的帆船在海上航行时,他得到了进化到更高水平所需的一切。在恶劣天气的生海中航行可能非常困难,但如果他选择阳光和风好的天气好的日子,享受将是最大的。

幸福意味着无限的视野,完美的运动技术,最佳的选择,也意味着人类的东西,如一杯好酒和美味的三明治!正是在这个时候,自动驾驶仪提供了帮助:它代替您工作,同时您在海上享用下午 5:00 的茶和饼干。:-)

Autopilot 能为您做什么:

帆船没有引擎,不能沿着程序化的路径从港口到海滩,然后到钓鱼点,绕过灯塔再返回,它不能。

整个工作由水手完成,此时我们必须了解它:修剪风帆,控制天气和风源/速度,加固或释放绳索,注意与其他船只的交通,决定方向和转向......水手决定休息一下,比如说 10 秒或几分钟(著名的“下午茶时间”),他打开了自动驾驶仪。在几秒钟内,它的 GPS 会获取船的位置、速度和方向,并能够保持方向(路线)。转向系统是一根连接到方向舵的操纵杆,通常由专业的水手手移动,现在由自动驾驶仪通过由滑轮和绳索连接的步进电机控制。

控制方向舵是微调或粗调的连续工作。船更小(更轻),影响它的方向因素的变化更大:海浪,风的方向和压力,水手运动引起的船上重量转移,海流。但是Sailor总是醒着,即使自动驾驶开启,通过遥控的方式改变实际路线:上面有4个按钮,标记为+1 -1 +10 -10,用于角度的小或大变化,增加或减少值。这些按钮也出现在自动驾驶仪上,绿色(右)和红色(左)按钮。蓝色按钮(中间)用于激活或停用自动驾驶仪,即暂停。它也是一个黑色按钮,用于设置内存中的参数

pYYBAGNPQqaAJSdRAAKNWUCSlok198.png
 

电路:

主要处理由 MCU Arduino Uno完成另一个 MCU,Arduino Nano ,是看门狗:我知道它在 Uno 内部确实存在一种看门狗,但我喜欢用独立的外部微控制器来做,这是我一生的梦想,我现在很开心!Uno 必须通过引脚 3 -> A0 将 Nano 喂入高/低,5/0 伏,至少每 2.5 秒一次(喂食间隔);如果不是,则表示 Uno 正在“休眠”或“阻塞”,Nano 会重置 Uno……它从未发生过,你能相信吗?

它与焊接在一起的i2c 电路转换器一起使用流行的显示器,最后仅使用 4 根线显着节省了与 Uno 通信的数字引脚。还有按钮和遥控器的连接方式电阻分压器完成,以达到使用尽可能少的 MCU 端口的目标;我选择了 1% 精度的电阻,模拟比较值应该在我输入代码的值之间;如果由于您选择了其他类型的电阻而无法识别某些按钮,也只需对常量进行一些更改(修改“checkRfRC()”和“checkHWButtons()”处的代码)。RF 433Mhz 遥控 (RC) 电路运行良好;为了提高距离覆盖范围和成功机会,我添加了一个你可以用一根铜线自己制作的线圈天线我在 10 米外对其进行了测试,但我认为它甚至可以在 20 米或更远的地方工作,考虑到我用来测试 Autopilot 的目标帆船只有 4.20 米长,这已经绰绰有余了。

GPS单元我一开始用的是EM406A不错,可惜后来发现有Week-Rollover-Bug,太旧了,只好换了个很不错的备受欢迎的北天BN-220T。使用其配置软件,请将其设置为每秒“吐”出 2 次(2Hz),这是必要的“$GNRMC”NMEA 序列句。GPS 将 (TX) 串行数据发送到 Uno 的引脚 0 (RX)。该数据包含用于计算电机校正的所有导航数据:日期、时间、位置纬度和经度、真实航向、速度和卫星定位的有效性。由于 Arduino 的 IDE 编程也使用 pin 0 (RX) 端口,请记住在此操作期间暂时断开 GPS...

我的另一个梦想是使用 EEPROM IC 2404 是一个漂亮的 512 字节 i2c 集成电路,我用于在此存储芯片中读取/写入步进电机运动的一些参数,我将在稍后的“软件”段落中解释。

组件列表:

  • Arduino Uno 作为 MCU
  • Arduino Nano 作为 WatchDog
  • 北天BN-220T GPS
  • 步进电机,型号 23LM,54 步 = 1/4 转
  • RF433Mhz RC XD-YK04+4键遥控器+线圈天线
  • 6 个常开按钮(2xRed、2xGreen、1xBlack 和 1xBlue)
  • 蜂鸣器
  • 显示LCD1602 2x16字符+i2c转换电路
  • 3 个 LED(红色、蓝色和黄色))
  • IC 24c04 i2c eeprom
  • 电池 LiPo 2s 7.4v 2600mA
  • IC 7805 稳压器 + 散热器
  • 热敏电阻 NTC MF52-103 10k
  • 自恢复保险丝 2A
  • Autopilot 防护罩上的电阻器(R1=330, R2=1k, R3=2k, R4=5.1k, R5=1k, R6/R7/R14=330, R8-R13=10k, R15=10M)
  • 2W 0.22 欧姆电阻 (R6)
  • 公针
  • 母长针头
  • 外壳透明且“防水”

电路上有几个传感器都通过IC 4051 多路复用器连接到 Arduino Uno 它是一个热敏电阻,以控制稳压器散热器温度,一个2W电阻和4x10k作为分压器来计算安培作为整个电路的功耗电池电压得到控制:当单个元件放电到 3.3v 以下时,LiPo 是关键的;该电路在一个封装中包含两个元件 (2S) LiPo,在低电压(低于 7.0v)的情况下,蜂鸣器会以短促的哔哔声通知您。不要等待太久关闭,并尽快充电!发光二极管:黄色以 1Hz 闪烁,让您知道 WatchDog 正在工作;自动驾驶开启时蓝色开启,暂停则关闭;按下遥控器按钮之一时,红色 LED 闪烁。

所有电路工作电压为 5.0v,由 LiPo 2S 7.4v 2600mA/h 电池和IC 7805 稳压器供电电流不应大于800mA,但通常在100-450mA左右。请在上面放一个散热器热敏电阻放在上面,如果温度超过 50°C,蜂鸣器会发出哔哔声。

 
 
 
poYBAGNPQqqAFPhlAAa3oFRpZlk762.jpg
 
1 / 8Autopilot 原型板电路“实时”(更多图片请按“>”)
 

PCB印刷电路板和组装:

由于这个原因,我使用了单面 PCB ,我必须包括一些跳线(虚线)来解决整个电路的路线。此处显示了组件面,但在下方您有所有文件、组件和焊接面,镜像,用于通过激光打印机在“黄色”或“蓝色”纸张上下载和打印。我用的是黄色的,但他们说蓝色更好(但价格要高得多)。打印时请记住禁用碳粉节省设置,改为使用 1200 dpi 分辨率以获得深黑色效果。从魔术片到PCB的墨粉转移过程是使用热熨斗完成的……在两面印刷,也在元件面上印刷,可以轻松识别物品的位置,甚至使项目“专业”。

两块 PCB 的尺寸都可以作为堆栈安装在另一个 Arduino Uno 上:首先是电源单元,然后是自动驾驶仪单元。

我的选择是将所有东西放在一起,PCB、MCU、RC、电机驱动电路、电池、GPS、按钮、开关、电线、连接器等。想着有一天可以重复使用它们:我没有把它们焊接在一起,我头和流行的杜邦电线/连接代替。然后大约有200个未焊接的连接,这意味着不时会发生意外和不需要的故障或电路的不同行为,这是正常的。建议焊接一切以获得更稳定的电路!

 
 
 
pYYBAGNPQqyAFIhaAAF09pKkO38461.png
 
1 / 2自动驾驶仪板屏蔽,组件面(更多图片请按“>”)
 

参数设置和显示传感器值:

按下盒子侧面的黑色按钮,进入设置模式这也可以在主动导航期间完成,无需先输入 Pause。显示屏第一页显示电池电压(V=7.83)、功耗(mA=177)和散热器附近热敏电阻传感器的温度(38°C);一次又一次地按下进入下一页的黑色按钮;第 2、3、4、5 页显示下列参数,您可以通过 -1 和 +1 按钮更改这些值。第 6 页显示“正在更新...”如果您更改了某些内容,则值将保存在 EEPROM 存储器中。

  • 间隔:即2000毫秒,是步进电机一次尝试和另一次尝试之间的时间,以恢复“H”航向“R”路线,向右或向左移动舵杆;
  • 最小值:即 2°,是自动驾驶干预的最小偏离路线度数;达到此值,方向舵稳定地保持在中心位置;
  • Max:即40°,是步进电机一次的最大转向变化;如果计算的是 50° 变化,实际上 Stepper 只会移动 40°;
  • Coeffic.:即1.50 x°,是一次转向变化的系数;如果计算是针对 40° 变化,实际上步进电机将移动 (40 x 1.50)=60°;

当安装在帆船上时,这些参数是微调 Autopilot所必需的。响应性、灵敏度和平滑度取决于滑轮的直径、滑轮的数量、步进电机上主滑轮的直径、舵的灵敏度、舵杆连接在其上的长度等。让我们安装一切,并尝试在船上体验。当然,在所有测试阶段都选择一个阳光明媚、风轻云淡的日子!

它是如何“现场”工作的:

您正在海上、湖上或海港周围航行。现在是下午茶时间,你的可乐和你最喜欢的三明治在口袋里等着。我们在这里:打开 Autopilot并让它进行卫星 GPS 定位,您现在应该在显示屏上读取以节为单位的实际速度、时钟和航向方向,即 H270°(R=要遵循的路线,H=实际航向)以度为单位(记住180°=南,270°=西,360°或0°=北,90°=东)。在暂停模式下(显示 STOP),R 和 H 值相同。现在连接转向绳,从步进电机到舵杆,然后按蓝色按钮启动 Autopilot 转向在这一点上,自动驾驶仪保持 R=路线方向,并且可以控制 H=航向时发生的情况。标题编号肯定会更改 ,根据我们已经讨论过的天气条件,缓慢或快速。然后自动驾驶仪尝试恢复到 R=路线方向进行修正,即 -10°、+5° 等,直到 H 值等于 R 值您可以决定对路线进行一些更改,您可以使用设备上的红色和绿色按钮(-1 -10 +1 +10)或通过遥控器来修改数字。要收回转向的控制您只需按下暂停蓝色按钮,将绳索从舵杆上断开,用手继续工作。做得好。

软件方面:

代码很长,但我希望它足够清晰,易于理解。无论如何,我会解释它是如何做的。该草图使用了大约 65% 的程序和大约 45% 的内存。即使使用 String 类,主要用于 Serial NMEA 语句操作,整个阐述流程也稳定可靠;它使用“serialEvent()”每秒两次从 GPS 接收数据,然后调用“nmeaExtractData()”,最后使用“nmea0183_checksum()”检查数据包以确保数据完整性。如果您使用其他品牌和型号的 GPS确保句子结构相同,否则您必须在此处进行一些更改。例如EM406A 使用 "$GPRMC" packet id ,BT220 使用 "$GNRMC" 代替...只是一个小的名称更改...https://nmachecksum.eqth.net - 这里是一个完整的 NMEA 句子的示例,它包含:id、时间、有效性、纬度、经度、速度、真实路线、日期、变化和校验和。

$GPRMC, 095836.000, A, 4551.9676, N, 01328.7118, E, 2.09, 341.84, 280519,, *08

在“Setup()”期间检查 EEPROM :如果是新的或未知的,它会被初始化(格式化)。内存中的参数以字节读取/写入:0=0x29, 1=0x00, 2-3=interval, 4-5=min, 6-7=max, 8-11=coefficient (byte, byte, int, int,漂浮)。我小心地处理了 EEPROM 读/写操作,可能防御性太强了……传感器每 10 秒通过多路复用器的“readMuxSensors()”检查一次,如果电池电量低或温度高,就会发出警报。功耗分辨率低,步长40mA左右。不断检查硬件和 RC 按钮;他们所做的取决于“IsSetup”布尔值以及显示“RefreshDisplay()”是否. 代码的核心是 STEERING CONTROL 部分,它调用“gomotor()”函数将步进器移出和移回是的,它可能会将方向舵向右移动 10°,并且在间隔值之后它会移动回零方向舵位置,等等在新一轮计算之后。如前所述,转向工作也在设置期间进行,因为它只影响几个按钮和显示行为。Whatchdog 喂食非常简单但很重要:只要尽快打开/关闭它的 Pin。

如何在帆船上安装它:

如下图所示,我选择将Autopilot和步进电机放在船尾,都用螺栓等固定好;一根直径为 6 毫米的绳子从主电机滑轮开始,绕着放置在两侧的另外两个滑轮。这两个滑轮应通过两个蹦极环“固定”在船上,以保持绳索略微张紧。此时,最后,你要决定如何将绳索连接到舵杆(临时连接);它必须在您希望 Autopilot 运行时连接,易于连接和断开连接。让 Autopilot 系统远离水!:-)

poYBAGNPQrCANMp8AAVSO_Ll3Tk321.jpg
帆船上的自动驾驶仪安装
 

新闻与更新:

  • 10.05.2020 ,添加用于下载步进滑轮(由我制作)和安装板(由 Andrew Barney 制作)的 .STEP 3D CAD 项目文件,以及它们的 3D 预览图片。
  • 14.01.2022 ,我发现 NTC 温度计算方面的改进,因此您应该更改 readMuxSensors() 函数中的值,如下所示:
  • 浮动 R1 = 100000; // 100k Ohm 分压电阻
  • 浮动 c1 = 6.66082410500E-004; // 斯坦哈特-哈特 C1
  • 浮动 c2 = 2.23928204100E-004; // 斯坦哈特-哈特 C2
  • 浮动 c3 = 7.19951882000E-008; // 斯坦哈特-哈特 C3

免责声明和警告:

可以说这是我们在这里玩的游戏,没什么认真的!几年前,我进行了一次长达 16 个月的长途旅行,乘坐帆船环游世界。在所有天气条件下,甚至在恶劣的天气条件下,我们都使用真正的自动驾驶仪(不是这个!)进行了广泛的导航。真正的自动驾驶仪是非常强大的硬件和软件,你必须非常信任相反,这款 Arduino Autopilot是一款非常棒的游戏,可以用来玩游戏花时间娱乐。

 


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费