【Microchip WBZ451 Curiosity】6.ADC和温度传感器
<div class='showpostmsg'><ol><li><strong>前言</strong><br />
本次测试的内容就放在ADC上面,将利用开发板的ADC引脚测量电压。在利用板载的模拟温度传感器,使用ADC测量其输出的模拟信号,以获得当前温度信息。</li>
<li><strong>准备</strong><br />
硬件:开发板,镊子<br />
硬件上,PB1作为了ADC通道5,引到了对外的排母接口上<br />
<br />
也就是下图板子左上角第一个<br />
<br />
软件:MPLAB X,MCC,ADC demo code</li>
<li><strong>示例测试及代码分析</strong><br />
打开如下代码<br />
<br />
同样先从main文件内的main函数看,做了系统初始化,进入主循环之后启动ADC转换,等待转换完成,获取ADC值,并通过串口打印获取的ADC值以及转换成电压的值,最后延时500mS重估以上主循环的过程。<br />
<br />
而系统初始化中,对时钟,GPIO,ADC,串口,tick timer等进行了初始化配置<br />
<br />
而本次主角的ADC初始化如下<br />
<br />
再是UART初始化,用于log信息打印,其中波特率 为115200bps<br />
<br />
最后则是sistick timer初始化,主要用于延时等。<br />
<br />
编译并下载,实际运行时,为了便于测试测试,我们采用打断点的方式,将断点打在了如下位置,没运行一次,镊子切换输入电压(VCC或GND)<br />
<br />
打开串口调试助手,可以看到开机初始化时打印了 ADC Polled Mode Demo<br />
<br />
实际测试时时,将该引脚用镊子短接到了VCC 3.3V,因此第一个打印的时电源电脑呀3.29V,然年后将其短接到GND,因此第二个打印的0.00V</li>
<li><strong>温度传感器测量</strong></li>
</ol>
<p>检测完ADC输入之后,下面我们将其改成板载的Microchip自家的MCP9700A模拟温度传感器。</p>
<p>MCP9700AT-E/TT是3引脚SOT-23封装的低功耗线性有源热敏电阻。它包括将温度转换为模拟电压的模拟温度传感器。这款低成本传感器在0℃至70℃的温度范围内具有±2℃的精度。MCP9700A不需要额外的信号调理电路。通过实现这种低成本器件,可以避免热敏电阻解决方案的偏置电路开发开销。电压输出引脚(VOUT)可以直接连接到微控制器的ADC输入,其特点特性如下:</p>
<ul>
<li>微型模拟温度传感器</li>
<li>扩展的温度范围从-40°C到125°C</li>
<li>针对模数转换器进行了优化</li>
<li>宽工作电压范围2.3V至5.5V</li>
<li>低工作电流,通常为6uA</li>
<li>传感器输出电压500mV</li>
<li>经过优化,可驱动大电容负载</li>
</ul>
<p>其模拟输出的电压和温度关系为:</p>
<p></p>
<p>其中Ta和V0的值为如下,可以看到电压的单位都是使用mV,因此后面测量和计算都使用mS为单位。</p>
<p></p>
<p>下面为其典型应用</p>
<p></p>
<p>原理图上可以看到其封装和链接设计如下</p>
<p></p>
<p>而在MCU那边则是接到了PB6引脚</p>
<p></p>
<p>查询WBZ45的手册可以看到PB6可以作为ADC的AN2输入端口。</p>
<p></p>
<p>因此,可以将前面的PB1(AN5)改成PB6(AN2)进行温度检测。</p>
<p>首先打开工程的MCC,并在Project Graph找到ADCHS点击</p>
<p></p>
<p>然后在右侧的配置选项中点开,将下面对应的地方进行相应的配置。其中特别要选择好AN2的通道及其参数。然后Generate生成代码。</p>
<p></p>
<p>修改代码,首先是参考电压,将其从3.3V改成3300mV</p>
<p></p>
<p>然后就是主函数了,首先是将通道从5改成2,即ADCHS_CH5改成ADCHS_CH2。然后计算ADC的电压并计算温度值,最终通过 串口log打印。</p>
<p></p>
<p>需要注意的是,GPIO初始化的下面两句代码,如果GPIO的PPS配置没有做的话需要还原回来。</p>
<p></p>
<p>编译下载,运行,打印的ADC值、电压值以及当前温度值。</p>
<p></p>
<ol>
<li><strong>小插曲</strong></li>
</ol>
<p>还不确定是MPLAB X的问题还是电脑的问题,每次打开MCC都是载入非常的卡,甚至几分钟的都出不来,最后不得已强行关闭。如此造成还是比较浪费时间的,体验不好。我想如果是软件问题,希望能优化优化。</p>
<p></p>
</div><script> var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;" style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
if(parseInt(discuz_uid)==0){
(function($){
var postHeight = getTextHeight(400);
$(".showpostmsg").html($(".showpostmsg").html());
$(".showpostmsg").after(loginstr);
$(".showpostmsg").css({height:postHeight,overflow:"hidden"});
})(jQuery);
} </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <p>每运行一次,镊子切换输入电压</p>
<p>高,这镊子用处挺广</p>
Jacktang 发表于 2023-8-27 21:43
每运行一次,镊子切换输入电压
高,这镊子用处挺广
<p>哈哈哈,简单粗鲁</p>
<p>大佬v5!</p>
页:
[1]