咨詢電話
ENGLISH0755-88840386發(fā)布時(shí)間:2021-06-11 15:30:46 |來源:網(wǎng)絡(luò)轉(zhuǎn)載
0引言
稱重儀(衡器)是重量計(jì)量器具,廣泛用于工業(yè)、交通、商貿(mào)等領(lǐng)域,其測量精度和速度直接影響管理部門決策及物資貿(mào)易結(jié)算效率。隨著電子技術(shù)的發(fā)展,電子稱重儀以其測量精度高、速度快、信號(hào)便于計(jì)算機(jī)控制等優(yōu)點(diǎn)逐漸取代傳統(tǒng)機(jī)械式稱重儀。
FPGA(現(xiàn)場可編程門陣列)具有高集成性、低功耗、內(nèi)部延時(shí)小、隨著FPGA在高速數(shù)據(jù)采集方面的優(yōu)勢,本文設(shè)計(jì)了一款基于FPGA的多路采集電子稱重儀,以EPF10K10LC84-4為控制核心,實(shí)時(shí)采集8路稱重?cái)?shù)據(jù)按通道順序依次顯示于液晶顯示屏,并通過RS232串口通信模塊發(fā)送至上位機(jī)。該系統(tǒng)結(jié)構(gòu)簡單、工作可靠,功能易擴(kuò)展,滿足實(shí)際工程需求。
1系統(tǒng)組成及工作原理
基于FPGA的電子稱重儀主要由信號(hào)調(diào)理電路、A/D采集電路、核心控制器、顯示和通訊電路組成,系統(tǒng)結(jié)構(gòu)如圖1所示。
稱重時(shí),傳感器內(nèi)電阻應(yīng)變片(基體)受到形變使惠斯通電橋失去平衡,輸出級差分電壓。為提高A/D采集精度,需將此信號(hào)經(jīng)過放大、濾波、絕對值轉(zhuǎn)換等調(diào)理電路后接入A/D轉(zhuǎn)換芯片MAX1312。核心控制器FPGA根據(jù)MAX1312工作時(shí)序完成8路稱重?cái)?shù)據(jù)采集,并完成稱重?cái)?shù)據(jù)存儲(chǔ)、液晶屏顯示和串行通訊。
2系統(tǒng)硬件設(shè)計(jì)
2.1稱重傳感器
稱重傳感器利用應(yīng)變測力原理,通過彈性元件將力以形變的形式傳遞給應(yīng)變片。本系統(tǒng)采用型號(hào)為LHD001的電壓型壓力傳感器,靈敏度為2mV/V,供電電壓為6V~15V,稱重傳感器結(jié)構(gòu)圖如圖2所示[1]。其中引線4根:紅色接+5V、綠色為正向輸出IN+、白色為反向輸出信號(hào)IN-、黑色接地。
2.2信號(hào)調(diào)理電路
稱重傳感器靈敏度用于估計(jì)A/D轉(zhuǎn)換的輸入電壓和觸發(fā)門檻電壓[2]。因LHD001型壓力傳感器靈敏度為2mV/V,供電電壓為6V時(shí),輸出電壓不超過12mV。為了與(ADC)MAX13120.3V~5.3V輸入電壓范圍相匹配,需對傳感器輸出信號(hào)進(jìn)行放大調(diào)理。放大倍數(shù)選取時(shí)通常要考慮A/D轉(zhuǎn)換輸入模擬信號(hào)電壓在A/D輸入電壓滿量程左右,即取值277.8左右。選用3片高共模抑制比(CMRR)、低溫漂的OP07組成一個(gè)儀用差分放大器,電路圖如圖3所示。
圖3中,A1和A2形成一級放大,A3形成二級放大,
R1=R2=20kΩ,R3=R4=200Ω,R7=R8=6.8kΩ,
R9=R10=20kΩ,則放大倍數(shù)為:297.06
模擬信號(hào)放大的同時(shí)內(nèi)部高頻噪音也得到放大,為此采用壓控電壓源型二階有源低通濾波電路濾除高頻噪音。傳感器輸出的模擬信號(hào)經(jīng)儀用放大器反向放大,再經(jīng)過低通濾波,此時(shí)信號(hào)為負(fù)值,故采用絕對值電路將此信號(hào)轉(zhuǎn)化為正值輸出。
2.3A/D采集模塊
系統(tǒng)采用Maxim公司12位模數(shù)轉(zhuǎn)換器(ADC)MAX1312完成模數(shù)轉(zhuǎn)換。MAX1312能提供8個(gè)、4個(gè)或2個(gè)獨(dú)立輸入通道,各通道具有獨(dú)立采樣保持(T/H)電路,可支持同時(shí)采樣。8通道同時(shí)轉(zhuǎn)換時(shí)間僅需1.98μs,每個(gè)通道吞吐率為456ksps。FPGA芯片選用ALTERA公司生產(chǎn)的EPF10K10LC84-4,采用可重構(gòu)的CMOSSRAM工藝,內(nèi)嵌功能模塊豐富。A/D采集模塊結(jié)構(gòu)圖如圖4所示。
圖4中,模擬信號(hào)從MAX1312的CH0~CH7輸入,F(xiàn)PGA內(nèi)采樣控制器根據(jù)MAX1312工作時(shí)序?qū)⒛M量轉(zhuǎn)換成12位數(shù)字量D0~D11傳送至FPGA內(nèi)存儲(chǔ)器進(jìn)行數(shù)據(jù)處理。
2.4LCM液晶顯示模塊
LCM液晶顯示模塊由LCD控制器、LCD驅(qū)動(dòng)器、LCD顯示裝置三部分組成。其中,LCD控制器用于與FPGA芯片進(jìn)行溝通,LCD驅(qū)動(dòng)器負(fù)責(zé)點(diǎn)亮LCD顯示裝置。本系統(tǒng)采用的LCM模塊是將LCD控制器、LCD驅(qū)動(dòng)器集成到一塊IC芯片,型號(hào)為HD44780。
2.5通信電路
FPGA通過RS232與上位機(jī)進(jìn)行通訊。本設(shè)計(jì)使用9針接口中2、3、5三個(gè)管腳進(jìn)行通信。由于FPGA是使用3.3V系統(tǒng),而RS232信號(hào)使用負(fù)邏輯,邏輯0電壓范圍是+5V~+15V,而邏輯1的電壓范圍是-15V~-5V,所以使用SP3232E進(jìn)行
RS232電平轉(zhuǎn)換[4]。
3系統(tǒng)軟件設(shè)計(jì)
3.1采樣控制器
首先配置寄存器,選擇需要轉(zhuǎn)換的A/D通道。然后通過CONVST發(fā)出開始轉(zhuǎn)換信號(hào),八個(gè)通道開始轉(zhuǎn)換。AD1_EOC_in用于計(jì)數(shù),計(jì)滿8次后表示8個(gè)通道數(shù)據(jù)采集完成,此時(shí)AD1_EOLC_in轉(zhuǎn)為低電平。EOLC為8信號(hào)通道數(shù)據(jù)采集完成標(biāo)志,EOLC跳變到低電平表明最后一個(gè)通道轉(zhuǎn)換借宿,此時(shí)將數(shù)據(jù)存入FIFO,結(jié)束數(shù)據(jù)采集并進(jìn)入新循環(huán)。圖5是MAX1312采樣控制狀態(tài)圖。
系統(tǒng)上電或重啟后進(jìn)入狀態(tài)ST0,實(shí)現(xiàn)A/D參數(shù)初始化,并保持一段時(shí)延;FPGA對CONVST產(chǎn)生觸發(fā)信號(hào)(上升沿)啟動(dòng)A/D轉(zhuǎn)換,進(jìn)入狀態(tài)ST1,否則繼續(xù)保持ST0EOC是A/D轉(zhuǎn)換結(jié)束1次的標(biāo)
志ST2狀態(tài)中采用計(jì)數(shù)器對EOC下降沿計(jì)數(shù)當(dāng)計(jì)滿8后表示通道轉(zhuǎn)換結(jié)束,進(jìn)入狀態(tài)ST3;ST3中,通過檢測進(jìn)程中的AD_convst_end信號(hào)結(jié)束判斷是否讀取轉(zhuǎn)換后的數(shù)據(jù);狀態(tài)ST4是將8通道A/D采集的數(shù)據(jù)發(fā)送至FIFO;狀態(tài)ST5是將讀取到的數(shù)據(jù)傳送至SLAVEFIFO;數(shù)據(jù)存儲(chǔ)完成后,F(xiàn)IFO_tran_end置有效信號(hào),轉(zhuǎn)變到初始狀態(tài),完成對A/D的采集與傳輸。
3.2LCD顯示模塊
3.2.1譯碼模塊設(shè)計(jì)
為了能在LCD模塊上正常顯示,A/D轉(zhuǎn)換后的二進(jìn)制數(shù)據(jù)需先轉(zhuǎn)換為BCD碼并移位送給LCM模塊。將十二位數(shù)據(jù)輸入后左移一位,檢測個(gè)、十、百位是否滿5,滿5則對該位數(shù)加3并向左移動(dòng)一位,再進(jìn)行如上檢測,直至轉(zhuǎn)換為20位BCD碼。定義五個(gè)四位總線類型的寄存器變量,將20位BCD碼從低到高四位一組依次賦給寄存器變量,并從bcd1、bcd2、bcd3、bcd4、bcd5端口輸出,分位模塊如圖6所示。
3.2.2稱重顯示模塊設(shè)計(jì)
FPGA按時(shí)序驅(qū)動(dòng)LCD:首先預(yù)熱LCD(全0指令)進(jìn)行功能設(shè)置;設(shè)置顯示狀態(tài)、屏幕畫面移動(dòng)方式和光標(biāo)移動(dòng)方式,然后清除顯示畫面;設(shè)置顯示模式(設(shè)置幾行顯示);最后打開畫面進(jìn)入數(shù)據(jù)采集流程。輸入地址選擇LCD顯示位置,然后將需要顯示的數(shù)據(jù)與ASCⅡ碼表進(jìn)行對照,譯碼輸出。LCD控制模塊如圖7所示。
其中,shuju5~shuju1為五位數(shù)字的每位BCD碼輸入端。Cont端接入地址計(jì)數(shù)信號(hào),每來1個(gè)cont脈沖輸出1個(gè)數(shù)據(jù),先輸出字符串‘Weight:’,然后將jishu5~jishu1輸入的數(shù)值依次顯示,在第三位的時(shí)候插入小數(shù)點(diǎn),抵消前面數(shù)值擴(kuò)大倍數(shù)1000倍。Select_out信號(hào)用于選擇輸出的十二位二進(jìn)制數(shù)是指令還是數(shù)值。Enable直接提供反時(shí)鐘信號(hào)進(jìn)行使能控制。Rw_out信號(hào)控制讀寫模式,此處設(shè)為0,用于寫信號(hào)。
3.3系統(tǒng)通訊模塊
因同時(shí)采集8通道稱重?cái)?shù)據(jù),系統(tǒng)通訊模塊傳輸數(shù)據(jù)量大。為提高通信速度,采用同步通信方式,即通過同步字符在每個(gè)數(shù)據(jù)塊傳送開始時(shí)間使收發(fā)雙方同步?;赨ART協(xié)議發(fā)送模塊如圖8所示。
圖中,clk為50MHz系統(tǒng)時(shí)鐘,Wm為發(fā)送使能端,din[7..0]接轉(zhuǎn)碼模塊處理完的數(shù)據(jù),sdo接PC機(jī)。讀入一組8位串行數(shù)據(jù)din[7..0]到內(nèi)部寄存器,從最低位開始一位一位輸出,每一位輸出后8位數(shù)據(jù)向右移一位,最高位補(bǔ)0,實(shí)現(xiàn)數(shù)據(jù)串行發(fā)送。
4系統(tǒng)標(biāo)定
實(shí)驗(yàn)采用8個(gè)重量分別為0.710kg、0.820kg、0.745kg、0.795kg、0.765kg、0.770kg、0.515kg、0.785kg的鐵塊作為實(shí)驗(yàn)待測樣本,待測鐵塊從同一通道輸入,測得稱重重量與模擬信號(hào)經(jīng)放大反向后輸出電壓間數(shù)據(jù),并用最小二乘法曲線擬合后如圖9所示。
圖9觀測到傳感器壓力信號(hào)與轉(zhuǎn)變后電信號(hào)間為線性關(guān)系,用最小二乘法線性擬合后關(guān)系式為y=7.222(x-0.0024),其中x為電壓值,單位V;y為重量,單位kg;7.222為標(biāo)定系數(shù);0.0024為零點(diǎn)電壓值。
5結(jié)束語
實(shí)驗(yàn)測試表明:所設(shè)計(jì)開發(fā)的基于FPGA的電子稱重儀性能可靠、操作簡單、測量精度較高,同時(shí)利用FPGA高集成性、I/O口多的優(yōu)勢,容易滿足功能擴(kuò)展和系統(tǒng)升級要求,具有很高的實(shí)用價(jià)值。
本文源于網(wǎng)絡(luò)轉(zhuǎn)載,如有侵權(quán),請聯(lián)系刪除