APP下载

基于i.MX RT1052处理器的微小电容测量系统研究与实现

2021-02-14侯志伟杜青青包理群

兰州石化职业技术学院学报 2021年4期
关键词:方波电容运算

侯志伟, 杜青青, 包理群

(1.兰州石化职业技术学院 电子电气工程学院,甘肃 兰州 730060;2.兰州工业学院 电子信息工程学院,甘肃 兰州 730050)

随着新兴技术领域的迅速发展,电容式传感器检测技术具有结构简单、分辨率高、动态响应特性好等优点,广泛应用于智慧农业、环境保护、医疗设备等诸多相关应用领域位移、压力、角度、振动、速度等常见物理量的高精度测量[1],例如藜麦水分快速检测[2]、机油品质[3]、密闭管道人体掉入探测[4]、肥箱料位[5]等。微小电容的检测方法主要有直流电源开关充放电式、运算放大器式、交流激励式、调频式[6-8]等,将常见物理量的变化量转化为微小电容的变化量,采用信号调理电路转化为电流、电压和频率的变化量,其中电流和电压信号可采用ADC转换来实现检测,频率信号可在时域中采用直接测频法、间接测频法及等精度测频法,也可在频域中采用FFT蝶形运算实现频率测量。

对于电容式传感器间接测量位移、压力、速度等物理量的实际问题,本文设计了一种基于恩智浦i.MX RT1052处理器的微小电容测量系统,采用方波振荡电路将电容的变化量转换为频率的变化量,被测电容调理电路输出的信号经过ADC采样,利用快速傅里叶蝶形运算,计算最大幅度值对应的主要频率成分值,达到了微小电容值检测的实际应用需求。

1 系统总体设计

微小电容测量系统总体结构框图如图1所示。

图1 系统总体结构框图

该微小电容测量系统主要由恩智浦i.MX RT1052处理器组成最小系统、被测电容信号调理电路、片内ADC外部GPIO(General Purpose I/O Ports, 通用输入/输出端口)为接口、UART串口、TFT-LCD显示、机械按键、SDRAM(Synchronous Dynamic Random Access Memory,同步动态随机存储器)、数据存储器E2PROM(Electrically Erasable Programmable Read-Only Memory,电可擦可编程只读存储器)、JTAG接口等构成。其中,被测电容通过信号调理电路将电容的变化量转换为频率的变化量,其输出信号连接至外部GPIO接口,采用定时器PIT(Periodic Interrupt Timer, 周期中断计数/定时器)产生周期性触发信号来实现设定采样频率,利用XBAR(one or more inter-peripheral crossbar switch, 一个或多个外设交错开关)连接到ADC_ETC(ADC External Trigger Control, ADC外部触发控制)触发请求输入,采样被测电容通过信号调理电路输出电压,利用快速傅里叶变换,计算最大幅度值对应的主要频率成分值,从而得出微小电容值。机械按键用来标定标称电容,将标定值存放至数据存储器E2PROM。UART接口用来打印程序运行过程信息,TFT-LCD显示屏用来显示电容值,JTAG接口用来调试、下载软件程序。

2 系统硬件设计

被测电容调理电路由方波振荡电路、同相滞回比较电路和分压电路构成,如图2所示。方波振荡电路由反向输入的滞回比较器和RC充放电回路组成,滞回比较器引入正反馈,RC充放电回路既作为延迟环节,又作为负反馈网络,以实现输出状态的翻转。同相滞回比较电路采用正反馈截取方波振荡电路的正半周,采用分压电路输出0~3.3V的方波信号。其中DZ1、DZ2为双向稳压管,稳压值为5~6V。

图2 方波振荡电路

当UO输出为UZ时,UO通过R1、R2对Cin(为Cx和C1并联)充电,直到C上的电压UC上升到门限电压UT,输出UO反转为-UZ,电容Cin通过R1、R2放电,当Cin上的电压UC下降到门限电压-UT,输出UO再次反转为UZ,此过程周而复始输出方波。

根据电容充放电过程,振荡频率计算如下:

式(1)中,Cin=C1+Cx。

为校准寄生电容和杂散电容的影响误差,测量校准点0pF和47pF时的频率值,记录对应的结果为f0和f47,则实际电容值可由下面的公式计算得到:

3 系统软件设计

3.1 系统主程序设计

本文微小电容测量系统软件部分主要包括系统初始化模块、标称电容标定模块、ADC采样模块、SDRAM数据缓存模块、按键模块、TFT-LCD显示模块、E2PROM读写模块,系统主程序流程图如图3所示。

图3 系统主程序流程图

电容校准模块采用跳线短路帽接入标称电容,按下按键将测量值存储至E2PROM,TFT-LCD显示模块采用STemWin图形界面库。

3.2 ADC采样程序设计

ADC采样程序主要为ADC寄存器初始化,设置转换通道号及启动定时器PIT转换。其中ADC采样初始化主要为ADC模块初始化、XBARA交错开关配置、定时器PIT配置、ADC外部触发控制的配置。i.MX RT1052处理器具有ADC的硬件求平均值、自动硬件校准功能,主要配置如下:

/* Initialize the ADC module. */

ADC_GetDefaultConfig(&k_adcConfig);

k_adcConfig.resolution = kADC_Resolution12Bit;

ADC_Init(IMXRT_ADC_BASE, &k_adcConfig);

ADC_EnableHardwareTrigger(IMXRT_ADC_BASE, true);

adcChannelConfigStruct.enableInterruptOnConversionCompleted = false;

ADC_SetChannelConfig(IMXRT_ADC_BASE, IMXRT_ADC_CHANNEL_GROUP, &adcChannelConfigStruct);

ADC_SetHardwareAverageConfig(IMXRT_ADC_BASE, kADC_HardwareAverageCount32);

/* Do auto hardware calibration. */

ADC_DoAutoCalibration(IMXRT_ADC_BASE) ;

/* Init xbara module. */

XBARA_Init(IMXRT_XBARA_BASE);

/* Configure the XBARA signal connections. */

XBARA_SetSignalsConnection(IMXRT_XBARA_BASE, IMXRT_XBARA_INPUT_PITCH0, IMXRT_XBARA_OUTPUT_ADC_ETC);

/* Init pit module */

PIT_GetDefaultConfig(&pitConfig);

PIT_Init(PIT, &pitConfig);

PIT_SetTimerPeriod(PIT, kPIT_Chnl_0, USEC_TO_COUNT(10U, PIT_SOURCE_CLOCK));

NVIC_SetPriority(ADC_ETC_IRQ0_IRQn, 2);

EnableIRQ(ADC_ETC_IRQ0_IRQn);

为了便于灵活转换通道号,采用DC1HC0_ADCH设置需要转换的通道,启动定时器PIT开始转换,设置如下:

// 数据缓存清0

memset((void *)p->ADC_BUF, 0, p->ADC_SIZE);

// 设置ADC转换通道

DC1HC0_ADCH = IMXRT_ADC1_IN12_CHNL;

// 启动定时器PIT

PIT_StartTimer(PIT, kPIT_Chnl_0);

3.3 FFT算法程序设计

式(4)中,X(k)有N个点,以N为周期;X1(k)、X2(k)有N/2个点,以N/2为周期。

将式(4)写为前半部分和后半部分,则为如下形式:

按时间抽取DFT,以奇偶序列逐级分解,得出N点FFT运算蝶形流图,如图4所示。

图4 N=8点FFT运算蝶形流图

图4中,蝶形运算符左边两路为输入,右边两路为输出,中间以一个小圆点表示加、减运算,其中右上路为相加后输出、左下路为相减后输出,1个蝶形运算需1次复乘,2次复加。

从FFT运算蝶形流图可找出码位顺序、旋转因子、蝶形间距的变化规律,设序列x(n)经时域抽选(倒序)后,存入数组X中,若蝶形运算的两个输入数据相距B(B=2L-1)个点,则蝶形运算可表示成如下形式:

式(6)中,p=J·2M-L,J=0,1,…,2L-1-1,L=1,2,…,M,L表示第L级运算,为同一旋转因子p=J·2M-L的蝶形间距,XL(J)表示第L级运算后数组元素X(J)的值。

DIT-FFT运算流程如图5所示。

图5 FFT算法流程图

图5中,输入自然顺序序列x(n),以倒位序规律进行码位倒序处理输出自然序,确定运算的级数L=1,2,…,M(N=2M),蝶形两个输入数据的间距为B=2L-1,第L级旋转因子指数为p=J·2M-L,其中J=0,1,…,B-1。同一旋转因子,同一级2M-L个蝶形运算中k的取值范围从J到N-1,步长值为2L。

4 系统测试及结果分析

采用反向输入的滞回比较器和RC回路组成的方波振荡电路,将电容的变化量转换为频率的变化量,被测电容调理电路输出的信号经过恩智浦i.MX RT1052处理器片内ADC采样16*1024个点,将ADC转换数据利用快速傅里叶蝶形运算,计算最大幅度值对应的主要频率成分值,从而得出微小电容值,其实验测量结果如表1所示。

表1 实验测量结果

从表1可以得出,该微小电容测量系统的最大测量误差为0.46pF。

5 结束语

本文设计了一种基于恩智浦i.MX RT1052处理器的微小电容测量系统,并将该技术方案多次反复测试,实验结果表明,该微小电容测量系统的最大测量误差为0.46pF,具有抗干扰强、可靠性高、稳定性好等优势,能够有效满足微小电容值检测的实际应用需求,具有较高的实用价值和较好的应用前景。

猜你喜欢

方波电容运算
便携式多功能频率计的设计与实现
重视运算与推理,解决数列求和题
低压电容器电容值衰减原因分析及改造
有趣的运算
基于超级电容的无线充电小车设计
浅析投射式多点触控电容触摸屏
现代传感器中的微电容检测技术
心肺复苏通气时呼吸机送气流速模式选用方波和减速波对患者气道压力的影响
“整式的乘法与因式分解”知识归纳
一种防垢除垢的变频电磁场发生装置