原文链接/详细资料:https://f1829ryac0m.feishu.cn/wiki/ZIzEwqYH0iT7mbkV5opc6biunPe?from=from_copylink
在机器人触觉、医疗健康、消费电子、柔性称重等应用中,压力检测的灵敏度、稳定性和响应速度,直接影响设备对外界状态的感知能力与控制精度。但传统机械开关、刚性称重元件和常见电阻式薄膜压力传感器,往往存在“难以连续测量、结构适配受限、迟滞和漂移明显”等问题:机械开关通常只能判断按下或松开,无法反映压力变化过程;刚性称重元件体积较大,难以安装在机器人指端、曲面或狭小空间;部分电阻式柔性传感器则容易受到材料迟滞、温度和安装结构影响,给精细测量与重复标定带来困难。
MFYM-1S-9-9 单点柔性压力开发板正是针对这些问题设计的一体化压力感知方案。模组采用新型压敏材料和 PCB 混合结构电容技术,并配合 MCP1081 电容采集芯片,将柔性敏感片受到的压力变化转换为连续电容数据,通过 UART 接口直接输出。相比只能提供通断信号的机械开关,它能够连续反映压力变化;相比体积较大的刚性测力结构,它具有体积小、敏感区域集中、便于嵌入的特点;相比容易出现明显迟滞和漂移的传统柔性压力方案,它具备高灵敏度、良好线性度、低漂移、低迟滞和快速响应等优势。
MFYM-1S-9-9 的标称检测范围为 0~100 kPa,检测灵敏度小于 10 Pa,响应时间小于 5 ms,线性度可达 R²>0.98,信号漂移小于 1%,使用寿命超过 300 万次。模组采用 115200 baud UART 数字输出,应用端可以直接获取压力敏感通道、参考通道、补偿通道和温度数据,便于完成空载置零、温度分析、压力标定与上层算法开发,为机器触觉和精准压力测量提供了结构紧凑、易于集成的解决方案。
在人形机器人和工业机器人场景中,MFYM-1S-9-9 可安装在机械手指端、夹爪接触面、足底或其他需要感知接触力的位置。当机器人抓取物体时,模组能够连续检测接触压力及其变化趋势,为抓取力度调节、接触状态判断和滑动趋势识别提供基础数据。其小型化结构适合嵌入空间有限的机器人末端,多点组合后还可形成分布式触觉感知区域,帮助机器人更细致地感知物体接触位置和受力变化,降低夹持不足导致的滑落风险,以及压力过大造成的物体损伤。
在医疗健康和智能穿戴场景中,MFYM-1S-9-9 可用于脉搏波、心率、压力变化以及血压测量原型的信号采集。柔性敏感片可以与皮肤接触面、腕带或其他柔性结构结合,感知微小的周期性压力变化;高灵敏度和快速响应能力有利于保留压力波形中的细节,UART 数字输出也方便主控进行滤波、特征提取和数据记录。需要注意的是,模组用于医疗健康产品时,应根据最终接触结构、佩戴压力和使用温度重新标定,并完成相应的安全性、准确性及医疗法规验证。
在消费电子和人机交互场景中,MFYM-1S-9-9 可用于压力按键、滑动检测、智能家居、虚拟现实设备和生活电器。与普通机械按键相比,连续压力数据不仅能够识别“是否按下”,还可以进一步区分轻触、重按和持续按压,为设备提供更丰富的交互方式;沿操作区域布置多个传感点后,还可结合算法判断手指移动和压力分布变化。在柔性称重及智能家居应用中,模组也可安装在承力面下方,通过合理的接触头与底座结构检测载荷变化,为小型称重、状态判断和物体存在检测提供感知基础。
一、模块简介
MFYM-1S-9-9 是一款高灵敏、线性度好、低漂移、低迟滞的单点柔性压力传感模组。模组由柔性压力敏感片、PCB 混合结构电容单元、MCP1081 电容采集及数字输出电路构成,实测固件以 115200 baud 的 UART ASCII 数据流主动输出压力敏感通道、参考/补偿通道和温度数据。
| 项目 | 说明 |
|---|---|
| 产品型号 | MFYM-1S-9-9 |
| 产品形态 | 单点柔性压力开发板/传感模组 |
| 核心技术 | 压敏材料 +PCB 混合结构电容技术 |
| 采集芯片 | MCP1081(依据产品简介) |
| 输出接口 | UART,115200 baud,8N1 |
| 典型应用 | 机器人触觉、医疗健康、压力按键、滑动检测、汽车电子、智能家居、虚拟现实、柔性称重 |
二、主要芯片介绍
2.1 芯片概述
产品简介明确标注模组配合 MCP1081 电容采集芯片使用。该芯片在本模组中承担柔性压力电容信号采集、参考/补偿通道处理及数字化输出链路中的核心功能。当前资料未提供 MCP1081 独立数据手册,因此本节仅描述可由产品资料和实测 UART 数据确认的系统行为,不扩展未经验证的芯片内部指标。
2.2 引脚定义
常用应用接口为 4 线 UART。TXD/RXD 应与主控交叉连接,并保证两端共地。产品图片还显示 DIO/CLK/GND/VCC 烧录/调试焊盘;该接口不属于日常数据采集接口,资料未给出其操作协议,应用侧不应直接驱动。
| 模组引脚 | 方向(相对模组) | 功能 | 接线说明 |
|---|---|---|---|
| VCC | 输入 | 电源 | 测试资料建议先使用 3.3 V 供电 |
| GND | - | 电源地 | 必须与主控共地 |
| RXD | 输入 | UART 接收 | 连接主控 UART TX |
| TXD | 输出 | UART 发送 | 连接主控 UART RX |
2.3 功能框图
模组可按以下信号链理解:
| 压力输入 | 传感转换 | 采集与补偿 | 数字输出 |
|---|---|---|---|
| 柔性片受力 0~100 kPa | 压敏材料与混合结构电容变化 | MCP1081 采集 S/R/C0/C3 并提供温度字段 | UART ASCII 数据流 115200, 8N1 |
其中 S 为压力敏感通道;R、C0、C3 为参考/补偿相关通道;T 为温度字段。应用程序通常对 S 进行置零和压力换算,同时保留其他字段用于诊断和补偿分析。
2.4 性能参数
| 参数 | 标称值 | 说明 |
|---|---|---|
| 检测范围 | 0~100 kPa | 产品简介标称范围 |
| 检测灵敏度 | <10 Pa | 产品简介标称值 |
| 响应时间 | <5 ms | 产品简介标称值 |
| 灵敏度 | 0.36 kPa⁻¹ | 用于快速换算的标称相对灵敏度 |
| 信号漂移 | <1% | 产品简介标称值 |
| 线性度 | R²>0.98 | 产品简介标称值 |
| 使用寿命 | >300 万次 | 产品简介标称值 |
| 工作温度 | -20℃~+85℃ | 产品简介标称范围 |
| 工作湿度 | 0~100%RH | 产品简介标称范围 |
| 输出方式 | UART | 主动 ASCII 数据流 |
| 波特率 | 115200 | 8 数据位、无校验、1 停止位 |
说明:性能参数在室温和厂家测试条件下获得。接触头形状、受力面积、预紧力、底座刚度、装配公差及温度均会影响系统级结果;精准计量应在最终安装结构中重新标定。
2.5 参考电路
以 Raspberry Pi Pico / RP2040 为例,可使用 UART0 完成快速验证。供电电压以实际硬件规格和厂家确认信息为准;现有测试资料推荐先以 3.3 V 供电。
| Raspberry Pi Pico | MFYM-1S-9-9 | 作用 |
|---|---|---|
| 3V3(OUT) | VCC | 模组供电 |
| GND | GND | 公共参考地 |
| GP16 / UART0 TX | RXD | 主控发送到模组 |
| GP17 / UART0 RX | TXD | 主控接收模组数据 |
接线要点:TX/RX 必须交叉;不要把 Pico 的 VBUS 或 VSYS 接到 UART 信号脚;上电前检查电源与地,首次联调先运行原始串口监视程序确认数据格式。
2.6 芯片配置
现有实测固件为上电后主动输出数据,不需要主控写寄存器启动采集。应用侧主要配置 UART、字段选择与压力标定参数:
| 配置项 | 推荐/默认值 | 用途 |
|---|---|---|
| UART | 115200, 8N1 | 串行通信参数 |
| value_key | s | 选择压力敏感字段 S |
| timeout_ms | 2000 | 读取超时 |
| sensitivity | 0.36 | 标称相对灵敏度,单位 kPa⁻¹ |
| polarity | 1 或-1 | 适配加压后原始值上升或下降 |
| 空载置零 | 丢弃 5 帧,7 帧中位数 | 抑制启动瞬态和偶然波动 |
| 两点标定 | 空载点 + 已知压力点 | 最终机械结构下的线性校准 |
P = polarity × (S / S_zero - 1) / 0.36
两点标定优先时:P = slope × S + offset
2.7 通信接口和相关协议
实测模组以 UART 主动输出可读 ASCII 行。有效数据之间可能出现仅含空格的帧,驱动会自动忽略。典型有效帧如下:
S:1627 pF,R:2000 pF,C0:1020 pF,C3:987 pF;T:2813 Crn
| 字段 | 示例 | 含义 | 应用建议 |
|---|---|---|---|
| S | 1627 pF | 压力敏感通道 | 默认用于置零和压力换算 |
| R | 2000 pF | 参考值 | 保留用于诊断 |
| C0/C3 | 1020/987 pF | 补偿/参考电容通道 | 保留用于补偿分析 |
| T | 2813 C | 温度的 100 倍 | 2813 表示 28.13℃ |
- 分隔符:字段间主要使用逗号,分号也作为分隔符处理;字段格式:名称、冒号、数值与单位;驱动同时兼容 KEY=VALUE、CSV 和纯数字行;帧边界:以换行符结尾;接收端应维护缓冲区并处理半帧、粘连和超时;当前实测协议不是 Modbus RTU,不需要 umodbus。
2.8 寄存器定义
当前提供的产品简介、实测数据与驱动资料均表明应用接口是主动 UART ASCII 数据流,未提供可供主控读写的寄存器表。因此本型号在当前固件下不适用 Modbus 寄存器定义。若后续固件改为二进制或寄存器协议,应以对应固件版本的正式协议文档为准,并重新核对帧结构、字节序、校验方式和字段比例。
三、电路工程
3.1 电路源工程
获取电路源工程,请查看下面链接:
https://mysentech.com/productinfo/231905.html
3.2 模块使用说明
3.2.1 测试环境搭建与注意事项
-
- 保持敏感区空载,按 3.3 V、GND 和交叉 TX/RX 完成接线。先运行 uart_monitor.py,确认终端连续收到完整 ASCII 数据行。加载驱动与示例程序,启动后丢弃 5 帧并采集 7 帧中位数完成空载置零。轻压敏感区,观察 S 字段和换算压力是否随载荷稳定变化。若方向相反,将 polarity 设为 -1。完成机械安装后,使用标准载荷执行两点标定,并验证全量程线性、回零、迟滞与温漂。
- 关键注意事项:受力中心应落在背部圆框丝印敏感区域中央;尽量垂直、均匀受力;预留底座或凹槽在模组外围支撑,避开核心电路与柔性片引脚区域;避免尖锐物体刺穿、摩擦或偏载。
3.2.2 Modbus Poll 的使用
Modbus Poll 是一款通用型 Modbus 主站调试工具,适配本系列所有支持 Modbus-RTU 协议的电容式传感器,可快速实现传感器与电脑的串口通信调试、实时数据读取与日志导出,是验证传感器功能、采集测试数据的通用上位机工具。软件支持 Modbus RTU/ASCII/TCP/IP 协议,兼容多种寄存器类型与数据格式,操作流程对全系列传感器通用。
使用前需先完成软件安装与激活,可通过官方渠道下载安装包,首次打开可试用 30 天,也可输入注册码永久激活。硬件连接传感器与电脑后,打开软件点击「Connection」-「Connect」,在弹出窗口中配置串口参数(端口号、波特率、数据位 / 校验位 / 停止位,本系列传感器默认采用 9600 Baud、8N1 格式,具体以对应型号规格书为准),确认后即可建立通信连接。
以下为通用操作流程说明:
-
- **串口连接配置:**将传感器通过 USB 转串口模块接入电脑后,打开 Modbus Poll 软件,点击菜单栏「Connection」-「Connect」,在弹出窗口中选择传感器对应的 COM 端口号,并配置与传感器匹配的串口参数(波特率、数据位、校验方式、停止位,本系列传感器默认采用 9600 Baud、8N1 格式),确认后即可建立通信连接。**导入传感器配置文件:**软件支持导入各传感器型号对应的
.mbp
-
- 预配置文件,文件中已预设好寄存器地址、数据格式与别名定义,无需手动配置寄存器。直接在软件中打开对应传感器的
.mbp
- 文件,即可自动加载所有参数,连接成功后将直接显示传感器的实时检测数据(如尘 / 雨 / 霜厚度值、状态标志位等)。**数据日志记录(可选):**如需保存测试数据,可通过「Setup」-「Excel Log」功能配置日志记录规则,支持按固定周期或每次数据更新记录数据,并可设置记录条数上限,方便后续对传感器数据进行分析与验证。
3.3 应用实验
这里,我们使用 GraftPort-RP2040 开发板进行测试,MFYM-1S-9-9 上使用 UART 接口与主控进行通信。
该图展示了 WS61 模块与 GraftPort-RP2040 开发板的 UART 接线方式。
模块连线如下表所示:
| 开发板引脚 | 模块引脚 | 说明 |
|---|---|---|
| 引脚 16 | MTX |
UART 数据传输线,对应开发板的发送引脚 |
| 引脚 17 | MRX |
UART 数据传输线,对应开发板的接收引脚 |
这里,我们需要在 uPyPI 上搜索相关驱动包:https://upypi.net/zh/
该图演示了在 uPyPI 中搜索 WS61 驱动包的过程。
输入 mfym1s99_driver 进行搜索,显示如下:
该图展示了 mfym1s99_driver 搜索结果,用于确认对应驱动包。
点击复制本地安装命令:
该图展示了复制 WS61 驱动安装命令的界面,方便完成环境准备。
通过 mip 工具导入模块驱动库代码,以下是 mpremote 工具使用指令:
mpremote mip install https://upypi.net/pkgs/mfym1s99_driver/1.0.0
导入后,将下面 main.py 代码复制到我们的工程中:
*# Python env : MicroPython v1.23.0
# -*- coding: utf-8 -*-
# @Time : 2026/08/21 16:30
# @Author : December
# @File : main.py
# @Description : MFYM-1S-9-9 单点柔性压力传感器测试程序
# @License : MIT
# ======================================== 导入相关模块 =========================================
import time
from machine import Pin, UART
from mfym1s99 import MFYM1S99
# ======================================== 全局变量 ============================================
UART_ID = 0
UART_TX_PIN = 16
UART_RX_PIN = 17
UART_BAUDRATE = 115200
UART_TIMEOUT_MS = 2000
ZERO_DISCARD_SAMPLES = 5
ZERO_MEDIAN_SAMPLES = 7
LOOP_DELAY_MS = 100
# ======================================== 功能函数 ============================================
# ======================================== 自定义类 ============================================
# ======================================== 初始化配置 ===========================================
# 等待 Pico 和传感器上电稳定。
time.sleep(3)
print("FreakStudio: MFYM-1S-9-9 Pressure Sensor Initialization")
# UART 硬件资源由应用创建,再注入驱动。
uart = UART(
UART_ID,
baudrate=UART_BAUDRATE,
bits=8,
parity=None,
stop=1,
tx=Pin(UART_TX_PIN),
rx=Pin(UART_RX_PIN),
timeout=UART_TIMEOUT_MS,
timeout_char=20,
rxbuf=512,
)
sensor = MFYM1S99(
uart=uart,
value_key="s",
timeout_ms=UART_TIMEOUT_MS,
)
print("Keep the sensing area unloaded while zeroing...")
print("Discarding 5 startup frames, then taking the median of 7 frames.")
# ======================================== 主程序 ============================================
try:
sensor.clear()
print("UART buffer ready; collecting zero samples...")
baseline = sensor.zero(
samples=ZERO_MEDIAN_SAMPLES,
discard=ZERO_DISCARD_SAMPLES,
)
print("Zero raw: %.3f" % baseline)
while True:
sample = sensor.read_sample()
if sample is None:
print("UART timeout")
continue
# 提取压力通道、参考通道和温度后统一输出。
s_pf = sensor.sample_value(sample)
pressure_kpa = sensor.pressure_from_raw(s_pf)
r_pf = sensor.field(sample, "r", 0.0)
c0_pf = sensor.field(sample, "c0", 0.0)
c3_pf = sensor.field(sample, "c3", 0.0)
temperature = sensor.temperature_c(sample)
if temperature is None:
print("S=%.0f pF pressure=%.3f kPa" % (s_pf, pressure_kpa))
else:
print(
"S=%.0f pF R=%.0f pF C0=%.0f pF C3=%.0f pF "
"T=%.2f C pressure=%.3f kPa"
% (s_pf, r_pf, c0_pf, c3_pf, temperature, pressure_kpa)
)
time.sleep_ms(LOOP_DELAY_MS)
except KeyboardInterrupt:
print("Program interrupted by user")
except OSError as error:
print("Hardware communication error: %s" % str(error))
except Exception as error:
print("Unknown error: %s" % str(error))
finally:
print("Cleaning up resources...")
sensor.deinit()
uart.deinit()
del sensor
del uart
print("Program exited")
*
烧录代码,打开终端,输出如下:
展示了压力信息以及电容压力信息
573