BH1750 传感器实战教学 —— 硬件设计篇

news2024/11/19 22:41:57

前言

前面刚写了一篇 《BH1750 光照传感器文档详解 及 驱动设计》,今天来写一篇简单的传感器实战教学。

文章如下:BH1750 光照传感器文档详解 及 驱动设计

那有些朋友就疑惑了,在上一篇文章其实我们基本都测试成功了,驱动也写了,还有必要在写一篇吗?

如果是用 STM32 做的一个普通产品,确实没有必要再过多说明,但是我们本次的应用稍微特殊一点,需要在一个 51 内核的低功耗无线芯片上使用这个传感器。

硬件上除了低功耗的设计不能少,I2C通讯还需要做电平转换,软件上产品的驱动也需要修改移植。

这种针对有现成驱动和参考资料的传感器实际应用,也有很多初学者不太明白,本文的目的就在于给新人做个实际应用示例,便于大家以后在对面不同应用的时候知道怎么处理。

我是 矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!
插一句,技术群在 CSDN 文章结尾后面的的推广,讨论学习。

目录

  • 前言
  • 一、整体说明
  • 二、 AD 绘制 BH1750 封装库
  • 三、 原理图设计
    • 3.1 BH1750 小板子
    • 3.2 芯片板
    • 3.3 传感器供电
      • 方式一:低静态电流 LDO
      • 方拾二:MOS 管开关
    • 3.4 传感器通讯电平转换
  • 结语

一、整体说明

我们上文提到的测试是使用市面上现成的模块,我们只需要连接 4 根线即可完成测试。 但是本次实战,我们需要了自己设计电路图,而且要针对低功耗的应用,所以有些地方有必要说明。

本次采用的无线芯片为 Enocean 芯片,其实不是很通用,国内只有极少的的公司在使用他们的技术,但是这并不影响我们说明传感器的使用。

方案已经确定为 3.6V 的电池供电,需要尽可能的低功耗,处理芯片为 51 内核,I2C 电平为 1.8V。

本次的示例方案很简单,需要用心考虑的地方如下几点:

  1. BH1750 的 供电处理;
  2. BH1750 的 通讯处理;
  3. BH1750 驱动的移植;

二、 AD 绘制 BH1750 封装库

既然是实战,而且我们的 BH1750 是新接触的,要画原理图第一步当然是先画 BH1750 的原理图和 PCB 库了(因为本次是个人学习,所以对 AD 不算侵权 )。

打开 AD ,我们可以打开自己的 库文件,如果没有自己的库文件,可以任何找一个,自己新建也可以,但是一般来说,如果要长期使用这个软件,还是建议自己有自己的一个库文件,这样也方便自己往后项目的设计:

在这里插入图片描述

根据下图进行操作,点击自己的原理图库,打开 SCH Library:

在这里插入图片描述

我们根据手册画好 BH1750 的原理图如下:

在这里插入图片描述

原理图库绘制完成我们还需要进行 PCB 封装的绘制,这时候又需要用到我们的传感器资料了, PCB 封装的设计需要参考下图:

在这里插入图片描述

我们需要用到 AD 自带的一个 封装管理工具,如下:

在这里插入图片描述

手册上面给我们的说明 BH1750 为 WSOF 封装,这里我们并没有对应的,但是我们可以选择一个合适的封装对应 SOP ,如下:

在这里插入图片描述

根据手册参数,填入适当数据,因为封装不是一致的,所以这里需要自己的判断,我填入的数据如下:

在这里插入图片描述

最后生成的封装如下,如果觉得不合适,我们还可以在此基础上微调,如下图:

在这里插入图片描述
保存 PCB 封装,最后我们把 PCB 封装和原理图关联起来:

在这里插入图片描述

最后重新加载一下我们使用的 PCB 库文件:

在这里插入图片描述

就可以在画原理图的时候使用这个封装了:

在这里插入图片描述

三、 原理图设计

原理图设计我们这里考虑的点上面已经说了,因为整体方案是简单的单品传感器,主要注意如何能够保证低功耗。

3.1 BH1750 小板子

考虑到光照传感器的性质(产品设计中外壳是不得不考虑的一个问题):测量光照需要外壳透光,所以对一般的外壳来说,PCB的布局会是一个问题。

为了把这个问题简化,我们本次的示例计划把光照传感器单独做一块小板子,小板子的好处是更容易的适应各种外壳。

这里我们用到我们在手册中我们看过的参考电路了,直接使用推荐电路图即可,如下图:

在这里插入图片描述

使用小板子的好处是,以后即便不用这个芯片,这个小板子还是可以直接使用的。

3.2 芯片板

芯片板子,就是上面提到的我使用的 Enocean 芯片,一个最小系统,这里因为某些原因就 不放出原理图,但是也不会影响我们说明问题,因为芯片出来与传感器连接 的也只有 2 根线, SDA 和 SCL 。

供电是很简答的:

在这里插入图片描述

3.3 传感器供电

传感器供电问题是本文重点之一,本次方案供电为 3.6V 的电池供电,我们在资料中知道,传感器电压最大是可以达到 3.6V 的:

在这里插入图片描述

所以其实我们这里可以直接使用电池过来的电源。

但是这里我们要注意一个问题,传感器一直供电是有消耗的。一般低功耗的传感器大部分情况下是处于休眠状态,传感器并不需要一直工作者。我们可以使用一个简单的电路切断传感器的电源。

当然我们通过手册知道,BH1750 传感器在 Powerdown Current 模式下面的电流很低,最大才只有 1uA 的电流消耗,如下图:

在这里插入图片描述

1uA 的电流消耗其实算是很小了,因为我所用的芯片最小系统随眠模式的电流 大概是 5、6uA,但是这里写了一个条件, No input Light ,就是没光照的情况,但是我们传感器很多情况下,即便有光照我们也不需要他工作,所以这里电源控制电路是加定了。

电源控制电路怎么选,这里我不废话,直接推荐两种方式:

方式一:低静态电流 LDO

使用超低静态电流低压降线性稳压器控制 传感器的 电源,EN 引脚为供电开关引脚,如下图:

在这里插入图片描述

注意,此电路控制选用需要保证静态电路越低越好,因为 LDO 一直通电,他自己也有能量消耗。 但是这个电路的好处是可以提供稳定的电源,有些传感器的耐压值只有 3.3V ,甚至是 3.0V (使用 TPS78230),需要 LDO 降压。

方拾二:MOS 管开关

通过 MOS 管开关,可以直接切断传感器的供电,而且消耗极低,考虑到我们的 BH1750 传感器可以支持 3.6 V 的供电,我们本次采取这种方式 :

注意,开关电路是由 一个 PMOS 和一个 NMOS 构成的!

在这里插入图片描述

而且还有一点,此方法成本低。

3.4 传感器通讯电平转换

传感器通讯,在《BH1750 光照传感器文档详解 及 驱动设计》文章中,我提到过,使用 STM32 的时候, BH1750 都不需要做电平转换, SDA 和 SCL 可以直接和 STM32 的 IO 口连接。

但是在我们本次设计中,使用的芯片 I2C 引脚电平为 1.8V,就是下图中的 DVDD 为1.8V的电平,所以需要电平转换,如下图:

在这里插入图片描述

电平转换电路的说明可参考我的另外一篇博文:结合实际聊聊电平转换电路(常用电平转换电路总结)

图中预留了两个端子(其实两个接口不相同),一个是为了接收头现成的传感器模块方便测试,另外一个就是给我们自己设计的传感器模块预留的。

这种预留的测试在实际产品的设计中是很有用的,再产品设计初版的时候,如果产品出问题,可以更快的查出问题所在。

至此,加上芯片最小系统,我们的一个低功耗的传感器就设计完成。

结语

本文我们通过一个简单的示例,手把手的说明了一个传感器的实际应用电路设计。

虽然简单,但是有一些细节还是值得新人们注意和学习。

本文作为实际的设计应用,把硬件设计部分给大家说清楚了,但是我们在单片机上移植 I2C 程序,还需要我们花一些时间,还是老样子,下一篇博文,会来更新 BH1750 传感器在单片机上的驱动移植篇。

本文就到这里,谢谢大家! 另外,别忘了下面可以加我的技术群哦!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/515.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现代操作系统原理与实现

突然更新,为了水一个1024徽章拿随书笔记来发发(嘿嘿 原文链接:https://github.com/yanyanran/YBlog/blob/main/%E7%8E%B0%E4%BB%A3%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%8E%9F%E7%90%86%E4%B8%8E%E5%AE%9E%E7%8E%B0.md 一、操作系统结构…

【网络安全篇】JavaSript基础内容大全

🏆今日学习目标: 🍀学习JavaSript基础 ✅创作者:贤鱼 ⏰预计时间:30分钟 🎉个人主页:贤鱼的个人主页 🔥专栏系列:网络安全 JavaSript基础大全🍀java和JavaSri…

[C]带你了解C语言是如何操作文件的

文章目录一、认识文件1.1 为什么要使用文件1.2 什么是文件1.3 文件名1.4 文件指针1.5 文件的打开和关闭二、文件的顺序读写2.1 fgetc和fputc2.2 fgets和fputs2.3 fscanf和fprintf2.4 fread和fwrite2.5 对比一组函数三、文件的随机读写3.1 fseek3.2 ftell3.3 rewind四、文本文件…

高云FPGA系列教程(5):ARM点灯工程设计

文章目录[toc]1. ARM核定制2. ARM核程序设计3. ARM程序烧写4. 工程下载本文是高云FPGA系列教程的第5篇文章。 前面几篇笔记都是介绍的高云GW1NSR-4C FPGA部分的使用,本篇文章介绍片上ARM Cortex-M3硬核处理器的使用,演示如何定制一颗ARM处理器硬件&#…

大数据电信客服-数据采集/消费(二)

目录 一、数据采集/消费(存储) 二、数据采集 三、数据消费 四、编写代码 在project-ct.pom 在ct.consume下 在ct.consumer.bean 在ct.consumer.dao 在ct-consumer的resources 在ct-common.pom 在ct.common.api 在ct.common.bean 在ct.common.constant 在ct-common的…

LQ0123 小朋友崇拜圈【DFS】

题目来源:蓝桥杯2018初赛 C C组G题 题目描述 班里N个小朋友,每个人都有自己最崇拜的一个小朋友(也可以是自己)。 在一个游戏中,需要小朋友坐一个圈, 每个小朋友都有自己最崇拜的小朋友在他的右手边。 求满…

vue06安装vue-cli+使用vue-cli搭建项目+什么是*.vue文件+开发示例+必问面试知识点

目录 1. vue-cli安装 1.1 安装前提 1.2 什么是vue-cli 1.3 安装vue-cli 2. 使用vue-cli构建项目 2.1 使用脚手架创建项目骨架 2.2 到新建项目目录,安装需要的模块 2.3 如何修改端口号 2.4 添加element-ui模块 2.5 package.json详解 3. install命令中的-g…

腾讯云~ zookeeper集群安装、配置、验证

文章目录一、 预备工作1. 下载2. 解压3. 创建目录4. myid 文件5. 验证6. 效果图二、配置管理2.1. zoo1.cfg2.2. zoo2.cfg2.3. zoo3.cfg2.4. 防火墙2.5. 启动zk2.6. 运行状态一、 预备工作 1. 下载 cd /app wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.12/…

GitLab API 的使用教程

1 简介 GitLab 作为一个开源、强大的分布式版本控制系统,已经成为互联网公司、软件开发公司的主流版本管理工具。使用过 GitLab 的都知道,想要提交一段代码,可以通过 git push 提交到远程仓库,也可以直接在 GitLab 平台上修改提交…

基于华为云IOT平台实现多节点温度采集(STM32+NBIOT)

一、前言 当前的场景是,在高速公路上部署温度采集设备,在高速路地表安装温度检测传感器,检测当前路段的路面实际温度。一段高速路上有多个地点需要采集温度数据。 采集温度数据需要上传到云平台进行数据存储,并且通过可视化界面展…

七万字整理SpringCloud + CloudAlibaba知识点总结笔记

各位小伙伴们大家好,欢迎来到这个小扎扎的spring cloud专栏,在这个系列专栏中我对B站尚硅谷阳哥的spring cloud教程进行一个总结,鉴于 看到就是学到、学到就是赚到 精神,这波依然是血赚 ┗|`O′|┛ SpringCloud Clou…

Linux文件系统inode的作用

目录 前言 简介 inode与block 1、查看文件的inode信息 2、查看分区中的inode节点数 前言 前面学习了磁盘管理中的磁盘分区,以及逻辑卷,交换分区的创建,这篇文章将介绍一下我们在分区以及格式化时候用到的ext4文件系统,本盘文…

【云原生之Docker实战】使用Docker部署ShowDoc文档工具

【云原生之Docker实战】使用Docker部署ShowDoc文档工具一、ShowDoc介绍1.ShowDoc简介2.ShowDoc功能二、检查docker版本三、检查docker状态四、下载ShowDoc镜像五、创建ShowDoc容器1.创建数据目录2目录授权3.运行ShowDoc容器4.查看ShowDoc容器状态5.查看容器运行日志六、ShowDoc…

【精通Java篇 | IO流】详讲字节流与常用方法

个人名片: 🐼作者简介:一名大二在校生,喜欢编程🎋 🐻‍❄️个人主页🥇:小新爱学习. 🐼个人WeChat:hmmwx53 🕊️系列专栏:&#x1f5bc…

Java流式编程stream

文章目录一、简介二、创建Stream三、常用操作四、其他操作一、简介 流式 API 从 Java8 开始引入,支持链式书写。 流只能消费一次,不能被两次消费(两次最终操作) 流在管道中流通,在节点被处理。 流【无存储】&#x…

vim如何进行批量化注释及取消,也在1024表明自己算十分之一的程序员

前言 👻作者:龟龟不断向前 👻简介:宁愿做一只不停跑的慢乌龟,也不想当一只三分钟热度的兔子。 👻专栏:C初阶知识点 👻工具分享: 刷题: 牛客网 leetcode笔记软…

人家网站都免费了,你还用Python去爬?

文章目录⛳️ 实战场景⛳️ 实战编码⛳️ 实战场景 这次实战的目标是一个叫做猫肯的字体站点,该站点所有的字体都是免费可商用的,所以为什么还要去下载呢? 答案是练手,借免费站点学习爬虫,🌋 目标站点地址…

Python爬虫技术系列-05字符验证码识别

Python爬虫技术系列-05字符验证码识别1. 光学文字识别1.1 OCR概述1.2 OCR识别库Tesseract下载安装1.3 生成验证码图片1.4 字符验证码识别1.安装python识别验证码库:2.验证码识别:1.5 使用打码平台识别验证码1.6 滑动验证码识别1. 光学文字识别 1.1 OCR概…

卡尔曼滤波实例——预测橘子的轨迹

目录 流程 一、采用轮廓的方式检测橘子位置 (一)滚动条获取阈值 (二)获取到图像中的包围橘子对应的白色图形的最小矩形框的信息 二、获取橘子检测框的质心 三、将质心送入卡尔曼滤波器,获取下一次的质心位置 四…

Markdown语言的简单学习

Markdown简单语法标题#空格 一级标题##空格 二级标题 以此类推三级标题四级...五级.....引用列表代码块表格分隔线链接强调语法(斜体、加粗、下划线)标题 #空格 一级标题 ##空格 二级标题 以此类推 三级标题 四级… 五级… … 引用 这是一段引用 …