駱琳+冬瑛
(中國(guó)計(jì)量大學(xué) 浙江杭州 310018)
摘要:電子秤是利用稱重傳感器作為變換元件,把被稱物體的重量按一定的比例關(guān)系轉(zhuǎn)換成與其相應(yīng)的電信號(hào),用電子儀表進(jìn)行測(cè)量和顯示的裝置。本系統(tǒng)以STM32單片機(jī)為主控芯片,外圍附以稱重電路、顯示電路、報(bào)警電路、鍵盤電路等構(gòu)成智能稱重系統(tǒng)電路板,從而實(shí)現(xiàn)自動(dòng)稱重系統(tǒng)的稱重功能、報(bào)警功能、數(shù)據(jù)計(jì)算功能以及人機(jī)交換功能??梢哉f(shuō),此設(shè)計(jì)所完成的電子秤很大程度上滿足了應(yīng)用需求。
關(guān)鍵詞: STM32;電子秤;人機(jī)交換;傳感器
基于單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)要求利用改變脈沖的頻率和順序來(lái)實(shí)現(xiàn)步進(jìn)電機(jī)的速度調(diào)節(jié),啟動(dòng)、停止,正轉(zhuǎn)、反轉(zhuǎn)等一系列功能。通過(guò)的單片機(jī)和計(jì)算機(jī)通信、人機(jī)界面設(shè)計(jì)實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的遠(yuǎn)距離監(jiān)控和控制。人機(jī)界面由VB語(yǔ)言來(lái)設(shè)計(jì),它們之間的通信是通過(guò)RS232的串口實(shí)現(xiàn)的。
1 步進(jìn)電機(jī)的控制方法
SCM(Single Chip Microcomputer)是把組成微型計(jì)算機(jī)的中央處理器、存儲(chǔ)器、輸入輸出接口電路、定時(shí)器或計(jì)數(shù)器等制作在一塊集成電路芯片中,它具有小巧、低功耗、指令系統(tǒng)豐富等優(yōu)點(diǎn)。
PLC(Programmable Logic Controller)是以微型計(jì)算機(jī)為核心的一種工控機(jī)。其控制方案能事先進(jìn)行模擬調(diào)試,自身設(shè)計(jì)采用了冗余措施和容錯(cuò)技術(shù)。由于PLC通用性強(qiáng),編程操作方便,擴(kuò)展靈活,可靠性高。
FPGA(Field Programmable Gate Array)它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
由于單片機(jī)集CPU、RAM、ROM、CTC、I/O于一體,具有集成度高、軟件資源豐富、控制功能和位尋址功能強(qiáng)、軟硬件的設(shè)計(jì)比較方便,因此本設(shè)計(jì)采用單片機(jī)來(lái)控制步進(jìn)電機(jī)。
1.1改變控制方式的變速控制
在四相步進(jìn)電機(jī)中,啟動(dòng)或者停止時(shí),用四相八拍,大約在0.1s以后,改用四相四拍的分配方式;在快達(dá)到終點(diǎn)時(shí),在采用四相八拍的控制方式,以達(dá)到減速控制的目的。
1.2均勻地改變脈沖時(shí)間間隔的變速方式
步進(jìn)電機(jī)的加速、減速控制,可以用均勻地改變脈沖時(shí)間間隔來(lái)實(shí)現(xiàn)。例如。在加速控制中,可以均勻地減少延時(shí)時(shí)間間隔;在加速控制中,則可以均勻地增加延時(shí)時(shí)間間隔。所以,改變傳送控制字的時(shí)間間隔既改變延時(shí)時(shí)間,即可改變步進(jìn)電機(jī)的控制頻率。這種控制的優(yōu)點(diǎn)是,延時(shí)時(shí)間不受限制,使得步進(jìn)電機(jī)的工作頻率變化范圍較寬。
1.3采用定時(shí)器的變速控制
在本次設(shè)計(jì)中,采用單片機(jī)內(nèi)部的定時(shí)器來(lái)提供延時(shí)時(shí)間。實(shí)現(xiàn)的方法是將定時(shí)器初始化,每隔一定的時(shí)間,有定時(shí)器向CPU申請(qǐng)一次中斷。CPU相應(yīng)中斷后,便發(fā)出一次控制脈沖。此時(shí),只要均勻地改變定時(shí)器時(shí)間常數(shù),就可以達(dá)到均勻加速或減速的目的。采用這種控制方法可以提高控制系統(tǒng)的效率。具體的實(shí)現(xiàn)方式見(jiàn)程序程序設(shè)計(jì)部分。
2 上位機(jī)的設(shè)計(jì)考慮
上位計(jì)算機(jī)的人機(jī)互動(dòng)界面采用VB語(yǔ)言來(lái)編寫。VB是Visual Basic簡(jiǎn)稱,是Microsoft公司推出的一種Windows應(yīng)用程序開(kāi)發(fā)工具。是一種可視化的、面向?qū)ο?、采用事件?qū)動(dòng)方式的結(jié)構(gòu)化高級(jí)程序設(shè)計(jì)語(yǔ)言,可用在Windows環(huán)境下各種應(yīng)用程序的開(kāi)發(fā)。在Visual Basic環(huán)境下,利用事件驅(qū)動(dòng)的編程機(jī)制、新穎易用的可視化設(shè)計(jì)工具,使用Windows內(nèi)部的廣泛應(yīng)用程序接口(API)函數(shù),動(dòng)態(tài)鏈接庫(kù)(DLL)、對(duì)象鏈接與嵌入(OLE)、開(kāi)放式數(shù)據(jù)連接(ODBC)等技術(shù),可以高效、快速地開(kāi)發(fā)Windows環(huán)境下功能強(qiáng)大、圖形界面豐富的應(yīng)用軟件系統(tǒng)今世界上使用最廣泛的編程語(yǔ)言之一,被公認(rèn)為是編程效率最高的一種編程方法。另外,PC計(jì)算機(jī)與單片機(jī)系統(tǒng)通信控制,特別是利用VB(或VC)編程語(yǔ)言進(jìn)行控制界面設(shè)計(jì)控制對(duì)象的操作是單片機(jī)系統(tǒng)應(yīng)用發(fā)展的最前端技術(shù),也是單片機(jī)多年來(lái)得以生存的主要原因。
3 上位機(jī)與硬件設(shè)備的通信
MSComm控件全稱為Microsoft Communications Control,是Microsoft公司提供的串行通信編程ActiveX控件,它既可以用來(lái)提供簡(jiǎn)單的串行端口通信功能,也可以用來(lái)創(chuàng)建功能完備的、事件驅(qū)動(dòng)的高級(jí)通信工具。使用MSComm控件可以建立串行端口的連接,通過(guò)串行端口連接到其它通信設(shè)備,發(fā)出命令,交換數(shù)據(jù),以及監(jiān)視和響應(yīng)串行連接中發(fā)生的事件和錯(cuò)誤。在程序設(shè)計(jì)中,可以在OnComm事件處理函數(shù)中加入自己的處理代碼,一旦事件發(fā)生,即可自動(dòng)執(zhí)行該段程序。程序響應(yīng)及時(shí),可靠性高。
1.MSComm控件通信步驟
完成以下步驟,就可以構(gòu)建自己的串行通信傳輸系統(tǒng)了:加入通信部件即MSComm對(duì)象;設(shè)置通信端口號(hào),即CommPort屬性;設(shè)置通信協(xié)議,即HandShaking屬性;設(shè)置傳輸速度等參數(shù),即Setting屬性;設(shè)置其它參數(shù),必要時(shí)再加上其它屬性設(shè)置;打開(kāi)通信端口,即PortOpen屬性設(shè)置成True;送出字符串或讀入字符串,使用Inport及Output屬性;使用完MSComm通信對(duì)象后將通信端口關(guān)閉,即將PortOpen屬性設(shè)置成False;
2.Visual Basic程序訪問(wèn)串口的方式
串行端口的本質(zhì)功能是作為CPU和串口設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)據(jù)從CPU經(jīng)過(guò)串行端口發(fā)送出去時(shí),字節(jié)數(shù)據(jù)被裝換成串行的位;在接收數(shù)據(jù)時(shí),串行的位將被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。
要完成數(shù)據(jù)的傳輸,在操作系統(tǒng)一邊,Windows使用通信驅(qū)動(dòng)程序以便應(yīng)用程序能夠使用標(biāo)準(zhǔn)的Windows API函數(shù)來(lái)發(fā)送和接收數(shù)據(jù)。使用MSComm控件時(shí),實(shí)際上就是使用了API函數(shù),API函數(shù)將被Comm.drv解釋并傳輸給外圍設(shè)備驅(qū)動(dòng)程序。在設(shè)計(jì)過(guò)程中只需設(shè)置和監(jiān)視通信控件MSComm所提供的屬性或事件,以驅(qū)動(dòng)API函數(shù)的接口完成工作。
對(duì)于串口通信,Windows為相應(yīng)的串口設(shè)備開(kāi)放了用戶定義的輸入緩沖區(qū)和輸出緩沖區(qū),應(yīng)用程序只能對(duì)輸入/輸出緩沖區(qū)進(jìn)行操作,數(shù)據(jù)進(jìn)出串口的操作均由系統(tǒng)后臺(tái)完成。以接受為例,系統(tǒng)每接收到一個(gè)字符就產(chǎn)生一個(gè)低級(jí)的硬件中斷,系統(tǒng)的串口驅(qū)動(dòng)程序?qū)⒔邮盏降淖址腿刖彌_區(qū),此時(shí)應(yīng)用程序就可以通過(guò)訪問(wèn)輸入緩沖區(qū)得到的字符信息。
4 結(jié)語(yǔ)
利用STM32單片機(jī)為微控制器的下位機(jī)系統(tǒng)和以計(jì)算機(jī)為上位機(jī)的步進(jìn)電機(jī)控制系統(tǒng),用軟件編程代替咯步進(jìn)控制器,使得電路簡(jiǎn)化,成本降低,可靠性增加,可以靈活的改變步進(jìn)電機(jī)的控制方案,不需要邏輯電路組成時(shí)序發(fā)生器,軟件編程可靈活產(chǎn)生步進(jìn)電機(jī)勵(lì)磁序列來(lái)控制步進(jìn)電機(jī)的運(yùn)行速度和方向。用這種方式設(shè)計(jì)步進(jìn)電機(jī)控制系統(tǒng)順應(yīng)了目前國(guó)內(nèi)外控制系統(tǒng)微機(jī)化發(fā)展的趨勢(shì),充分利用了單片機(jī)的優(yōu)點(diǎn),使得通用性得到了提高。
參考文獻(xiàn):
[1] 張強(qiáng),吳紅星,謝宗武.基于單片機(jī)的電動(dòng)機(jī)控制技術(shù)[M].北京:中國(guó)電力出版社,2008.4.
[2] 王海波,吳曉光,李沛.基于AT89S52單片機(jī)的步進(jìn)電機(jī)控制系統(tǒng)設(shè)計(jì)[J].萬(wàn)方數(shù)據(jù),2009,(11):161- 162.
[3] 黃津津,王盈瑛,辛利.Visual Basic程序設(shè)計(jì)[M].北京:人民郵電出版社, 2010.