超高精电容传感器PCAP01调试+LABVIEW数据可视化调试手记

PCAP01超高精电容传感芯片+STM32+LabView可视化

一、PCAP01介绍

PCAP01Ax_0301是ACAM公司推出的一款单芯片电容测量方案集成芯片。该芯片集成了电容测量部分以及片内哈弗架构DSP,可以实现至高500kHZ的超高速电容测量以及数据处理。在温湿度传感、动力学传感器、MEMS、液位传感器、触摸检测等领域具有广阔的应用前景。

本文章将抽丝剥茧的从70多页的英文文档中梳理出该芯片的配置过程。

1.1、PCAP01引脚定义

在这里插入图片描述

引脚 描述
BUFFCAP Connect microfarad bypass capacitance and nanofarad bypass capacitance to GND. Bridge all BUFFCAP pins. Bypassing is mandatory! (简言之:该引脚需要与所有BUFFCUP引脚相连,并且必须对地连接uF级别和nF级别的电容进行去耦,一般选择4.7uF和100nF)
GND Ground
IIC_EN Put this to LOW or GND for use of SPI bus. Put it to HIGH or VDD otherwise.(简言之:拉低该引脚启用SPI)
INTN Optional. Interrupt line, low active
MISO_PG1 Serial interface data line, Master In - Slave Out (SPI only, otherwise available as general-purpose port)(简言之:SPI通讯线)
MOSI_SDA Serial interface data line, Master Out - Slave In(简言之:SPI通讯线)
OXIN&OXOUT May be left open. Very exceptionally used for connecting a 4 to 20 MHz ceramics resonator or quartz.(简言之:外部晶振接口,一般不接)
PC0-PC7 “CDC” or capacitive measurement ports. Connect reference and sensors here, beginning with PCØ for the reference.(简言之:电容检测引脚)
PCAUX May be used for external discharge resistor.(外接泄压电阻)
PG2-PG5 General purpose I/O ports. PG4 and PG5 are output only, others are configurable input or output.
PT0-PT1 “RDC” or temperature measurement ports. Connect one side of the external resistive sensors here.
PT2REF When there is an external resistive (temperature measurement) reference, connect it here, otherwise this is the place for a third resistive sensor.(外接参考电阻)
PTOUT For temperature measurement, connect the other side of the resistive sensors and a 33 nF ceramics capacitor here.(简言之:温度测量时,需要将该引脚通过33nF的电容进行接地!这是必须,电容值必须33nF)
SCK_SCL Serial interface clock line(SPI的时钟线)
SSN_PG0 SPI interface chip select line, low active. Alternatively general purpose I/O port.(简言之:SPI的片选信号线,拉低表示选中该芯片)
VDD VDD here, plus bypass capacitance to GND. Bypassing is mandatory!
VPP_OTP Set to 6.5 V during OTP programming. Set back to GND rapidly after the end of the programming process. Keep pin grounded for normal device operation. Apply a 470 kOhm pull-down resistor to this pin.(简言之:在OTP编程的时候接上6.5V,变成结束迅速拉低,正常使用时应当拉低)

需要注意:当芯片底部中心具有焊盘时,需要将该焊盘接地

1.2、电容测量

在这里插入图片描述

该传感器通过给电容进行充电后计算其放电时间换算出电容的容值。输出的结果为: t N t r e f = C N C r e f \frac{t_N}{t_{ref}}=\frac{C_N}{C_{ref}} treftN=CrefCN.

PCAP01具有三种测量电容的方式;分别为浮动测量方式、接地测量方式以及差分测量方式。这些测量方式中,都规定C0为参考电容,因此该芯片最多支持3路浮动测量或者7路接地测量。其连接方式如下图所示:
在这里插入图片描述

根据PCAP01的测量原理可知,要获得精确的测量结果,就要求参考电容的精度足够高。并且当使用长线进行电容测量时,需要使用屏蔽线,并将屏蔽线缆接地。同时、PCAP01具有内部和外部补偿测量模式、启用后可以消除内部和外部电路电阻的影响。

1.3、温度测量

在这里插入图片描述
PCAP01支持内部和外部温度测量两种模式,在一般的应用场景下,内部的温度传感器已经符合要求。如图3-14所示为外部测量模式、该模式下需要外接一个热敏电阻PT1000以及一个超低温漂的参考电阻。如果使用内部模式、PCAP内部具有一个2800ppm/K的热敏电阻以及一个温漂接近0ppm/K的参考电阻,直接悬空PT0以及PT2REF即可。

1.4、PCAP典型测试电路

在这里插入图片描述
本电路为浮动模式电容测量以及内部温度测量、使用SPI进行通讯。

二、PCAP01的STM32驱动

PCAP01首先需要写入固件,芯片才能正常运行。官方提供了两个版本的固件给用户选择,有能力的也可以自己编写。固件地址:https://www.sciosense.com/pcap01-capacitance-to-digital-conversion-digital-signal-processor/

固件写入完成后,就可以开始寄存器的相关配置,PCAP01的寄存器配置表如下所示:
在这里插入图片描述
读寄存器表:
在这里插入图片描述
在这里插入图片描述
各个寄存器的每一位代表的配置详见官方手册。

2.1、SPI协议配置

如图所示为PCAP01的SPI模式要求,在进行STM32的SPI初始化的时候应当遵照表中要求对单片机的SPI外设进行相应的配置。
在这里插入图片描述
PCAP01的SPI为标准的四线全双工SPI通讯,SSN引脚输出一个短暂的高电平使能SPI传输,随后数据随着时钟线的嘀嗒移入移出。
在这里插入图片描述
在写时序中,只需要将待写入的数据依次移出即可,但这里需要遵循PCAP01的写入规则:
在这里插入图片描述
上述的意思是,在进行寄存器写入操作的时候,单帧数据的最高两位为11,紧接着跟上寄存器的地址,例如寄存器0(Register0)的地址为0,则输出数据前八位为11000000,即0xC0。其后再接上24位寄存器的配置值。
在读时序中,需要先发送需要读取的寄存器地址,然后等待一小段间隔再发送移位信号将PCAP01相关寄存器中的数据移出。需要注意的是,发送的起始两位为01,综上所述可知,如果要读取Status寄存器的数据,应当发送的数据为:0100 1000 0000 0000 0000 0000 0000 0000,转换为16进制为:0x48000000。

2.2、PCAP01浮空电容测量内部温度测量操作流程

  1. 首先测试SPI通讯是否正常:
  2. 写入PCAP01的固件
  3. 配置各个寄存器,下面给出本例中的寄存器配置值
寄存器0:0xc04200FF (关闭OTP模式、开启程序读保护)
寄存器1:0xC1201022   (设置内部晶振频率50KHz)
寄存器2:0xc2FF460B   (开启所有电容测量通道、浮动模式、泄压电阻30kOhm,开启内外补偿)
寄存器3:0xc3030010   (CDC的循环基准20us,触发周期20*16,16次平均)
寄存器4:0xc4080111   (时钟触发电容测量,CDC cycle time 40us,温度测量280us,电容触发温度测量)
寄存器5:0xc500000A   (温度测量不平均,十次电容测量触发一次温度测量)
寄存器6:0xc6004340
寄存器7:0xc71F0000   (固定)
寄存器8:0xc8800030   (设置程序空间,以及DSP的功耗)
寄存器9:0xc9FF000F   (设置脉冲输出精度)
寄存器10:0xca180047  (设置DSP电压)
寄存器13:0xcd000007  (设置脉冲的输出数据)
寄存器14:0xce002ff0  (设置输出数据的斜率)
寄存器15:0xcf000000  (设置输出数据的偏置)
寄存器19:0xD3200000  (设置内部线性补偿,默认为1.0000,十六进制为200000)
寄存器20:0xD4000001  (芯片开始工作)
  1. 重置所有测量:SPI发送0x8A;
  2. 开始测量:SPI发送0x8C;
  3. 获取对应通道的测量值:例如:(c1/c0)SPI发送:0x41,随后开始读取
  4. 将获取的值除以0x1FFFFF,得到比例值的小数。
  5. 将小数值乘以参考电容值,得到被测电容值。
  6. 获取温度值(0x4E)(Rt/Rref);
  7. 根据公式:T=20+((Rt/Rref/0x1FFFFF)-0.824) /0.0023072;计算出温度

三、制定串口通讯协议

下位机发送协议,定长

Byte0 Byte1 Byte2-5 Byte6-9 Byte10-13 Byte14-17 Byte19
帧头 数据长度 电容1数据 电容2数据 电容3数据 温度数据 CRC校验
0x55 0x13

下位机接收,不定长

Byte0 Byte1 Byte2 Byte XXX Byte Final
帧头 数据长度 指令类型 指令内容 CRC校验
0xAA

四、LabView上位机

在这里插入图片描述

LabView使用的是G语言,其编程方式和C有很大的区别,编程效率个人感觉远低于C语言,但是其直观化的编程方式受到了许多科研人员的喜爱。上述为LabView的串口配置过程,通过VISA配置串口模块进行参数配置,随后进入顺序片段等待配置完成。随后就可以通过串口的VISA写入和VISA读取进行上位机与下位机的数据交互了。
在这里插入图片描述

获取到数据之后对数据协议进行解析,将解析出的数据进行校验后通过波形图进行显示。
在这里插入图片描述
点击采集和保存,通过上述的程序将传感器一段时间内的数据保存为CSV文件。
由于LabView是框图编程,程序的整体结构如下,
在这里插入图片描述
最终实现效果如图:
请添加图片描述
需要整个工程完整代码请私聊。

相关推荐

  1. 02 Linux 调试手段

    2024-07-10 06:40:03       14 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 06:40:03       3 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 06:40:03       4 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 06:40:03       3 阅读
  4. Python语言-面向对象

    2024-07-10 06:40:03       2 阅读

热门阅读

  1. Elasticsearch 8 支持别名查询

    2024-07-10 06:40:03       10 阅读
  2. LVS集群

    2024-07-10 06:40:03       8 阅读
  3. rust way step 1

    2024-07-10 06:40:03       11 阅读
  4. .gitmodules文件

    2024-07-10 06:40:03       8 阅读
  5. git提交emoji指南

    2024-07-10 06:40:03       7 阅读
  6. 自动化测试的秘诀:Conda包依赖的智能检测之旅

    2024-07-10 06:40:03       13 阅读
  7. 升级之道:精通Conda的自我升级艺术

    2024-07-10 06:40:03       8 阅读
  8. python拆分Excel数据,自动发邮箱

    2024-07-10 06:40:03       9 阅读
  9. 【LeetCode】169. 多数元素

    2024-07-10 06:40:03       8 阅读
  10. Docker基础使用

    2024-07-10 06:40:03       8 阅读
  11. c_各个unsigned int 和 int的取值范围

    2024-07-10 06:40:03       10 阅读
  12. SVG in VSCode: A Comprehensive Guide

    2024-07-10 06:40:03       7 阅读
  13. 缓存新境界:Eureka中服务的分布式缓存实现策略

    2024-07-10 06:40:03       6 阅读