DYNAMENT AN0007 Arduino 至 Platinum COMM 用户指南

AN0007 Arduino 至 Platinum COMM

产品信息

规格

  • 产品名称:ARDUINO 至 PLATINUM COMMS 帮助文档
  • 制造商: Dynament Limited
  • 地址:Hermitage Lane 工业区,Kings Mill Way,
    英国诺丁汉郡曼斯菲尔德 NG18 5ER
  • 联系方式:电话:44 (0)1623 663636,邮箱:sales@dynament.com,
    Web网站:www.dynament.com
  • 发行版本:1.2,日期:09年04月2025日

产品使用说明

连接传感器

本数据表使用 Arduino Mega 作为示例amp连接方式
如下:

  • 5v -> 5v Arduino 引脚
  • 0v -> Arduino GND
  • Tx->Arduino RX1
  • Rx -> 连接至分压器的输出。输入
    前往 Arduino Tx

卷tag兼容性

Arduino 使用 5v 逻辑高电平,而 Platinum 传感器使用
3.3v。使用音量tage 分压器,其 R1 和 R2 的建议值为
4K7 以防止损坏传感器。

Arduino IDE设置

  1. 从以下网址下载最新版本的 Arduino IDE 软件
    Arduino web地点。
  2. 在工具中选择 Arduino 主板、处理器和端口
    下拉式菜单。

代码上传

  1. 复制提供的examp将代码放入 Arduino IDE。
  2. 单击箭头将代码上传到 Arduino。
  3. 打开串行监视器 view 数据传输。

常问问题

问:如果我的 Arduino Uno 只有一个通讯端口,该怎么办?
港口?

答:将白金传感器连接到该端口。使用
串行监视器,它还将显示传输的十六进制。

“`

应用笔记 AN0007
ARDUINO 至 PLATINUM COMMS 帮助文档

鼎盛有限公司
赫尔米tag英国诺丁汉郡曼斯菲尔德 Kings Mill Way e Lane 工业区,邮编 NG18 5ER。电话:44 (0)1623 663636
电子邮件: sales@dynament.com www.dynament.com

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 1 页,共 14 页

内容
Dynament Limited ………………………………………………………………………………………………………….1 连接传感器…………………………………………………………………………………………………………..3 Arduino IDE ………………………………………………………………………………………………………………5 代码解释……………………………………………………………………………………………………..9 数据包分解 ………………………………………………………………………………………………….11 使用 Serial.read() ………………………………………………………………………………………………….13
高级转换说明……………………………………………………………………………….14

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 2 页,共 14 页

连接传感器本数据表使用 Arduino Mega 作为示例amp例如,Ardunio Mega 提供多个通信端口,因此通信端口 1 用于与传感器通信,通信端口 0 用于打印到 PC。
Arduino 使用 5v 逻辑高电平,而白金传感器使用 3.3v,因此为了防止损坏传感器,tag必须使用分压器。R1和R2的建议值为4KΩ。

图 1:降低波动率tag达到可用水平
通往 Arduino 接收器的传感器传输线不需要分压器,因为 3.3v 是 Arduino 可接受的输入。
为了给传感器供电,必须将其连接到 5V 和 0V。为此,您可以使用 Arduino 上的引脚。
完成后,传感器现在应该连接以下引脚:
5v -> 5v Arduino 引脚
0v -> Arduino GND
Tx->Arduino RX1
Rx -> 连接至分压器的输出。输入连接至 Arduino Tx

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 3 页,共 14 页

完成后,您的白金传感器应按如下所示连接:
图 2:传感器倒置,带有焊接适配器
如果您使用的 Arduino 只有一个通信端口(例如 Arduino Uno),则必须将其连接到该端口,但是当您使用串行监视器(稍后显示)时,它还会显示传输的十六进制。

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 4 页,共 14 页

Arduino IDE 前往 Arduino web网站并下载最新版本的 Arduino IDE 软件。安装完成后,您将看到以下屏幕:
图3:Arduino主屏幕
在工具下拉菜单中选择您正在使用的 Arduino 板、处理器和端口:

图 4:选择主板、处理器和端口选项

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 5 页,共 14 页

复制此示例amp代码:void send_read_live_data_simple(); void receive_read_live_data_simple();
void setup(){Serial.begin(38400);Serial1.begin(38400);
}
void loop() { send_read_live_data_simple(); receive_read_live_data_simple(); 延迟(5000);
}
void send_read_live_data_simple(){ // 0x10, 0x13, 0x06, 0x10, 0x1F, 0x00, 0x58 Serial1.write(0x10); Serial1.write(0x13); Serial1.write(0x06); Serial1.write(0x10); Serial1.write(0x1F); Serial1.write(0x00); Serial1.write(0x58);
}
void receive_read_live_data_simple(){ while (Serial1.available()) { Serial.print(Serial1.read(), HEX); Serial.print(“|”); } Serial.println();
}

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 6 页,共 14 页

图 5:准备上传的代码
点击箭头将代码上传到 Arduino。Arduino 编程完成后,打开串口监视器。

AN0007

图 6:打开串行监视器

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 7 页,共 14 页

图 7:串口监视器显示已收到的数据包

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 8 页,共 14 页

代码说明 Arduino IDE 使用 C++ 对 Arduino 进行编程。
这行是前向声明。它用于告诉微控制器,在程序的后续部分将调用“send_read_live_data_simple”函数和“receive_read_live_data_simple”函数。
接下来是设置函数。此代码仅在启动时运行一次。它启动 Serial0 和 Serial1 端口。Serial0 是串行监视器屏幕上显示的端口。Serial1 是与传感器通信的端口。
这是主循环,这段代码不断循环。通过函数名可以看出,它发送了一个请求,读取实时数据结构的简化版本。然后,它读取接收端口以读取回复。此后,微控制器等待 5000 毫秒。
此函数将获取实时数据简单结构体的请求写入串行端口 1。如前所述,如果您只有一个串行端口,则应将 Serial1 更改为 Serial。要查看完整的命令列表,请参阅 Premier 传感器通信协议文档。以下是文档中有关此命令的说明:

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 9 页,共 14 页

此函数在仍有数据需要从 Platinum 传感器接收时循环执行读取函数。Serial1.read() 从连接到传感器的 Serial1 读取数据,并将其打印到 Serial0 上,以便在串口监视器上查看。然后打印字符“|”以拆分接收到的每个字节,使其在串口监视器上更清晰地显示。
完成后,它会向串行监视器写入新行。

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 10 页,共 14 页

数据包分解图 8 和 9 显示了连接到接收和发送线路的串行解码器的输出。
图 8:传出数据包
图 9:传入数据包
图 10 和 11 分别显示了传出的十六进制和传入的十六进制,并用一列显示了它是哪个命令。

图10:传出数据包描述

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 11 页,共 14 页

图 11:传入数据包描述
请注意,气体读数是小数,而不是整数。此小数采用 IEEE-754 格式,您可以使用类似这样的在线转换器进行转换。本例中的气体值显示为 -250(因为当时处于错误模式)。

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 12 页,共 14 页

使用 Serial.read()
上面的代码仅将接收到的数据打印到串口监视器,如果要将数据保存到变量中,则需要进行一些进一步的处理。接收到的数据包会被拆分成字节,因此您需要将其中一些数据连接成变量。Serial1.Read() 返回一个 int 类型(对于 Arduino 来说,int 是 16 位),但是,只使用了前 8 位。因此,我们可以将其复制到一个较小的 8 位数据类型中,在本例中我将使用 char 类型。
对于只有一个字节长的数据包,这可以正常工作:
对于长度为 2 字节或 4 字节的数据包,您需要连接数据。

您可以通过多种不同的方式来做到这一点,这里我要做的是左移数据,然后对其进行“或”运算。

使用此代码,如果 readByte1 为 0x34 且 readByte2 为 0x12。

(int)读取字节2

// 这会将 0x12 转换为 0x0012。

(int)读取字节2 << 8

// 这会将位移位一个字节,使其成为 0x1200。

(int)readByte2 << 8 | readByte1 // 然后将其与 0x34 进行或运算,得到 0x1234。

另一种方法是将值放入数组中,然后将数组转换为所需的类型:

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 13 页,共 14 页

字符型的长度为 4 个字节,而浮点型的长度为 4 个字节。因此,如果我们创建一个包含 XNUMX 个字符的数组,并将值存储在其中,然后将类型更改为浮点型。
在这种情况下,readArray 是一个指向 char 数组的指针。 (float*)readArray 这部分将其转换为指向浮点数的指针,然后在前面添加 * 以获取浮点数的值。
高级转换说明
1. Serial.read() 返回 int 而不是 char,因为错误会返回负值。你的程序应该检查这一点。
2. 应分别使用 uint8_t 和 uint16_t 代替 char 和 int,因为这些类型没有标准大小(在我的 PC 上 int 是 32 位,而在 Arduino 上它是 16 位)。
3. 通信协议包含字节填充字符(也称为控制字符),tds0045 Premier 传感器通信协议文档对此进行了更详细的解释。因此,读取实时数据的简单数据包有时会比预期的要大。

AN0007

问题 1.2

09 年 04 月 2025 日

变更说明 805

第 14 页,共 14 页

文件/资源

DYNAMENT AN0007 Arduino 转 Platinum COMM [pdf] 用户指南
AN0007 Arduino 至 Platinum COMM,AN0007,Arduino 至 Platinum COMM,至 Platinum COMM,Platinum COMM

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *