搜索
bottom↓
回复: 0

《ESP32-S3使用指南—MicroPython版 V1.0》第二十三章 内部温度传感器

[复制链接]

出0入234汤圆

发表于 昨天 11:45 | 显示全部楼层 |阅读模式
本帖最后由 正点原子 于 2024-8-26 11:45 编辑

2.jpg
1)实验平台:正点原子ESP32S3开发板
2)购买链接:https://detail.tmall.com/item.htm?id=768499342659
3)全套实验源码+手册+视频下载地址:http://www.openedv.com/thread-347618-1-1.html
4)正点原子官方B站:https://space.bilibili.com/394620890
5)正点原子手把手教你学ESP32S3快速入门视频教程:https://www.bilibili.com/video/BV1sH4y1W7Tc
6)正点原子FPGA交流群:132780729
1.png
3.png


第二十三章 内部温度传感器实验


       本章,我们将介绍ESP32-S3的内部温度传感器并使用它来读取温度值,然后在LCD模块上显示出来。
       本章分为如下几个小节:
       23.1 内部温度传感器简介
       23.2 sensor模块
       23.2 硬件设计
       23.3 程序设计
       23.4 下载验证

       23.1 内部温度传感器简介
       温度传感器生成一个随温度变化的电压。内部ADC将传感器电压转化为一个数字量。温度传感器的测量范围为–20°C 到110°C。温度传感器适用于监测芯片内部温度的变化,该温度值会随着微控制器时钟频率或IO负载的变化而变化。一般来讲,芯片内部温度会高于外部温度。ESP32-S3温度传感器相关内容,请看《esp32-s3_technical_reference_manual_cn.pdf》技术手册39.4章节。
       温度传感器的输出值需要使用转换公式转换成实际的温度值 (°C)。转换公式如下:

T(°C) = 0.4386 * VALUE –27.88 * offset –20.52

       其中 VALUE 即温度传感器的输出值,offset 由温度偏移决定。温度传感器在不同的实际使用环境(测量温度范围)下,温度偏移不同,见下表所示。

1.png
表23.1.1 温度传感器的温度偏移

       23.2 sensor模块
       sensor驱动程序(sensor.c/.h)可以在以下路径中找到:A盘6,软件资料1,软件2,MicroPython开发工具01-Windows2,正点原子MicroPython驱动CModules_LibSENSOR。作者对该模块的函数和使用进行了详细解释。如果读者不了解这个程序的编写流程,请重新阅读第七章的内容。

       1,sensor类的构造方法
       sensor的构造对象方法如下:
  1. class sensor.init()
  2. 使用示例:sensor.init()
复制代码
       返回值:无。

       2,sensor模块的方法

       ①:读取ESP32-S3内部温度。
       其函数原型如下:
  1. sensor.sensor_read()
复制代码
       返回值:返回内部温度。

       23.3 硬件设计

       1. 例程功能
       本章实验功能简介:通过ADC的通道读取ESP32-S3内部温度传感器的电压值,并将其转换为温度值,显示在SPILCD屏上。

       2. 硬件资源

       1)XL9555
              IIC_INT-IO0(需在P5连接IO0)
              IIC_SDA-IO41
              IIC_SCL-IO42

       2)SPILCD
              CS-IO21
              SCK-IO12
              SDA-IO11
              DC-IO40(在P5端口,使用跳线帽将IO_SET和LCD_DC相连)
              PWR- IO1_3(XL9555)
              RST- IO1_2(XL9555)

       3)内部温度传感器

       3. 原理图
       本章实验使用的ADC为ESP32-S3的片上资源,因此并没有相应的连接原理图。

       23.4 程序设计

       23.4.1 程序流程图
       程序流程图能帮助我们更好的理解一个工程的功能和实现的过程,对学习和设计工程有很好的主导作用。下面看看本实验的程序流程图。

第二十三章 内部温度传感器实验1383.png
图23.4.1.1 程序流程图

       23.4.2 程序解析
       本书籍的代码都在main.py脚本下编写的,读者可在光盘资料下找到对应的源码。内部温度传感器实验main.py源码如下:
  1. from machine import Pin,SPI,I2C
  2. import atk_xl9555 as io_ex
  3. import atk_lcd as lcd
  4. import atk_sensor as sensor
  5. import time

  6. """
  7. * @brief       程序入口
  8. * @param       无
  9. * @retval      无
  10. """
  11. if __name__ == '__main__':
  12.    
  13.     # IIC初始化
  14.     i2c0 = I2C(0, scl = Pin(42), sda = Pin(41), freq = 400000)
  15.     # XL9555初始化
  16.     xl9555 = io_ex.init(i2c0)
  17.     # 复位LCD
  18.     xl9555.write_bit(io_ex.SLCD_RST,0)
  19.     time.sleep_ms(100)
  20.     xl9555.write_bit(io_ex.SLCD_RST,1)
  21.     time.sleep_ms(100)
  22.     # 初始化SPI
  23.     spi = SPI(2,baudrate = 80000000, sck = Pin(12), mosi=Pin(11), miso=Pin(13))
  24.     # 初始化LCD,lcd = 0为正点原子2.4寸屏幕;lcd = 1为正点原子1.3寸SPILCD屏幕;
  25. display = lcd.init(spi,dc = Pin(40,Pin.OUT,Pin.PULL_UP,value = 1),
  26. cs = Pin(21,Pin.OUT,Pin.PULL_UP,value = 1),dir = 1,lcd = 0)
  27.     xl9555.write_bit(io_ex.SLCD_PWR,1)
  28.     time.sleep_ms(100)
  29.     # 实验信息
  30.     display.string(30, 50, 240, 16, 16, "ESP32-S3",lcd.RED)
  31.     display.string(30, 70, 240, 16, 16, "Temperature TEST",lcd.RED)
  32.     display.string(30, 90, 240, 16, 16, "ATOM@ALIENTEK",lcd.RED)
  33.     display.string(30, 120, 200, 16, 16, "TEMPERATE: 00.00C", lcd.RED)
  34.     # 初始化内部温度传感器
  35.     sensor.init()
  36.       
  37.     while True:
  38.         
  39.         umber = float(sensor.sensor_read())
  40.         display.num(30 + 11 * 8,120,int(umber),2,16,lcd.BLUE)
  41.         display.num(30 + 14 * 8,120,int(umber * 100 % 100),2,16,lcd.BLUE)
  42.         time.sleep_ms(500)
复制代码
       main函数代码比较简单,主要是通过sensor.sensor_read函数读取ESP32-S3内部温度值,最后在SPILCD上显示。

       23.5 下载验证
       将程序下载到开发板后,LCD显示的内容如下图所示:

第二十三章 内部温度传感器实验2971.png
图23.5.1 内部温度传感器实验测试图

       大家可以看看你的温度值与实际是否相符合(因为芯片会发热,所以一般会比实际温度偏高)?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 01:24

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表