DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 155|回复: 0
打印 上一主题 下一主题

DSP的跟踪频率变化的交流有样技术

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:04:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      在交流采样系统中,通常是一个周波采样64点或128点的电量值,然后对这些数据进行处理。如果电网频率恒定,则采样间隔t=T/N(T为周期,N为采样点),而电网的频率通常有一定的波动,所以要不断调整采样间隔。
  在单片机系统中,一般采用过零触发电路和单片机的外部中断来检测电量周波的开始和结束时间,再利用内部定时器计算出周期和采样间隔,在采样间隔定时中断程序中启动一次采亲。这种方案有两个缺点:其一,电路实现复杂;其二,精度不高,因为要考虑中断能否实时响应。过零触发电路产生的中断响应具有不确定性。
  我们在使用TMS320F240 DSP开发交流采样系统时,巧妙地利用该款DSP的定时器、捕获器和不中屏蔽中断(NMI)实现了跟踪频率变化的交流采样。
  1 NMI中断、定时器、捕获器的简单分析
  (1)NMI中断
  TMS320F24X系列有一个不可屏蔽中断(NMI)引脚。当该引脚有跳变信号时(可编程为上升沿或下降沿触发),立即进入中断程序,可以用于紧急事件的处理。本文中用于跟踪被测电量的频率。
  (2)定时器介绍
  TMS320F240有3个通用定时器,每个通用定时器有6种计数方式:①停止/保持模式,模式0;②单增计数模式,模式1;③连续增计数模式,模式2;④定向增/减计数模式,模式3;⑤单增/减计数模式,



  3 硬件设计
  (1)互感器电路及设计注意事项
  利用互感器电网的二次高压和电流交换成0~5V或-5~+5V的电压送入A/D转换器,具体电路如图1所示。
  图1中,电压互感器的原边100V,副边输出2mA电流经OP07转换成-3.5~+3.5V的电压量(注意:幅值范围为-5~+5V)。电流互感器的原边输入5A的电流,副边输出2mA的电流经运放转换成-3.5~+3.5V的电压量。
  D11、D12,D21、D22为运放输入限幅保护电路;C11、R14,C21、R23为互感器相移补偿电路。因采样时只要保证一个周波采样N点,什么时候开始并不重要,所可以省去相移补偿电路。
  R11,R12、R13,R21、R22的值可以通过以上给出的电流、电压值计算出来:R11=100V/2mA,R12+R13=R21+R22=3.5V/2mA。运放的输出端可以接一电容进行滤波。
  运放的输出可以再接一级电压跟随器(如图2的U1A)起缓冲、隔离、提高带载能力的作用。
  (2)过零触发电路
  具体电路如图2所示。U1A构成的电压跟随器的作用如上所述,它的正端输入来自互感器电路的输出。U2A构成一个过零比较电路,D2稳压二极管使比较器的输出为0~5V,将模拟信号转换成数字信号送入DSP的捕获器输入端CAP1和不可屏蔽中断端NMI。
  (3)A/D转换器和DSP的接口电路
  电路原理如图3所示。ADC芯片采样14位的MAX125。TMS320F240的定时比较器输出端T3CMP接MAX125的启动转换器CONVST;MAX125转换结束产生中断,通过INT脚接DSP的XINT1脚向DSP申请中断,DSP在中断程序中读取转换结果。DSP对MAX125的操作是通过端口访问完成的,MAX125的片选端CS4接译码器的一个输出端,译码器的输入和使能端由DSP的地址线和I/O信号LS控制。
  每隔一个采样周期(T/N)T3CMP端输出一个下降沿脉冲,启动MAX125进行一次A/D转换。采样间隔会根据电网频率的变化自动调整。



  4 软件设计
  下面给出几个程序函数。具体数据处理的函数因系统功能不同而异,限于篇幅这里不作讨论。
  (1)定时器、捕获器初始化程序:
  void init_TimerCapturet()
  {*T2CNT=0; /*计数寄存器初始化*/
  *T3CNT=0;
  *T3CMP=1000;
  *T2PER=30000;
  T3PER=4000; /T2PER、T3PER会在NMI中断程序中根据电量频率的变化作出相应的调整*/
  *CAPCON=0XBC55; /*设置捕获器*/
  *GPTCON=0X186A;
  *T2CON=0X17CA; /*方式2,分频系数为128*/
  *T3CON=0X10CA; /*方式2,分频系数为1*/
  *NMI_CR=0X64; /*设置不可屏蔽中断*/
  }
  (2)ADC转换结束中断响应程序
  void c_int1()
  {int i;/*其余为全局或静态变量*/
  /*程序中读取ADC的转换结果*/
  if(AChanel= =1) /*读A组3路的转换结果*/
  { outport(0x01,0x03);/*输出MAX125的控制字*/
  inport(0x01,&ADC_Data[0]);
  inport(0x01,&ADC_Data[1]);
  inport(0x01,&ADC_Data[2]);
  AChanel=0;
  }
  else
  {/*如上读取B组3路的转换结果*/
  }
  /*将14位的结果转换为16位的(初码存放)*/
  for(i=1;i<6;i++)
  ADC_Data[i]=ADC_Data[i]<<2/4;
  }
  (3)不可屏蔽中断的中断程序
  void c_int7() {
  asm("SETC INTM");/*禁止中断*/
  *T2CNT=0;/*作捕获器的时在,一个周波开始时其值为0*/
  *T3PER=*FIFO1;/*T3的计数周期是一个周波周期的1/128*/
  asm("CLRC INTM");/*使能中断*/
  }
  本文充分利用了TM320F240的片内资源,巧妙地实现了动态跟踪频率变化的交流采样,希望对使用该系列DSP进行测控领域开发的技术人员有所启发。
  欢迎转载,信息来自维库电子市场网(www.dzsc.com)
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-16 11:04 , 耗时 0.087782 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表