⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compute_reandim.c

📁 本简易网络导纳分析仪以C8051F020为控制和数据处理核心
💻 C
字号:
/*===============================================================*/
/*函数名称: Compute_REandIM.c                                   */
/*函数功能: 计算相位,实部,虚部                                */
/*参数说明: Angle_Frequncy----------------------------2*3.14156926 
			 Y_Real----------------------------------网络函数的实部
			 Y_Image---------------------------------网络函数的虚部
			 t-------------------------------------高电平对应的时间
   			 Y_Phase---------------------------------电压电流相位差
			 error_duty----------------------------------占空比误差
			 FrequencyLong_HZ-------------------------DDS发出的频率
			 Pulse_Number--------------------- 高电平对应的脉冲个数
                                                                 */
/*修改记录: 无修改记录                                          */
/*编写作者: t483-4-19chenyong                                   */
/*编写日期: 2007-4-14                                           */
/*===============================================================*/
#include"common.h"
#include"ad9851.h"
#include<math.h>


//#define  Frequncy      9015        //由DDS发出,在这里常数
#define  Command_Time	 0.48		  //1/25MHz(系统时钟为25MHz)
extern float Y_Real, Y_Image;
extern float Y_Abs,  Y_Phase;
extern float Current,Voltage;
extern unsigned long Pulse_Number;    //所测量的脉冲个数   
//unsigned long  Frequncy;
extern unsigned long FrequencyLong_HZ; 
void  Compute_REALandIMAGE()
{

      float Angle_Frequncy=0.0;  
	  float t=0.0,error_duty=0.0; 

	  	          
//	  Frequncy=ad9851(); 
      ad9851();
//	  FrequencyLong_HZ = FrequencyLong_HZ*5.99;
      Angle_Frequncy = 2*3.1415926;
	  Pulse_Number = Pulse_Number*1.06358;
	  Pulse_Number = Pulse_Number-6.35466;		  //直线拟和后的值

	  t = (float)0.48*Pulse_Number;               //计算相位
	  t = (float)t/100;
	  t = (float)t*FrequencyLong_HZ;
	  t = (float)t/10;


	  Y_Phase = (float)t*Angle_Frequncy;
	  Y_Phase = (float)Y_Phase/1000;              //单位变成秒 
	  error_duty = Y_Phase*0.12292701;
	  error_duty = error_duty-0.030691098;		  //误差直线拟和后的参数值
//	  Y_Phase = Y_Phase+0.092048856;              //静态误差为0.403832733
	  Y_Phase = Y_Phase-error_duty;
	  Y_Phase = (float)Y_Phase;

	  if(Y_Phase<=3.1415926) 
	  {
	  	      
	        Current = (float)data_process(0);           //采样电流
	        Voltage = (float)data_process(2);           //采样电压
            Y_Abs  =  (float)Current/Voltage;           //计算导纳模

            Y_Real  = (float)fabs(Y_Abs*cos(Y_Phase));  //计算实部 
            Y_Image = (float)fabs(Y_Abs*sin(Y_Phase));  //计算虚部 
	        Y_Phase = Y_Phase*180;	       	            //化成弧度
	        Y_Phase = Y_Phase/3.1415926;	
	  	     
	  }
	  else
	  {
	  
	  	    Y_Phase=6.283185-Y_Phase;  
	        Current = (float)data_process(0);           //采样电流
	        Voltage = (float)data_process(2);           //采样电压
            Y_Abs  =  (float)Current/Voltage;           //计算导纳模

            Y_Real  = (float)fabs(Y_Abs*cos(Y_Phase));  //计算实部 
            Y_Image = (float)fabs(Y_Abs*sin(Y_Phase));  //计算虚部 
	        Y_Phase = Y_Phase*180;	       	            //化成弧度
	        Y_Phase = Y_Phase/3.1415926;	  
	  
	  }
//	  Show_FloatData(FrequencyLong_HZ,5,3);  
      

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -