在线时间532 小时
UID3101413
注册时间2016-1-27
NXP金币256
TA的每日心情 | 奋斗 2021-11-30 16:16 |
---|
签到天数: 206 天 连续签到: 1 天 [LV.7]常住居民III
金牌会员
 
- 积分
- 7879
- 最后登录
- 2025-4-11
|
本帖最后由 混森蓝兽 于 2016-11-27 16:25 编辑
因为ldc1000是电感到数字转换器,可以直接输出数字信号,通过读取对应寄存器里的值Rp,可以得到线圈频率变化的对应值。为保证Rp 的实际值落在采样区间内,同时又保证足够的精度,需要用户合 理地设置RpMAX 和RpMIN 寄存器的值。可以通过实际测量的方法在两个极限条件下测出 Rp 等效的最大值和最小值。在测试仪器有限的情况下,可以简单地通过软件算法比较得 到两个范围的限定值。
1. 首先通过官方手册表格选取两个合适的RpMAX 和RpMIN的值写入寄存器中;
2. 将金属物体放在距离线圈最近的位置(最近位置是指用户设备结构设计的最近位 置) ,此时涡流损耗最大,将Rp_Min 的值逐渐增大当code 值接近25000 时选择 此时的Rp_Min。 (选择25000 是为了给32768 最大值留有余量) ;
3. 将金属物体放在距离线圈最远的位置 (最远位置是指用户备结构设计的最远位 置) ,此时涡流损耗最小,将Rp_Max 的值逐渐减小,code 值接近3000 时选择此 时的Rp_Max。 (继续减小Rp_Max 可以看到code 被钳位到0 值) 。
- int ldc_read_avr()
- {
- char rpi=0; //取rpi次平均值
- for (rpi=0;rpi<rpi_max;rpi++)
- {
- FLOAT_SPI_Read_Buf(LDC1000_CMD_PROXLSB,&proximtyData[0],2);
- proximtyDataTEMP = ((unsigned char)proximtyData[1]<<8) + proximtyData [0];
- proximtyDataSUM += proximtyDataTEMP;
- if(proximtyDataTEMP < proximtyDataMIN) //在100个proximtyDataTEMP中取最大,最小
- proximtyDataMIN = proximtyDataTEMP;
- if(proximtyDataTEMP > proximtyDataMAX)
- proximtyDataMAX = proximtyDataTEMP;
- }
- proximtyDataAVE = proximtyDataSUM /rpi_max;
- proximtyDataSUM=0;
- proximtyDataAVE_LAS=proximtyDataAVE;
-
- return proximtyDataAVE;
- }
复制代码 将采集回来的数据划分等级,建立表格,即可实现对不同金属物体的检测识别。我们先用一个一角和一个一元的硬币做示范,上位机显示检测数据和判断结果:
线圈的形状改变也会影响到采集数值的稳定性,所以保险点把线圈包装起来,避免不必要的触碰。
|
|