摘 要:以AT89S52 單片機和單總線數(shù)字溫度傳感器DS18B20 及步進電機為主要器件制作測控電路。上位機以溫度為主要參數(shù),通過串口控制步進電機的正轉、反轉和加速、減速。C51 程序實現(xiàn)對傳感器的數(shù)據(jù)采集和與上位機的串行通信,LabVIEW實現(xiàn)測溫波形動態(tài)顯示、數(shù)據(jù)存儲、越限報警和電機控制。經(jīng)實際運行,系統(tǒng)能夠較好地控制步進電機,可用于需要及時檢測溫度并進行步進電機控制的場合。
關鍵詞:單片機 LabVIEW DS18B20 步進電機
1 引 言
LabVIEW是美國國家儀器公司(National Instrument)開發(fā)的一種虛擬儀器平臺。他是一種圖形化編程語言,具有強大功能,提供了豐富的數(shù)據(jù)采集、分析和存儲庫函數(shù),比傳統(tǒng)的文本式語言更具有優(yōu)勢。但用LabVIEW開發(fā)的虛擬儀器通常需要價格昂貴的數(shù)據(jù)采集硬件,而以單片機為核心的數(shù)據(jù)采集與處理系統(tǒng)雖然硬件成本較低,但開發(fā)過程較為復雜,編程工作量較大。如果將以單片機為核心的小系統(tǒng)作為前端的數(shù)據(jù)采集系統(tǒng),通過LabVIEW提供的串口子VI 將采集到的數(shù)據(jù)傳送到上位機,在LabVIEW環(huán)境下對數(shù)據(jù)進行處理與分析,并進行相關控制,既可充分利用LabVIEW的強大功能,又可降低系統(tǒng)的開發(fā)成本,成為擴展LabVIEW應用范圍的一個途徑。
本系統(tǒng)以AT89S52 單片機和單總線數(shù)字溫度傳感器DS18B20 組成前端數(shù)據(jù)采集系統(tǒng),以同一單片機和步進電機驅動電路組成后端控制系統(tǒng)。單片機通過串行通信電路,將采集的溫度數(shù)據(jù)傳給上位機,上位機程序采用Lab2VIEW編寫,可實現(xiàn)動態(tài)顯示測溫波形、存儲數(shù)據(jù)和設定報警溫度等功能,并可根據(jù)不同的報警溫度通過串口控制單片機,驅動步進電機正反轉和加減速,也可直接手動控制電機的運轉。系統(tǒng)可用于需要及時檢測溫度并進行步進電機控制的場合,也可擴展為以上位機為控制中心,由多個前端數(shù)據(jù)采集系統(tǒng)實現(xiàn)多點測溫,并由不同的后端控制系統(tǒng)實現(xiàn)不同的控制功能。
2 系統(tǒng)組成
系統(tǒng)由單片機、溫度采集電路、步進電機控制電路和RS 232 接口電路為主,在此基礎上擴展了時鐘電路、鍵盤輸入及LCD 顯示電路、聲光報警電路和I[sup]2[/sup]C 總線E[sup]2[/sup] PROM 存儲器等部分。單片機采用Atmel 公司的AT89S52 ,具有ISP在線編程功能和8 kB 的FLASH。由于其程序存儲器空間較大,故不須外接存儲單元就可以完成LCD 字庫的存儲等功能。晶體振蕩頻率為11. 059 2 MHz ,可實現(xiàn)與計算機間的精確通信。系統(tǒng)結構框圖如圖1 所示。
3 硬件電路設計
3. 1 溫度采集電路的設計
溫度傳感器采用由DALLAS 半導體公司生產的1 -wire 數(shù)字溫度傳感器DS18B20 ,其性能特點如下:
(1) 采用單總線專用技術,既可通過串行口線,也可通過其他I/ O 口線與微機接口,無須經(jīng)過其他變換電路,直接輸出被測溫度值(9 位二進制數(shù),含符號位);
(2) 測溫范圍為- 55 ~ + 125 ℃, 測量分辨率為0. 062 5 ℃[1 ] ;
(3) 內含64 位經(jīng)過激光修正的只讀存儲器ROM;
(4) 適配各種單片機或系統(tǒng)機;
(5) 用戶可分別設定各路溫度的上、下限;
(6) 內含寄生電源。
[align=center]

圖1 系統(tǒng)結構框圖[/align]
DS18B20 與單片機的接口簡單,只需將DS18B20 的信號線與單片機的一位雙向端口相連即可[sup][1 ][/sup] 。其供電方式分寄生電源方式:VDD 和GND 端均接地;外接電源方式:VDD 端用3~5. 5 V 電源供電。本系統(tǒng)中DS18B20 采用外接電源方式。
CPU 對DS18B20 的訪問流程是:先對DS18B20 初始化,再進行ROM 操作命令,最后才能對存儲器進行讀寫操作。DS18B20 每一步操作都要遵循嚴格的工作時序和通信協(xié)議。如主機控制DS18B20 完成溫度轉換這一過程,根據(jù)DS18B20 的通訊協(xié)議,須經(jīng)3 個步驟:每一次讀寫之前都要對DS18B20 進行復位, 復位成功后發(fā)送一條ROM 指令,最后發(fā)送RAM 指令,這樣才能對DS18B20 進行預定的操作。
3. 2 時鐘電路DS1302
DS1302 是美國DALLAS 公司推出的一種高性能、低功耗、帶RAM 的實時時鐘電路,他可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2. 5~5. 5 V。采用三線接口與CPU 進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM 數(shù)據(jù)。DS1302 內部有一個31 ×8 的用于臨時性存放數(shù)據(jù)的RAM 寄存器。
DS1302 與單片機的連接需要3 條線,即SCL K, I/ O ,RST。DS1302 增加了主電源/ 后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力。備用電源可以用電池或者超級電容器(0. 1 F 以上) 。本系統(tǒng)對時間沒有特殊要求,故采用漏電較小的普通電解電容器作為備用電源,100μF 就可以保證1 h 的正常走時。
3. 3 步進電機控制電路
步進電機是一種將電脈沖轉化為角位移的執(zhí)行機構,通過控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的,由于其沒有積累誤差的特點,被廣泛應用于各種開環(huán)控制。本系統(tǒng)步進電機采用兩相雙極性電機, 步距角為3. 75°。驅動部分采用達林頓管TIP122 和TIP127 組成雙極性橋式驅動電路,由于兩相的驅動方式完全相同,因此圖2只給出其中一相的驅動方式。單片機與驅動電路之間采用光電耦合器4N25 進行電氣隔離,增加系統(tǒng)穩(wěn)定性。
[align=center]

圖2 步進電機其中一相的驅動電路[/align]
3. 4 鍵盤、LCD 顯示和聲光報警電路
系統(tǒng)的鍵盤有3 個,分別是加鍵、減鍵和確定鍵,可以設置系統(tǒng)時間和DS18B20 的報警溫度。LCD 采用的是12864 型,共有128 行,64 列。顯示的主要內容有:
(1) 當前時間,格式為:年/ 月/ 日/ 星期/ 時/ 分/ 秒;
(2) 采樣的實時溫度值;
(3) 系統(tǒng)時間設定、鬧鐘時間設定和溫度設定界面。
聲光報警電路主要由發(fā)光二級管和小喇叭組成,當采樣溫度超過報警溫度時自動報警。
3. 5 I[sup]2[/sup] C 總線E[sup]2[/sup] PROM
I2C( Inter - Integrated Circuit) 總線是一種由PHILIPS公司開發(fā)的兩線式串行總線,用于連接微控制器及其外圍設備。兩根信號線一是雙向的數(shù)據(jù)線SDA ,另一是時鐘線SCL 。I[sup]2[/sup]C 總線支持主/ 從雙向通訊,主器件和從器件都可工作于接收和發(fā)送狀態(tài)。最高傳送速率為100 kb/ s[sup][2 ][/sup] 。
系統(tǒng)中采用AT24C01 串行E[sup]2[/sup] PROM,具有I[sup]2[/sup]C 總線接口功能,功耗小、寬電源電壓(根據(jù)不同型號2. 5~6. 0 V) ,工作電流約為3 mA ,靜態(tài)電流隨電源電壓改變,界于30~110μA 之間。具有128 B 存儲空間,可在系統(tǒng)掉電后保存設置好的DS18B20 的報警溫度。
系統(tǒng)中主器件為單片機, 由單片機產生串行時鐘(SCL) ,控制總線的傳輸方向,并產生起始和停止條件。SDA 線上的數(shù)據(jù)狀態(tài)僅在SCL 為低電平期間才能改變,SCL 為高電平期間,SDA 狀態(tài)的改變被用來表示起始和停止條件。
3. 6 RS 232 接口電路
通過RS 232 接口電路,系統(tǒng)能夠與上位機進行通信,將采樣溫度傳給上位機,并接受上位機的步進電機控制指令。另外, 也可以通過上位機調整系統(tǒng)的時間和報警溫度。
4 上位機程序
上位機程序采用美國NI 公司的圖形化編程語言LabVIEW 8. 2 編寫[sup][3 ][/sup] 。按照功能模塊劃分為: 串口通信模塊、數(shù)據(jù)顯示和存儲模塊、參數(shù)設定模塊、步進電機控制模塊等。部分操作界面如圖3 所示。
[align=center]

圖3 LabVIEW部分操作界面[/align]
4. 1 串口通信模塊
串口通信模塊包括Visa Configure Serail Port VI ,Vi2sa Write VI , Visa Read VI 以及Visa Close VI[sup][4 ] [/sup]。其功能是:
(1) 實現(xiàn)串口的基本參數(shù)設定,如波特率、緩存區(qū)大小、奇偶校驗位、數(shù)據(jù)位數(shù)和是否包含結束位等;
(2) 實現(xiàn)單片機與上位機之間的數(shù)據(jù)傳輸。程序中,波特率選用9 600 ,8 位數(shù)據(jù)位,不進行奇偶校驗,1 位停止位,每次通信的間隔為1 min 。
4. 2 數(shù)據(jù)顯示和存儲模塊、參數(shù)設定模塊
數(shù)據(jù)顯示模塊能夠直觀地顯示當前時間、串口讀寫狀態(tài)、實時溫度波形和設置的報警溫度波形。也可以將測量得到的溫度數(shù)據(jù)存儲為Excel 格式的文檔。參數(shù)設定模塊能夠設定一級低溫報警溫度和兩級高溫報警溫度。
4. 3 步進電機控制模塊
步進電機控制分手動控制與自動控制。當設為手動控制時,可以實現(xiàn)電機正反轉和加減速的功能。其實現(xiàn)方法是通過串口發(fā)送控制字符,由單片機進行解析, 并選擇相應功能??刂谱址c步進電機功能對應關系如表1所示。例如:發(fā)送字符“z”表示正轉,“t”表示停止。當設為自動時,若檢測溫度值低于低溫報警溫度,則電機反轉;若高于一級高溫報警溫度,則按設定的較低速度正轉;若高于二級高溫報警溫度,則按設定的較高速度正轉。當檢測溫度處于正常溫度范圍時,電機停止運行。電機控制模塊可靈活應用,根據(jù)不同的控制需求改變控制策略。
5 結 語
本文介紹了一種基于LabVIEW 和單片機的步進電機控制系統(tǒng)設計方法,主要有以下特點:
(1) 以單片機和DS18B20 組成前端數(shù)據(jù)采集系統(tǒng),經(jīng)串行通信將數(shù)據(jù)傳給上位機進行分析和處理。以同一單片機和步進電機控制電路組成后端控制系統(tǒng),以溫度為主要控制參數(shù),由上位機控制步進電機實現(xiàn)各種動作。
(2) 上位機程序采用圖形化編程語言LabVIEW 編寫,實現(xiàn)溫度數(shù)據(jù)的處理和對電機的控制,人機交互界面友好,操控簡單。
(3) 系統(tǒng)可加以擴展,靈活應用于多種場合。如利用可組網(wǎng)式傳感器DS18B20 實現(xiàn)多點測溫,以不同的后端控制系統(tǒng)實現(xiàn)不同的控制功能。