传感器介绍:
SGP30是一款单一芯片上具有多个传感元件的金属氧化物室内气体传感器,内部集成4个气体传感元件,具有完全校准的空气质量输出信号,主要是对空气质量进行检测。可以输出:TVOC(Total Volatile Organic Compounds,总挥发性有机物),量程为0~60000ppb;CO2浓度,量程400~60000ppm。

工作原理:
SGP30的传感(MEMS)部分基于金属氧化物(MOx)纳米颗粒的加热膜。气敏材料——金属氧化物颗粒上吸附的氧气与目标气体发生反应,从而释放出电子。这导致由传感器测量的金属氧化物层的电阻发生改变。简而言之,还原性气体的出现造成气敏材料表面氧浓度降低,改变了半导体的电阻(或电导率)。后续通过电路(ASIC)部分对电阻进行检测、信号处理与转换等,最终获取到气体值。

通信协议(I2C通信):
1、I2C总线介绍
I2C总线(Inter IC bus)是由Philips公司开发的一种通用数据总线。
两根通信线:SCL(Serial Clock串行时钟线)、SDA(Serial Data串行数据线)。
同步、半双工,带数据应答。
注:同步(因为它有单独的时钟线)、半双工(SDA只有一根线,并且还要来回通信)
通用的I2C总线,可以使各种设备的通信标准统一,对于厂家来说,使用成熟的方案可以缩短芯片设计周期、提高稳定性,对于应用者来说,使用通用的通信协议可以避免学习各种各样的自定义协议,降低了学习和应用的难度。
2、I2C电路规范
所有I2C设备的SCL连在一起,SDA连在一起,设备的SCL和SDA均要配置成开漏输出模式(硬件IIC)开漏输出模式——断开时引脚成浮空状态(电路断开,电压不稳定)SCL和SDA各添加一个上拉电阻,阻值一般为4.7K~10K左右,开漏输出和上拉电阻的共同作用实现了“线与”的功能,此设计主要是为了解决多机通信互相干扰的问题。

3、I2C时序结构
起始信号:SCL高电平期间,SDA从高电平切换到低电平
停止信号:SCL高电平期间,SDA从低电平切换到高电平

I2C从机地址是0X58,由于地址只用到了7bit,最高位未使用,最低位为判断是读还是写,为0是读,为1是写,所以:
对于写SGP30,地址为(0X58 << 1) = 0XB0
对于读SGP30,地址为((0X58 << 1)) | 0X01 = 0XB1
SGP30的命令都是双字节的,先发高位,有如下命令:

常用的有两个,一个是0x2003为初始化SGP30命令,另一个0x2008为获取空气质量值命令。
SGP30获取的数据格式为:2位CO2数据+1位CO2的CRC校验+2位TVOC数据+1位TVOC的CRC校验。模块上电需要15s左右初始化,在初始化阶段读取的CO2浓度为400ppm,TVOC为0ppd且恒定不变。因此上电后一直读,直到TVOC不为0并且CO2不为400,SGP30模块才初始化完成。
初始化完成后刚开始读出数据会波动比较大,属于正常现象,一段时间后会逐渐趋于稳定。气体类传感器比较容易受环境影响,测量数据出现波动是正常的,可以添加滤波函数进行滤波。
按下图将传感器与主板引脚连接
| SGP30空气传感器 | 树莓派Pico |
| VCC | 3.3v |
| GND | GND |
| SDA | GP16 |
| SCL | GP17 |

下载源代码后,上传至树莓派Pico内,直接运行代码查看结果。 可以对着传感器吹气,测试二氧化碳的浓度数值变化。如下)

| 0.96显示屏 | 树莓派Pico |
| VCC | 3.3v |
| GND | GND |
| SDA | GP14 |
| SCL | GP15 |

2.下载源代码后,将里面两个文件全部上传至树莓派Pico内,直接运行代码查看结果。 (如下)

可以对着传感器进行吹气,来测试二氧化碳的浓度数值变化。
联系人:张工
电话:0755-32914578
QQ:2251000002
微信:扫下方二维码添加,请备注来意
提供:人工智能,IOT物联网,工控数显,嵌入式软硬件开发,科创教育,产品定制,生产,方案解决...