基于EraSoC-1000C的電腦繡花機系統主要由三個電機協調工作來實現繡花功能。三個電機的協調原理是:一個主軸電機,采用交流伺服交流來控制針頭的上下運動;X、Y軸步進電機各一個,以實現工作面的橫向與縱向移動(系統控制流程圖參見圖1)。
硬件設計
根據圖1所示的整個系統方案的控制實現原理,把此方案的主控制單元分為上、下位機結構,并由一顆EraSoC-1000C芯片來完成上、下位機的協同工作:
上位機結構
上位機主要負責人機交互、文件讀取與解析、部分傳感器信號的處理;
STN/TFT LCD顯示與觸摸控制的實現
這部分是人機交互的主要平臺,通過控制觸摸屏來控制電機做出相應的動作就是在此實現的。其中液晶部分對東芝T6963CFG LCD驅動芯片的控制由EraSoC-1000C引出的8位數據線和5個gpio實現,本次用的黑白屏,如果需要可以用彩色屏,尺寸也可以任意選擇。而觸摸屏的控制由EraSoC-1000C的spi信號線和片選線時鐘線經過觸摸屏控制器ADV7843實現。
傳感器通過GPIO與EraSoC-1000C的通訊
該繡花機共用到6個傳感器,分別由EraSoC-1000C提供的6個可以作為中斷輸入的gpio控制。這些傳感器分別是:x軸方向電機的傳感器、y軸方向的電機傳感器、z軸方向的電機傳感器、測試繡花針是不是在上針位的傳感器(此時針在所有位置的最高點)、測試繡花針是不是離開布的傳感器以及一個用于是否繞線的輔助功能的傳感器。
下位機結構
下位機主要負責輸出電機控制信號(PWM)、協同工作以及部分傳感器信號的處理:
PWM對交流伺服電機的控制
在EraSoC-1000C芯片中共有六路脈沖寬度調節/定時/計數控制器(以下簡稱PWM),每一路PWM工作和控制方式完全相同,都有兩路輸入信號(gate_clk_pad_i, capt_pad_i)和一路脈沖寬度輸出信號(pwm_o)。由于系統時鐘高達60MHz,計數寄存器和參考寄存器均32位數據寬度,這樣開發人員可通過編程讓PWM產生各種復雜的近似線性的輸出信號,非常適合高檔電機的控制。
步進電機的驅動
主要采用專門的步進電機驅動芯片,由EraSoC-1000C給出控制信號,控制電機按照要求運動。本次設計步進電機的驅動芯片用的是UTC公司的L6219,只需用EraSoC-1000C的4個gpio控制1個L6219來控制電機的轉動速度和所轉的角度。
主軸電機的控制
同步檢測:由1個外部中斷完成,為了能夠控制直流電機轉動速度,用一個時鐘作為計數器來計數一個時間段的針數,可根據快慢做出調整。
電機控制:由1個gpio完成,此gpio用來控制電機電源的開通與關閉。
圖2和圖3分別為系統方案的電路構造圖和電路板實圖。
軟件設計和系統程序移植
Bootloader:
EraSoC-1000C的bootloader使用PMON2000。經過裁剪和增加相關驅動的代碼在EraSoC的官方網站可直接下載。用戶只需按照EraSoC-1000C的用戶手冊進行配置和編譯即可。
內核移植
EraSoC-1000C使用Linux2.4.17和Linux2.6.18.1內核。經過移植后的源代碼可以在EraSoC的官方網站下載,交叉編譯工具鏈mipsel-linux-gcc也可以在該網站下載。
配置內核使用erasoc_defconfig配置文件,用戶可根據自己需要裁剪不用的驅動和文件系統等。
Qtapia編譯
QT是目前在linux上使用較廣的一個圖形系統。在網上下載以下軟件的源碼包之后,按照EraSoC的QT完全安裝手冊,編譯生成QT的可執行代碼。
qt-embedded-2.3.7.tar.gz
qt-x11-2.3.2.tar.gz
qtopia-free-1.7.0.tar.gz
tmake-1.11.tar.gz
e2fsprogs-1.35.tar.gz
驅動及fireware開發
基于EraSoC-1000C的電腦繡花機方案將Linux引入縫紉設備的控制是一項突破,以前普遍認為Linux不適合應用于諸如縫制設備行業這類對功能集成度和實時性要求高的工控行業,這其實是不正確的。正因為憑借EraSoC-1000C芯片處理能力強、總線速度高、設備集成度高的特點,使得系統在運行Linux時,處理器可以很好地完成實時性工作,同時把任務調度、協議處理、數據交換、人機交互交由Linux來處理,整個系統開發過程會變得更為輕松。
X,Y軸步進電機驅動開發
X、Y軸步進電機驅動的原理是:每隔一定的時間間隔通過GPIO發送一個步進信號,電機行走一個相位。時間間隔的大小通過EraSoC-1000C的實時時鐘來控制,時間計數一到,實時時鐘產生一個中斷,CPU在中斷處理并向步進電機發送一個步進命令。X、Y軸電機的速度就通過這些時間間隔的大小調整。當需要加速時,減小每次的時間間隔,反之就是減速。X和Y軸驅動程序里分別注冊了一個時鐘中斷處理程序,并在驅動中提供一個寫函數控制實時時鐘的計時大小和開始計時。當繡花程序啟動,通過該驅動的寫函數,啟動實時時鐘計時。當預定時間到達,中斷產生,中斷處理程序驅動電機步進一個相位,此時根據一個信號量來確定是否繼續要驅動電機,如果需要繼續驅動,則再次初始化實時時鐘的計時。
Z軸電機的驅動開發
Z軸電機使用EraSoC-1000C的PWM進行控制。EraSoC-1000C的PWM驅動采用Linux通用的PWM驅動接口,所以只需在應用層開發相應的控制程序即可。
例如,EraSoC的PWM驅動提供一個write函數給用戶層,用戶通過該函數的參數可以控制PWM的輸出方波:
顯示屏驅動
EraSoC-1000C的Linux內核包含標準的framebuffer接口的LCD驅動程序,用戶也只需按照標準的控制LCD的函數接口編寫應用程序。通過open("/dev/fb0, O_RDWR") 打開LCD顯示設備,然后通過mmap函數將顯存映射到用戶空間,用戶就可以通過簡單的讀寫來控制顯存,以達到控制LCD顯示的目的。
觸摸屏驅動
EraSoC-1000C的Linux內核也已經包含觸摸屏的標準驅動,采用SPI接口。用戶只需在編譯QT的時候將該觸摸屏驅動加入,就可以直接在QT下使用。
U盤驅動
EraSoC-1000C的U盤驅動也是標準的Linux驅動。用戶只需使用mount命令將U盤掛載,然后通過open, read, write等標準函數對U盤進行讀寫。
NAND Flash驅動
EraSoC-1000C采用最新的Yaffs2文件系統管理NAND Flash。用戶接口也很簡單,如同訪問其他文件系統一樣,可直接通過讀寫函數訪問。
蜂鳴器,斷線,壓腳,繞線檢測等驅動
這些功能均使用GPIO實現,為這些功能分別實現了驅動,在驅動里提供一個讀函數來控制。用戶只需使用open函數打開設備,就可以使用read函數讀取這些傳感器的狀態。
int erasoc_gpio_read(int signal)
上層應用
EraSoC-1000C的上層應用建立于基于Linux的軟件平臺Qtapia上。Qtapia是Linux軟件廠商挪威奇趣科技公司(Trolltech,現已被諾基亞收購)專為手機等移動設備開發的產品。在此解決方案中采用類似手機操作的圖像化用戶界面,可使消費者在使用家用電腦繡花機時增加互動的體驗,使得操作縫紉機不再是專業人員才有的技能。
用戶可以管理要刺繡的圖案文檔,系統也通過主窗口顯示和觸摸屏接收用戶輸入。當用戶通過觸摸屏點擊窗口上的按鈕,應用程序根據這些按鈕分別調用底層的驅動程序完成繡花、繞線以及讀取花樣等功能。
事實已證明,一顆EraSoC-1000C芯片可替代兩顆基于ARM7內核的國外處理器或者是工控領域的DSP,同時也可節省相當數量的外設芯片。EraSoC-1000C的二次開發潛能巨大,其所具備的高速處理能力和豐富的片上設備,將帶給縫制設備行業的工程師們無限的創意空間。
評論
查看更多