DSP交流采样电路设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综
合
实
验
报
告
学院:电气与控制工程学院班级:测控技术与仪器2班题目:DSP交流采样电路设计姓名:xxx
学号:xxxxxxxxxx
指导老师:xxx
一、实验名称:基于DSP的交流采样电路设计
二、实验目的:
1、通过此次试验,让同学们能够好好复习以前学过的知识,主要是如何采集交流电量并处理得到我们需要的实测数据,一边与后面的分析预测等内容;
2、通过此次试验,能够让同学们更加熟悉继电保护的原理以及实际中的应用方法和实现手段,更便于大家理解;
3、通过此次试验,让同学们对于DSP了解更加深刻,不知是要在原理上懂得,更要学会应用它,能够利用DSP进行一些简单的编程;
4、通过此次试验,培养大家的实际动手能力以及小组合作能力,为今后的职业发展做一个小小的实践;
三、实验原理
1、交流采样
交流采样技术是按一定规律对被测信号的瞬时值进行采样,再按一定算法进行数值处理,从而获得被测量的测量方法。该方法的理论基础是采样定理,即要求采样频率为被测信号频谱中最高频率的2倍以上,这就要求硬件处理电路能提供高的采样速度和数据处理速度。目前,高速单片机、DSP及高速A/D转换器的大量涌现,为交流采样技术提供了强有力的硬件支持。交流采样法包括同步采样法、准同步采样法、非同步采样法等几种。
此次试验是通过互感器来对电压和电流数据进行采集,再进过偏置等的处理,处理到数值范围为0~3V,在输入到DSP进行数值处理分析,比较
2、数据处理
本实验的数据处理是通过DSP来进行的,通过其内部所含的DA装换,将采样数据进行处理,具体方法如下:
DSP内A/D总共的位数为2的12次方即4096位,满幅值为3V,根据的原理为:如果采样的幅值大小为X,则转换后的数字表示为X/Y=3/4096,则Y即为转换后的数字量表示。
3、跳闸
跳闸是通过对GPIO端口的控制实现的,在内部进行数据逻辑比较之后,如果满足条件,则对GPIO口进行编程设置,使之输出高电位,即可导通,作用于跳闸
4、关于DSP
DSP(digital signal processor)是一种独特的微处理器,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号,再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化电子世界中日益重要的电脑芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
DSP微处理器(芯片)一般具有如下主要特点:
(1)在一个指令周期内可完成一次乘法和一次加法;
(2)程序和数据空间分开,可以同时访问指令和数据;
(3)片内具有快速RAM,通常可通过独立的数据总线在两块中同时访问;
(4)具有低开销或无开销循环及跳转的硬件支持;
(5)快速的中断处理和硬件I/O支持;
(6)具有在单周期内操作的多个硬件地址产生器;
(7)可以并行执行多个操作;
(8)支持流水线操作,使取指、译码和执行等操作可以重叠执行。
四、实验程序
程序如下:
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
// Prototype statements for functions found within this file.
interrupt void adc_isr(void);
// Global variables used in this example:
Uint16 LoopCount;
Uint16 ConversionCount;
Uint16 Voltage1[24];
Uint16 Voltage2[24];
main()
{InitSysCtrl();//初始化cpu
InitGpio();//初始化Gpio
EALLOW;
GpioMuxRegs.GPFMUX.all=0x0000;
GpioMuxRegs.GPFDIR.bit.GPIOF0=1;
EDIS;
GpioDataRegs.GPFDA T.bit.GPIOF0=1;
DINT;//关中断
InitPieCtrl();//初始化pie寄存器
IER = 0x0000;//禁止所有的中断
IFR = 0x0000;
InitPieVectTable();//初始化pie中断向量表
// Interrupts that are used in this example are re-mapped to
// ISR functions found within this file.
EALLOW; // This is needed to write to EALLOW protected register
PieV ectTable.ADCINT = &adc_isr;
EDIS; // This is needed to disable write to EALLOW protected registers
AdcRegs.ADCTRL1.bit.RESET = 1; // Reset the ADC module
asm(" RPT #10 || NOP"); // Must wait 12-cycles (worst-case) for ADC reset to take effect
AdcRegs.ADCTRL3.all = 0x00C8; // first power-up ref and bandgap circuits
AdcRegs.ADCTRL3.bit.ADCBGRFDN = 0x3; // Power up bandgap/reference circuitry AdcRegs.ADCTRL3.bit.ADCPWDN = 1; // Power up rest of ADC
// Enable ADCINT in PIE