51小项目——使用proteus搭建简易的光照度计-(1)

总述

本项目基于51单片机,实现了对光敏电阻两端电压信号的简单获取,并通过数码管显示,蜂鸣器可以根据电压信号的大小发出不同间隔的声音。

注意: 由于疫情原因限制,无法返校制作实物,故本项目仅在proteus中完成了仿真,未能完成实物制作,仿真结果可能与实物结果不符

介绍

光照度计是一种专门测量照度的仪器,通俗来讲就是测量被测物体表面的光强。
本文阐述的简易光照度计作为51的练手项目,当然不能做的像市面上的那样强大,这里只对信号进行了非常简单的处理

具体指标

  1. 用两位数码管显示实时光照强度,在改变传感器参数时显示电路实时同步更新。
  2. 同时驱动一个 1KHz 音频蜂鸣器在光照强度由弱到强变化时让蜂鸣器发出不同间隔的报警音,即光照越弱声音断续节奏越慢,光照越强音频节奏越快。
  3. 整机供电电压不高于 12v。

原理部分

原理框图如下

原理简述

光敏电阻阻值随光照的增强而减小,可以使用光敏电阻来捕捉光信号,并通过信号处理电路将信号发放大到合适的范围,为了得到线性的结果,可以使用恒压偏置电路,产生线性信号,为提高灵敏度可以对信号进行适当的放大。设计要求光信号可以控制数码管显示数值和蜂鸣器改变频率,对于数码管显示,可以使用ADC转换器,将模拟信号转换为数字信号,经过51单片机处理后送入数码管,对于蜂鸣器,可以采取与数码管同样的方案。

模块设计

信号拾取模块

  1. 由于没有实物光敏电阻选取proteus中的LDR光敏原件,使用带有数值表示的LDR原件,方便得到数值类型的结果。
  2. 为了得到相对线性的结果,这里使用处理光敏电阻常用的恒压偏置电路来实现对光敏电阻信号的获取。

参考:光敏电阻调理电路

信号拾取模块连线图

原理说明

稳压管D1的稳定电压为3V,保证Q2管处于放大状态,对Q2来说:

V1=VD1=VLDR=3v V_1=V_{D1}=V_{LDR}=3v
IC=Ie=ILDR I_C=I_e=I_{LDR}
V2=V+12IcRc V_2=V_{+12}-I_c R_c

通过恒压偏置电路即可得到跟光照强度呈线性关系的电压。
C1C1为去耦电容,大小为1.5pF,D1为稳压管,稳压管的压降要大于Q2的导通电压但又不能过大,这里选择稳定电压为3V的1N4372A,根据数据手册1N4372A的最小导通电流为20mA,故R2R2的阻值应该小于等于450Ω,在测试范围1.1-10.1Lus内,LDR阻值在4K-3KΩ内变化,故RCR_C选取的10K以维持Q2的导通状态。

注意:

  1. 这里RcR_c 的10K并不是一个合适的值,我这里并不懂得如何调整,仅选取了一个比较常见的值
  2. 所使用的的三极管2SC2547是一个功放管,因为没有找到合适的管子,迫不得已使用的,实物制作可能会出问题。

信号转换模块

此模块使用常见的AD转换芯片ADC0808作为AD数据采集模块,ADC0808是一款8位8通道比较型AD转换器,易于上手,在本工程中使用IN0作为数据采集端。

信号转换模块连线图

简单说明

此处直接将ADDA、ADDB、ADDC,接地,默然选择通道IN0,不需要通过软件来调整,节省单片机的IO口资源。
使用软件来对ADC值进行采集,由于在硬件连接上ALE端和START端连接在一起,根据ADC0808数据手册描述,使能ALE为1,将地址送入地址锁存器,经地址译码器从8路通道中选择一路模拟量送到比较器,此时由于ALE与START连接在一起,START也为高电平。接下来使ALE = 0,本质是为了使START = 0,给START送入一个下降沿,adc启动转换。由于没有外置的时钟信号,故,使用单片机的P2.5口产生PWM波来驱动ADC0808工作。

AD采集软件设计

使用GetData函数接收AD数据,程序运行到此处会等待EOC变为1,当EOC变为1时,ADC转换结束,使能OE为高电平,读取数据,后将OE设为低电平。

热门文章

暂无图片
编程学习 ·

JavaScript-Promise的使用及详细解释

JavaScript-Promise的使用及详细解释案例使用多种方法实现以下案例第一种---setTimeout嵌套第二种---封装函数Promise详解小案例第三种---使用Promise来实现最开始的案例Promise---具体使用的案例第一版---点击按钮显示图片第二版---加载出第一张之后在加载其他,依次加载第三版…
暂无图片
编程学习 ·

JavaIo流看这一篇就足够了

1什么是文件? 文件可认为是相关记录或存放在一起相关数据的集合。 我们用什么去操作文件呢? 在Java当中专门有一个包Java.io.*;是内置的包,包含对文件的读和写的操作。 2File类 在Java当中使用File类来操作文件和目录。 File类的四个构造方法 File(File parent, String chil…
暂无图片
编程学习 ·

LeetCode刷题之动态规划的解题方法及相关练习

从集合的角度来考虑DP问题,用某一个数来代表一类数线性DP: 快乐的LeetCode — 53.最大子序和快乐的LeetCode — 120. 三角形最小路径和多口味LeetCode — 63. 不同路径 II多味的LeetCode — 91. 解码方法区间DP问题 多味的LeetCode — 198. 打家劫舍多味的LeetCode — 300. 最…
暂无图片
编程学习 ·

Python超轻量数据库之SQLite

欢迎关注【无量测试之道】公众号,回复【领取资源】, Python编程学习资源干货、 Python+Appium框架APP的UI自动化、 Python+Selenium框架Web的UI自动化、 Python+Unittest框架API自动化、资源和代码 免费送啦~ 文章下方有公众号二维码,可直接微信扫一扫关注即可。1、什么是 SQ…
暂无图片
编程学习 ·

MyBatis 结构拆解

MyBatis 的执行流程大概可以拆分为如下几个部分:初始化配置解析 mybatis-config.xml 文件 根据 mybatis-config.xml 文件中的配置,依次解析 Mapper.xml 文件 将 Mapper.xml 与 接口 通过 xml 文件的 namespace 属性来进行绑定**【重点】**;该篇有介绍 XML 文件和 接口进行绑…
暂无图片
编程学习 ·

数据库原理及应用教程陈志泊-第三章课后习题

一、选择题1. B 2. A 3. C 4. B 5. C 6. C7. B 8. D 9. A 10. D 11. C 12. D二、填空题1. 结构化查询语言2. 数据查询、数据定义、数据操纵、数据控制3. 外模式、模式、内模式4. 数据库、事务日志5. NULL/NOT NULL 、 UNIQUE 约束、 PRIMARY KEY 约束、 FOREIGN KEY …
暂无图片
编程学习 ·

Linux命令21天打卡

1)给文件 isTester.ini 赋予 只读权限1. 创建文件 isTester.inivi isTester.ini2. 更新文件内容为“21 day Linux Learn ,Im Idolaoxu,in shenzhen ."输入 i ,进入编辑模式,输入内容,esc进入命令模式 :wq 保存 。chmod +R isTester.ini2)给文件 isTester.ini 赋予 读…
暂无图片
编程学习 ·

[指南]-DeepFaceLab 2.0说明和教程(推荐)

DeepFaceLab 2.0指南/教程此教程机翻自:https://mrdeepfakes.com/forums/thread-guide-deepfacelab-2-0-explained-and-tutorials-recommended什么是DeepFaceLab 2.0?DeepFaceLab 2.0是利用机器学习来交换视频中人脸的工具/应用程序。1.0和2.0有什么区别?DFL 2.0有什么新功能…
暂无图片
编程学习 ·

论面向服务架构设计及其应用

在准备架构师考试过程中发现可供参考的论文范围非常少且内容陈旧给学习带来很大烦恼,通过考试后把我准备的论文共享出来水平有限但内容格式迎合考试,希望给大家一个参考。范文以“论面向服务架构设计及其应用”为题书写,希望对大家有所帮助。【摘要】2017年5月,我参加了某省…
暂无图片
编程学习 ·

企业实战--kubernetes(八)---存储(ConfigMap)

一、Configmap简介 Configmap用于保存配置数据,以键值对的形式存储 Configmap资源提供了向Pod诸如配置数据的方法 旨在让镜像和配置文件解偶,以便实现镜像的可移植性和可复用性 典型的使用场景: 填充环境变量的值 设置容器内的命令行参数 填充卷的配置文件创建Configmap的方…
暂无图片
编程学习 ·

OpenVino cmake error

问题描述:安装OpenVino后运行Demo时CMake出错When I try to run the demo, during the inference engine build, I get an error related to cmakeI installed cmake on windows. I have windows 10 OS and VS 2015. Kindly advice how I can get rid of this error and make …
暂无图片
编程学习 ·

排序算法总结

排序算法总结选择排序插入排序希尔排序归并排序自顶向下自底向上快速排序堆排序选择排序 算法流程:首先找到数组中最小的元素 将这个最小的元素与数组首位元素交换位置 在剩下的元素中找到最小的元素,并与数组第二个元素交换位置 如此往复直到整个数组排序算法分析:时间复杂度…
暂无图片
编程学习 ·

java实现ipv4和ipv6字符串地址与数字类型的转换

项目中需要将IPv4或IPv6地址转换成数字类型,或者将数字类型的ip地址转换成字符串的IPv4或IPv6地址。所以需要一个工具类,这篇文章记录一下自己使用的工具类。 IpUtil.javaimport java.math.BigInteger;public class IpUtil {/**ipv4字符串转为long**/public static long ipTo…
暂无图片
编程学习 ·

国家卫生健康委办公厅关于启用全国统一电子无偿献血证的通知

国卫办医函〔2020〕447号各省、自治区、直辖市及新疆生产建设兵团卫生健康委:为落实国务院关于加快推进“互联网+政务服务”工作要求,提升无偿献血管理能力和服务质量,为无偿献血者提供便利,我委在前期试点工作基础上,依托全国血液管理信息系统,开发了全国统一的电子《无…
暂无图片
编程学习 ·

集合HashSet原理刨解JDK1.8(6)

HashSet继承抽象类,抽象类可以实现一些默认方法,在JDK1.8没出来之前。实现Set接口和Cloneable接口。 public class HashSet<E>extends AbstractSet<E>implements Set<E>, Cloneable, java.io.Serializable {1.HashMap内部组合HashMap实现 2.PRESENT是固定的…
暂无图片
编程学习 ·

从JIT到类加载再到实现原理解式Lambda编译慢的问题二

从JIT到类加载再到实现原理解式Lambda编译慢的问题二 问题回顾 描述的话不多说,直接上图:看到输出结果了吗?为什么第一次和第二次的时间相差如此之多?咱们一起琢磨琢磨,也可以先去看看结论再回过头看分析 注:并非仅第二次快,而是除了第一次,之后的每一次都很快 给与猜想…
暂无图片
编程学习 ·

Zookeeper、Apache Dubbo

Zookeeper zookeeper概述 ZooKeeper从字面意思理解,【Zoo - 动物园,Keeper - 管理员】动物园中有很多种动物,这里的动物就可以比作分布式环境下多种多样的服务,而ZooKeeper做的就是管理这些服务。 Apache ZooKeeper的系统为分布式协调是构建分布式应用的高性能服务。 ZooKe…
暂无图片
编程学习 ·

32 变分自编码器VAE

1 Introduction 本小节主要介绍的是变分自编码器(Variational AutoEncoder),VAE 在之前的变分推断中就有介绍,具体在“随机梯度变分推断(SGVI)”中已进行描述。其中采用了重参数化技巧,也就是Amortized Inference。VAE 在很多blog 中都有详细的解释,这里只是很简单的描…