久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6934|回復: 0
打印 上一主題 下一主題
收起左側

基于51單片機PID電機測速系統論文下載

[復制鏈接]
跳轉到指定樓層
樓主

重慶郵電大學
畢業設計(論文)



設計(論文)題目:



  名  稱

學  生  姓  名 :

專          業 :

班          級 :

學          號 :

指  導  教  師 :

答辯組  負責人 :


填表時間:
重慶郵電大學教務處制


摘  要
在工業自動控制系統和各種智能產品中常常會應用到電動機進行驅動、傳動和控制,而現代智能控制系統中,對電機的控制要求越來越精確和迅速,對環境的適應要求越來越高。
本設計以AT89C51單片機為核心,完成了直流電機的轉速自動測量及轉速調節功能。在設計中采用PWM技術對電機進行控制,并且利用LCD1602液晶屏設計的人機界面系統顯示轉速的設定值及實際值,通過應用PID算法對占空比的計算達到精確調速的目的。
1

目  錄
第一章 前言              4
1.1 直流電機閉環調速系統背景              4
1.2 本設計實現的基本功能              4
1.3設計目的及意義              4
第二章 總體設計規劃              2
2.1 直流電機的基本工作原理              5
2.2 直流電機控制原理及特點              5
2.3 直流電機調速控制方式選擇              5
2.4 PWM脈寬調制方式              5
2.5 電機實際轉速的獲取              6
2.6總體設計框圖              7
第三章 硬件設計              8
3.1 AT89C51芯片介紹              8
3.1.2電源濾波電路              12
3.1.3 系統時鐘的設計              12
3.1.4 系統復位方式              13
3.2 L293D芯片介紹              14
3.2.1 驅動電路設計              14
3.3 脈沖信號的獲取              15
3.3.1 LM393芯片介紹              16
   3.3.2 測速電路設計              16
   3.4 LCD1602液晶屏介紹              18
   3.4.1 LCD顯示模塊設計              25
3.5按鍵模塊設計              26
第四章 軟件設計              19
4.1 主程序              19
4.2 系統原理圖              28
參考文獻              29
致 謝              30
       第一章  前 言
1.1 直流電機閉環調速系統背景
對直流電機轉速的控制即可采用開環控制,也可采用閉環控制。與開環控制相比,速度控制閉環系統的機械特性有以下優越性:閉環系統的機械特性與開環系統機械特性相比,其性能大大提高;理想空載轉速相同時,閉環系統的靜差率(額定負載時電機轉速降落與理想空載轉速之比)要小得多;當要求的靜差率相同時, 閉環調速系統的調速范圍可以大大提高。
1.2 本設計實現的基本功能
(1)按鍵設定并顯示轉速,實時顯示實際轉速。
(2)按鍵控制電機起停、正反轉。
(3)PWM轉速閉環控制。
1.3 設計目的及意義
本課程是機械電子工程本科專業的重要實踐課程,是《單片機原理與應用》課程的一個綜合性、設計性的實踐環節。通過這門課程的學習與實踐,能夠提出基于單片機的機電系統的設計思路、論證設計方案;熟悉單片機系統開發、研制的過程,軟硬件設計方法和設計步驟;初步學會設計單片機系統軟硬件設計及調試的方法,具備技術實現能力;基本上能夠處理實踐過程中出現的問題并提出解決辦法;提高理論付諸于實踐的能力,提高工程設計能力和處理實際問題的能力,開發和創新能力。
1



               第二章  總體設計規劃
2.1 直流電機的基本工作原理

一 直流電機的用途

直流電動機的優點:

1 調速范圍廣,易于平滑調節

2 過載、啟動、制動轉矩大

3 易于控制,可靠性高

4 調速時的能量損耗較小

缺點:  換向困難,容量受到限制,不能做的很大。

應用:  軋鋼機、電車、電氣鐵道牽引、造紙、紡織拖動。

直流發電機用作電解、電鍍、電冶煉、充電、交流發電機勵磁等的直流電源。


二、直流電機的工作原理

原理:任何電機的工作原理都是建立在電磁感應和電磁力這個基礎上。為了討論直流電機的工作原理,我們把復雜的直流電機結構簡化為工作原理圖。

(一)直流發電機的工作原理

1.工作原理:導體在磁場中運動時,導體中會感應出電勢e 。

                     e=Blv。

B:磁密l:導體長度; v:導體與磁場的相對速度。

正方向:用右手定則判斷。電勢e正方向表示電位升高的方向,與U相反。如果同一元件上e和U正方向相同時,e= -U。

理解:電磁感應原理的變形(變化的磁通產生感應電動勢)

2 發電機工作過程分析:兩磁極直流發電機的工作原理圖

  • 構成:

磁場:圖中 N和 S是一對靜止的磁極,用以產生磁場,其磁感應強度沿圓周為正弦分布。

勵磁繞組——容量較小的發電機是用永久磁鐵做磁極的。容量較大的發電機的磁場是由直流電流通過繞在磁極鐵心上的繞組產生的。用來形成N極和S極的繞組稱為勵磁繞組,勵磁繞組中的電流稱為勵磁電流If。

電樞繞組:在N極和 S極之間,有一個能繞軸旋轉的圓柱形鐵心,其上緊繞著一個線圈稱為電樞繞組(圖中只畫出一匝線圈),電樞繞組中的電流稱為電樞電流Ia。

換向器:電樞繞組兩端分別接在兩個相互絕緣而和繞組同軸旋轉的半圓形銅片——換向片上,組成一個換向器。換向器上壓著固定不動的炭質電刷。

電樞:鐵心、電樞繞組和換向器所組成的旋轉部分稱為電樞。

(2)工作過程:

P1:電動勢產生

當電樞被原動機以恒速驅動,按逆時針方向轉動時,用右手定則可以判定,線圈ab和cd邊切割磁力線產生的感應電動勢的方向,則在負載與線圈構成的回路中產生電流Ia,其方向與電動勢方向相同。電流由電刷A流出,由電刷B流回。

電動勢與電流關系:同向

P2:換向

當電樞轉到上圖b所示位置時,ab邊轉到了S極下,cd邊轉到了N極下。這時線圈中感應電動勢的方向發生了改變,但由于換向器隨同一起旋轉,使得電刷 A總是接觸 N極下的導線,而電刷B總是接觸S極下的導線,故電流仍由A流出 B流回,方向不變。


雖然有換向器的作用,將線圈內的交變電動勢在兩電刷間變換為方向不變的電動勢,但它的大小仍然是脈動的。欲獲得在方向和量值上均為恒定的電動勢,則應把電樞鐵心上的槽數和線圈匝數增多,同時換向器上的換向片數也要相應地增加。

(3) 電磁轉矩與能量轉換分析 :

電磁轉矩:電樞電流 Ia與磁場相互作用而產生的電磁力形成了電磁轉矩 T。

用左手定則可以判定,電磁轉矩 T的方向與電樞旋轉方向相反。因此,在電樞等速旋轉時,原動機的驅動轉矩 T1必須與發電機的電磁轉矩 T和空載損耗轉矩 T0相平衡( T0是發電機軸上的轉矩),即T1=T+ T0

*電磁轉矩方向與轉速方向關系:反向

能量轉換:

原動機(機械能)->電磁轉矩->發電機負載(電能)

當發電機的負載(即電樞電流)增加時,電磁轉矩和輸出功率也隨之增加,這時原動機的驅動轉矩所供給的機械功率亦必須相應增加,以保持轉矩之間和功率之間的平衡。可見,發電機向負載輸出電功率的同時,原動機卻向發電機輸出機械功率,發電機起著將機械能轉換為電能的作用。

(二)直流電動機的工作原理

1.工作原理:電磁力定律

載流導體在磁場中將會受到力的作用,若磁場與載流導體互相垂直,作用在導體上的電磁力大小為:      f = B·l·i     

力的方向用左手定則確定

理解:電流產生磁場原理的變形(電流產生磁場)

一個通電線圈相當于一個具有NS極的磁體。形成電磁力。

2電動機工作過程分析:直流電動機的工作原理圖

(1)構成:

磁場:圖中 N和 S是一對靜止的磁極,用以產生磁場,其磁感應強度沿圓周為正弦分布。

勵磁繞組——容量較小的發電機是用永久磁鐵做磁極的。容量較大的發電機的磁場是由直流電流通過繞在磁極鐵心上的繞組產生的。用來形成N極和S極的繞組稱為勵磁繞組,勵磁繞組中的電流稱為勵磁電流If。

電樞繞組:在N極和 S極之間,有一個能繞軸旋轉的圓柱形鐵心,其上緊繞著一個線圈稱為電樞繞組(圖中只畫出一匝線圈),電樞繞組中的電流稱為電樞電流Ia。

換向器:電樞繞組兩端分別接在兩個相互絕緣而和繞組同軸旋轉的半圓形銅片——換向片上,組成一個換向器。換向器上壓著固定不動的炭質電刷。

電樞:鐵心、電樞繞組和換向器所組成的旋轉部分稱為電樞。

(2)工作過程:

P1:電磁轉矩產生

電樞繞組通過電刷接到直流電源上,繞組的旋轉軸與機械負載相聯。電流從電刷 A流入電樞繞組,從電刷B流出。電樞電流Ia與磁場相互作用產生電磁力F,其方向可用左手定則判定。這一對電磁力所形成的電磁轉矩T,使電動機電樞逆時針方向旋轉。

*電磁轉矩與電樞旋轉方向關系:同向

P2:換向

當電樞轉到上圖b所示位置時,ab邊轉到了S極下,cd邊轉到了N極下。這時線圈電磁轉矩的方向發生了改變,但由于換向器隨同一起旋轉,使得電刷 A總是接觸 N極下的導線,而電刷B總是接觸S極下的導線,故電流流動方向發生改變,電磁轉矩方向不變。

(3) 電動勢與能量轉換分析 :

電動勢:電樞轉動時,割切磁力線而產生感應電動勢,這個電動勢(用右手定則判定)的方向與電樞電流Ia和外加電壓U的方向總是相反的,稱為反電動勢Ea。

它與發電機的電動勢 E的作用不同。發電機的電動勢是電源電動勢,在外電路產生電流。而Ea是反電動勢,電源只有克服這個反電動勢才能向電動機輸入電流。

可見,電動機向負載輸出機械功率的同時,卻向電動機輸入電功率,電動機起著將電能轉換為機械能的作用。

*電動勢方向與電流方向關系:反向

能量轉換:

電源(電能)->電磁轉矩->負載(機械能)

比較:

發電機和電動機兩者的電磁轉矩T、電動勢的作用是不同的。

發電機的電磁轉矩是阻轉矩,它與原動機的驅動轉矩T1的方向是相反的。電動機的電磁轉矩是驅動轉矩,它使電樞轉動。電動機的電磁轉矩T必須與機械負載轉矩T2及空載損耗轉矩T0相平衡,即T=T2十T0。

發電機的電動勢是電源電動勢。電動機的電動勢是反電動勢,電源只有克服這個反電動勢才能向電動機輸入電流。

直流電機作發電機運行和作電動機運行時,雖然都產生電動勢和電磁轉矩,但兩者作用截然相反。 

 

第二節  直流電機的結構

目的:了解它們各主要部件的名稱、作用、相互組裝及動作關系。以利正確選用和使用。

電機的結構要求:

1 電磁要求:  產生磁場,感應出電動勢,通過電流,產生電磁轉矩

2機械要求:傳遞轉矩,保持堅固穩定,冷卻的要求,檢修,運行可靠。

從電機的基本工作原理知道,電機的磁極和電樞之間必須有相對運動,因此,任何電機都有固定不動的定子和旋轉的轉子兩部分組成,在這兩部分之間的間隙叫空氣隙。

一、定子

定子的作用是產生磁場和作為電機機械支撐。它由主磁極、換向磁極、電刷、機座、端蓋和軸承等組成。

(一)主磁極——產生主磁通φ。

主磁極鐵心包括極心和極掌兩部分。極心上套有勵磁繞組,各主磁極上的繞組一般都是串聯的。直流電機的磁極如圖所示。極掌的作用是使空氣隙中磁感應強度分布最為合適。

    改變勵磁電流If的方向,就可改變主磁極極性,也就改變了磁場方向。

(二)換向磁極——產生附加磁場,改善電機的換向,減小電刷與換向器之間的火花,不致使換向器燒壞。

在兩個相鄰的主磁極之間中性面內有一個小磁極,這就是換向磁極。它的構造與主磁極相似,它的勵磁繞組與主磁極的勵磁繞組相串聯。

主磁極中性面內的磁感應強度本應為零值,但是,由于電樞電流通過電樞繞組時所產生的電樞磁場,使主磁極中性面的磁感應強度不能為零值。于是使轉到中性面內進行電流換向的繞組產生感應電動勢,使得電刷與換向器之間產生較大的火花。

用換向磁極的附加磁場來抵消電樞磁場,使主磁極中性面內的磁感應強度接近于零,這樣就改善了電樞繞組的電流換向條件,減小了電刷與換向器之間的火花。

(三)電刷裝置

電刷裝置主要由用碳一石墨制成導電塊的電刷、加壓彈簧和刷盒等組成。固定在機座上(小容量電機裝在端蓋上)不動的電刷,借助于加壓彈簧的壓力和旋轉的換向器保持滑動接觸,使電樞繞組與外電路接通。

電刷數一般等于主磁極數,各同極性的電刷經軟線匯在一起,再引到接線盒內的接線板上,作為電樞繞組的引出端。

(四)機座——用來固定主磁極、換向磁極和端蓋,是電機磁路的一部分。

機座用鑄鋼或鑄鐵制成。機座上的接線盒有勵磁繞組和電樞繞組的接線端,用來對外接線。

(五)端蓋

    端蓋由鑄鐵制成,用螺釘固定在底座的兩端,蓋內有軸承用以支撐旋轉的電樞。

二、轉子

轉子又稱電樞,是電機的旋轉部分。它由電樞鐵心、繞組、換向器等組成。如右圖所示。

(一)電樞鐵心

電樞鐵心由硅鋼片沖制迭壓而成,在外圓上有分布均勻的槽用來嵌放繞組。鐵心也作為電機磁路的一部分。

(二)繞組

繞組是產生感應電動勢或電磁轉矩,實現能量轉換的主要部件。它是由許多繞組元件構成,按一定規則嵌放在鐵心槽內和換向片相連,使各組線圈的電動勢相加。繞組端部用鍍鋅鋼絲箍住,防止繞組因離心力而發生徑向位移。

(三)換向器

換向器由許多銅制換向片組成,外形呈圓柱形,片與片之間用云母絕緣。

三、銘牌和額定值

為了使電機安全而有效地運行,制造廠對電機的工作條件都加以技術規定。按照規定的工作條件進行運行的狀態叫做額定工作狀態。電機在額定工作時的各種技術數據叫做額定值,一般加下標 e表示。這些額定值都列在電機的銘牌上,使用電機前,應熟悉銘牌。使用中的實際值,一般不應超過銘牌所規定的額定值。

    (一)型號:它表示電機的類別。例如:Z2--12         

              Z:直流;2:設計序號;1:鐵心長度;2:機座號

    (二)額定電流Ie

    這是指發電機長期運行時電樞輸出給負載的允許電流。對于電動機則是指電源輸入到電動機的允許電流。

    (三)額定電壓Ue

    這是指發電機輸出的允許端電壓。對于電動機則指輸入到電動機端鈕上的允許電壓。

    (四)額定轉速ne

    這是指電機在額定工作狀態時,應達到的轉速。

    (五)額定功率(額定容量) Pe

對于發電機來說,這是指在額定電壓下,輸出額定電流時,向負載提供的電功率Pe,Pe=UeIe

    對于電動機來說,則是指在額定電壓,額定電流和額定轉速下,電動機軸上輸出的機械功率Pe=UeIeηe

    (六)額定效率ηe

    額定功率與輸入功率之比,稱為電機的額定效率,即ηe=(額定功率/輸入功率)×100 %

四、電樞繞組

1 有關術語

1)極軸線——主磁極的中軸線。

2) 幾何中性線——相鄰兩個主磁極之間的幾何分界線。

3) 極距τ:

相鄰兩磁極中心線間的距離稱為極距τ,常用槽數表示,

τ =z/2p

其中z為槽數,p為極對數。

4)繞組元件——兩端分別與兩個換向器片聯接的單匝或多匝線圈,每個元件由兩個放在電樞槽中可以產生感應電動勢的有效邊,叫元件邊。槽外部分只起連接作用,叫端接部分。

5)節距——繞組元件的寬度和元件之間的連接規律。

第一節距: 一個線圈的兩個邊所跨定子圓周上的距離稱為節距,用 y1 表示,一般用槽數計.

線圈可范圍分為:

     整距繞組: y1 = τ

     短距繞組: y1 < τ

長距繞組: y1 > τ

換向節距: 一個元件的兩個邊在換向器上的距離稱為換向節距,用 yk 表示.

第三節  直流電機的磁場

一、直流電機的勵磁方式

按勵磁方式不同,電機可分為

(一)他勵直流電機   電樞和勵磁繞組由兩個獨立的直流電源供電。

(二)并勵直流電機   電樞和勵磁繞組并聯后由一個獨立的直流電源供電。

(三)串勵直流電機   電樞和勵磁繞組串聯后由一個獨立的直流電源

                    供電

(四)復勵直流電機   復勵電機有兩個繞組,一個并勵繞組,一個串勵

                   繞組,并勵繞組和電樞并聯,和串勵繞組串聯后由

                    一個獨立的直流電源供電。

直流發電機的主要勵磁方式是他勵式、并勵式和復勵式  

二、直流電機的空載磁場 

磁場的基本物理量

(1)  磁路:磁通經過的路徑。

(2)  磁通:  磁場中穿過某一截面積的總磁感線數稱為通過該面積的磁通

                   單位韋伯Wb。

(3)  磁感應強度B:  描述磁介質中實際的磁場強弱和方向的物理量,矢量,

           有大小和方向,單位特斯拉T。B= /A(磁通除以截面積)

(4) 磁場強度 H:   是計算磁場時常用的物理量,也是矢量。它與磁感應強度矢量的關系為  H=B/

(5)  磁通勢:某一線圈的電流I與其匝數N的乘積。磁通勢F的方向由產生    它的線圈電流按右手定則確定。單位:(A)

1.直流電機的磁場構成

   直流電機工作時的磁場是由各繞組的總磁動勢共同產生的(包括勵磁

   繞組,電樞繞組,換向極繞組,補償繞組等)。勵磁繞組的磁動勢起

   最主要的作用。

1)主磁通 Φm  所有那些由N極經過氣隙到轉子,再由另一個氣隙返回S極的磁通,同時與勵磁繞組和電樞繞組相交鏈,是直流電機中起有效作用的磁通,稱為主磁通,它能夠在旋轉的電樞繞組中感應出電動勢,并和電樞繞組的磁動勢相互作用產生電磁轉矩。

2)漏磁通 Φ1σ 交鏈勵磁繞組本身,不和電樞繞組相交鏈,只能增加磁極和定子磁軛的飽和程度,不產生電動勢和轉矩。

2.直流電機的空載磁場  

直流電機的空載是指電樞電流等于零或者很小,且可以不計其影響

        的一種運行狀態。

磁場的計算

全電流定律:在磁路中,沿任一閉合路徑,磁場強度的線積分等于與該閉和路徑交鏈的電流的代數和。

上式左側為磁場強度矢量沿閉合回線的線積分;右側是穿過由閉合回線所圍面積的電流的代數和。電流的符號規定為:閉合回線的圍繞方向與電流成右旋系時為正,反之為負。

    由勵磁磁通勢單獨建立的磁場,以一臺四極直流電機空載時為例,由勵磁電流單獨建立的磁場分布如圖。


  •          空載磁密分布

不計齒槽影響,直流電機空載時,其氣隙磁場(主磁場)的磁密分布波形如圖所示

三.直流電機負載時的磁場和電樞反應

1.負載時磁場

電機帶上負載以后,電樞繞組內流過電流,還會形成磁通勢,該磁通稱為電樞磁通勢。 所以,負載時電機中氣隙磁場是由勵磁磁通勢和電樞磁通勢共同建立。

由此可知,在直流電機中,從空載到負載,其氣隙磁場是變化的  

2.電樞反應  

1)電樞磁通勢

電樞磁通勢對勵磁磁通勢所產生氣隙磁場的影響稱為電樞反應。

為畫圖簡單起見,元件邊只畫一層,認為電樞是光滑的, 并考慮某一極性下元件中流過電流同一方向, 得電樞磁場分布。

電樞反應磁通勢軸線的位置與電刷軸線重合,當電刷處于幾何中性線時,電樞反應磁通勢與磁極軸線互相垂直 。

  • 電樞反應使氣隙磁場發生了畸變

電樞磁場使主磁場一半削弱,另一半加強,并使電樞表面磁密等于零處(物理中心線)離開了幾何中性線。

  • 電磁反應呈去磁作用

* 在磁路不飽和時 主磁場削弱的量與加強的量恰好相等。

* 在磁路臨界飽和時

增磁會使半個極下飽和程度提高,鐵心磁阻增大,另外半個極下飽和程度減小,鐵心磁阻減小 ,因磁路臨界飽和,從而使實際的合成磁場曲線要比不飽和時略低 。增加的磁通數量就會小于磁通減少的數量 。

第四節 感應電動勢和電磁轉矩的計算

一.感應電動勢的計算

1.運行時感應電動勢始終存在

直流電機無論作電動機運行還是作發電機運行,電樞繞組內都感應產生電動勢。這個感應電動勢是指一條支路的電動勢。

2.如何計算感應電動勢

要計算支路電動勢,可先求出每個元件電動勢的平均值,然后乘上每條支路串聯元件數,就可得出支路電動勢。

元件平均電勢

B為每一個磁極下的平均磁感應強度,等于每極磁通除以每極的面積l, B= /l

電磁感應定律:  e=Blv

式中:v為導體切割磁力線的線速度v=2Rn/60= 2pn/60(2R= 2p)

n - 電樞的轉速(r/min)

p - 極對數

 - 極距

每條支路總導體數2N,則電樞感應電動勢的平均值為:

E=2Ne=2NBlv=4pNn/60  如果令4pN/60=CE  則

E= CE n

Ce 稱為電動勢常數

磁通的單位為 Wb,轉速 n 的單位為 rpm,感應電動勢的單位為 V

感生電動勢的方向由磁場的方向和轉子的旋轉方向決定。

在直流電動機中,電動勢的方向與電樞電流的方向相反,為反電動勢;

在直流發電機中,電動勢的方向與電樞電流的方向相同,為電源電動勢。

二.電磁轉矩的計算

1.元件邊所受切線方向電磁力

設氣隙中某處的徑向磁密為 Bdx ,元件數為 Ny ;元件邊中電流為ia

根據電磁力定律,此處元件邊所受的切線方向的電磁力為:

fx = Blia

B為每一個磁極下的平均磁感應強度,等于每極磁通除以每極的面積l, Bdx= /l

2.元件邊所產生電磁轉矩

設電樞的直徑2R ,因為2R=2p,所以R=p/.

元件數為N, a為并聯支路對數,則電樞表面共有元件邊數為 4aN ,則電磁力產生的電磁轉矩為:

Te = 4aNfxR= 4aNBdx·l·iaR=2pN ia/

若令 CT= 2pN /, 則

Te=  CTia

電磁轉矩由磁場的方向和電樞電流的方向決定。

在直流電動機中,電磁轉矩的方向與轉子的旋轉方向相同,為拖動轉矩

在直流發電機中,電磁轉矩的方向與轉子的旋轉方向相反,為制動轉矩

第四節直流電動機運行分析

教學目的              掌握直流電動機的勵磁方式

掌握直流電動機的方程

教學重點              直流電動機的勵磁方式

教學難點              直流電動機的電路方程

一、直流電動機的基本方程

    在這里我們將討論直流電動機的電壓、功率和轉矩的平衡方程,說明其能量關系。

(一)電樞電路電壓平衡方程

1.電動機的反電勢   

在電機工作原理的討論中,我們知道電樞旋轉時,電樞中的載流導體割切磁力線產生感應電動勢Ea=Ceφn。這個電動勢的方向與電樞電流的方向相反,抵制電樞電流的流入,故稱為反電動勢。因此,電源要向電樞輸入電流,就必須克服反電動勢的作用,即必須使加在電樞繞組兩端的電壓U>Ea。l

2.電壓平衡方程

                            Ea=U–IaRa                                    式中,Ia為電樞電流(A); Ra為電樞繞組電阻(Ω)

      上式改寫后即得電壓平衡方程為

                                   U=Ea+IaRa                                     上式表明,電樞繞組兩端的電壓U可分為兩部分,一部分用來平衡反電動勢Ea,另一部分就是電樞繞組的電阻壓降IaRa。

3.電樞電流    由U=Ea+IaRa可導出電樞電流公式,即

   

(二)功率平衡方程

(三)轉矩平衡方程

直流無刷電機
使用的是直流電 僅僅是沒有電刷而已 至于具體 是靠電子線路實現了電刷的功能。當然 有些種類的直流無刷電機的機械部分 和交流電機幾乎一樣 這種類型 就可以認為是先用電子線路把直流電變成交流電 再通給電機
直流電機雖然是供直流電  但轉子內部的線圈還在交流電路的。帶電刷的直流電機是通過電刷換向。而無刷電機是通過逆變電路把直流變成交流,然后共給線圈。常見的是12V散熱風扇等。在電腦主機里常用。交流電機 不需要換向片(電刷)。
直流無刷電機的定子繞組是星形連接的,他的轉子是永磁體做成的并且轉子上有一個位置傳感器用于檢測轉子位置反饋給控制器,控制器 是直流電源,它根據位置傳感器反饋的 信號分別使定子繞組通電,形成旋轉磁場,直流無刷電機的機械特性比較硬。

2.2直流電機控制原理及特點對直流電機轉速的控制即可采用開環控制,也可采用閉環控制。與開環控制相比,速度控制閉環系統的機械特性有以下優越性:閉環系統的機械特性與開環系統機械特性相比,其性能大大提高;理想空載轉速相同時,閉環系統的靜差率(額定負載時電機轉速降落與理想空載轉速之比)要小得多;當要求的靜差率相同時, 閉環調速系統的調速范圍可以大大提高。直流電機的速度控制方案如圖1所示。

              +            

    -

  

圖 2-1 直流電機速度控制方案



2.3 直流電機調速控制方式選擇
2.3.1電阻網絡或數字電位器
采用電阻網絡或數字電位器調整電動機的分壓,從而達到調速的目的。但是電阻網絡只能實現有級調速,而數字電阻的元器件價格比較昂貴。更主要的問題在于一般電動機的電阻很小,但電流很大;分壓不僅會降低效率,而且實現很困難。
2.3.2 繼電器
采用繼電器對電動機的開或關進行控制,通過開關的切換對電機的速度進行調整。這個方案的優點是電路較為簡單,缺點是繼電器的響應時間慢、機械結構易損壞、壽命較短、可靠性不高。
2.3.3 H橋組成的高電壓大電流雙全橋式驅動芯片
              L293D是德州儀器公司的產品,內部包含4通道邏輯驅動電路。是一種二相和四相電機的專用驅動芯片,即內含二個H橋的高電壓大電流雙全橋式驅動器,兼容所有的TTL信號輸入。每個輸出都是推拉式驅動電路,與達林頓三極管和偽達林源,可驅動4.5V至36V、1A以下的電機。橋型電路保證了可以簡單地實現轉速和方向的控制;響應的速度很快,性能穩定性好,是一種廣泛采用的PWM調速控制芯片。兼于上述三種方案調速特性優良、調整平滑、調速范圍廣、過載能力大,因此本設計采用方案三。

2.4 PWM脈寬調制方式

方案一:雙極性工作制。雙極性工作制是在一個脈沖周期內,單片機兩控制口各輸出一個控制信號,兩信號高低電平相反,兩信號的高電平時差決定電動機的轉向和轉速。

方案二:單極性工作制。單極性工作制是單片機控制口一端置低電平,另一端輸出PWM信號,兩口的輸出切換和對PWM的占空比調節決定電動機的轉向和轉速。

由于單極性工作制中,應用相對簡單易于實現與操作,所以我們采用了單極性工作制。

2.5電機實際轉速獲取
在Proteus中只有一種直流電機集成了測速傳感器,在搜索欄里搜索motor-encoder,即可得到這種電機模型。本設計中設置電機轉一圈發出60個脈沖。根據實際運轉情況及結合所編寫程序,確定轉速公式為:
V=N*15;V:速度 R/min N:每秒采樣的脈沖個數
如右圖所示,為帶測速功能的直流電機模型

                                                   

                                                   圖 2-3 Proteus電機模型                             

2.6 總體設計框圖
本系統采用AT89C51作為控制核心,用按鍵來調節電機轉速和LCD1602液晶屏來顯示設定轉速和測量轉速。由上述提供的方案和最后選擇結果,則用H橋組成的高電壓大電流雙全橋式驅動芯片L293D作為本系統的驅動電路,采用光電傳感器和20線碼盤來讀取電機的實際轉速。



      圖2-4 直流電機控制系統總體框圖


第三章 硬件設計
3.1 單片機的選型3.1.1 AT89C51介紹   

AT89C51是美國ATMEL公司生產的AT89系列單片機中的一種,它與MCS-51系列的許多機種都具有兼容性,并具有廣泛的代表性。AT89C51是一種帶4K字節閃爍可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓,高性能CMOS 8位微處理器,俗稱單片機。AT89C2051是一種帶2K字節閃爍可編程可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復擦除100次。該器件采用ATMEL高密度非易失存儲器制造技術制造,與工業標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C單片機為很多嵌入式控制系統提供了一種靈活性高且價廉的方案。

AT89C51的特點

  • 與MCS-51 兼容
  • 4K字節可編程閃爍存儲器
  • 壽命:1000寫/擦循環
  • 數據保留時間:10年
  • 全靜態工作:0Hz-24MHz
  • 三級程序存儲器鎖定
  • 128×8位內部RAM
  • 32可編程I/O線
  • 兩個16位定時器/計數器
  • 個中斷源
  • 可編程串行通道
  • 低功耗的閑置和掉電模式
  • 片內振蕩器和時鐘電路

引腳定義及功能

AT89C51有40條引腳,與其他51系列單片機引腳是兼容的。這40條引腳可分為I/O端口線、電源線、控制線、外接晶體線四部分。其封裝形式有兩種:雙列直插封裝(DIP)形式和方形封裝形式,如圖5所示。

         

                                                                                                                           圖 3-1 AT89C51管腳圖   

主電源引腳

VCC:電源正(+5V)。

GND:電源負。

I/O端口功能

P0口: P0口有八條端口線,命名為P0.0~P0.7,其中P0.0為低位,P0.7為高位。每條線的結構組成如圖3-2所示。它由一個輸出鎖存器,兩個三態緩沖器,輸出驅動電路和輸出控制電路組成。P0口是一個三態雙向I/O口,它有兩種不同的功能,用于不同的工作環境。P0口為一個8位漏級開路雙向I/O口,每腳可吸收8TTL門電流。當P1口的管腳第一次寫1時,被定義為高阻輸入。P0能夠用于外部程序數據存儲器,它可以被定義為數據/地址的第八位。在FIASH編程時,P0 口作為原碼輸入口,當FIASH進行校驗時,P0輸出原碼,此時P0外部必須被拉高。

   

                   圖3-2 P0口位結構圖   


P1口:P1口有八條端口線,命名為P1.0~P1.7,每條線的結構組成如圖3-3所示。P1口是一個準雙向口,只作普通的I/O口使用,其功能與P0口的第一功能相同。作輸出口使用時,由于其內部有上拉電阻,所以不需外接上拉電阻;作輸入口使用時,必須先向鎖存器寫入“1”,使場效應管T截止,然后才能讀取數據。P1口是一個內部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內部上拉為高,可用作輸入,P1口被外部下拉為低電平時,將輸出電流,這是由于內部上拉的緣故。在FLASH編程和校驗時,P1口作為第八位地址接收。

               圖3-3  P1口位結構圖

P2口:P2口有八條端口線,命名為P2.0~P2.7,每條線的結構如圖3-4所示。P2口也是一個準雙向口,它有兩種使用功能:一種是當系統不擴展外部存儲器時,作普通I/O口使用,其功能和原理與P0口第一功能相同,只是作為輸出口時不需外接上拉電阻;另一種是當系統外擴存儲器時,P2口作系統擴展的地址總線口使用,輸出高8位的地址A7~A15,與P0口第二功能輸出的低8位地址相配合,共同訪問外部程序或數據存儲器(64 KB),但它只確定地址并不能像P0口那樣還可以傳送存儲器的讀寫數據。P2口為一個內部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個TTL門電流,當P2口被寫“1”時,其管腳被內部上拉電阻拉高,且作為輸入。并因此作為輸入時,P2口的管腳被外部拉低,將輸出電流。這是由于內部上拉的緣故。P2口當用于外部程序存儲器或16位地址外部數據存儲器進行存取時,P2口輸出地址的高八位。在給出地址“1”時,它利用內部上拉優勢,當對外部八位地址數據存儲器進行讀寫時,P2口輸出其特殊功能寄存器的內容。P2口在FLASH編程和校驗時接收高八位地址信號和控制信號。

P3口:P3口有八條端口線,命名為P3.0~P3.7,每條線的結構如圖3-1所示。P3口是一個多用途的準雙向口。第一功能是作普通I/O口使用,其功能和原理與P1口相同。第二功能是作控制和特殊功能口使用,這時八條端口線所定義的功能各不相同,如表3-4所示。

P3口管腳是8個帶內部上拉電阻的雙向I/O口,可接收輸出4個TTL門電流。當P3口寫入“1”后,它們被內部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口同時為閃爍編程和編程校驗接收一些控制信號。

           圖3-4  P2口位結構圖


        
      圖3-5  P3口位結構圖

                         表1 P3口各位的第二功能

引腳

第二功能

功 能 說 明

P3.0

RXD

串行數據輸入端

P3.1

TXD

串行數據輸出端

P3.2

INT0

外部中斷0中斷請求信號輸入端

P3.3

INT1

外部中斷1中斷請求信號輸入端

P3.4

T0

定時/計數器0外部計數脈沖輸入端

P3.5

T1

定時/計數器1外部計數脈沖輸入端

P3.6

WR

片外RAM寫選通信號輸出端

P3.7

RD

片外RAM讀選通信號輸出端













3.1.2電源濾波電路

  由于平時使用的5V電源并不是完全是直流成分,其中還包含了交流信號部分,為了剔除這部分噪聲,在電源正極與負極之間并聯了兩個電容,其中104小電容可濾除高頻信號,47uF電容可濾除低頻信號,保證了流入單片機的電流基本上為直流電。
此外,在濾波電路旁并聯一個LED,作為電源指示燈。其中5.1K電阻起到限流作用,防止LED被燒毀。














                                 圖3-6 系統時鐘






3.1.2 系統時鐘的設計

時鐘電路是用來產生AT89C51單片機工作時所必須的時鐘信號,AT89C51本身就是一個復雜的同步時序電路,為保證工作方式的實現,AT89C51在唯一的時鐘信號的控制下嚴格的按時序執行指令進行工作 ,時鐘的頻率影響單片機的速度和穩定性。通常時鐘由于兩種形式:內部時鐘和外部時鐘。

我們系統采用內部時鐘方式來為系統提供時鐘信號。AT89C51內部有一個用于構成振蕩器的高增益反向放大器,該放大器的輸入輸出引腳為XTAL1和XTAL2,它們跨接在晶體振蕩器和用于微調的電容,便構成了一個自激勵振蕩器。

電路中的C3、C4的選擇在22PF左右,但電容太小會影響振蕩的頻率、穩定性和快速性。晶振頻率為1.2MHZ~12MHZ之間,頻率越高單片機的速度就越快,但對存儲器速度要求就高。為了提高穩定性我們采用溫度穩定性好的NPO電容,采用的晶振頻率為11.592MHZ。  





                               圖3-7 系統時鐘


3.1.3 系統復位方式

當MCS-5l系列單片機的復位引腳RST(全稱RESET)出現2個機器周期以上的高電平時,單片機就執行復位操作。如果RST持續為高電平,單片機就處于循環復位狀態。

根據應用的要求,復位操作通常有兩種基本形式:上電復位和上電或開關復位。上電復位要求接通電源后,自動實現復位操作。圖中電容C5和電阻R9對電源+5V來說構成微分電路。上電后,保持RST一段高電平時間,由于單片機內的等效電阻的作用,不用圖中電阻R9,也能達到上電復位的操作功能,如圖 (3-7)中所示。上電或開關復位要求電源接通后,單片機自動復位,并且在單片機運行期間,用開關操作也能使單片機復位。上電后,由于電容C5的充電和反相門的作用,使RST持續一段時間的高電平。當單片機已在運行過程中時,按下復位鍵S0后松開,也能使RST為一段時間的高電平,從而實現上電復位或開關復位的操作。













                          圖3-8手動復位電路
3.2.L293D芯片介紹
L293D是德州儀器公司的產品,內部包含4通道邏輯驅動電路。是一種二相和四相電機的專用驅動芯片,即內含二個H橋的高電壓大電流雙全橋式驅動器,兼容所有的TTL信號輸入。每個輸出都是推拉式驅動電路,與達林頓三極管和偽達林源,可驅動4.5V至36V、1A以下的電機。橋型電路保證了可以簡單地實現轉速和方向的控制;響應的速度很快,性能穩定性好,是一種廣泛采用的PWM調速控制芯片。L293D的邏輯功能如表3-1所示∶


EN A(B)
IN1(IN3)
電機運行情況
H
H
正轉
H
L
反轉
H
同IN2(IN4)
快速停止
L
X
停止

                         圖 3-9 L293D真值表            

3.2.1驅動電路設計
單片機輸出的PWM電機控制信號接到L293D EN1端口,IN1和IN2端口控制電機正反轉,啟動和停止。對應的OUT1和OUT2輸出接到直流電機B1兩端。





                      圖 3-10 L293D電機驅動電路
  3.3 脈沖信號的獲取
     光電傳感器是應用非常廣泛的一種器件,有各種各樣的形式,如透射式、反射式等,基本的原理就是當發射管光照射到接收管時,接收管導通,反之關斷。以透射式為例,如圖3-10所示,當不透光的物體擋住發射與接收之間的間隙時,開關管關斷,否則打開。為此,可以制作一個遮光葉片如圖3-11所示,安裝在轉軸上,當扇葉經過時,產生脈沖信號。當葉片數較多時,旋轉一周可以獲得多個脈沖信號。



     

        
        

       圖3-11光電傳感器的原理圖


             圖3-12遮光葉片


3.3.1 LM393芯片介紹

LM393主要特點如下:

●工作電源電壓范圍寬,單電源、雙電源均可工作,單電源:2~36V,雙電源:±1~±18V;

●消耗電流小,Icc=0.8mA;

●輸入失調電壓小,VIO=±2mV

●共模輸入電壓范圍寬,Vic=0~Vcc-1.5V;

●輸出與TTL,DTL,MOS,CMOS 等兼容;

●輸出可以用開路集電極連接“或”門;







                         圖3-13 LM393內部結構圖


                         圖3-13 LM393引腳功能表

3.3.2 測速電路設計







                       圖3-14 電機測速電路


測速電路主要由紅外發射和接收電路組成,在電動機上安裝一對紅外發射和接收管, 當電動機轉動時,根據電機的轉速紅外光線透過碼盤柵格,因此產生的紅外光脈沖信號經LM393電壓比較器提供給單片機一個計數脈沖信號。
3.4 LCD1602液晶屏介紹
在日常生活中,我們對液晶顯示器并不陌生。液晶顯示模塊已作為很多電子產品的通過器件,如在計算器、萬用表、電子表及很多家用電子產品中都可以看到,顯示的主要是數字、專用符號和圖形。在單片機的人機交流界面中,一般的輸出方式有以下幾種:發光管、LED數碼管、液晶顯示器。發光管和LED數碼管比較常用,軟硬件都比較簡單,在前面章節已經介紹過,在此不作介紹,本章重點介紹字符型液晶顯示器的應用。
在單片機系統中應用晶液顯示器作為輸出器件有以下幾個優點:
顯示質量高
由于液晶顯示器每一個點在收到信號后就一直保持那種色彩和亮度,恒定發光,而不像陰極射線管顯示器(CRT)那樣需要不斷刷新新亮點。因此,液晶顯示器畫質高且不會閃爍。
數字式接口
液晶顯示器都是數字式的,和單片機系統的接口更加簡單可靠,操作更加方便。
體積小、重量輕
液晶顯示器通過顯示屏上的電極控制液晶分子狀態來達到顯示的目的,在重量上比相同顯示面積的傳統顯示器要輕得多。
功耗低
相對而言,液晶顯示器的功耗主要消耗在其內部的電極和驅動IC上,因而耗電量比其它顯示器要少得多。
10.8.1 液晶顯示簡介
①液晶顯示原理
液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區域進行控制,有電就有顯示,這樣即可以顯示出圖形。液晶顯示器具有厚度薄、適用于大規模集成電路直接驅動、易于實現全彩色顯示的特點,目前已經被廣泛應用在便攜式電腦、數字攝像機、PDA移動通信工具等眾多領域。
②液晶顯示器的分類
液晶顯示的分類方法有很多種,通常可按其顯示方式分為段式、字符式、點陣式等。除了黑白顯示外,液晶顯示器還有多灰度有彩色顯示等。如果根據驅動方式來分,可以分為靜態驅動(Static)、單純矩陣驅動(Simple Matrix)和主動矩陣驅動(Active Matrix)三種。
③液晶顯示器各種圖形的顯示原理:
線段的顯示
點陣圖形式液晶由M×N個顯示單元組成,假設LCD顯示屏有64行,每行有128列,每8列對應1字節的8位,即每行由16字節,共16×8=128個點組成,屏上64×16個顯示單元與顯示RAM區1024字節相對應,每一字節的內容和顯示屏上相應位置的亮暗對應。例如屏的第一行的亮暗由RAM區的000H——00FH




的16字節的內容決定,當(000H)=FFH時,則屏幕的左上角顯示一條短亮線,長度為8個點;當(3FFH)=FFH時,則屏幕的右下角顯示一條短亮線;當(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H時,則在屏幕的頂部顯示一條由8段亮線和8條暗線組成的虛線。這就是LCD顯示的基本原理。
字符的顯示
用LCD顯示一個字符時比較復雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區的8字節,還要使每字節的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內帶字符發生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據在LCD上開始顯示的行列號及每行的列數找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。
漢字的顯示
漢字的顯示一般采用圖形的方式,事先從微機中提取要顯示的漢字的點陣碼(一般用字模提取軟件),每個漢字占32B,分左右兩半,各占16B,左邊為1、3、5……右邊為2、4、6……根據在LCD上開始顯示的行列號及每行的列數可找出顯示RAM對應的地址,設立光標,送上要顯示的漢字的第一字節,光標位置加1,送第二個字節,換行按列對齊,送第三個字節……直到32B顯示完就可以LCD上得到一個完整漢字。
10.8.2 1602字符型LCD簡介
字符型液晶顯示模塊是一種專門用于顯示字母、數字、符號等點陣式LCD,目前常用16*1,16*2,20*2和40*2行等的模塊。下面以長沙太陽人電子有限公司的1602字符型液晶顯示器為例,介紹其用法。一般1602字符型液晶顯示器實物如圖3-15:















圖3-15 1602字符型液晶顯示器實物圖
1602LCD的基本參數及引腳功能
1602LCD分為帶背光和不帶背光兩種,基控制器大部分為HD44780,帶背光的比不帶背光的厚,是否帶背光在應用中并無差別,兩者尺寸差別如下圖10-54所示:

圖3-16 16021602LCD尺寸圖
1602LCD主要技術參數:
顯示容量:16×2個字符
芯片工作電壓:4.5—5.5V
工作電流:2.0mA(5.0V)
模塊最佳工作電壓:5.0V
字符尺寸:2.95×4.35(W×H)mm
引腳功能說明
1602LCD采用標準的14腳(無背光)或16腳(帶背光)接口,各引腳接口說明如表3-17所示:
編號
符號
引腳說明
編號
符號
引腳說明
1
VSS
電源地
9
D2
數據
2
VDD
電源正極
10
D3
數據
3
VL
液晶顯示偏壓
11
D4
數據
4
RS
數據/命令選擇
12
D5
數據
5
R/W
讀/寫選擇
13
D6
數據
6
E
使能信號
14
D7
數據
7
D0
數據
15
BLA
背光源正極
8
D1
數據
16
BLK
背光源負極
圖3-17:引腳接口說明表
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。
第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。
第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。
第7~14腳:D0~D7為8位雙向數據線。
第15腳:背光源正極。
第16腳:背光源負極。
10.8.2.3 1602LCD的指令說明及時序
1602液晶模塊內部的控制器共有11條控制指令。
序號
指令
RS
R/W
D7
D6
D5
D4
D3
D2
D1
D0

1
清顯示
0
0
0
0
0
0
0
0
0
1

2
光標返回
0
0
0
0
0
0
0
0
1
*

3
置輸入模式
0
0
0
0
0
0
0
1
I/D
S

4
顯示開/關控制
0
0
0
0
0
0
1
D
C
B

5
光標或字符移位
0
0
0
0
0
1
S/C
R/L
*
*

6
置功能
0
0
0
0
1
DL
N
F
*
*

7
置字符發生存貯器地址
0
0
0
1
字符發生存貯器地址
8
置數據存貯器地址
0
0
1
顯示數據存貯器地址
9
讀忙標志或地址
0
1
BF
計數器地址
10
寫數到CGRAM或DDRAM)
1
0
要寫的數據內容
11
從CGRAM或DDRAM讀數
1
1
讀出的數據內容

圖3-18控制命令表
1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平)
指令1:清顯示,指令碼01H,光標復位到地址00H位置。
指令2:光標復位,光標返回到地址00H。
指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。
指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。
指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。
指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。
指令7:字符發生器RAM地址設置。
指令8:DDRAM地址設置。
指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。
指令10:寫數據。
指令11:讀數據。
與HD44780相兼容的芯片時序表如下:
讀狀態
輸入
RS=L,R/W=H,E=H
輸出
D0—D7=狀態字
寫指令
輸入
RS=L,R/W=L,D0—D7=指令碼,E=高脈沖
輸出
讀數據
輸入
RS=H,R/W=H,E=H
輸出
D0—D7=數據
寫數據
輸入
RS=H,R/W=L,D0—D7=數據,E=高脈沖
輸出

圖3-19控制命令表
讀寫操作時序如圖3-20和3-21所示:
圖3-20 讀操作時序
圖3-21 寫操作時序
10.8.2.4 1602LCD的RAM地址映射及標準字庫表
液晶顯示模塊是一個慢顯示器件,所以在執行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖10-57是1602的內部顯示地址。
圖3-22 1602LCD內部顯示地址
例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數據應該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。
在對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態。
1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,如圖10-58所示,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”
圖3-23 字符代碼與圖形對應圖
1602LCD的一般初始化(復位)過程
延時15mS
寫指令38H(不檢測忙信號)
延時5mS
寫指令38H(不檢測忙信號)
延時5mS
寫指令38H(不檢測忙信號)
以后每次寫指令、讀/寫數據操作均需要檢測忙信號
寫指令38H:顯示模式設置
寫指令08H:顯示關閉
寫指令01H:顯示清屏
寫指令06H:顯示光標移動設置
寫指令0CH:顯示開及光標設置


3.4 .1顯示電路圖設計
用1602LCD液晶屏實時顯示電機的速度,以AT89C51單片機的P0.0-P.07口做八位數據線,P1.0-P1.2為1062的控制端。










                          圖3-15 顯示模塊電路


3.5 按鍵電路設計
運行方式的設置主要有P1口外接按鍵來完成,判斷按鍵是否按下的方法:然后從P1.4到P1.7逐個檢測引腳的電平,如果某個引腳為低電平表示該鍵按下,此時不需要做相應的處理實現鍵盤功能,如果引腳為高電平則不做處理。采用4個獨立的按鍵來控制電機的正反轉,啟停,加減速。











                            圖3-16 鍵盤掃描電路







                 第四章 軟件的設計

4.1 (程序清單)及系統原理圖(附件中)











4.2 系統原理圖








參 考 文 獻

[1] 王兆安等.電力電子技術[M]. 北京.機械工業出版社.2000年.

[2] 周淵深.交直流調速系統與MATLAB仿真[M].北京.中國電力出版社,2007年.

[3] 陳伯時.運動控制系統[M]. 北京.機械工業出版社.2003年.

[4] 黃家善等.電力電子技術[M]. 北京.機械工業出版社.2007年.

[5]孫立志.PWM與數字化電動機控制技術應用[M].北京.中國電力出版社.2008年.

[6] 楊素行.模擬電子技術基礎[M].高等教育出版社. 2003年.

[7] 陳明熒. 8051單片機基礎教程[M].科學出版社. 2003年.     

[8] 康華光.電子技術基礎數字部分[M].高等教育出版社. 2004年.

[9] 李廣第.單片機基礎 [M].北京航空航天大學出版社. 1999年.



  1. #include
  2. #include "LCD1602.h"
  3. #define uchar unsigned char
  4. #define uint  unsigned int
  5. bit flag;             //定義標志位,確定是否到了1s
  6. unsigned long x,x1;
  7. uint T0count;        //從T0的計數單元中讀取計數的數值
  8. uint timecount;
  9. unsigned char Motor_Count,Set_Count;
  10. sbit KEY1 = P1^4;//按鍵1
  11. sbit KEY2 = P1^5;//按鍵2
  12. sbit KEY3 = P1^6;//按鍵3
  13. sbit KEY4 = P1^7;//按鍵4
  14. sbit IN1 = P2^5;//電機控制端1
  15. sbit IN2 = P2^6;//電機控制端2
  16. sbit EN = P2^7;              //電機使能端
  17. void Timer(void);
  18. //延時函數
  19. void Delay_ms(uint jj) //延時1毫秒
  20. {
  21.               uint ii;
  22.               while(jj--)
  23.                             for(ii=0;ii<116;ii++);
  24. }
  25. void Motor_Speed(unsigned char Speed) //電機狀態
  26. {
  27.               if(Speed==0)  {IN1=0;IN2=0;}//停止
  28.               if(Speed==1)  {IN1=0;IN2=1;}//正轉
  29.               if(Speed==2)  {IN1=1;IN2=0;}//反轉
  30. }
  31. void main()                 //函數功能:主函數
  32. {               
  33.               unsigned char  Data[3];
  34.                  unsigned int  i,j;
  35.               unsigned char Set_x;
  36.             
  37.               Timer(); //定時器初始化
  38.     LCD1602_init();//液晶初始化
  39. //////////////////////////0123456789ABCDEF
  40.     LCD1602_Disp_ZF(0x80,"Now Speed:   r/s",16);//顯示實時速度
  41.                                                                                          //0123456789ABCDEF
  42.     LCD1602_Disp_ZF(0x80+0X40,"Set:   r/s      ",16); //設置速度
  43.               //LCD1602_Disp_ZF(0x8b+0X40,"Left ",5);
  44.               //LCD1602_Disp_ZF(0x8b+0X40,"Right",5);
  45.               LCD1602_Disp_ZF(0x8b+0X40,"Stop ",5);
  46.               Motor_Speed(0);//停止
  47.               Set_Count=1;
  48.               Set_x=15;
  49.               Data[0]='0'+Set_x/100;               //顯示設置速度
  50.               Data[1]='0'+(Set_x/10)%10; //顯示設置速度
  51.               Data[2]='0'+Set_x%10;      //顯示設置速度
  52.               LCD1602_Disp_ZF(0x84+0x40,Data,3);              //顯示設置速度
  53.               while(1)
  54.               {
  55.             
  56.                             if(flag==1)                  
  57.                             {
  58.                                           flag=0;                        //清標志位
  59.                                           x=T0count*65536+TH0*256+TL0;   //取得時間寬度參數
  60.                                           x=x*2;     //計算速度
  61.                                           timecount=0;
  62.                                           T0count=0;
  63.                                           TH0=0;
  64.                                           TL0=0;
  65.                                           TR0=1;         //TR0=1,控制開關閉合,計數脈沖進入T1計數器,啟動計數
  66.                                           Data[0]='0'+x/100;               //顯示當前速度
  67.                                           Data[1]='0'+(x/10)%10; //顯示當前速度
  68.                                           Data[2]='0'+x%10;      //顯示當前速度
  69.                                           LCD1602_Disp_ZF(0x80,"Now Speed:   r/s",16); //顯示當前速度
  70.                                           LCD1602_Disp_ZF(0x8a,Data,3); //顯示當前速度
  71.                
  72.                                          
  73.                             }
  74.                                                                          if(x>Set_x)//速度調節
  75.                                           {
  76.                                                         if(Set_Count==0)Set_Count=1;
  77.                                                         Set_Count--;
  78.                                                         Delay_ms(50);            
  79.                                           }
  80.                                           if(x<set_x) 速度調節
  81.                                           {
  82.                                                         Set_Count++;
  83.                                                         if(Set_Count==200)Set_Count=199;
  84.                                                         Delay_ms(50);            
  85.                                           }
  86.                             if(!KEY1) //開始停止按鍵
  87.                             {
  88.                                           Delay_ms(10);
  89.                                           if(!KEY1) //開始停止按鍵
  90.                                           {
  91.                                                         i++;
  92.                                                         if(i%2==0)
  93.                                                         {
  94.                                                                       Motor_Speed(1);//開始
  95.                                                                       LCD1602_Disp_ZF(0x8b+0X40,"Right",5);
  96.                                                         }
  97.                                                         if(i%2==1)
  98.                                                         {
  99.                                                                       Motor_Speed(0);//停止
  100.                                                                       LCD1602_Disp_ZF(0x8b+0X40,"Stop ",5);
  101.                                                         }
  102.                                                         while(!KEY1);
  103.                                           }                           
  104.                             }
  105.                             if(!KEY2)              //正轉反轉按鍵
  106.                             {
  107.                                           Delay_ms(10);
  108.                                           if(!KEY2)
  109.                                           {
  110.                                                         j++;
  111.                                                         if(j%2==0)//正轉
  112.                                                         {            
  113.                                                                       Motor_Speed(1);
  114.                                                                       LCD1602_Disp_ZF(0x8b+0X40,"Right",5);
  115.                                                         }
  116.             
  117.                                                         if(j%2==1)//反轉
  118.                                                         {
  119.                                                                       Motor_Speed(2);
  120.                                                                       LCD1602_Disp_ZF(0x8b+0X40,"Left ",5);
  121.                                                         }
  122.                                                         while(!KEY2);
  123.                                           }                           
  124.                             }
  125.                             //////////////////////////////////
  126.                             if(!KEY3) //設置加速
  127.                             {
  128.                                           Delay_ms(50);
  129.                                           if(!KEY3)//設置加速
  130.                                           {
  131.                                                         Set_x ++;
  132.                                                         if(Set_x>30)Set_x=30;
  133.                                                         Data[0]='0'+Set_x/100;//顯示設置速度
  134.                                                         Data[1]='0'+(Set_x/10)%10;//顯示設置速度
  135.                                                         Data[2]='0'+Set_x%10;  //顯示設置速度
  136.                                                         LCD1602_Disp_ZF(0x84+0x40,Data,3);//顯示設置速度            
  137.                                           }                           
  138.                             }
  139.                             if(!KEY4)//設置減速
  140.                             {
  141.                                           Delay_ms(50);
  142.                                           if(!KEY4)//設置減速
  143.                                           {
  144.                                               if(Set_x==0)Set_x=1;
  145.                                                         Set_x --;
  146.                                                         Data[0]='0'+Set_x/100;//顯示設置速度
  147.                                                         Data[1]='0'+(Set_x/10)%10;//顯示設置速度
  148.                                                         Data[2]='0'+Set_x%10;  //顯示設置速度
  149.                                                         LCD1602_Disp_ZF(0x84+0x40,Data,3);//顯示設置速度            
  150.                                           }                           
  151.                             }
  152.                             /////////////////////////////////
  153.                             /////////////////////
  154.                             ///////////////////////////
  155.               }
  156.                  
  157.   }
  158. void t0() interrupt 1 using 0      //T0中斷服務
  159. {
  160. T0count++;                      //對P3。4口的脈沖進行計數
  161. }
  162. void t1(void) interrupt 3 using 0       //T1中斷服務
  163. {   
  164.     TH1=(65536-368)/256;               //計數初值重裝載
  165.     TL1=(65536-368)%256;
  166.     timecount++;
  167.               Motor_Count++;
  168.               if(Motor_Count==Set_Count)              //調節速度
  169.               {
  170.                             EN=0;
  171.               }
  172.               if(Motor_Count==200)  //調節速度
  173.               {
  174.                             EN=1;
  175. ……………………

  176. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

完整論文下載(word格式 可編輯):
基于51單片機PID電機測速系統論文.doc (1.02 MB, 下載次數: 73)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩久久久久 | 国产精品国产三级国产播12软件 | 亚洲成人av| 免费a国产| 欧美xxxx做受欧美 | 久久精品国产99国产精品 | 亚洲 精品 综合 精品 自拍 | 一级大黄 | 亚洲天堂一区 | 性色综合 | 国产精品美女一区二区 | 久久99精品视频 | 国产999精品久久久 精品三级在线观看 | 东方伊人免费在线观看 | 人人澡视频 | 精品国产乱码一区二区三区a | 国产超碰人人爽人人做人人爱 | 中文字幕av第一页 | 亚洲高清在线 | 成人午夜影院 | 3级毛片 | 中文字幕 欧美 日韩 | 国精产品一品二品国精在线观看 | 欧美极品在线 | www.久久久.com | 在线观看国产视频 | 91久久久www播放日本观看 | 在线亚洲一区 | 91麻豆产精品久久久久久夏晴子 | 欧美阿v | 亚洲巨乳自拍在线视频 | www.奇米| 午夜视频免费在线观看 | 欧美三级在线 | 国产精品视频一二三区 | 欧美精品在线播放 | 91av在线免费观看 | 一区二区成人 | 久久中文视频 | 久久一热 | 精品视频在线播放 |