@@ -9,19 +9,19 @@ tags: analog, emoedaq
9
9
10
10
# EmoeDAQ 编程参考手册
11
11
12
- > 硬件版本: 1.3 .0
13
- > 手册版本: 0.1.3
14
- > 最后更新时间: 2024-12-16
12
+ > 硬件版本: 1.4 .0
13
+ > 手册版本: 0.1.4
14
+ > 最后更新时间: 2025-03-03
15
15
16
16
## DAQ控制指令集
17
17
18
18
EmoeDAQ采用SCPI指令集与上位机通过串口进行通讯。
19
- DAQ的SCPI指令集可以分为4类 ,分别是:
19
+ DAQ的SCPI指令集可以分为几类 ,分别是:
20
20
21
21
- IEEE 488.2标准命令
22
22
- DAQ硬件配置命令
23
23
- DAQ采样控制命令
24
- - DAQ系统命令
24
+ - DAQ系统命令
25
25
26
26
SCPI指令集的简写为指定的单词开头(大写),比如 ` CONFigure:VOLTage:DC:NPLCycles 10 ` 这句可以简写为 ` CONF:VOLT:DC:NPLC 10 ` 。
27
27
@@ -52,6 +52,8 @@ SCPI指令集的简写为指定的单词开头(大写),比如 `CONFigure:V
52
52
- 示例:* CLS
53
53
- 返回值:无
54
54
55
+ 其他指令请参考IEEE488.2规范内容
56
+
55
57
### DAQ采样控制命令
56
58
57
59
#### 单次测量电压
@@ -63,7 +65,7 @@ SCPI指令集的简写为指定的单词开头(大写),比如 `CONFigure:V
63
65
- 返回值:对应通道的电压值
64
66
65
67
66
- #### 单次测量电压,附带温度
68
+ #### 单次测量电压,附带内部温度
67
69
68
70
- 格式:** MEASure:VOLTage:DC: TEMPerature ? {1|2}**
69
71
- 功能:测量指定通道的电压,以及当前DAQ内部温度值
@@ -126,27 +128,11 @@ SCPI指令集的简写为指定的单词开头(大写),比如 `CONFigure:V
126
128
127
129
### DAQ硬件配置命令
128
130
129
- #### 设置通信波特率(仅使用USART接口的固件支持)
130
-
131
- - 格式:** SYSTem:BAUDRATE: SET {9600|14400|19200|38400|57600|115200|230400|460800|921600|1500000}**
132
- - 功能:设置DAQ的串口波特率
133
- - 详细解释:用该命令设置DAQ的串口通信波特率,立刻生效,** 设置完成后需要切换到新波特率与DAQ通信** 。
134
- - 示例:SYSTem:BAUDRATE: SET 115200
135
- - 返回值:无
136
-
137
- #### 查询通信波特率(仅使用USART接口的固件支持)
138
-
139
- - 格式:** SYSTem:BAUDRATE: SET ?**
140
- - 功能:查询DAQ当前的串口波特率
141
- - 详细解释:用该命令查询DAQ的串口通信波特率。
142
- - 示例:SYSTem:BAUDRATE: SET ?
143
- - 返回值:返回当前的串口波特率
144
-
145
131
#### 查询DAQ系统设置
146
132
147
133
- 格式:** CONFigure: INFormation ?**
148
134
- 功能:查询DAQ当前的系统设置
149
- - 详细解释:用该命令查询DAQ的系统设置,包括 ** 波特率(仅使用USART接口的固件支持)** 、NPLC频率、NPLC周期数、AutoZero是否开启
135
+ - 详细解释:用该命令查询DAQ的系统设置,包括 ** 波特率(仅使用USART接口的固件支持)** (带外壳的DAQ使用USB-VCP通信,无需设置波特率) 、NPLC频率、NPLC周期数、AutoZero是否开启
150
136
- 示例:CONFIGURE: INFormation ?
151
137
- 返回值:波特率、NPLC频率、NPLC周期数、AutoZero是否开启
152
138
@@ -169,6 +155,118 @@ SCPI指令集的简写为指定的单词开头(大写),比如 `CONFigure:V
169
155
- 示例:SYSTem: IDEN
170
156
- 返回值:无
171
157
158
+ #### 用户增益校准
159
+ - 格式: SYSTem:CALibration: GAIN {gain}
160
+ - 功能:写入DAQ的系统增益,并保存
161
+ - 详细解释: 写入DAQ的系统增益,该增益是线性回归拟合校准得出的增益误差,在DAQ内部参与电压转换的计算,补偿DAQ的系统增益误差
162
+ - 示例:SYSTem:CAL:INL: SLOPE 1.00032855
163
+ - 返回值:写入的增益值,并提示保存成功与否
164
+
165
+ #### 用户失调校准
166
+ - 格式: SYSTem:CALibration: OFFSET {offset}
167
+ - 功能:写入DAQ的系统失调误差,并保存
168
+ - 详细解释: 写入DAQ的系统失调误差,该增益是线性回归拟合校准得出的失调误差,在DAQ内部参与电压转换的计算,补偿DAQ的系统失调误差
169
+ - 示例:SYSTem:CAL:INL: INT 0.00003882
170
+ - 返回值:写入的失调值,并提示保存成功与否
171
+
172
+ #### ADC系统校准
173
+ - 格式: SYSTem:CALibration: ADC
174
+ - 功能:执行ADC系统校准
175
+ - 详细解释: 该功能执行的是ADC片内自带的校准程序,分别给ADC输入通入0V和VREF,以此来计算ADC前面所有信号链的失调和增益误差.但此方法由于ADC的INL限制,效果有限.如果需要高精度,还是需要高位表+源来校准标定.该过程需要20秒的时间完成,且需要在DAQ充分预热且环境温度较稳定的情况下进行
176
+ - 示例:SYSTem:CAL: ADC
177
+ - 返回值:校准前的增益\失调寄存器,与校准后的增益\失调寄存器
178
+
179
+ #### 写入校准日期
180
+ - 格式: SYSTem:CALibration: DATE
181
+ - 功能:写入校准日期
182
+ - 详细解释: 写入校准日期,格式是: yyyy,mm,dd
183
+ - 示例:SYST:CAL: DATE 1919,8,10
184
+ - 返回值:无
185
+
186
+ #### 存储ADC系统校准数据
187
+ - 格式: SYSTem:CALibration: STORE
188
+ - 功能:保存ADC系统校准数据,以及校准日期
189
+ - 详细解释: 保存ADC系统校准数据,以及校准日期
190
+ - 示例:SYST:CAL: STORE
191
+ - 返回值:保存成功以及校准数据明细,如果有未执行的校准项将提示校准未完成
192
+
193
+ #### 擦除校准数据
194
+ - 格式: SYSTem:CALibration: DEFAULT
195
+ - 功能:擦除所有校准数据
196
+ - 详细解释: 擦除所有校准数据,包括ADC系统校准寄存器\手动输入的增益失调误差\校准日期等
197
+ - 示例:SYST:CAL: DEFAULT
198
+ - 返回值:校准数据复位成功
199
+
200
+ #### 查询所有校准数据
201
+ - 格式: SYSTem:CALibration: INFormation ?
202
+ - 功能:查询校准数据
203
+ - 详细解释: 查询所有校准数据,包括ADC系统校准寄存器\手动输入的增益失调误差\校准日期等
204
+ - 示例:SYST:CAL: INF ?
205
+ - 返回值:有效校准数据,若未执行过校准/校准数据被擦除,则提示校准数据不存在
206
+
207
+ #### 查询用户增益校准系数
208
+ - 格式: SYSTem:CALibration: GAIN ?
209
+ - 功能:查询增益校准系数
210
+ - 详细解释: 查询DAQ内部存储的增益校准系数
211
+ - 示例:SYSTem:CAL: GAIN ?
212
+ - 返回值:1.00032855
213
+
214
+ #### 查询用户失调校准系数
215
+ - 格式: SYSTem:CALibration: OFFSET ?
216
+ - 功能:查询失调校准系数
217
+ - 详细解释: 查询DAQ内部存储的失调校准系数
218
+ - 示例:SYSTem:CAL: OFFSET ?
219
+ - 返回值:0.00003882
220
+
221
+ ## DAQ校准原理
222
+
223
+ 请参考Emoe上的文章 ** [ EmoeDAQ-高精度数据采集器-下篇] ( https://www.emoe.xyz/emoedaq-design-2/#5 ) ** 中的第五节-校准原理
224
+
225
+ ## 校准说明
226
+
227
+ 校准的本质是将DAQ的绝对精度调整到与参考表的精度较为一致的水平,所以,** 决定校准后精度的是参考表的精度** 。
228
+ 如果需要绝对的精确度,那就需要绝对精确的参考表,比如短期内经过约瑟夫森结传递校准过的Keysight 3458A DMM 或 Fluke的高位Calibrator。
229
+
230
+ ## DAQ校准流程
231
+
232
+ ### 校准所需要的设备
233
+
234
+ DAQ的直流精度超过 5½ 数字万用表,所以至少需要 6½ 的数字万用表作为校准参考表。同时还需要一个低噪声、极稳定的可调节直流源,如果校准源的噪声较高或漂移较大,会增大校准过程中的不确定性,导致校准精度不及预期。推荐设备如下:
235
+
236
+ - Keysight 34465A或同等级、甚至更高等级的台式DMM
237
+ - 5位半以上的DC源表,能够产生-5V至+5V的可调电压输出
238
+ - 铜芯线用于连接
239
+
240
+ ### 推荐校准流程-自动版
241
+
242
+ 如果有可连接至PC的DMM和源表,且能被VISA识别到,可以使用python来完成自动化校准。
243
+ 🐟使用的是 Keysight 34465A+横河7651,DMM使用USB连接,7651使用GPIB连接。
244
+
245
+ 1 . 将源表输出连接到DAQ的CH1输入端(DAQ的INN接地,INP连接源表输出正极)和DMM的电压输入端
246
+ 2 . 使用稳定且足功率的USB端口连接DAQ,通电静置至少半小时让DAQ和其他仪器充分稳定,DMM与源表同步上电静置。
247
+ 3 . 测试VISA连接DMM与源表,能否正常通信,根据自己的设备修改相应的SCPI控制指令
248
+ 4 . 修改校准程序的校准日期等内容,运行自动化校准程序,完成校准
249
+ 5 . 打开串口助手,连接DAQ,查询校准结果是否正确
250
+
251
+ ### 手动校准
252
+
253
+ 如果上述自动校准条件不具备,可以使用手动校准的方式。** 不过需注意,无论是哪种校准方式都需要一台高位DMM,以及一个低噪声且稳定可调的电压源。**
254
+
255
+ 为达到最佳校准精度,推荐使用多点校准拟合的方式来得出增益与失调系数。
256
+ DAQ的手动校准分为2步,分别是ADC系统校准和用户自定义比对参考表校准。下面给出一个示例:
257
+
258
+ 1 . 使用稳定且足功率的USB端口连接DAQ,通电静置至少半小时让DAQ和其他仪器充分稳定,DMM与源表同步上电静置。
259
+ 2 . 将DAQ连接串口助手,手动发送指令 ** "SYST:CAL: ADC "** 执行ADC的系统校准,等待20秒输出结果;
260
+ 3 . 手动发送指令 ** "SYST:CAL: DATE 2025,1,14"** ,写入校准的日期
261
+ 4 . 手动发送指令 ** "SYST:CAL: STORE "** ,保存ADC系统校准数据
262
+ 5 . 将源表输出连接到DAQ的CH1输入端(DAQ的INN接地,INP连接源表输出正极)和DMM的电压输入端
263
+ 6 . 调整源表输出至-4.9V,等待DAQ和DMM读数稳定后记录数值,填入Excel表格
264
+ 7 . 重复上述操作,使源表分别输出-4.9V、-4V、-3V、-2V、... 0V、... 、+4V、+4.9V,记录数据
265
+ 8 . 在Excel中将DMM读数和DAQ读数整理为2列,然后根据这些数据计算一次线性回归系数(可以调用Excel的函数功能)
266
+ 9 . 得到校准系数后,将DAQ连接串口助手,通过校准指令 ** "SYST:CAL: GAIN 1.00002243123"、"SYST:CAL: OFFSET 0.000004232"** 手动写入DAQ(此处数字仅示例)
267
+ 10 . 发送指令 ** "SYST:CAL: INF ?"** 查询校准数据是否正确
268
+
269
+
172
270
173
271
174
272
0 commit comments