<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于EraSoC-1000C的家用電腦繡花機解決方案

          基于EraSoC-1000C的家用電腦繡花機解決方案

          作者: 時間:2008-02-20 來源: 收藏

            正文:

          本文引用地址:http://www.ex-cimer.com/article/79029.htm

            當(dāng)托馬斯和愛迪生發(fā)明了電動機后,美國勝家(Singer)公司于1889年發(fā)明了全世界第一臺電動機驅(qū)動縫紉機,同時也開創(chuàng)了縫紉機工業(yè)的新紀(jì)元。二戰(zhàn)后,工業(yè)縫紉機制造的霸主地位已逐漸被日本所占據(jù)。進入21世紀(jì)后,中國已成為工業(yè)縫紉機制造業(yè)的新盟主??墒敲鎸I(yè)縫紉機市場的日趨飽和以及服裝制造全行業(yè)的利潤日益下降的窘?jīng)r,各國的縫紉機制造商又重新把市場的焦點投向家用市場,勝家公司更是希望重現(xiàn)一百年前美國家庭每戶擁有一臺腳踏式縫紉機的輝煌歲月。

            如今,美國勝家、日本兄弟以及中國飛躍都相繼上市家用電腦繡花機或刺繡機,以期待縫紉機再次敲開老百姓的家門,可受限于芯片技術(shù)的發(fā)展,使得家用電腦繡花機的智能化程度、制造成本、維修方式都難于達到民品的標(biāo)準(zhǔn)。為此,北京中科億芯信息技術(shù)有限公司使用本公司自主設(shè)計的處理器芯片所開發(fā)的家用電腦繡花機方案,采用了Linux2.6內(nèi)核,并添加實時補丁(rtlinux)以使其具備更完善的實時系統(tǒng)功能;精致的Qtapia圖形系統(tǒng)軟件(以下簡稱QT),避免了采用WinCE而帶來的昂貴授權(quán)費用,大大降低了電子控制系統(tǒng)的制造成本,使得電腦繡花機走入家庭變得指日可待。

            系統(tǒng)簡介:

            EraSoC-1000系列芯片作為國內(nèi)唯一的基于龍芯內(nèi)核的高性能SOC(System On Chip),憑借其強大的CPU處理能力、64位浮點運算能力,高效的總線架構(gòu)、可實現(xiàn)低功耗的動態(tài)變頻技術(shù)、豐富的片上設(shè)備,已廣泛地應(yīng)用在國內(nèi)各種嵌入式領(lǐng)域。

            基于的電腦繡花機系統(tǒng)主要由三個電機協(xié)調(diào)工作實現(xiàn)繡花功能,三個電機的協(xié)調(diào)原理:一個主軸電機,采用交流伺服交流來控制針頭的上下運動;X、Y軸步進電機各一個,以實現(xiàn)工作面的橫向與縱向移動。(系統(tǒng)控制流程圖請參看圖1)

            

          基于EraSoC-1000C的家用電腦繡花機

           

            圖1 基于的家用電腦繡花機

            硬件設(shè)計:

            根據(jù)圖1所示的整個系統(tǒng)方案的控制實現(xiàn)原理,我們把此方案的主控制單元分為上、下位機結(jié)構(gòu),并由一顆EraSoC-1000C芯片來完成上、下位機的協(xié)同工作:

            1、上位機結(jié)構(gòu):

            上位機主要負(fù)責(zé)人機交互、文件讀取與解析、部分傳感器信號的處理;

            1.1 STN/TFT LCD顯示與觸摸控制的實現(xiàn):

            此部分作為人機交互的主要平臺,通過控制觸摸屏來控制電機做出相應(yīng)的動作就是在此部分實現(xiàn)的。其中液晶部分對東芝T6963CFG LCD驅(qū)動芯片的控制是由EraSoC-1000C引出的8位數(shù)據(jù)線和5個gpio實現(xiàn)的,本次用的黑白屏,如果需要可以用彩色屏,尺寸也可以任意選擇。而觸摸屏的控制是由EraSoC-1000C的spi信號線和片選線時鐘線經(jīng)過觸摸屏控制器ADV7843實現(xiàn)的。

            1.2 傳感器通過GPIO與EraSoC-1000C的通訊:

            該繡花機一共用到了6個傳感器分別由EraSoC-1000C提供的6個可以作為中斷輸入的gpio控制。這些傳感器分別是x軸方向電機的傳感器,y軸方向的電機傳感器,z軸方向的電機傳感器,測試?yán)C花針是不是在上針位(此時針在所有位置的最高點)的傳感器,測試?yán)C花針是不是離開布的傳感器,和一個用于是否繞線的輔助功能的傳感器。

            2、下位機結(jié)構(gòu):

            下位機主要負(fù)責(zé)輸出電機控制信號(PWM)、協(xié)同工作以及部分傳感器信號的處理:

            2.1 PWM對交流伺服電機的控制

            在EraSoC-1000C芯片中一共有六路脈沖寬度調(diào)節(jié)/定時/計數(shù)控制器(以下簡稱PWM)。每一路PWM工作和控制方式完全相同,都有兩路輸入信號(gate_clk_pad_i, capt_pad_i)和一路脈沖寬度輸出信號 (pwm_o)。由于系統(tǒng)時鐘高達60MHz,計數(shù)寄存器和參考寄存器均32位數(shù)據(jù)寬度,這樣開發(fā)人員可通過編成讓PWM產(chǎn)生各種復(fù)雜的近似線性的輸出信號,非常適合高檔電機的控制。

            2.2 步進電機的驅(qū)動

            主要采用專門的步進電機驅(qū)動芯片,有EraSoC-1000C給出控制信號,控制電機按照要求運動。本次設(shè)計步進電機的驅(qū)動芯片用的是UTC公司的L6219只需用EraSoC-1000C的4個gpio控制一個L6219來控制電機的轉(zhuǎn)動速度和所轉(zhuǎn)的角度。

            2.3 主軸電機的控制

            同步檢測:由1個外部中斷完成,為了能夠控制直流電機轉(zhuǎn)動速度,用了一個時鐘作為計數(shù)器來計數(shù)一個時間段的針數(shù),如果快了或者慢了就做出調(diào)整。

            電機控制:由1個gpio完成,此gpio用來控制電機電源的開通與關(guān)閉。

            圖2和圖3分別為系統(tǒng)方案的電路構(gòu)造圖和電路板實圖。

            

          基于EraSoC-1000C的家用電腦繡花機電路系統(tǒng)架構(gòu)

           

            圖2 基于EraSoC-1000C的家用電腦繡花機電路系統(tǒng)架構(gòu)

            

           基于EraSoC-1000C的家用電腦繡花機的控制電路板

           

            圖3 基于EraSoC-1000C的家用電腦繡花機的控制電路板

            軟件設(shè)計和系統(tǒng)程序移植:

            1、Bootloader:

            EraSoC-1000C的bootloader使用PMON2000。經(jīng)過裁剪和增加相關(guān)驅(qū)動的代碼在EraSoC的官方網(wǎng)站可直接下載。用戶只需按照EraSoC-1000C的用戶手冊進行配置和編譯即可。

            2、內(nèi)核移植:

            EraSoC-1000C使用Linux2.4.17和Linux2.6.18.1內(nèi)核。經(jīng)過移植后的源代碼可以在EraSoC的官方網(wǎng)站下載。

            交叉編譯工具鏈mipsel-linux-gcc也可以在該網(wǎng)站下載。

            配置內(nèi)核使用erasoc_defconfig配置文件,用戶可根據(jù)自己需要裁剪不用的驅(qū)動和文件系統(tǒng)等。

            3、Qtapia編譯:

            QT是目前在linux上使用較廣的一個圖形系統(tǒng)。在網(wǎng)上下載以下軟件的源碼包之后,按照EraSoC的QT完全安裝手冊,編譯生成QT的可執(zhí)行代碼。

            qt-embedded-2.3.7.tar.gz

            qt-x11-2.3.2.tar.gz

            qtopia-free-1.7.0.tar.g

            ztmake-1.11.tar.gz

            e2fsprogs-1.35.tar.gz

            驅(qū)動及fireware開發(fā):

            基于EraSoC-1000C的電腦繡花機方案成功將Linux引入縫紉設(shè)備的控制是一個業(yè)界領(lǐng)先的技術(shù)突破。以前普遍認(rèn)為Linux不適合應(yīng)用于像縫制設(shè)備行業(yè)這類對功能集成度和實時性要求高的工控行業(yè),其實是不正確的。正因為憑借EraSoC-1000C芯片處理能力強、總線速度高、設(shè)備集成度高的特點,使得系統(tǒng)在運行l(wèi)inux時,處理器可以很好的完成實時性工作,同時把任務(wù)調(diào)度、協(xié)議處理、數(shù)據(jù)交換、人際交互交由linux來處理,用戶會發(fā)現(xiàn)整個系統(tǒng)開發(fā)過程會變得輕松自如。

            1、X,Y軸步進電機驅(qū)動開發(fā):

            X和Y軸步進電機驅(qū)動的原理是,每隔一定的時間間隔通過GPIO發(fā)送一個步進信號,電機行走一個相位。而時間間隔的大小通過EraSoC-1000C的實時時鐘來控制,時間計數(shù)一到,實時時鐘產(chǎn)生一個中斷,CPU在中斷處理并向步進電機發(fā)送一個步進命令。X,Y軸電機的速度就通過這些時間間隔的大小調(diào)整。當(dāng)需要加速時,減小每次的時間間隔,反之就是減速。X和Y軸驅(qū)動程序里分別注冊了一個時鐘中斷處理程序,并在驅(qū)動里提供一個寫函數(shù)控制實時時鐘的計時大小和開始計時。當(dāng)繡花程序啟動,通過該驅(qū)動的寫函數(shù),啟動實時時鐘計時。當(dāng)預(yù)定時間到達,中斷產(chǎn)生,中斷處理程序驅(qū)動電機步進一個相位,此時根據(jù)一個信號量來確定是否繼續(xù)要驅(qū)動電機,如果需要繼續(xù)驅(qū)動,則再次初始化實時時鐘的計時。

            

          程序

           

            

          程序

           

            2、Z軸電機的驅(qū)動開發(fā):

            Z軸電機使用EraSoC-1000C的PWM進行控制。EraSoC-1000C的PWM驅(qū)動采用Linux通用的PWM驅(qū)動接口,所以我們只要在應(yīng)用層開發(fā)相應(yīng)的控制程序就可以了。

            例如,EraSoC的PWM驅(qū)動提供一個write函數(shù)給用戶層,用戶通過該函數(shù)的參數(shù)可以控制PWM的輸出方波:

            

          程序

           

            3、顯示屏驅(qū)動:

            EraSoC-1000C的Linux內(nèi)核包含標(biāo)準(zhǔn)的framebuffer接口的LCD驅(qū)動程序,用戶也只需按照標(biāo)準(zhǔn)的控制LCD的函數(shù)接口編寫應(yīng)用程序。通過open(“/dev/fb0, O_RDWR”)打開LCD顯示設(shè)備,然后通過mmap函數(shù)將顯存映射到用戶空間,用戶現(xiàn)在就可以通過簡單的讀寫來控制顯存,以達到控制LCD顯示的目的。

            4、觸摸屏驅(qū)動:

            EraSoC-1000C的Linux內(nèi)核也已經(jīng)包含觸摸屏的標(biāo)準(zhǔn)驅(qū)動,采用SPI接口。用戶只需在編譯QT的時候?qū)⒃撚|摸屏驅(qū)動加入,就可以直接在QT下使用。

            5、U盤驅(qū)動:

            EraSoC-1000C的U盤驅(qū)動也是標(biāo)準(zhǔn)的Linux驅(qū)動。用戶只需簡單的使用mount命令將U盤掛載,然后通過open, read, write等標(biāo)準(zhǔn)函數(shù)對U盤進行讀寫。

            6、NAND Flash驅(qū)動:

            EraSoC-1000C采用最新的Yaffs2文件系統(tǒng)管理NAND Flash。用戶接口也是十分的簡單,如同訪問其他文件系統(tǒng)一樣,可直接通過讀寫函數(shù)訪問。

            7、蜂鳴器,斷線,壓腳,繞線檢測等驅(qū)動:

            這些功能均使用GPIO實現(xiàn),我們?yōu)檫@些功能分別實現(xiàn)了驅(qū)動,在驅(qū)動里提供一個讀函數(shù)來控制。用戶只需簡單的使用open函數(shù)打開設(shè)備,就可以使用read函數(shù)讀取這些傳感器的狀態(tài)。

            

          程序

           

            GPION是各GPIO的編號。

            上層應(yīng)用:

            EraSoC-1000C的上層應(yīng)用建立于基于Linux的軟件平臺Qtapia上。Qtapia是Linux軟件廠商挪威奇趣科技公司(Trolltech,現(xiàn)已被諾基亞以1.5億美元收購)專為手機等移動設(shè)備開發(fā)的產(chǎn)品,目前國內(nèi)排名前十的手機生產(chǎn)商有7個已經(jīng)選擇了奇趣作為嵌入式Linux平臺的合作伙伴。

            也正是因為Qtapia的使用環(huán)境已在不知不覺中被消費大眾所熟悉,我們特意在此解決方案里采用了類似手機操作的圖像化用戶界面,就是為了讓消費者在使用家用電腦繡花機時增加互動的體驗,使得操作縫紉機不再是專業(yè)人員才有的技能。

            用戶可以管理要刺繡的圖案文檔,系統(tǒng)也通過主窗口顯示和觸摸屏接收用戶輸入。當(dāng)用戶通過觸摸屏點擊窗口上的按鈕,應(yīng)用程序根據(jù)這些按鈕分別調(diào)用底層的驅(qū)動程序完成繡花,繞線,讀取花樣等等功能。

            結(jié)束語:

            作為第一臺使用國產(chǎn)高性能處理器的電腦繡花機解決方案,中科億芯的研發(fā)團隊始終把“科技以人為本”的理念放在首位,那就是用業(yè)界領(lǐng)先的技術(shù)去創(chuàng)造大眾可接受的電子產(chǎn)品。事實已證明,一顆EraSoC-1000C芯片可替代兩顆基于ARM7內(nèi)核的國外處理器或者是工控領(lǐng)域的DSP,同時也可節(jié)省相當(dāng)數(shù)量的外設(shè)芯片。而且EraSoC-1000C的二次開發(fā)潛能巨大,其所具備的高速處理能力和豐富的片上設(shè)備,將

            帶給縫制設(shè)備行業(yè)的工程師們無限的創(chuàng)意空間,讓國產(chǎn)縫制設(shè)備能夠真正意義上的國產(chǎn)化,讓這些設(shè)備都跳動著一顆“中國芯”!

            欲了解EraSoC-1000C和聚芯其他系列芯片的詳細規(guī)格和解決方案,請訪問EraSoC和北京中科億芯信息技術(shù)有限公司的官方網(wǎng)站:www.EraSoC.com。同時可登陸網(wǎng)址:http://www.tudou.com/programs/view/Ixiw9-BYvRQ/ 來觀看家用電腦繡花機的實際工作視頻,或登陸視頻搜索網(wǎng)www.tudou.com查詢“電腦繡花機”。

            Reference:

            1.“Datasheet of EraSoC-1000C” / 《EraSoC-1000C數(shù)據(jù)手冊》 (by Beijing ZhongKeYiXin)

            2.“Linux Device Drivers (2nd Edition)” / 《Linux設(shè)備驅(qū)動開發(fā)(第二版)》 (by Johathan Corbet, Alessandro Rubini & Greg Kroah-Hartman)

            3.“Embedded System Design based on EraSoC” / 《基于聚芯SoC的嵌入式系統(tǒng)設(shè)計》 北京郵電大學(xué)出版社



          關(guān)鍵詞: EraSoC-1000C

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();