产品选型

单片机的捕获功能 相位差检测的算法研究-为什么不用CCP检测边沿

小编 2024-10-18 产品选型 23 0

相位差检测的算法研究-为什么不用CCP检测边沿

经过上一篇文章的分析,我们知道,当不存在待测物时,发射线圈的等效阻抗为:

当发射线圈产生的磁场内存在待测物时,发射线圈的等效阻抗为:

根据 的数值,可以分辨出待测物的类型;

涡流示意图

直接检测相位差可行吗

假设施加发射线圈的电压复数形式为,则接收电压

如果检测接收信号与发射信号的幅度,以及接收信号与发射信号的相位差,则可以算出发射线圈的阻抗。

因为发射信号与接收信号的为单一频率的信号,而且频率相同,检测相位差比较简单的办法为:

分别将发射信号与接收信号通过过零比较器处理成50%占比空的数字方波信号。

将两路方波信号送入单片机的CCP捕捉功能脚,利用单片机的CCP功能,分别捕捉发射信号的跳变时间以及接收信号的跳变时间,将两个时间相减,再与信号的周期进行运算即可以得到相位差。

这里的问题在于:

相对于和,和是比较大的数值,小的阻抗的变化导致的相位变化小,如果采用CCP捕捉,需要单片机通过数值计算滤除干扰进行分析,早期性能差的单片机难以胜任。

相位差检测的数值处理方法

随着近些年单片机技术的发展,特别是性价比极高的cortex-m内核处理器的普及应用。

对模拟信号进行高速采样并对数值进行处理已不成问题。

按照下述步骤实现相位差数值检测的算法:

1) 以为采样率对接收信号采样 N+N/4个数据,得到一组数组A,

2) 根据发射信号的频率,在一个周期内对信号采样N个点,保存为一个数组B,

3) 计算的数值,记为R;

4) 计算的数值,记为X;

5) 在多个周期内计算R和X的滑动平均值,记为以及;

6) 计算 的数值,根据这一数据判断待测物的类型。

R, X的变化波形

快速上手STM32定时器-输入捕获的配置

输入捕获是STM32单片机定时器的一个功能,其与定时器的输出比较、PWM输出等共用一个引脚和寄存器(寄存器均为CCR)。当为输入时,引脚则为输入模式,输出时引脚则为输出模式。下图为TIM2定时器通道3中的功能配置

定时器通道配置

输入捕获的原理

单片机设定为输入捕获模式时,当单片机捕获的脉冲时,CCR寄存器可立即锁定CNT寄存器中的当前计数值。假定一组脉冲我们设定捕获此脉冲中的上升沿,则我们可以分别读取前后CCR寄存器的数值。读取的两数值相减,再根据定时器的时基,我们即可确定此组输入脉冲的周期。如果采样一个上升沿、一个下降沿,则我们可以确定脉冲的高电平的时长。

输入捕获模式的设定

设定定时器的时基,此时基中的CNT寄存器的计数值将传递给CCR寄存器,是输入捕获的时间基准;设定输入捕获的捕获模式,上升沿捕获、下降沿捕获,若设定上升沿捕获,则捕获上升沿;若下降沿捕获,则捕获下降沿;

捕获模式配置

设定捕获的分频系数,可以设定不分频、2分频、4分频、8分频,四种模式。假定设置为2分频,则信号发出两个脉冲,单片机捕获一次,4分频、8分频则依次类推;

捕获分频系数设定

设定捕获的输入滤波参数。滤波参数为二进制4位,具体功能可依据下图中的数字具体值来进行配置。

滤波器设定1

滤波器设定2

采样频率fDTS与内部时钟fCK_INT的关系,可依据下图来确定。STM32CUBE中设定此参数 的位置为时基中的CDK设定。

DTS与内部时钟fCK_INT的关系

CKD设定

输入捕获的整体设定

输入捕获模式的一般实现思路

一般为开启输入捕获的中断,当捕获到脉冲时进入中断回调函数,读取锁存的CCR寄存器的数值。一般两次进入中断读取后,即可两值相减,得出两脉冲的时间间隔。

开启输入捕获中断HAL库函数:HAL_TIM_IC_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);

中断回调函数:HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim);

读取CCR寄存器数值宏:__HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__);

改变捕捉极性函数:__HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__)

输入捕获原理及实验视频: 快速上手STM32定时器(五)-输入捕获原理及实验

相关问答

单片机 能捕捉高速脉冲吗?如接高速编码器?

能捕捉的。但前提是具体型号的单片机说明书能支持你想捕捉的速度,2来是写的程序效率能不能持续稳定地捕捉能捕捉的。但前提是具体型号的单片机说明书能支持你...

单片机 p3口第二 功能 是什么(简答题) - 135****4365 的回答 - 懂得

单片机P3口第二功能,各位定义如下:P3.0RXD(串行口输入);P3.1RXD(串行口输出);P3.2/INT0(外部中断0输入);P3.3/INT1(外部中断1输入);P3.4T0(定...

超声波测距电路的种类_作业帮

[回答]1.使用超声波发射头UCM40T,发出40kHz的脉冲超声波,且持续发射200ms.接收头采用与发射头配对的UCM40R,将超声波调制脉冲变为交变电压信号,经运算放大...

各位知道怎么选择合适的 单片机 吗?

[回答]选用时程序存储器的容量够用就行不然会增加成本,对于初具规模的产品可选用OTP单片机,可省去掩膜时间,加快产品的上市时间。在选型的时候,需要根据...

学机械的大学生学习哪些软件可以提高专业能力?

二维绘图软件1.AutoCADAutoCAD是每一个机械学生都必须掌握的软件。AutoCAD是Autodesk公司开发的一款计算机辅助设计软件,主要用于二维绘图,AutoCAD具有完善...

AltiumDesigner和multisim10.0各自的 功能 ?

这三种都是EDA软件altiumdesigner10一般用来绘制电路图,PCB板,也能做可编程逻辑器件的仿真,但是一般很少用到。protues7应该为proteus7吧。。这是一款优秀的...

pca有哪些?

单片机PCA的意思是可编程计数器阵列。PCA由5个16位的捕获/比较模块与之相连,由高字节(PCA0H)和低字节(PCA0L)组成。在读PCA0L的同时自动锁存PCA0H的值,...

单片机 如何才能算掌握好?

对于题主的困惑,想要深入单片机,学得更明白的话,谈谈我是怎么做的吧。1.51入门单片机很好,已经明白寄存器原理就OK,说明程序中的代码对IO口在做什么事情至...

怎么自己做38红外接收模块?

这个是自己搭电路然后用红外接收管,利用外部中断计数器的管脚,才捕捉到的脉冲,在进行软件内部的解码解调,照这个思路就可以努力想,才能学会51单片机,而且...

猜你喜欢