最近爆火的电子血氧仪是什么原理?测的准吗?

面包板社区 2023-01-06 20:06

大家好,我是学电子的小白白。

最近,随着新冠病毒在国内肆虐,继口罩、抗原、药品之后,血氧仪的价格也开始水涨船高。从1个多月前的100多元,暴涨到300多。

那么,这类家用的电子血氧仪是如何工作的呢?测量数据到底准不准?今天小白白就带大家来分析一下。

1)血氧仪工作原理

血氧仪是一种监测脉搏、血氧饱和度等指标的医疗器械,常见的家用型血氧仪,主要有指夹式、腕表式等形式。

一般大家最关注的是血氧饱和度(oxygen saturation简写为SpO2),它是指在全部血容量中被结合O2容量占全部可结合的O2容量的百分比,是人体携带氧气能力的重要参考值。人体正常的SpO2应该不小于95%,长期低于93%时需要就医。

SpO2 一般由以下公式计算:

其中CHbO2是氧合血红蛋白浓度,CHb是还原血红蛋白浓度。

一方面,这两种血红蛋白对不同波长的光有不同的吸收度;另一方面,当动脉跳动时,动脉中的血液量会发生变化,可以区分出皮肤、肌肉、静脉血等对光的吸收影响(这些组织对光的吸收可以认为固定不变)。因此,利用两种不同波长的光,经透射或反射后,采集数据综合处理,就能计算出血氧饱和度。

现在市面上最常见的,都是光电式的血氧仪,如下图所示,有透射式和反射式两种实现方法。

常见的指夹式血氧仪就是透射式,智能手环或手表就是反射式,原理是差不多的。

而LED光源的选择,与血红蛋白对不同光波长的吸收率有关,下图是两种血红蛋白对不同波长的光的消光系数图:

可以看到,两种血红蛋白对波长为660nm左右光的吸收差别最大,而对波长为800nm左右光的吸收基本相等。理论上来说,使用660nm和800nm波长的光作为光源是最合适的,但是,由于在800nm左右时,二者的消光系数斜率相差较大,光波长偏差一点就会引起较大的吸收率变化,这对LED的制造工艺要求太高,所以,工程实现时,一般不用800nm波长的LED,而选择波长为860nm~920nm的LED作为另一个光源,这个区间的消光系数斜率基本一样,而且变化平缓。

好了,到这里,硬件部分的实现我们已经了解了大概。核心就是要使用两个LED作为光源,一个660nm波长的红外光,一个900nm左右波长的红光,两束光分别通过透射(或反射)皮肤后,到达光电接收管,再采集光电接收管的值。

那么采集到两个光源的值后,应该如何处理呢?这里由于有比较多的公式推导,我们直接略过,给出下面的公式:(出自Maxim公司的应用文档,相关文档都能在文末关注公众号找到网盘下载地址)

这里的实现需要三步:

首先,我们采集的两个LED光源的值,需要分离出直流分量和交流分量,也就是:红光的交流分量ACred、红光的直流分量DCred、红外光的交流分量ACired、红外光的直流分量DCired;

其次,用采集到的四个值,计算出R;

最后,用R计算SpO2,这个计算公式中a、b、c是三个需要校准的参数。需要大量的试验数据去拟合出来。

2)血氧仪的制作

有了以上的理论基础,我们可以自己动手DIY一个血氧仪。

Maxim公司有一款集成芯片,可以实现大部分的硬件功能,就是MAX30100、MAX30102系列芯片。MAX30100已停产,新设计中不推荐使用,MAX30102是新一代产品。

目前价格还没有太离谱:

MAX30102集成了一个660nm红光LED、880nm红外光LED、光电检测器,以及带环境光抑制的低噪声电子电路。芯片内部含18bit ADC采集电路。对外是I2C接口。基本上单芯片就能实现光源信号的采集。

要注意,MAX30102的输出值,只是两个LED光源的采集值。后续还需要软件去实现交流、直流分离,R的求解、SpO2的求解。顺带也可以求解出脉搏数据。

使用max30102很简单,用I2C接口访问,初始化代码如下:

max30102_Bus_Write(REG_INTR_ENABLE_1,0xc0);  // INTR settingmax30102_Bus_Write(REG_INTR_ENABLE_2,0x00);max30102_Bus_Write(REG_FIFO_WR_PTR,0x00);    //FIFO_WR_PTR[4:0]max30102_Bus_Write(REG_OVF_COUNTER,0x00);    //OVF_COUNTER[4:0]max30102_Bus_Write(REG_FIFO_RD_PTR,0x00);    //FIFO_RD_PTR[4:0]max30102_Bus_Write(REG_FIFO_CONFIG,0x0f);    //sample avg = 1, fifo rollover=false, fifo almost full = 17max30102_Bus_Write(REG_MODE_CONFIG,0x03);    //0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LEDmax30102_Bus_Write(REG_SPO2_CONFIG,0x27);    // SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (400uS)  max30102_Bus_Write(REG_LED1_PA,0x24);     //Choose value for ~ 7mA for LED1max30102_Bus_Write(REG_LED2_PA,0x24);     // Choose value for ~ 7mA for LED2max30102_Bus_Write(REG_PILOT_PA,0x7f);     // Choose value for ~ 25mA for Pilot LED

主函数中循环调用fifo读取函数,用于获取LED光源的采集值:

void maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led){  uint32_t un_temp;  unsigned char uch_temp;  char ach_i2c_data[6];  *pun_red_led=0;  *pun_ir_led=0;
//read and clear status register maxim_max30102_read_reg(REG_INTR_STATUS_1, &uch_temp); maxim_max30102_read_reg(REG_INTR_STATUS_2, &uch_temp);
IIC_ReadBytes(I2C_WRITE_ADDR,REG_FIFO_DATA,(u8 *)ach_i2c_data,6);
un_temp=(unsigned char) ach_i2c_data[0]; un_temp<<=16; *pun_red_led+=un_temp; un_temp=(unsigned char) ach_i2c_data[1]; un_temp<<=8; *pun_red_led+=un_temp; un_temp=(unsigned char) ach_i2c_data[2]; *pun_red_led+=un_temp;
un_temp=(unsigned char) ach_i2c_data[3]; un_temp<<=16; *pun_ir_led+=un_temp; un_temp=(unsigned char) ach_i2c_data[4]; un_temp<<=8; *pun_ir_led+=un_temp; un_temp=(unsigned char) ach_i2c_data[5]; *pun_ir_led+=un_temp; *pun_red_led&=0x03FFFF; //Mask MSB [23:18] *pun_ir_led&=0x03FFFF; //Mask MSB [23:18]}

采集值最好经过滤波,以减少噪声的干扰。

之后,再分离出交流、直流分量,求出R和SpO2即可,核心是这个函数:

void maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer,  int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid,                               int32_t *pn_heart_rate, int8_t  *pch_hr_valid){    uint32_t un_ir_mean ,un_only_once ;    int32_t k ,n_i_ratio_count;    int32_t i, s, m, n_exact_ir_valley_locs_count ,n_middle_idx;    int32_t n_th1, n_npks,n_c_min;          int32_t an_ir_valley_locs[15] ;    int32_t an_exact_ir_valley_locs[15] ;    int32_t an_dx_peak_locs[15] ;    int32_t n_peak_interval_sum;        int32_t n_y_ac, n_x_ac;    int32_t n_spo2_calc;     int32_t n_y_dc_max, n_x_dc_max;     int32_t n_y_dc_max_idx, n_x_dc_max_idx;     int32_t an_ratio[5],n_ratio_average;     int32_t n_nume,  n_denom ;    // remove DC of ir signal        un_ir_mean =0;     for (k=0 ; k    un_ir_mean =un_ir_mean/n_ir_buffer_length ;    for (k=0 ; k        // 4 pt Moving Average    for(k=0; k< BUFFER_SIZE-MA4_SIZE; k++){        n_denom= ( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3]);        an_x[k]=  n_denom/(int32_t)4;     }
    // get difference of smoothed IR signal     for( k=0; k-1; k++) an_dx[k]= (an_x[k+1]- an_x[k]);
// 2-pt Moving Average to an_dx for(k=0; k< BUFFER_SIZE-MA4_SIZE-2; k++){ an_dx[k] = ( an_dx[k]+an_dx[k+1])/2 ; } // hamming window // flip wave form so that we can detect valley with peak detector for ( i=0 ; i-2 ;i++){ s= 0; for( k=i; k s -= an_dx[k] *auw_hamm[k-i] ; } an_dx[i]= s/ (int32_t)1146; // divide by sum of auw_hamm     } n_th1=0; // threshold calculation for ( k=0 ; k n_th1 += ((an_dx[k]>0)? an_dx[k] : ((int32_t)0-an_dx[k])) ; } n_th1= n_th1/ ( BUFFER_SIZE-HAMMING_SIZE); // peak location is acutally index for sharpest location of raw signal since we flipped the signal maxim_find_peaks( an_dx_peak_locs, &n_npks, an_dx, BUFFER_SIZE-HAMMING_SIZE, n_th1, 8, 5 );//peak_height, peak_distance, max_num_peaks
n_peak_interval_sum =0; if (n_npks>=2){ for (k=1; k n_peak_interval_sum += (an_dx_peak_locs[k]-an_dx_peak_locs[k -1]); n_peak_interval_sum=n_peak_interval_sum/(n_npks-1); *pn_heart_rate=(int32_t)(6000/n_peak_interval_sum);// beats per minutes *pch_hr_valid = 1; } else { *pn_heart_rate = -999; *pch_hr_valid = 0; } for ( k=0 ; k        an_ir_valley_locs[k]=an_dx_peak_locs[k]+HAMMING_SIZE/2
// raw value : RED(=y) and IR(=X) // we need to assess DC and AC value of ir and red PPG. for (k=0 ; k an_x[k] = pun_ir_buffer[k] ; an_y[k] = pun_red_buffer[k] ; }
// find precise min near an_ir_valley_locs n_exact_ir_valley_locs_count =0; for(k=0 ; k un_only_once =1; m=an_ir_valley_locs[k]; n_c_min= 16777216;//2^24; if (m+5 < BUFFER_SIZE-HAMMING_SIZE && m-5 >0){ for(i= m-5;i5; i++) if (an_x[i] if (un_only_once >0){ un_only_once =0; } n_c_min= an_x[i] ; an_exact_ir_valley_locs[k]=i; } if (un_only_once ==0) n_exact_ir_valley_locs_count ++ ; } } if (n_exact_ir_valley_locs_count <2 ){ *pn_spo2 = -999 ; // do not use SPO2 since signal ratio is out of range *pch_spo2_valid = 0; return; } // 4 pt MA for(k=0; k< BUFFER_SIZE-MA4_SIZE; k++){ an_x[k]=( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3])/(int32_t)4; an_y[k]=( an_y[k]+an_y[k+1]+ an_y[k+2]+ an_y[k+3])/(int32_t)4; }
//using an_exact_ir_valley_locs , find ir-red DC andir-red AC for SPO2 calibration ratio //finding AC/DC maximum of raw ir * red between two valley locations n_ratio_average =0; n_i_ratio_count =0; for(k=0; k< 5; k++) an_ratio[k]=0; for (k=0; k< n_exact_ir_valley_locs_count; k++){ if (an_exact_ir_valley_locs[k] > BUFFER_SIZE ){ *pn_spo2 = -999 ; // do not use SPO2 since valley loc is out of range *pch_spo2_valid = 0; return; } } // find max between two valley locations // and use ratio betwen AC compoent of Ir & Red and DC compoent of Ir & Red for SPO2
for (k=0; k< n_exact_ir_valley_locs_count-1; k++){ n_y_dc_max= -16777216 ; n_x_dc_max= - 16777216; if (an_exact_ir_valley_locs[k+1]-an_exact_ir_valley_locs[k] >10){ for (i=an_exact_ir_valley_locs[k]; i< an_exact_ir_valley_locs[k+1]; i++){ if (an_x[i]> n_x_dc_max) {n_x_dc_max =an_x[i];n_x_dc_max_idx =i; } if (an_y[i]> n_y_dc_max) {n_y_dc_max =an_y[i];n_y_dc_max_idx=i;} } n_y_ac= (an_y[an_exact_ir_valley_locs[k+1]] - an_y[an_exact_ir_valley_locs[k] ] )*(n_y_dc_max_idx -an_exact_ir_valley_locs[k]); //red n_y_ac= an_y[an_exact_ir_valley_locs[k]] + n_y_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]) ; n_y_ac= an_y[n_y_dc_max_idx] - n_y_ac; // subracting linear DC compoenents from raw n_x_ac= (an_x[an_exact_ir_valley_locs[k+1]] - an_x[an_exact_ir_valley_locs[k] ] )*(n_x_dc_max_idx -an_exact_ir_valley_locs[k]); // ir n_x_ac= an_x[an_exact_ir_valley_locs[k]] + n_x_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]); n_x_ac= an_x[n_y_dc_max_idx] - n_x_ac; // subracting linear DC compoenents from raw n_nume=( n_y_ac *n_x_dc_max)>>7 ; //prepare X100 to preserve floating value n_denom= ( n_x_ac *n_y_dc_max)>>7; if (n_denom>0 && n_i_ratio_count <5 && n_nume != 0) { an_ratio[n_i_ratio_count]= (n_nume*20)/n_denom ; //formular is ( n_y_ac *n_x_dc_max) / ( n_x_ac *n_y_dc_max) ; ///*************************n_nume原来是*100************************// n_i_ratio_count++; } } }
maxim_sort_ascend(an_ratio, n_i_ratio_count); n_middle_idx= n_i_ratio_count/2;
if (n_middle_idx >1) n_ratio_average =( an_ratio[n_middle_idx-1] +an_ratio[n_middle_idx])/2; // use median else n_ratio_average = an_ratio[n_middle_idx ];
if( n_ratio_average>2 && n_ratio_average <184){ n_spo2_calc= uch_spo2_table[n_ratio_average] ; *pn_spo2 = n_spo2_calc ; *pch_spo2_valid = 1;// float_SPO2 = -45.060*n_ratio_average* n_ratio_average/10000 + 30.354 *n_ratio_average/100 + 94.845 ; // for comparison with table } else{ *pn_spo2 = -999 ; // do not use SPO2 since signal ratio is out of range *pch_spo2_valid = 0; }}

注意,这里使用的函数是SpO2 = -45.060*R*R+ 30.354*R+ 94.845,采用了查表法求解。

这个函数执行完后,变量n_heart_rate中存储的是心率,变量n_sp02存储的就是血氧饱和度;

最后将血氧饱和度值显示出来就行了。

(完整的工程代码见文末公众号,关注后可以找到网盘下载地址)

3)血氧仪测量准不准?

实现过程中,SpO2与R的关系的系数是非常难确定的,需要大量的试验数据来拟合,见下图,是maxim公司应用文档中的拟合过程:

(每种颜色是一组测试结果,黄色叉是去除掉的偏离比较大的野值)

可以发现,有些测量数据的方差是相当大的,很多数据偏离了拟合后的曲线很远。maxim公司建议在校准时,需要不断剔除偏离较大的数据,均方根误差(RMES)需要在3.5%以内。

最终给出一组值:

可是,在另一篇maxim公司的应用文档中,又给出了SpO2 = 104-17*R这个公式,其中0.4

为什么这两公式相差这么大?

小白白又查阅了一些论文,发现对于R值与血氧饱和度的公式并不固定,SpO2可以表示为R的一个高次的多项式函数,由于正常人体测出的R值都较小,人们一般关注的是R值小于1的情况,大于1已经是明显的不健康情况。所以在计算SpO2时常常会去掉高次项,采用一阶函数或者二阶函数来拟合。

又由于SpO2的测量方法本身误差较大,所以测量数据不同时,拟合出来的参数就大相径庭了。

这里,我还收集了几个论文中拟合出的R值与SpO2之间的函数关系:

SpO2 = -45.060*R*R+ 30.354*R+ 94.845;

SpO2 = -7.6*R*- 20.7*R+ 112.2;(0.5

SpO2 = -86.47*R*R+ 77.21*R+ 81.68,(0.4

SpO2 = -20*x+107.2,(0.36

我把这几个函数的图形绘制在同一张图中:

可以看到,在R为0.4~1.0这个区间里,这些函数的值大体上相差不大,变化趋势也基本一样。而且这些参数,一般都是以正常人的数据来拟合的,所以在正常血氧的范围内,可以认为用这种方法来测量血氧饱和度基本靠谱。而当血氧饱和度偏离正常值时,误差会显著增大。

当然,这需要建立在光源的采集数据准确的前提下,也就是R值准确的时候。

而现实是,在采集光源的数据时,会有环境光干扰、工频干扰、各种噪声干扰;即使滤除了这些噪声,还会有如下图这种低频的漂移,此时,要准确提取出光源的直流分量、交流分量是非常困难的。

因此,如果信号处理的算法不好,就会把微弱的噪声、漂移等等干扰识别为脉搏引起的光强变化,网上出现的各种能测出香肠的血氧和脉搏的笑话也就不足为奇了。

综合来看,此类血氧仪作为健康监测的参考手段之一是可以的,但是数据准确性存疑,以它来判断身体是否健康是万万不能的。


好了,本节内容就分享到这里了。

如果觉得有用,欢迎大家关注我的公众号:“小白白学电子”,可以下载相关的学习资源:

面包板社区 面包板社区——中国第一电子人社交平台 面包板社区是Aspencore旗下媒体,整合了电子工程专辑、电子技术设计、国际电子商情丰富资源。社区包括论坛、博客、问答,拥有超过250万注册用户,加入面包板社区,从菜鸟变大神,打造您的电子人脉社交圈!
评论
  • 在智能网联汽车中,各种通信技术如2G/3G/4G/5G、GNSS(全球导航卫星系统)、V2X(车联网通信)等在行业内被广泛使用。这些技术让汽车能够实现紧急呼叫、在线娱乐、导航等多种功能。EMC测试就是为了确保在复杂电磁环境下,汽车的通信系统仍然可以正常工作,保护驾乘者的安全。参考《QCT-基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法-1》标准10.5电磁兼容试验方法,下面将会从整车功能层面为大家解读V2X整车电磁兼容试验的过程。测试过程揭秘1. 设备准备为了进行电磁兼容试验,技
    北汇信息 2025-01-09 11:24 51浏览
  • 在过去十年中,自动驾驶和高级驾驶辅助系统(AD/ADAS)软件与硬件的快速发展对多传感器数据采集的设计需求提出了更高的要求。然而,目前仍缺乏能够高质量集成多传感器数据采集的解决方案。康谋ADTF正是应运而生,它提供了一个广受认可和广泛引用的软件框架,包含模块化的标准化应用程序和工具,旨在为ADAS功能的开发提供一站式体验。一、ADTF的关键之处!无论是奥迪、大众、宝马还是梅赛德斯-奔驰:他们都依赖我们不断发展的ADTF来开发智能驾驶辅助解决方案,直至实现自动驾驶的目标。从新功能的最初构思到批量生
    康谋 2025-01-09 10:04 40浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 82浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 211浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 126浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 115浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 128浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 150浏览
  • 1月7日-10日,2025年国际消费电子产品展览会(CES 2025)盛大举行,广和通发布Fibocom AI Stack,赋智千行百业端侧应用。Fibocom AI Stack提供集高性能模组、AI工具链、高性能推理引擎、海量模型、支持与服务一体化的端侧AI解决方案,帮助智能设备快速实现AI能力商用。为适应不同端侧场景的应用,AI Stack具备海量端侧AI模型及行业端侧模型,基于不同等级算力的芯片平台或模组,Fibocom AI Stack可将TensorFlow、PyTorch、ONNX、
    物吾悟小通 2025-01-08 18:17 43浏览
  • 一个真正的质量工程师(QE)必须将一件产品设计的“意图”与系统的可制造性、可服务性以及资源在现实中实现设计和产品的能力结合起来。所以,可以说,这确实是一种工程学科。我们常开玩笑说,质量工程师是工程领域里的「侦探」、「警察」或「律师」,守护神是"墨菲”,信奉的哲学就是「墨菲定律」。(注:墨菲定律是一种启发性原则,常被表述为:任何可能出错的事情最终都会出错。)做质量工程师的,有时会不受欢迎,也会被忽视,甚至可能遭遇主动或被动的阻碍,而一旦出了问题,责任往往就落在质量工程师的头上。虽然质量工程师并不负
    优思学院 2025-01-09 11:48 54浏览
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 80浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球中空长航时无人机产值达到9009百万美元,2024-2030年期间年复合增长率CAGR为8.0%。 环洋市场咨询机构出版了的【全球中空长航时无人机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球中空长航时无人机总体规模,包括产量、产值、消费量、主要生产地区、主要生产商及市场份额,同时分析中空长航时无人机市场主要驱动因素、阻碍因素、市场机遇、挑战、新产品发布等。报告从中空长航时
    GIRtina 2025-01-09 10:35 37浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2025-01-09 09:58 33浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 105浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 94浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦