[原创] 【Microchip WBZ451 Curiosity】6.ADC和温度传感器

Tristan_C   2023-8-26 11:45 楼主
  1. 前言
    本次测试的内容就放在ADC上面,将利用开发板的ADC引脚测量电压。在利用板载的模拟温度传感器,使用ADC测量其输出的模拟信号,以获得当前温度信息。
  2. 准备
    硬件:开发板,镊子
    硬件上,PB1作为了ADC通道5,引到了对外的排母接口上
    114136ksptpt9u9fz7ppwp.png
    也就是下图板子左上角第一个
    114136loioopx299un2zin.png
    软件:MPLAB X,MCC,ADC demo code
  3. 示例测试及代码分析
    打开如下代码
    114136hw1bidbblbqe9bri.png
    同样先从main文件内的main函数看,做了系统初始化,进入主循环之后启动ADC转换,等待转换完成,获取ADC值,并通过串口打印获取的ADC值以及转换成电压的值,最后延时500mS重估以上主循环的过程。
    114136wnzg0hrbqnovvoeb.png
    而系统初始化中,对时钟,GPIO,ADC,串口,tick timer等进行了初始化配置
    114136jf6jo1f0770ok6fi.png
    而本次主角的ADC初始化如下
    114136cp3kjqnz0j1zjk10.png
    再是UART初始化,用于log信息打印,其中波特率 为115200bps
    114136hxlxptc5smjd6xmd.png
    最后则是sistick timer初始化,主要用于延时等。
    114136wzlz3hi106l96w4l.png
    编译并下载,实际运行时,为了便于测试测试,我们采用打断点的方式,将断点打在了如下位置,没运行一次,镊子切换输入电压(VCC或GND)
    114136xsl7375bg1z2dbcc.png
    打开串口调试助手,可以看到开机初始化时打印了 ADC Polled Mode Demo
    114136r2qj1ttgd41tdlpc.png
    实际测试时时,将该引脚用镊子短接到了VCC 3.3V,因此第一个打印的时电源电脑呀3.29V,然年后将其短接到GND,因此第二个打印的0.00V
  4. 温度传感器测量

检测完ADC输入之后,下面我们将其改成板载的Microchip自家的MCP9700A模拟温度传感器。

MCP9700AT-E/TT是3引脚SOT-23封装的低功耗线性有源热敏电阻。它包括将温度转换为模拟电压的模拟温度传感器。这款低成本传感器在0℃至70℃的温度范围内具有±2℃的精度。MCP9700A不需要额外的信号调理电路。通过实现这种低成本器件,可以避免热敏电阻解决方案的偏置电路开发开销。电压输出引脚(VOUT)可以直接连接到微控制器的ADC输入,其特点特性如下:

  • 微型模拟温度传感器
  • 扩展的温度范围从-40°C到125°C
  • 针对模数转换器进行了优化
  • 宽工作电压范围2.3V至5.5V
  • 低工作电流,通常为6uA
  • 传感器输出电压500mV
  • 经过优化,可驱动大电容负载

其模拟输出的电压和温度关系为:

114136fsl9d17k3llks7p7.png

其中Ta和V0的值为如下,可以看到电压的单位都是使用mV,因此后面测量和计算都使用mS为单位。

114136qndltvjdivvmll7t.png

下面为其典型应用

114136ad6tif6cntnd8dzq.png

原理图上可以看到其封装和链接设计如下

114136q01318z0ms1d1l8o.png

而在MCU那边则是接到了PB6引脚

114136eit77kx9h9tdrfar.png

查询WBZ45的手册可以看到PB6可以作为ADC的AN2输入端口。

114136ewjg2r2siujbsrqi.png

因此,可以将前面的PB1(AN5)改成PB6(AN2)进行温度检测。

首先打开工程的MCC,并在Project Graph找到ADCHS点击

114136obr033zlnrfbkfz3.png

然后在右侧的配置选项中点开,将下面对应的地方进行相应的配置。其中特别要选择好AN2的通道及其参数。然后Generate生成代码。

114136cv44smk4k2lbxezm.png

修改代码,首先是参考电压,将其从3.3V改成3300mV

114136iy4mwtliwywlz4ta.png

然后就是主函数了,首先是将通道从5改成2,即ADCHS_CH5改成ADCHS_CH2。然后计算ADC的电压并计算温度值,最终通过 串口log打印。

114136v1frzzoxx1f51oxz.png

需要注意的是,GPIO初始化的下面两句代码,如果GPIO的PPS配置没有做的话需要还原回来。

114136qb0ggcy6666m65xg.png

编译下载,运行,打印的ADC值、电压值以及当前温度值。

114136y1f75aaup5rr7ff1.png

  1. 小插曲

还不确定是MPLAB X的问题还是电脑的问题,每次打开MCC都是载入非常的卡,甚至几分钟的都出不来,最后不得已强行关闭。如此造成还是比较浪费时间的,体验不好。我想如果是软件问题,希望能优化优化。

114136vjsgs9vlvv75blal.png

回复评论 (3)

每运行一次,镊子切换输入电压

高,这镊子用处挺广

点赞  2023-8-27 21:43
引用: Jacktang 发表于 2023-8-27 21:43 每运行一次,镊子切换输入电压 高,这镊子用处挺广

哈哈哈,简单粗鲁

点赞  2023-8-27 22:51

大佬v5!

点赞  2023-9-1 23:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复