资讯详情

【M32】F103CBTx 内部温度传感器和内部参考电压采集

文章目录

  • 1.配置
  • 2.实现
  • 3.实验
  • 交流

ADC 双通道 DMA 收集内部温度和内部参考电压

1.配置

检查温度传感器通道和电压通道 在这里插入图片描述

开启连续转换模式

转换通道数为2,通道1为温度传感器通道,通道2参考电压通道 配置DMA为字数据位宽为循环传输,外设到存储器,存储器传输地址指针增加(增量值取决于所选数据宽度)

2.实现

结构体数组存储和收集值在主函数中定义

#define AVMAX 10 struct { 
           uint16_t temp;   uint16_t vref; } AdcValue[AVMAX]; 

开启采集,HAL_ADCEx_Calibration_Start一定要在HAL_ADC_Start_DMA使用前,校准收集的电压值,否则误差很大

HAL_ADCEx_Calibration_Start(&hadc1); HAL_ADC_Start_DMA(&hadc1, (uint32_t *)&AdcValue, sizeof(AdcValue) / sizeof(uint16_t)); 

计算收集电压的平均值。这里的平均值类型必须有符号数

int32_t temp = 0.0, vref = 0.0; for (uint8_t i = 0; i < AVMAX; i ) { 
           temp  = AdcValue[i].temp;   vref  = AdcValue[i].vref; } temp /= AVMAX; vref /= AVMAX; 

打印计算温度,计算公式: 温度(℃)= (当前电压值 - 25℃时间电压值)/平均斜率 25

查阅数据手册,在温度传感器特性表中获取25℃注意计算单位的电压值和平均斜率

毫伏转温度计算度计算:

printf("MCU Temperature : %.5f\r\n", ((temp * 3300.0 /  - 1410) / 4.2 + 25)); 

打印内部参考电压

printf("Vrefint value = %1.3fV \r\n", vref * 3.3f / 4096);

3.实验

✔正确操作: 通过校准后,符合实际温度数值

❌错误操作: 当注释掉校准,测量值偏差较大

当启动后校准,数值完全错误

交流

项目仓库:https://github.com/dissor/F1-Link.git

git clone https://github.com/dissor/F1-Link.git
cd F1-Link
git reset --hard aa91d96983ab290c8fb13207b22920ced71a73e5

微信公众号:物联指北 B站:物联指北 千人企鹅群:658685162

标签: ab电压传感器温度双传感器cb传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台