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

📄 cap_test.c

📁 ARM7 lpc2132 利用快速傅里叶算法实现电容测量功能源代码
💻 C
字号:


#include "config.h"
#include "pin.h"
#include "function.h"
#include "data.h"
#include "fft.h"
#include <math.h>
#include <stdio.h>

#define FOUT 1000
#define PI 3.1415926535897932384626433832795
#define WOG 2*PI*FOUT

float ftemp[1024];

void cap_test(void)
{	char requst[64];  float Vol_Zx,Zx,cap; short i;
	static short ref_r=1;
	if(turn_flags==FINISH_TURN){
		for(i=0;i<1024;i++){
			ftemp[i]=timer0_getdata.Zx_data[i];
		}
		fft(ftemp,1024,0);
		Vol_Zx=ftemp[10];
		
		for(i=0;i<1024;i++){
			ftemp[i]=timer0_getdata.R0_data[i];
		}
		fft(ftemp,1024,0);
		switch(ref_r){
			case 1: Zx=Vol_Zx/(ftemp[10]/100); break; //unit R
			case 2: Zx=Vol_Zx/(ftemp[10]); 	   break; //unit K
			case 3: Zx=Vol_Zx/(ftemp[10]/10);  break; //unit K
			case 4: Zx=Vol_Zx/(ftemp[10]/100); break; //unit K
		}
		
		cap=1/(Zx*WOG) * 1000000; //unit nf
		if(ref_r==1)
			sprintf(requst,"S%d Z:%0.4f capacitance test result: %0.3fuF\r\n",ref_r,Zx,cap);
		 else if(cap<1.0)
		 	sprintf(requst,"S%d Z:%0.4f capacitance test result: %0.3fpF\r\n",ref_r,Zx,cap*1000);
		 else
		 	sprintf(requst,"S%d Z:%0.4f capacitance test result: %0.3fnF\r\n",ref_r,Zx,cap);		 	
		if(ref_r==1 && Zx>500){//>500R 换档
			SEL_CAP_1K;
			ref_r=2;
		}else if(ref_r==2 && Zx>5){
			SEL_CAP_10K;  //>5K 换10K档
			ref_r=3;
		}else if(ref_r==3 && Zx>50){
			SEL_CAP_100K; //>50K 换100K档
			ref_r=4;
		}else if(ref_r==4 && Zx<50){
			SEL_CAP_10K;   //<50K 换10K档
			ref_r=3;
		}else if(ref_r==3 && Zx<5){
			SEL_CAP_1K;  //<5K 换1K档
			ref_r=2;
		}else if(ref_r==2 && Zx<0.5){
			SEL_CAP_100R; //<500R 换100R档
			ref_r=1;
		}
		
		to_host(requst);
		turn_flags=WAIT_TURN;
	}	
}

⌨️ 快捷键说明

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