CW32模块使用:S12SD紫外线传感器与SGP30气体传感器

时间:2025-08-01  作者:Diven  阅读:0

此紫外线检测模块采用氮化家基材料的肖特基光电二极管,具有高的响应度和低的暗电流,板载LM358放大器对光电二极管输出的微弱信号进行放大,所有元器件采用1%精度元器件制造。应用于紫外线测试仪,紫外线手表,户外运动设备,手机移动电话等。

CW32模块使用:S12SD紫外线传感器与SGP30气体传感器

一、模块来源

模块实物展示:

wKgZO2dyDjSAdCM9AAAiSPh2t3E29.webp


资料下载链接:
https://pan.baidu.com/s/1YuwoCsbiJPaYH-8TaHEwVg
资料提取码:8888

二、规格参数

工作电压:2.7-5V

工作电流:1mA

测量角度:130度

温飘:0.08%/℃

检测波长范围:240nm~370nm

输出方式: ADC

管脚数量:3 Pin

以上信息见厂家资料文件

三、移植过程

我们的目标是将例程移植至CW32F030C8T6开发板上【能够测量紫外线强度】。首先要获取资料,查看数据手册应如何实现读取数据,再移植至我们的工程。

3.1查看资料

wKgZPGdyDjWAVnnUAAA-wh-GOp000.webp

电路图中,SIG引脚是经过放大模拟电压后进行模拟信号输出,采集到模拟量后将其转换为电压,根据下图电压与紫外线强度对照表,则可得知紫外线强度。

wKgZO2dyDjWAL0YJAABT5g_sNtA04.webp

3.2引脚选择

wKgZPGdyDjWAeG6QAACmOLZxnX457.webp

模块接线图

3.3移植至工程

移植步骤中的导入.c和.h文件与【CW32模块使用】DHT11温湿度传感器 相同,只是将.c和.h文件更改为bsp_ultraviolet.c与bsp_ultraviolet.h。这里不再过多讲述,移植完成后面修改相关代码。

在文件bsp_ultraviolet.c中,编写如下代码。

#include "bsp_ultraviolet.h"#include "stdio.h"void ULTRAVIOLET_GPIO_Init(void){ RCC_ULTRAVIOLET_GPIO_ENABLE(); // 使能GPIO时钟 RCC_ULTRAVIOLET_ADC_ENABLE(); // 使能ADC时钟 ANALOG_GPIO_ENABLE(); // PA05设定为模拟输入 ADC_InitTypeDef ADC_InitStructure; // ADC初始化结构体 ADC_WdtTypeDef ADC_WdtStructure; // ADC看门狗结构体 ADC_SingleChTypeDef ADC_SingleChStructure; // ADC单通道转换结构体 // 配置ADC初始化结构体 ADC_InitStructure.ADC_OpMode = ADC_SingleChOneMode; //单通道单次转换模式 ADC_InitStructure.ADC_ClkDiv = ADC_Clk_Div4; // 时钟频率 = PCLK / 4 = 64MHz / 4 = 16MHz ADC_InitStructure.ADC_SampleTime = ADC_SampTime5Clk; //5个ADC时钟周期 ADC_InitStructure.ADC_VrefSel = ADC_Vref_VDDA; //VDDA参考电压 ADC_InitStructure.ADC_InBufEn = ADC_BufDisable; //关闭跟随器 ADC_InitStructure.ADC_TsEn = ADC_TsDisable; //关闭内置温度传感器 ADC_InitStructure.ADC_DMAEn = ADC_DmaDisable; //不触发DMA ADC_InitStructure.ADC_Align = ADC_AlignRight; //ADC转换结果右对齐 ADC_InitStructure.ADC_AccEn = ADC_AccDisable; //转换结果累加不使能 //ADC模拟看门狗通道初始化 ADC_WdtInit(&ADC_WdtStructure); //配置单通道转换模式 ADC_SingleChStructure.ADC_DiscardEn = ADC_DiscardNull; // 单通道ADC转换结果溢出保存 ADC_SingleChStructure.ADC_Chmux = CHANNEL_ULTRAVIOLET_ADC; // 选择ADC转换通道,AIN5:PA05 ADC_SingleChStructure.ADC_InitStruct = ADC_InitStructure; // ADC初始化结构体 ADC_SingleChStructure.ADC_WdtStruct = ADC_WdtStructure; // ADC看门狗结构体 ADC_SingleChOneModeCfg(&ADC_SingleChStructure); // 初始化配置 ADC_Enable(); //ADC使能 ADC_SoftwareStartConvCmd(ENABLE); //启动ADC转换}uint32_t ADC_GET(void){ ADC_SoftwareStartConvCmd(ENABLE); //启动ADC转换 uint32_t adcValue = ADC_GetConversionValue(); // 获取数据 return adcValue;}unsigned int Get_ADC_Value( void ){ uint32_t Data = 0; for(int i = 0; i < SAMPLES; i++) { Data += ADC_GET(); } Data = Data / SAMPLES; return Data;}char Get_Ultraviolet_Intensity(uint16_t value){ char ret = 0; if( value < 227 )//紫外线强度0级    {        ret = 0;    }    if( value >= 227 && value < 318 )//紫外线强度1级    {        ret = 1;    }    if( value >= 318 && value < 408 )//紫外线强度2级    {        ret = 2;    }    if( value >= 408 && value < 503 )//紫外线强度3级    {        ret = 3;    }    if( value >= 503 && value < 606 )//紫外线强度4级    {        ret = 4;    }    if( value >= 606 && value < 696 )//紫外线强度5级    {        ret = 5;    }    if( value >= 696 && value < 795 )//紫外线强度6级    {        ret = 6;    }    if( value >= 795 && value < 881 )//紫外线强度7级    {        ret = 7;    }    if( value >= 881 && value < 976 )//紫外线强度8级    {        ret = 8;    }    if( value >= 976 && value < 1079 )//紫外线强度9级    {        ret = 9;    }    if( value >= 1079 && value < 1170 )//紫外线强度10级    {        ret = 10;    }    if( value >= 1170 )//紫外线强度11级 { ret = 11; } return ret;}

在文件bsp_ultraviolet.h中,编写如下代码。

#ifndef _BSP_ULTRAVIOLET_H_#define _BSP_ULTRAVIOLET_H_#include "board.h"#define RCC_ULTRAVIOLET_GPIO_ENABLE() __RCC_GPIOA_CLK_ENABLE()#define RCC_ULTRAVIOLET_ADC_ENABLE() __RCC_ADC_CLK_ENABLE()#define ANALOG_GPIO_ENABLE() PA05_ANALOG_ENABLE()#define CHANNEL_ULTRAVIOLET_ADC ADC_ExInputCH5//采样次数#define SAMPLES 30void ULTRAVIOLET_GPIO_Init(void);unsigned int Get_ADC_Value(void);char Get_Ultraviolet_Intensity(uint16_t value);#endif

四、移植验证

在自己工程中的main主函数中,编写如下。

#include "board.h"#include "stdio.h"#include "bsp_uart.h"#include "bsp_ultraviolet.h"int32_t main(void){ uint16_t value = 0; board_init(); uart1_init(115200U); ULTRAVIOLET_GPIO_Init(); printf("IRtracking demo startrn"); while(1) { value = Get_ADC_Value(); //串口显示紫外线强度 printf("grade = %drn", Get_Ultraviolet_Intensity( value ) ); delay_ms(1000); }}

移植现象:测量室内紫外线强度为0级。

wKgZO2dyDjaATEvkAAB49sko5Xs09.webp

模块移植成功案例代码:

链接:https://pan.baidu.com/s/1wmC7OwwJk2LB0tdP0Zx0GA?pwd=LCKF

提取码:LCKF

猜您喜欢

当今电子产品日益小型化和高性能化的趋势下,封装技术的选择显得尤为重要。QFN(QuadFlatNo-lead)封装因其独特的结构和优越的性能,成为电子行业中广泛...
2025-02-24 16:07:17


贴片电阻上的1R5表示其阻值为1.5欧姆。字母R在这里代替小数点,是贴片电阻上常用的标识方法。 这种表示法是为了避免小数点在印刷或表面贴装过程中难以辨认或丢失,...
2024-11-29 10:25:57

贴片电阻阻值「100」代表100欧姆(Ω),这是一个常见的电阻值。欧姆是电阻的单位,表示电阻器对电流的阻碍程度。阻值越大,对电流的阻碍作用就越强。100Ω的贴片...
2024-11-26 11:29:49

开关二极管是特殊类型的二极管,应用于电子电路中。主要功能是实现电流的单向导通,通常用于开关电路中。由于其快速的开关速度和良好的导通特性,开关二极管在现代电子设备...
2025-04-02 19:00:03

隔离式I2C是在工业自动化和电子设备中应用的通信协议,其主要优势体现在以下几个方面。隔离式I2C能够有效防止电气干扰,确保数据传输的稳定性和可靠性。在复杂的工业...
2023-10-19 00:00:00

现代工业和消费市场中,配件的选择对于产品的性能和用户体验具有重要影响。本文将深入探讨“Accessories_15.84X9.5MM_TM”这一特定配件的特点、...
2025-03-04 21:52:09

双电源转换开关是重要的电力设备,应用于各种工业和商业场所。其主要优势体现在以下几个方面:双电源转换开关能够实现电源的自动切换,确保在主电源故障时,备用电源能够迅...
2021-10-21 00:00:00

在现代社会,安保设备的选择非常重要,不同设备的参数直接影响其效果和适用场景。监控摄像头的分辨率是关键参数,通常以1080P或4K为标准,分辨率越高,画面越清晰,...
2017-06-28 00:00:00

贴片电阻上的12X并不是直接表示阻值,而是采用一种特殊的编码方式。这种编码通常是三位或四位数字字母组合,需要查阅相应的贴片电阻阻值对照表才能确定其具体的阻值。1...
2024-11-29 10:26:22