懸掛運動控制系統(tǒng)的設計
懸掛運動控制系統(tǒng)的設計,懸掛,吊掛,運動,控制系統(tǒng),設計
介紹AT89C52
功能特性概述:
AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機,片內(nèi)含8k bytes的可反復擦寫的只讀程序存儲器(PEROM)和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),與標準MCS-51指令系統(tǒng)及8058產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲單元,功能強大AT89C52單片機適合于許多較為復雜控制應用場合。
AT89C52提供以下標準功能:8k字節(jié)Flash閃速存儲器,256字節(jié)內(nèi)部RAM,32個I/O口線,3個16位定時/計數(shù)器,一個6向量兩級中斷結構,一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。同時,AT89C52可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e方式停止CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個硬件復位。
引腳功能說明
Vcc:電源電壓
GND:地
P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能吸收電流的方式驅動8個TTL邏輯門電路,對端口P0寫“1”時,可作為高陰抗輸入端用。
在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數(shù)據(jù)總線復用,在訪問期間激活內(nèi)部上拉電阻。
在Flash編程時,P0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時,要求外接上拉電阻。
P1口:P1是一個帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。
與AT89C51不同之處是,P1.0和P1.1還可分別作為定時/計數(shù)器2的外部計數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX)。
Flash編程和程序校驗期間,P1接收低收入位地址。
P2口:P2是一個帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯門電路。對端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時可作輸入口,作輸入口使用時,因為內(nèi)部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。
在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX@DPTR指令)時,P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(如執(zhí)行MOVX@RI指令)時,P2口輸出鎖存器的內(nèi)容。
Flash編程或校驗時,P2亦接收高位地址和一些控制信號。
P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級可驅動(吸收或輸出電流)4個TTL邏輯電路。對P3口寫入“1”時,它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時,被外部低的P3口將用上拉電阻輸出電流(IIL)。
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下所示:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 (外中斷0)
P3.3 (外中斷1)
P3.4 T0 (定時/計數(shù)器0)
P3.5 T1 (定時/計數(shù)器1)
P3.6 (外部數(shù)據(jù)存儲器寫選通)
P3.7 (外部數(shù)據(jù)存儲器讀選通)
此外,P3口還接收一些用于Flash閃速存儲器編和程序校驗的控制信號。
RST:復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。
ALE/:當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。
對Flash存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如有必要,可通過支特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。
:程序儲存允許()輸出是外部程序存儲器的讀選通信號,當AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次有效,即輸出兩個脈沖。在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次信號。
/VPP:外部訪問允許。欲使CPU公訪問外部程序存儲器(地址為0000H-FFFFH),端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內(nèi)部會鎖存EA端態(tài)。
如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲器中的指令。
Flash存儲器編程時,該引腳加上+12V的編程允許電源Vpp,當然這必須是該項器件是使用12V編程電壓Vpp。
XTAL1:振蕩器反相放大器的及內(nèi)部時鐘發(fā)生器的輸入端。
XTAL2;振蕩器反相放大器的輸入出端。
特殊功能寄存器:
在AT89C52片內(nèi)存儲器中,80H-FFH共128個單無為特殊功能寄存器(SFR)。
并非所有的地址都被定義,從80H-FFH共128個字節(jié)只有一部分被定義,還有相當一部分沒有定義。對沒有定義的單元讀寫將是無效的,讀出的數(shù)值將不確定,而寫入的數(shù)據(jù)也將丟失。
不應將數(shù)據(jù)“1”寫入未定義的單元,由于這些單元在將來的產(chǎn)品中可能賦予新的功能,在這種情況下,復位后這些單元數(shù)值總是“0”。
AT89C52除了與AT89C51所有的定時/計數(shù)器0和定時/計數(shù)器1外,還增加了一個定時/計數(shù)器2。定時/計數(shù)器2的控制和狀態(tài)位位于T2CON,T2MOD,寄存器對(RCA02H、RCAP2L)是定時器2在16位捕獲方式或16位自動重裝載方式下的捕獲/自動重裝載寄存器。
中斷寄存器:
AT89C52有6個中斷源,2個中斷優(yōu)先級,IE寄存器控制各中斷位,IP寄存器中6個中斷源的每一個可定為2個優(yōu)先級。
數(shù)據(jù)存儲器:
AT89C52有256個字節(jié)的內(nèi)部RAM,80H-FFH高128個字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM和特殊功能寄存器的地址是相同的,但物理上它們是分開的。
當一條指令訪問7FH以上的內(nèi)部地址單元時,指令中使用的尋址方式是不同的,也即尋址方式塊是訪問高128字節(jié)RAM還是訪問特殊功能寄存器。如果指令是直接尋址方式則為訪問特殊功能寄存器。
例如,下面的直接尋址指令訪問特殊功能寄存器0A0H(即P2口)地址單無。
MOV 0A0H,#data
間接尋址指令訪問高128字節(jié)RAM,例如,下面的間接尋址指令中,R0的內(nèi)容為0A0H,則訪問數(shù)據(jù)字節(jié)地址為0A0H,而不是P2口(0A0H)。
MOV·R0,#data
堆棧操作也是間接尋址方式,所以,高128位數(shù)據(jù)RAM亦作為堆棧區(qū)使用。
定時器0和定時器1:
AT89C52的定時器0和定時器1的工作方式與AT89C51相同。
定時器2:
定時器2是一個16位定時/計數(shù)器。它既或當定時器使用,也可作為外部事件計數(shù)器使用,其工作方式由特殊功能寄存器T2CON的C/T2位選擇。定時器2有三種工作方式:捕獲方式,自動重裝載(向上或向下計數(shù))方式和波物率發(fā)生器方式,工作方式由T2CON的控制位來選擇。
定時器2由兩個8位寄存器TH2和TL2組成,在定時器工作方式中,每個機器周期TL2寄存器的值加1,由于一個機器周期由12個振蕩時鐘構成,因此,計數(shù)速率為振蕩頻率1/12。
在計數(shù)工作方式時,當T2引腳上外部輸入信號產(chǎn)生由1至0的下降沿時,寄存器的值加工能力,在這種工作方式下,每個機器周期的5SP2期間,對外部輸入進行采樣。若在第一個機器周期中采到的值為了,而在下一個機器周期中采到的值為0,則在緊跟著的下一個周期的S3P1期間寄存器加工能力。由于識別1至誠的跳變需要2個機器周期(24個振蕩周期),因此,最高計數(shù)速率為振蕩頻率的1/24。為確保采樣的正確性,要求輸入的電平在變化前至少保持一個完整周期的時間,以保證輸入信號到少被采樣一次。
出 自http://www.scmgroup.com/private/bin/indice/catalogo;jsessionid=FGAIKAPIJDLA?locale=en&marchioId=SCM
Introduce of AT89C52
Description
The AT89C52 is a low-power, high-performance CMOS 8-bit microcomputer with 8 Kbytes of Flash programmable and erasable read only memory (PEROM). The device is manufactured using Atmel’s high density nonvolatile memory technology and is compatible with the industry standard 80C51 and 80C52 instruction set and pinout. The on-chip Flash allows the program memory to be reprogrammed in-system or by a conventional nonvolatile memory programmer. By combining a versatile 8-bit CPU with Flash on a monolithic chip, the Atmel AT89C52 is a powerful microcomputer which provides a highly flexible and cost effective solution to many embedded control applications.
The AT89C52 provides the following standard features: 8 Kbytes of Flash, 256 bytes of RAM, 32 I/O lines, three 16-bit timer/counters, a six-vector two-level interrupt architecture, a full duplex serial port, on-chip oscillator, and clock circuitry. In addition, the AT89C52 is designed with static logic for operation down to zero frequency and supports two software selectable power saving modes. The Idle Mode stops the CPU while allowing the RAM, timer/count-ers, serial port, and interrupt system to continue functioning. The Power Down Mode saves the RAM contents but freezes the oscillator, disabling all other chip functions until the next hardware reset.
Pin Description
VCC
Supply voltage.
GND
Ground.
Port 0
Port 0 is an 8-bit open drain bidirectional I/O port. As an output port, each pin can sink eight TTL inputs. When 1s are written to port 0 pins, the pins can be used as high-impedance inputs. Port 0 can also be configured to be the multiplexed low-order address/data bus during accesses to external program and data memory. In this mode, P0 has internal pullups. Port 0 also receives the code bytes during Flash programming and outputs the code bytes during program verification. External pullups are required during program verification.
Port 1
Port 1 is an 8-bit bidirectional I/O port with internal pullups. The Port 1 output buffers can sink/source four TTL inputs. When 1s are written to Port 1 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 1 pins that are externally being pulled low will source current (IIL) because of the internal pullups. In addition, P1.0 and P1.1 can be configured to be the timer/counter 2 external count input (P1.0/T2) and the timer/counter 2 trigger input (P1.1/T2EX), respectively, as shown in the following table. Alternate Functions Port Pin T2 (external count input to P1.0 Timer/Counter 2), clock-out T2EX (Timer/Counter 2 capture/reload P1.1 trigger and direction control) Port 1 also receives the low-order address bytes during Flash programming and program verification.
Port 2
Port 2 is an 8-bitbidirectional I/O port with internal pull-ups. The port 2 output buffers can sink/source four TTL inputs. When 1s are written to Port 2 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 2 pins that are externally being pulled low will source current (IIL) because of the internal pullups. Port 2 emits the high-order address byte during fetches from external program memory and during accesses to external data memory that use 16-bit addresses (MOVX @ DPTR). In this application, Port 2 uses strong internal pullups when emitting 1s. During accesses to external data memory that use 8-bit addresses (MOVX @ RI), Port 2 emits the contents of the P2 Special Function Register. Port 2 also receives the high-order address bits and some control signals during Flash programming and verification.
Port 3
Port 3 is an 8-bit bidirectional I/O port with internal pullups. The Port 3 output buffers can sink/source four TTL inputs. When 1s are written to Port 3 pins, they are pulled high by the internal pullups and can be used as inputs. As inputs, Port 3 pins that are externally being pulled low will source current (IIL) because of the pullups. Port 3 also serves the functions of various special features of the AT89C51, as shown in the following table.
Port Pin Alternate Functions
P3.0 RXD (serial input port)
P3.1 TXD (serial output port)
P3.2 INT0 (external interrupt 0)
P3.3 INT1 (external interrupt 1)
P3.4 T0 (timer 0 external input)
P3.5 T1 (timer 1 external input)
P3.6 WR (external data memory write strobe)
P3.7 RD (external data memory read strobe)
Port 3 also receives some control signals for Flash programming and programming verification.
RST
Reset input. A high on this pin for two machine cycles while the oscillator is running resets the device.
ALE/
Address Latch Enable is an output pulse for latching the low byte of the address during accesses to external memory. This pin is also the program pulse input (PROG) during Flash programming. In normal operation, ALE is emitted at a constant rate of 1/6 the oscillator frequency and may be used for external timing or clocking purposes. Note, however, that one ALE pulse is skipped during each access to external data memory. If desired, ALE operation can be disabled by setting bit 0 of SFR location 8EH. With the bit set, ALE is active only during a MOVX or MOVC instruction. Otherwise, the pin is weakly pulled high. Setting the ALE-disable bit has no effect if the microcrontroller is in external execution mode.
PSEN
Program Store Enable is the read strobe to external programmemory.
When the AT89C52 is executing code from external program memory, PSEN is activated twice each machine cycle, except that two PSEN activations are skipped during each access to external data memory.
EA/VPP
External Access Enable. EA must be strapped to GND in order to enable the device to fetch code from external program memory locations starting at 0000H up to FFFFH. Note, however, that if lock bit 1 is programmed, EA will be internally latched on reset.
EA should be strapped to VCC for internal program executions. This pin also receives the 12-volt programming enable voltage (VPP) during Flash programming when 12-volt programming is selected.
XTAL1
Input to the inverting oscillator amplifier and input to the internal clock operating circuit.
XTAL2
Output from the inverting oscillator amplifier.
Special Function Registers
A map of the on-chip memory area called the Special Function Register (SFR).
Note that not all of the addresses are occupied, and unoccupied addresses may not be implemented on the chip. Read accesses to these addresses will in general return random data, and write accesses will have an indeterminate effect. User software should not write 1s to these unlisted locations, since they may be used in future products to invoke new features. In that case, the reset or inactive values of the new bits will always be 0.
Timer 2 Registers Control and status bits are contained in registers T2CON and T2MOD for Timer 2. The register pair (RCAP2H, RCAP2L) are the Capture/Reload registers for Timer 2 in 16-bit capture mode or 16-bit auto-reload mode.
Interrupt Registers
The individual interrupt enable bits are in the IE register. Two priorities can be set for each of the six interrupt sources in the IP register.
Data Memory
The AT89C52 implements 256 bytes of on-chip RAM. The upper 128 bytes occupy a parallel address space to the Special Function Registers. That means the upper 128 bytes have the same addresses as the SFR space but are physically separate from SFR space. When an instruction accesses an internal location above address 7FH, the address mode used in the instruction specifies whether the CPU accesses the upper 128 bytes of RAM or the SFR space. Instructions that use direct addressing access SFR space. For example, the following direct addressing instruction accesses the SFR at location 0A0H (which is P2). MOV 0A0H, #dataInstructions that use indirect addressing access the upper 128bytes of RAM. For example, the following indirect addressinginstruction, where R0 contains 0A0H, accesses the data byte ataddress 0A0H, rather than P2 (whose address is 0A0H).MOV @R0, #dataNote that stack operations are examples of indirect addressing,so the upper 128 bytes of data RAM are available as stack space .
Timer 0 and 1
Timer 0 and Timer 1 in the AT89C52 operate the same way as Timer 0 and Timer 1 in the AT89C51.
Timer 2
Timer 2 is a 16-bit Timer/Counter that can operate as either a timer or an event counter. The type of operation is selected by bit C/T2 in the SFR T2CON (shown in Table 2). Timer 2 has three operating modes: capture, auto-reload (up or down counting), and baud rate generator. The modes are selected by bits in T2CON.
Timer 2 consists of two 8-bit registers, TH2 and TL2. In the Timer function, the TL2 register is incremented every machine cycle. Since a machine cycle consists of 12 oscillator periods, the count rate is 1/12 of the oscillator frequency. In the Counter function, the register is incremented in response to a l-to-0 transition at its corresponding external input pin, T2. In this function, the external input is sampled during S5P2 of every machine cycle. When the samples show a high in one cycle and a low in the next cycle, the count is incremented. The new count value appears in the register during S3P1 of the cycle following the one in which the transition was detected. Since two machine cycles (24 oscillator periods) are required to recognize a 1-to-0 transition, the maximum count rate is 1/24 of the oscillator frequency. To ensure that a given level is sampled at least once before it changes, the level should be held for at least one full machine cycle.
Get from http://www.scmgroup.com/private/bin/indice/catalogo;jsessionid=FGAIKAPIJDLA?locale=en&marchioId=SCM
Xx大學
畢業(yè)設計外文資料翻譯
學 院: 計算機科學技術學院
專 業(yè): 計算機科學與技術(工)
班 級:
學 號:
姓 名:
指導教師:
二○○六 年 五 月 十六 日
譯文題目: 介紹AT98C52
原文題目: Introduce of AT89C52
原文出處: http://www.scmgroup.com
47
- -
目 錄
第1章 緒論 1
1.1 課題來源 1
1.2 課題目的 1
1.3 課題意義 2
1.4 應解決的主要問題 2
1.5 技術要求 2
第2章 方案論證 4
2.1 可行性研究 4
2.1.1 經(jīng)濟可行性研究 4
2.1.2 技術可行性研究 4
2.1.3 方案提出 5
2.1.4 方案分析 5
2.1.3 方案確定 7
2.2 需求分析 7
第3章 過程論述 8
3.1 概要設計 8
3.1.1 系統(tǒng)功能設計 8
3.1.2 系統(tǒng)結構設計 8
3.2 詳細設計 9
3.2.1 硬件設計 9
3.2.2 軟件設計 19
第4章 系統(tǒng)測試 28
4.1 硬件測試 28
4.2 軟件測試 28
4.2.1 單元測試 28
4.2.2 功能測試 30
4.2.3 集成測試 31
4.2.4 測試結果 31
結 論 32
后 記 33
參考文獻 34
附 錄 35
第1章 緒論
1.1 課題來源
本畢業(yè)設計課題是屬于教師擬定性課題,主要是研究基于單片機的對步進電機的有效控制。步進電機是一種能將數(shù)字輸入脈沖轉換成旋轉或直線增量運動的電磁執(zhí)行元件,每輸入一個脈沖電機轉軸步進一個步距角增量。電機總的回轉角與輸入脈沖數(shù)成正比例,相應的轉速取決于輸入脈沖頻率。?
???步進電機是機電一體化產(chǎn)品中關鍵部件之一,通常被用作定位控制和定速控制。步進電機慣量低、定位精度高、無累積誤差、控制簡單等特點。廣泛應用于機電一體化產(chǎn)品中,如:數(shù)控機床、包裝機械、計算機外圍設備、復印機、傳真機等。?
???選擇步進電機時,首先要保證步進電機的輸出功率大于負載所需的功率。而在選用功率步進電機時,首先要計算機械系統(tǒng)的負載轉矩,電機的矩頻特性能滿足機械負載并有一定的余量保證其運行可靠。在實際工作過程中,各種頻率下的負載力矩必須在矩頻特性曲線的范圍內(nèi)。一般地說最大靜力矩Mjmax大的電機,負載力矩大[1 ]。?
???選擇步進電機時,應使步距角和機械系統(tǒng)匹配,這樣可以得到機床所需的脈沖當量。在機械傳動過程中為了使得有更小的脈沖當量,一是可以改變絲桿的導程,二是可以通過步進電機的細分驅動來完成。但細分只能改變其分辨率,不改變其精度。精度是由電機的固有特性所決定。?
???選擇功率步進電機時,應當估算機械負載的負載慣量和機床要求的啟動頻率,使之與步進電機的慣性頻率特性相匹配還有一定的余量,使之最高速連續(xù)工作頻率能滿足機床快速移動的需要。
基于單片機的懸掛運動控制系統(tǒng),具有硬件電路結構簡單,精確度高,抗干擾性強等優(yōu)點。
1.2 課題目的
培養(yǎng)綜合運用四年大學所學知識去分析問題和解決實際問題的能力。在實踐中檢驗所學知識,從而加強理論與實踐的相結合。 體驗一個科研項目開發(fā)的全過程,學會單片機開發(fā)應用方法,鍛煉應用能力,動手能力。本課題設計是具有一定難度的基于單片機的應用系統(tǒng)開發(fā)項目,培養(yǎng)學生創(chuàng)新精神和創(chuàng)新能力。通過這次畢業(yè)論文及設計,檢驗的綜合素質和專業(yè)教育的培養(yǎng)效果,并且使學會閱讀、利用英文文獻資料,閱讀并翻譯外文資料的能力,學會設計報告和論文。
1.3 課題意義
隨著社會的發(fā)展、科技的進步以及人們生活水平的逐步提高,各種方便于生活的自動控制系統(tǒng)開始進入了人們的生活,以單片機為核心的自動門系統(tǒng)就是其中之一。同時也標志了自動控制領域成為了數(shù)字化時代的一員[ 3]。它實用性強,功能齊全,技術先進,使人們相信這是科技進步的成果。它更讓人類懂得,數(shù)字時代的發(fā)展將改變?nèi)祟惖纳睿瑢⒓涌炜茖W技術的發(fā)展。
通過對“微機控制自動門系統(tǒng)”的研究和設計,精心撰寫了微機控制自動門系統(tǒng)論文。本論文著重闡述了以單片機為主體,LED點陣顯示芯片及步進電機為核心的系統(tǒng)。
本設計主要應用SST89E58作為控制核心,LED點陣顯示芯片、步進電機、壓力傳感器、電位器相結合的系統(tǒng)。充分發(fā)揮了單片機的性能。其優(yōu)點硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價比較高等特點,具有一定的使用和參考價值。
1.4 應解決的主要問題
在基于單片機的懸掛運動控制系統(tǒng)中,主要分三個部分設計,一個是輸入和鍵盤顯示模塊;另一個是步進電機驅動模塊;第三個是最小系統(tǒng)和輸出模塊設計。主要解決的問題是:
1. 單片機最小系統(tǒng)硬件設計;
2. 步進電機驅動模塊設計;
3. 輸出部分的軟硬件設計;
4. 主程序設計;
5. 繪圖板的設計。
1.5 技術要求
設計一電機控制系統(tǒng),控制物體在傾斜(仰角≤100度)的板上運動。
在一白色底板上固定兩個滑輪,兩只電機(固定在板上)通過穿過滑輪的吊繩控制一物體在板上運動,運動范圍為80cm×100cm。物體的形狀不限,質量大于100克。物體上固定有淺色畫筆,以便運動時能在板上畫出運動軌跡。板上標有間距為1cm的淺色坐標線(不同于畫筆顏色),左下角為直角坐標原點, 示意圖如下。
第2章 方案論證
2.1 可行性研究
2.1.1 經(jīng)濟可行性研究
開發(fā)一個基于計算機的系統(tǒng)主要是為了獲取較好的經(jīng)濟效益和社會益。因此對待開發(fā)系統(tǒng)的經(jīng)濟可行性的論證就成為可行性研究的重要內(nèi)容。
1. 成本估算
(1) 購置并安裝軟硬件及有關設備費用。
懸掛運動控制系統(tǒng)主要由核心模塊、步進電機驅動模塊、輸入模塊、顯示模塊、通訊模塊等組成。
核心模塊由SST98E58和啟動單片機所用到的電容、電阻和晶振組成。
步進電機驅動模塊由1K×4、330歐的電阻,5610、5609、2N3055、MJ2955三極管,1N4007二極管等組成。
輸出模塊由一塊1602液晶顯示器構成。
輸入模塊主要由16個OMRON按鈕組成。
通訊模塊由單片機的串行口和MAX232芯片組成。
以上元件共需大約489元。
(2) 系統(tǒng)開發(fā)費用
懸掛運動系統(tǒng)主要是的硬件和軟件主要是由我一個人完成,從設計到實現(xiàn)一共用了大約2個月的時間。費用約為800元。
(3) 系統(tǒng)安裝、運行和維護費用。
本系統(tǒng)完全實現(xiàn)后由單片機控制步進電機帶動重物繪圖。單片機需要5V的電源。維護的費用主要是在測試時出現(xiàn)的錯誤需要更正時,替換的元器件大概10元左右。
(4) 人員培訓費用
懸掛運動系統(tǒng)主要由專業(yè)人員操作,而且操作非常簡單,費用幾乎沒有。
2. 成本-效益分析
社會效益:懸掛運動系統(tǒng)是大學生電子競賽中的一個題目。本次畢業(yè)設計,對本系統(tǒng)的功能進行了進一步的完善,特別是對步進電機的驅動,從硬件到軟件都比較穩(wěn)定,如果在將來的的實驗或競賽中還要用到單片機對步進電機的控制,可以將本系統(tǒng)的硬件和軟件直接應用或作為參考,所以,本系統(tǒng)對學校的教學和科研開發(fā)都有著深遠的意義。
2.1.2 技術可行性研究
1. 風險分析:懸掛運動控制系統(tǒng)要完成的功能為設計一電機控制系統(tǒng),控制物體在傾斜(仰角≤100度)的板上運動。在一白色底板上固定兩個滑輪,兩只電機(固定在板上)通過穿過滑輪的吊繩控制一物體在板上運動,運動范圍為80cm×100cm。物體的形狀不限,質量大于100克。物體上固定有淺色畫筆,以便運動時能在板上畫出運動軌跡。板上標有間距為1cm的淺色坐標線(不同于畫筆顏色),左下角為直角坐標原點。
懸掛運動控制系統(tǒng)硬件系統(tǒng)的路已經(jīng)設計好,并且可能很快的實現(xiàn)。相應的軟件設計已經(jīng)有了三種備選方案。
2. 資源分析:所需的硬件器件可以很快購齊。編程語言(C51)已經(jīng)熟練掌握。
3. 技術分析:電機主要分為步進電機和直流電機,如果需要對電機進行有效的精確的控制,選用步進電機更為合理。步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角[2]。這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。
雖然步進電機已被廣泛地應用,但步進電機并不能象普通的直流電機,交流電機在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅動電路等組成控制系統(tǒng)方可使用。因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業(yè)知識。
單片機是微型機的主要分支,在結構上的最大特點是把CPU、存儲器和定時器、多種輸入、輸出接口電路集成電路芯片上,將來的控制系統(tǒng)中,對于芯片的集成度要求更高。就其組成和功能而言,一塊單片機芯片就是一臺計算機。
本次設計主要分硬件設計和軟件設計。硬件系統(tǒng)包括開發(fā)平臺SST89E58單片機實驗與開發(fā)集成系統(tǒng),將其作為硬件系統(tǒng)的檢測方式之一。硬件系統(tǒng)主要是由自己搭建電路,以此為基本方式來制作此項設計。單片機芯片采用SST89E58系列單片機中的。
軟件系統(tǒng)中主要是采用C51語言來進行軟件方面的編程。具體的環(huán)境是應用KeilC開發(fā)平臺,以此來進行程序的編譯、通訊以及程序的調(diào)試。SST89E58單片機實驗與開發(fā)集成系統(tǒng)軟件直觀且易于掌握?,F(xiàn)在比較普遍的單片機編程語言主要有兩種——匯編和C51編程語言,匯編語言的可讀性、可移植性差,沒有通用性,而C51更接近人類語言、直觀、更易于描述復雜算法,所以選用的是C51語言。
經(jīng)過以上分析,本系統(tǒng)可以按時完成任務。
2.1.3 方案提出
對本系統(tǒng)的軟件設計已經(jīng)準備了閉環(huán)數(shù)字控制方式和開環(huán)數(shù)字控制方式兩套方案。
2.1.4 方案分析
方案1: 閉環(huán)數(shù)字控制方式
閉環(huán)數(shù)字控制方式,主要利用光電傳感器檢測法,結構圖如圖2.1所示。首先單片機根據(jù)輸入的數(shù)據(jù)來計算物體要移動的距離并控制物體往坐標的大概方向運動,紅外發(fā)射接收器來探測懸掛物體移動了多少個1*1cm的小方格,并經(jīng)過A/D送給單片機,單片機通過特定的算法計算出物體的坐標,并控制電機的轉動來控制物體往坐標進發(fā),在此過程中單片機不斷計算,不斷調(diào)整電機的轉速和方向使懸掛物體做一定路線的移動。但其缺點是,電路復雜,不但要求要有A/D電路,光電探測電路,還要其電路要做得十分精確。任何一個電路設計得不好,也會使物體運動產(chǎn)生很大的偏差[5]。
微機
單片機
電機驅動
電機
D/A
光電傳感器
圖2.1 閉環(huán)數(shù)字控制
方案2: 開環(huán)數(shù)字控制方式
開環(huán)數(shù)字程序控制方式,即沒有反饋系統(tǒng),開環(huán)數(shù)字控制的結構圖如圖2.2所示。由圖可看出,此種控制方式與上面的控制方式少了反饋電路[6]。單片機由輸入的數(shù)據(jù)來計算物體要移動的距離,直接發(fā)出控制脈沖來控制電機的轉動,進而控制物體的運動方向。由于少了反饋電路,系統(tǒng)的精度只與單片機所采用的算法準確性有關,此種方式電路結構簡單,成本低且易于調(diào)整和維護,是一種較理想的方式。
單片機
電機驅動
電機
微機
圖2.2 開環(huán)數(shù)字控制方式
2.1.3 方案確定
綜合上面所述,考慮時間和調(diào)試的復雜性,本設計采用方案2。
2.2 需求分析
當今時代,是一個新技術層出不窮的時代。在電子領域,尤其是自動化智能控制領域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構成的控制系統(tǒng)正以前所未見的速度被單片機智能控制系統(tǒng)所取代。大部分的高等工科學校都已開設了單片機課程。單片機具有體積小、功能強、成本低、應用面廣等優(yōu)點,可以說,智能控制與自動控制的核心就是單片機。目前,一個學習與應用單片機的高潮正在工廠、學校及企事業(yè)單位大規(guī)模地興起。過去習慣于傳統(tǒng)電子領域的工程師、技術員正面臨著全新的挑戰(zhàn),如不能在較短時間內(nèi)學會單片機,勢必會被時代所遺棄,只有勇敢地面對現(xiàn)實,挑戰(zhàn)自我,加強學習,爭取在較短的時間內(nèi)將單片機技術融會貫通,才能跟上時代的步伐。
步進電機是一種離散運動的裝置[4],它和現(xiàn)代數(shù)字控制技術有著緊密的本質的聯(lián)系。步進電機亦是一種將電脈沖轉化為角位移或直線位移的執(zhí)行機構,當步進電機驅動器接收到一個脈沖信號,它就驅動步進電機按設定的方向轉動一個固定的角度(又稱之為步進角),為此可以通過控制脈沖個數(shù)來控制角位移量,從而達到準確定位的目的;同時可以通過脈沖頻率來控制步進電機的轉動速度和加速度,從而達到調(diào)速的目的。這里給出懸掛運動控制系統(tǒng)的要求:
基本要求:
1. 控制系統(tǒng)能夠通過鍵盤或其他方式任意設定坐標點參數(shù);
2. 控制物體在80cm×100cm的范圍內(nèi)作自行設定的運動,運動軌跡長度不小于100cm,物體在運動時能夠在板上畫出運動軌跡,限300秒內(nèi)完成;
3. 控制物體作圓心可任意設定、直徑為50cm的圓周運動,限300秒內(nèi)完成;
4. 物體從左下角坐標原點出發(fā),在150秒內(nèi)到達設定的一個坐標點(兩點間直線距離不小于40cm)。
第3章 過程論述
3.1 概要設計
3.1.1 系統(tǒng)功能設計
1. 硬件設計
總體結構由AT89C52系列單片機等芯片構成,大致分為以下幾個部分。
首先是最小系統(tǒng)部分。這個部分是以單片機為核心的一個單片機最小系統(tǒng)。根據(jù)設計之前對設計題目的分析,可大致的了解到系統(tǒng)所要求程序和所要存儲數(shù)據(jù)單元的大小,這里采用的單片機為SST系列單片機中的SST89E58。
其次是信號的采集部分和鍵盤輸入顯示部分設計。
然后是信號的輸出部分。根據(jù)鍵盤的輸入,選定一個工作模試,選定進行繪制的圖形,再根據(jù)輸入的參數(shù),繪制出具體的圖形。
最后本設計是要實現(xiàn)電機的驅動部份,因為,電機的驅動是用四項模擬信號輸入來控制的,所以要設計一個電機驅動電路,把單片機輸出的數(shù)字信號,轉換成電機能夠使用的模擬信號。
2. 軟件設計
在設計中,需要對鍵盤的輸入數(shù)據(jù)進行采集,并將采集來的數(shù)據(jù)顯示在屏幕上,然后將輸入的數(shù)據(jù)傳給上位機,并根據(jù)輸入的數(shù)據(jù)執(zhí)行相應的操作,控制步進電機繪制出所需的圖形。
3.1.2 系統(tǒng)結構設計
單片機本身具備比較強大的功能,但往往不能滿足一個實際應用系統(tǒng)的功能要求,有些單片機本身就缺少一些功能部分需要擴展至應用系統(tǒng)所要求的規(guī)模。
單片機無法直接與微型計算機進行通信,如果想讓單片與微機通信必須將max232芯片與單片機串口相聯(lián)[7]。
懸掛控制系統(tǒng)由鍵盤,MSC1602液晶顯示器,SST89E58單片機,42BYG205電機等組成。功能框圖如圖3.1。
鍵盤采用4×4矩陣鍵盤通過程序設計完成鍵盤掃描。LCD顯示器通過P2口接收數(shù)據(jù)。單片機收到命令后,按照相應的算法,經(jīng)過計算后發(fā)出控制信號傳給電機。電機根據(jù)信號實現(xiàn)相應的動作。
鍵盤控制部分
SST89C52單片機控制部分
LCD顯示部分
電機控制部分
微機
圖3.1 功能框圖
原理總框圖:
單片機
接收
串行通訊
PC機顯示
圖3.2 串行通信原理圖
3.2 詳細設計
3.2.1 硬件設計
1. 整體設計
懸掛運動控制系統(tǒng)主要由核心模塊、步進電機驅動模塊、輸入模塊、顯示模塊、通訊模塊等組成。如圖3.3所示。本系統(tǒng)能夠完成以下功能:由鍵盤輸入工作模式和坐標數(shù)據(jù),其中工作模式包括:模式1:畫直線,輸入起點和終點的坐標后,電機將帶動重物運動出一條直線的軌跡。模式2:畫圓,輸入圓心和半徑的數(shù)據(jù)后,電機將帶動重物運動出一圓形軌跡。模式3:3邊圖形,輸入3個點的坐標后,電機將帶動重物運動出一個三角形的軌跡。模式4:4邊圖形,輸入4個點的坐標后,電機將帶動重物運動出一個四邊形的軌跡。然后顯示模塊會將工作的狀態(tài)顯示在LCD上,反映輸入的數(shù)據(jù)是否正確,和電機當前的運行狀態(tài)。步進電機驅動模塊,將單機輸出的5V信號轉換成步進電機所需要的12V信號,提供步進電機所需要的驅動電流。通訊模塊是能max232芯片,使用一定的協(xié)議,使單片機能與微機之間進行通訊,實現(xiàn)上位機與下位機之間的相互控制。
各個模塊的具體工作原理,將在下面作出詳細說明。
2. 主要功能模塊設計
懸掛運動控制系統(tǒng)主要由最小系統(tǒng)模塊、步進電機驅動模塊、輸入模塊、顯示模塊等組成。通過鍵盤輸入數(shù)據(jù),可以完成以下功能:將工作的狀態(tài)顯示在LCD上,控制步進電機將重物移至指定位置,控制步進電機帶動重物畫出指定的圖形,包括圓形、直線、多邊形等。
(1) 核心模塊
核心模塊是整個懸掛運動系統(tǒng)的最基本的部分。主要由SST89E58單片機和支持單片工作的一些器件,如晶振、電源和相關的電阻、電容組成,見圖3.4。SST98E58內(nèi)部具有三總路線和32K的存儲器,所以不用擴展總線和外部存儲[8]。各IO口分部如下:P0口作為鍵盤接口,P1口作為電機驅動接口,P2口作為LCD的數(shù)據(jù)接口,P3.3、P3.4、P3.5作為LCD的控制線接口。
(2) 步進電機驅動模塊
步進電機的驅動模塊是完成對步進電機的驅動,步電機是由+12V電壓驅動的,這個驅動電路的主要功能是將+5V的電壓轉換為+12V電壓[9]。見附錄圖 1。步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。感應子式步步進電機大體分為兩種:① 反應式步進電機,②感應子式步進電機。
我們使用的是兩相的感應子式步進電機,當電機繞組通電時序為時為正轉,通電時序為時為反轉。我們的對步進電機驅動是將輸出4個的+5V和0V信號經(jīng)過集成運放LM324變換成兩個+5V的信號[9],再經(jīng)過步進電機的驅動電路形成步進電機所需的兩個+12V的信號,分別對應步進電機的兩相AB,按照上述順序變換,實現(xiàn)對步進電機的驅動。
圖3.3 整體設計框圖
圖3.4 核心結構框圖
(3) 輸入模塊
輸入模塊是由自行焊接的4x4矩陣的鍵盤實現(xiàn)的[10],在這16個按鍵中,包括0~9的數(shù)字鍵,一個確定鍵,一個光標控制鍵,一個標志鍵,兩個電機驅動鍵,一個模式選擇鍵。見圖 3.5。將鍵盤的8根線,接到單片機P0口上,前4根為行線,后4根為列線,采用行列掃描的方法,對鍵盤監(jiān)測:首先給所有的行線為高電平,列線順序給某一根線低電平[11]。當某一鍵按下,并且列線掃描到該鍵所在的列時,會使該鍵所在的行線接口鉗制到低電平,這時就可以確定是那一個鍵按下了。
(4) 顯示模塊
顯示模塊是由一塊1602LCD構成,在單片機中編寫程序控制其顯示內(nèi)容。見圖3.6。 1602是一塊(16個字符×2行的)液晶顯示器。有8根數(shù)據(jù)線(D0~D7)和三根控制線(RS、R/W、E)與單片機相聯(lián)RS:數(shù)據(jù)/命令選擇端,R/W:讀寫選擇端,E:使能信號??梢酝ㄟ^程序設計完成對1602的初始化和輸出控制。
圖3.5 輸入模塊框圖
(5) 通訊模塊
本懸掛運動控制系統(tǒng)利用單片機自帶的串行口,通過max232與微型計算機相聯(lián),實現(xiàn)相互控制。Max232又叫做雙通道RS232線性驅動/接收器[12]。該器件包含2驅動器、2接收器和一個電壓發(fā)生器電路提供TIA/EIA-232-F電平。串行異步通信最廣泛使用的總路線接口標準RS-232C。232C接口標準采用EIA電平。它規(guī)定:高電平為+3V~15V,低電平為+3V~+15V。實際應用常采用12V或15V。
① 基本約定:I、波特率:9600
II、一位啟始位,8位數(shù)據(jù),一位停止位,無奇偶校驗位。
② 傳送順序:第一個字符,表示圖形標志,根據(jù)標志位,決定數(shù)據(jù)位的字符個數(shù)。
所畫的五個圖形分別用1、2、3、4、5表示。其中1表示直線,2表示圓形,3表示三角形,4表示四邊形,5表示五邊形。
直線:連續(xù)8字節(jié)數(shù)據(jù)(直線的兩個點),最后組裝成4個無符號字符型數(shù)據(jù)。
圓形:連續(xù)6字節(jié)數(shù)據(jù),前4個為圓心坐標,后2個為半徑。
三角形:連續(xù)12字節(jié)數(shù)據(jù)(三個點的坐標),最后組裝成6個無符號字符型數(shù)據(jù)。
四邊形:連續(xù)16字節(jié)數(shù)據(jù)(四個點的坐標),最后組裝成8個無符號字符型數(shù)據(jù)。
五邊形:連續(xù)20字節(jié)數(shù)據(jù)(五個點的坐標),最后組裝成10個無符號字符型數(shù)。
圖3.6 顯示模塊框圖
(6) 系統(tǒng)組成原理圖
系統(tǒng)的總體框圖如圖 3.7
圖3.7 系統(tǒng)控制硬件總框圖
3. 主要元器件功能與選用
(1) 步進電機介紹
步進電機是將電脈沖信號轉變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機的轉速、停止的位置只取決于脈沖信號的頻率和脈沖數(shù),而不受負載變化的影響,即給電機加一個脈沖信號,電機則轉過一個步距角。這一線性關系的存在,加上步進電機只有周期性的誤差而無累積誤差等特點。使得在速度、位置等控制領域用步進電機來控制變的非常的簡單。
雖然步進電機已被廣泛地應用,但步進電機并不能象普通的直流電機,交流電機在常規(guī)下使用。它必須由雙環(huán)形脈沖信號、功率驅動電路等組成控制系統(tǒng)方可使用。因此用好步進電機卻非易事,它涉及到機械、電機、電子及計算機等許多專業(yè)知識。
目前,生產(chǎn)步進電機的廠家的確不少,但具有專業(yè)技術人員,能夠自行開發(fā),研制的廠家卻非常少,大部分的廠家只一、二十人,連最基本的設備都沒有。僅僅處于一種盲目的仿制階段。這就給用戶在產(chǎn)品選型、使用中造成許多麻煩。簽于上述情況,我們決定以廣泛的感應子式步進電機為例。敘述其基本工作原理。望能對廣大用戶在選型、使用、及整機改進時有所幫助。
(2) 步進電機控制原理
步進電機是數(shù)字控制電機,它將脈沖信號轉變成角位移,即給一個脈沖信號,步進電機就轉動一個角度,因此非常適合于單片機控制。步進電機可分為反應式步進電機(簡稱VR)、永磁式步進電機(簡稱PM)和混合式步進電機(簡稱HB)。
步進電機區(qū)別于其他控制電機的最大特點是,它是通過輸入脈沖信號來進行控制的,即電機的總轉動角度由輸入脈沖數(shù)決定,而電機的轉速由脈沖信號頻率決定。
步進電機的驅動電路根據(jù)控制信號工作,控制信號由單片機產(chǎn)生。其基本原理作用如下:
① 控制換相順序
通電換相這一過程稱為脈沖分配。例如:三相步進電機的三拍工作方式,其各相通電順序為A-B-C-D,通電控制脈沖必須嚴格按照這一順序分別控制A,B,C,D相的通斷。
② 控制步進電機的轉向
如果給定工作方式正序換相通電,步進電機正轉,如果按反序通電換相,則電機就反轉。
③ 控制步進電機的速度
如果給步進電機發(fā)一個控制脈沖,它就轉一步,再發(fā)一個脈沖,它會再轉一步。兩個脈沖的間隔越短,步進電機就轉得越快。調(diào)整單片機發(fā)出的脈沖頻率,就可以對步進電機進行調(diào)速。
(3) 電機選擇
方案1:直流電機。
直流電機又分為直流無刷電機和直流有刷電機,是最早實現(xiàn)調(diào)速的電動機,其優(yōu)點是有良好的線性調(diào)速特性,簡單的控制性能,高的效率,但其數(shù)字控制方面較難把握。
方案2:步進電機。
步進電機是多種機電設備中被廣泛應用的一種電機,它主要由定子和轉子構成。定子的主要結構是繞組。三相、四相、五相步進電機分別有三個、四個、五個繞組,其它以此類推。繞組按一定的通電順序工作著,這個通電順序我們稱為步進電機的“相序”。轉子的主要結構是磁性轉軸,當定子中的繞組在相序信號作用下,有規(guī)律的通電、斷電工作時,轉子周圍就會有一個按此規(guī)律變化的電磁場,因此一個按規(guī)律變化的電磁力就會作用在因此轉子上,使轉子發(fā)生轉動。它將電脈沖信號轉換成角位移,即給一個脈沖信號,步進電動機就轉動一個角度,因此非常適合于單片機控制。另外步進電機還有動態(tài)響應快易于起停,易于正反速及變速等優(yōu)點。
綜合上面所述,為易于單片機控制,本設計采用方案2。
(4) 驅動方式的選擇
我們知道步進電動機使用脈沖電源工作。開關管是按照控制脈沖的規(guī)律“開”和“關”,使直流電源以脈沖方式向繞組L供電,這一過程我們稱它為步進電動機的驅動。
①單電壓驅動 單電壓驅動是指電動機繞組在工作時,只用一個電壓電源對繞組供電。它的特點是電路簡單,一般只用于小功率步進電動機的驅動。
②雙電壓驅動 雙電壓驅動是用提高電壓的方法使繞組中的電流上升波形變陡。它的基本思路是在低頻段使用較低的電壓驅動,在高頻段使用較高的電壓驅動。這種驅動方法在低頻段具有單電壓驅動的特點,在高頻段具有良好的高頻性能。
本設計考慮到變壓器,因采用了單電壓驅動.
(5) SST89E58單片機
SST89E58是一個低電壓,高性能CMOS 8位單片機,片內(nèi)含32k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數(shù)據(jù)存儲器(RAM)。該器件采用ATMEL公司的高密度、非易失性存儲技術生產(chǎn),兼容標準MCS-51指令系統(tǒng)。由于片內(nèi)置通用8位中央處理器和Flash存儲單元,功能強大的SST89E58單片機可為您提供許多較復雜系統(tǒng)控制應用場合。
(6) 對于本系統(tǒng)開發(fā)來說存在下列很明顯的優(yōu)點
① 內(nèi)部含F(xiàn)LASH存儲器。因此在系統(tǒng)開發(fā)過程中可以十分容易進行程序的修改,這就大大縮短了系統(tǒng)的開發(fā)周期。同時,在系統(tǒng)工作過程中,能有效的保存一些數(shù)據(jù)信息,即使外界電源損壞也不影響到信息的保存。
② 和80C51插座兼容。SST89E58單片機的引腳是和80C51一樣的,所以,當用SST89E58單片機取代80C52時,可以直接進行代換。
③ 時鐘方式。SST89E58單片機采用靜態(tài)時鐘方式,所以可以節(jié)省電能,這對于降低便攜式產(chǎn)品的功耗十分有用。
④ 編程亦無廢品產(chǎn)生。一般的OTP產(chǎn)品,一旦錯誤編程就成了廢品。而89C51單片機內(nèi)部采用了Flash存儲器,所以,錯誤編程之后仍可以重新編程直到正確為止,故不存在廢品。
⑤ 可以進行反復系統(tǒng)試驗。用SST89E58單片機設計的系統(tǒng),可以反復進行系統(tǒng)試驗,每次試驗可以編入不同的程序,這樣可以保證用戶的系統(tǒng)設計達到最優(yōu)。而且隨的需要和發(fā)展,還可以進行修改,使系統(tǒng)能不斷追隨新的要求。
⑥ SST89E58是用靜態(tài)邏輯來設計的,其工作頻率可下降到0HZ,并提供兩種可用軟件來選擇的省電方式——空閑方式(Idle Mode)和掉電方式(Power Down Mode)。在空閑方式中,CPU停止工作,而RAM、定時器/計數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。在掉電方式中,片內(nèi)振蕩器停止工作,由于時間被“凍結”,使一切功能都暫停,只保存片內(nèi)RAM中的內(nèi)容,直到下一次硬件復位為止。
(7) LM324是四運放集成電路,它采用14腳雙列直插塑料封裝。它的內(nèi)部包含四組形式完全相同的運算放大器,除電源共用外,四組運放相互獨立。每一組運算放大器可用圖1所示的符號來表示,它有5個引出腳,其中“+”、“-”為兩個信號輸入端,“V+”、“V-”為正、負電源端,“Vo”為輸出端。兩個信號輸入端中,Vi-(-)為反相輸入端,表示運放輸出端Vo的信號與該輸入端的位相反;Vi+(+)為同相輸入端,表示運放輸出端Vo的信號與該輸入端的相位相同。
由于LM324四運放電路具有電源電壓范圍寬,靜態(tài)功耗小,可單電源使用,價格低廉等優(yōu)點,因此被廣泛應用在各種電路中。
(8) 主要應用
① 反相交流放大器
此放大器可代替晶體管進行交流放大,可用于擴音機前置放大等。電路無需調(diào)試。放大器采用單電源供電,由R1、R2組成1/2V+偏置,C1是消振電容。放大器電壓放大倍數(shù)Av僅由外接電阻Ri、Rf決定:Av=-Rf/Ri。負號表示輸出信號與輸入信號相位相反。按圖中所給數(shù)值,Av=-10。此電路輸入電阻為Ri。一般情況下先取Ri與信號源內(nèi)阻相等,然后根據(jù)要求的放大倍數(shù)在選定Rf。Co和Ci為耦合電容。
② 同相交流放大器
同相交流放大器的特點是輸入阻抗高。其中的R1、R2組成1/2V+分壓電路,通過R3對運放進行偏置。 電路的電壓放大倍數(shù)Av也僅由外接電阻決定:Av=1+Rf/R4,電路輸入電阻為R3。R4的阻值范圍為幾千歐姆到幾十千歐姆。
③ 交流信號三分配放大器
此電路可將輸入交流信號分成三路輸出,三路信號可分別用作指示、控制、分析等用途。而對信號源的影響極小。因運放Ai輸入電阻高,運放A1-A4均把輸出端直接接到負輸入端,信號輸入至正輸入端,相當于同相放大狀態(tài)時Rf=0的情況,故各放大器電壓放大倍數(shù)均為1,與分立元件組成的射極跟隨器作用相同R1、R2組成1/2V+偏置,靜態(tài)時A1輸出端電壓為1/2V+,故運放A2-A4輸出端亦為1/2V+通過輸入輸出電容的隔直作用,取出交流信號。
④ 有源帶通濾波器
許多音響裝置的頻譜分析器均使用此電路作為帶通濾波器,以選出各個不同頻段的信號,在顯示上利用發(fā)光二極管點亮的多少來指示出信號幅度的大小。這種有源帶通濾波器的中心頻率 ,在中心頻率fo處的電壓增益Ao=B3/2B1,品質因數(shù) ,3dB帶寬B=1/(п*R3*C)也可根據(jù)設計確定的Q、fo、Ao值,去求出帶通濾波器的各元件參數(shù)值。R1=Q/(2пfoAoC),R2=Q/((2Q2-Ao)*2пfoC),R3=2Q/(2пfoC)。上式中,當fo=1KHz時,C取0.01Uf。此電路亦可用于一般的選頻放大。此電路亦可使用單電源,只需將運放正輸入端偏置在1/2V+并將電阻R2下端接到運放正輸入端既可。
⑤ 比較器
當去掉運放的反饋電阻時,或者說反饋電阻趨于無窮大時(即開環(huán)狀態(tài)),理論上認為運放的開環(huán)放大倍數(shù)也為無窮大(實際上是很大,如LM324運放開環(huán)放大倍數(shù)為100dB,既10萬倍)。此時運放便形成一個電壓比較器,其輸出如不是高電平(V+),就是低電平(V-或接地)。當正輸入端電壓高于負輸入端電壓時,運放輸出低電平。
圖中使用兩個運放組成一個電壓上下限比較器,電阻R1、R1ˊ組成分壓電路,為運放A1設定比較電平U1;電阻R2、R2ˊ組成分壓電路,為運放A2設定比較電平U2。輸入電壓U1同時加到A1的正輸入端和A2的負輸入端之間,當Ui >U1時,運放A1輸出高電平;當Ui U2,則當輸入電壓Ui越出[U2,U1]區(qū)間范圍時,LED點亮,這便是一個電壓雙限指示器。 若選擇U2 > U1,則當輸入電壓在[U2,U1]區(qū)間范圍時,LED點亮,這是一個“窗口”電壓指示器。 此電路與各類傳感器配合使用,稍加變通,便可用于各種物理量的雙限檢測、短路、斷路報警等。
⑥ 單穩(wěn)態(tài)觸發(fā)器
此電路可用在一些自動控制系統(tǒng)中。電阻R1、R2組成分壓電路,為運放A1負輸入端提供偏置電壓U1,作為比較電壓基準。靜態(tài)時,電容C1充電完畢,運放A1正輸入端電壓U2等于電源電壓V+,故A1輸出高電平。當輸入電壓Ui變?yōu)榈碗娖綍r,二極管D1導通,電容C1通過D1迅速放電,使U2突然降至地電平,此時因為U1>U2,故運放A1輸出低電平。當輸入電壓變高時,二極管D1截止,電源電壓R3給電容C1充電,當C1上充電電壓大于U1時,既U2>U1,A1輸出又變?yōu)楦唠娖剑瑥亩Y束了一次單穩(wěn)觸發(fā)。顯然,提高U1或增大R2、C1的數(shù)值,都會使單穩(wěn)延時時間增長,反之則縮短。如果將二極管D1去掉,則此電路具有加電延時功能。剛加電時,U1>U2,運放A1輸出低電平,隨著電容C1不斷充電,U2不斷升高,當U2>U1時,A1輸出才變?yōu)楦唠娖健?
3.2.2 軟件設計
1. 主程序總流程圖
在設計系統(tǒng)的總流程中.比較簡單. 但在子程序相當復雜.程序總圖如圖3.8所示:
2. 主程序設計
以往,人們研制單片機應用系統(tǒng),幾乎都是使用匯編語言編寫應用程序。經(jīng)管匯編語言具有能夠直接操作硬件、指令執(zhí)行速度快等優(yōu)點,但匯編語言不是結構化的程序設計語言,用它編寫的程序可讀性差,不便于資料的交流和移植,調(diào)試也比較麻煩;而C語言恰好克服了匯編語言的缺點,而且又具有匯編語言的優(yōu)點。故本系統(tǒng)采用KEIL 51軟件用C語言進行的程序設計[13]。
系統(tǒng)上電后,對設備進行初始化,之后便進入判斷測試狀態(tài)還是運行狀態(tài),如果是運行狀態(tài)便進行波特率設置,如果是測試狀態(tài),便顯示當前波特率,如果改變波特率,則進行發(fā)送數(shù)據(jù),重新判斷是運行還是測試狀態(tài)。如果運行的是波特率設置,則之后進行鍵盤設置,可以對通道進行選擇,選擇后邊進行A/D轉換狀態(tài),之后發(fā)送數(shù)據(jù),系統(tǒng)在進行判斷是測試狀態(tài)還是運行狀態(tài)。如果鍵盤處理的是定時器,則改變定時常數(shù),然后進行A/D數(shù)據(jù)轉換,之后發(fā)送數(shù)據(jù),又進行判斷是測試狀態(tài)還是運行狀態(tài)[14]。
圖3.8 主程序流程圖
對與一個開環(huán)控制系統(tǒng)來說,最重要的就是它的算法的選擇,然后就是針對算法的編程.
(1) 控制算法的論證
方案1: 逐點比較直線插補算法[17]
逐點比較法是數(shù)控機床中廣泛采用的一種軟件插補算法,該方法普遍用于二坐標數(shù)控加工系統(tǒng).所謂逐點比較法就是在繪圖過程中,繪圖筆每移動一步都要與理想線路進行比較,然后決定下一步的移動方向用步步修正的方法畫出所期望的線段. 逐點比較法的基本原理是斜率比較法.即線段的起點與筆當前的位置構成的直線斜率與要繪線段斜率進行比較.當前者斜率小于后者斜率時,筆應該向Y方向走一步.當前者斜率大于后者斜率時,筆應該向X方向走一步.
如圖3.9所示,OA為欲畫的路線,M1為畫筆開始所在的位置,當OA的斜率小欲畫線段的斜率時,OA向+Y方向移動一步,到達M2點.然后再用線段OM2的斜率與OA的斜率進行比較,當OM2的斜率大欲畫線段OA斜率時,OA向+X方向移動一步。
圖3.9 逐點比較直線插補算法
方案2:逐點比較圓弧插補算法[18].
圓弧軌跡插補不同于直線,一段圓弧可能跨越幾個象限。每當一段圓弧跨過象限后,原來的偏差計算、坐標計算式必須進行修改。在插補過程中每走一步必須檢查是否會跨越象限,一旦查到跨越象限,就要根據(jù)順圓或逆圓改進進入該象限的一套計算方法。傳統(tǒng)的過象限處理是采用查表的方法,即用舊的標志字通過查表取得新標志字,替換舊標志字,當再次進行插補時,根據(jù)新的標志字進行插補和進給。查表法處理起來相當麻煩。符號判別法是根據(jù)動點坐標本身位置的變化自動轉換運算和判別,自動轉入其他象限,改變偏差計算、坐標計算式。
方案3:數(shù)學建模法[21]。
數(shù)學建模法是指用數(shù)學方法,運用幾何知識(極坐標)把圓上的點和兩個電機所在的位置聯(lián)系起來,通過相關計算把圓上的點的坐標用數(shù)學表達式表示出來,并轉換成電機所要轉動的偏移量,最后把偏移量轉化為電機所要轉的速度。此方法,計算復雜,但所得數(shù)據(jù)較為準確,只要編程正確,用電機所畫出來的線就不會編差大。
上述幾種方法我們都嘗試編程,但在調(diào)試過程中,前兩種方法的誤差比較大.達不到比賽的要求,最后我們只能采用方案3。采用方案3的算法相當復雜, 而且要經(jīng)過了無數(shù)次調(diào)試.
(2) 直線的計算和編程
從圖3.10我們可以看到假設原點坐標X0,Y0,要達到的坐標點X1,Y1
圖3.10 數(shù)學建模算法
那么到坐標點的距離L
我們沒有采用Y=KX+B的直線方程,而是把L的長度分為COUNT_L等分
我們計算出每一個增量INC_X,INC_Y
我們假設一個變量i,i的范圍從1----COUNT_L
所以每走一步的坐標值
畫直線函數(shù)的流程圖如圖3.11
圖3.11 直線函數(shù)的流程圖
部分程序如下:
void draw_line(float x0,float y0,float x1,float y1)
{
for(i=1; i<=count_ll; i++)
{xx=inc_x*i+x0 ; xxx=xx ;
yy=inc_y*i+y0 ;
L_l=sqrt((xx+15)*(xx+15)+(115-yy)*(115-yy)) ;
L_r=sqrt((95-xx)*(95-xx)+(115-yy)*(115-yy)) ;
inc_Ll=L_l-L_l0 ;
inc_Lr=L_r-L_r0 ;
count_l=inc_Ll/step_l+(inc_Ll>=0 ?0.5:-0.5) ;
count_r=inc_Lr/step_r+(inc_Lr>=0 ?0.5:-0.5) ;
drive_motor(count_l,count_r) ;
L_r0=L_r ;
}
我們可以看到畫直線的程序的復雜性.
(3) 圓的的計算和編程[20]
在圓弧的編程中,它的算法比直線的算法更復雜.從圖我們可以看到假設圓心坐標X0,Y0,半徑為R
圓上的一點坐標為XQ,YQ
XQ=X0+R
YQ=Y0
而我們把圓分成360度,即設一個變量,的范圍從1到360,每走一小步的坐標值XX,YY
那么它的力臂LL,LR
LL=
LR=
而原點坐標的力臂LL0,LR0
LL0=
LR0=
因此力臂的增量為LL,LR
△LL= LL- LL0
△LR= LR- LR0
因我們的步進不同,所以它的增量分別為0.026,0.026,最后才計算出要給的脈沖數(shù)COUNT_L,COUNT_R
畫圓函數(shù)的流程圖如圖3.12所示
圖3.12 畫圓函數(shù)的流程圖
部分程序程序如下:
/**畫圓*********************/
void draw_circularity(float rr,float x0,float y0)
{
for(i=1;i<=360;i++)
{xx=rr*cos(pai*i/180)+x0 ;
xxx=xx;
yy=rr*sin(pai*i/180)+y0 ;
L_l=sqrt((xx+15)*(xx+15)+(115-yy)*(115-yy)) ;
L_r=sqrt((95-xx)*(95-xx)+(115-yy)*(115-yy)) ;
}
}
(4). 坐標的顯示和編程
坐標的顯示和編程就是把每走一步走的距離顯示在液晶上[15],通過調(diào)用液晶子程序,把變量寫入。
液晶使用的函數(shù)如下[19]:
void Init_LCD(void);
void PutStr_LCD(unsigned char *str);
void PutStrXY_LCD(unsigned char x, unsigned char y, unsigned char *str);
void PutIntXY_LCD(unsigned char x, unsigned char y, unsigned Num);
void PutNumXY_LCD(unsigned char x, unsigned char y, unsigned Num, unsigned char Len);
第4章 系統(tǒng)測試
4.1 硬件測試
對懸掛運動控制系統(tǒng)各單元的測試包括最小系統(tǒng)模塊測試、LCD測試、鍵盤測試、電機驅動測試。
測試內(nèi)容
測試儀器
測試方法
測試結果
最小系統(tǒng)測試
萬用表
實測
工作正常
LCD測試
萬用表
實測
顯示正常
鍵盤測試
萬用表
實測
輸入正常
電機驅動測試
萬用表
實測
輸出正常
4.2 軟件測試
4.2.1 單元測試
白盒測試
白盒測試是一種透明的測試技術,它包括邏輯覆蓋、基本路徑、循環(huán)覆蓋等幾種典型的白盒測試技術,它是以程序的內(nèi)部邏輯結構為基礎來設計測試用例的[16],其原則是:
保證程序中每一個獨立的路徑至少執(zhí)行一次。
保證所有判定的每一個分支至少執(zhí)行一次。
保證每個判定表達式中每個條件的所有可能結果至少執(zhí)行一次。
保證每一循環(huán)都在邊界條件和一般條件至少各執(zhí)行一次。
保證所有內(nèi)部數(shù)據(jù)結構的有效性。
我選擇基本路徑測試方法對我的軟件設計部分的程序進行測試。基本路徑測試對于不太復雜的程序進行窮盡測試往往是不可能的?;韭窂綔y試方法就可以較好的解決這類問題,其主要思想是根據(jù)軟件詳細設計的過程性描述或源代碼中的控制流程求出程序的環(huán)形復雜性度量,然后用此度量確定程序的基本路徑集合,并由此導出一組測試用例來覆蓋該集合中的每一個獨立的路徑,從而可以保證每個語句至少執(zhí)行一次。
以下是采用基本路徑測試法對畫直線過程為例進行的測試
1. 畫直線過程的流程圖為圖3.14,畫直線過程的流圖為圖4-2-1所示
圖4.1 畫直線過程的流圖
2. 根據(jù)流圖確定環(huán)形復雜度量V(G)??梢杂萌N方法求出V(G)的值:
1)V(G)=E-N+2=10-10+2=2,其中E為流圖中的邊數(shù),N為結點數(shù)。
2)V(G)=2(個區(qū)域)
3)V(G)=P+1=1+1=2,其中P為謂詞結點的個數(shù)。在圖4-2-1中,僅結點6是謂詞結點。
3. 確定基本路徑集合(即獨立路徑集合)。一條獨立路徑是指,和其他的獨立路徑相比,至少引入一個新處理語句或一個新判斷的程序通路。在(2)中求出的V(G)值正好等于該程序路徑的條數(shù)。于是可以確定2條獨立的路徑:
路徑1:1-2-3-4-5-6-7-8-9-6-10
路徑2:1-2-3-4-5-6-7-8-9-6…
其中路徑2后的省略號表示這些路徑的其余部分已無關緊要。
(4)為每一條獨立路徑各設計一組測試用例,以便強迫程序沿著該路至少執(zhí)行一次。
(1) 路徑1的測試用例:
i=有效的步數(shù)
期望結果:根據(jù)輸入的坐標值,電機帶動重物畫直線。
(2) 路徑2的測試用例:
i=k,k>count_l
期望結果:直線完成,電機停止轉動。
以上是對畫直線過程的測試,其它過程用同種方法進行測試,測試結果均為正常。
4.2.2 功能測試
功能測試采用黑盒測試方法:
黑盒測試主要是測試軟件是否滿足功能需求。黑盒測試主要測試的錯誤類型有:
1. 不正確或遺漏的功能。
2. 接口錯誤。
3. 性能錯誤。
4. 數(shù)據(jù)結構或外部數(shù)據(jù)訪問錯誤。
5. 初始化或終止條件錯誤等。
黑盒測試主要包括等價類的劃分、邊界值分析、錯誤推測、組合數(shù)據(jù)測試等幾種設計測試用例的方法。
對懸掛運系統(tǒng)采用等價類劃分方法進行測試,以下是用等價類劃分法設計測試用例,來測試程序畫圓過程,測試過程如下:
(1) 劃分等價類并編號。等價類劃分的結果如表4.1所示,即劃分成3個有效等價類和5個元效等價類。
表4.1 輸入坐標值的等價類劃分
輸入有效等價類
有效等價類
無效等價類
坐標輸入類型及長度
①整數(shù)部分為兩位的浮點
②整數(shù)部分超出兩位的數(shù)
X軸坐標取值范圍
③在0~80之間
④小于0
⑤大于80
Y軸坐標取值范圍
⑥在0~99之間
⑦小于0
⑧大于100
(2) 設計測試用例,以便覆蓋所有的有效等價類。在表4-1中列出3個有效等價類;覆蓋的編號分別為①③⑥,設計的測試用例如下:
測試數(shù)據(jù) 期望結果 覆蓋的有效等價類
50 輸入有效 ① ③ ⑥
c. 為每一個無效等價類設計一個測試用例,設計結果如下:
測試數(shù)據(jù) 期望結果 覆蓋的無效等價類
423 輸入無效 ②
-1 輸入無效 ④
95 輸入無效 ⑤
-3 輸入無效 ⑦
110 輸入無效 ⑧
4.2.3 集成測試
為了確定系統(tǒng)與題目要求的符合程度,我們對系統(tǒng)中的關鍵部分進行了測試。位置測試如下:
表4.1 直線測試表
原點坐標(X,Y)
輸入坐標(X,Y)
實際測量距離值
誤差值
運行時間
(10cm,10cm)
(40cm, 50cm)
39cm,49.2cm)
0.8cm-2cm
20S
(19cm,24cm)
(34cm,35cm)
(33cm,34.5cm)
1cm-2-cm
2S
表4.2 圓弧測試表
圓點坐標(X,Y)
實際測量半徑值
誤差值
運行時間
(40cm,50cm)
23~27cm
+-2cm
150S
4.2.4 測試結果
經(jīng)過以上測試后,各模塊都能正常工作,輸入模塊可以正確的輸入數(shù)據(jù),顯示模塊可以正確的顯示信息,驅動模塊可以正確的驅動電機??梢酝ㄟ^鍵盤輸入,使單片機帶動重物,繪制出規(guī)定的圖形。
結 論
本文介紹的懸掛運動控制系統(tǒng)是基于單片機的控制系統(tǒng),集輸入、顯示、對電機的驅動于一身,另外還增加了與上位機的通信。顯示出了方便操作,功能完善、高集成度等特點。
本系統(tǒng)另一大特點的大部分功能由程序實現(xiàn),節(jié)省了很多硬件,雖然算法和程序都非常復雜,但它省了很多硬件電路.因為現(xiàn)在提倡”硬件變?yōu)檐浖睂ξ覀兊木幊棠芰τ泻艽蟮拇龠M。在本系統(tǒng)設計中,我們完成了全部基本要求,并完成了發(fā)揮部分的第一條。
經(jīng)過詳細的測試,各模塊都能正常工作,輸入模塊可以正確的輸入數(shù)據(jù),顯示模塊可以正確的顯示信息,驅動模塊可以正確的驅動電機??梢酝ㄟ^鍵盤輸入,使單片機帶動重物,繪制出規(guī)定的圖形。
最終完成的系統(tǒng)的運行情況,反映出了本系統(tǒng)方案正確、實現(xiàn)方法可行,運行效果好。
后 記
短短二個月的畢業(yè)設計已經(jīng)結束了,回顧這段時光,我身有感觸,它不僅是我所學知識的一次全面的考查而且也是從理論知識到實踐操作的一次大的深化。
大學三年多的時間都是在學習基礎知識,并未真正系統(tǒng)地去應用和實踐。但是經(jīng)過這次畢業(yè)設計,我接觸到了更多平時沒有接觸到的儀器設備、元器件,及時地彌補了這方面知識的不足,深刻體會到了所學理論知識的重要性。知識掌握得越多,設計得就更全面、更順利、更好。在此我要感謝四年來教過我的所有老師,沒有你們的精心教導,就沒有今天將要畢業(yè)的我。
在畢業(yè)設計中,老師不僅使我養(yǎng)成了嚴肅認真和實事求是的科學態(tài)度,同時也培養(yǎng)了我吃苦耐勞的精神以及相互合作的團隊精神,同學之間的友誼也充分的在畢業(yè)設計當中更加深厚了。我不僅學到了很多的與本專業(yè)相關知識,而且加深了所學課程知識,深刻感受到了知識的偉大和工作的快樂。在具體的設計中,我遇到了一些困難,通過上網(wǎng)和圖書館查到了許多相關的知識,經(jīng)過自己的仔細分析和小組成員一起討論研究,并向導師請教,最終不只解決了所遇到的困難,而且學到了很多的知識,擴大了知識面。
從最初的茫然,到現(xiàn)在小有成果;從最初的無從下手,到現(xiàn)在的信心百倍;離不開導師耐心的指導和小組成員的共同努力。畢業(yè)設計到了尾聲,無論是知識的收獲,還是同學友誼和師生情誼的加深,使我更加有信心面對以后的工作。在這里我個人非常感謝孫海老師給予我和小組成員的精心指導和幫助。
參考文獻
[1] 吳秀清.微型計算機原理與接口技術[M].北京:中國科學技術大學出版社,2002.7. 1—60.
[2] 孫永浩.MCS-51 單片機開發(fā)與應用指南[M]. 哈爾濱:黑龍江科學技術出版社,1989.1. 23—80.
[3] 宋文緒.自動檢測技術[M].北京: 冶金工業(yè)出版社,2000.2. 112—135.
[4] 孫和平.單片微機原理與接口技術[M].北京:冶金工出版社,2003.6. 138—200.
[5] 李建忠.單片機原理及應用[M].西安:西安電子科技大學出版社,2001.9. 37-79.
[6] 求實科技.單片機典型模塊設計實例導航[M].北京:人民郵電出版社,2004.3 44—67.
[7] 裘雪紅.微型計算機原理及接口技術[M].西安:西安電子科技
收藏