使用单片机和电流互感器对非正弦周期电流有效值测定

前言:使用单片机加电流互感器测量交流电路的电流,是非常常见的手段。最简单的方案就是直接使用采样电阻,整流滤波,再进入MCU的ADC进行转换,再通过软件滤波得到一个代表着电流大小的数值。对于电流保护功能来说,这是行之有效的方法,只需要测量出电流在保护阈值情况下,MCU计算出数值即可。
对于采集正弦交流电流有效值,也可以使用峰值检波法,通过采集峰值电压的方法,再进行计算,也可得到。
而对于非正弦周期交流电流,想使用电流互感器采集其有效值,变得不那么简单了。

下面介绍一下我使用的一种高速采样的方法来进行有效值测定。

一、首先是理论分析

在这里插入图片描述
这是一个非正弦周期交流电流图形。我们想要得到它的有效值。根据有效值定义:

当交流电通过一个电阻时,如果在一定的周期内产生的热量与某个直流电在相同时间内通过同一电阻产生的热量相等,那么这个直流电的大小就被定义为交流电的有效值。

直流电流I通过电阻R,经过时间t产生的热量为:
在这里插入图片描述
根据微积分的思想,将交流电流进行分割得到了无数时刻的瞬时电流i(t),计算其通过电阻R产生的热量,在进行积分。得到一个周期内产生的热量为:
在这里插入图片描述
离散化处理后得到近似的计算公式:
在这里插入图片描述
根据有效值定义,将二者相等
在这里插入图片描述
换算后得到:
在这里插入图片描述
其实这也就是均方根值,其中

t=N*△t
i(n)代表着第n次采集到的电流值,N是采样的总次数,△t是采样间隔

t可以是信号整周期,也可以选择半周期(因为正负半周对称),N的数量越多则△t越小,精度越高,但是计算量也越大。
在这里插入图片描述

二、接下来是电路上的处理

1、通过电流互感器及采样电阻将电流信号转换为电压信号
在这里插入图片描述

2、经过精密整流电路将交流电压信号整流成直流
3、进行幅值运算放大,选取适当的放大倍数可以大幅减少后续计算量
在这里插入图片描述

4、经缓冲器进入单片机,对信号进行高速采样
在这里插入图片描述
因为高速采样最好使用DSP芯片,但是在产品方案中往往使用的还是单片机,最好使用带DMA的芯片,这样不会过多占用CPU的资源。并且计算过程中需要大量的32位平方运算,以及浮点运算。可以权衡一下精度与计算资源,选择恰当的采样数量。

三、软件处理

经过电路的处理,之前的公式也会相应做出变化
设电流互感器电流比为1:β
流过采样电阻电流i
采样电阻压降v
电路放大倍数为α
采样电阻RL
进入单片机ADC的电压为VADC=α*v

电流有效值:
在这里插入图片描述
其中
在这里插入图片描述

由于一下子处理N个数的平方和,再进行除法及开方运算,势必会造成程序阻塞,所以如果没有操作系统,裸奔情况下,只能一次处理少量数据,然后利用主循环进行多次数据处理,直至所有数据平方和结束,再进行取平均及开方运算。事实证明,这种方案是可行的。我所使用的芯片是没有DMA的,只能通过TIMER中断进行数据采集。好在产品功能并不复杂,完全可以应付过来。
另外在处理平方计算时,是选择浮点数平方还是32位变量平方,我曾经纠结了挺长时间,最后还是使用TIMER测试,实际测算出32位变量平方的用时略短一些。至于为什么使用32位变量而不是16位(ADC结果是12位,存放在16位单元中),是因为如果变量设计为16位,进行乘法之后,结果仍然是16位,会导致数据溢出。索性用32位变量计算。

四、误差

这种方法的误差主要在数据采集量,采集越多肯定越精确。另外电路中线性元器件的误差,二极管漏电流,运放的失调电压,以及电源误差,都会造成最终的结果存在误差。另外,不推荐使用二极管直接全波整流,使用运放精密整流会大幅降低误差。实际测量后,误差在0.3A左右,至少可以满足我的产品需求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/450838.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何从用户心理一步步挖掘用户需求?

为了更深入透彻挖掘用户需求,彻底满足用户的真实需求,我们可以从用户心理角度,一步步从方案级需求到问题级需求,再到人性级需求。 1、从方案级需求到问题级需求 方案级需求通常是指用户提出的具体解决方案或需求表述。这种需求往往…

一文彻底搞懂IO流

文章目录 1. 什么是IO流2. IO流原理3. IO流分类3.1 按数据类型分类3.2 按流的方向分类 4. IO流的使用场景5. 常用的IO流类5.1 字节流类5.2 字符流类5.3 输入输出流类5.4 字符输出流类 1. 什么是IO流 Java对数据的操作是通过流的方式,IO是java中实现输入输出的基础&…

探索ChatGPT的前沿科技:解锁其在地理信息系统、气候预测、农作物生长等关键领域的创新应用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

Java高校学校校园排课系统设计与实现(Idea+Springboot+mysql)

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

【wine】vb程序自定义窗口最大化崩溃分析EXCEPTION_FLT_INEXACT_RESULT 失败

故障现象,wine运行windows应用程序,点击最大化按钮崩溃,wine日志如下 02a8:err:ole:apartment_getclassobject DllGetClassObject returned error 0x80040111 for dll L"C:\\windows\\system32\\msxml2.dll" 029c:err:ole:com_get_class_obje…

蓝桥杯练习系统(算法训练)ALGO-977 P0805大数乘法

资源限制 内存限制:256.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的…

C++ 哈希

目录 1. 哈希概念 2. 哈希冲突 3. 哈希函数 4. 哈希冲突解决 4.1 闭散列 4.2 开散列 4.3 对于哈希表的补充 5. 开散列与闭散列比较 6. 哈希表的模拟实现以及unorder_set和unorder_map的封装 1. 哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置之间…

谷粒商城——分布式基础(全栈开发篇第一部分)

文章目录 一、服务治理网路数据支撑日志处理ELK应用监控集成工具开发工具 二、环境创建1、虚拟机创建2、虚拟机安装docker等1. 安装docker1. 配置阿里docker3.docker安装mysql错误 4、docker安装redis 3、软件1.Maven 阿里云镜像1.8jdk2、idea lombokmybatisX ,3、 …

算法之滑动窗口

题目1:209. 长度最小的子数组 - 力扣(LeetCode) 解法⼀(暴力求解): 思路: 从前往后, 枚举数组中的任意⼀个元素, 把它当成起始位置, 然后从这个起始位置开始, 然 后寻找⼀段最短的区间, 使得这段区间的和「⼤于等于」⽬标值. 将所有元素作为…

Docker容器化技术(数据卷的管理)

数据卷 是一个可供容器使用的特殊目录,它将主机操作系统目录直接 映射进容器,类似于 Linux 中的 mount 行为 。 数据卷:可以提供很多有用的特性 数据卷可以在容器之间共事和重用,容器间传递数据将变得高效与方便;对数…

二分查找【详解】

本期介绍🍖 主要介绍:二分查找的简单思路,为什么必须在有序的前提下才能使用二分查找,该怎么用C程序来实现二分查找,二分查找的局限性👀。 文章目录 1. 题目2. 思路3. 前提条件4. 编写程序 1. 题目 在一个有…

详解mfc140.dll文件,修复mfc140.dll缺失的多种方法

mfc140.dll文件是Windows操作系统中的一个非常重要的动态链接库文件。它不仅被广泛用于操作系统本身的正常运行,还被许多应用程序所依赖。 一、详解mfc140.dll文件 mfc140.dll是Microsoft Foundation Classes(MFC)库中的一个动态链接库&…

SpringBoot整合阿里云文件上传OSS以及获取oss临时访问url

SpringBoot整合阿里云文件上传OSS 1. 引入相关依赖<!--阿里云 OSS依赖--><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency><dependen…

106. Dockerfile通过多阶段构建减小Golang镜像的大小

我们如何通过引入具有多阶段构建过程的Dockerfiles来减小Golang镜像的大小&#xff1f; 让我们从一个通用的Dockerfile开始&#xff0c;它负责处理基本的事务&#xff0c;如依赖项、构建二进制文件、声明暴露的端口等&#xff0c;以便为Go中的一个非常基础的REST API提供服务。…

常见的排序算法的时间复杂度

常见的排序算法的时间复杂度 排序算法的时间复杂度通常取决于输入数据的规模&#xff08;通常表示为n&#xff09;。以下是一些常见排序算法及其平均、最好和最坏情况下的时间复杂度&#xff1a; 1、冒泡排序&#xff08;Bubble Sort&#xff09; 平均时间复杂度&#xff1a;…

进程打开文件

目录 一、预备知识 二、操作文件函数 三、操作文件系统调用 四、理解进程打开文件 函数 vs 系统调用 open的返回值 fd 如何理解一切皆文件&#xff1f; 理解struct file 内核对象 fd的分配规则 && 重定向 理解标准错误流&#xff08;2号文件描述符&#xff0…

得帆助力大族激光主数据平台建设,用数据为企业生产力赋能

本期客户 大族激光科技产业集团股份有限公司&#xff08;以下简称“大族激光”&#xff09;是一家从事工业激光加工设备与自动化等配套设备及其关键器件的研发、生产、销售&#xff0c;激光、机器人及自动化技术在智能制造领域的系统解决方案的优质提供商&#xff0c;是国内激光…

如何通过四维轻云SDK开发打造智慧景区管理平台?

智慧景区管理平台通常是基于GIS技术&#xff0c;在三维实景地图的基础上&#xff0c;接入景区各类传感设备、第三方系统数据&#xff0c;进行业务功能的梳理及开发。但对于没有GIS开发经验的团队而言&#xff0c;地图开发具有一定的技术门槛&#xff0c;尤其是需要在前端解决好…

VR全景在智慧园区中的应用

VR全景如今以及广泛的应用于生产制造业、零售、展厅、房产等领域&#xff0c;如今720云VR全景更是在智慧园区的建设中&#xff0c;以其独特的优势&#xff0c;发挥着越来越重要的作用。VR全景作为打造智慧园区的重要角色和呈现方式已经受到了越来越多智慧园区企业的选择和应用。…

记事小本本

记事小本本 实现效果 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…