相位差检测的算法研究-为什么不用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单片机,而且...