摘 要: 選取STM32系列STM32F103RBT6作為噴頭的主控制系統(tǒng),將24c16EEPROM作為外部存儲(chǔ)器,通過(guò)I2C通信機(jī)制傳送噴頭T-V數(shù)據(jù)和配置數(shù)據(jù),借助UART或128x64LCD達(dá)到人機(jī)交互。經(jīng)過(guò)理論分析和軟硬件結(jié)合測(cè)試,驗(yàn)證了該噴頭控制系統(tǒng)的可行性和方便性。
關(guān)鍵詞: STM32;24c16EEPROM;I2C;T-V數(shù)據(jù);噴繪機(jī)
0 引言
由于噴繪機(jī)噴繪過(guò)程中采用的是壓電噴頭[1]工作原理,為保證噴繪出圖像清晰細(xì)膩,噴繪機(jī)需要在同一溫度下提供穩(wěn)定的驅(qū)動(dòng)電壓對(duì)壓電晶體進(jìn)行控制。如何在精準(zhǔn)的條件下根據(jù)室內(nèi)溫度實(shí)時(shí)、快速、方便地更改驅(qū)動(dòng)電壓和配置數(shù)據(jù)值得研究。
1 系統(tǒng)設(shè)計(jì)理念
噴頭的驅(qū)動(dòng)電壓VDD2(t)取決于噴頭容積電壓Vrank、基于不同廠家不同顏色的油墨粘滯度而提供每色油墨與標(biāo)準(zhǔn)油墨的修正值Voffset電壓、不同顏色的油墨在不同溫度下需要的驅(qū)動(dòng)電壓補(bǔ)償值Vdiff(t),即VDD2(t)=Vrank+Voffset+Vdiff(t)。不同顏色的油墨在不同的溫度下驅(qū)動(dòng)電壓的補(bǔ)償值Vdiff(t),稱之為T-V數(shù)據(jù)。
不同廠家油墨溫壓數(shù)據(jù)不同,廠家會(huì)根據(jù)每種墨水的種類和顏色在出廠前給出一組關(guān)于墨水在不同溫度下的電壓補(bǔ)償值,根據(jù)噴頭墨腔內(nèi)部墨水溫度變化動(dòng)態(tài)地調(diào)整每個(gè)噴頭的驅(qū)動(dòng)電壓以保證噴射出的墨水點(diǎn)滴大小一致、視覺(jué)效果更清晰。為防止在掉電的情況下數(shù)據(jù)丟失和避免不小心更改,數(shù)據(jù)通常存儲(chǔ)在只讀存儲(chǔ)器中。EEPROM存儲(chǔ)量有限又需存儲(chǔ)不同種類的T—V數(shù)據(jù)時(shí),可以將數(shù)據(jù)通過(guò)算法[2]進(jìn)行壓縮后存儲(chǔ)在ROM中。當(dāng)今市場(chǎng)噴繪機(jī)數(shù)量越來(lái)越多,出于對(duì)噴繪機(jī)性能考略,本設(shè)計(jì)在溫壓數(shù)據(jù)讀取時(shí)避免使用算法降低速度,借助嵌入式經(jīng)典的“空間換時(shí)間”理論,以日本精工集團(tuán)的IRH1513D噴頭為研究對(duì)象,在24C16EEPROM中存儲(chǔ)配置數(shù)據(jù)。每次初始化后通過(guò)I2C通信機(jī)制讀數(shù)據(jù),工作時(shí)噴頭需要更新電壓時(shí)通過(guò)DMA方式快速傳送溫度數(shù)值(A/D轉(zhuǎn)化值),迅速更新噴頭所需驅(qū)動(dòng)電壓。過(guò)程中發(fā)現(xiàn)噴頭工作有誤差時(shí)借助顯示工具設(shè)置按鍵對(duì)其校驗(yàn),過(guò)程中適當(dāng)改進(jìn)運(yùn)算形式來(lái)提高噴頭控制系統(tǒng)效率。
2 基于系統(tǒng)的硬件設(shè)計(jì)
圖1為控制系統(tǒng)硬件結(jié)構(gòu)建構(gòu)。從圖可看出設(shè)計(jì)中以STM32為主控,選取支持I2C通信機(jī)制、2 KB存儲(chǔ)量的24C16EEPROM作為外部存儲(chǔ)器,主控中集成的I2C 2的時(shí)鐘線SCL(PB10引腳)和SDA線(PB11引腳)與EEPROM的SCL和SDA分別通過(guò)外接一個(gè)上拉4.7 k?贅電阻連接。設(shè)計(jì)中主控集成I2C 2作為外部數(shù)據(jù)存儲(chǔ)器的時(shí)鐘和數(shù)據(jù)的發(fā)送,24c16EEPROM作為從設(shè)備,選取200 kHz的讀取速度。通過(guò)主控中的I/O口讀取溫度模擬量,顯示調(diào)整數(shù)據(jù)時(shí)采用UART或128x64LCD,采用128x64的靜態(tài)LCD主要方便客戶使用,研發(fā)者主要使用UART進(jìn)行校正,外擴(kuò)按鍵為了校驗(yàn)誤差或測(cè)試噴頭狀態(tài)等。上電開(kāi)始和結(jié)束時(shí)需給噴頭發(fā)送開(kāi)關(guān)波形數(shù)據(jù)、命令,工作時(shí)讀取噴頭的狀態(tài)需要實(shí)時(shí)更改主控PWM即補(bǔ)償電壓。系統(tǒng)中硬件按鍵消抖在主控中延時(shí)實(shí)現(xiàn),通過(guò)按鍵可進(jìn)入校驗(yàn)、T-V數(shù)據(jù)輸入、噴頭測(cè)試狀態(tài)。為快速處理數(shù)據(jù),主控內(nèi)A/D轉(zhuǎn)化值借助DMA傳輸方式。
控制系統(tǒng)采用一個(gè)主控STM32控制一個(gè)噴頭形式,所以外存儲(chǔ)上不需存儲(chǔ)墨水的顏色和控制噴頭型號(hào)等數(shù)據(jù),噴頭采用日本精工集團(tuán)的IRH1513D。系統(tǒng)上電初始化后,主控通過(guò)I2C通信機(jī)制把24C16EEPROM作為從設(shè)備讀取噴頭Vrank容積電壓、溫壓曲線、開(kāi)關(guān)波形等數(shù)據(jù)。而且此程序中使用容積電壓Vrank、Voffset和ADCValOff以十倍進(jìn)行存儲(chǔ)運(yùn)算,每個(gè)數(shù)據(jù)定義2 B即16 bit。綜合考略24C16EEPROM外存儲(chǔ)單元,地址分配設(shè)計(jì)為:地址0x00~0x166共358 B存儲(chǔ)溫壓偏移曲線數(shù)據(jù);地址0x200~0x201存儲(chǔ)16 B墨水的容積電壓Vrank;地址0x202~0x203存儲(chǔ)此種油墨修正電壓Voffset;地址0x204~0x205存儲(chǔ)噴頭25℃時(shí)需要校準(zhǔn)參數(shù)本底偏移值A(chǔ)dcValBOff;地址0x206~0x207存儲(chǔ)當(dāng)PWM OCR1為高點(diǎn)電壓比較值時(shí)所對(duì)應(yīng)十倍電壓Hm;地址0x208~0x209存儲(chǔ)當(dāng)PWM OCR1為低點(diǎn)電壓比較值時(shí)所對(duì)應(yīng)十倍電壓Lm;0x210~0x221共12個(gè)地址空間存儲(chǔ)噴頭必要的配置數(shù)據(jù);地址0x300~0x33c共60 B用于存儲(chǔ)噴頭的開(kāi)波形數(shù)據(jù);地址0x340~73c共60 B用于存儲(chǔ)噴頭的關(guān)波形數(shù)據(jù)。
3 基于系統(tǒng)的軟件設(shè)計(jì)
整個(gè)軟件的架構(gòu)中分別對(duì)串行通信、24c16EEPROM存儲(chǔ)、改進(jìn)運(yùn)算形式、主控狀態(tài)機(jī)切換等進(jìn)行設(shè)計(jì)與研究。最后借助PC上串口調(diào)試器或外擴(kuò)128x64LCD顯示人機(jī)交互來(lái)校正噴繪機(jī)的噴頭。
3.1 通信界面的設(shè)計(jì)
通信界面是為用戶簡(jiǎn)單、方便地更換墨水的T-V數(shù)據(jù)和校正噴繪機(jī)噴頭而設(shè)置的顯示工具。圖2為串行通信的流程,從圖中可以看出,主菜單在調(diào)試過(guò)程中,通過(guò)選項(xiàng)來(lái)進(jìn)入溫度校準(zhǔn)、電壓校準(zhǔn)、容積電壓Vrank輸入或是配置數(shù)據(jù)的輸入。借助于串口通信,在需要更新墨水的T—V數(shù)據(jù)時(shí),無(wú)論用戶是否熟練新產(chǎn)品的使用,都可直觀操作把廠家提供的溫壓數(shù)據(jù)通過(guò)選擇不同命令符寫入24c16EEPROM。
3.2 基于24c16EEPROM存儲(chǔ)設(shè)計(jì)
根據(jù)I2C的通信機(jī)制,首先主機(jī)發(fā)送一個(gè)起始條件,從機(jī)接收到后回發(fā)一個(gè)ACK響應(yīng)信號(hào)。然后主機(jī)發(fā)送地址字節(jié)(地址字節(jié)為7位,最后一位為讀寫標(biāo)志位),進(jìn)行數(shù)據(jù)的讀寫傳輸。每次接收方回發(fā)一個(gè)ACK。最后主機(jī)發(fā)送停止信號(hào)結(jié)束通信。24c16EEPROM芯片手冊(cè),在發(fā)送地址7位中前四位必須是1010,此處DEVICE ADDRESS(設(shè)備地址)是通過(guò)(0xao|(讀寫地址))發(fā)送。通信時(shí)調(diào)用函數(shù)E2416_BufWr((u8*)&D0_confOn[0],ONWAVE_ADDR,NbrOfReg)來(lái)進(jìn)行寫操作設(shè)計(jì),其中函數(shù)的參數(shù)(u8*)&D0_confOn[0]定義為首個(gè)無(wú)符號(hào)字節(jié)數(shù)據(jù)地址,ONWAVE_ADDR參數(shù)是指向?qū)懭氲紼EPROM的地址,參數(shù)NbrOfReg是寫入數(shù)據(jù)的個(gè)數(shù)。
此處I2C通信模塊的整體設(shè)計(jì)可通過(guò)程序圖3進(jìn)行描述,圖中發(fā)送兩個(gè)EEPROM地址,第一個(gè)EEPRON地址是EEPROM設(shè)備地址,從第二個(gè)EEPROM是存儲(chǔ)數(shù)據(jù)首地址。2416EEPROM規(guī)定每一頁(yè)為16 B,程序在設(shè)置過(guò)程中以E2416_PageWr()對(duì)頁(yè)進(jìn)行寫操作,以E2416_ByteWr()對(duì)字節(jié)進(jìn)行寫操作,寫入到EEPROM指定的地址,同樣設(shè)置E2416_BufRe()、E2416_PageRe()進(jìn)行頁(yè)讀操作以及E2416_ByteRe()進(jìn)行字節(jié)讀操作,從指定的地址中讀數(shù)據(jù)。若需更改墨水的數(shù)據(jù)時(shí)借助串口交互的選擇,把需要數(shù)據(jù)通過(guò)I2C通信機(jī)制直接寫入到24c16數(shù)據(jù)存儲(chǔ)EEPROM中,實(shí)際上寫入到了預(yù)留的同一塊ROM中。而且在噴頭實(shí)際工作過(guò)程中可把確定的數(shù)據(jù)在上電初期通過(guò)函數(shù)E2416_BufRe()以及E2416_PageRe()來(lái)讀取開(kāi)關(guān)波形及噴頭配置數(shù)據(jù)。
3.3 改進(jìn)運(yùn)算形式
根據(jù)以上設(shè)計(jì),噴頭開(kāi)始工作前,STM32主控制器從24c16EEPROM的外存儲(chǔ)通過(guò)I2C通信機(jī)制讀配置數(shù)據(jù),其中包括存儲(chǔ)高電壓時(shí)PWM OCR1比較值Hm和存儲(chǔ)低電壓時(shí)PWM OCR1比較值Lm,程序中定義兩個(gè)比較值,高低電壓Hx、Lx是對(duì)應(yīng)的實(shí)際高低電壓的10倍。根據(jù)理論知PWM OCR1的值和對(duì)應(yīng)STM32輸出電壓成正比。當(dāng)PWM OCR1的值高時(shí),STM32輸出的電壓高。所以得比例(Hm-Lm)/(Hx-Lx)=(m-Lm)/(x-Lx),其中m代表任意時(shí)刻PWM OCR1的比較值,x代表任意時(shí)刻當(dāng)PWM OCR1的比較值為m時(shí)所對(duì)應(yīng)輸出電壓的10倍,化簡(jiǎn)得m=(H_Lm*(x-Lx)+Lm*H_Lx)/H_Lx。讀到一個(gè)溫度,通過(guò)查表找到需要補(bǔ)償電壓,最后把補(bǔ)償電壓、修正電壓、容積電壓相加算出最后噴頭需要的電壓x,通過(guò)以上化簡(jiǎn)知m=(H_Lm*(x-Lx)+Lm*H_Lx)/H_Lx,計(jì)算出PWM OCR1中需要值m改變PWM。噴頭工作的電壓是12 V~29 V,精確到0.1 V,在設(shè)計(jì)過(guò)程中把實(shí)際高低電壓Hx、Lx以及更改的輸出電壓擴(kuò)大10倍。不難看出運(yùn)算形式及結(jié)果沒(méi)有改變,而存儲(chǔ)上需占更多空間,但是不改則需要浮點(diǎn)型數(shù)的運(yùn)算。相比較而言,提高10倍雖增加存儲(chǔ)空間但較少計(jì)算時(shí)間,提高執(zhí)行效率。
3.4 主控狀態(tài)機(jī)切換設(shè)計(jì)
STM32主控程序設(shè)計(jì)是整個(gè)控制系統(tǒng)核心。為了優(yōu)化系統(tǒng)設(shè)計(jì),提高主控的處理速度,此處設(shè)計(jì)采用如圖4主控狀態(tài)切換機(jī)制。從圖中可看出,系統(tǒng)上電開(kāi)始后進(jìn)入InitConfig狀態(tài)初始化時(shí)鐘、I/O口、串口、DMA、A/D、定時(shí)器、I2C、緩沖區(qū)等。若使能液晶屏,則液晶屏開(kāi)始顯示,然后通過(guò)DMA發(fā)送I2C從設(shè)備地址進(jìn)入Send Slave Add狀態(tài)。如果地址匹配,則進(jìn)入Read Data狀態(tài),即從EEPROM中讀取噴頭的配置數(shù)據(jù)。若VERIFY_ON=1(PA^8=0),則按鍵按下進(jìn)入U(xiǎn)ART adjust狀態(tài)(文件的配置),若Sw1_on==1,即按鍵按下進(jìn)入Nozzle text狀態(tài)即噴頭測(cè)試,否則進(jìn)入ADC狀態(tài)。轉(zhuǎn)化完后通過(guò)DMA傳送數(shù)據(jù)進(jìn)入DMA IRQ狀態(tài),在此狀態(tài)下進(jìn)行16次平滑處理,計(jì)算完后進(jìn)入U(xiǎn)pdate Voltage狀態(tài)然后輸出PWM即電壓提供給噴頭,使噴頭精確工作。初始工作讀完數(shù)據(jù)后首次A/D轉(zhuǎn)化由軟件啟動(dòng),工作后A/D轉(zhuǎn)化是在DMA中斷下進(jìn)行,16次平滑處理后開(kāi)啟A/D轉(zhuǎn)化使能。
4 系統(tǒng)測(cè)試
結(jié)合系統(tǒng)總體架構(gòu)的軟件和硬件平臺(tái)以及過(guò)程方法步驟的闡述,最終測(cè)試結(jié)果如圖5、6所示。圖5顯示了基于I2C通信機(jī)制EEPROM存儲(chǔ)驗(yàn)證。為驗(yàn)證結(jié)果的正確,向24C16EEPROM寫入數(shù)據(jù)0x0a、0x0b并用示波器觀察波形圖,其中通道2為SCL波形,通道1為SDA波形,結(jié)合兩個(gè)通道信號(hào)和寫入數(shù)據(jù)驗(yàn)證此系統(tǒng)存儲(chǔ)設(shè)計(jì)可行。圖6是借助串口收發(fā)機(jī)制來(lái)更新墨水T-V數(shù)據(jù)、噴頭配置文件以及校驗(yàn)顯示,從圖可看出UART采用的是并口COM1、波特率為115 200 b/s,8 bit數(shù)據(jù)位和1 bit停止位,無(wú)奇偶校驗(yàn)收發(fā)機(jī)制下可正確顯示主控的收發(fā)信息與程序設(shè)計(jì)一致。圖6中主校菜單下通過(guò)串口向STM32發(fā)送“數(shù)字選項(xiàng)”來(lái)進(jìn)入溫度校準(zhǔn)、12 V輸出校準(zhǔn)、29 V輸出校準(zhǔn)、容積電壓Vrank輸出等菜單。圖中是在選擇“9”下噴頭的配置數(shù)據(jù)輸入時(shí)的顯示,包括噴頭配置數(shù)據(jù)、開(kāi)關(guān)波形數(shù)據(jù)以及沒(méi)有顯示全的溫壓曲線等數(shù)據(jù)。
5 總結(jié)
隨著噴繪技術(shù)的發(fā)展,對(duì)噴頭控制系統(tǒng)的要求越來(lái)越高。本設(shè)計(jì)基于簡(jiǎn)單、方便的考慮,以STM32作為主控制平臺(tái),以24c16EEPROM作為外部存儲(chǔ),結(jié)合軟件設(shè)計(jì)出噴頭控制系統(tǒng)。通過(guò)實(shí)踐和理論研究證明,系統(tǒng)不僅簡(jiǎn)捷、方便,而且更改容易且執(zhí)行過(guò)程中在一定程度上提高了系統(tǒng)的效率,達(dá)到了理想的預(yù)期效果,但此控制設(shè)計(jì)系統(tǒng)沒(méi)能面向市場(chǎng),還存在不少缺陷和不足,需以后加以彌補(bǔ)和改進(jìn)。也希望將來(lái)此設(shè)計(jì)系統(tǒng)可以廣泛應(yīng)用于噴繪機(jī)噴頭控制系統(tǒng)中。
參考文獻(xiàn)
[1] 周峰江.壓電式噴頭的基本原理和應(yīng)用[J].印染,2003,29(4):259-283.
[2] 劉晉,顧彬彬,張秋風(fēng).數(shù)字噴繪機(jī)墨水溫壓曲線的壓縮存儲(chǔ)方案[J].微型機(jī)與應(yīng)用,2012,31(3):82-84.