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设置
- 从以下网址下载最新版本的 Arduino IDE 软件
Arduino web地点。 - 在工具中选择 Arduino 主板、处理器和端口
下拉式菜单。
代码上传
- 复制提供的examp将代码放入 Arduino IDE。
- 单击箭头将代码上传到 Arduino。
- 打开串行监视器 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 |