the synchronization control of double electric tappets4 此專題整個架構主要以89s51...

45
自動控制工程學系專題製作 雙電動推桿同步控制 The Synchronization Control of Double Electric Tappets 指導教授:陳孝武 : 楊智為 曾健銓 中華民國九十八年五月二十五日

Upload: others

Post on 04-Jan-2020

18 views

Category:

Documents


0 download

TRANSCRIPT

  • 逢 甲 大 學 自動控制工程學系專題製作

    專 題 論 文

    雙電動推桿同步控制

    The Synchronization Control of

    Double Electric Tappets

    指導教授:陳孝武

    學 生: 楊智為

    曾健銓

    中 華 民 國 九 十 八 年 五 月 二 十 五 日

  • I

    致謝

    首先,我們十分感謝我們的指導教授陳孝武老師,他不管在軟體上還是硬體

    上都給予我們最好的指導,對於實作經驗不是很多的我們,他總是不厭其煩的教

    導,我們由衷的感謝他。

    再者要感謝張志華助教以及洪三山老師的實驗室,讓我們不管在燒晶片或者

    是做實驗上都無後顧之憂。

    感謝逢甲大學給我們這個機會去做這個專題,並且提供資料齊全的圖書館,

    在查資料或是做報告都有一個良好的工作場地,對系上老師和實驗設備供應心無

    限感激,最後都希望我們可以從這次專題中學到一些東西,對未來面對各種不一

    樣的研究上奠定基礎。

  • II

    中文摘要

    推桿控制可應用在許多生活中的例子,譬如:大樓氣窗的開啟,醫院病床的

    升降,等。同動控制可以避免雙推桿不同的速度引起的錯誤,進而改善其安全性

    以及效率。有潛力應用於新時代建築、傢俱、工業安全相關領域之研究與分析。

    本研究以脈衝寬度變調(PWM Pulse Width Modulation)控制推桿馬達來串

    接,新一代的工業講究節能,PWM 可達到其效果,PWM 控制比以往的 PID 控制來

    的節能,儘管類比控制看起來可能直觀而簡單,但它總是不夠有效率,隨時間誤

    差,因而難以調節。能夠解決這個問題的精密類比電路可能非常龐大、笨重(如

    老式的家庭立體聲設備)和昂貴。類比電路還有可能嚴重發熱。

    PWM 可改善上述的缺點。藉由控制推桿直流馬達的責任週期,在 89S51 晶片

    寫入程式精準的控制,讓馬達比較速度,經由光遮斷器(感測器)的回授控制可達

    到同步,速度調節的功能,可解決因速度不同可能造成的意外,如平面傾斜導致

    易碎物品損壞、故障等問題。

  • III

    英文摘要

    Tappet Control has found application in life. For example: It has been applied for

    opening buildings’ window and rising up or descending hospital beds, etc.

    Synchronous Motion Control can avoid mistakes from different velocities, which can

    improve the security and efficiency. It has great potential applying to consideration in

    construction and industrial security.

    The research controls the tappets by “PWM Pulse Width Modulation”. New

    industries value energy saving. PWM can exactly do the job. “PWM Control” is better

    than “PID Control” in energy saving. Even though analog control looks like simpler

    and easier, it is not efficient. It is hard to control due to the due to the error of time.

    This problem could be solved by exact analog circuit which may be huge and

    expansive. In addition, exact analog circuit can probably lead to serious heat.

    In conclusion, “PWM Control” can improve above disadvantages. We write

    function into the chip and control the motor by duty cycle. Then we can do “Feedback

    Control” to attend “Synchronization”and adjust velocity by sensor. That can avoid

    accident by different velocity. If you tilt fragile object, it would be damaged and

    broken.

  • IV

    目錄

    致謝 .................................................. I

    中文摘要 ...............................................II

    英文摘要 .............................................. III

    目錄 .................................................. IV

    圖目錄.................................................. VI

    表目錄 ......................................................... VII

    第一章 緒論………………………………………………..01

    1.1 研究背景……………………………………………………01

    1.2 研究動機與目的……………………………………………..01

    第二章 基本理論…………………………………………..02

    2.1 PWM的基本原理……………………………………………...02

    2.2 雙螺旋推桿同步控制架構示意圖……………………….……04 第三章 軟體撰寫及硬體設置……………………………..05 3.1 軟體架構流程圖…………………………………………… 05 3.2 腳位說明……………………………………………….......06 3.3 暫存器介紹………………………………………………... 07

    3.3.1 TCON:計時器控制暫存器…………………………………08 3.3.2 TMOD: 計時模式控制暫存器……………………………....09 3.3.3 中斷致能暫存器………………………………………….09

    3.4 計時器模式二簡介………………………………………….10

  • V

    3.5 馬達控制器………………………………………………….11 3.5.1 馬達控制卡架構………………………………………….11 3.5.2 外接式馬達控制器………………………………………..12 3.6 光學式編碼器電路………………………………………….13

    3.7 繼電器電路………………………………………………….14

    3.8 正反轉偵測電路…………………………………………….15 3.9 電源電路……………………………………………………16 3.10 89S51 部分電路…………………………………………..16 3.11 電路全圖…………………………………………………..18

    第四章 實體成果…………………………………………..19

    4.1 完整電路實體……………………………………………….19 4.2 成果運作說明……………………………………………….20

    第五章 結論與問題討論……………………………...………………..21

    第六章 參考資料……………………………………………….…………22

    附錄 本專題完整程式……………………………………………...………23

  • VI

    圖目錄

    圖2.1.1 PWM動作原理於低轉速時 ....................................02

    圖 2.1.2 PWM 動作原理於高轉速時.....................................03

    圖 2.1.3 PWM 示意圖.................................................03

    圖 2.2.1 整體架構示意圖..............................................04

    圖 3.1.1 程式流程圖..................................................05

    圖 3.2.1 89S51腳位圖.................................................06

    圖 3.4.1 計時器模式二架構圖..........................................10

    圖 3.5.1 馬達控制卡示意圖............................................11

    圖 3.5.2 外接式馬達控制器示意圖......................................12

    圖 3.5.3 外接式馬達控制器電路圖......................................13

    圖3.6.1 光遮斷器電路圖..............................................14

    圖3.7.1 繼電器電路圖................................................15

    圖3.8.1 偵測電路圖..................................................15

    圖3.9.1 電源電路圖..................................................16

    圖 3.10.1 89S51 部分電路............................................17

    圖 3.11.1 全電路圖...................................................18

    圖 4.1.1 控制板電路實體..............................................19

  • VII

    圖 4.1.2 馬達板電路實體以及 PROTEL PCB 圖............................19

    圖 4.1.3 光學式編碼器................................................20

    圖4.2.1 實體操作畫面................................................20

  • VIII

    表目錄

    表 3.1 腳位說明......................................................07

    表 3.2 TCON 暫存器...................................................08

    表 3.3 TMOD暫存器. ..................................................09

    表 3.4 IE 暫存器.....................................................09

    表 3.5 接點說明......................................................11

  • 1

    第一章 緒論

    1.1 研究背景

    馬達廣泛的應用於各種工業、民生、運輸與資訊設備,例如工業機器人、半

    導體製成設備、電路板元件自動組裝設備、電梯、冷氣機、捷運電動列車、電動

    機車、電動汽車、影像掃描器、雷射印表機、光碟機等等。控制馬達成為重要課

    題,現在多已微處理器結合馬達硬體去做控制,已達到我們要的結果,然而電動馬

    達的同步在市面上多已微調為主,受到時間及環境上的改變,即會使微調失去準

    確性,若此時能以回授作為控制馬達的基礎,無疑將是控制馬達上的一大進步。

    1.2 研究動機與目的

    我們打算針對市面上所擁有的電動馬達,大多利用微調的方法來產生同步效

    果作為改良,我們考慮到方便性以及實用性,只要在原設備上加上一塊控制板即

    可達到我們所要的回授控制效果,廠商無需花費額外成本把原本的裝備重新拆解,

    需,生活中時常遇到物品十分龐大且貴重擔心會在搬運過程中損壞即可利用同步

    馬達可幫助物品搬運且增加他的安全性,電動馬達在醫院病床的升降中扮演使病

    人能穩定舒適的在病床上休息的角色,在新型大樓的玻璃門窗開關上取代人力的

    時間。

  • 2

    第二章 基本理論

    2.1 PWM的基本原理

    PWM(Pulse Width Modulation)稱為脈波寬度調變,常用於直流馬達的控制、電

    源變換器之穩壓控制、甚至是直流轉換交流弦波的控制等,是控制直流馬達轉速

    最常見的方法。其原理如圖1(a)與1(b)所示,圖高電位的部份是馬達「動作

    (active)」時間,或叫做「責任週期(Duty Cycle)」,低電位的部份是馬達「停止

    (stop)」時間,兩者時間和即為週期。當使用者想降低馬達轉速時,只要減少動

    作的時間、增加停止的時間,並保持週期不變即可,如圖1(a)所示。反之,如果

    想加快馬達的轉速,則需要加長動作的時間、縮短停止的時間,並且保持週期不

    變,如圖1(b)所示。由於改變轉速係透過改變動作的時間比例,也就是圖1(a)

    與1(b)高電位脈波(Pulse)的相對時間寬度(Width),因此這樣的控制方式稱作脈

    波寬度調變。

  • 3

    圖2.1.1 PWM動作原理於低轉速時

    圖 2.1.2 PWM 動作原理於高轉速時

    對於比較精密、反應比較快的直流馬達控制器,圖 1(a)與 1(b) 的脈波寬度變化

    需要相當的快,通常是以“ μSec"為單位,甚至更精密的以 0.1 μSec 為單位,

    為了達到精準度,所以我們選擇使用組合語言,雖然可能在撰寫過程上較為不方

    便,但它可以減少程式中所造成的延遲時間。

    作用在馬達的電壓=責任週期比× 輸入電壓(方程式 1)

    由上式公式,得知我們可利用責任週期間接控制馬達轉速。

    圖 2.1.3 PWM 示意圖

    2.2 雙螺旋推桿同步控制架構示意圖

  • 4

    此專題整個架構主要以 89S51 為中心,透過外部偵測電路來判斷進行正轉或

    反轉,經由 P0.4 腳位來判斷手動或自動模式,甚至於到誤差溢位保護模式,皆由

    89S51 內的程式來決定動作與否。

    圖 2.2.1 整體架構示意圖

  • 5

    第三章 軟體撰寫及硬體設置

    3.1 軟體架構流程圖

    接下來將透過程式流程圖,讓大家對程式的內容有初步的認識,首先在 start

    的部份就是要設定初值及變數的位置。

    正反轉的部份:

    透過 P0.0 腳位外部的偵測電路去判斷正轉或反轉,間接決定繼電器為常

    開或者是常閉。

    手自動的部份:

    檢查 P0.4外部接的按鈕輸入為HIGH或者是LOW,決定程式要跑手動部分還

    是自動部分。

    誤差溢位保護模式:

    當兩個馬達相差過大時系統會停止動作,主要是利用變數作運算,如果他們

    運算時變數高於或低於我們的設定值的話,即會發生溢位且同時啟動系統停止的

    指令。

  • 6

    圖 3.1.1 程式流程圖

    3.2 腳位說明

    89S51 為 Intel 公司所推出的 MCS-51 系列產品之一 89S51,單片具有以下之

    特性:

    1. 專為控制使用所設計的 8 位元單晶片。

    2. 具有位元邏輯運算能力。

    3. 具有 128 位元的 RAM,以及 4K 位元的 ROM。

    4. 具有 4 個 8 位元 I/O 埠。

    5. 具有 2 個 16 位元的計時/計數器。

    6. 具有全雙工的 UART。

  • 7

    7. 具有 5 個中斷源及兩層中斷優先權結構。

    8. 具有時脈產生電路。

    9. 具有外部電路擴充 64 位元程式記憶體的能力。

    它總共有 40 之接腳,我們在這不做一一介紹,只針對此專題有用到部分作以

    下介紹:

    圖 3.2.1 89S51 腳位圖

    腳位 功能介紹

    P1.0 PWM(脈寬調變)輸出 1

    P1.2 PWM(脈寬調變)輸出 2

    P1.4 繼電器(RELAY)

    P1.6 繼電器(RELAY)

    P0.0 偵測正反轉

  • 8

    P1.7 誤差溢位保護模式

    當兩桿相差過大時,P1.7 的 LED 亮起

    INT0(12) 外部中斷 1

    由光學式旋轉編碼器觸發

    INT1(13) 外部中斷 2

    由光學式旋轉編碼器觸發

    P0.4 偵測手動或自動

    表 3.2.1 腳位說明

    3.3 暫存器介紹

    3.3.1 概略

    89S51 的記憶體可分為兩大部份,一是程式記憶體,即是使用者撰寫軟體程

    式的存放記憶體區塊;另一是資料記憶體,是用以存放程式執行結果所使用的記

    憶體。而在 895S1 中暫存器與資料記憶體則是結合在一起,均存放在資料記憶體

    中,而我們通常用到的大多都是特殊功能暫存器 SFR(Special funcation Register)

    裡的記憶體,例如:PSW(Program Status Word)、程式狀態字元暫存器、IP(Interrupt

    Priority Register)、中斷優先暫存器、 IE(Interrupt Enable Register)、中斷致

    能暫存器、SCON(Serial Port Control Register)、串列埠控制暫存器....等等;

    由於有很多特殊功能暫存器這邊我們只對本專題程式會用到的暫存器,做下列介

    紹。

  • 9

    3.3.2 TCON:計時器控制暫存器 (TIMER/COUNTER CONTROL REGISTER)

    位址:88H

    TF1: TCON.7 計時器 1的溢位旗號,當計時器/計數器 1溢位時,會被硬體

    設定為 1,當處理器執行中斷服務程式時,硬體會自動將此位元清除為 0。

    TR1: TCON.6 計時器 1的啟動位元,由軟體設定為 1時啟動,0時停止。

    TF0: TCON.5 計時器 0的溢位旗號,當計時器 0溢位時,會被硬體設定為 1,

    當處理器執行中斷服務程式時,硬體會自動清除此位元。

    TR0: TCON.4 計時器 0 的啟動位元,由軟體設定為 1 時啟動,0 時停止。

    IE1: TCON.3 外部中斷(INT1)的中斷旗號,當中斷被檢知時,硬體會設定此

    位元,當中斷被處理時,硬體會自動清除此位元。

    IT1: TCON.2 INT1 的中斷型態控制,當此位元設定為 1 時為負緣觸發型態,

    當此位元為 0 時,則為低準位觸發型態。

    IE0: TCON.1 外部中斷(INT0)的中斷旗號,當中斷被檢知時,硬體會設定此

    位元,當中斷被處理時,硬體會自動清除此位元。

    IT0: TCON.0 INT0 的中斷型態控制,當此位元設定為 1 時為負緣觸發型態,

    當此位元為 0 時,則為低準位觸發型態。

    TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

    表 3.3.1 TCON 暫存器

  • 10

    位置:89H

    GATE C/T M1 M0 GATE C/T M1 M0

    GATE:計時器的開關

    C/T:計時器或計數器的選擇

    M1:模式選擇位元

    M2:模式選擇位元

    M1 M2 工作模式 功能

    0 0 0 13-BIT 計時器/計數器

    0 1 1 16-BIT 計時器/計數器

    1 0 2 8-BIT 自動載入計時器/計

    數器

    1 1 3 TIMER0:TH0及 TL0各別使

    用獨立的8-BIT計時器/計數

    器,並使用 T1 及 T0 當控制

    位元

    TIMER1:停止動作

  • 11

    3.3.3 TMOD:計時模式控制暫存器

    表 3.3.2 TMOD 暫存器

    3.3.4 中斷致能暫存器(Interrupter Enable register,簡稱 IE,可位元定址)

    表 3.3.3 IE 暫存器

    3.4 計時器模式二簡介

    下圖為模式二工作方塊圖,它是一個 8 位元計時器,在計時結束後,有自動重

    新載入的功能,將原本 16 位元的計數器拆成兩個 8 位元暫存器 TL0 和 TH0,其中

    TL0 為真正計數脈波的計數器,TH0則是放置重新載入值的暫存器,由程式中初值

    載入放入 TH0 即可。

    重新自動載入的優點是讓計時器更精準,一般其他模式必須在中斷程式部分

    位址:A8H

    EA ---- ---- ES ET1 EX1 ET0 EX0

    EA(IE.7):若 EA=0,則禁止所有中斷;若 EA=1,則各中斷是否致能可由各

    自的中斷致能位元來各別設定。

    ES(IE.4):致能串列埠的中斷。

    ET1(IE.3):致能 Timer1 的中斷。

    EX1(IE.2):致能 INT1 的中斷。

    ET0(IE.1):致能 Timer0 的中斷。

    EX0(IE.0):致能 INT0 的中斷。

  • 12

    重新載入計數初值,而軟體必須耗掉執行時間,造成誤差,一旦改為自動載入,軟

    體無需要做重新載入初值的動作,使的計時上更準確

    模式二為 8 位元的計時器,最大計數脈波數為 256,計時時間比較短,為

    1.085us×256=0.28ms

    而計數初值載入方式為:TH0=256-X,其中 X 為所要計數的次數,計數時間

    的長短為 1.085us × X us。

    圖 3.4.1 計時器模式二架構圖

    3.5 馬達控制器

    3.5.1 馬達控制卡架構

    特別是接點 5、6 主要接著我們雙推桿,並依設定為反轉或正轉,給予不同的

  • 13

    電壓正負值,如果是正轉,5、6 接點就分別提供正負的電壓,反之如果為反轉,就提

    供負正的電壓,另外專題所做的控制板是接於接點 5、6 及馬達之間,所以我們如

    果要做馬達控制時,不需要將原本的電路做更動或者是修改,只要在那邊多加一

    塊控制板即可。

    圖 3.5.1 馬達控制卡示意圖

    接點 說明

    1 手動開關(正轉)

    2 手動開關(停止)

    3 手動開關(反轉)

    4 手動開關(共線)

    5 推桿馬達黑線

    6 推桿馬達紅線

    7 受信總機接點

  • 14

    8 受信總機接點

    9 DC24 輸入點(-)

    10 DC24 輸入點(+)

    表 3.5.1 接點說明

    3.5.2 外接式馬達控制器

    當處於開關設於正轉時,馬達控制板上的偵測電路,會偵測到正轉訊號,並告

    知 89S51 目前的狀態,觸發 89S51 正轉時的程式指令去切換繼電器 1 與繼電器 2

    使馬達正轉,如圖 3.5.2 中繼電器的黑線並達到速度上的控制,相反的,如果開關

    調至反轉,也會偵測到反轉訊號,接著觸發 89S51 反轉時的程式指令去切換繼電

    器與繼電器 2 使馬達反轉,如圖 3.5.2 中的紅線去完成反轉時的速度控制。

    圖 3.5.2 外接式馬達控制器示意圖

  • 15

    圖 3.5.3 馬達下方接這兩個二極體,它稱之為『飛輪二極體』,透過飛輪二極

    體去確保正反轉時馬達電路能正常的運作,防止電壓在正負切換時電流方向的不

    同導致馬達燒毀的保護元件。

    繼電器是使用台製的 3P 繼電器,圖中的 7、8、9 接點是繼電器的主接點,而

    1、2、3 接點是常閉接點,而 4、5、6 接點是常開接點,則 10、11 接點是繼電器

    的線圈,通過偵測電路的正反轉經過 89S51 的計算將切換繼電器的常閉或常開接

    點,以達到控制電流方向,進而使推桿馬達有正反轉的功用。

    圖 3.5.3 外接式馬達控制器電路圖

  • 16

    3.6 光學式編碼器電路

    光學編碼器是裝置在推桿馬達上,經由馬達轉軸上的光柵片產生訊號,訊號

    由史密特觸發器轉為高低電位送進89S51中計算,專題使用的史密特觸發器 IC是

    74C14,經由程式便可知道兩軸馬達的速率的差別,在專題中是確認控制馬達是

    否同步的感測器。

    圖 3.6.1 光遮斷器電路圖

  • 17

    3.7 繼電器電路

    繼電器的電路所使用的電壓與 89S51 的 5V 不同,本專題的作法是使用交流

    電 9V 的變壓器經交由橋氏整流與 7805 穩壓,實現出兩種電壓,分別是 5V 以及

    12V,專題中大部分 IC 工作的電壓是 5V,繼電器所工作的電壓則是 12V。

    圖中的 10、11 接點是繼電器的線圈,旁邊的二極體是一個保護線圈的元件。

    圖 3.7.1 繼電器電路圖

    3.8 正反轉偵測電路

    正反轉偵測電路主要功能在偵測馬達控制卡上的電壓為負正或是正負,將其

    偵測的結果送進 89S51,進而控制繼電器的切換。

  • 18

    圖 3.8.1 偵測電路圖

    3.9 電源電路

    IC 工作電壓皆為+5V,RELAY 工作電壓為 12V,我們用了一個可以提供+5V

    與+12V 的電源電壓電路,來提供系統的運作。

    如下圖所示的電路圖,我們利用 AC 9V 的變壓器電路將 AC 110V 的電壓轉

    換成 AC 9V,再加上橋式整流後可提供 12V 與 5V 的直流電以供系統使用、濾波

    電容作充放電以減少漣波,經 7805 穩壓 IC 產生穩定的直流電壓。

    圖 3.9.1 電源電路圖

  • 19

    3.10 89S51 部分電路

    89S51 電路

    89S51 電路部分,有 RESET 按鈕,以及基本的 5V 電源,在 P1.7 接腳有一個

    LED 燈,當系統在自動模式下,兩軸推桿馬達的速率相差太多,便會將其停止,並

    將 LED 燈亮起,有警示的作用。

    開關按鈕

    開關按鈕分成三個,第一組開關 P1.0 與 P1.1 連接,第二組開關 P1.2 與 P1.3 連

    接,其功能將開關撥接在一起的時候可使推桿馬達在運轉時停下,擁有微調的功

    能,也可將其運轉及時停止,可用於欲使推桿馬達停止的狀況;第三組開關是手動

    模式以及自動模式的切換開關,當開關 ON 的時候是手動模式,當 OFF 的時候則

    是自動模式。

  • 20

    圖 3.10.1 89S51 部分電路

  • 21

    3.11 電路全圖

    根據前面所有電路做一個整合,畫出全電路圖,希望能對所有電路設置位置

    有更加的了解。

    圖 3.11.1 全電路圖

  • 22

    第四章 實體成果

    4.1 完整電路實體

    由於 89S51 部分電路在用 PROTEL 佈線方面較為困難,且時間不足,所以我

    們最後利用洞洞板來代替,在洞洞板上直接做跳線的優點是直接拉線方便且簡單,

    但是如果系統無法正常操作時,要回頭去找出問題點,會相當困難,因為跳線非常

    混亂,時常發生接觸不良,所以如果時間上允許,還是建議洗出電路板為佳。

    圖 4.1.1 控制板電路實體

  • 23

    圖 4.1.2 馬達板電路實體以及 PROTEL PCB 圖

    圖 4.1.3 光學式編碼器

    4.2 成果運作說明

    本專題主要功能大致分為手動及自動兩種,手動是直接對兩個馬達送 PWM,

    並無法看出他們同步效果,但仍然可以控制正反轉。

    自動模式則相反,可利用光遮斷產生外部中斷進而使馬達達到同步的效果且同時

    擁有正反轉功能,特別要說明的是當兩個馬達轉速相差甚遠時,馬達會停止下來,

    讓人們去檢查整個系統是否有出現問題。

    此設計貼心的考慮到如果馬達相差甚遠還不停止的話,有可能是系統出現問,

    及會導致馬達越差越遠,使同步失去了意義。

  • 24

    圖 4.2.1 實體操作畫面

  • 25

    第五章 結論與問題討論

    剛開始我們對於實作部分並不上手,因為大多數在學校的時間仍然停留在上

    課中的理論,但是透過這次的專題實作,讓我們對於實作方面,有了初步的認識,

    在過程中有許多的挫折以及疑惑,多虧有陳孝武老師的指導,他交我們如何去尋

    找問題以及解決問題,在過程中主要遇到的問題及解決方法如下:

    軟體問題:

    當初質疑為什麼一定要用計時/計數器的中斷服務呢?不能用延遲時間來達

    到同樣的效果嘛?在表面上兩者看起來似乎沒有太大差別,但是當你使用計時/

    計數器的中斷服務所達到的精準度比延遲時間那個方法準多了,尤其我們做的是

    馬達的控制,精準度無疑是我們要求的項目之一。

    再者在程式撰寫上我們除錯時常遇到找不到問題點,後來才發現原來是撰寫

    的軟體可能無法識別你用的指令,所以在除錯上一直會顯示錯誤,此時只要將你

    的指令或者是變數重新假設一個,就可成功通過組譯了。

    硬體問題 :

    在硬體上的實驗電路板上的雜訊處理,洞洞板的雜訊比想像中來的複雜,

    本次專題的實現上有個困難是實驗中有使用到繼電器,而繼電器上的常閉常

    開開關會有所有線路,礙於能力以及時間的考量,在成品中有使用到洞洞板,

    但也造成了雜訊的問題,若有在更周詳的規劃,本人認為可將所有電路實現

  • 26

    在同一塊電路板上面。

    在光學編碼器的光柵上,專題中使用六個光柵,經由實驗後發現可將其

    減少,可將其修改為五個光柵。

  • 27

    第六章 參考資料

    [1]李克宇 黃新賢 陳瑞錡,8051/52 單晶片微電腦原理與應用,1998

    [2]楊明豐,8051 入門 : 輕鬆學,碁峰資訊,2005

    [3]陳明熒,單晶片 8051 實作入門,文魁資訊發行,2007

    [4]賴麒文,8051 單晶片之 C語言徹底應用.硏究篇 ,文魁發行, 2002

    [5]王信福,單晶片微電腦原理與應用 : 進階實習篇,儒林出版社,2001

    [6] Microelectronic circuits. Solutions manual / Adel S. Sedra, Kenneth C.

    SmithNew York : Holt,Rinehart and Winston, c1982

    [7]洪永杰,單晶片實習-交流馬達轉速控制,2002

  • 28

    附錄 本專題完整程式

    DU_ON EQU 22H

    DU_OFF EQU 22H

    FLAG0 BIT 20H.0

    FLAG1 BIT 20H.1

    FLAG2 BIT 20H.2

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ORG 00H

    NOP

    JMP BEGIN

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ORG 03H

    DEC DU_ON

    INC DU_OFF

    RETI

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ORG 03H

    INC DU_ON

  • 29

    DEC DU_OFF

    RETI

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ORG 0BH

    JMP TIM0

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    ORG 1H

    JMP TIM1

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    BEGIN:

    MOV SP,#6H

    CALL INITIAL

    ; MOV DU_OFF,#(256-10)

    ; MOV DU_ON,#(256-10)

    ; SETB P1.7 ;LED OFF(OVERFLOW RESET)

    ; ORL P1,#00101010B ;SETB P1.1=P1.3=1

    ; MOV IE,#10001111B ;AUTO Enable all interrupt

    CHK_P:

  • 30

    ; jmp CHK_P

    JB P0.0,NEG ;P0.0=1 NOT POSITIVE

    SETB P1.4 ;RELAY 1

    SETB P1.6 ;RELAY 2

    CLR FLAG2 ;FLAG2=0 (POSITIVE)

    JMP CHK_M0

    NEG:

    CLR P1.6 ;RELAY 1

    CLR P1.6 ;RELAY 2

    SETB FLAG2 ;FLAG2=1 (NEGATIVE)

    CHK_M0:

    JNB P0.4,AUTO ;P0.4=0 JUMP TO AUTO

    ;Manual

    ; ORL P1,#00001111B ;MANUAL P1.0=P1.2=1, P1.1=P1.3=0

    ANL P1,#11111101B ;CLR P1.1, P1.3

    MOV DU_OFF,#(256-10)

    MOV DU_ON,#(256-40)

    SETB P1.7 ;LED OFF(OVERFLOW RESET)

  • 31

    MOV IE,#10001110B ;Enable PWM(timer) interrupt

    LOOP0:

    JB FLAG2,CHK_N1 ;FLAG2=1 JUMP TO NEGATIVE

    JB P0.0,STOP_L0 ;P0.0=1 NOT POSITIVE

    JMP CHK_M1 ;

    CHK_N1:

    JNB P0.0,STOP_L0 ;

    CHK_M1:

    JB P0.4,LOOP0 ;P0.4=1 MANUAL

    STOP_L0:

    ; ORL P1,#01001010B ;SETB P1.1=P1.3=1

    MOV IE,#00000000B ;DISable all interrupt

    ANL P1,#11110100B ;CLR P1.0=P1.2=0

    JMP CHK_P

    ;Manual End

    ;Auto

    AUTO:

    MOV DU_OFF,#(256-10)

  • 32

    MOV DU_ON,#(256-40)

    SETB P1.7 ;LED OFF(OVERFLOW RESET)

    ORL P1,#10001010B ;SETB P1.1=P1.3=1

    MOV IE,#10001111B ;AUTO Enable all interrupt

    LOOP1:

    JB FLAG2,CHK_N2

    JB P0.0,STOP_L1 ;P0.0=1(POSITIVE STOP)

    JMP CHK_M2

    CHK_N2:

    JNB P0.0,STOP_L1 ;

    CHK_M2:

    JB P0.4,STOP_L1 ;P0.4=1(MANUAL)(STOP AUTO)

    MOV A,DU_ON ;CHECK OVERFLOW

    CLR C

    SUBB A,#20

    JC TEST1

    MOV A,#26

  • 33

    CLR C

    SUBB A,DU_ON

    JC TEST1

    JMP LOOP1

    TEST1:

    CLR P1.7 ;LED ON(OVERFLOW)

    MOV IE,#00000000B ;DISable all interrupt

    ANL P1,#11110000B ;CLR P1.0=P1.2=0

    JNB P0.4,$

    JMP CHK_P

    STOP_L1:

    MOV IE,#00000000B ;DISable all interrupt

    ANL P1,#11110000B ;CLR P1.0=P1.2=0

    ;Auto End

    JMP CHK_P

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    INITIAL:

  • 34

    MOV P0,#11111111B

    MOV P1,#11111111B

    MOV P3,#11111111B

    MOV TMOD,#00100010B ;Timer 1, Timer 2, Mode 2

    ; MOV IE,#10001111B ;Enable all interrupt

    MOV TL0,#(256-10)

    MOV TH0,#(256-40)

    MOV DU_OFF,#(256-10)

    MOV DU_ON,#(256-40)

    MOV 20H,#0

    MOV TCON,#01010101B ;Start Timer 1&2, Int0&1 Negative edge

    trigger

    CLR EA ;DISABLE ALL INTERRUPT

    RET

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    TIM0:

    JNB P1.0,HIGH0

    CLR P1.0

  • 35

    MOV TH0,#216

    RETI

    HIGH0:

    SETB P1.0

    MOV TH0,#246

    RETI

    TIM1:

    JNB P1.2,HIGH1

    CLR P1.2

    MOV TH1,DU_ON

    RETI

    HIGH1:

    SETB P1.2

    MOV TH1,DU_OFF

    RETI

    END