[A-电流信号检测装置] 陕西省一_A题_西安电子科技大学_F518_王怀帅_张伟_刘座辰

  [复制链接]

2

主题

3

帖子

118

积分

二氧化硅

Rank: 2

积分
118
楼主
查看: 12312回复: 10 发表于 2018-9-10 23:18:50   只看该作者
作品简介:本作品为电流信号检测装置,利用运放跟随器输出电流小的特点,将其接在b类互补对称功率放大器的输入端,再接参数完全相同的两个NPN和PNP三极管,对三极管的功率以及电流值要求较大,同时要在三极管外加上散热装置,三极管基极不接电阻,避免了调试偏执电压。同时保证了输出电压与输入电压相同,接入负载以后,可以保证电流值大于1A且为输入电压的0.1倍。用大横截面积大内径较大的锰环上饶直径较为细的漆包线,用2根较粗电阻较小的导线穿过线圈,同时让被测导线紧贴线圈,再给线圈进行回绕,消除垂直磁场的影响,产生了较好的波形。本题难度是在于保持怎样的采样率对信号进行采集,以及在傅里叶变换后找出每个谐波的位置以及幅度。本题最大频率为1Khz,根据采样定理,采样率至少是被测量信号的两倍。192Khz的采样率保证了采集的精度。电流分析电路使用10.15欧姆的电阻采样,ADC以192K的采样率进行采集后进行1024点快速傅里叶变换后算出各个谐波的幅值。电流信号的频率使用等精度测量法对电流信号进行测频。

比赛心得
四天三夜的TI杯已经结束一个多月了,但这并不代表这场比赛已经结束了,这四天三夜的经历必将会伴随着我们的一生。下面是我们小队对这次比赛的一点小小的感悟,与君共勉:
1、人生路上如果没有拼搏就像战场上没有硝烟一样淡泊,无意义。赛场如战场,赛场上的攻坚克难正如战场上的冲锋陷阵,所以无论何时我们都要有一往无前的决心,绝不向困难低头!
2、团队协作,这是比赛必不可少的因素同时也是比赛的考核内容,一定要将任务精准的分配到每个人,保证效率至上。同时,比赛期间大家都很累,不要因为对问题的争执而赌气,要做到我们VS问题,而不是我VS你or他。
3、尽量保证一下休息,在比赛期间大家都很拼,但我觉得还是有必要休息一下,尤其是在晚上两点到五点的时候,如果是三个人的小队的话,可以让一到两个人在两点到五点休息,剩下的人在五点到八点休息,这样既保证了工作的连续性,有不至于因为太困而犯一些不该犯的错误!
以上仅个人见解,有什么不对的地方还望各位能够批评指正。




2018ti杯电子竞赛报告.rar (546.05 KB, 下载次数: 265)


摘要

本文是设计一款采用非接触式传感的电流信号检测装置。可以对任意波形电流信号进行峰值和频率进行测量。具有精度高,可对微小信号测量的特点。

关键字: 电流测量 非接触式传感 高精度

1.1系统框图
本系统的放大电路部分的系统框图如下图所示:


系统流程图(一)

1.2系统方案的论证与选择
1.2.1功率放大器
本系统的放大电路部分的系统框图如下图所示:


功率放大电路框图(图二)

1)系统方案的论证与选择


B类互补对称功率放大器(图三)

方案一:直接搭建一个 b类互补对称功率放大器,通过电阻来改变偏执电压和消除晶体管的交越失真,在实验的过程中,发现流过功率放大器的电流值过高,三极管发热较严重,而且在调整偏执电压时存在误差,产生的波形不是很理想。

方案二:采用 TDA2030a 音频放大芯片搭建功率放大电路,理论值可以产生18w的功率放大效果,但在实际测试中,接入 10欧姆负载后,,输入频率 1khz峰峰值 10v交流正弦信号,只有当电源电压达到 15v以上时,才能在负载两端产生峰峰值 11v左右的不失真电压,如果电源电压低于 15v,产生电压信号会被限幅,如果增大输入电压,始终只能得到最大峰峰值为 11v左右的信号,所以放弃这种方案。


功率放大器(图四)

方案三:本方案为最后采用的方案,利用运放跟随器输出电流小的特点,将其接在 b 类互补对称功率放大器的输入端,再接参数完全相同的两个 NPN 和 PNP 三极管,对三极管的功率以及电流值要求较大,同时要在三极管外加上散热装置,三极管基极不接电阻,避免了调试偏执电压。同时保证了输出电压与输入电压相同,接入负载以后,可以保证电流值大于 1A 且为输入电压的 0.1 倍。

1.2.2 非接触式互感器
(1)系统方案的论证与选择
方案一:在小内径小锰环外缠绕漆包线,线圈的横截面积过小,穿过线圈的导线横截面积小,电阻大,且没有和线圈紧密贴合,穿过线圈中心位置,在实际测量中产生波形失真较严重。
方案二:用大横截面积大内径较大的锰环上饶直径较为细的漆包线,用 2 根较粗电阻较小的导线穿过线圈,同时让被测导线紧贴线圈,再给线圈进行回绕,消除垂直磁场的影响,产生了较好的波形。

1.2.3 电压放大电路
(1)系统方案的论证与选择


程控仪表放大器(图五)

方案一:在通过传感器采样后的信号峰峰值产生了较大衰减,在输入小信号时单片机对于信号难以取样,我们首选想到的是用 AD620A 搭建程控仪表放大器,但是在电路焊接好测试时,开始可以正常对信号进行放大缩小,但后来电路出现问题时信号产生了非线性失真,所以放弃此方案。


电压放大器(图六)

方案二:直接采用运放构成比例放大器,考虑到输入信号的频率较低,对运放的性能要求较低,我们用 OP177 进行放大电路的设计。效果比较理想。

1.2.4 低通滤波器
(1)系统方案论证及选择

滤波器(图七)

方案一:采用一阶无源 RC 网络对信号进行滤波

1.3 总体方案描述
综合以上分析,系统采用跟随器加 B 类互补对称功率放大电路对信号进行功率放大,再连接 10 欧姆的负载,对负载环路电流采用非接触式传感器进行取样,通过电压放大器对采样信号放大,接入低通滤波器滤波,最后通过跟随器接入单片机测量。


系统仿真图(图八)

1.3.1 软件系统流程图如下所示:



1.3.2 系统软件设计分析
本题最大难度是在于保持怎样的采样率对信号进行采集,以及在傅里叶变换后找出每个谐波的位置以及幅度。本题最大频率为 1Khz,根据采样定理,采样率至少是被测量信号的两倍。192Khz 的采样率保证了采集的精度。

1.3.3 测量原理说明
电流分析电路使用 10.15 欧姆的电阻采样,ADC 以 192K 的采样率进行采集后进行 1024 点快速傅里叶变换后算出各个谐波的幅值。电流信号的频率使用等精度测量法对电流信号进行测频。

1.4 测量数据

输入频率/Hz
输入电压/V
负载回路电流值/A
1k
10
1.036
800
10
1.036
600
10
1.036
400
10
1.036
200
10
1.036
100
10
1.036
50
10
1.036



输入频率/Hz
输入电压/V
互感器测量电流值/mA
1k
10
0.024
500
10
0.023
100
10
0.223
50
10
0.022
1k
6
0.015
500
6
0.014
100
6
0.014
50
6
0.013



1k
3
0.0083
500
3
0.008
100
3
0.008
50
3
0.006
1k
1
0.004
500
1
0.004
100
1
0.004
50
1
0.004
1k
0.1
0.0022
500
0.1
0.0022
100
0.1
0.0023
50
0.1
0.0024






主程序代码:
<font face="Arial" size="4">#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "stm32_dsp.h"
#include "lcd.h"
#include "adc.h"</font>
<div><font face="Arial" size="4">#include "fft.h"</font></div><div><font size="4"></font><font face="Arial"></font>
</div><div><font face="Arial" size="4">/***********************************************************</font></div><div><font face="Arial" size="4">  ADC采样引脚:PC1</font></div><div><font face="Arial" size="4">  ADC采样率:192Khz</font></div><div><font face="Arial" size="4">  程序说明:FFT使用的是F1的DSP汇编库,F4有个DSP库比较好用但是</font></div><div><font face="Arial" size="4">            我F4ADC采集电压有点误差(直接接地有4mV左右的误差)。</font></div><div><font face="Arial" size="4">            程序写的比较匆忙,很多地方写死了不灵活,还可以精简</font></div><div><font face="Arial" size="4">            优化一下代码结构。</font></div><div><font face="Arial" size="4">**************************************************************/</font></div><font face="Arial" size="4">u16 Max_A;
u16 Max_i;
extern u16 fq;
extern u8 flag;
int main(void)
{
        int i;
        int k=0;
  delay_init();                     //延时初始化
        uart_init(115200);        
        TIM3_Int_Init(10000-1,7200-1);   //10Khz计数
        TIM2_Cap_Init();
  LCD_Init();
        TIM1_Int_Init(74,4);    //192KHz采样率
        ADC1_Configuration();   //ADC初始化
        DMA_Configuration();    //DMA初始化
         
        while(1)
        {
                                
                int H = 250;
                int h = 250;
                POINT_COLOR=RED;  //LCD显示测试参数(红字)
                LCD_ShowString(135,0,210,24,24,"F(/Hz)     A(mA)");
                LCD_ShowString(135,150,210,24,24,"Fourier transform");
                LCD_ShowString(135,175,210,24,24,"-----------------");
                LCD_ShowString(135,220,210,24,24,"Times     A(mA)");
                LCD_ShowString(135,750,210,24,24,"Texas instruments");
               

                for(i=0;i<NPT;i++) //1024点FFT
                {
                 lBufInArray=ADC_Value<<16;
                }

                cr4_fft_1024_stm32(lBufOutArray, lBufInArray, NPT);   
            GetPowerMag();                                         
                //lcd_show_fft(lBufMagArray);
                POINT_COLOR=BLUE;        //以蓝字显示测试结果

                // 找基波
                for(i=1;i<NPT;i++)
                {
                        if(Max_A<lBufMagArray)
                        {
                                Max_A = lBufMagArray;
                            Max_i = i;
                        }
                }
                //显示基波频率
                if(flag)
                        {
                                LCD_ShowxNum(135,40,fq,6,24,0);
                                flag = 0;</font>
<div><font face="Arial" size="4">                        }</font></div><div><font face="Arial" size="4">//显示谐波次数</font></div><font face="Arial" size="4">                for(k=0;k<6;k++)
                {
                        LCD_ShowxNum(135,h,k,5,24,0);
                        h+=35;
                }
                //显示谐波值
                for(i=0;i<6*Max_i;i+=Max_i)
                {
                          LCD_ShowxNum(270,H,lBufMagArray*3120/4096,5,24,0);
                          printf("F = %d  A = %d\r\n",i,lBufMagArray);
                          H += 35;
                }
                delay_ms(1000);
                //LCD_Clear(WHITE);
        }         
}
</font>

1

主题

11

帖子

49

积分

一粒轻沙

Rank: 1

积分
49
沙发
发表于 2018-9-17 17:06:11   只看该作者
学习了!

1

主题

12

帖子

154

积分

二氧化硅

Rank: 2

积分
154
板凳
发表于 2018-9-19 15:19:56   只看该作者
:victory:系统流程很清晰

1

主题

29

帖子

88

积分

一粒轻沙

Rank: 1

积分
88
4#
发表于 2018-9-21 21:02:40   只看该作者
棒!:victory:

2

主题

5

帖子

5

积分

一粒轻沙

Rank: 1

积分
5
5#
发表于 2018-12-4 14:50:26   只看该作者
666,大佬

0

主题

19

帖子

95

积分

一粒轻沙

Rank: 1

积分
95
6#
发表于 2019-7-13 16:40:19   只看该作者
谢谢分享

0

主题

1

帖子

42

积分

一粒轻沙

Rank: 1

积分
42
7#
发表于 2019-7-24 15:38:19   只看该作者

大佬 能分享下 整个程序吗 ?

0

主题

1

帖子

21

积分

一粒轻沙

Rank: 1

积分
21
8#
发表于 2019-7-28 22:07:46   只看该作者
顶,谢谢大佬

0

主题

6

帖子

85

积分

一粒轻沙

Rank: 1

积分
85
9#
发表于 2019-7-29 22:39:52   只看该作者
谢谢分享!

0

主题

5

帖子

0

积分

一粒轻沙

Rank: 1

积分
0
10#
发表于 2019-8-6 22:57:57   只看该作者
正在找这个,谢谢分享

0

主题

3

帖子

9

积分

一粒轻沙

Rank: 1

积分
9
11#
发表于 2019-9-3 20:52:01   只看该作者
请问一下,磁环是锰锌磁环,还是锰芯磁环?
快速回复 返回顶部 返回列表