资料介绍
描述
前言:
我喜欢独自航行,因为当一个人带着他的帆船在海上航行时,他得到了进化到更高水平所需的一切。在恶劣天气的生海中航行可能非常困难,但如果他选择阳光和风好的天气好的日子,享受将是最大的。
幸福意味着无限的视野,完美的运动技术,最佳的选择,也意味着人类的东西,如一杯好酒和美味的三明治!正是在这个时候,自动驾驶仪提供了帮助:它代替您工作,同时您在海上享用下午 5:00 的茶和饼干。:-)
Autopilot 能为您做什么:
帆船没有引擎,不能沿着程序化的路径从港口到海滩,然后到钓鱼点,绕过灯塔再返回,它不能。
整个工作由水手完成,此时我们必须了解它:修剪风帆,控制天气和风源/速度,加固或释放绳索,注意与其他船只的交通,决定方向和转向......水手决定休息一下,比如说 10 秒或几分钟(著名的“下午茶时间”),他打开了自动驾驶仪。在几秒钟内,它的 GPS 会获取船的位置、速度和方向,并能够保持方向(路线)。转向系统是一根连接到方向舵的操纵杆,通常由专业的水手手移动,现在由自动驾驶仪通过由滑轮和绳索连接的步进电机控制。
控制方向舵是微调或粗调的连续工作。船更小(更轻),影响它的方向因素的变化更大:海浪,风的方向和压力,水手运动引起的船上重量转移,海流。但是Sailor总是醒着,即使自动驾驶开启,通过遥控的方式改变实际路线:上面有4个按钮,标记为+1 -1 +10 -10,用于角度的小或大变化,增加或减少值。这些按钮也出现在自动驾驶仪上,绿色(右)和红色(左)按钮。蓝色按钮(中间)用于激活或停用自动驾驶仪,即暂停。它也是一个黑色按钮,用于设置内存中的参数。
电路:
主要处理由 MCU Arduino Uno完成。另一个 MCU,Arduino Nano ,是看门狗:我知道它在 Uno 内部确实存在一种看门狗,但我喜欢用独立的外部微控制器来做,这是我一生的梦想,我现在很开心!Uno 必须通过引脚 3 -> A0 将 Nano 喂入高/低,5/0 伏,至少每 2.5 秒一次(喂食间隔);如果不是,则表示 Uno 正在“休眠”或“阻塞”,Nano 会重置 Uno……它从未发生过,你能相信吗?
它与焊接在一起的i2c 电路转换器一起使用流行的显示器,最后仅使用 4 根线显着节省了与 Uno 通信的数字引脚。还有按钮和遥控器的连接方式由电阻分压器完成,以达到使用尽可能少的 MCU 端口的目标;我选择了 1% 精度的电阻,vwin 比较值应该在我输入代码的值之间;如果由于您选择了其他类型的电阻而无法识别某些按钮,也只需对常量进行一些更改(修改“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 转
- 用于电机的控制器 Keyes L298
- RF433Mhz RC XD-YK04+4键遥控器+线圈天线
- 6 个常开按钮(2xRed、2xGreen、1xBlack 和 1xBlue)
- 电源开关(白色)
- 用于外部步进电机的母头 + 公头 6 针圆形连接器
- 蜂鸣器
- 显示LCD1602 2x16字符+i2c转换电路
- 3 个 LED(红色、蓝色和黄色))
- IC 24c04 i2c eeprom
- IC 4051 多路复用器
- 电池 LiPo 2s 7.4v 2600mA
- IC 7805 稳压器 + 散热器
- 热敏电阻 NTC MF52-103 10k
- 自恢复保险丝 2A
- 6x 1N4148 二极管 (D1-D6)
- Autopilot 防护罩上的电阻器(R1=330, R2=1k, R3=2k, R4=5.1k, R5=1k, R6/R7/R14=330, R8-R13=10k, R15=10M)
- 电容器(C1=470uF 16v,C2=100n)
- 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,蜂鸣器会发出哔哔声。
PCB印刷电路板和组装:
由于这个原因,我使用了单面 PCB ,我必须包括一些跳线(虚线)来解决整个电路的路线。此处显示了组件面,但在下方您有所有文件、组件和焊接面,镜像,用于通过激光打印机在“黄色”或“蓝色”纸张上下载和打印。我用的是黄色的,但他们说蓝色更好(但价格要高得多)。打印时请记住禁用碳粉节省设置,改为使用 1200 dpi 分辨率以获得深黑色效果。从魔术片到PCB的墨粉转移过程是使用热熨斗完成的……在两面印刷,也在元件面上印刷,可以轻松识别物品的位置,甚至使项目“专业”。
两块 PCB 的尺寸都可以作为堆栈安装在另一个 Arduino Uno 上:首先是电源单元,然后是自动驾驶仪单元。
我的选择是将所有东西放在一起,PCB、MCU、RC、电机驱动电路、电池、GPS、按钮、开关、电线、连接器等。想着有一天可以重复使用它们:我没有把它们焊接在一起,我用头和流行的杜邦电线/连接代替。然后大约有200个未焊接的连接,这意味着不时会发生意外和不需要的故障或电路的不同行为,这是正常的。建议焊接一切以获得更稳定的电路!
参数设置和显示传感器值:
按下盒子侧面的黑色按钮,进入设置模式;这也可以在主动导航期间完成,无需先输入 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 系统远离水!:-)
新闻与更新:
- 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
- 07.10.2022,第 2 版现已在此链接上可用!
免责声明和警告:
可以说这是我们在这里玩的游戏,没什么可认真的!几年前,我进行了一次长达 16 个月的长途旅行,乘坐帆船环游世界。在所有天气条件下,甚至在恶劣的天气条件下,我们都使用真正的自动驾驶仪(不是这个!)进行了广泛的导航。真正的自动驾驶仪是非常强大的硬件和软件,你必须非常信任。相反,这款 Arduino Autopilot是一款非常棒的游戏,可以用来玩游戏并花时间娱乐。
- 自动驾驶芯片市场现状和趋势分析 4次下载
- 初识自动驾驶系统
- 自动驾驶如何落地 自动驾驶的商业模式与挑战
- 自动驾驶汽车开源案例
- 自动驾驶汽车开源分享
- 自动驾驶仪开源分享
- PandaⅡ自动驾驶仪说明书 1次下载
- 无人直升机模型自动驾驶仪系统开发 0次下载
- 伺服自动驾驶帆船的冗余电源
- 开源飞控有哪些流派 1次下载
- 基于强化学习的飞行自动驾驶仪设计 27次下载
- 智慧蜂自动驾驶仪操作说明书
- 基于dsPIC30F的数字自动驾驶仪设计
- 导弹自动驾驶仪测试系统的开发研究
- 基于ARM处理器的小型无人机自动驾驶仪的设计
- 基于自动泊车的自动驾驶控制算法设计与研究 1209次阅读
- 自动驾驶系统的原理和结构讲解 1.4w次阅读
- 浅析自动驾驶汽车的决策控制系统 1066次阅读
- 自动驾驶汽车的7大误解汇总 3252次阅读
- 探讨当前自动驾驶测试技术 4741次阅读
- 自动驾驶测试验证技术有哪些 5850次阅读
- 自动驾驶的概述、技术、人才、应用和趋势 1w次阅读
- 深入分析自动驾驶系统以及涉及到的软件系统 1.7w次阅读
- 有关自动驾驶汽车硬件系统的内容 3738次阅读
- 自动驾驶汽车硬件系统概述 7714次阅读
- 自动驾驶技术目前有点过分炒作,自动驾驶事故也被过度渲染 3166次阅读
- 如果只是hardware可以自动驾驶,也能叫“全”自动驾驶吗? 4277次阅读
- 自动驾驶的ACC自适应巡航系统的组成及原理 2.7w次阅读
- Uber自动驾驶事故原因解析_自动驾驶事故还有哪些 8692次阅读
- 自动驾驶技术原理介绍和未来的趋势如何 3.4w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多