4422|5

1381

帖子

2

TA的资源

五彩晶圆(初级)

楼主
 

ROHM传感器套件测评(三): 两个模拟传感器 [复制链接]

本帖最后由 cruelfox 于 2017-4-15 15:18 编辑

前面的帖子:ROHM传感器套件测评(二): 五个I2C接口传感器
  ROHM传感器套件测评(一): 测试平台,霍尔传感器
  晒个开箱照: ROHM传感器套件
  这个套件中有两个传感器是模拟(电压输出)的,读取简单,只用电压表也能测结果。当然用带ADC的单片机是常规做法了。SensorShield要使用模拟通道,我将传感器小板接在 ANALOG_2 的插座位,模拟输出就是 ANA3 了,对应 STM32 Nucleo 上的PA4.

温度传感器 BD1210HFV

  温度传感器可以说是最多的半导体传感器了,最简单的方法用一个二极管就可以测温,不少器件的内部都集成了温度传感器作为附带功能用来作校准等用途。作为单独的一个温度传感器,需要有它的特色,才能在市场占定位置。
  ROHM这个 BD1210HFV 从精度上来看+/- 1.5度的最大误差是不如常用的 DS18B20 的,测温范围 -30~+100 也不如 DS18B20 宽。不过4uA的工作电流是它的强项,可以实现低功耗的在线测量。输出电压和温度的关系在手册中有图给出:

典型是 8.2mV/K 的温度系数,不难写ADC结果的转换公式。用 STM32 的 12-bit ADC 作采样,基准电压是 3.3V 的,传感器工作电压 3.0V,不会有量程问题。我的测试程序:
[mw_shl_code=c,false]void setup_adc(void)
{
    RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;
    __NOP();
    ADC->CCR = 0; // default: ADCPRE=0, ADC clock = PCLK/2
    ADC1->CR1 = ADC_CR1_DISCEN|ADC_CR1_EOCIE; // discontinuous mode, EOC interrupt
    ADC1->SQR3 = ADC_SQR3_SQ1&4;  // only 1st conversion in sequence, Ch 4
    ADC1->CR2 = ADC_CR2_ADON|ADC_CR2_EXTEN_0  // enable, trigger rise edge
            |ADC_CR2_EXTSEL_0|ADC_CR2_EXTSEL_1; // Timer2 CC2
}

volatile uint16_t adc_ch4;

int main(void)
{
    int i;
    gpio_config();

    uart_setup();
    uart_wstr("\r\nUSART2 initialized.");

    setup_adc();
    NVIC_EnableIRQ(ADC_IRQn);

    RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;     // enable timer 2
    __NOP();
    TIM2->PSC = 999;        // prescaler
    TIM2->ARR = 199;        // auto reload value
    TIM2->CCR2 = 100;
    TIM2->CCMR1 = TIM_CCMR1_OC2M_0|TIM_CCMR1_OC2M_1|TIM_CCMR1_OC2M_2;
    TIM2->CCER = TIM_CCER_CC2E; // must enable CC2
    TIM2->CR1 = TIM_CR1_URS|TIM_CR1_CEN;    // start counter

    while(1)
    {
        int x=0;
        for(i=0;i<32;i++)
        {
            __WFI();
            x+=adc_ch4;
        }
        double volt=x*3.3f/(32*4096);
        double degree=30-(volt-1.3)/0.0082;
        int d=round(degree*10);
        uart_wstr("\r\nTemperature (degree): ");
        uart_wdec(d/10);
        uart_wstr(".");
        uart_wdec(d%10);
    }
}

void ADC_IRQHandler(void)
{
    adc_ch4=ADC1->DR;   // reading clears flag automatically
}[/code]
  因为 STM32 ADC 的噪声大,用了32次采样结果算平均值之后再进行计算。ADC速度不成问题,我最终输出数据零点几秒钟一次。

  这是在室内的测量,考虑到ADC和Nucleo板子电压基准的误差,结果的波动完全可以接受。因为我没有标定的实验条件,就不评估这个结果的准确度了。

紫外线传感器 ML8511A

  日常防紫外线的用品是不少,测紫外线的功能却很少见到。有了它至少可以做个提醒“注意防晒”装置了。测量范围(我没概念)是 15mW/cm^2,如下图:

  把程序稍加改动就可以读数了:
[mw_shl_code=c,false]    while(1)
    {
        int x=0;
        for(i=0;i<32;i++)
        {
            __WFI();
            x+=adc_ch4;
        }
        double volt=x*3.3f/(32*4096);
        double intensity=(volt-1.0)/1.2*10;
        int i=round(intensity*100);
        if(i<0)
            i=0;
        uart_wstr("\r\nUV Intensity (mW/cm^2): ");
        uart_wdec(i/100);
        uart_wstr(".");
        if(i%100<10)
            uart_wstr("0");
        uart_wdec(i%100);
    }
[/code]
  数据输出次数和上一个程序一样。在室内,读数几乎就是0。今天外面有阳光照射,在窗口的地方有阳光射进来,于是可以做一些测试。

这是隔着窗玻璃的结果(双层玻璃,上面还有严重的擦不掉的污渍):

已经有明显的紫外线了。然后把窗推开呢?

紫外线强了几倍。有趣的是,在阳光直射下这个数字也会变,有云过来的时候明显会降低。试了下一把太阳伞,隔了伞之后降到0.3的样子。

突然想到我的墨镜了,拿出来试!


墨镜果然厉害!

此帖出自传感器论坛

最新回复

   我要积分下东西,O(∩_∩)O哈哈~  详情 回复 发表于 2017-4-26 17:46
点赞 关注
 
 

回复
举报

2万

帖子

71

TA的资源

管理员

沙发
 
图文并茂
此帖出自传感器论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 
 

回复

2774

帖子

8

TA的资源

版主

板凳
 
一般的玻璃由于含铁离子会吸收UV导至测不准,如果要测UV必须使用特制玻璃或是使用石英,像UV分光光度计配的都是石英比色皿,不能使用玻璃的,别外紫外的穿透力很弱,如果是设计使用的话要很注意!
此帖出自传感器论坛

点评

测UV必须先分光?  详情 回复 发表于 2017-4-17 16:29
 
 
 

回复

1381

帖子

2

TA的资源

五彩晶圆(初级)

4
 
strong161 发表于 2017-4-17 15:06
一般的玻璃由于含铁离子会吸收UV导至测不准,如果要测UV必须使用特制玻璃或是使用石英,像UV分光光度计配的 ...

测UV必须先分光?
此帖出自传感器论坛

点评

不是,测UV不用分光呀直接测就行了,我是说测UV不用能玻璃档。我说的UV分光光度计是测特定波长的。这个是不需要的呀!  详情 回复 发表于 2017-4-17 16:43
 
 
 

回复

2774

帖子

8

TA的资源

版主

5
 
cruelfox 发表于 2017-4-17 16:29
测UV必须先分光?

不是,测UV不用分光呀直接测就行了,我是说测UV不用能玻璃档。我说的UV分光光度计是测特定波长的。这个是不需要的呀!
此帖出自传感器论坛
 
 
 

回复

11

帖子

0

TA的资源

一粒金砂(初级)

6
 
   我要积分下东西,O(∩_∩)O哈哈~
此帖出自传感器论坛
个人签名人生无法是笑笑人家, 再让人家笑笑而已。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表