车辆遥测平台搭建指南
一、NMEA 0183 协议简介
NMEA 0183 通常被开发者认为只是与 GPS 接收器通信的方式,但实际上它是一种更通用的通信协议,广泛应用于海洋环境中的各种设备,如回声测深仪、自动驾驶仪和气象传感器等。更多关于 NMEA 0183 标准的信息可在 Wikipedia 上查询。以下是一些相关参数说明:
| 参数 | 说明 |
| ---- | ---- |
| d1 | 位置类型:0 = 无效或不可用,1 = 自主位置,2 = RTCM 或 SBAS 差分修正 (n) |
| d2 | 用于位置计算的卫星数量 (nn) |
| f1 | 水平位置精度因子:HDOP (nn.nnn) |
| f2 | 参考椭球上方的海拔高度(米)。对于二维位置计算,此项目包含用户输入的用于计算位置的海拔高度 |
| M | 海拔单位:M = 米 (a) |
| f3 | 大地水准面差距(米)(+/–ddd.dd) |
| M | 大地水准面差距单位:M = 米 (a) |
| d3 | 差分修正的时间(秒)(nnn) |
| d4 | 仅用于 RTCM 的基站 ID (nnnn) |
| cc | 校验和 |
二、电源供应组装
- 电压调节需求
由于系统将直接从汽车电源获取电力,需要将通过 OBD - II 连接提供的 12 - 14V 电压调节为稳定的 5V。虽然大多数汽车使用 12V 负极接地系统,但也有例外,如许多卡车使用 24V,摩托车使用 6V,一些现代汽车使用内部 42V 电源总线。因为使用 OBD - II 连接器作为电源,且 OBD - II 标准规定提供 12V,所以相对安全。但直接连接车辆电源时,可能会遇到非 12V 的情况。 - 电压调节器选择
为了将 12V 电源调节到 5V,我们使用 LM2940CT - 5 线性电压调节器,它是流行的 LM7805 电压调节器的汽车级版本。与 LM7805 相比,LM2940CT - 5 具有更好的性能:- 应对低电压情况 :汽车启动时,电池需在数秒内提供大电流,电池端子电压可能降至 6V。LM2940CT - 5 是“LDO”(低 dropout)调节器,当输入电压比所需输出电压高 0.5V 时,仍能保持输出电压稳定;而传统的 LM7805 需要输入电压比期望输出电压至少高 2V,输入降至 6V 时,可能导致 Arduino 自发复位。
- 应对过电压和反向电压 :汽车电气系统可能会出现“负载突降”现象,交流发电机可能瞬间将 60V 或更高的电压尖峰加到线束上。此外,跨接启动汽车也可能产生类似不良影响。LM2940CT - 5 在处理过电压尖峰和反向电压输入方面比 LM7805 好得多。
以下是 LM2940CT - 5 和 LM7805 在不同情况下的性能对比:
| 情况 | LM2940CT - 5 | LM7805 |
| ---- | ---- | ---- |
| 低电压(如 6V) | 能保持稳定输出 | 可能导致 Arduino 复位 |
| 过电压尖峰 | 处理能力强 | 难以应对 |
| 反向电压输入 | 处理能力强 | 难以应对 |
-
特殊电路设计
电源供应电路与典型参考设计有所不同,在电压调节器输入两端安装了一个大电容,并通过一个功率二极管供电。还在功率二极管前加入了一个分压器和一个齐纳二极管作为分压器底部的电压钳位。这样做的目的是让 Arduino 能够优雅地处理电源故障。大电容在电源断开后能为电压调节器提供额外的几毫秒储备电力,CPU 通过分压器检测输入故障,利用这段时间在电源完全耗尽前完成一些必要任务,如关闭 USB 记忆棒上打开的文件,防止数据损坏。 -
元件安装步骤
- 安装 LM2940CT - 5 :将其安装到原型屏蔽板上,中心引脚连接到屏蔽板的接地端,右侧输出引脚连接到 +5V。输入引脚最终将通过 OBD 适配器连接到汽车的 +12V 电源线。如果引脚太大,可将其剪短至约一半长度,并用钢丝钳或小锉刀小心修剪厚度;也可使用稍大的钻头扩大 PCB 上的孔,但要确保在 PCB 上下两面焊接引脚,并注意避免短路接地层。
- 连接 47uF 电解电容 :连接在输出引脚和接地端之间,为调节器输出提供高频阻尼,帮助维持恒定电压。此电容额定电压不超过 16V,因为高额定电压电容的等效串联电阻(ESR)较高,会限制电容快速充电或放电的能力,影响其跟踪高频电压瞬变的能力。若可能,应选择“低 ESR”的电容;若没有,可并联一个较小值(如 100nF)的电容。连接时要注意极性,负极接地,正极连接到调节器输出。
- 安装 4700uF 电解电容 :安装在输入引脚和接地端之间,注意极性,负极(短引脚)接地,正极(长引脚)连接到调节器输入。此电容额定电压应为 63V 或更高,以应对可能的 60V 电压尖峰。由于其体积较大,可能无法整齐安装在屏蔽板上,可安装在外壳的其他位置,并用短连接线连接到电路。
- 安装功率二极管 :安装一个 1N4001 或等效的功率二极管,阴极(带条纹端)连接到 LM2940CT - 5 的输入引脚,汽车的 +12V 电源连接到阳极(无条纹端)。可直接焊接一根电线用于 +12V 连接,也可安装一个定向 2 针固定端子,另一个端子引脚连接到屏蔽板的接地端。
- 安装分压器和齐纳二极管 :分压器由一个 100K 上半部分和一个 47K 下半部分组成,输出连接到 Arduino 的数字输入引脚 2。输出电压为输入电压乘以 0.32(47 / (100 + 47))。例如,12V 输入时,输出为 3.84V;14V 输入时,输出为 4.48V。5.6V 齐纳二极管跨接在 47K 电阻上,为 Arduino 输入提供过电压保护。将齐纳二极管的带条纹(阴极)端连接到电阻之间的节点,无条纹(阳极)端连接到接地端。然后连接一根跳线,将分压器中心连接到 Mega 的数字 I/O 引脚 2。在软件中,将“下降沿”中断附加到引脚 2,以便在电压从高状态转变为低状态时,程序进入紧急关机模式保护 USB 记忆棒上的数据。
-
电源测试
新构建的电源应与电路的其他部分隔离测试。将屏蔽板与 Arduino 分离,且不安装其他元件,连接 +12V 电源到接地和电压调节器输入连接点,使用万用表测量屏蔽板上接地和 +5V 导轨之间的电压,若一切连接正确,应在 4.95V 至 5.05V 范围内。同时测量分压器中心连接到 Arduino 数字 I/O 引脚 2 的电压,确保其符合根据实际电源输入电压和上述计算得出的预期值。
三、串口连接安装
由于 GPS 模块和 OBD - II 适配器都使用串行接口,需要在原型屏蔽板上安装两个定向 4 针公头用于串行连接。为简化布线,将它们安装在靠近 Arduino 串行 I/O 引脚的板端。Arduino 的第一个串行端口 RX 和 TX 未被任何外设使用,可用于主机连接到数据记录器。
graph TD;
A[汽车电源] --> B[OBD - II 连接器];
B --> C[LM2940CT - 5 电压调节器];
C --> D[Arduino];
E[GPS 模块] --> F[串行连接];
G[OBD - II 适配器] --> F;
F --> D;
H[USB 记忆棒] --> D;
以上是车辆遥测平台搭建的上半部分内容,涵盖了 NMEA 0183 协议、电源供应组装和串口连接安装等关键步骤,希望对大家的项目有所帮助。在实际操作中,请务必遵循相关安全规范和操作指南。
车辆遥测平台搭建指南
四、系统整体架构理解
在搭建车辆遥测平台时,理解系统的整体架构至关重要。从电源供应到各个模块的连接,形成了一个完整的工作体系。下面通过一个表格来梳理主要组件及它们之间的关系:
| 组件名称 | 作用 | 连接关系 |
| ---- | ---- | ---- |
| 汽车电源 | 为整个系统提供电力 | 通过 OBD - II 连接器连接到电压调节器 |
| OBD - II 连接器 | 连接汽车电源和系统 | 与 LM2940CT - 5 电压调节器的输入引脚相连 |
| LM2940CT - 5 电压调节器 | 将汽车电源电压调节为稳定的 5V | 输出连接到 Arduino,为其供电 |
| Arduino | 系统的核心控制单元 | 接收 GPS 模块和 OBD - II 适配器的数据,控制数据记录等操作 |
| GPS 模块 | 提供车辆的位置信息 | 通过串行连接将数据传输给 Arduino |
| OBD - II 适配器 | 获取车辆的各种诊断信息 | 通过串行连接将数据传输给 Arduino |
| USB 记忆棒 | 用于存储记录的数据 | 连接到 Arduino,接收并保存数据 |
五、电源相关问题及解决方案
在实际使用中,电源部分可能会遇到一些问题,下面为大家列举常见问题及对应的解决方案:
| 问题 | 原因分析 | 解决方案 |
| ---- | ---- | ---- |
| 电压不稳定 | 汽车电气系统的波动、电压调节器性能不佳 | 检查电压调节器是否正常工作,可更换为性能更好的 LM2940CT - 5;检查电容是否损坏或参数不合适 |
| 电源故障时数据丢失 | 未及时处理电源中断情况 | 按照前面提到的方法,安装大电容和分压器,让 Arduino 能检测电源故障并及时处理,如关闭打开的文件 |
| 电容发热 | 电容的等效串联电阻(ESR)过高或电流过大 | 更换为低 ESR 的电容;检查电路中是否存在短路或过载情况 |
六、串行连接的注意事项
在安装串行连接时,除了前面提到的安装位置和连接方式,还有一些其他注意事项:
1. 引脚定义 :确保 4 针公头的引脚定义正确,不同的设备可能有不同的引脚功能,要仔细查看设备的说明书进行连接。
2. 信号干扰 :串行信号容易受到外界干扰,尤其是在汽车这种复杂的电气环境中。可以采用屏蔽线来减少干扰,同时要注意布线时避免与高功率电线平行铺设。
3. 通信速率 :不同的设备可能支持不同的通信速率,要在 Arduino 的软件中设置正确的通信速率,以确保数据的正常传输。
七、系统测试流程
完成车辆遥测平台的搭建后,需要进行系统测试来确保各个部分正常工作。以下是详细的测试流程:
1. 电源测试 :按照前面提到的方法,将屏蔽板与 Arduino 分离,连接 +12V 电源,使用万用表测量相关电压,确保电压在正常范围内。
2. 串行通信测试 :在 Arduino 上编写简单的测试代码,分别与 GPS 模块和 OBD - II 适配器进行通信,查看是否能接收到正确的数据。例如,对于 GPS 模块,可以编写代码打印接收到的位置信息;对于 OBD - II 适配器,可以读取车辆的基本诊断信息。
3. 数据记录测试 :使用 USB 记忆棒连接到 Arduino,让系统开始记录数据,一段时间后检查 USB 记忆棒上的数据是否完整且正确。可以编写代码在不同的时间点记录不同类型的数据,如每隔一分钟记录一次 GPS 位置和车辆的转速信息。
graph LR;
A[开始] --> B[电源测试];
B --> C{电源是否正常};
C -- 是 --> D[串行通信测试];
C -- 否 --> E[检查电源部分并修复];
E --> B;
D --> F{串行通信是否正常};
F -- 是 --> G[数据记录测试];
F -- 否 --> H[检查串行连接并修复];
H --> D;
G --> I{数据记录是否正常};
I -- 是 --> J[测试完成];
I -- 否 --> K[检查数据记录部分并修复];
K --> G;
通过以上步骤,我们完成了车辆遥测平台搭建的详细介绍,包括 NMEA 0183 协议、电源供应组装、串口连接安装、系统整体架构理解、电源问题解决方案、串行连接注意事项和系统测试流程等内容。希望大家在实际操作中能够顺利搭建出稳定可靠的车辆遥测平台。
超级会员免费看
68

被折叠的 条评论
为什么被折叠?



