STM32应用实例十四:利用光敏二极管实现光度测量
最近我们在开发臭氧发生器时,需要监测生成的臭氧的浓度,于是想到使用光度计来测量。因为不同浓度的臭氧对管的吸收作用是不相同的,于是检测光照强度的变化就可以得到相应的浓度数据。
1、硬件设计
此次光照度检测我们选用了S1336-5BQ光电点二极管,其光谱响应范围为:190~1100nm范围。而我们的光源波长则在254nm最显著,包括其它600nm以内的光波,这个好处于测量范围之内。
根据相关的资料,光电点二极管S1336-5BQ的每100lx的光照对应有5μA的电流。于是我们可以据此设计一个电路,将电流的变化改变为电压变化,具体原理图设计如下:
上图中我们采用5V电源,为了检测方便调零,我们将基准电压上抬到2.5V(图中的Vmid)。这样我们根据测量范围的要求将R5的值更换为精确的值就好了,让输出范围在2.5V到5V之间。这样我们就可以将其作为输入信号接入到ADC中。在ADC前端加一些必要的保护就可以了,具体如下图所示:
上图知识对输入信号做了保护,如果需要也可以放大缩小等处理,从而符合ADC输入的要求。
2、软件设计
前面我们描述了硬件电路,该电路在要求不高时是非常方便的。接下来我们根据上述电路来分析并设计软件。根据上面的电炉我们可以得出输出电压的变化公式为:Vout=Isc*R5+Vmid。
而Vmid正好为Vcc的一半,Vout可以通过ADC测量出来,于是公式就可以变化为:Isc=(Vout-Vcc/2)/R5。
而对于该光电二极管的特性是5μA/100lx,于是计算得到光照强度,公式可修改为:光照强度lux=((Vout-Vcc/2)/R5)*2*107。据此公式来编写软件就非常容易了。
欢迎关注:
STM32应用实例十四:利用光敏二极管实现光度测量的更多相关文章
- C语言库函数大全及应用实例十四
原文:C语言库函数大全及应用实例十四 [编程资料]C语言库函数大全及应用实例十四 函数名: strset 功 能: 将一个串 ...
- 【转】机器学习教程 十四-利用tensorflow做手写数字识别
模式识别领域应用机器学习的场景非常多,手写识别就是其中一种,最简单的数字识别是一个多类分类问题,我们借这个多类分类问题来介绍一下google最新开源的tensorflow框架,后面深度学习的内容都会基 ...
- STM32应用实例十:简析STM32 I2C通讯死锁问题
I2C接口是一种使用非常普遍的MCU与外部设备的接口方式,在STM32中也集成了I2C接口,我们也常常使用它来与外围的传感器等设备通讯. 最近在我们使用STM32F1VET6读取压力和温湿度传感器数据 ...
- STM32应用实例十五:STM32的ADC通道间干扰的问题
最近我们在开发一个项目时,用到了MCU自带的ADC,在调试过程中发现通道之间村在相互干扰的问题.以前其实也用过好几次,但要求都不高所以没有太关注,此次因为物理量的量程较大,所以看到了变化. 首先来说明 ...
- python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例
python3.4学习笔记(十四) 网络爬虫实例代码,抓取新浪爱彩双色球开奖数据实例 新浪爱彩双色球开奖数据URL:http://zst.aicai.com/ssq/openInfo/ 最终输出结果格 ...
- 风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击
风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击 XSS钓鱼攻击 HTTP Basic Authentication认证 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候 ...
- J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP
J2EE进阶(十四)超详细的Java后台开发面试题之Spring IOC与AOP 前言 搜狐畅游笔试题中有一道问答题涉及到回答谈谈对Spring IOC与AOP的理解.特将相关内容进行整理. ...
- 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 十四 ║ VUE 计划书 & 我的前后端开发简史
---新内容开始--- 番外 大家周一好呀,又是元气满满的一个周一呀!感谢大家在周一这个着急改Bug的黄金时期,抽出时间来看我的博文哈哈哈,时间真快,已经到第十四篇博文了,也很顺顺(跌跌)利利 (撞撞 ...
- 只需十四步:从零开始掌握 Python 机器学习(附资源)
分享一篇来自机器之心的文章.关于机器学习的起步,讲的还是很清楚的.原文链接在:只需十四步:从零开始掌握Python机器学习(附资源) Python 可以说是现在最流行的机器学习语言,而且你也能在网上找 ...
随机推荐
- 三十八、Linux 线程——线程属性初始化、销毁、设置和获得分离属性
38.1 线程属性初始化和销毁 #include <pthread.h> int pthread_attr_init(pthread_attr_t *attr); int pthread_ ...
- mysql插入记录INSERT与多表更新
1.第一种:INSERT [INTO] tbl_name[ (col_name, ... ) ] {VALUES | VALUE}({expr |default}, ... ), (...), .. ...
- Linux之Ubuntu下DSL拨号上网
可视化桌面配置方法 1.编辑连接 2.选择 增加 3.选择 DSL 4.选择 新建连接[cmcc@gx属于移动校园用户的ISP指定后缀] 6.OK 当然,还有其他拨号上网的办法: [Linux/Ubu ...
- 基于Django框架对MongoDB实现增删改查
在上一篇中,咱们已经实现了Scrapy框架爬取数据,并且存储到Mongodb数据库, 接下来呢,,,,,,,,,,,,, 咱们就要对这些数据进行操作. 目标:从Mongodb数据库取出数据,通过Dja ...
- Django REST Framework API Guide 03
本节大纲 1.Routers 2.Parsers 3.Renderers Routers Usage from rest_framework import routers router = route ...
- Java8新特性(待更新...)
一.Lambda表达式 二.接口的默认方法与静态方法 三.方法引用 四.重复注解 五.扩展注解的支持 六.Optional 七.Stream 八.Date/Time API (JSR 310) 九.J ...
- redis-LinkedList
1.redis-LinkedList[重点] Java List : 数组ArrayList 链表LinkedList 为什么redis选取了链表? Redis操作中,最多的操作是进行元素的增删 使 ...
- javascript编程基础1
1,javascript能干什么? 直接写入html中: <script> document.write("<h1>这是一级标题</h1>") ...
- Linux下安装PCRE
原文链接:https://www.linuxidc.com/Linux/2015-03/114986.htm PCRE(Perl Compatible Regular Expressions)是一个轻 ...
- 两个类似的ViewModel一个可以重写事件,另一个不能重写事件,是哪里出了错。
答:继承错了,BaseViewModel里面是事件.