童小利,金秋春
(1.鄭州航空工業(yè)管理學(xué)院 機(jī)電學(xué)院,河南 鄭州 450046;2.鄭州航空工業(yè)管理學(xué)院 計(jì)算機(jī)學(xué)院,河南 鄭州 450046)
目前國(guó)內(nèi)外使用最多的打印機(jī)有針式打印機(jī) (又稱串行擊打式打印機(jī))、噴墨打印機(jī)、激光打印機(jī)及熱敏打印機(jī)等[1],這些打印機(jī)區(qū)別在于打印頭部件即實(shí)現(xiàn)打印文字或圖片的方式和結(jié)構(gòu)不一樣,但他們有一個(gè)共同的結(jié)構(gòu)進(jìn)紙機(jī)構(gòu),正是這一結(jié)構(gòu)的存在不僅使得打印的幅面受到了限制,而且還使得打印機(jī)的尺寸大不便于攜帶。市場(chǎng)上現(xiàn)有的便攜式打印機(jī)是桌面打印機(jī)的縮小版,當(dāng)然其打印的幅面也隨之縮小。
本文著眼于設(shè)計(jì)一款尺寸小、便于攜帶,又不影響打印幅面的新型的打字機(jī)。該打字機(jī)摒棄了傳統(tǒng)打印機(jī)的進(jìn)紙機(jī)構(gòu),讓紙固定不動(dòng),打字機(jī)在紙上自由行走并打字,從而達(dá)到縮小尺寸和大幅面打印的目的。
系統(tǒng)由STM32控制器,步進(jìn)電機(jī)驅(qū)動(dòng)模塊、超聲波傳感器模塊、打印筆模塊以及電源模塊組成。所有模塊都通過以一個(gè)全向平臺(tái)底盤連接在一起,該全向底盤由4個(gè)全向輪組成,并通過4個(gè)步進(jìn)電機(jī)來驅(qū)動(dòng),打印筆放在全向平臺(tái)的中心上,在X軸方向并列放置兩個(gè)收發(fā)一體的超聲波傳感器1和超聲波傳感器2,用來檢測(cè)打印筆Y軸的距離以及讓打字機(jī)保持水平的位置,另一個(gè)傳感器3放置在Y軸方向用來檢測(cè)打印筆X軸的距離,打字機(jī)全向底盤結(jié)構(gòu)設(shè)計(jì)如圖1所示。
圖1 打字機(jī)全向底盤結(jié)構(gòu)設(shè)計(jì)Fig.1 The omnidirectional chassis of typewriter design
控制模塊是打字機(jī)的核心部分,負(fù)責(zé)讀取超聲波傳感器檢測(cè)到的距離值,控制打字機(jī)的行走以及精確定位,并控制打印筆按打印內(nèi)容打印??刂破鞑捎靡夥ò雽?dǎo)體的STM32F103系列的STM32F103ZET6單片機(jī),該系列微處理器工作頻率為72MHz,內(nèi)置高達(dá)128K字節(jié)的Flash存儲(chǔ)器和20K字節(jié)的S R AM,具有豐富的通用I/O端口[2],在運(yùn)算速度和存儲(chǔ)容量上滿足要求,豐富的外設(shè)也簡(jiǎn)化了系統(tǒng)的硬件設(shè)計(jì)[3]。
步進(jìn)電機(jī)采用兩相四線混合式大扭矩42系列步進(jìn)電機(jī)。步進(jìn)電機(jī)驅(qū)動(dòng)芯片采用A4988,A4988是一款完全的微步電動(dòng)機(jī)驅(qū)動(dòng)器,可以以全、半、1/4、1/8及1/16步進(jìn)模式驅(qū)動(dòng)兩相步進(jìn)電機(jī),輸出驅(qū)動(dòng)性能可達(dá)35V及±2A,為系統(tǒng)步進(jìn)電機(jī)提供了足夠的驅(qū)動(dòng)功率[4]。
步進(jìn)電機(jī)驅(qū)動(dòng)電路如圖2所示,ENABLE端口接地,輸入低電平時(shí)使能,電機(jī)轉(zhuǎn)動(dòng)。4個(gè)A4988的STEP引腳分別與 STM32的 PE0、PE1、PE2、PE3口相連,輸入一個(gè)脈沖,即可驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī)產(chǎn)生微步,設(shè)置脈沖的頻率,可控制步進(jìn)電機(jī)旋轉(zhuǎn)速度。4個(gè)A4988的DIR引腳分別與STM32 的 PE4、PE5、PE6、PE7 口相連,輸入高電平時(shí),步進(jìn)電機(jī)順時(shí)針旋轉(zhuǎn),輸入低電平時(shí),步進(jìn)電機(jī)逆時(shí)針旋轉(zhuǎn)。四個(gè)步進(jìn)電機(jī)驅(qū)動(dòng)芯片A4988的輸出端1A與1B分別接步進(jìn)電機(jī)同相的兩端,輸出端2A與2B分別接步進(jìn)電機(jī)另一相的兩端。MS1、MS2、MS3按照表1分別接高低電平來設(shè)置步進(jìn)模式,從而選擇不同的步距角和激勵(lì)方式[4]。
圖2 步進(jìn)電機(jī)驅(qū)動(dòng)電路Fig.2 Stepping motor drive circuit
表1 步進(jìn)控制邏輯表Tab.1 Step control logic table
KSl03超聲波傳感器帶溫度補(bǔ)償功能,測(cè)量精度高,使用溫度修正的測(cè)距命令,直接輸出距離(單位為mm),近距離內(nèi)最高精度達(dá)1mm;測(cè)量盲區(qū)最小至1cm,最大量程可達(dá)11m,基本無盲區(qū)[5]。
超聲波測(cè)距接口電路如圖3所示,MODE引腳懸空時(shí),KS103工作于I2C模式,其中VCC連接+5V電源,GND連接電源地,SDA/TX是I2C通信的數(shù)據(jù)線分別與STM32的 PB6、PB7口相連。
圖3 超聲波測(cè)距接口電路Fig.3 Ultrasonic ranging interface circuit
打印筆驅(qū)動(dòng)電路如圖4所示,通過STM32的PE8口的輸出來控制打印筆動(dòng)作。當(dāng)PE8口輸出高電平(+5V)時(shí),三極管Q1導(dǎo)通,連接在打印筆上的電磁鐵線圈通電,產(chǎn)生磁性吸合可動(dòng)鐵芯,從而帶動(dòng)打印筆伸出,實(shí)現(xiàn)打點(diǎn)功能。當(dāng)PE8口輸出低電平時(shí),三極管Q1截止,電磁鐵線圈斷電,不能產(chǎn)生磁性吸合可動(dòng)鐵芯,在彈簧力的作用下,動(dòng)鐵芯、推桿帶動(dòng)打印筆縮回,不打點(diǎn)。
圖4 打印筆驅(qū)動(dòng)電路的設(shè)計(jì)Fig.4 Design of driving circuit for printing pen
上電后,對(duì)小車進(jìn)行初始化,讓小車走到起始位置,并保持車身與X軸平行的姿態(tài)。接著根據(jù)取模數(shù)據(jù)控制打印筆開始打印,一直到所有字符都打印完成結(jié)束。
如圖5所示,小車初始化程序主要是用來設(shè)定頁(yè)邊距,根據(jù)頁(yè)邊距設(shè)定小車的起始點(diǎn),并控制小車走到該起始點(diǎn)和保持水平的姿態(tài),這主要是通過小車定位程序來實(shí)現(xiàn)的。當(dāng)小車到了設(shè)定的起始位并保持好水平姿態(tài),則停止運(yùn)動(dòng)原地待命。
圖5 小車初始化程序流程圖Fig.5 Flow chart of car initialization program
小車定位程序的主要功能是借助超聲波傳感器,在一定精度范圍內(nèi),實(shí)現(xiàn)小車保持水平姿態(tài)在平面內(nèi)任意點(diǎn)的定位,為打印做好準(zhǔn)備。小車定位程序流程圖如圖6所示,首先采集3個(gè)超聲波傳感器的值,利用傳感器1和傳感器2的差值來控制小車是否保持水平。然后利用傳感器1和傳感器2的平均值來與目標(biāo)點(diǎn)的Y值的差值與精度相比較來控制小車在目標(biāo)點(diǎn)的Y軸方向無偏差。接著利用傳感器3與目標(biāo)點(diǎn)的X值的差值與精度相比較來控制小車在目標(biāo)點(diǎn)的X軸方向無偏差。
圖6 小車定位程序流程圖Fig.6 Flow chart of car positioning program
首先是根據(jù)取模軟件對(duì)要打印的內(nèi)容進(jìn)行一定大小的取模,從而得到一系列由十六進(jìn)制數(shù)表示的點(diǎn)陣數(shù)據(jù),用該點(diǎn)陣數(shù)據(jù)組成打印數(shù)組。取模軟件采用PCtoLCD2002,取模時(shí)可采用逐行順向取模方式,即從第一行開始向右每取8個(gè)點(diǎn)作為一個(gè)字節(jié),如果最后不足8個(gè)點(diǎn)就補(bǔ)滿8位,取模順序是從高到低,即第一個(gè)點(diǎn)作為最高位。字節(jié)的每個(gè)位代表漢字的一個(gè)點(diǎn),“0”代表沒有點(diǎn),“1”代表有點(diǎn)。
然后通過打印程序讀取打印數(shù)組中的第一行的第一個(gè)打印數(shù)據(jù),判斷該打印數(shù)據(jù)的對(duì)應(yīng)的二進(jìn)制數(shù)的每一位是否為1,若為1則代表該位為需要打墨點(diǎn),則單片機(jī)通過小車定位程序控制寫字機(jī)器人走到該點(diǎn)的位置,并控制PE8口輸出1,控制打印筆打點(diǎn)。為了提高打印速度,打印完第一行的所有的打印點(diǎn),然后控制寫字機(jī)器人按照“S”形路線反向返回,在返回的過程中又根據(jù)打印數(shù)據(jù)反向打印所有的打印點(diǎn),打印流程圖如圖7所示。
圖7 打印程序流程圖Fig.7 Print program flow chart
圖8 打字機(jī)打印的“鄭州航院”字Typewriter printed "Zhengzhou hang yuan"
通過上位機(jī)的取模軟件得到“鄭州航院”32×32點(diǎn)陣的字模數(shù)組,并通過串口傳輸給打字機(jī)的控制器。將白紙平鋪在有直角墻角(以兩相互垂直的墻為參照物)的地面上,然后把小車放在白紙上,啟動(dòng)打字機(jī)電源開關(guān),打印結(jié)果如圖8所示。打印結(jié)果表明該打字機(jī)能按照要求正確打印,該字所占的幅面長(zhǎng)寬尺寸為990×230mm,超過了常用的A4、A3幅面,打印幅面大,實(shí)現(xiàn)大幅面打印。此外該寫字機(jī)外型尺寸長(zhǎng)寬高為(275×275×140)mm,重 2.91kg ,尺寸小,重量輕便于攜帶。