肺功能MVV一般是指肺部每分钟的最大通气量。
MVV本身是最大值的英文缩写,在临床上,肺功能MVV表示肺部每分钟最大通气量,用以衡量气道的通畅度,以及肺部和胸廓的弹性、呼吸肌的力量。
肺部每分钟的最大通气量的参考值男性与女性之间存在差异,一般男性检测所得的正常值是104+2.71L,女性正常值为82.5+2.17L。该指标多用于检测慢性阻塞性肺疾病、特发性阻塞性细支气管炎伴机化性肺炎、肺气肿等疾病。
单片机一般通过外接流量传感器,使用ADC高速采集的方式来获取当前流速数据。
肺活量吹气检查流程大致为:快速深吸气 ---> 快速深呼气 ---> 快速深吸气 ---> 快速深呼气。。。
#define nFLOW_SAMPLE (10)//流量传感器采集频率单位为ms
#define qAbs(x) (((x) > 0.0f) ? (x) : -(x))
#define qFuzzyIsNull(x) (qAbs(x) <= 0.00001f)
typedef struct
{
int bIsIntact;
float dMMV;
}MMVParam;
MMVParam _cal_mvv_test(float*dFlowData,int nSumCnt)
{
MMVParam tMMVParam = {true,0};
//使用零点流速分段样本数据
int nZeroPoint = 0;
float dMaxVal, dMinVal;
float dTmpCapatity;
dMaxVal = dMinVal = dTmpCapatity = 0.0f;
for (int i = 1; i < nSumCnt; i++)
{
// 流速为L/min,累计流量为当前流速乘以时间
dTmpCapatity += dFlowData[i] * (nFLOW_SAMPLE / 1000 / 60.0f);
//收集达到1200个测量数据即可
if (i * nFLOW_SAMPLE >= 12000) break;
//找出最大值和最小值
if (dMaxVal < dTmpCapatity) dMaxVal = dTmpCapatity;
if (dMinVal > dTmpCapatity) dMinVal = dTmpCapatity;
//两点间经过零点
if (dFlowData[i - 1] * dFlowData[i] <= 0 &&
!qFuzzyIsNull(dFlowData[i]))
{
nZeroPoint++;
tMMVParam.dMMV += (dMaxVal - dMinVal);
dMaxVal = dTmpCapatity;
dMinVal = dTmpCapatity;
}
}
//至少分四段数据才有效
if (nZeroPoint < 4) tMMVParam.bIsIntact = false;
//至少需要1200个数据才有效
if (nSumCnt < 1200) tMMVParam.bIsIntact = false;
//分钟最大通气量为12s流量的5倍,单位为L
tMMVParam.dMMV *= 5;
return tMMVParam;
}