wsyzxxnsjz 发表于 2019-10-30 13:59:13

悬赏:内部温度传感器HAL库得到电压值,如何得到12bit数字量



cubemx +IAR。单片机型号:STM32L011K4.
hal库adc采样温度传感器的值。要求采集到的温度值,对绝对温度没有要求,必须要一个数字量(0~4096)。实际运行后得到一个电压值,室温约680.
请大神帮忙,怎么才能得到0~4096范围的温度数字量。
比较紧急,还请知道的大神们,能指点迷津。
一下是程序和截图
/* USER CODE BEGIN 0 */
unsigned int adc_v;
double adcx;
double temp;
/* USER CODE END 0 */


int main(void)
{
HAL_Init();

SystemClock_Config();

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
MX_ADC_Init();

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{

/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
                HAL_ADC_Start(&hadc);
                adc_v = HAL_ADC_GetValue(&hadc);
               
}
https://www.stmcu.org.cn/module/forum/data/attachment/forum/201910/28/164155c0iiozqoimk8o0m5.jpghttps://www.stmcu.org.cn/module/forum/data/attachment/forum/201910/28/164156tll0ky8y448882hf.jpg

radio2radio 发表于 2019-10-30 14:25:17

你这个680本身就是ADC转换出来的数据,相对于参考电压的(参考电压=4095),不知道为什么你认为他是电压值,ADC数据范围,如果不符合要求的范围,需要采用线性插值变换,参考:
https://www.stmcu.org.cn/module/forum/thread-618342-1-1.html

发表于 2019-10-30 14:52:18

HAL_ADC_GetValue读取到的确实是数字量,读取的是ADC转换后的结果寄存器。因为参考电压不同,计算电压的结果不同。不知道楼主为什么说是读取到的是电压值呢?

toofree 发表于 2019-10-30 23:53:37

以上两层楼说的对
但是这个系列的片子比较恶心。手册上说,得测出两个温度点的AD码值,然后按正比例算出当前温度。

wsyzxxnsjz 发表于 2019-10-31 08:50:09

感谢各位的回复。:)
按我贴的程序去测量温度,温度从-40℃~105℃变化时,AD值变化范围约为500~720;变化范围太小,分辨率太低。
请问怎么将将ADC的参考电压配置为 该芯片的内部参考电压(1.2V)。这样来提高采集到的温度值范围和分辨率。(硬件不允许外接电压基准,还有我不需要温度的电压值,仅需要数字量)。

发表于 2019-10-31 09:34:12

要考虑你温度传感器的电压范围,如果超过1.2V,使用1.2V的参考电压会溢出。

mylovemcu 发表于 2019-10-31 09:49:15

wsyzxxnsjz 发表于 2019-10-31 08:50
感谢各位的回复。
按我贴的程序去测量温度,温度从-40℃~105℃变化时,AD值变化范围约为500~720;变化范 ...

外部电压变化太大可以考虑采用内部1.2V基准
使用方法

内部参照电压VREFINT和ADC1_IN17相连采集通道17的AD值AD1,在采集温度的AD值AD2,那么AD2的电压值就是V=AD2*1.2/AD1根据电压值换算成温度值就可以了
如果要0-4096的变化值就是value=AD2*1.2*4096/AD1/3.3

wsyzxxnsjz 发表于 2019-10-31 09:57:35

温度传感器的是芯片的内部温度传感器,看datasheet如下图:130℃ 的电压是670mv。应该不会溢出;hal库如何配置为内部1.2V的参考电压呢?

wsyzxxnsjz 发表于 2019-10-31 10:05:52

mylovemcu 发表于 2019-10-31 09:49
外部电压变化太大可以考虑采用内部1.2V基准
使用方法



谢谢!请问只能这样,自己去采集两个通道值,去计算吗?不能像msp430一样,直接通过语句把ADC的参考电压配置为内部参考电压。然后直接读取采样结果吗?:L

mylovemcu 发表于 2019-10-31 10:17:22

wsyzxxnsjz 发表于 2019-10-31 10:05
谢谢!请问只能这样,自己去采集两个通道值,去计算吗?不能像msp430一样,直接通过语句把ADC的参考电压 ...
没用过这种操作
页: [1] 2
查看完整版本: 悬赏:内部温度传感器HAL库得到电压值,如何得到12bit数字量