2024年“寒假在家一起练” 基于带调试器的i.MX RT1021开发板 温湿度测量系统
基于带调试器的i.MX RT1021开发板,主要是利用底板温湿度传感器采集温度湿度,通过加热电阻使温度上升,通过旋钮调整温度设定,并显示在屏幕上,实现恒温控制功能。
标签
嵌入式系统
显示
开发板
meiyao
更新2024-04-02
70

具体功能是利用底板板卡上集成了温湿度传感器和加热电阻,通过旋钮可以方便地选择以下功能:

功能一:温湿度自动采集

板卡上的温度传感器会自动启动温湿度传感器进行数据采集。温湿度传感器NSHT30能够实时测量并获取当前的温度和湿度值。这些数值随后会根据核心板与底板经排针连接,而被传输到板卡的处理单元,用来处理温度当前的参数,便于用户可以对当前的温湿度信息,便于稳定控制。


功能二:显示

基于i.MX RT1021开发板的恒温控制系统,集成了一块高清LCD显示屏,为用户提供了直观且丰富的视觉体验。

开机时,LCD屏会首先展示精美的开机界面,随后自动切换到温湿度参数设定界面。用户可以通过旋钮轻松设定目标温度,同时,实时温度和湿度数据也会同步显示在屏幕上,方便用户随时了解当前工作状况。

除了基本的温湿度数据外,LCD屏还能实时展示温度曲线。这一功能不仅能够帮助直观地了解温度的变化趋势,还能为后续的温度调控提供重要参考。

整个系统操作简单、响应迅速,LCD显示屏的加入使得数据展示更加直观明了,极大地提升了使用体验。温度上升或者下降后,经过处理后,将结果呈现在屏幕上,也可以很明了的看清温度变化。


功能三:恒温控制功能

通过旋转编码器来调整温度的高低设定。

恒温控制机制的工作原理如下:

  • 加热电阻会根据当前温度与设定温度之间的差值来调整加热,确保板卡周围的温度逐渐接近并稳定在设定值。
  • 温湿度传感器会持续监测当前温度,并将实时数据反馈给处理单元。
  • 处理单元根据传感器反馈的温度数据,通过计算并调整加热电阻的工作状态,以实现温度的精确控制。


恒温控制整体框架:

软件逻辑图:


介绍一下硬件:

LCD屏的原理图:

image.png

LCD屏,液晶显示屏,其工作原理主要基于液晶的光学特性。液晶分子在电场的作用下会改变其排列方向,从而改变光线的透过率。LCD屏内部包含多个薄膜层,其中最重要的是液晶层和彩色滤光片。液晶层中的液晶分子在电压的作用下发生偏转,改变光线的透过性。彩色滤光片则负责将光线分解为红、绿、蓝三原色,与液晶层的像素点一一对应,形成彩色图像。

SPI(Serial Peripheral Interface)是一种串行外围设备接口,它采用主从模式进行通信。SPI接口通常包括四根信号线:串行数据输入(SDI)、串行数据输出(SDO)、串行移位时钟(SCLK)和从使能信号(CS)。主设备通过SCLK产生时钟信号,控制数据传输的速率和方向。主设备通过SDI向从设备发送数据,同时从设备通过SDO向主设备发送数据。CS信号用于选择当前与主设备通信的从设备。

在LCD屏与SPI接口的配合使用中,SPI接口可以作为LCD屏的数据传输接口。主设备(如处理器)通过SPI接口向LCD屏发送控制命令和数据,控制LCD屏的显示内容。同时,LCD屏也可以通过SPI接口返回状态信息,以便主设备进行相应的处理。

温湿度传感器:

image.png

NSHT30是一款基于CMOS-MEMS技术的温湿度传感器。它在单芯片上集成了一个完整的传感器系统,包括电容式的相对湿度传感器、COMS温度传感器和信号处理器以及I2C数字通信接口。这种集成化的设计使得NSHT30能够更广泛地集成到各种应用中。

NSHT30的性能参数表现优秀,相对湿度传感器的工作范围可以达到0%~100%,精度为±3%(典型值)。温度传感器的工作温度范围为-40℃~125℃,精度为±0.3℃(典型值)。此外,它支持I2C通信协议,通信速度高达1 MHz,并且具有两个可选地址和带有CRC校验的数据保护功能,使得传感器可以与微控制器等数字系统轻松结合使用。

NSHT30的功耗也相对较低,它在主动测量期间的平均电流消耗为5微安,在睡眠模式下小于1微安,这种低功耗特性使得它适用于电池供电的应用。同时,NSHT30的尺寸紧凑,采用了2.5mm×2.5mm×0.9mm的DFN和LGA封装,可以节省空间地集成到各种设备中。

在实际应用中,NSHT30可以用于汽车智能座舱的智能除雾、延长生鲜产品在运输和存储期间的寿命、控制室内空气的湿度和质量以及医疗设备对于气体湿度的要求等多种场景。它的高精度和低功耗特性使得这些系统能够更高效地运行,提供更可靠、更安全、更舒适的环境。



加热电路:

image.png


使用PWM(脉冲宽度调制)驱动MOS管进行加热,并结合PID(比例-积分-微分)功能,可以实现对加热过程的精确控制。下面是一个基本的实现方案:

一、PWM驱动MOS管加热

PWM信号是一种周期性的方波信号,其占空比可以通过调节高低电平的时间比例来控制。将PWM信号输入到MOS管的控制引脚上,可以控制MOS管的导通时间,从而实现对加热元件的功率控制。

当PWM信号的占空比较大时,MOS管导通时间较长,加热元件的功率较大,加热速度较快;反之,当占空比较小时,加热元件的功率较小,加热速度较慢。通过调整PWM信号的占空比,可以实现对加热温度的精确控制。

二、PID功能实现

PID控制器是一种常用的控制算法,通过对比例、积分和微分三个环节的组合,实现对被控对象的精确控制。在加热控制系统中,PID控制器可以根据设定的目标温度和实际的温度反馈,计算出相应的PWM占空比,从而实现对加热过程的精确控制。

具体实现步骤如下:

  1. 设定目标温度值。
  2. 读取实际的温度反馈值。
  3. 计算温度偏差,即目标温度与实际温度的差值。
  4. 根据PID控制算法,计算出相应的PWM占空比。
  5. 将计算出的PWM占空比输出到MOS管的控制引脚上,控制加热元件的功率。
  6. 循环执行上述步骤,直至实际温度达到或接近目标温度值。

通过PID控制器的调整,可以使加热过程更加平稳、快速且精确,避免因温度波动过大而导致的设备损坏或产品质量问题,略过。


设计过程:

利用屏幕显示00,或者01,来判断温湿度传感器的IIC功能SCL与SDA的输入。

1711638830665.jpg


代码:

	
​显示照片与温度,湿度

LCD_Fill(0,0,LCD_W,LCD_H,WHITE);

LCD_ShowPicture(0,60,28,77,gImage_2);



LCD_ShowString(30,10,"2024/03/17",BLACK,WHITE,12,0);

LCD_ShowChinese(28,70,"当",RED,WHITE,12,0);

LCD_ShowChinese(40,70,"前",RED,WHITE,12,0);

LCD_ShowChinese(52,70,"温",RED,WHITE,12,0);

LCD_ShowChinese(64,70,"度",RED,WHITE,12,0);

LCD_ShowChinese(76,70,":",BROWN,WHITE,12,0);

LCD_ShowChinese(28,110,"当",DARKBLUE,WHITE,12,0);

LCD_ShowChinese(40,110,"前",DARKBLUE,WHITE,12,0);

LCD_ShowChinese(52,110,"湿",DARKBLUE,WHITE,12,0);

LCD_ShowChinese(64,110,"度",DARKBLUE,WHITE,12,0);

LCD_ShowChinese(76,110,":",BROWN,WHITE,12,0);

显示曲线与设定温度和工作温度:
drv_lcd_coordinate_create(&coord, 2, 125); //y轴温度值为0~125

drv_lcd_draw_coordinate_with_color(&coord, -1,50, 130, 150, DARKBLUE); //绘制坐标



LCD_Draw_Plot(&Target_Temp_Data, WHITE);

LCD_Draw_Plot(&Curr_Temp_Data, WHITE);



LCD_ShowString(10,10,"settemp : ",RED,WHITE,16,0);

LCD_ShowIntNum(85,10,(u16)Target_Temp,2,RED,WHITE,16);

LCD_ShowChinese(100,10,"℃",RED,WHITE,16,0);

LCD_ShowString(10,30,"worktemp : ",BLUE,WHITE,16,0);

LCD_ShowIntNum(80,30,(u16)Curr_Temp,2,BLUE,WHITE,16);

LCD_ShowChinese(98,30,"℃",BLUE,WHITE,16,0);

​温度判断:
if((1 == GPIO_PinRead(BUTTON_SW_GPIO, BUTTON_SW_GPIO_PIN)) && (GPIO_PinRead(BUTTON_KEY_GPIO, BUTTON_KEY_GPIO_PIN)==1))

{

Target_Temp+=5;

delay();

if(Target_Temp > 80)

{

Target_Temp = 80;

delay();

}

}

else if((1 == GPIO_PinRead(BUTTON_SW_GPIO, BUTTON_SW_GPIO_PIN)) && (GPIO_PinRead(BUTTON_KEY_GPIO, BUTTON_KEY_GPIO_PIN)==0))

{

Target_Temp-=5;

delay();

if(Target_Temp < 20)

{

Target_Temp = 20;

delay();

}

}
附件下载
rt1021.zip
团队介绍
个人
评论
0 / 100
查看更多
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号