劉孝趙,王海圳,董宜孝
(蘇州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院 機(jī)電技術(shù)學(xué)院,江蘇 蘇州 215000)
隨著全球信息化的不斷發(fā)展,數(shù)據(jù)采集系統(tǒng)逐漸成為現(xiàn)代檢測系統(tǒng)中必不可少的部分?,F(xiàn)實(shí)環(huán)境中,涉及溫度、光強(qiáng)、壓力等模擬量都需要進(jìn)行數(shù)據(jù)采集,實(shí)現(xiàn)實(shí)時(shí)監(jiān)測。在采集過程中,傳感器模塊作為數(shù)據(jù)采集的必要前端,大多以電壓的形式輸出信號,對于數(shù)字量輸出的傳感器可以由MCU讀取并處理;對于模擬量輸出的傳感器則經(jīng)由MCU片上ADC采集轉(zhuǎn)換為數(shù)字信號,再交由主控器進(jìn)行數(shù)據(jù)處理以決定下一步操作。
本設(shè)計(jì)采用來自意法半導(dǎo)體公司的STM32F103 RCT6嵌入式微處理器作為處理核心,擁有高性能、低成本、低功耗、方便二次開發(fā)等特點(diǎn)。同時(shí),采用ATKESP8266 WiFi模塊進(jìn)行數(shù)據(jù)傳輸。該模塊集成度高、外圍電路簡單,擁有較高的性價(jià)比和穩(wěn)定性。
整個(gè)系統(tǒng)由電源模塊、STM32F103RCT6主控器模塊和WiFi模塊組成。ADC模塊集成于MCU片上,各個(gè)模塊之間相互獨(dú)立,模塊集成度高、使用簡單、拓展性強(qiáng)。
本文選用STM32F103RCT6單片機(jī)作為主控MCU,該芯片基于Cortex-M3內(nèi)核,可以進(jìn)行復(fù)雜數(shù)據(jù)處理。時(shí)鐘主頻較高,同時(shí)片上集成12位精度的ADC,USART串口等復(fù)雜電路。
單片機(jī)由AMS1117提供3.3 V電壓供電,芯片內(nèi)嵌出廠前調(diào)校的8 MHz RC振蕩電路,5,6腳接晶振進(jìn)行8 MHz時(shí)鐘信號輸入[1];芯片3,4腳帶用于校準(zhǔn)RTC的32 kHz的晶振;本設(shè)計(jì)選擇芯片42,43腳連接ATK-ESP8266模塊的RXD,TXD引腳。主控MCU芯片及外圍電路如圖1所示。
圖1 STM32F103RCT6芯片及外圍電路
A/D信號采集及轉(zhuǎn)換模塊采用STM32F103RCT6片上外設(shè)的ADC功能。該ADC是一個(gè)12位逐次逼近型A/D轉(zhuǎn)換器,最小采樣時(shí)間1 us,可測量外部16個(gè)信號源。各個(gè)通道的A/D轉(zhuǎn)換可以以單次、連續(xù)、掃描或間斷模式執(zhí)行。ADC的結(jié)果可以被設(shè)置成左對齊或右對齊方式存儲在16位數(shù)據(jù)寄存器中。
STM32的ADC的轉(zhuǎn)換通道被分成2個(gè)通道組:規(guī)則通道組和注入通道組。注入通道的轉(zhuǎn)換可以打斷規(guī)則通道的轉(zhuǎn)換進(jìn)程,只有在注入通道轉(zhuǎn)換完成之后,規(guī)則通道才能夠繼續(xù)進(jìn)行轉(zhuǎn)換。ADC_CR1的SCAN位用于設(shè)置掃描模式,可以由軟件設(shè)置或清除。ADC_CR2的ADON位用于設(shè)置打開和關(guān)閉A/D轉(zhuǎn)換器[2],CONT位用于設(shè)置是否進(jìn)行連續(xù)轉(zhuǎn)換。同樣,ADC的觸發(fā)也可以通過設(shè)置ADC_CR2的EXTSEL[2∶0]和JEXTSEL[2∶0]位來進(jìn)行控制。EXTSEL[2∶0]用于選擇規(guī)則通道的觸發(fā)源;JEXTSEL[2∶0]用于選擇注入通道的觸發(fā)源。選定后,由ADC控制寄存器ADC_CR2的EXTTRIG和JEXTTRIG來激活。其中,需要特別注意的是ADC3的規(guī)則轉(zhuǎn)換和注入轉(zhuǎn)換的觸發(fā)源與ADC1和ADC2不同。ALIGN位用于設(shè)置數(shù)據(jù)左右對齊;ADC_SQRx用于定義在規(guī)則通道轉(zhuǎn)換序列中的通道數(shù)目和轉(zhuǎn)換順序;ADC_CR2的RSTCAL位和CAL位用于執(zhí)行復(fù)位校準(zhǔn)和A/D校準(zhǔn),由軟件置1,在硬件完成后由硬件自動(dòng)清零。需要注意的是每次初始化時(shí)都應(yīng)進(jìn)行校準(zhǔn)操作,不校準(zhǔn)將有可能導(dǎo)致結(jié)果錯(cuò)誤。
ADC_SMPRx用來設(shè)置采樣時(shí)間,最小位1.5周期。ADC的轉(zhuǎn)換時(shí)間可以由以下公式計(jì)算:
T總=采樣時(shí)間+12.5個(gè)周期
實(shí)際采樣時(shí)間則是由每個(gè)通道的SMP位的設(shè)置來決定的。當(dāng)ADCCLK被設(shè)置成14 Mhz時(shí),最小采樣時(shí)間T總=1.5+12.5=14個(gè)周期=1 us。在實(shí)際運(yùn)用中,一般情況下PCLK2=72 Mhz,經(jīng)過ADC預(yù)分頻器能分頻到最大的時(shí)鐘只能是12 M。若采樣周期為1.5個(gè)周期,T總=1.17 us,實(shí)際運(yùn)用中常以此為最快轉(zhuǎn)換時(shí)間。之后,向ADC_CR2的SWSTART位寫1即可開始轉(zhuǎn)換。通道轉(zhuǎn)換結(jié)束后,可以產(chǎn)生中斷和DMA請求,需要注意的是只有ADC1和ADC3可以產(chǎn)生DMA請求。
STM32的ADC同時(shí)擁有模擬看門狗特性,允許應(yīng)用程序自動(dòng)檢測輸入電壓是否超出用戶定義的高/低閥值??梢酝ㄟ^ADC_HTR和ADC_LRT設(shè)置。
在此次設(shè)計(jì)中,使用ATK-ESP8266模塊來進(jìn)行WiFi傳輸。TXD TTL,RXD TTL引腳用于連接單片機(jī)串口。ATK-ESP8266模塊片上集了模塊運(yùn)行必要的外圍組件,共同組成一個(gè)完整且自成體系的WiFi傳輸模塊,配網(wǎng)成功后單片機(jī)通過串口發(fā)生數(shù)據(jù)就可以通過WiFi傳輸至接收端。模塊內(nèi)置TCP/IP協(xié)議棧,可以通過AT指令進(jìn)行操作。
在此次設(shè)計(jì)中,STM32設(shè)置為TCP服務(wù)器模式,電腦端為AP模式,接受由單片機(jī)發(fā)送過來的數(shù)據(jù)。數(shù)據(jù)由單片機(jī)采集,并通過USART串口傳輸?shù)紸TKESP8266模塊進(jìn)行數(shù)據(jù)向電腦端傳輸[3]。經(jīng)過測試最大傳輸距離可達(dá)到15 m,在傳輸距離小于10 m是傳輸結(jié)果最為穩(wěn)定。ATK-ESP8266模塊原理如圖2所示。
圖2 ATK-ESP8266模塊原理
對一個(gè)有穩(wěn)定性要求的系統(tǒng)來說,電源模塊供電的穩(wěn)定性至關(guān)重要。考慮到本系統(tǒng)僅需3.3 V電壓給單片機(jī)及ESP8266供電即可,因此選用AMS1117線性穩(wěn)壓芯片[4],其電路連接如圖3所示。
圖3 AMS1117及其外圍電路
若對功耗較敏感的系統(tǒng),優(yōu)先考慮轉(zhuǎn)換效率,則可以選擇DC/DC電源[5];若考慮成本因素,并且要求較小的紋波和噪聲,則可以選擇LDO電源。
整個(gè)軟件代碼由C語言編寫,利用STM32F103標(biāo)準(zhǔn)庫資源。軟件首先需要進(jìn)行ADC初始化和串口初始化。ADC不斷采集電壓數(shù)值,采集結(jié)果經(jīng)由DMA傳輸?shù)酱冢沟肧TM32內(nèi)核可由于其他任務(wù),為該系統(tǒng)提供了良好的拓展性。最后,數(shù)據(jù)經(jīng)由WiFi模塊傳輸給上位機(jī),主程序進(jìn)行流程圖編寫。
將模擬量信號接入A/D采集通道1,使用信號發(fā)生器給出直流信號于電腦端接受的數(shù)據(jù)對比,多次測量平均誤差小于0.8%。ADC分辨率0.81 mV,測試時(shí)為了提高精度選用了更長的ADC采樣時(shí)間,實(shí)測速度約為300 kHz。若對精度要求不高可以進(jìn)一步降低采樣時(shí)間以提升采樣速度。經(jīng)過多次反復(fù)測量,采集數(shù)據(jù)符合設(shè)計(jì)要求,可供后續(xù)數(shù)據(jù)多樣化應(yīng)用。
需要注意的是實(shí)際使用中應(yīng)外加保護(hù)電路以確保接入MCU的電壓數(shù)值為0~3.3 V,避免過壓導(dǎo)致芯片損毀。同時(shí),STM32片上ADC采集精度為12位,如對精度有更高要求可以外接更高精度的ADC采集芯片,也可以通過外接比例電阻等方式擴(kuò)大量程,但會(huì)造成測量精度降低,使用時(shí)應(yīng)按需選擇。
本文使用STM32F103RCT及片上ADC搭配ATKESP8266設(shè)計(jì)制作了數(shù)據(jù)采集系統(tǒng),分析了該系統(tǒng)的硬件組成及軟件設(shè)計(jì)。具有設(shè)計(jì)功耗低,性價(jià)比高可拓展性強(qiáng)等特點(diǎn)。測試結(jié)果表明,該設(shè)計(jì)可以滿足低頻數(shù)據(jù)的采集及傳輸?shù)男枨蟆?/p>