0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【CW32模块使用】S12SD紫外线传感器

CW32生态社区 来源:CW32生态社区 作者:CW32生态社区 2024-12-30 11:06 次阅读

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

一、模块来源

模块实物展示:

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引脚是经过放大interwetten与威廉的赔率体系 电压后进行模拟信号输出,采集到模拟量后将其转换为电压,根据下图电压与紫外线强度对照表,则可得知紫外线强度。

wKgZO2dyDjWAL0YJAABT5g_sNtA04.webp

3.2引脚选择

wKgZPGdyDjWAeG6QAACmOLZxnX457.webp

模块接线图

3.3移植至工程

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

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

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */
#include "bsp_ultraviolet.h"
#include "stdio.h"



/******************************************************************
 * 函 数 名 称:ULTRAVIOLET_GPIO_Init
 * 函 数 说 明:UV紫外线模块引脚初始化
 * 函 数 形 参:无
 * 函 数 返 回:无
 * 作       者:LC
 * 备       注:
******************************************************************/
void ULTRAVIOLET_GPIO_Init(void)
{
    RCC_ULTRAVIOLET_GPIO_ENABLE();       // 使能GPIO时钟
    RCC_ULTRAVIOLET_ADC_ENABLE();        // 使能ADC时钟

    ANALOG_GPIO_ENABLE();        // PA05设定为模拟输入

    /* ADC配置 */
    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转换
}
/**********************************************************
 * 函 数 名 称:ADC_GET
 * 函 数 功 能:读取一次ADC值
 * 传 入 参 数:无
 * 函 数 返 回:测量到的值
 * 作       者:LCKFB
 * 备       注:
**********************************************************/
uint32_t ADC_GET(void)
{
    ADC_SoftwareStartConvCmd(ENABLE);    //启动ADC转换

    uint32_t adcValue = ADC_GetConversionValue(); // 获取数据

    return adcValue;
}
/******************************************************************
 * 函 数 名 称:Get_ADC_Value
 * 函 数 说 明:对ADC值进行平均值计算后输出
 * 函 数 形 参:num采集次数
 * 函 数 返 回:对应扫描的ADC值
 * 作       者:LC
 * 备       注:误差80mV左右
******************************************************************/
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;
}


/******************************************************************
 * 函 数 名 称:Get_Ultraviolet_Intensity
 * 函 数 说 明:判断当前紫外线强度等级
 * 函 数 形 参:value=ADC读取的值
 * 函 数 返 回:0~11 紫外线强度等级由低到高,11最高
 * 作       者:LC
 * 备       注:无
******************************************************************/
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中,编写如下代码。

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */
#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     30


void ULTRAVIOLET_GPIO_Init(void);
unsigned int Get_ADC_Value(void);
char Get_Ultraviolet_Intensity(uint16_t value);

#endif

四、移植验证

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

/*
 * Change Logs:
 * Date           Author       Notes
 * 2024-06-20     LCKFB-LP    first version
 */
#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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 传感器
    +关注

    关注

    2551

    文章

    51189

    浏览量

    754355
  • LM358
    +关注

    关注

    34

    文章

    185

    浏览量

    71790
  • 紫外线传感器

    关注

    0

    文章

    89

    浏览量

    12438
  • CW32
    +关注

    关注

    1

    文章

    210

    浏览量

    673
收藏 人收藏

    评论

    相关推荐

    有人了解紫外线传感器么?

    有几个相关问题,想请教一下高人:1.紫外线传感器是什么?2.请问目前有的紫外线传感器,其核心材料是什么,分别有什么优势呢?3.国内做紫外线
    发表于 03-12 09:51

    紫外线传感器

    有几个相关问题,想请教一下高人:1.紫外线传感器是什么?2.请问目前有的紫外线传感器,其核心材料是什么,分别有什么优势呢?3.国内做紫外线
    发表于 03-12 09:56

    紫外线传感器

    紫外线传感器定义  英文名:UV sensor/transducer 3528封装的紫外线传感器插脚式紫外线
    发表于 03-13 10:39

    “主要看品质”的紫外线传感器试用产品免费申请啦!!

    生产的 紫外线传感器 -GUVA-S12SD,GUVA-S12SD采用贴片式封装(SMD3528),特别适用于小体积的设备。传感器输出电流与
    发表于 12-18 15:00

    紫外线传感器在UV固化领域中的应用

    - GVBL-S12SD和可见光传感器 - GVGR-S11SD此类产品,此类产品均有贴片式封装和TO封装模式,也可以做成探头,高温型UV探头主要是通过光纤方式来测量紫外线强度。此类
    发表于 06-15 09:50

    皮肤杀手紫外线UVA波段领域中的传感器

    应用于监控紫外线UVA波段的紫外线传感器,首先是紫外线传感器 - GUVA-S12SD,GUVA
    发表于 11-09 09:43

    GUVA-S12SD 紫外线可见光传感器太阳光传感器韩国GenUV原厂原装

    `一、紫外线传感器 - GUVA-S12SD产品介绍:GUVA-S12SD采用贴片式封装(SMD3528),特别适用于小体积的设备。传感器
    发表于 07-06 11:02

    韩国GENICOM紫外线传感器,光电传感器,原厂代理!

    `韩国GENICOM紫外线传感器,光电传感器,纯UVA UVB UVC传感器,主要应用在UV消毒监测,火焰探测,紫外线监控等等,全新原装正品
    发表于 07-06 15:44

    GUVB-S11SD 韩国GENICOM紫外线太阳光光电紫外线传感器SMD3528

    `一、紫外线传感器 UV sensor GUVB-S11SD产品描述紫外线传感器 UV sensor GUVB-
    发表于 07-15 16:49

    GUVV-S10SD 韩国GENICOM紫外线传感器 光电二极管的应用

    一、GUVV-S10SD紫外线传感器描述GUVV-S10SD紫外线传感器芯片大小0.4mm,SM
    发表于 09-09 16:58

    韩国GENICOM 紫外线传感器

    韩国GENICOM 紫外线传感器GUVA-S12SD,采用贴片式封装(SMD3528),特别适用于小体积的设备。传感器输出电流与光照强度成正比,产品输出具有非常高的一致性。该
    发表于 09-20 09:58

    GUVA-S12SD_SMD封装UVA紫外线传感器

    GUVA-S12SD_SMD封装UVA紫外线传感器,感兴趣的朋友欢迎下载观看
    发表于 11-08 18:31 33次下载

    针对紫外线的四个波段,应用对应波段的紫外线传感器分析

    Genicom的紫外线传感器传感器的波段从200-510nm均有相对应的传感器来检测。 针对UVA波段,主要有IIC、电流、电压输出方式的传感器
    的头像 发表于 02-14 22:38 5697次阅读

    什么是紫外线传感器?它的结构分类有哪些?

    什么是紫外线传感器?它的结构分类有哪些? 紫外线传感器是一种能够测量、检测和监测紫外线辐射的电子传感器
    的头像 发表于 02-02 15:05 1261次阅读

    基于Arduino的紫外线传感器设计 紫外线传感器的工作原理和分类

    紫外线传感器,又称为紫外光敏管(简称UV管),是一种利用光电子发射效应的光电传感器。它能够通过特定的光敏元件将紫外线信号转换为可测量的电信号
    的头像 发表于 07-08 17:53 1419次阅读
    基于Arduino的<b class='flag-5'>紫外线</b><b class='flag-5'>传感器</b>设计 <b class='flag-5'>紫外线</b><b class='flag-5'>传感器</b>的工作原理和分类