基于MXT8051通用配料控制器的設(shè)計(jì)
引言
本文引用地址:http://www.ex-cimer.com/article/110392.htm混凝土是建筑行業(yè)最重要的材料,在混凝土的生產(chǎn)原料中,除水泥、沙石外最重要的原料當(dāng)屬減水劑,減水劑是一種表面活性材料,加入后對水泥顆粒起擴(kuò)散作用,把水泥膠體中包含的游離水釋放出來,雖然其在混凝土中比例微小,但作用巨大,可減少拌合用水,改善和易性,節(jié)約水泥,提高強(qiáng)度。
減水劑復(fù)配裝置主要解決的是減水劑的生產(chǎn)、稀釋、分裝等生產(chǎn)過程,目前多數(shù)減水劑復(fù)配裝置控制系統(tǒng)的解決方案是“重儀表+PLC+HMI”或“稱重儀表+工控機(jī)+IO板”的方案,在實(shí)施過程中發(fā)現(xiàn),這些方案成本高,穩(wěn)定性可靠性差,不適用于一些成本敏感的項(xiàng)目。
根據(jù)上述需求,本文以時(shí)代民芯科技的MXT8051芯片為核心設(shè)計(jì)并測試了通用配料控制器,其集成了稱重儀表、PLC、LCD顯示等功能,很好的滿足了減水劑復(fù)配控制的需求,如需應(yīng)用到其他行業(yè),只需將軟件稍加修改即可。
總體方案設(shè)計(jì)
本文采用MXT8051芯片驅(qū)動(dòng)稱重芯片,讀取稱重傳感器數(shù)值,根據(jù)預(yù)先設(shè)定的配方數(shù)據(jù)進(jìn)行自動(dòng)產(chǎn)品復(fù)配操作,包括自動(dòng)加水、自動(dòng)添加配料(固態(tài)或液態(tài))、自動(dòng)攪拌、自動(dòng)出料等操作。
系統(tǒng)使用16位7段液晶顯示器顯示重量信息、設(shè)定信息、狀態(tài)信息等,通過5個(gè)按鍵進(jìn)行參數(shù)設(shè)定、系統(tǒng)標(biāo)定、運(yùn)行控制、顯示控制等操作。
配方可由RS232或RS485連接到上位機(jī)進(jìn)行,上位機(jī)軟件可讀取、裝載配方數(shù)據(jù),也可實(shí)時(shí)讀取稱重?cái)?shù)據(jù)。
上位機(jī)軟件采用VB.NET 2005開發(fā),可設(shè)置串行通信參數(shù)、測試控制器IO、讀取稱重?cái)?shù)值、管理配方數(shù)據(jù)等。
硬件設(shè)計(jì)
MXT8051是以高速單指令周期 8051 為核的 MCU。擁有豐富的外設(shè),包括 PWM、UART、WDT、Timer 等,1KB大容量外部RAM,內(nèi)嵌 32Kx8 可在線編程 FLASH,10 位 ADC,8位DAC,若干OP,36x4 LCD driver、POR以及可編程增益放大器(PGA)等模擬電路。電路集成片上調(diào)試系統(tǒng),通過標(biāo)準(zhǔn) JTAG接口,快速診斷復(fù)雜 SoC,該調(diào)試系統(tǒng)具有不占用任何硬件資源,支持全速運(yùn)行、單步運(yùn)行、硬件斷點(diǎn)、軟件斷點(diǎn)以及觀察內(nèi)部特殊功能寄存器、程序指針和內(nèi)部RAM 等功能。上位機(jī)通過標(biāo)準(zhǔn) JTAG 接口以及用戶定義指令執(zhí)行在線編程和在線調(diào)試。
稱重專用芯片HX711
HX711是一款專為高精度電子秤設(shè)計(jì)的24位AD轉(zhuǎn)換器芯片。與同類型其它芯片相比,該芯片集成了包括穩(wěn)壓電源、片內(nèi)時(shí)鐘振蕩器等其它同類型芯片所需的外圍電路,具有集成度高、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)點(diǎn)。
硬件電路設(shè)計(jì)
圖2 所示為系統(tǒng)硬件電路設(shè)計(jì)框圖,系統(tǒng)設(shè)計(jì)成兩塊電路板,IO板和MCU板。MCU板上集成有HX711稱重專用24位Σ-ΔDA轉(zhuǎn)換芯片,RS232或RS485通信,16位7段LCD顯示,IO板上集成有7路繼電器IO輸出,5路光電隔離IO輸入,一路模擬量輸出,2路模擬量輸入,1路PWM光電隔離輸出,5鍵鍵盤輸入。
HX711外圍電路以及電壓基準(zhǔn)電路設(shè)計(jì),采用TL431芯片,通過電阻設(shè)定成5V輸出,同時(shí)作為傳感器電橋激勵(lì)和HX711的參考電壓,這樣可以有效抵消溫漂造成的系統(tǒng)誤差(如圖3所示)。
軟件設(shè)計(jì)
控制器軟件設(shè)計(jì)
HX711芯片的串口通訊線由管腳 PD_SCK 和 DOUT 組成,用來輸出數(shù)據(jù),選擇輸入通道和增益。 當(dāng)數(shù)據(jù)輸出管腳 DOUT 為高電平時(shí),表明AD 轉(zhuǎn)換器還未準(zhǔn)備好輸出數(shù)據(jù),此時(shí)串口時(shí)鐘輸入信號 PD_SCK 應(yīng)為低電平。當(dāng) DOUT 從高電平變低電平后,PD_SCK 應(yīng)輸入25至27個(gè)不等的時(shí)鐘脈沖(如圖4)。其中第一個(gè)時(shí)鐘脈沖的上升沿將讀出輸出 24 位數(shù)據(jù)的最高位(MSB),直至第 24 個(gè)時(shí)鐘脈沖完成,24位輸出數(shù)據(jù)從最高位至最低位逐位輸出完成。第25至27個(gè)時(shí)鐘脈沖用來選擇下一次AD轉(zhuǎn)換的輸入通道和增益,見表1。
PD_SCK 的輸入時(shí)鐘脈沖數(shù)不應(yīng)少于25和多于27,否則會造成串口通訊錯(cuò)誤。 當(dāng) AD 轉(zhuǎn)換器的輸入通道或增益改變時(shí),AD轉(zhuǎn)換器需要4個(gè)數(shù)據(jù)輸出周期才能穩(wěn)定。DOUT 在4 個(gè)數(shù)據(jù)輸出周期后才會從高電平變低電平,輸出有效數(shù)據(jù)。
根據(jù)圖4所示的時(shí)序邏輯,讀取通道A,增益128倍,其讀取函數(shù)如下:
unsigned int ReadCount()
{
unsigned int ADval;
unsigned long Count;
unsigned char i;
PCR0 = 0xFB; //避免與I2C總線沖突
ADSK = 0;
Count = 0;
while(ADDO);
for (i=0;i<24;i++)
{
ADSK = 1;
Count = Count<<1;
ADSK = 0;
if(ADDO) Count++;
}
ADSK = 1;
;
ADSK = 0;
//判斷是否為負(fù)值,并顯示符號
if((Count & 0x800000) == 0x800000)
{
Count = ~(Count - 1);
LCDDATA16 |= 0x80;
}
else
{
LCDDATA16 = 0x00;
}
ADval = (int)(Count >> 8);//取高十六位有效值
B_AdFinish = 1;
return(ADval);
}
主程序流程如圖5所示。
程序主要由初始化代碼和主循環(huán)代碼構(gòu)成。
上位機(jī)軟件設(shè)計(jì)
上位機(jī)軟件采用VB.NET 2005開發(fā),主要功能為串行通信參數(shù)設(shè)置、IO測試、稱重?cái)?shù)值讀取、配方數(shù)據(jù)管理。
軟件運(yùn)行界面如圖6所示。
該軟件的固件技術(shù)為串行指令的接收和發(fā)送,指令包括IO設(shè)定指令、IO狀態(tài)讀取指令、稱重?cái)?shù)值讀取指令、配方數(shù)據(jù)寫指令、配方數(shù)據(jù)讀指令,其代碼實(shí)現(xiàn)如下:
'0.5秒定時(shí)發(fā)送 讀重量指令
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
command(0) = &H5A
If SerialPort1.IsOpen Then
SerialPort1.Write(command, 0, 1)
End If
End Sub
十六進(jìn)制數(shù)5A 表示讀取控制器的稱重?cái)?shù)值;
'IO輸出 指令
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.Checked Then
command(0) = &HF9
Else
command(0) = &HF1
End If
If SerialPort1.IsOpen Then
SerialPort1.Write(command, 0, 1)
End If
End Sub
十六進(jìn)制數(shù)F?表示該指令為IO輸出指令,其中第3位數(shù)據(jù)表示開關(guān)狀態(tài),1表示閉合,0表示斷開,0,1,2位合起來表示IO通道號;
'讀取輸入信息
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
command(0) = &HF0
If SerialPort1.IsOpen Then
SerialPort1.Write(command, 0, 1)
End If
End Sub
十六進(jìn)制數(shù)F0表示該指令為IO狀態(tài)讀取指令,當(dāng)單片機(jī)接到此指令時(shí),立即發(fā)送重量信息給上位機(jī),格式如下:“I_?”,其中 ?即各個(gè)IO的狀態(tài),用1表示接通,0表示關(guān)斷。
結(jié)語
目前,我國半導(dǎo)體產(chǎn)業(yè)落后于西方巨頭,時(shí)代民芯作為國產(chǎn)半導(dǎo)體產(chǎn)業(yè)的領(lǐng)軍企業(yè),擁有雄厚的基礎(chǔ),本文以時(shí)代民芯科技的MXT8051單片機(jī)為核心,研發(fā)通用配料控制器,因?yàn)樵撔酒瑩碛胸S富的片內(nèi)資源,可以簡化設(shè)計(jì),同時(shí),選用國產(chǎn)芯片,也是為民族半導(dǎo)體產(chǎn)業(yè)振興添磚加瓦。
本文的通用配料控制器,除了可以提高減水劑復(fù)配效率,改善產(chǎn)品質(zhì)量外,還可應(yīng)用于其他相關(guān)的物料復(fù)配行業(yè)。此外,由于設(shè)計(jì)和測試時(shí)間有限,該控制器設(shè)計(jì)中還存在很多遺憾,有很大改進(jìn)空間,比如:可以應(yīng)用片內(nèi)運(yùn)放調(diào)節(jié)零點(diǎn),提高稱重精度;也可以將開關(guān)電源集成入控制器,這樣可進(jìn)一步降低用戶成本,并節(jié)省空間。
參考文獻(xiàn):
【1】MXT8051芯片數(shù)據(jù)手冊,時(shí)代民芯科技,2009年
【2】HX711中文 數(shù)據(jù)手冊,芯??萍迹?006年
【3】51單片機(jī)C語言應(yīng)用開發(fā)技術(shù)大全,人民郵電出版社,劉坤等,2008 年
【4】Visual Basic 2005高級編程,(美)Bill Evjen, Billy Hollis, Rockford Lhotka 等 ,2006 年
51單片機(jī)相關(guān)文章:51單片機(jī)教程
c語言相關(guān)文章:c語言教程
稱重傳感器相關(guān)文章:稱重傳感器原理
評論