998|5

1510

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

[ ST NUCLEO-U575ZI-Q 测评]+ 光照强度检测及记录 [复制链接]

对于环境监测记录仪,它涉及温度、湿度、光强、气压等的检测,这里仅以光照强度检测为例加以介绍。

进行光照强度的检测所用的传感器为BH1750,是一种I2C接口的器件,它与开发板的连接关系为:

SCL---PA5

SDA---PA6

为输出高低电平所做的语句定义为:

#define SCL_Set()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1)

#define SCL_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0)

 

#define SDA_Set()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1)

#define SDA_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0)

 

其读取数据的语句定义为:

#define IIC_SDA_IN HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6)

 

为转换数据引脚的工作模式,所配置的工作模式设置函数为:

void IIC_INPUT_MODE_SET()
{
	__HAL_RCC_GPIOA_CLK_ENABLE();
	GPIO_InitStruct.Pin = GPIO_PIN_6;
	GPIO_InitStruct.Mode  = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull  = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

void IIC_OUTPUT_MODE_SET()
{
	__HAL_RCC_GPIOA_CLK_ENABLE();
	GPIO_InitStruct.Pin = GPIO_PIN_6;
	GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull  = GPIO_PULLUP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}

为实现检测数据的更新显示及波形的绘制,其读取光照强度的函数为:

void Get_Sunlight_Value()
{
    int dis_data=0;
    float temp;
    char i=0;
    unsigned int sd;
    Single_Write_BH1750(0x01);
    Single_Write_BH1750(0x10);
    Delay_us(100);
    Multiple_Read_BH1750();
    for(i=0;i<3;i++)    dis_data=BUF[0];
    dis_data=(dis_data<<8)+BUF[1];
    temp=(float)dis_data/1.2;
    sd=temp;
    if(sd > 999)
		{
	          zz[8] = sd%10000/1000+'0';
			  zx[9] =zz[8];
		}
		else
		{
	    	  zz[8] = ' ';
			  zx[9] ='0';
		}
	    if(sd > 99)
		{
	          zz[9] = sd%1000/100+'0';
	          zx[10] =zz[9];
		}
		else
        {
		      zz[9] = ' ';
			  zx[10] ='0';
		}
		if(sd > 9)
		{
			zz[10] = sd%100/10+'0';
	        zx[11] =zz[10];
		}
		else
		{
		    zz[10] =' ';
		}
	    zz[11] = sd%10+'0';
	    zx[12] =zz[11];
	    HAL_UART_Transmit(&huart2, (uint8_t *)zz,16, 100);
}

为使检测结果的输出与RTC的时间刷新同步,其RTC显示函数的内容为:

static void RTC_TimeShow(uint8_t *showtime)
{
	RTC_DateTypeDef sdatestructureget;
    RTC_TimeTypeDef stimestructureget;
    HAL_RTC_GetTime(&hrtc, &stimestructureget, RTC_FORMAT_BIN);
    HAL_RTC_GetDate(&hrtc, &sdatestructureget, RTC_FORMAT_BIN);
	if(p!=stimestructureget.Seconds)
	{
		zl[8]=stimestructureget.Hours/10+'0';
	    zl[9]=stimestructureget.Hours%10+'0';
		zl[11]=stimestructureget.Minutes/10+'0';
	    zl[12]=stimestructureget.Minutes%10+'0';
		zl[14]=stimestructureget.Seconds/10+'0';
	    zl[15]=stimestructureget.Seconds%10+'0';
	    p=stimestructureget.Seconds;
	    HAL_UART_Transmit(&huart2, (uint8_t *)zl,20, 100);
	    Get_Sunlight_Value();
	    HAL_UART_Transmit(&huart2, (uint8_t *)zx,16, 100);
	}
}

在上述函数的配合下,光照强度检测的显示效果如图1所示。

图1 显示效果

 

由于环境监测记录仪不但要处理温度、湿度、光强、气压的检测、显示及波形绘制,还要涉及到数据的记录问题。为减轻其处理工作量,是将数据记录工作交由串口记录模块来完成的,记录的数据由串口发送到记录模块即可完成文件的记录处理,其记录的数据形式如图2所示。

图2 记录形式

 

 

此帖出自RF/无线论坛

最新回复

老师测一测精度和GR&R呗~  详情 回复 发表于 2023-1-13 07:49
点赞 关注
 

回复
举报

6960

帖子

11

TA的资源

版主

沙发
 

由于环境监测记录仪不但要处理温度、湿度、光强、气压的检测、显示及波形绘制,还要涉及到数据的记录问题。为减轻其处理工作量,是将数据记录工作交由串口记录模块来完成的,记录的数据由串口发送到记录模块即可完成文件的记录处理,其记录的数据形式如图2所示。

老师的分享太好了!

此帖出自RF/无线论坛

点评

哈哈,这样就基本全面了。  详情 回复 发表于 2023-1-11 11:02
 
 

回复

1510

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
lugl4313820 发表于 2023-1-11 08:58 由于环境监测记录仪不但要处理温度、湿度、光强、气压的检测、显示及波形绘制,还要涉及到数据的记录问题。 ...

哈哈,这样就基本全面了。

此帖出自RF/无线论坛
 
 
 

回复

1万

帖子

2853

TA的资源

管理员

4
 

测评汇总:免费申请|ST NUCLEO-U575ZI-Q https://bbs.eeworld.com.cn/thread-1228653-1-1.html

此帖出自RF/无线论坛
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

4908

帖子

19

TA的资源

版主

5
 

老师测一测精度和GR&R呗~

此帖出自RF/无线论坛

点评

有机会的话找个项目试试  详情 回复 发表于 2023-1-13 10:59
 
 
 

回复

1510

帖子

1

TA的资源

五彩晶圆(初级)

6
 
吾妻思萌 发表于 2023-1-13 07:49 老师测一测精度和GR&R呗~

有机会的话找个项目试试

此帖出自RF/无线论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表