EmoeDAQ 编程参考手册

  • analog
  • emoedaq

EmoeDAQ 编程参考手册

硬件版本: 1.4.0
手册版本: 1.0.5
最后更新时间: 2025-03-27

DAQ控制指令集

EmoeDAQ采用SCPI指令集与上位机通过串口进行通讯。
DAQ的SCPI指令集可以分为几类,分别是:

  • IEEE 488.2标准命令
  • DAQ硬件配置命令
  • DAQ采样控制命令
  • DAQ系统命令

SCPI指令集的简写为指定的单词开头(大写),比如 CONFigure:VOLTage:DC:NPLCycles 10 这句可以简写为 CONF:VOLT:DC:NPLC 10

IEEE 488.2标准命令

*RST

  • 格式:*RST
  • 功能:复位EmoeDAQ,使其硬件重新初始化
  • 详细解释:接收到该命令后,DAQ会进行上电初始化操作。重新初始化后,DAQ进入出厂配置的默认工作状态
  • 示例:*RST
  • 返回值:"system boot complete"

*IDN?

  • 格式:*IDN?
  • 功能:查询仪器ID信息
  • 详细解释:接收到该命令后,设备返回仪器型号,以及软件版本号等信息
  • 示例:*IDN?
  • 返回值:仪器型号,以及软硬件版本号等信息

*CLS

  • 格式:*CLS
  • 功能:清除错误信息
  • 详细解释:接收到该命令后,设备将清除累积的SCPI错误信息
  • 示例:*CLS
  • 返回值:无

其他指令请参考IEEE488.2规范内容

DAQ采样控制命令

单次测量电压

  • 格式:MEASure:VOLTage:DC? {1|2}
  • 功能:测量指定通道的电压
  • 详细解释:用该命令触发DAQ对某一通道进行采样,采样的积分时间取决于目前的系统设置。支持AutoZero功能,需要注意,在开启AutoZero功能时,实际转换时间将加倍。
  • 示例:MEASure:VOLTage:DC? 1 或 MEAS:VOLT:DC? 1
  • 返回值:对应通道的电压值

单次测量电压,附带内部温度

  • 格式:MEASure:VOLTage:DC:TEMPerature? {1|2}
  • 功能:测量指定通道的电压,以及当前DAQ内部温度值
  • 详细解释:用该命令触发DAQ对某一通道进行采样,采样的积分时间取决于目前的系统设置。支持AutoZero功能,需要注意,在开启AutoZero功能时,实际转换时间将加倍。。输出电压的同时,还会输出DAQ内部的温度。该指令适合长期监测时使用,测量电压的同时测量DAQ内部温度
  • 示例:MEASure:VOLTage:DC:TEMPerature? 1 或 MEAS:VOLT:DC:TEMP? 1
  • 返回值:对应通道的电压值,以及当前DAQ内部温度,两个数据以','分隔

单次测量通道间电压比例

  • 格式:MEASure:VOLTage:RATio? {1|2}
  • 功能:测量2个通道间的电压值比例
  • 详细解释:用该命令触发DAQ进行单次采样,分别测量通道1和通道2的电压值(支持AutoZero),然后计算出2个通道间的电压比例。命令的参数为比例计算中的分子 ——即当命令的参数为1时,返回比例值为 (Volt1 / Volt2);当命令参数为2时,返回比例值为 (Volt2 / Volt1)
  • 示例:MEAS:VOLT:RATio? 1
  • 返回值:2个通道的电压比例值,保留8位小数

设置采样积分周期

  • 格式:CONFigure:VOLTage:DC:NPLCycles {0.1|0.25|0.5|1|10|100}
  • 功能:配置DAQ采样的积分时间 (Number of PowerLine Cycles)
  • 详细解释:用该命令设置DAQ采样的积分时间,积分时间越长,输出数据的噪声越低,电压有效位数越高。积分时间计算是依据工频电源周期数决定的,比如NPLC=10时,积分10个工频周期。假设市电频率是50Hz,周期20ms,那么10NPLC=200ms,对应5SPS/s的数据更新速率。需要注意,在开启AutoZero功能时,实际采样率将减半。
  • 示例:CONFigure:VOLTage:DC:NPLCycles 100
  • 返回值:无

查询采样积分周期

  • 格式:CONFigure:VOLTage:DC:NPLCycles?
  • 功能:查询DAQ采样的积分周期 (Number of PowerLine Cycles)
  • 详细解释:用该命令查询DAQ采样的积分周期,积分周期越多,输出数据的噪声越低,电压有效位数越高。需要注意,在开启AutoZero功能时,实际采样率将减半。
  • 示例:CONFigure:VOLTage:DC:NPLCycles?
  • 返回值:返回当前DAQ的采样积分周期

设置DAQ连续采样

  • 格式:CONFigure:CONTinuous:READ {1|2},{ON|OFF}
  • 功能:设置DAQ的采样模式为单次(关闭CONT)或连续(开启CONT)
  • 详细解释:用该命令设置DAQ的采样模式,某通道在单次采样模式下,DAQ只有接收到触发信号时才会采样并输出数据(触发信号来自SCPI指令);某通道在连续转换模式下,DAQ将自动按照设置的NPLC进行连续转换并输出数据。请注意,同时只有一个通道能被激活连续转换模式。如果需要2个通道同时连续转换,请使用扫描模式。
  • 示例:CONFigure:CONTinuous:READ 1,ON
  • 返回值:无,但如果激活连续转换,随后紧跟对应的DAQ采样的数据

设置DAQ扫描采样

  • 格式:CONFigure:CONTinuous:SCAN {ON|OFF}
  • 功能:设置DAQ的采样模式为扫描转换
  • 详细解释:用该命令设置DAQ为连续扫描转换模式,该模式下DAQ先对CH1进行转换,然后对CH2进行转换,最后依次、同时输出2个通道的电压值。
  • 示例:CONFigure:CONTinuous:SCAN ON
  • 返回值:无,但如果激活连续扫描转换,随后紧跟对应的DAQ采样的数据

设置AutoZero

  • 格式:CONFigure:AutoZero:DC {ON|OFF}
  • 功能:设置DAQ采样的自动校零功能
  • 详细解释:用该命令设置DAQ的自动校零功能,AutoZero开启时,DAQ先测量信号链自身的失调电压,然后再测量输入信号电压,最后输出失调矫正过的数据。该模式仅对单次转换、单通道连续转换适用,暂不支持扫描转换。开启AutoZero后,对应的转换速率减半。(该功能不能消除外部热电势影响
  • 示例:CONFigure:AutoZero:DC ON
  • 返回值:无

DAQ硬件配置命令

查询DAQ系统设置

  • 格式:CONFigure:INFormation?
  • 功能:查询DAQ当前的系统设置
  • 详细解释:用该命令查询DAQ的系统设置,包括 波特率(仅使用USART接口的固件支持) (带外壳的DAQ使用USB-VCP通信,无需设置波特率)、NPLC频率、NPLC周期数、AutoZero是否开启
  • 示例:CONFIGURE:INFormation?
  • 返回值:波特率、NPLC频率、NPLC周期数、AutoZero是否开启

设置内部加热恒温温度

  • 格式:HEAT:TEMP {temperature}
  • 功能:设置内部加热恒温温度
  • 详细解释:用该命令设置内部加热恒温温度,单位为摄氏度,温度范围为20-42度,该温度值会保存在EEPROM中,重启后仍然有效。推荐设置温度为35度,DAQ的出厂校准温度也是35度。
  • 示例:HEAT:TEMP 35
  • 返回值:提示温度设定值已更新

查询内部加热恒温温度

  • 格式:HEAT:TEMP?
  • 功能:查询内部加热恒温温度
  • 详细解释:用该命令查询内部加热恒温温度,单位为摄氏度,温度范围为20-42度。
  • 示例:HEAT:TEMP?
  • 返回值:加热恒温温度设定值

DAQ系统命令

测量板上温度

  • 格式:MEASure:INTernal:TEMPerature?
  • 功能:测量DAQ当前的板上温度
  • 详细解释:用该命令激活板上温度传感器,测量基准和ADC附近的温度值,返回给用户。
  • 示例:MEASure:INT:TEMP?
  • 返回值:板上温度,保留3-4位小数

测量外部温度

  • 格式:MEASure:EXTernal:TEMPerature?
  • 功能:测量外部连接的TMP117传感器温度数据
  • 详细解释:用该命令测量外部温度传感器,传感器的地址管脚必须连接到VCC(I2C地址固定为0x49,地址0x48被板上温度传感器占用),测量外部温度值,返回给用户。
  • 示例:MEASure:EXT:TEMP?
  • 返回值:外部温度,保留3-4位小数

灯光指示

  • 格式:SYSTem:IDENtify
  • 功能:闪烁后面板的ERR指示灯
  • 详细解释:闪烁后面板的ERR指示灯,用于指示当前收到指令的DAQ。在连接多个DAQ时用于区分DAQ。DAQ收到该命令后,背板上的蓝色ERR指示灯将闪烁5次,间隔时间1秒。
  • 示例:SYSTem:IDEN
  • 返回值:无

用户增益校准

  • 格式: SYSTem:CALibration:GAIN {gain}
  • 功能:写入DAQ的系统增益,并保存
  • 详细解释: 写入DAQ的系统增益,该增益是线性回归拟合校准得出的增益误差,在DAQ内部参与电压转换的计算,补偿DAQ的系统增益误差
  • 示例:SYSTem:CAL:INL:SLOPE 1.00032855
  • 返回值:写入的增益值,并提示保存成功与否

查询用户增益校准系数

  • 格式: SYSTem:CALibration:GAIN?
  • 功能:查询增益校准系数
  • 详细解释: 查询DAQ内部存储的增益校准系数
  • 示例:SYSTem:CAL:GAIN?
  • 返回值:1.00032855

用户失调校准

  • 格式: SYSTem:CALibration:OFFSET {offset}
  • 功能:写入DAQ的系统失调误差,并保存
  • 详细解释: 写入DAQ的系统失调误差,该增益是线性回归拟合校准得出的失调误差,在DAQ内部参与电压转换的计算,补偿DAQ的系统失调误差
  • 示例:SYSTem:CAL:INL:INT 0.00003882
  • 返回值:写入的失调值,并提示保存成功与否

查询用户失调校准系数

  • 格式: SYSTem:CALibration:OFFSET?
  • 功能:查询失调校准系数
  • 详细解释: 查询DAQ内部存储的失调校准系数
  • 示例:SYSTem:CAL:OFFSET?
  • 返回值:0.00003882

ADC系统校准

  • 格式: SYSTem:CALibration:ADC
  • 功能:执行ADC系统校准
  • 详细解释: 该功能执行的是ADC片内自带的校准程序,分别给ADC输入通入0V和VREF,以此来计算ADC前面所有信号链的失调和增益误差.但此方法由于ADC的INL限制,效果有限.如果需要高精度,还是需要高位表+源来校准标定.该过程需要约20秒的时间完成,且需要在DAQ充分预热且环境温度较稳定的情况下进行
  • 示例:SYSTem:CAL:ADC
  • 返回值:校准前的增益\失调寄存器,与校准后的增益\失调寄存器

写入校准日期

  • 格式: SYSTem:CALibration:DATE
  • 功能:写入校准日期
  • 详细解释: 写入校准日期,格式是: yyyy,mm,dd
  • 示例:SYST:CAL:DATE 1919,8,10
  • 返回值:无

存储ADC系统校准数据

  • 格式: SYSTem:CALibration:STORE
  • 功能:保存ADC系统校准数据,以及校准日期
  • 详细解释: 保存ADC系统校准数据,以及校准日期
  • 示例:SYST:CAL:STORE
  • 返回值:保存成功以及校准数据明细,如果有未执行的校准项将提示校准未完成

擦除校准数据

  • 格式: SYSTem:CALibration:DEFAULT
  • 功能:擦除所有校准数据
  • 详细解释: 擦除所有校准数据,包括ADC系统校准寄存器\手动输入的增益失调误差\校准日期等
  • 示例:SYST:CAL:DEFAULT
  • 返回值:校准数据复位成功

查询所有校准数据

  • 格式: SYSTem:CALibration:INFormation?
  • 功能:查询校准数据
  • 详细解释: 查询所有校准数据,包括ADC系统校准寄存器\手动输入的增益失调误差\校准日期等
  • 示例:SYST:CAL:INF?
  • 返回值:有效校准数据,若未执行过校准/校准数据被擦除,则提示校准数据不存在

系统固件升级

  • 格式: SYSTem:Update
  • 功能:使DAQ进入升级模式
  • 详细解释: 该命令将解除DAQ初始化,使其进入DFU(Device Firmware Upgrade)模式。在此模式下,通过STM32CubeProgrammer连接DAQ,可以对其进行固件升级。
  • 示例:SYSTem:Update
  • 返回值:无,命令执行后,USB端口立刻断开连接。

DAQ校准原理

请参考Emoe上的文章 EmoeDAQ-高精度数据采集器-下篇 中的第五节-校准原理

校准说明

校准的本质是将DAQ的绝对精度调整到与参考表的精度较为一致的水平,所以,决定校准后精度的是参考表的精度
如果需要绝对的精确度,那就需要绝对精确的参考表,比如短期内经过约瑟夫森结传递校准过的Keysight 3458A DMM 或 Fluke的高位Calibrator。

DAQ校准流程

校准所需要的设备

DAQ的直流精度超过 5½ 数字万用表,所以至少需要 6½ 的数字万用表作为校准参考表。同时还需要一个低噪声、极稳定的可调节直流源,如果校准源的噪声较高或漂移较大,会增大校准过程中的不确定性,导致校准精度不及预期。推荐设备如下:

  • Keysight 34465A或同等级、甚至更高等级的台式DMM
  • 5位半以上的DC源表,能够产生-5V至+5V的可调电压输出
  • 铜芯线用于连接

推荐校准流程-自动版

如果有可连接至PC的DMM和源表,且能被VISA识别到,可以使用python来完成自动化校准。
🐟使用的是 Keysight 34465A+横河7651,DMM使用USB连接,7651使用GPIB连接。

  1. 将源表输出连接到DAQ的CH1输入端(DAQ的INN接地,INP连接源表输出正极)和DMM的电压输入端
  2. 使用稳定且足功率的USB端口连接DAQ,通电静置至少半小时让DAQ和其他仪器充分稳定,DMM与源表同步上电静置。
  3. 测试VISA连接DMM与源表,能否正常通信,根据自己的设备修改相应的SCPI控制指令
  4. 修改校准程序的校准日期等内容,运行自动化校准程序,完成校准
  5. 打开串口助手,连接DAQ,查询校准结果是否正确

手动校准

如果上述自动校准条件不具备,可以使用手动校准的方式。不过需注意,无论是哪种校准方式都需要一台高位DMM,以及一个低噪声且稳定可调的电压源。

为达到最佳校准精度,推荐使用多点校准拟合的方式来得出增益与失调系数。
DAQ的手动校准分为2步,分别是ADC系统校准和用户自定义比对参考表校准。下面给出一个示例:

  1. 使用稳定且足功率的USB端口连接DAQ,通电静置至少半小时让DAQ和其他仪器充分稳定,DMM与源表同步上电静置。
  2. 将DAQ连接串口助手,手动发送指令 "SYST:CAL:ADC" 执行ADC的系统校准,等待20秒输出结果;
  3. 手动发送指令 "SYST:CAL:DATE 2025,1,14" ,写入校准的日期
  4. 手动发送指令 "SYST:CAL:STORE" ,保存ADC系统校准数据
  5. 将源表输出连接到DAQ的CH1输入端(DAQ的INN接地,INP连接源表输出正极)和DMM的电压输入端
  6. 调整源表输出至-4.9V,等待DAQ和DMM读数稳定后记录数值,填入Excel表格
  7. 重复上述操作,使源表分别输出-4.9V、-4V、-3V、-2V、... 0V、... 、+4V、+4.9V,记录数据
  8. 在Excel中将DMM读数和DAQ读数整理为2列,然后根据这些数据计算一次线性回归系数(可以调用Excel的函数功能)
  9. 得到校准系数后,将DAQ连接串口助手,通过校准指令 "SYST:CAL:GAIN 1.00002243123"、"SYST:CAL:OFFSET 0.000004232"手动写入DAQ(此处数字仅示例)
  10. 发送指令 "SYST:CAL:INF?" 查询校准数据是否正确