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

小鱼SEO专员2年前行业资讯1078

在我们的电子设计中,经常需要对外部的模拟量进行采集,如一些传感器的输出量,电位器的旋转量等等,特别是电压电流的采集可以说是家常便饭,这些都离不开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!码字不易,喜欢点赞转发,您的支持就是我继续创作的最佳动力!

相关文章

kpi考核三大指标是啥(绩效考核KPI和OKR的区别)

什么是kpi绩效考核啊?什么是kpi绩效考核啊?我们是中小企业, 业务人员的绩效考核是每个公司的重要管理内容,CRM可随时将每位员工跟进记录、回款数据、客户满意度调查表及考勤信息转化为每月客户跟进数...

淋浴房哪个品牌好(夹胶淋浴房哪个品牌好)

淋浴房哪个牌子好? 我给你推荐恒洁卫浴的,非常安全耐用。我家用的就是恒洁卫浴磁悬静音淋浴房,当时买的时候销售人员告诉我,它的玻璃采用通过国家3C认证以及达到欧洲BS6206标准的汽车类完全钢化安全玻...

c语言小游戏代码(C语言编程练手小游戏)

《2048》是最近比较流行的一款数字游戏。原版2048首先在github上发布,原作者是Gabriele Cirulli。它是基于《1024》和《小3传奇》(Threes!)的玩法开发而成的新型数字游...

洗手盆下水管安装图解(洗手盆下水管安装图解)

洗手盆下水管怎么拆卸 到五金店购买不锈钢洗手盆落水管配件及一条约1.2米pvc软管,安装:首先拧开落水底坐不锈钢螺母,垫上橡胶密封圈直接由内至外插入洗面盆落水口处再垫上另一个密封圈拧紧不锈钢螺母,松...

basketball是什么意思(basketball是什么意思中文)

Basketballismygirlfriend是什么意?Bas 谁是我的女朋友? 请给好评谢谢 Childrenlovebasketball是什么意?Child 孩子们喜欢打篮球 P...

防脱发产品排行榜(15款防脱洗发水大测评)

(本期中等篇幅,只爱看结论的请翻到最后)当代人总是存在各种各样的焦虑,而这些焦虑会体现在你的皮肤、黑眼圈、甚至是发量上,而你又因为脱发、颜值越来越低,从而开始了新的一轮焦虑,很魔性、很恶性循环!尽管洗...

发表评论    

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