李 鈺,宋 建
(1.華南理工大學 廣東省高分子先進制造技術及裝備重點實驗室,廣州 510640;2.華南理工大學 聚合物加工工程教育部重點實驗室,廣州 510640)
液壓系統(tǒng)廣泛應用于工業(yè)領域,相較于傳統(tǒng)的閥控液壓系統(tǒng),伺服泵液壓系統(tǒng)在能量節(jié)約、高精度與快速反應方面擁有巨大優(yōu)勢[1],因而廣泛應用于如塑料注塑機、壓力機等成型機械。伺服泵驅動器會根據接收到的數(shù)字信號來控制同步伺服電機的轉速與轉矩。為了能夠提高伺服泵液壓系統(tǒng)的穩(wěn)態(tài)控制精度并改善動態(tài)性能[2-3],一款能夠精確控制波形幅度并輸出高分辨率波形的程控多路數(shù)字信號發(fā)生器就顯得尤為重要,同時配備的通訊接口可以與工業(yè)控制器進行通信,以根據工業(yè)現(xiàn)場需求實時對輸出波形進行精確調控。
本文基于嵌入式系統(tǒng)開發(fā)了一種程控多路數(shù)字信號發(fā)生器,通過觸摸屏設定選定振動參數(shù),產生多路波形、頻率和幅度均可調的交流信號。
信號發(fā)生器的總體結構框圖如圖1 所示,主要由5 個部分組成,分別為主控芯片、信號發(fā)生電路、信號調幅電路、RS485 通訊接口電路以及觸摸屏。主控芯片為意法半導體的STM32F103ZET6,這是一款基于Cortex-M3 的32 位處理器。信號發(fā)生電路與信號調幅電路配合產生相應波形、頻率、幅值可調的振動交流信號;RS485 通訊接口用于與工業(yè)控制器的通訊連接,能夠通過工業(yè)控制器傳遞的信息實時調節(jié)輸出的振動交流信號;觸摸屏用于振動交流信號頻率與幅值參數(shù)的設定與波形選項的選定。
信號發(fā)生電路的核心為ADI 公司生產的AD9833芯片,AD9833 生成波形采用了DDS 數(shù)字合成器技術,如圖2 所示為DDS 基本結構示意圖,原理是利用相位累加器在時鐘信號的作用下累加頻率控制字,輸出的結果再與波形控制字相加,作為不同類型波形數(shù)據分區(qū)塊存儲的地址值,再將地址值與相位控制字相加,從而得到相位不同的波形[4]。
圖2 DDS 基本結構示意圖Fig.2 Basic structure schematic of DDS
STM32 主控芯片與AD9833 的通訊方式為單工SPI 通訊,而后續(xù)使用的MCP41010 芯片也采用單工SPI 通訊,因此為節(jié)省IO 口,采用一主多從的器件布局,所有的從器件共享同一根時鐘線與數(shù)據線。主控芯片STM32 為每一個從機分配一個獨立的NSS 片選引腳,從而實現(xiàn)各個從器件的獨立尋址。本文中使用到STM32F103ZET6 主控芯片的SPI1 接口,由于需要有多個NSS 片選引腳,因此在配置SPI1 相關引腳為復用功能時需要將固件函數(shù)庫SPI_InitTypeDef 結構體中的SPI_NSS 成員參數(shù)設置為軟件管理模式[5]。
如圖3 所示為設計的信號發(fā)生電路原理圖,時鐘線與數(shù)據線分別為SPI1 的PA-5 與PA-7,片選引腳選用PA-4,外部時鐘速率選擇為25 MHz。AD9833芯片的輸出端接電容隔離直流分量。此處電壓跟隨器起到隔離緩沖、提高帶載能力的作用,這有助于提高后續(xù)由數(shù)字電位器組成的放大電路的穩(wěn)定。
圖3 信號發(fā)生電路原理圖Fig.3 Schematic diagram of signal generator circuit
傳統(tǒng)的增益可調節(jié)放大電路中的電阻一般會采用機械轉鈕式電阻,通過機械結構的劃片帶動以改變電阻值從而改變增益的大小[6]。這種方式雖然價格低,結構簡單,但是調節(jié)時一般都需要人為或者電機帶動,不符合動態(tài)注塑信號調節(jié)器的應用需求。本文采用通用型運算放大器與數(shù)字電位器組合成的程控放大器實現(xiàn)增益的調節(jié)。
MCP41010 是一款由Microchip 生產的單通道、數(shù)字控制的8 引腳數(shù)字電位器,具有256 位的分辨精度,PA 與PB 為電位器的兩個終端,PW 為數(shù)字電位器的滑動端,在上電時抽頭復位到半量程(80 h),即滑動端PW 指向PA 與PB 的中間[7]。
信號調幅電路的原理圖如圖4 所示,MCP41010用于通訊的時鐘線與數(shù)據線掛載在SPI1 的PA-5 與PA-7,片選引腳選擇為PA-6。將數(shù)字電位器MCP41010與運算放大器OP07 組成信號幅值調節(jié)電路,放大方式采用反相比例放大,其中放大電路的負反饋電阻采用50 kΩ 的固定電阻,MCP41010 數(shù)字電位器作為輸入電阻,信號經過放大增益后輸出端接電壓跟隨器以提高后續(xù)帶負載能力。
圖4 信號調幅電路原理圖Fig.4 Chematic diagram of signal modulation circuit
RS485 總線具有布線簡單、通訊方便、價格低廉、通訊距離長等優(yōu)點,被廣泛應用于各種工業(yè)場景中[8]。通訊單元的物理層采用RS485 串行總線的方式。
如圖5 所示為RS485 電路原理圖,此處使用SP3485芯片作為TTL 電平與485 電平的轉換芯片。其中SP3485 的DE 引腳為發(fā)送使能信號(高電平有效),RE 引腳為接收使能信號(低電平有效),因而將其一同與單片機STM32 的PD7 引腳連接,便可僅需一個引腳來控制串口數(shù)據的收發(fā)。R14與R17作為偏置電阻用來保證總線空閑時,A、B 之間的電壓差都不會大于200 mV,從而避免因為總線空閑時由于A、B壓差不定而引起的邏輯混亂,導致可能出現(xiàn)的亂碼。
圖5 RS485 電路原理圖Fig.5 Schematic diagram of RS485 circuit
人機交互界面使用的觸摸屏硬件模塊為ALIEN TEK 第二代7 寸TFTLCD 電容觸摸屏,內置有ILI1963 LCD 控制器以及FT5426 電容觸摸芯片,采用的分辨率為800×480,支持16 位的8080 并行接口,可使用565RGB 真彩顯示,內部自帶顯存儲,正常工作電壓為3.3 V。
根據LCD 控制器的顯示工作機理,其內部RAM可以看為不帶地址總線的靜態(tài)隨機存儲器,因此將STM32 的相應串口設置為工作在FSMC 總線方式下,就能按照16 位的8080 并口通訊的方式訪問LCD控制器,并實現(xiàn)對LCD 的驅動。而FT5426 與STM32的通訊方式采用標準IIC 的形式,在完成初始化后便可讀取觸摸坐標數(shù)據,先讀取0X02 寄存器,判斷有多少個有效觸摸點,然后讀取0X03~0X1E 等寄存器,便可獲取觸摸坐標數(shù)據。
程控多路數(shù)字信號發(fā)生器的軟件基于UCOSIII操作系統(tǒng)開發(fā)。用戶可以創(chuàng)建多個優(yōu)先級別不同的任務,并按照任務優(yōu)先級選擇性地調用任務[9]。本文根據功能需要設計有:信號發(fā)生、信號調幅、Modbus通訊以及觸摸屏4 個任務,并配置不同的循環(huán)時間。循環(huán)任務之前需要對系統(tǒng)的軟件和硬件進行初始化,主要包括操作系統(tǒng)初始化、串口初始化、觸摸屏初始化與emWin 初始化等,系統(tǒng)程序主流程如圖6所示。
圖6 系統(tǒng)程序主流程Fig.6 Main flow chart of the system program
信號發(fā)生任務部分需要使用到SPI 總線,對SPI 總線進行初始化的工作在主流程中串口初始化部分就已經完成,因此,在進入到任務函數(shù)中后只需要判斷是否需要改變參數(shù),若為是,則進入到對AD9833 的寫數(shù)據過程;若為否,則直接結束。
本文中對AD9833 的寫數(shù)據過程共分為5 個步驟:
(1)在對AD9833 進行初始化時為了避免產生虛假DAC 輸出因而需要將RESET 置為1,使AD9833復位,即寫入0x0100;
(2)控制寄存器B28=1,D14D15=00,此項命令是為了將一個完整的字通過2 次連續(xù)寫入載入到頻率寄存器當中,即寫入0x2100;
(3)選擇頻率寄存器,寫入2 個連續(xù)的14 位數(shù)據;
(4)選擇相位寄存器并寫入相位數(shù)據;
(5)重新將RESET 位置為0,選擇所要使用的頻率寄存器、相位寄存器以及需要輸出的波形種類,在RESET 置0 后的8 個MCLK 周期內,DAC 輸出端會出現(xiàn)信號。
信號發(fā)生任務程序流程如圖7 所示。
信號調幅任務需要使用到的SPI 總線同樣在最開始就在主流程串口初始化中完成初始化,因而進入至任務函數(shù)后只需要判斷是否改變阻值,若為是,則對MCP41010 寫數(shù)據;若為否,則直接結束。
對MCP41010 的寫數(shù)據共分為2 個字節(jié):第一段為命令字節(jié),命令字節(jié)中第2、3 位和6、7 為無關位,C1,C0 為指令選擇位,P1,P0 為通道選擇位,MCP41010 只集成了1 個電位器,因而通常會將命令字節(jié)設定為0x11;數(shù)據字節(jié)為8 位,可以將電位器滑動端置于256 個端點中的任意一個,精度極高。信號調幅任務程序流程如圖8 所示。
圖8 信號調幅任務程序流程Fig.8 Flow chart of signal modulation task program
Modbus 通訊協(xié)議現(xiàn)階段廣泛應用于工業(yè)領域,在不同的串口設備之間可以進行數(shù)據交換與通訊,目前已成為一種通用的工業(yè)標準,獲得不同硬件廠商的支持[10]。
Modbus 的通訊協(xié)議采用主/從問答的方式,通訊時由主機發(fā)起通訊任務,通訊格式:從機地址-功能代碼-地址區(qū)域-數(shù)據量-校驗碼,而從機在接收確認到是對自己的呼叫后會根據功能代碼完成相應動作并向主機響應[11]。
本文采用的Modbus 傳輸協(xié)議通過RS485 串口進行傳輸,因而在進行協(xié)議層數(shù)據傳輸前需要先完成物理層硬件串口的初始化,這部分工作在主程序流程中執(zhí)行。進入到任務函數(shù)中需要依次判斷是否收到主機指令、是否為本機地址、CRC 校驗是否正確,在均為是的情況下就可以根據功能碼進行數(shù)據的讀取或者寫入,再向主機響應數(shù)據,至此結束。Modubs 通訊任務程序流程如圖9 所示。
觸摸屏任務主要使用到了emWin 圖形庫來幫助顯示更新,因此在對觸摸屏進行初始化后也需要對emWin 圖形庫進行初始化,這兩部分的工作已經在準備階段完成。因而,進入至觸摸屏任務后會開啟檢測觸摸屏是否有按下,若為是,則會實時更新顯示;若為否,則直接結束任務。觸摸屏任務程序流程如圖10 所示。
圖10 觸摸屏任務程序流程Fig.10 Flow chart of touch screen task program
觸摸屏的顯示界面如圖11 所示,可以分別對兩路振動交流信號的參數(shù)進行設定以及選定。其中信號的頻率、幅值參數(shù)可以通過直接點擊相應位置的編輯框后輸入設定數(shù)值,波形的選擇則可以在下拉列表中進行選定。
圖11 觸摸屏界面圖Fig.11 Touch screen interface diagram
測試時使用的示波器型號:Tektronix DPO 2012B。
實驗方法:通過用戶界面兩路信號分別設置不同頻率、幅值的正弦波、三角波、方波信號,使用示波器測試輸出的信號。
圖12 所示為2 Hz 正弦交流信號示波器顯示圖,圖13 所示為5 Hz 三角交流信號示波器顯示圖。
圖12 2 Hz 正弦交流信號Fig.12 2 Hz sinusoidal AC signal
圖13 5 Hz 三角交流信號Fig.13 5 Hz triangular AC signal
經過測試可得出以下結論:程控多路數(shù)字信號發(fā)生器能夠產生正弦波、三角波、方波3 種周期性交流信號且波形輸出的頻率分辨率極高,可達0.1 Hz,可以作為激振信號源。
本文基于STM32F103ZET6 芯片與UCOSIII 操作系統(tǒng)設計了一款程控多路數(shù)字信號發(fā)生器。采用了AD9833 和MCP41010 芯片實現(xiàn)了振動交流信號的發(fā)生與調幅;基于RS485 接口并采用Modbus 通訊協(xié)議實現(xiàn)了工業(yè)控制器與信號發(fā)生器的實時通訊;基于emWin 圖形庫設計了人機交互界面,可以在觸摸屏上設定選定信號參數(shù)。經實驗測試,設計的信號發(fā)生器能夠產生波形、頻率以及幅值可調的振動交流信號,并根據工業(yè)控制器傳遞的通訊信息實時調節(jié)輸出波形,滿足激振信號源的應用需求,實現(xiàn)了多路數(shù)字信號的調頻調幅。