STM32—ADC和DMA的应用之电流检测(第二部分:电流检测电路与数据处理)

这篇具有很好参考价值的文章主要介绍了STM32—ADC和DMA的应用之电流检测(第二部分:电流检测电路与数据处理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

前一部分介绍了如何配置ADC和DMA,这一部分介绍在硬件部分如何实现电流检测以及检测到电流后的数据处理。


一、电流检测原理

1.霍尔效应

在半导体上外加与电流方向垂直的磁场,会使得半导体中的电子与空穴受到不同方向的洛伦兹力而在不同方向上聚集,在聚集起来的电子与空穴之间会产生电场,电场力与洛伦兹力产生平衡之后,不再聚集,此时电场将会使后来的电子和空穴受到电场力的作用而平衡掉磁场对其产生的洛伦兹力,使得后来的电子和空穴能顺利通过不会偏移,这个现象称为霍尔效应。而产生的内建电压称为霍尔电压。

2.CC6902电流传感器

CC6902 内部集成了一颗高精度,低噪声的线性霍尔电路和一根低阻抗的主电流导线。当采样电流流经主电流导线,其产生的磁场在霍尔电路上感应出相应的电信号,经过信号处理电路输出电压信号,使得产品更易于使用。线性霍尔电路包含了高灵敏度霍尔传感器,霍尔信号预放大器,高精度的霍尔温度补偿单元,振荡器,动态失调消除电路和放大器输出模块。在无磁场的情况下,静态输出为 50%VCC。
stm32霍尔测电流,嵌入式,硬件,stm32,单片机,嵌入式硬件

名称 编号 功能
IP+ 1、2 采样电流正端
IP- 3、4 样电流负端
GND 5
OUT 6 信号输出端
NC 7 未连接
VCC 8 电源电压

二、电流检测电路

stm32霍尔测电流,嵌入式,硬件,stm32,单片机,嵌入式硬件
首先VCC接5V的电压供电,GND脚接地,要检测的电流通过IP+引脚流入电流传感器,从IP-引脚流出,电流大小转化为电压大小从OUT脚输出。经过电阻的分压进入运放,运放起到增强驱动能力以及滤波和隔离的作用,其他电容作用为滤除干扰。最后AD-CUR节点接入单片机GPIO引脚。
这里选择的电流传感器型号为CC6902-30,检测电流的范围为-30~30A,灵敏度为0.067mv/A,静态输出电压为VCC/2(V)。检测电流与输出电压的关系为:VOUT(V) = VCC (V)/ 2 + 0.067 × IP(A)。当检测的电流为20A时,VOUT为3.84V.通过运放前的电阻分压,AD_CUR的电压为1.28V。

三、数据处理

在理想情况下,电流值不变,VOUT电压值就不变,但是电路中往往存在各种各样的干扰,使得单片机读到的电压值有波动。这时候我们要多采集几次数据,然后取平均数,这样数据就会更加稳定。
多ADC通道求平均值示例代码如下:
首先定义ADC_ConvertedValue二维数组变量,TIMES为采样次数,AD_CHANNEL 为通道数。
然后在Get_Adc_Average函数中获得某一通道读取ADC值的平均数,Get_Adc_Average函数中变量ch为需要求平均数的通道,变量ADC_CHANNL为总通道数,变量ADCCon_Value为ch通道每一次读到的数值,ADC_Buf存放平均值。

extern volatile uint16_t ADC_ConvertedValue[TIMES][AD_CHANNEL];
void Get_Adc_Average(uint16_t *ADCCon_Value, uint8_t ADC_CHANNL, uint8_t ch, uint16_t *ADC_Buf)
{
	uint8_t  i, j;
	uint8_t times;
	uint16_t filter_temp;	
	
	uint16_t filter_buf[TIMES];

	filter_sum = 0;
	//排序
	for (i = 0; i < TIMES; i++)
	{	//这里获取某一通道每一次检测的ADC数值
		filter_buf[i] = *(ADCCon_Value+i*ADC_CHANNL+ch);//这里获取某一通道每一次采样的ADC数值。相当于获取二维数组某一列全部的值。
	}
	
	for (j = 0; j < TIMES - 1; j++)
	{
		for (i = 0; i < TIMES - 1 - j; i++)
		{
			if (filter_buf[i] > filter_buf[i + 1])
			{
				filter_temp = filter_buf[i];
				filter_buf[i] = filter_buf[i + 1];
				filter_buf[i + 1] = filter_temp;
			}
		}
	}
	//去掉最大和最小各两个值取平均数
	for(times = 2; times < TIMES-2; times++)
	{
		filter_sum += filter_buf[times];
	}
	
	ADC_Buf[ch] = filter_sum / (TIMES-4);
}

可以使用以下代码调用Get_Adc_Average函数文章来源地址https://www.toymoban.com/news/detail-808589.html

for(ch1 = 0; ch1 < AD_CHANNEL; ch1++)
	{
		Get_Adc_Average((uint16_t *)ADC_ConvertedValue, AD_CHANNEL, ch1, ADC1_Ave_Val);
	}

到了这里,关于STM32—ADC和DMA的应用之电流检测(第二部分:电流检测电路与数据处理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32 ADC采集 DMA中断处理

    //============================================ //函数名称:ADC1_Mode_Config(void) //功能描述:配置ADC1的工作模式为MDA模式 //输入:无 //输出:无 //============================================ void ADC1_Mode_Config(void) {         DMA_InitTypeDef DMA_InitStructure;         ADC_InitTypeDef ADC_InitStructure;              

    2024年02月14日
    浏览(47)
  • STM32Cubemx——ADC采集+DMA传输

    STM32F407VE核心板 STM32Cubemx 版本 6.0.1 Keil 版本 5.31 杜邦线 ST-Link 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 VBAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。ADC 的结果存储在一个左

    2023年04月24日
    浏览(57)
  • STM32 ADC+定时器+DMA+FFT

    本次实现的功能为单片机DAC输出一个正弦波,然后ADC定时采样用DMA输出,最后对DAC输出的波形进行FFT。 单片机STM32F103ZET6 内部时钟 一、配置ADC ADC端口为PA1,采用DMA输出,定时器3触发 定时器时钟64M,分频后为102.4KHz ADC采样时间为102.4KHz/100=1.024KHz 二、配置DAC DAC端口PA4 DMA传输

    2024年02月13日
    浏览(42)
  • 【STM32】- 定时器+DMA+ADC 双重模式

    目录   1 前言 2 ADC介绍 2.1 多重工作模式 2.2 多重ADC框图 2.3 规则同时模式 3 程序设计 3.1 时序图 3.2 初始化流程图 3.3 初始化代码 4 结论        关于ADC,相信大家都比较了解,关于STM32的学习教程都会有所讲解,但以查询方式、单通道讲解的较多,主要告诉大家基本的原理。

    2024年02月10日
    浏览(54)
  • STM32 ADC单/多通道采样+DMA搬运

    通过介绍我们可以了解到,ADC是12位的转换器,所以采样值范围是0~4095。18个通道可同时进行转换,也可以单独转换某个通道。 使用ADC的流程应为: 初始化IO口。 我这里使用的是PA1进行采样,也就是ADC1的通道1 初始化ADC。 转换、获取采样值。 多通道的时候我们一般用DMA来搬

    2024年02月14日
    浏览(48)
  • 【STM32】BLDC驱动&控制开发笔记 | 10_基于STM32F407+DRV8323的ADC电流采集

    在上一篇文章的基础上继续努力!👇 🧀【STM32】BLDC驱动控制开发笔记 | 09_基于STM32F407的ADC电压采集,多通道ADC+DMA+USART_CSDN博客@F菌的进阶之路 在实现电机闭环控制的实验程序中,通过ADC功能来实现电压或电流的采集十分重要。一般来说,为了获得更高的精度,会在直接通过

    2024年04月17日
    浏览(41)
  • STM32-单通道ADC采集(DMA读取)实验

    关于ADC的一些原理和实验我们已经有了2篇笔记,链接如下: 关于ADC的笔记1_Mr_rustylake的博客-CSDN博客 STM32-ADC单通道采集实验_Mr_rustylake的博客-CSDN博客 实验要求:通过ADC1通道1(PA1)采集电位器的电压,并显示ADC转换的数字量和换算后的电压值。 我们通过下表可以知道DMA1通道

    2024年02月16日
    浏览(50)
  • STM32CubeMX系列05——ADC(轮询、中断、DMA)

    ==== 文章汇总(有代码汇总) ==== 正点原子Mini板,主控 STM32F103RCT6. 用到的外设: 串口1(PA9、PA10) 任意几个GPIO口(这里用PA1、PA2、PA3,对应ADC通道1、2、3)。 配置时钟源 配置debug模式(如果需要ST-Link下载及调试可以勾选) 配置时钟树(可以直接在HCLK那里输入72,然后敲回

    2024年02月10日
    浏览(42)
  • STM32CubeMX配置ADC采样(轮询、中断、DMA)

    STM32CubeMX能够极大减小STM32外设配置的工作量,因此作者也借助空闲时间对STM32CubeMX相关配置进行了学习,本文介绍如何利用STM32CubeMX配置ADC采样,记录了作者学习过程中遇到的问题及解决办法,使大家少走弯路,并方便以后复习 先选择所使用的MCU,这里我使用的是STM32F407ZGT系

    2024年02月03日
    浏览(51)
  • STM32F103C8T6 ADC输入电流电压特性

    ADC 输入电压范围:0-VDDA(0-3.3V) 输入电流范围:0-220µA 输入电阻:50kΩ 采样频率:0.6-14MHz   官方STM32C103C8系列数据手册: https://www.st.com/en/microcontrollers-microprocessors/stm32f103c8.html

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包