STM32
直播中

何夏庄

8年用户 1057经验值
私信 关注
[问答]

STM32L451 ADC读出的数据不对,比用万用表测量的数据高,为什么?

使用的是STM32L451 就使用了一个通道PC0 使用的CubeMX配置的ADC通道1 发现了几个问题
1 :读出的数据不对 比用万用表测量的数据高
2 :当我使用万用表测量数据的时候同时也使用adc读数的时候 就比不加万用表读取的数值低 比如我正常读取的电压值为0.61V 但是当我设备上电读取数据时同时使用万用表读取电压时 万用表读数为0.51V ADC读数为0.35V 不知道是什么原因 理论上加不加万用表不影响ADC读取数据啊
3 :我使用的是单次读取非连续读取 当我在每次读取数据前都校准一次后 读取的数据值就会比不加校准值低 而且当我软件上 设置的读取次数增加后数值也会变化 但是我用万用表测量万用表读取的数据一直没问题
我感觉可能是我的分压电路使用的电阻是不是太大了造成的?因为我需要低功耗所以设计电路的时候没考虑输入阻抗直接用了兆级的电阻
下面是我的软件配置以及硬件电路:
hadc1.Init.ClockPrescaler = ADC_CLOCK_ASYNC_DIV1;//ʱÖÓ1·ÖƵhadc1.Init.Resolution = ADC_RESOLUTION_12B;//ÅäÖÃadcµÄ·Ö±æÂÊΪ12λhadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;//ÓÒ¶ÔÆëhadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;//²»Ê¹ÓÃɨÃèģʽhadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;hadc1.Init.LowPowerAutoWait = DISABLE;hadc1.Init.ContinuousConvMode = DISABLE;//µ¥´ÎÖ´ÐÐhadc1.Init.NbrOfConversion = 1;//¹æÔò×éת»»¸öÊýhadc1.Init.DiscontinuousConvMode = DISABLE;//²»Ê¹Óüä¶Ïģʽhadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;//´¥·¢Ô´ Èí¼þ³ö·¢hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;hadc1.Init.DMAContinuousRequests = DISABLE;hadc1.Init.Overrun = ADC_OVR_DATA_PRESERVED;//Êý¾Ý±£ÁôÐÐΪ Êý¾Ý±£Áô¶ø·Ç¸²¸Çhadc1.Init.OversamplingMode = DISABLE;if (HAL_ADC_Init( hadc1) != HAL_OK){Error_Handler();}/* Configure Regular Channel/sConfig.Channel = ADC_CHANNEL_1;sConfig.Rank = ADC_REGULAR_RANK_1;sConfig.SamplingTime = ADC_SAMPLETIME_2CYCLES_5;//²É¼¯ÖÜÆÚÑ¡ÓÃ×î´óÖÜÆÚ È·±£¾«È·¶ÈsConfig.SingleDiff = ADC_SINGLE_ENDED;sConfig.OffsetNumber = ADC_OFFSET_NONE;sConfig.Offset = 0;




回帖(1)

张宇

2024-6-3 16:37:59
根据您提供的信息,我将尝试分析可能的原因并提供解决方案。

1. 读出的数据比用万用表测量的数据高:

可能原因:
- ADC参考电压设置不正确。请检查您的STM32L451的参考电压设置是否与实际电压匹配。
- 连接问题。请确保您的ADC输入通道PC0与待测电压之间连接正确,没有接触不良或干扰。

解决方案:
- 检查并调整ADC参考电压设置。
- 检查连接线路,确保连接正确且无干扰。

2. 使用万用表测量时,ADC读数比不加万用表读取的数值低:

可能原因:
- 万用表与STM32L451之间的接地问题。当两个设备共用地线时,可能会产生接地回路,影响测量结果。
- 万用表的输入阻抗较低,可能导致待测电路的负载变化,从而影响测量结果。

解决方案:
- 确保万用表和STM32L451使用独立的地线。
- 考虑使用具有较高输入阻抗的测量设备。

3. 单次读取非连续读取,校准后读取的数据值比不加校准值低:

可能原因:
- 校准过程中可能存在误差,导致校准后的读数偏低。
- 校准参数可能不适合当前的测量环境。

解决方案:
- 仔细检查校准过程,确保校准参数正确。
- 如果可能,尝试使用自动校准功能,以减少人为误差。

综上所述,建议您首先检查ADC参考电压设置、连接线路以及校准过程。同时,确保万用表和STM32L451使用独立的地线,并考虑使用具有较高输入阻抗的测量设备。希望这些建议能帮助您解决问题。
举报

更多回帖

×
20
完善资料,
赚取积分