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

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

文章目录

  • PCAP01超高精电容传感芯片+STM32+LabView可视化
    • 一、PCAP01介绍
      • 1.1、PCAP01引脚定义
      • 1.2、电容测量
      • 1.3、温度测量
      • 1.4、PCAP典型测试电路
    • 二、PCAP01的STM32驱动
      • 2.1、SPI协议配置
      • 2.2、PCAP01浮空电容测量内部温度测量操作流程
    • 三、制定串口通讯协议
    • 四、LabView上位机

一、PCAP01介绍

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

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

1.1、PCAP01引脚定义

在这里插入图片描述

引脚描述
BUFFCAPConnect microfarad bypass capacitance and nanofarad bypass capacitance to GND. Bridge all BUFFCAP pins. Bypassing is mandatory! (简言之:该引脚需要与所有BUFFCUP引脚相连,并且必须对地连接uF级别和nF级别的电容进行去耦,一般选择4.7uF和100nF)
GNDGround
IIC_ENPut this to LOW or GND for use of SPI bus. Put it to HIGH or VDD otherwise.(简言之:拉低该引脚启用SPI)
INTNOptional. Interrupt line, low active
MISO_PG1Serial interface data line, Master In - Slave Out (SPI only, otherwise available as general-purpose port)(简言之:SPI通讯线)
MOSI_SDASerial interface data line, Master Out - Slave In(简言之:SPI通讯线)
OXIN&OXOUTMay 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.(简言之:电容检测引脚)
PCAUXMay be used for external discharge resistor.(外接泄压电阻)
PG2-PG5General 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.
PT2REFWhen there is an external resistive (temperature measurement) reference, connect it here, otherwise this is the place for a third resistive sensor.(外接参考电阻)
PTOUTFor temperature measurement, connect the other side of the resistive sensors and a 33 nF ceramics capacitor here.(简言之:温度测量时,需要将该引脚通过33nF的电容进行接地!这是必须,电容值必须33nF)
SCK_SCLSerial interface clock line(SPI的时钟线)
SSN_PG0SPI interface chip select line, low active. Alternatively general purpose I/O port.(简言之:SPI的片选信号线,拉低表示选中该芯片)
VDDVDD here, plus bypass capacitance to GND. Bypassing is mandatory!
VPP_OTPSet 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;计算出温度

三、制定串口通讯协议

下位机发送协议,定长

Byte0Byte1Byte2-5Byte6-9Byte10-13Byte14-17Byte19
帧头数据长度电容1数据电容2数据电容3数据温度数据CRC校验
0x550x13

下位机接收,不定长

Byte0Byte1Byte2Byte XXXByte Final
帧头数据长度指令类型指令内容CRC校验
0xAA

四、LabView上位机

在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/782189.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机系统简述

目标 计算机世界并非如此神秘。相反,计算机是非常“确定”的一个系统,即在任何时候,在相同的方法、相同的状态下(当然还包括相同的起始条件),同样的问题必然获得相同的结果。其实,计算机并不是…

前端实现无缝自动滚动动画

1. 前言: 前端使用HTMLCSS实现一个无缝滚动的列表效果 示例图: 2. 源码 html部分源码: <!--* Author: wangZhiyu <w3209605851163.com>* Date: 2024-07-05 23:33:20* LastEditTime: 2024-07-05 23:49:09* LastEditors: wangZhiyu <w3209605851163.com>* File…

强化学习的数学原理:时序差分算法

概述 之前第五次课时学习的 蒙特卡洛 的方法是全课程当中第一次介绍的第一种 model-free 的方法&#xff0c;而本次课的 Temporal-Difference Learning 简称 TD learning &#xff08;时序差分算法&#xff09;就是第二种 model-free 的方法。而对于 蒙特卡洛方法其是一种 non…

使用大漠插件进行京东联盟转链

由于之前开发了一套使用api转链的接口在前面几个月失效了。因为京东联盟系统升级&#xff0c;导致之前可以转的链接现在必须要升级权限才可以。但是升级条件对于我们这些自己买东西转链想省点钱的人来说基本上达不到。 所以&#xff0c;基于这种情况。我之前研究过大漠插件&am…

数据库的学习(4)

一、题目 1、创建数据表qrade: CREATE TABLE grade(id INT NOT NULL,sex CHAR(1),firstname VARCHAR(20)NOT NULL,lastname VARCHAR(20)NOT NULL,english FLOAT,math FLOAT,chinese FLOAT ); 2、向数据表grade中插入几条数据: (3,mAllenwiiliam,88.0,92.0 95.0), (4,m,George&…

第七篇——攻谋篇:兵法第一原则——兵力原则,以多胜少

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 微观层面上&#xff0c;也有很多值得深度思考的问题 二、思路&方案 …

用ThreadLocal解决线程隔离问题

存在的以下代码所示的线程隔离问题&#xff1a; package study.用ThreadLocal解决线程隔离问题;/*线程隔离 - 在多线程并发场景下&#xff0c;每个线程的变量都应该是相互独立的线程A&#xff1a;设置&#xff08;变量1&#xff09; 获取&#xff08;变量1&#xff09;线程B&a…

瑞芯微rk356x TF卡烧写选择指定的屏幕打印烧写的过程

rk356x中TF卡烧写屏幕选择 1、开发环境2、问题描述3、解决办法4、总结5、 图片展示1、开发环境 系统:linux系统 芯片:356x 显示:多屏显示(HDMI, MIPI, LVDS, EDP) 2、问题描述 由于在多屏显示的情况下,HDMI屏在LVDS、MIPI或者EDP协同下,默认情况下,在TF卡烧录过程中…

论文润色最强最实用ChatGPT提示词指令

大家好&#xff0c;感谢关注。我是七哥&#xff0c;一个在高校里不务正业&#xff0c;折腾学术科研AI实操的学术人。关于使用ChatGPT等AI学术科研的相关问题可以和作者七哥&#xff08;yida985&#xff09;交流&#xff0c;多多交流&#xff0c;相互成就&#xff0c;共同进步&a…

C++语言相关的常见面试题目(二)

1.vector底层实现原理 以下是 std::vector 的一般底层实现原理&#xff1a; 内存分配&#xff1a;当创建一个 std::vector 对象时&#xff0c;会分配一块初始大小的连续内存空间来存储元素。这个大小通常会随着 push_back() 操作而动态增加。 容量和大小&#xff1a;std::vec…

【Linux】进程间的通信----管道

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

妈妈带女儿美在心里

在这个充满温情与惊喜的午后&#xff0c;阳光温柔地洒落在每一个角落&#xff0c;仿佛连空气弥漫着幸福的味道。就在这样一个平凡的时刻&#xff0c;一段关于爱与成长的温馨画面&#xff0c;悄然在网络上绽放&#xff0c;引爆了无数人的心弦——#奚梦瑶2岁女儿身高#&#xff0c…

在 VS Code 中自动化 Xcode 项目编译和调试

在 VS Code 中自动化 Xcode 项目编译和调试 在日常的开发工作中&#xff0c;Xcode 是 macOS、iOS、watchOS 和 tvOS 应用程序开发的主要工具。为了提高工作效率&#xff0c;许多开发者选择在 Visual Studio Code (VS Code) 中编辑代码&#xff0c;并希望能够直接从 VS Code 启…

【vue组件库搭建06】组件库构建及npm发包

一、格式化目录结构 根据以下图片搭建组件库目录 index.js作为入口文件&#xff0c;将所有组件引入&#xff0c;并注册组件名称 import { EButton } from "./Button"; export * from "./Button"; import { ECard } from "./Card"; export * fr…

网络通信总体框架

目录 网络通信 一、网络通信的定义与基本原理 二、网络通信的组成要素 三、网络通信的应用与发展 网络体系结构 一、网络体系结构的定义与功能 二、OSI七层参考模型 三、网络体系结构的重要性 网络核心与边缘 一、网络核心 1. 定义与功能 2. 组成部分 3. 技术特点 …

昇思25天学习打卡营第19天|LSTM+CRF序列标注

概述 序列标注指给定输入序列&#xff0c;给序列中每个Token进行标注标签的过程。序列标注问题通常用于从文本中进行信息抽取&#xff0c;包括分词(Word Segmentation)、词性标注(Position Tagging)、命名实体识别(Named Entity Recognition, NER)等。 条件随机场&#xff08…

01:spring

文章目录 一&#xff1a;常见面试题1&#xff1a;什么是Spring框架&#xff1f;1.1&#xff1a;spring官网中文1.2&#xff1a;spring官网英文 2&#xff1a;谈谈自己对于Spring IOC和AOP的理解2.1&#xff1a;IOCSpring Bean 的生命周期主要包括以下步骤&#xff1a; 2.2&…

国产化新标杆:TiDB 助力广发银行新一代总账系统投产上线

随着全球金融市场的快速发展和数字化转型的深入推进&#xff0c;金融科技已成为推动银行业创新的核心力量。特别是在当前复杂多变的经济环境下&#xff0c;银行业务的高效运作和风险管理能力显得尤为重要。总账系统作为银行会计信息系统的核心&#xff0c;承载着记录、处理和汇…

MySQL-行级锁(行锁、间隙锁、临键锁)

文章目录 1、介绍2、查看意向锁及行锁的加锁情况3、行锁的演示3.1、普通的select语句&#xff0c;执行时&#xff0c;不会加锁3.2、select * from stu where id 1 lock in share mode;3.3、共享锁与共享锁之间兼容。3.4、共享锁与排他锁之间互斥。3.5、排它锁与排他锁之间互斥3…

离线开发(VSCode、Chrome、Element)

一、VSCode 扩展 使用能联网的电脑 A&#xff0c;在VSCode官网下载安装包 使用能联网的电脑 A&#xff0c;从扩展下载vsix扩展文件 将VSCode安装包和vsix扩展文件通过手段&#xff08;u盘&#xff0c;刻盘 等&#xff09;导入到不能联网的离线电脑 B 中 在离线电脑 B 中安装…