您的位置:首页 > 新闻中心

新闻中心

联系我们

米乐体育赛事

地址:浙江省乐清市北白象镇澳门中路2号
电话:

咨询热线0577-6292 9885

实例讲解单片机模拟量采集: 从硬件到程序 从滤波到实际值转换有多少人懂了?

来源:米乐体育赛事    发布时间:2023-10-24 01:56:07

  量的处理要比数字量稍显复杂,但是只要掌握了使用技巧,用起来也很简单,很多朋友一开始比较纠结于单片机的底层语言,非要先弄个明白才罢休,其实大可不必,重要的是我们要先学会怎么应用。

  如图1为28节铅酸电池的电压检测电路,1--14节组成电池组1,15--28节组成电池组2;第1节正极为BAT+,14与15节之间为BATM,第28节负极为BAT-。输入端的8个二极管的作用是钳位作用;电路计算如图所示。

  如图2为铅酸电池的充电电流检测电路,TA1为工频电流互感器,输入的4个二极管为整流二极管,电流流过R37(510Ω)形成压差△V。电路计算如图所示。

  如图4为单片机adc.c文件的底层配置,把PA5、PA6、PA7端口配置成模拟输入模式。

  如图5对以上三个模拟量进行模数转换并缓存入数组ADC_ConvertedValue[3],得到的AD值的范围是0~4096。

  如图6把以上两个配置函数整合在一起,定义成模拟量的初始化函数void ADC1_Init(void)。

  如图7在adc.h文件里声明函数void ADC1_Init(void),另外几个函数也在adc的c文件里定义的,后面附上源程序(非截图)。

  如图8在main()主函数里调用ADC1_Init()初始化函数(要去掉void),初始化函数一定要放在while(1)的前面,表示在进入while(1)无限循环前只执行一次。Analog_Processing()为模拟量处理函数,要放在while(1)无限循环里面(该函数在下面讲)。

  以下代码为模拟量处理函数:①对数组ADC_ConvertedValue[3]缓存值进行滤波处理;②对滤波后的AD值转换为实际值。

  以下代码为滤波函数,滤波函数有很多,采用合适的才是最实用的(该函数滤波后的值是连续变化的,有些滤波函数滤波后的值是跳变的)。

  使用方法如下:NewData表示最新采用的模拟量;OldData表示滤波后的模拟量。

  使用方法如下:Adc_Value表示要转换的模拟量;Pre_Adc_Min表示模拟量AD值的最小值;Pre_Adc_Max表示模拟量AD值的最大值;Pre_Act_Min表示转换后实际值的最小值;Pre_Act_Max表示转换后实际值的最大值;(以下最大实际值220表示22.0A,是因为数码管显示需要小数表示)。

  ① 模拟量的采样电路,我多采用运放的差分放大电路,原因是被测电压可以和运放不用共地,且可有效抑制共模噪声,可达到较高的精确线性测量,比如以上电池组的被测电压的误差与实际相差在0.3V左右;

  ② 电池组输入至运放的8个1M的电阻是两个为一组的,且功率至少1/4W以上,因为在高压下的电阻容易老化,为保险起见,通常一个电阻的最大压差在100V以下为宜;

  ③ 电池组分为两组检测,一是为降低元件所承受的电压,二是为了监视两组电池电压之间是不是平衡,达到保护电池目的。

  ④ 函数应功能模块化,且具备通用性质,便于移植和调用,对于很多朋友应先学会怎么样使用,底层代码只要会配置就完全足够了。

  免责声明:本文为转载文章,转载此文目的是传递更加多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理

  和工程文件合集免费下载 /

  )上 /

  信号数据的 /

  的处理要比数字量稍显复杂,但是只要掌握了使用技巧,用起来也很简单,很多朋友一开始比较纠结于

  的底层语言,非要先弄个明白才罢休,其实大可不必,重要的是我们要先学会怎么应用。

  的设计 /

  盒、IoT远程智慧监测等 产品大范围的应用于:无人机、无人船、巡检/引导/送餐/水下机器

  【RA6M3 HMI Board评测挑战】-瑞萨RA6M3上的CAN实践

  投资6000万瑞士法郎!科莱恩首个在华阻燃剂工厂投产 加速中国战略落地

  使用家用路由器实现windows ubuntu linux开发板三者互通手把手教程2-1#嵌入式开发

  【lvgl单片机项目开发】STM32 LVGL GUI演示#嵌入式开发

推荐资讯