專業(yè)做淘寶網(wǎng)站紹興小廣告網(wǎng)站
PCAP01超高精電容傳感芯片+STM32+LabView可視化
文章目錄
- PCAP01超高精電容傳感芯片+STM32+LabView可視化
- 一、PCAP01介紹
- 1.1、PCAP01引腳定義
- 1.2、電容測量
- 1.3、溫度測量
- 1.4、PCAP典型測試電路
- 二、PCAP01的STM32驅(qū)動
- 2.1、SPI協(xié)議配置
- 2.2、PCAP01浮空電容測量內(nèi)部溫度測量操作流程
- 三、制定串口通訊協(xié)議
- 四、LabView上位機(jī)
一、PCAP01介紹
PCAP01Ax_0301是ACAM公司推出的一款單芯片電容測量方案集成芯片。該芯片集成了電容測量部分以及片內(nèi)哈弗架構(gòu)DSP,可以實(shí)現(xiàn)至高500kHZ的超高速電容測量以及數(shù)據(jù)處理。在溫濕度傳感、動力學(xué)傳感器、MEMS、液位傳感器、觸摸檢測等領(lǐng)域具有廣闊的應(yīng)用前景。
本文章將抽絲剝繭的從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級別的電容進(jìn)行去耦,一般選擇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的電容進(jìn)行接地!這是必須,電容值必須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,變成結(jié)束迅速拉低,正常使用時應(yīng)當(dāng)拉低) |
需要注意:當(dāng)芯片底部中心具有焊盤時,需要將該焊盤接地
1.2、電容測量
該傳感器通過給電容進(jìn)行充電后計(jì)算其放電時間換算出電容的容值。輸出的結(jié)果為: t N t r e f = C N C r e f \frac{t_N}{t_{ref}}=\frac{C_N}{C_{ref}} tref?tN??=Cref?CN??.
PCAP01具有三種測量電容的方式;分別為浮動測量方式、接地測量方式以及差分測量方式。這些測量方式中,都規(guī)定C0為參考電容,因此該芯片最多支持3路浮動測量或者7路接地測量。其連接方式如下圖所示:
根據(jù)PCAP01的測量原理可知,要獲得精確的測量結(jié)果,就要求參考電容的精度足夠高。并且當(dāng)使用長線進(jìn)行電容測量時,需要使用屏蔽線,并將屏蔽線纜接地。同時、PCAP01具有內(nèi)部和外部補(bǔ)償測量模式、啟用后可以消除內(nèi)部和外部電路電阻的影響。
1.3、溫度測量
PCAP01支持內(nèi)部和外部溫度測量兩種模式,在一般的應(yīng)用場景下,內(nèi)部的溫度傳感器已經(jīng)符合要求。如圖3-14所示為外部測量模式、該模式下需要外接一個熱敏電阻PT1000以及一個超低溫漂的參考電阻。如果使用內(nèi)部模式、PCAP內(nèi)部具有一個2800ppm/K的熱敏電阻以及一個溫漂接近0ppm/K的參考電阻,直接懸空PT0以及PT2REF即可。
1.4、PCAP典型測試電路
本電路為浮動模式電容測量以及內(nèi)部溫度測量、使用SPI進(jìn)行通訊。
二、PCAP01的STM32驅(qū)動
PCAP01首先需要寫入固件,芯片才能正常運(yùn)行。官方提供了兩個版本的固件給用戶選擇,有能力的也可以自己編寫。固件地址:https://www.sciosense.com/pcap01-capacitance-to-digital-conversion-digital-signal-processor/
固件寫入完成后,就可以開始寄存器的相關(guān)配置,PCAP01的寄存器配置表如下所示:
讀寄存器表:
各個寄存器的每一位代表的配置詳見官方手冊。
2.1、SPI協(xié)議配置
如圖所示為PCAP01的SPI模式要求,在進(jìn)行STM32的SPI初始化的時候應(yīng)當(dāng)遵照表中要求對單片機(jī)的SPI外設(shè)進(jìn)行相應(yīng)的配置。
PCAP01的SPI為標(biāo)準(zhǔn)的四線全雙工SPI通訊,SSN引腳輸出一個短暫的高電平使能SPI傳輸,隨后數(shù)據(jù)隨著時鐘線的嘀嗒移入移出。
在寫時序中,只需要將待寫入的數(shù)據(jù)依次移出即可,但這里需要遵循PCAP01的寫入規(guī)則:
上述的意思是,在進(jìn)行寄存器寫入操作的時候,單幀數(shù)據(jù)的最高兩位為11,緊接著跟上寄存器的地址,例如寄存器0(Register0)的地址為0,則輸出數(shù)據(jù)前八位為11000000,即0xC0。其后再接上24位寄存器的配置值。
在讀時序中,需要先發(fā)送需要讀取的寄存器地址,然后等待一小段間隔再發(fā)送移位信號將PCAP01相關(guān)寄存器中的數(shù)據(jù)移出。需要注意的是,發(fā)送的起始兩位為01,綜上所述可知,如果要讀取Status寄存器的數(shù)據(jù),應(yīng)當(dāng)發(fā)送的數(shù)據(jù)為:0100 1000 0000 0000 0000 0000 0000 0000,轉(zhuǎn)換為16進(jìn)制為:0x48000000。
2.2、PCAP01浮空電容測量內(nèi)部溫度測量操作流程
- 首先測試SPI通訊是否正常:
- 寫入PCAP01的固件
- 配置各個寄存器,下面給出本例中的寄存器配置值
寄存器0:0xc04200FF (關(guān)閉OTP模式、開啟程序讀保護(hù))
寄存器1:0xC1201022 (設(shè)置內(nèi)部晶振頻率50KHz)
寄存器2:0xc2FF460B (開啟所有電容測量通道、浮動模式、泄壓電阻30kOhm,開啟內(nèi)外補(bǔ)償)
寄存器3:0xc3030010 (CDC的循環(huán)基準(zhǔn)20us,觸發(fā)周期20*16,16次平均)
寄存器4:0xc4080111 (時鐘觸發(fā)電容測量,CDC cycle time 40us,溫度測量280us,電容觸發(fā)溫度測量)
寄存器5:0xc500000A (溫度測量不平均,十次電容測量觸發(fā)一次溫度測量)
寄存器6:0xc6004340
寄存器7:0xc71F0000 (固定)
寄存器8:0xc8800030 (設(shè)置程序空間,以及DSP的功耗)
寄存器9:0xc9FF000F (設(shè)置脈沖輸出精度)
寄存器10:0xca180047 (設(shè)置DSP電壓)
寄存器13:0xcd000007 (設(shè)置脈沖的輸出數(shù)據(jù))
寄存器14:0xce002ff0 (設(shè)置輸出數(shù)據(jù)的斜率)
寄存器15:0xcf000000 (設(shè)置輸出數(shù)據(jù)的偏置)
寄存器19:0xD3200000 (設(shè)置內(nèi)部線性補(bǔ)償,默認(rèn)為1.0000,十六進(jìn)制為200000)
寄存器20:0xD4000001 (芯片開始工作)
- 重置所有測量:SPI發(fā)送0x8A;
- 開始測量:SPI發(fā)送0x8C;
- 獲取對應(yīng)通道的測量值:例如:(c1/c0)SPI發(fā)送:0x41,隨后開始讀取
- 將獲取的值除以0x1FFFFF,得到比例值的小數(shù)。
- 將小數(shù)值乘以參考電容值,得到被測電容值。
- 獲取溫度值(0x4E)(Rt/Rref);
- 根據(jù)公式:T=20+((Rt/Rref/0x1FFFFF)-0.824) /0.0023072;計(jì)算出溫度
三、制定串口通訊協(xié)議
下位機(jī)發(fā)送協(xié)議,定長
Byte0 | Byte1 | Byte2-5 | Byte6-9 | Byte10-13 | Byte14-17 | Byte19 |
---|---|---|---|---|---|---|
幀頭 | 數(shù)據(jù)長度 | 電容1數(shù)據(jù) | 電容2數(shù)據(jù) | 電容3數(shù)據(jù) | 溫度數(shù)據(jù) | CRC校驗(yàn) |
0x55 | 0x13 |
下位機(jī)接收,不定長
Byte0 | Byte1 | Byte2 | Byte XXX | Byte Final |
---|---|---|---|---|
幀頭 | 數(shù)據(jù)長度 | 指令類型 | 指令內(nèi)容 | CRC校驗(yàn) |
0xAA |
四、LabView上位機(jī)
LabView使用的是G語言,其編程方式和C有很大的區(qū)別,編程效率個人感覺遠(yuǎn)低于C語言,但是其直觀化的編程方式受到了許多科研人員的喜愛。上述為LabView的串口配置過程,通過VISA配置串口模塊進(jìn)行參數(shù)配置,隨后進(jìn)入順序片段等待配置完成。隨后就可以通過串口的VISA寫入和VISA讀取進(jìn)行上位機(jī)與下位機(jī)的數(shù)據(jù)交互了。
獲取到數(shù)據(jù)之后對數(shù)據(jù)協(xié)議進(jìn)行解析,將解析出的數(shù)據(jù)進(jìn)行校驗(yàn)后通過波形圖進(jìn)行顯示。
點(diǎn)擊采集和保存,通過上述的程序?qū)鞲衅饕欢螘r間內(nèi)的數(shù)據(jù)保存為CSV文件。
由于LabView是框圖編程,程序的整體結(jié)構(gòu)如下,
最終實(shí)現(xiàn)效果如圖:
需要整個工程完整代碼請私聊。