[STM32F1] STM32F103+CubeMX+ADC采集直流

[复制链接]
4223|65
 楼主| 4y1b3 发表于 2023-7-28 16:40 | 显示全部楼层
 楼主| 4y1b3 发表于 2023-7-28 16:40 | 显示全部楼层
接着书写单次采集程序


HAL_ADCEx_Calibration_Start(&hadc1);   //ADC校准

HAL_ADC_Start(&hadc1);                 //启动ADC转换
  HAL_ADC_PollForConversion(&hadc1, 50); //等待ADC1转换完毕,这里最多等待50ms
  ADC_Value = HAL_ADC_GetValue(&hadc1);  //获取ADC的值,结果存放在ADC_Value里面
  printf("ADC value is %d\n", ADC_Value);
  printf("ADC actural value is %.2f\n", ADC_Value * 3.3 / 4095);
 楼主| 4y1b3 发表于 2023-7-28 16:40 | 显示全部楼层
硬件连接
6107664c37f18357c7.png
 楼主| 4y1b3 发表于 2023-7-28 16:41 | 显示全部楼层
示例工程里,我加入了UART的初始化以及对应的串口重定向和DEBUG功能。
9857464c37f27567c7.png
 楼主| 4y1b3 发表于 2023-7-28 16:41 | 显示全部楼层
 楼主| 4y1b3 发表于 2023-7-28 16:41 | 显示全部楼层
 楼主| 4y1b3 发表于 2023-7-28 16:42 | 显示全部楼层
运行结果
烧录代码后如果没有设置下载后自动复位,记得给单片机硬件复位
8819364c37f594c1b1.png
 楼主| 4y1b3 发表于 2023-7-28 16:42 | 显示全部楼层
ADC返回给单片机的数值是4095,我们转换到实际的电压值,对应着
9617964c37f67c9ebf.png
 楼主| 4y1b3 发表于 2023-7-28 16:42 | 显示全部楼层
练习
我们知道ADC精度有限,实际采集到的直流值会有波动,尝试使用取均值来提高测量精度,。对比10个数取平均,和1000个数取平均,测到的直流值之间的差别。

加深对均值滤波和精度的概念
 楼主| 4y1b3 发表于 2023-7-28 16:42 | 显示全部楼层
如果你会定时器中断,尝试配合定时器中断实现一个100hz采样率的采样,也就是定义一个100hz的定时器中断,在每一次中断里面采集一次数据,这样去测量1hz的正弦信号,当测满100个点后,把数据打印出来,查看波形。

对采样率有一定的理解
 楼主| 4y1b3 发表于 2023-7-28 16:42 | 显示全部楼层
在练习2的基础上,将采样率从100hz提高到1k,在提高到10k,观察效果。如果发现采样率比实际的低,思考为什么。答案会在后续采集交流的文章中揭晓。

对中断方式控制的采样率上限有一定的感受。对处理的速度有一定的概念,做了这个练习,相信你在学习采集交流部分的DMA操作,会有比别人更加深刻的感悟,领略硬件的速度与软件的灵活。
youtome 发表于 2023-9-9 17:21 | 显示全部楼层
在选择转换精度时,应根据所需的测量精度和系统性能来平衡。
mollylawrence 发表于 2023-9-9 17:51 | 显示全部楼层
在使用ADC之前,需要先进行初始化,包括设置ADC模式、初始化ADC参数、设置ADC中断等。
minzisc 发表于 2023-9-9 18:13 | 显示全部楼层
通过STM32向ADC发送采样命令,可以使用简单的算法,如按照一定的采样频率采样,或者使用更复杂的算法,如使用缓存和同步等方式实现。
timfordlare 发表于 2023-9-9 20:43 | 显示全部楼层
通过DMA模式,ADC可以直接将采样结果传输到内存中,而不需要通过CPU的干预。在配置DMA模式时,应考虑DMA通道的数量、优先级和触发方式等因素。
maqianqu 发表于 2023-9-9 21:19 | 显示全部楼层
在进行模拟输入的数据滤波时,需要注意滤波器的截止频率、滤波器的类型等参数。这将有助于减少输入信号的噪声,提高数据质量。
ccook11 发表于 2023-9-9 22:12 | 显示全部楼层
stm32f103rct6的adc有多少通道
juliestephen 发表于 2023-9-9 22:34 | 显示全部楼层
在进行ADC直流采集时,应选择合适的参考电压。
Henryko 发表于 2023-9-10 23:14 | 显示全部楼层
ccook11 发表于 2023-9-9 22:12
stm32f103rct6的adc有多少通道

18个
10299823 发表于 2023-9-12 15:57 | 显示全部楼层
最简单的方法就是用两个阻值相等分压
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部