MCC 数据采集(树莓派系列)产品目录

MCC中国 5cm2020-04-201268 次点击
![04b7b14b82e1d014647daab09a08530d.png](https://ppmm.org/images/2021/01/12/04b7b14b82e1d014647daab09a08530d.png)

MCC DAQ HATs树莓派平台获得的赞许越来越多。在设计领域中,凭借其强大的能力和低廉的价格,工程师正在研究它更多的应用方法。

![](https://shumeipai.nxez.com/wp-content/uploads/2019/12/rpi-industry-mcchats-2.jpg)

▶ MCC和树莓派产品设计
树莓派的强大功能和多样的能力已经广泛应用于整个工业中,其中Measurement Computing已经将树莓派集成到我们的 WebDAQ 系列 数据记录器中。基于树莓派3和数据采集设备,MCC已研发出高性能 WebDAQ 504 声学 /振动记录仪。该设备可获取并记录 24 位数据,具备4路通道,且每通道均可进行 FFT 数学分析,同时将数据显示在Web服务器的 UI界面上。树莓派在高性能处理器,专业工程应用中的成功,证明了它一直处于工业设计中OEM首选的地位。

▶ 树莓派在测试和测量中的地位
虽然树莓派本身并没有内置的测试和测量模块,如模数转换器(ADC),数模转换器(DAC)或条件数字输入和输出(DIO)。但是,可以通过USB 端口或支持SPI和I2C的 GPIO 的40-pin 接头扩展这些功能。直接和树莓派GPIO 进行堆栈式连接的设备称为HAT(Hardware Attached on Top)。

随着多年的发展,越来越多的创客发布开源的设计,以及小型公司开始出售多任务的低成本 HAT模块,包括支持模拟和数字的输入输出模块。这些设计和产品足以应对教育领域用户及爱好者,但在专业的测试和测量应用方面存在严重缺陷。现有的HATs中,多数产品是简单组装制成,没有详细说明或编程支持,同样不能进行产品的校准,从而保障产品的性能。

产品的验证是设计过程中至关重要的一步,因为产品的验证遵循质量指标并且产品按指定的方式执行。如果没有此过程,从产品中获取的数据是不精准的。如果将数据公布或用于关键设计决策,其结果是存在风险的。MCC与其它测试测量公司都进行了详细的设计与详尽的验证,使得具有开源设计且低成本的树莓派HATs在与商业测量产品的比较中凸显而出。

▶ MCC 树莓派应用上的支持
为了将专业品质的测量产品带入树莓派平台,Measurement Computing发布了可适用于Linux的通用库(UL for Linux) 和专门针对专业测试和测量应用的HAT系列。

UL for Linux是一种开源的Linux库,支持MCC多数USB 设备,并为Python™和C/C++®提供了编译接口。该库已经在多个Linux发行版上得到验证,包括Raspbian®,这是树莓派计算机上最受欢迎的发行版。UL for Linux和 MCC丰富的USB DAQ设备选择,极大地扩展了树莓派计算机的功能。

虽然,USB是多应用领域中连接DAQ设备的首选方式,但它仍然需要额外的电缆和外壳。当外形尺寸因素对设 计显得至关重要时,HAT方案将是合适的选择。

MCC的 HAT系列专注于测试和测量和OEM/ODM市场。MCC DAQ HATs具有高质量的Python和C/C++的软件库,便于快速轻松地开发。与其它MCC产品一样,DAQ HATs在美国设计,采用通过验证的经销商提供的部件,整套产品经过全面测试,并提供1年保修服务。

▶ 适用于Linux的通用库 (UL for Linux)
UL for LinuxUL for Linux 是一个易于使用的开源库,其结构类似于MCC的Windows产品 (UL库)。它支持多数MCC USB设备,并附带完整的文档和Python,C/C++的大量示例。通过详尽的验证流程确保 Linux通用库的质量,且在全部类型的设备上验证所有功能。验证流程可扩展到示例程序和受欢迎的Linux发行版的安装。

❖ https://china.mccdaq.com/daq-software/Ul-for-Linux-Support.aspx

▶ Hardware Attached on Top – MCC DAQ HATs模块

![](https://shumeipai.nxez.com/wp-content/uploads/2019/12/rpi-industry-mcchats.jpg)

Measurement Computing现已宣布推出三款符合树莓派HAT标准的测试和测量应用产品。这些设备以小型,可堆叠的形式提供数据采集功能,新的产品一如既往的继承了MCC近30年的质量保证和全面的技术支持。

MCC 118 允许用户以100 KS/s的总吞吐量测量共计8路单端信号数据。同时可以在单个树莓派上堆叠8个 HAT,以创建一个64通道设备,最高以320KS/s的采样 组合速率读取数据。

❖ https://make.quwj.com/project/74

MCC 128 数据采集模块(HAT)提供8通道单端或4通道差分模拟电压输入,基于树莓派的数据采集/数据记录系统。它提供16位分辨率和多档可选量程——高精度测试的理想选择。

❖ https://make.quwj.com/project/350

MCC 152 提供2路12位模拟信号输出通道以及8路5V或 3.3V DIO通道,可以创建完整的多功能树莓派测量和控制系统。

❖ https://make.quwj.com/project/221

MCC 134 提供4路24位热电偶输入,可测量多种最受欢迎的热电偶类型,包括J,K,R,S,T,N,E以及B型。每种通道类型都可以基于自身来选择。

❖ https://make.quwj.com/project/220

MCC 172是一个两通道DAQ HAT,用于通过IEPE传感器(如加速度计和麦克风)进行声音和振动测量。它的每个通道具有24位A/D,最大采样率为51.2 kS/s/Ch。在一台树莓派上最多可以堆叠8个MCC HAT,使用户可以创建高通道数,混合信号类型的多功能解决方案。

❖ https://make.quwj.com/project/234

▶ 构建与购买 – 决策因素
无论是个人使用还是团队使用,是自行构建还是购买,都需要清楚购买成本、理解设计原理、考虑对应风险、了解个人能力或团队技术水平。

如上所述,许多工程师利用树莓派HAT模块开源的设计构建系统。这样的开发过程需要多重的技术,其中包括理解SPI或I2C编程芯片,本地采购零件(或购买套件)和焊接等技能。不可否认的是,对于那些有信心并喜欢搜索交流平台以获得编程建议和示例的人来说,这是一个有趣的挑战。

用户的技能水平,设备的复杂性,完成项目所需的时间,预算和故障成本都会影响到构建与购买决策中。 由于学习是关键目标,因此选择搭建设备的用户更多倾向于个人和教育市场;然而工业/商业市场更多的是选择直接购买设备,其中有效使用资源和更快的上市时间则是关键因素。

▶ WebDAQ 504

![](https://www.nxez.com/wp-content/uploads/2020/04/mcc-webdaq-504.jpg)

WebDAQ 504是独立式声音和振动数据记录仪,用于远程监控、分析和控制。
- 记录4路同步IEPE输入
- 内置网络服务器,允许其他设备从浏览器访问该设备
- 支持WiFi
- 实时查看数据,浏览历史数据
- 无限采样空间(存储空间基于存储器)
- 便捷,灵活的任务配置机制
- 实时FFT用于连续监控或分析
- 四路隔离数字I/O,可用于触发信号和报警信号
- 可通过电子邮件和短信进行报警和通知
- 可导出为.csv格式文件,支持Excel®和MATLAB®

❖ https://make.quwj.com/project/223

▶ WebDAQ 316

![](https://www.nxez.com/wp-content/uploads/2020/04/mcc-webdaq-316.jpg)

WebDAQ 316是一个独立温度数据记录仪,专为远程监视和控制热电偶数据采集而设计。
- WebDAQ Brochure记录16路热电偶通道
- 内置网络服务器,允许其他设备从浏览器访问该设备
- 支持WiFi
- 实时查看数据,浏览历史数据
- 无限采样空间(存储空间基于存储器)
- 便捷,灵活的任务配置机制
- 实时FFT用于连续监控或分析
- 四路隔离数字I/O,可用于触发信号和报警信号
- 可通过电子邮件和短信进行报警和通知
- 可导出为.csv格式文件,支持Excel®和MATLAB®

❖ https://make.quwj.com/project/222

▶ WebDAQ 904

![](https://make.quwj.com/storage/uploads/images/15929/1592921330g0webll9ay.jpg)

WebDAQ 904是一款专为远程监测和控制设计的独立,通用数据记录仪,可采集不同类型的信号。
- 记录4路同步模拟信号
- 支持电压(最高至±60V),电流,RTD,热电偶,电阻和基于桥路的传感器。
- 内置网络服务器,让用户在任意设备上通过浏览器进行访问
- 支持WIFI进行无线连接
- 实时或回放数据的图形化显示
- 无限的存储空间
- 简单,灵活的任务配置机制
- 四路隔离数字I/O,可用于触发信号和报警信号
- 可通过电子邮件和短信进行报警和通知
- 可导出为.csv格式文件,支持Excel®和MATLAB®

❖ https://make.quwj.com/project/261

▶ 更多信息
❖ https://www.nxez.com/partner-mcc
收藏 ♥ 感谢
MCC中国 5cm 2020-04-20 
有关以上产品的任何问题欢迎您在这里回复,我们将有问必复。
tiger9637 15cm 2020-05-21 
刚买了MCC118,配置完毕,不连接任何接线,空载,用示例里的single_value_read读取数据,显示值始终为~1.74V。
如果将CH0等接树莓派IO引脚上的5V、0V,也没有任何变化。
请问这是什么问题?

MCC 118 single data value read example
Function demonstrated: mcc118_a_in_read
Channels: 0 - 3
Options: OPTS_DEFAULT

Press 'Enter' to continue

Acquiring data ... Press 'Enter' to abort

Samples/Channel Channel 0 Channel 1 Channel 2 Channel 3
1132 1.74047 V 1.74062 V 1.74109 V 1.74167 V
MCC中国 5cm 2020-05-21 
@tiger9637 你好。是否能拍一张实际的连接图看一下。
zhuanwancaishi 10cm 2020-08-11 
我安装好这个板子后,运行示例程序会报错,board not responding 这是怎么回事
_HAT = mcc118(hat_descriptor['address'])
File "/usr/local/lib/python3.5/dist-packages/daqhats/mcc118.py", line 128, in __init__
raise HatError(self._address, "Board not responding.")
daqhats.hats.HatError: Addr 0: Board not responding.
Spoony 小组长 2020-08-12 
@zhuanwancaishi 看起来是树莓派系统没有开启 I2C、SPI,需要手动开启一下。
sudo raspi-config 命令来设置。
也可能是板子没有插好,接触不良。
zhuanwancaishi 10cm 2020-08-12 
我开启了 但是还是不行。。。 那个板子是用螺丝固定的
Spoony 小组长 2020-08-12 
@zhuanwancaishi 板子怎么接的,拍个图看看,以及操作系统版本。
zhuanwancaishi 10cm 2020-08-12 
https://ppmm.org/image/cGeA
https://ppmm.org/image/cDa4
https://ppmm.org/image/cjA8


就是这样接的 操作系统Linux raspberry 4.14.34-v7+
Spoony 小组长 2020-08-13 
@zhuanwancaishi 你好,你的问题反馈给厂家看过。可能是
1、供电不足
2、驱动没有更新

建议使用 5V 3A 以上电源。
驱动的更新方法参考这里:
https://github.com/mccdaq/daqhats

Install Instructions 和 Firmware Updates 中的步骤。
zhuanwancaishi 10cm 2020-08-13 
更新的时候直接报错

root@raspberry:~/Desktop/daqhats-master/daqhats-master/tools# mcc118_firmware_update 0 ~/daqhats/tools/MCC_118.hex
Error opening /root/daqhats/tools/MCC_118.hex.

电源也换了 还是不行
Spoony 小组长 2020-08-13 
@zhuanwancaishi 试试直接联系厂家电话咨询一下看看
TSSE团队将在工作日的上午9:00至下午6:00接听您的来电 (021-50509819)
zhuanwancaishi 10cm 2020-08-13  ♥ 1
你好 我终于解决了 原因在那个 Hardware Compatibility中有说明

The MCC DAQ HATs are compatible with all Raspberry Pi models with the 40-pin GPIO header (not the original Pi 1 A or B with the 26-pin header.) They are generally not compatible with any other brand of Raspberry Pi HAT or add-on board that attaches to the GPIO header, or devices that use the Raspberry Pi SPI interface.

In particular, LCD displays that use the GPIO header (not HDMI) usually use the SPI interface and will prevent the DAQ HATs from working. Even if the display is removed, the driver is probably still loaded by /boot/config.txt and will cause issues with the DAQ HATs. If you have a problem with your device and have used a GPIO header display with your Raspberry Pi then consult your display hardware documentation for how to remove the driver.

The specific pins used by each DAQ HAT are documented in the electrical specifications for that device.


如果之前接过LCD显示屏 ,需要把LCD的驱动卸载了,退回默认的hdmi
进入LCD-show
运行./LCD-hdmi
然后重启就行了
zhuanwancaishi 10cm 2020-08-13 
没有LCD-show可以下载
git clone https://github.com/goodtft/LCD-show.git
zhuanwancaishi 10cm 2020-08-13 
谢谢你的耐心解答
Spoony 小组长 2020-08-13 
@zhuanwancaishi 多谢反馈。
康先森 10cm 2020-11-09 
树莓派MCC118部署完软件环境后,操作Python Web 服务范例
1、pip install dash dash-renderer dash-html-components dash-core-components
2、cd ~/daqhats/examples/python/mcc118/web_server
3、./web_server.py
4、接下来就可以在浏览器中打开 http://:8080 访问了。将其中的 替换成树莓派的 IP 地址或主机名。
怎么得不到浏览器的效果图
是官方步骤错误还是我的输入有问题,谢谢,希望得到指导
详图https://sm.ms/image/o2WuznFNwaL46HY
Spoony 小组长 2020-11-09 
@康先森 请在这个帖子里贴一下终端信息内容以便判断 https://talk.quwj.com/topic/1715
康先森 10cm 2020-11-11 
技术咨询:外部数据,例如通过外接传感器获取电机的电流、电压数据,经由 MCC118 扩展板采集得到,是否能有一个框架,可以离线情况下在树莓派的实时显示电流电压数据,最好是封装成一个软件,打开软件即可显示各种数据。谢谢指导
康先森 10cm 2020-11-13 
SDK 中预先准备的范例有没有数据采集实时数据保存成一个文件的范例?
https://sm.ms/image/b2LVPnyqvdrtm5D
Spoony 小组长 2020-11-13 
@康先森 这类个性化功能需要自己二次开发的
相逢已是初识 26.3m 2020-11-14 
讲究
qoo 2020-11-16 
你好 想請問理論值是100kS/s 但實際值能到這麼高嗎? 如果加上繪圖、資料儲存等功能
有沒有已經買的人分享一下
Spoony 小组长 2020-11-16 
@qoo 我问一下看看有没有官方的测试数据
Spoony 小组长 2020-11-17 
@qoo 咨询过了。实际可以达到的,采样和繪圖、資料儲存等功能是独立不相干的。
qoo 2020-11-17 
好的 謝謝!
mc_six 70cm 2020-12-22 
MCC118资料里写的采样率可以达到100K,可是实际用python写了个简单的采样程序,感觉单通道只有6K左右。
程序如下:
参照的single_value_read;
将120000个采样值写到一个二维数组里;
然后调用一个写文件的线程将数组写道txt文件;
120000次采样,用了20秒。

哪个专家能给详细分析一下
Spoony 小组长 2020-12-22 
@mc_six 单通道的能力是根据已经接了多少通道动态计算的
比如你接了2路,那么平均一下每一路最大是 50 K/s
如果只用了1路,理论上可以达到 100K/s

采样率是每秒采集的点数,不包含数据导出,通道切换的时间
mc_six 70cm 2020-12-22 
@Spoony 我就是接了1路。测试了接6路基本上就是6倍的时间120秒。
咨询一下:
value = hat.a_in_read(chan, options)
这样1路的实际输出,能达到多少的速率。
mc_six 70cm 2020-12-22 
@Spoony 程序如下:


#!/usr/bin/env python
# -*- coding: utf-8 -*-


from __future__ import print_function
from time import sleep
from sys import stdout
from daqhats import mcc118, OptionFlags, HatIDs, HatError, AnalogInputMode, AnalogInputRange
from daqhats_utils import select_hat_device, enum_mask_to_string

import os
import threading
import numpy as np
import datetime
import random
import time

#=================================================================
fna = ''
arrya = [[0 for i in range(6)] for h in range(120000)]
#=================================================================
options = OptionFlags.DEFAULT
mcc_118_num_channels = mcc118.info().NUM_AI_CHANNELS
address = select_hat_device(HatIDs.MCC_118)
hat = mcc118(address)
#=================================================================

def writefile(arryatt, fnat):
print("write file ", datetime.datetime.now())
np.savetxt(fnat, arryatt, fmt="%f", delimiter=" ")
print("finish write ", datetime.datetime.now())
noww = datetime.datetime.now()
fileaa = open(fnat, "a")
fileaa.writelines(str(noww) + "\n")
fileaa.close()

#=================================================================


if __name__ == '__main__':

while True:
for k in range(10):
fna = 'DlogT1-' + str(k) + ".txt"
if os.path.exists(fna):
os.remove(fna)
print("当前文件存在,已删除。。。。。。")
else:
print("当前文件不存在。。。。。。")

print("sample start ", now)
for j in range(120000):
arrya[j][0] = hat.a_in_read(0, options)
#arrya[j][1] = hat.a_in_read(1, options)
#arrya[j][2] = hat.a_in_read(2, options)
#arrya[j][3] = hat.a_in_read(3, options)
#arrya[j][4] = hat.a_in_read(4, options)
#arrya[j][5] = hat.a_in_read(5, options)
arryat = arrya
t2 = threading.Thread(target=writefile, args=(arryat, fna, ))
t2.start()
# except KeyboardInterrupt:
# print("当前文件。。。。。。")
Spoony 小组长 2020-12-22 
@mc_six

value = hat.a_in_read(chan, options)

这一行运行效率取决于实际运行环境,官方没有测试数据。理论上是可以跑满 100K/s 的。

但实际上可能会受限于 Python 语言的执行效率、单线程(而且有其他逻辑比如存储数据等,和采样线程在一个线程中)。

如果提升采样性能,需要放弃一边采样一边记录的单线程模式。
MCC HATs 提供了 C 语言版本的 SDK 可以试试。由于树莓派 IO 存在瓶颈,编码的时候可以将采样数据先存储在内存,同时异步的方式将内存数据持久化到磁盘上。

如果只是需要小小的性能提升,你可以试试将需要写入的文件放在 /tmp 下。
mc_six 70cm 2020-12-23 
@Spoony 谢谢
mc_six 70cm 2020-12-25  ♥ 1
@Spoony 问题初步解决,用a_in_scan_read,采集然后多线程存储,单通道可以实现10k速率(半个交流电正弦波100个采样点)。回头再试试多通道,是不是每个通道都能到10k。
Spoony 小组长 2020-12-25 
@mc_six 多谢反馈,期待后续
mc_six 70cm 2021-01-16  ♥ 1
@Spoony 试了没问题,用a_in_scan_read,多通道也可以达到10k速率。

感觉这个板子还是很好用的,主程序采集,采集一部分后调用其他线程分析告警,对采集没有任何影响。
mc_six 70cm 2021-01-16  ♥ 1
@qoo 我目前测试的是6通道,单通道可以达到16K,6*16k=96k,如果用17k就提示超限了。用a_in_scan_read测试的,你可以通过修改scan rate以及 channel list 来测试。
Spoony 小组长 2021-01-16 
@mc_six 感谢测试和反馈。如果您愿意分享这个案例的具体细节。我们可以提供一份礼品作为感谢。
mc_six 70cm 2021-01-16  ♥ 1
@qoo 用continuous_scan.py进行测试,单通道可以100K,多通道,单通道的速率是100K/通道数。我测试了用a_in_scan_read,6通道每通道10K的速率采集,采集12000个点,连续采集10次,然后调用其他进程分析和写文件没问题。
def main():
"""
This function is executed automatically when the module is run directly.
"""

# ============================================================================================
try:
# Select an MCC 118 HAT device to use.
address = select_hat_device(HatIDs.MCC_118)
hat = mcc118(address)
print('\nSelected MCC 118 HAT device at address', address)
actual_scan_rate = hat.a_in_scan_actual_rate(num_channels, scan_rate)
print('\nMCC 118 continuous scan example')
print(' Functions demonstrated:')
print(' mcc118.a_in_scan_start')
print(' mcc118.a_in_scan_read')
print(' mcc118.a_in_scan_stop')
print(' Channels: ', end='')
print(', '.join([str(chan) for chan in channels]))
print(' Requested scan rate: ', scan_rate)
print(' Actual scan rate: ', actual_scan_rate)
print(' Options: ', enum_mask_to_string(OptionFlags, options))
# ============================================================================================
'''
try:
input('\nPress ENTER to continue ...')
except (NameError, SyntaxError):
pass
'''
# Configure and start the scan.
# Since the continuous option is being used, the samples_per_channel
# parameter is ignored if the value is less than the default internal
# buffer size (10000 * num_channels in this case). If a larger internal
# buffer size is desired, set the value of this parameter accordingly.
print('Starting scan ... Press Ctrl-C to stop\n')
hat.a_in_scan_start(channel_mask, samples_per_channel, scan_rate,options)
# ============================================================================================
try:
while True:
fna = str(datetime.datetime.now()) + ".txt"
for i in range(10):
read_result = hat.a_in_scan_read(read_request_size, timeout) # read channel Data
arrydata[i]=read_result.data

if read_result.hardware_overrun:
print('\n\nHardware overrun\n')
break
elif read_result.buffer_overrun:
print('\n\nBuffer overrun\n')
break

hat.a_in_scan_stop()
hat.a_in_scan_cleanup()
hat.a_in_scan_start(channel_mask, samples_per_channel, scan_rate,options)

arrydatat = arrydata

t2 = threading.Thread(target=analyse, args=(arrydatat, fna, ))
t2.start()
mc_six 70cm 2021-01-16  ♥ 1
@Spoony 贴出了主程序,就是在continuous_scan.py的基础上改的,采集10次,调用进程analyse进行分析,根据情况可以确定是否写硬盘txt文件。
Spoony 小组长 2021-01-16 
@mc_six 加个微信吧
相逢已是初识 26.3m 2021-01-17 
厉害了

登录注册 后可回复。