[开发工具] MQ2电压值与PMM的转换

[复制链接]
 楼主| vivilyly 发表于 2023-3-30 22:40 | 显示全部楼层 |阅读模式
  1. #define CAL_PPM         20          // 校准环境中PPM值
  2. #define RL                        5                // RL阻值
  3. static float R0 = 6.00;         // 元件在洁净空气中的阻值

  4. //得到ADC采样内部传感器的值
  5. //取10次,然后平均
  6. vu16 Get_ADCValue_MQ2(void)
  7. {
  8.         u32 val = 0;
  9.         u8 times = 10;
  10.         u8 count;
  11.         for(count = 0; count < times; count++)
  12.         {
  13.                 val += ADC_ConvertedValue[0];//获取DMA通道值
  14.                 delay_ms(5);
  15.         }
  16.         return val/times;
  17. }

  18. // 传感器校准函数
  19. void MQ2_PPM_Calibration(float RS)
  20. {
  21.     R0 = RS / pow(CAL_PPM / 613.9f, 1 / -2.074f);
  22. }

  23. // MQ2传感器数据处理
  24. float MQ2_GetPPM(void)
  25. {       
  26.     float Vrl = 3.3f * Get_ADCValue_MQ2() / 4096.f;
  27.         Vrl = ( (float)( (int)( (Vrl+0.005)*100 ) ) )/100;
  28.     float RS = (3.3f - Vrl) / Vrl * RL;

  29.         if(times_mq < 6000) // 获取系统执行时间,300ms前进行校准
  30.     {
  31.                 R0 = RS / pow(CAL_PPM / 613.9f, 1 / -2.074f);
  32.     }
  33.        
  34.     float ppm = 613.9f * pow(RS/R0, -2.074f);
  35.        
  36.     return  ppm;
  37. }


童雨竹 发表于 2024-5-16 08:10 | 显示全部楼层

只要内存占用量不超过 256.0 就可以用 small 模式编译
Wordsworth 发表于 2024-5-16 09:13 | 显示全部楼层

专门的滤波器来阻止交流噪声进入周围的电路
Clyde011 发表于 2024-5-16 10:16 | 显示全部楼层

电流型变换器电流检测电阻的公共接点和输出端电阻分压器的下端
公羊子丹 发表于 2024-5-16 11:09 | 显示全部楼层

超过变量128后必须使用compact模式编译
万图 发表于 2024-5-16 12:12 | 显示全部楼层

引线长度就决定了其响应信号的波长
Uriah 发表于 2024-5-16 13:15 | 显示全部楼层

数字电压表(DVM)或仪器来测量效率
帛灿灿 发表于 2024-5-16 15:11 | 显示全部楼层

任何一条PCB引线都可能成为天线
Bblythe 发表于 2024-5-16 16:14 | 显示全部楼层

滤波电容、功率开关管或整流器、电感或变压器
周半梅 发表于 2024-5-16 18:10 | 显示全部楼层

128以上的某些地址为特殊寄存器使用,不能给程序用
Pulitzer 发表于 2024-5-16 19:13 | 显示全部楼层

交流能量就会从输入或输出滤波电容上流进流出
您需要登录后才可以回帖 登录 | 注册

本版积分规则

109

主题

1987

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

109

主题

1987

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部