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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51hei單片機(jī)開發(fā)板上步進(jìn)電機(jī)的總結(jié)經(jīng)驗(yàn)

          51hei單片機(jī)開發(fā)板上步進(jìn)電機(jī)的總結(jié)經(jīng)驗(yàn)

          作者: 時(shí)間:2010-03-29 來源:網(wǎng)絡(luò) 收藏
          相信學(xué)過電子的人都會(huì)知道什么是,它的定義及作用在百度百科里描述的也是比較詳細(xì)的,它是一種同步,在機(jī)電一體化等工業(yè)方面均有廣泛的應(yīng)用,因此怎么也得知道的.于是手上找來一個(gè)24byj48實(shí)物見圖1.

          圖1
          點(diǎn)擊瀏覽下一頁javascript:resizepic(this) border=0>

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

          圖2

          點(diǎn)擊瀏覽下一頁javascript:resizepic(this) border=0>
          這是一款四相五線,轉(zhuǎn)子齒數(shù)按公式推算可得為8個(gè),步距角應(yīng)為11.25度,給出的資料那應(yīng)該叫半步距角.其它的參數(shù)均可按照參數(shù)圖中進(jìn)行,電機(jī)可以用ULN2003A這個(gè)芯片來驅(qū)動(dòng),我決定先不看官方提供的資料和實(shí)例程序,看憑自己的實(shí)力能不能讓這個(gè)小東西轉(zhuǎn)動(dòng)起來,照著圖2的連線圖連了起來(那4個(gè)指示燈是我自己加上去的.方便觀察)并且把P1.0,P1.1,P1.2,P1.3四個(gè)I/O口和板上的引腳對(duì)應(yīng),也就是插上了相應(yīng)的雙排針跳線帽和杜邦線,然后自己搗鼓了2個(gè)小時(shí)對(duì)照一些資料寫了一個(gè)程序燒了進(jìn)STC89C52RC上,上電......哪有一次就成功?折騰了一陣子發(fā)現(xiàn)是四個(gè)I/O口引腳接得不對(duì),改正過來后,再上電........還是不成功,仔陣檢查過硬件電路連接后發(fā)現(xiàn)沒有錯(cuò)誤,于是我懷疑起了程序來,經(jīng)研究,發(fā)現(xiàn)此程序并不適合此電機(jī)及連線圖,自己一時(shí)大意竟把原該輸出負(fù)脈沖的相勵(lì)磁脈沖順序變成正的了,呵呵,改了一下之后,發(fā)現(xiàn)可以了.電機(jī)終于會(huì)轉(zhuǎn)了...這時(shí)已是前天晚上的深夜3點(diǎn)多了...

          由于此程序采用的是Delay函數(shù)進(jìn)行延時(shí)來改變頻沖頻率的,因此我多次修改延時(shí)的確值,多次調(diào)試,發(fā)現(xiàn)電機(jī)無論怎么改,轉(zhuǎn)速都很慢,最高測過只有十多轉(zhuǎn)每分鐘,我的天呀,怎么會(huì)這么慢,然后問一下別人,別人說有可能是電流不夠,他說最好能采用獨(dú)立電源來供電,但是由于未能找到獨(dú)立電源,因此沒有試驗(yàn)過電流增大的情況,查資料說是會(huì)使力矩增大,但應(yīng)該不會(huì)使電機(jī)轉(zhuǎn)得更快吧?更何況我的電機(jī)也沒有失步呀....于是我又去問另一個(gè)師兄,師兄告訴我有可能是裝了減速裝置了,后來經(jīng)仔細(xì)觀察,從以下幾點(diǎn)可以大概推斷出電機(jī)是裝了減速裝置的:1.從圖1實(shí)物圖中可以看到電機(jī)的軸并不在圓形的正中心位置上,一般的只有經(jīng)過減速裝置的電機(jī)才會(huì)這樣的;2.參數(shù)圖中給出的參數(shù)中存在一個(gè)減速比:1/16這個(gè)參數(shù),確實(shí)證明了它是經(jīng)過減速的,即:原來電機(jī)的軸轉(zhuǎn)一圈,輸出軸才轉(zhuǎn)16分之1圈。想怎么會(huì)不慢?可惜我一開始先入為主了,以為那個(gè)“減速比”跟另外一個(gè)概念“調(diào)速比”的理解是差不多的(其實(shí)不一樣),所以在看參數(shù)圖的時(shí)候并沒有醒悟過來,現(xiàn)在想來感覺自己相當(dāng)?shù)牟恍?,做技術(shù)研究的,怎么能夠說差不多呢?1就是1,2就是2,雖說當(dāng)時(shí)是處于疑惑的狀態(tài),但歸根究底還是自己先入為主地思考問題了,慚愧......3.仔細(xì)聽一下聲音,發(fā)現(xiàn)電機(jī)的聲音頻率是很高的,但輸出軸的角速度卻如此的低,因此有可能是經(jīng)過減速裝置的......當(dāng)師兄跟我說有可能是經(jīng)過減速的時(shí)候,我馬上感覺到更不對(duì)頭了.最后師兄還親身拆了這電機(jī)來證實(shí)了,真的有減速裝置...

          了解了情況之后,覺得原來的程序?qū)懙貌缓?于是折騰了一陣子,寫出了一個(gè)用定時(shí)器來產(chǎn)生脈沖的程序,而且還能利用板上的按鍵來改變電機(jī)的轉(zhuǎn)速和方向,并且在數(shù)碼管上進(jìn)行顯示,啊,感覺51的定時(shí)器還是蠻好用的....今晚也算是有收獲的.這里給大家共享一下官方的電機(jī)的源程序:http://www..com/ziliao/51hei-5/精準(zhǔn)控制電機(jī).rar 可點(diǎn)擊下載,簡單修改程序可讓電機(jī)正反轉(zhuǎn).好像在專區(qū)還有幾個(gè)類似的程序大家自己去找吧.我自己寫的太亂就不獻(xiàn)丑了.

          再后來去查了一下資料,發(fā)現(xiàn)原來步進(jìn)電機(jī)的加速程序沒有我想得那么簡單(步進(jìn)電機(jī)一般都是漸漸加速至正常運(yùn)行的,太高的啟動(dòng)頻率會(huì)使電機(jī)無法啟動(dòng)),我的想法是用線性加速的辦法,而資料論文中提出的卻是較高級(jí)的指數(shù)曲線加速的方法,還用到了轉(zhuǎn)動(dòng)慣量和微積分來進(jìn)行分析,哎....現(xiàn)在想一下,其實(shí)高數(shù)和物理在這里還是有用的,數(shù)學(xué)和物理總是分不開的,假如想在步進(jìn)電機(jī)控制這一領(lǐng)域做得深入,除了電路的基本知識(shí)要過硬外,數(shù)學(xué)及物理知識(shí)也跑不了的,這樣說一來就是叫自己在大學(xué)的時(shí)間里要好好地學(xué)習(xí)高數(shù)了,可是實(shí)際上又有幾個(gè)本科的學(xué)生可以知道原來學(xué)會(huì)高數(shù)和大學(xué)物理就是可以這樣應(yīng)用知識(shí)的?學(xué)校里(特別是南醫(yī)大這種帶工科類的醫(yī)科學(xué)校)老師教的時(shí)候會(huì)和我們說的那么詳細(xì)嗎?顯然不實(shí)際也不可能,可是大學(xué)四年時(shí)間就這樣過去了,難道我們就這樣讓時(shí)間流走嗎...

          在步進(jìn)電機(jī)這個(gè)小事上,我覺得,大學(xué)一兩年里還是該把基礎(chǔ)知識(shí)打好的...這樣才能使自己在以后的技術(shù)職業(yè)生涯中不至于處處碰頭,最起碼到時(shí)還記得回來翻開高數(shù)的課本,找出無窮級(jí)數(shù)在哪一頁吧?

          當(dāng)然,能一出來就做ARM的或者系統(tǒng)底層移植及驅(qū)動(dòng)開發(fā)的,是相當(dāng)?shù)牟诲e(cuò)的了,因?yàn)槟蔷鸵馕吨?xiàng)目!!!如果自己決定要往這一方面走,就必須得有所舍棄了......


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(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); })();