STM32驱动BH1750模块

news/2024/11/27 22:27:10/

模块描述

BH1750FVI是一款用于I2C总线接口的数字环境光传感器IC。该集成电路最适合获取环境光数据,用于调整手机的

LCD和键盘背光功率。可以在高分辨率下检测宽范围(1-65535 lx)

引脚说明

VCC5V
GNDGND
SCLPB6
SDAPB7
ADDRVCC/GND

ADDR引脚等下再说接VCC还是GND

上述引脚可以自行更改

工作模式

BH1750FVI模块共有六种工作模式:连续H-分辨率模式、连续H-分辨率模式2、连续L-分辨率模式、一次H分辨率模式、一次H分辨率模式2、一次性L分辨率模式
在这里插入图片描述
哦吼,那么多的工作模式,我们该用哪种呢,第一眼看上去是不是很懵,不用慌不用急,在

手册中建议使用 连续H-分辨率模式,那我们就接受他的建议,使用连续H-分辨率模式。
在这里插入图片描述

意思大致为:我们建议使用H分辨率模式。H分辨率模式的测量时间(积分时间)太长,以至于某些噪声(包括50Hz/60Hz噪声)被拒绝。H分辨率模式是1Lx分辨率,因此它适用于黑暗(小于10Lx)。H分辨率模式2也适用于探测黑暗 —— (翻译来自百度翻译)

读取数据流程

每个芯片都有固有的读取数据流程,下面我们来看一下bh1750模块的读取流程,以连续H-分辨率模式为例

大致流程为:通电指令 -> 工作模式指令 -> 获取数据
在这里插入图片描述

ROM指令

在这里插入图片描述

连续H-分辨率模式

时序如下:
在这里插入图片描述

总上,读取数据全过程为:
第一步:通过I2C总线,主机给bh1750设备发送数据:0x01 ——> (Power on)
第二步:通过I2C总线,主机给bh1750设备发送数据:0x10 ——> (Continuously H-resolution mode)
第三步:通过I2C总线,主机读取设备bh1750采集到的数据

代码如下

BH1750.c

/*** @brief               bh1750.c* @Date:               2022.4.20* @Revision:           V1.0* @Writer:             点灯大师* @Affiliated unit:   黄河科技学院* @Email:              im_leihao@163.com          * @note:               参考BH1750数据手册,更多驱动:https://gitee.com/zleihao/st_stm32_drive.git*/
#include "bh1750.h"/*** @brief  bh_CheckOk* @param  无* @return 0: 检测到bh1750  1:没有检测到bh1750* @note   检测总线上是否有bh1750设备 */
uint8_t bh_CheckOk()
{if(iic_check_device(BH_DEVICE_ADDR) == 0){iic_stop();return 0;}else {iic_stop();return 1;}
}/*** @brief  bh1570_Init* @param  无* @return 无* @note   设置工作模式为:连续H分辨率模式*         设置步骤为:Power on -> Continuously H-Resolution Mode*/
void bh1570_Init(void) {//power oniic_start();iic_send_byte(BH_DEVICE_ADDR);iic_wait_ack();iic_send_byte(POWER_ON);iic_wait_ack();iic_stop();//Continuously H-Resolution Modeiic_start();iic_send_byte(BH_DEVICE_ADDR);iic_wait_ack();iic_send_byte(H_RESOLUTION_MODE);iic_wait_ack();iic_stop();   //Wait to complete 1st H-resolution mode measurement.( max. 180ms. )SysTick_Delay_Ms(200);
}/*** @brief  read_result* @param  无* @return 无* @note   读取到设备bh1750采集到值*/
float read_result(void) {uint8_t msb,lsb;uint16_t dat;  float temp;iic_start();//读iic_send_byte(BH_DEVICE_ADDR | IIC_RD);iic_wait_ack();//读取高8位数据msb = iic_read_byte();iic_ack();//读取低8位数据lsb = iic_read_byte();iic_no_ack();iic_stop();SysTick_Delay_Ms(5);//合并数据dat = msb;dat = (dat << 8) | lsb;//换算比 1.2temp = (float)dat/1.2; return temp;
}

BH750.h

#ifndef _BH1750_H
#define _BH1750_H#include "bsp_iic.h"
#include "bsp_SysTick.h"//ADDR 引脚接线是否接地
#define ADDR_TO_GND #ifdef ADDR_TO_GND#define BH_DEVICE_ADDR 0x46   //ADDR引脚接地
#else#define BH_DEVICE_ADDR 0xB8   //ADDR引脚接VCC
#endif//Rom指令
#define POWER_ON           0x01
#define H_RESOLUTION_MODE  0x10uint8_t bh_CheckOk();
float   read_result(void);
void    bh1570_Init(void);#endif

主函数

#include "bsp_debug_usart.h"
#include"bsp_iic.h"
#include "bh1750.h"int main(void) {//初始化USART1USART_Config();SysTick_Init();if (bh_CheckOk() == 0) {printf("检测到bh1750设备\n");} else {printf("设备不存在,已退出\n");return 0;}//初始化bh1750bh1570_Init();while (1) {printf("%0.3f\n",read_result());//200ms读取一次SysTick_Delay_Ms(200);}}

实现现象

在这里插入图片描述

完美,收工


http://www.ppmy.cn/news/907654.html

相关文章

bh1750采集流程图_基于BH1750光照强度数据采集系统的设计

基于 BH1750 光照强度数据采集系统的设计 刘博 【摘 要】 摘 要&#xff1a;光照度传感器是一种常用的检测装置&#xff0c;在多个行业中都有一 定的应用。 BH1750 是一种用于两线式串行总线接口的数字型光强度传感器集 成电路&#xff0c;利用这种集成电路制成的传感器可以采集…

bh1750采集流程图_基于BH1750的光照度检测)报告方案.doc

成绩评定: 传感器技术 课程设计 题 目 基于BH1750光照度检测 摘要 传统的光照主要采用光敏电阻,光敏电阻的光电流与光照度之间的关系称为光电特性。光敏电阻的光电特性呈非线性,因此不适宜作检测元件,在自动控制中它常被用作丌关式光电传感器。光敏电阻需要用A/D转换器将其…

BH1750 光照传感器文档详解 及 驱动设计

前言 最近接触到一个应用&#xff0c;需要在低功耗的产品上加上光照度采集&#xff0c;正好最近有接触到一款光照传感器 BH1750 &#xff0c;性能价格都合适&#xff0c;那么今天就抽空来好好测试一下。 那么要写一篇测试文章&#xff0c;我会尽量以新手的角度从资料的获取&a…

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

前言 前面刚写了一篇 《BH1750 光照传感器文档详解 及 驱动设计》&#xff0c;今天来写一篇简单的传感器实战教学。 文章如下&#xff1a;BH1750 光照传感器文档详解 及 驱动设计 那有些朋友就疑惑了&#xff0c;在上一篇文章其实我们基本都测试成功了&#xff0c;驱动也写了…

树莓派集成BH1750光敏传感器配置

树莓派集成BH1750光敏传感器配置 我是代码小白&#xff0c;一个正在做毕设的秃头少年。鄙人拙作,有不当之处,还请指教。 今天介绍的是在树莓派上集成BH1750光照传感器并收集信息的配置过程。 1.硬件 树莓派PI3BRS GY-302 BH1750 FVI模块 2.树莓派环境 可以执行 cmake、ma…

【NLP】一项NER实体提取任务

一、说明 从文本中提取实体是一项主要的自然语言处理 (NLP) 任务。由于深度学习(DL)的最新进展使我们能够将它们用于NLP任务,并且与传统方法相比,在准确性上产生了巨大的差异。 我试图使用深度学习和传统方法从文章中提取信息。结果是惊人的,因为DL方法…

Deep Residual Learning for Image Recognition

2015-ResNet 关键词: residual connection CV论文:一般在第一页就放一个很“好看”的图 从图可以得到的结论:深的网络更难训练 ( 不仅因为过拟合,因为训练时误差都很难降低 ) 网络结构图 1*1卷积作用:改变通道数 ,提出维度匹配方法:1)补零;2)投影projection…

常用计算机储存设备有哪些,计算机的存储设备有哪些

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 计算机的存储设备有软盘、硬盘、光盘、U盘、移动硬盘。 “计算机”一般是指“电子计算机”&#xff0c;电子计算机(electronic computer)通称电脑&#xff0c;是现代一种用于高速计…