dxc采集(晓宇姐姐带你软硬结合)

小鱼SEO专员3年前行业资讯1094

在我们的电子设计中,经常需要对外部的模拟量进行采集,如一些传感器的输出量,电位器的旋转量等等,特别是电压电流的采集可以说是家常便饭,这些都离不开MCU最常用的外设,ADC,它可以将模拟量转换为数字量,量化后给MCU进行处理,稍微复杂一点的产品,往往需要多路模拟量采集,今天晓宇姐姐结合实际案例,跟大家一起分享一个我经常用的方案之一,通过定时器自动触发多路ADC进行电压电流的采集,并通过DMA传送数据到内存,在需要的时候,去内存读取数据并进行处理即可,小伙伴们,搞起来吧!

本次我们采集3路AD信号,一路电压,一路电流,还有一个电位器,方便观察数据。

1、首先来看电压采集跟电位器(模拟传感器信号)的采集,24V的电源电压需要分压,这两个电压都足够高,所以直接送到MCU的AD引脚即可,这里记得要并一个100nF的电容,作用是存储电荷的,ADC在快速充放电的时候,这个电容可以起到补给的作用,另外也有滤波的作用,所以这个一定要加。

2、电流的采集,这里用了一个经典的差分放大电路,放大原理就不细说了,大概就是经过运放的虚短,虚断等特性,这里方便计算,一般取R4+R5=R8+R9,R6=R10,最终的传递函数位Vout=(CURR_I - GND)* R6/(R4+R5),这里的放大倍数为10倍。

2、电流的采集,这里用了一个经典的差分放大电路,放大原理就不细说了,大概就是经过运放的虚短,虚断等特性,这里方便计算,一般取R4+R5=R8+R9,R6=R10,最终的传递函数位Vout=(CURR_I - GND)* R6/(R4+R5),这里的放大倍数为10倍。

一般情况下,在将运算放大器的输入端连接到放大器,使用“反相”或“非反相”输入端放大单个输入信号,而另一个输入端接地,也是可以的,只是只能放大一个电平,这里用差分电路展示,上图的反向输入可以接其它电压,有时候我们需要放大的电压两端电势没有一个接地的,比如我们在母线电压输入端串联一个小电阻,分别将电阻两边的电压送到差分放大器,就可以实现母线电流的采集了。

这里以STM32F051来举例说明,STM32F051包含一个分辨率为12位的ADC模块,所以采样精度能达到Vref/4096,同时具有19个ADC通道,其中16个外部采样通道和3个内部信号源。

我们一般需要配置引脚,分辨率,数据对齐,触发方式,采样方式,扫描方式等等,这里有一个规则通道跟注入通道之分,注入就是可以插队的意思,有一些时序精度要求很高的场合会用,一般场合用规则通道即可。

关于通道组,这里有一个点需要注意的是,一个通道组转换完才会进入中断,并不是单个通道,又因为MCU内部只有一个ADC_DR,所以有部分同学在开始配置多通道后发现采集的数据都不对,其实我们这样记就行了,如果是只采样一个通道,分单次转换模式跟连续转换模式(重复启动ADC),如果是规则多通道的采集,我们必须要使用扫描模式,而且,这里一定要开启DMA功能,DMA会在每个通道转换完之后,自动的把结果传到内存中。

关于DMA,大家应该都有过了解了,DMA控制器依赖于处理器内核,但DMA不影响总线传输,因为DMA控制器总是在系统总线空闲的时候使用总线。该总线实现处理器和DMA控制器之间最优化设计,使两者之间的冲突降到最低,因此传输性能得到提高。如上图所示,我们配置完DMA之后,每次数据采集完毕,DMA会自动的帮MCU把数据运送到我们指定的内存空间,这个搬运不依赖于CPU时钟,所以也算是实现了并行操作,相比在主程序中开启采集,我们的MCU可以有更多的时间去计算运行别的东西。

关于触发,我们可以选择手动触发一次ADC采集,也可以通过定时器的中断去触发,这里强调一点,如果只是利用定时器的更新事件去触发ADC,我们也没必要开启更新中断,定时器会源源不断的产生更新事件。如果选择开启,可以在中断中执行一些操作,例如通过某些参数变化情况去改变AD采集的间隔时间。

我们采集3个通道的值,分别是通道4(VOL_AD)、通道11(CURR_O)、通道14(POT_AD)

下面上代码:

1、ADC IO 配置,配置为模拟输入

2、DMA配置,配置3个通道,所以内存中定义一个结构体存储DMA搬运过来的值

3、ADC配置,配置各项参数

4、定时器配置,这里只开启通道4的下降沿触发ADC执行一次采集,想要更改采集的时间间隔更改通道4的占空比TIM1->CCR4即可。

5、DMA中断,AD采集完一组数据,进入DMA中断

6、定时器中断,可以不加,这里展示一下

7、头文件

8、主程序中,全部初始化并且开启后,只需要从内存中读取三个值就可以了,想要更改采样的间隔时间就更改定时器1中通道4的占空比值。

到这里,我们在配置好之后,基本上就不用管了,需要的时候就读取内存中数据的值就可以了,一切基本都是自动完成的,我们的主程序可以干更重要的事情。关于数据,这里只是展示一下,计算出的都是单次采集一组的值,大家可以根据自己的实际场景进行一些算法处理,如平均值采样法、递推平均值采样法等等,这里由于篇幅问题这里就不一一展开说了,关于ADC其实还有很多学问,下次再跟大家分享!

关于电子软硬件的学习,希望大家Enjoy!码字不易,喜欢点赞转发,您的支持就是我继续创作的最佳动力!

相关文章

室内湿度多少合适(室内湿度多少合适)

室内湿度达到多少最适合人居住 40%—50% 1、人体最适宜的空气相对湿度是40%—50%,因为在这个湿度范围内空气中的细菌寿命最短,人体皮肤会感到舒适,呼吸均匀正常。 2、在一定的温度下在一定...

民营医院营销(民营医院市场营销方案)

民营医院用哪个会计制度?民营医院用哪个会计制度 事业单位,具体是医院会计制度。 民营医院的会计怎么?民营医院的会计怎么样 还是可以的,不过要是想换工作的时候可能就会比较麻烦了,因为可能不好找...

情感修复的方法有哪些(情感修复的正确方法)

怎么修复感情 1、学会借力。 有时,只凭借你一个人力量,可能最终你只会觉得收效甚微,而且内心还会生出一种无力感。 2、培养共同的兴趣爱好。 在起初相处中,你们两人能走到一起,而且感情良好,是因...

透明胶痕迹怎么去除(大门上的透明胶痕迹怎么去除)

如何快速去除透明胶或双面胶留下的痕迹 透明胶痕迹:去掉 1、用橡皮擦 橡皮擦能够去掉很多痕迹透明胶的痕迹也可以试着用。但需要慢慢擦反复多次。因为橡皮擦能够擦去彩色的地方所以用在彩色的位置要慢慢擦...

大茶杯奶茶加盟(加盟一家奶茶店需要哪些条件)

现在投资奶茶店都已经众多创业者首选的项目之一了,大街小巷都已经铺满店面。毕竟奶茶是一种消费群体广阔的产品,同时价格也是比较实惠的,比较符合大众的消费水平。那么开一家奶茶店有什么条件?小黑在这里简单为大...

夏天冰箱调到几档最合适(冰箱的0(5档夏天冰箱调到几档最合适)

夏天冰箱调到几档最好啊? 冰箱常见的档位是1-6档,夏天冰箱调制2-3档比较合适。 在夏季,环境温度高,而此时箱内温度每下降1度都很困难,通过箱体保温层和门封冷量散失也会加快,这样就会出现开机时间...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。