懸掛運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)
懸掛運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì),懸掛,吊掛,運(yùn)動(dòng),控制系統(tǒng),設(shè)計(jì)
介紹AT89C52
功能特性概述:
AT89C52是美國ATMEL公司生產(chǎn)的低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的只讀程序存儲(chǔ)器(PEROM)和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),與標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及8058產(chǎn)品引腳兼容,片內(nèi)置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大AT89C52單片機(jī)適合于許多較為復(fù)雜控制應(yīng)用場(chǎng)合。
AT89C52提供以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash閃速存儲(chǔ)器,256字節(jié)內(nèi)部RAM,32個(gè)I/O口線,3個(gè)16位定時(shí)/計(jì)數(shù)器,一個(gè)6向量兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)振蕩器及時(shí)鐘電路。同時(shí),AT89C52可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑方式停止CPU的工作,但允許RAM,定時(shí)/計(jì)數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器停止工作并禁止其它所有部件工作直到下一個(gè)硬件復(fù)位。
引腳功能說明
Vcc:電源電壓
GND:地
P0口:P0口是一組8位漏極開路型雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),每位能吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯門電路,對(duì)端口P0寫“1”時(shí),可作為高陰抗輸入端用。
在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。
在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。
P1口:P1是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1的輸出緩沖可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。
與AT89C51不同之處是,P1.0和P1.1還可分別作為定時(shí)/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和輸入(P1.1/T2EX)。
Flash編程和程序校驗(yàn)期間,P1接收低收入位地址。
P2口:P2是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口,P2的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口P2寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。
在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX@DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX@RI指令)時(shí),P2口輸出鎖存器的內(nèi)容。
Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。
P3口:P3口是一組帶有內(nèi)部上拉電阻的8位雙向I/O口。P3口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部低的P3口將用上拉電阻輸出電流(IIL)。
P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如下所示:
P3.0 RXD(串行輸入口)
P3.1 TXD(串行輸出口)
P3.2 (外中斷0)
P3.3 (外中斷1)
P3.4 T0 (定時(shí)/計(jì)數(shù)器0)
P3.5 T1 (定時(shí)/計(jì)數(shù)器1)
P3.6 (外部數(shù)據(jù)存儲(chǔ)器寫選通)
P3.7 (外部數(shù)據(jù)存儲(chǔ)器讀選通)
此外,P3口還接收一些用于Flash閃速存儲(chǔ)器編和程序校驗(yàn)的控制信號(hào)。
RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將使單片機(jī)復(fù)位。
ALE/:當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。
對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖(PROG)。
如有必要,可通過支特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。
:程序儲(chǔ)存允許()輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次有效,即輸出兩個(gè)脈沖。在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次信號(hào)。
/VPP:外部訪問允許。欲使CPU公訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端態(tài)。
如EA端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。
Flash存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該項(xiàng)器件是使用12V編程電壓Vpp。
XTAL1:振蕩器反相放大器的及內(nèi)部時(shí)鐘發(fā)生器的輸入端。
XTAL2;振蕩器反相放大器的輸入出端。
特殊功能寄存器:
在AT89C52片內(nèi)存儲(chǔ)器中,80H-FFH共128個(gè)單無為特殊功能寄存器(SFR)。
并非所有的地址都被定義,從80H-FFH共128個(gè)字節(jié)只有一部分被定義,還有相當(dāng)一部分沒有定義。對(duì)沒有定義的單元讀寫將是無效的,讀出的數(shù)值將不確定,而寫入的數(shù)據(jù)也將丟失。
不應(yīng)將數(shù)據(jù)“1”寫入未定義的單元,由于這些單元在將來的產(chǎn)品中可能賦予新的功能,在這種情況下,復(fù)位后這些單元數(shù)值總是“0”。
AT89C52除了與AT89C51所有的定時(shí)/計(jì)數(shù)器0和定時(shí)/計(jì)數(shù)器1外,還增加了一個(gè)定時(shí)/計(jì)數(shù)器2。定時(shí)/計(jì)數(shù)器2的控制和狀態(tài)位位于T2CON,T2MOD,寄存器對(duì)(RCA02H、RCAP2L)是定時(shí)器2在16位捕獲方式或16位自動(dòng)重裝載方式下的捕獲/自動(dòng)重裝載寄存器。
中斷寄存器:
AT89C52有6個(gè)中斷源,2個(gè)中斷優(yōu)先級(jí),IE寄存器控制各中斷位,IP寄存器中6個(gè)中斷源的每一個(gè)可定為2個(gè)優(yōu)先級(jí)。
數(shù)據(jù)存儲(chǔ)器:
AT89C52有256個(gè)字節(jié)的內(nèi)部RAM,80H-FFH高128個(gè)字節(jié)與特殊功能寄存器(SFR)地址是重疊的,也就是高128字節(jié)的RAM和特殊功能寄存器的地址是相同的,但物理上它們是分開的。
當(dāng)一條指令訪問7FH以上的內(nèi)部地址單元時(shí),指令中使用的尋址方式是不同的,也即尋址方式塊是訪問高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ū)使用。
定時(shí)器0和定時(shí)器1:
AT89C52的定時(shí)器0和定時(shí)器1的工作方式與AT89C51相同。
定時(shí)器2:
定時(shí)器2是一個(gè)16位定時(shí)/計(jì)數(shù)器。它既或當(dāng)定時(shí)器使用,也可作為外部事件計(jì)數(shù)器使用,其工作方式由特殊功能寄存器T2CON的C/T2位選擇。定時(shí)器2有三種工作方式:捕獲方式,自動(dòng)重裝載(向上或向下計(jì)數(shù))方式和波物率發(fā)生器方式,工作方式由T2CON的控制位來選擇。
定時(shí)器2由兩個(gè)8位寄存器TH2和TL2組成,在定時(shí)器工作方式中,每個(gè)機(jī)器周期TL2寄存器的值加1,由于一個(gè)機(jī)器周期由12個(gè)振蕩時(shí)鐘構(gòu)成,因此,計(jì)數(shù)速率為振蕩頻率1/12。
在計(jì)數(shù)工作方式時(shí),當(dāng)T2引腳上外部輸入信號(hào)產(chǎn)生由1至0的下降沿時(shí),寄存器的值加工能力,在這種工作方式下,每個(gè)機(jī)器周期的5SP2期間,對(duì)外部輸入進(jìn)行采樣。若在第一個(gè)機(jī)器周期中采到的值為了,而在下一個(gè)機(jī)器周期中采到的值為0,則在緊跟著的下一個(gè)周期的S3P1期間寄存器加工能力。由于識(shí)別1至誠的跳變需要2個(gè)機(jī)器周期(24個(gè)振蕩周期),因此,最高計(jì)數(shù)速率為振蕩頻率的1/24。為確保采樣的正確性,要求輸入的電平在變化前至少保持一個(gè)完整周期的時(shí)間,以保證輸入信號(hào)到少被采樣一次。
出 自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大學(xué)
畢業(yè)設(shè)計(jì)外文資料翻譯
學(xué) 院: 計(jì)算機(jī)科學(xué)技術(shù)學(xué)院
專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)(工)
班 級(jí):
學(xué) 號(hào):
姓 名:
指導(dǎo)教師:
二○○六 年 五 月 十六 日
譯文題目: 介紹AT98C52
原文題目: Introduce of AT89C52
原文出處: http://www.scmgroup.com
47
- -
目 錄
第1章 緒論 1
1.1 課題來源 1
1.2 課題目的 1
1.3 課題意義 2
1.4 應(yīng)解決的主要問題 2
1.5 技術(shù)要求 2
第2章 方案論證 4
2.1 可行性研究 4
2.1.1 經(jīng)濟(jì)可行性研究 4
2.1.2 技術(shù)可行性研究 4
2.1.3 方案提出 5
2.1.4 方案分析 5
2.1.3 方案確定 7
2.2 需求分析 7
第3章 過程論述 8
3.1 概要設(shè)計(jì) 8
3.1.1 系統(tǒng)功能設(shè)計(jì) 8
3.1.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì) 8
3.2 詳細(xì)設(shè)計(jì) 9
3.2.1 硬件設(shè)計(jì) 9
3.2.2 軟件設(shè)計(jì) 19
第4章 系統(tǒng)測(cè)試 28
4.1 硬件測(cè)試 28
4.2 軟件測(cè)試 28
4.2.1 單元測(cè)試 28
4.2.2 功能測(cè)試 30
4.2.3 集成測(cè)試 31
4.2.4 測(cè)試結(jié)果 31
結(jié) 論 32
后 記 33
參考文獻(xiàn) 34
附 錄 35
第1章 緒論
1.1 課題來源
本畢業(yè)設(shè)計(jì)課題是屬于教師擬定性課題,主要是研究基于單片機(jī)的對(duì)步進(jìn)電機(jī)的有效控制。步進(jìn)電機(jī)是一種能將數(shù)字輸入脈沖轉(zhuǎn)換成旋轉(zhuǎn)或直線增量運(yùn)動(dòng)的電磁執(zhí)行元件,每輸入一個(gè)脈沖電機(jī)轉(zhuǎn)軸步進(jìn)一個(gè)步距角增量。電機(jī)總的回轉(zhuǎn)角與輸入脈沖數(shù)成正比例,相應(yīng)的轉(zhuǎn)速取決于輸入脈沖頻率。?
???步進(jìn)電機(jī)是機(jī)電一體化產(chǎn)品中關(guān)鍵部件之一,通常被用作定位控制和定速控制。步進(jìn)電機(jī)慣量低、定位精度高、無累積誤差、控制簡單等特點(diǎn)。廣泛應(yīng)用于機(jī)電一體化產(chǎn)品中,如:數(shù)控機(jī)床、包裝機(jī)械、計(jì)算機(jī)外圍設(shè)備、復(fù)印機(jī)、傳真機(jī)等。?
???選擇步進(jìn)電機(jī)時(shí),首先要保證步進(jìn)電機(jī)的輸出功率大于負(fù)載所需的功率。而在選用功率步進(jìn)電機(jī)時(shí),首先要計(jì)算機(jī)械系統(tǒng)的負(fù)載轉(zhuǎn)矩,電機(jī)的矩頻特性能滿足機(jī)械負(fù)載并有一定的余量保證其運(yùn)行可靠。在實(shí)際工作過程中,各種頻率下的負(fù)載力矩必須在矩頻特性曲線的范圍內(nèi)。一般地說最大靜力矩Mjmax大的電機(jī),負(fù)載力矩大[1 ]。?
???選擇步進(jìn)電機(jī)時(shí),應(yīng)使步距角和機(jī)械系統(tǒng)匹配,這樣可以得到機(jī)床所需的脈沖當(dāng)量。在機(jī)械傳動(dòng)過程中為了使得有更小的脈沖當(dāng)量,一是可以改變絲桿的導(dǎo)程,二是可以通過步進(jìn)電機(jī)的細(xì)分驅(qū)動(dòng)來完成。但細(xì)分只能改變其分辨率,不改變其精度。精度是由電機(jī)的固有特性所決定。?
???選擇功率步進(jìn)電機(jī)時(shí),應(yīng)當(dāng)估算機(jī)械負(fù)載的負(fù)載慣量和機(jī)床要求的啟動(dòng)頻率,使之與步進(jìn)電機(jī)的慣性頻率特性相匹配還有一定的余量,使之最高速連續(xù)工作頻率能滿足機(jī)床快速移動(dòng)的需要。
基于單片機(jī)的懸掛運(yùn)動(dòng)控制系統(tǒng),具有硬件電路結(jié)構(gòu)簡單,精確度高,抗干擾性強(qiáng)等優(yōu)點(diǎn)。
1.2 課題目的
培養(yǎng)綜合運(yùn)用四年大學(xué)所學(xué)知識(shí)去分析問題和解決實(shí)際問題的能力。在實(shí)踐中檢驗(yàn)所學(xué)知識(shí),從而加強(qiáng)理論與實(shí)踐的相結(jié)合。 體驗(yàn)一個(gè)科研項(xiàng)目開發(fā)的全過程,學(xué)會(huì)單片機(jī)開發(fā)應(yīng)用方法,鍛煉應(yīng)用能力,動(dòng)手能力。本課題設(shè)計(jì)是具有一定難度的基于單片機(jī)的應(yīng)用系統(tǒng)開發(fā)項(xiàng)目,培養(yǎng)學(xué)生創(chuàng)新精神和創(chuàng)新能力。通過這次畢業(yè)論文及設(shè)計(jì),檢驗(yàn)的綜合素質(zhì)和專業(yè)教育的培養(yǎng)效果,并且使學(xué)會(huì)閱讀、利用英文文獻(xiàn)資料,閱讀并翻譯外文資料的能力,學(xué)會(huì)設(shè)計(jì)報(bào)告和論文。
1.3 課題意義
隨著社會(huì)的發(fā)展、科技的進(jìn)步以及人們生活水平的逐步提高,各種方便于生活的自動(dòng)控制系統(tǒng)開始進(jìn)入了人們的生活,以單片機(jī)為核心的自動(dòng)門系統(tǒng)就是其中之一。同時(shí)也標(biāo)志了自動(dòng)控制領(lǐng)域成為了數(shù)字化時(shí)代的一員[ 3]。它實(shí)用性強(qiáng),功能齊全,技術(shù)先進(jìn),使人們相信這是科技進(jìn)步的成果。它更讓人類懂得,數(shù)字時(shí)代的發(fā)展將改變?nèi)祟惖纳?,將加快科學(xué)技術(shù)的發(fā)展。
通過對(duì)“微機(jī)控制自動(dòng)門系統(tǒng)”的研究和設(shè)計(jì),精心撰寫了微機(jī)控制自動(dòng)門系統(tǒng)論文。本論文著重闡述了以單片機(jī)為主體,LED點(diǎn)陣顯示芯片及步進(jìn)電機(jī)為核心的系統(tǒng)。
本設(shè)計(jì)主要應(yīng)用SST89E58作為控制核心,LED點(diǎn)陣顯示芯片、步進(jìn)電機(jī)、壓力傳感器、電位器相結(jié)合的系統(tǒng)。充分發(fā)揮了單片機(jī)的性能。其優(yōu)點(diǎn)硬件電路簡單,軟件功能完善,控制系統(tǒng)可靠,性價(jià)比較高等特點(diǎn),具有一定的使用和參考價(jià)值。
1.4 應(yīng)解決的主要問題
在基于單片機(jī)的懸掛運(yùn)動(dòng)控制系統(tǒng)中,主要分三個(gè)部分設(shè)計(jì),一個(gè)是輸入和鍵盤顯示模塊;另一個(gè)是步進(jìn)電機(jī)驅(qū)動(dòng)模塊;第三個(gè)是最小系統(tǒng)和輸出模塊設(shè)計(jì)。主要解決的問題是:
1. 單片機(jī)最小系統(tǒng)硬件設(shè)計(jì);
2. 步進(jìn)電機(jī)驅(qū)動(dòng)模塊設(shè)計(jì);
3. 輸出部分的軟硬件設(shè)計(jì);
4. 主程序設(shè)計(jì);
5. 繪圖板的設(shè)計(jì)。
1.5 技術(shù)要求
設(shè)計(jì)一電機(jī)控制系統(tǒng),控制物體在傾斜(仰角≤100度)的板上運(yùn)動(dòng)。
在一白色底板上固定兩個(gè)滑輪,兩只電機(jī)(固定在板上)通過穿過滑輪的吊繩控制一物體在板上運(yùn)動(dòng),運(yùn)動(dòng)范圍為80cm×100cm。物體的形狀不限,質(zhì)量大于100克。物體上固定有淺色畫筆,以便運(yùn)動(dòng)時(shí)能在板上畫出運(yùn)動(dòng)軌跡。板上標(biāo)有間距為1cm的淺色坐標(biāo)線(不同于畫筆顏色),左下角為直角坐標(biāo)原點(diǎn), 示意圖如下。
第2章 方案論證
2.1 可行性研究
2.1.1 經(jīng)濟(jì)可行性研究
開發(fā)一個(gè)基于計(jì)算機(jī)的系統(tǒng)主要是為了獲取較好的經(jīng)濟(jì)效益和社會(huì)益。因此對(duì)待開發(fā)系統(tǒng)的經(jīng)濟(jì)可行性的論證就成為可行性研究的重要內(nèi)容。
1. 成本估算
(1) 購置并安裝軟硬件及有關(guān)設(shè)備費(fèi)用。
懸掛運(yùn)動(dòng)控制系統(tǒng)主要由核心模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊、輸入模塊、顯示模塊、通訊模塊等組成。
核心模塊由SST98E58和啟動(dòng)單片機(jī)所用到的電容、電阻和晶振組成。
步進(jìn)電機(jī)驅(qū)動(dòng)模塊由1K×4、330歐的電阻,5610、5609、2N3055、MJ2955三極管,1N4007二極管等組成。
輸出模塊由一塊1602液晶顯示器構(gòu)成。
輸入模塊主要由16個(gè)OMRON按鈕組成。
通訊模塊由單片機(jī)的串行口和MAX232芯片組成。
以上元件共需大約489元。
(2) 系統(tǒng)開發(fā)費(fèi)用
懸掛運(yùn)動(dòng)系統(tǒng)主要是的硬件和軟件主要是由我一個(gè)人完成,從設(shè)計(jì)到實(shí)現(xiàn)一共用了大約2個(gè)月的時(shí)間。費(fèi)用約為800元。
(3) 系統(tǒng)安裝、運(yùn)行和維護(hù)費(fèi)用。
本系統(tǒng)完全實(shí)現(xiàn)后由單片機(jī)控制步進(jìn)電機(jī)帶動(dòng)重物繪圖。單片機(jī)需要5V的電源。維護(hù)的費(fèi)用主要是在測(cè)試時(shí)出現(xiàn)的錯(cuò)誤需要更正時(shí),替換的元器件大概10元左右。
(4) 人員培訓(xùn)費(fèi)用
懸掛運(yùn)動(dòng)系統(tǒng)主要由專業(yè)人員操作,而且操作非常簡單,費(fèi)用幾乎沒有。
2. 成本-效益分析
社會(huì)效益:懸掛運(yùn)動(dòng)系統(tǒng)是大學(xué)生電子競賽中的一個(gè)題目。本次畢業(yè)設(shè)計(jì),對(duì)本系統(tǒng)的功能進(jìn)行了進(jìn)一步的完善,特別是對(duì)步進(jìn)電機(jī)的驅(qū)動(dòng),從硬件到軟件都比較穩(wěn)定,如果在將來的的實(shí)驗(yàn)或競賽中還要用到單片機(jī)對(duì)步進(jìn)電機(jī)的控制,可以將本系統(tǒng)的硬件和軟件直接應(yīng)用或作為參考,所以,本系統(tǒng)對(duì)學(xué)校的教學(xué)和科研開發(fā)都有著深遠(yuǎn)的意義。
2.1.2 技術(shù)可行性研究
1. 風(fēng)險(xiǎn)分析:懸掛運(yùn)動(dòng)控制系統(tǒng)要完成的功能為設(shè)計(jì)一電機(jī)控制系統(tǒng),控制物體在傾斜(仰角≤100度)的板上運(yùn)動(dòng)。在一白色底板上固定兩個(gè)滑輪,兩只電機(jī)(固定在板上)通過穿過滑輪的吊繩控制一物體在板上運(yùn)動(dòng),運(yùn)動(dòng)范圍為80cm×100cm。物體的形狀不限,質(zhì)量大于100克。物體上固定有淺色畫筆,以便運(yùn)動(dòng)時(shí)能在板上畫出運(yùn)動(dòng)軌跡。板上標(biāo)有間距為1cm的淺色坐標(biāo)線(不同于畫筆顏色),左下角為直角坐標(biāo)原點(diǎn)。
懸掛運(yùn)動(dòng)控制系統(tǒng)硬件系統(tǒng)的路已經(jīng)設(shè)計(jì)好,并且可能很快的實(shí)現(xiàn)。相應(yīng)的軟件設(shè)計(jì)已經(jīng)有了三種備選方案。
2. 資源分析:所需的硬件器件可以很快購齊。編程語言(C51)已經(jīng)熟練掌握。
3. 技術(shù)分析:電機(jī)主要分為步進(jìn)電機(jī)和直流電機(jī),如果需要對(duì)電機(jī)進(jìn)行有效的精確的控制,選用步進(jìn)電機(jī)更為合理。步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過一個(gè)步距角[2]。這一線性關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電機(jī)來控制變的非常的簡單。
雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能象普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號(hào)、功率驅(qū)動(dòng)電路等組成控制系統(tǒng)方可使用。因此用好步進(jìn)電機(jī)卻非易事,它涉及到機(jī)械、電機(jī)、電子及計(jì)算機(jī)等許多專業(yè)知識(shí)。
單片機(jī)是微型機(jī)的主要分支,在結(jié)構(gòu)上的最大特點(diǎn)是把CPU、存儲(chǔ)器和定時(shí)器、多種輸入、輸出接口電路集成電路芯片上,將來的控制系統(tǒng)中,對(duì)于芯片的集成度要求更高。就其組成和功能而言,一塊單片機(jī)芯片就是一臺(tái)計(jì)算機(jī)。
本次設(shè)計(jì)主要分硬件設(shè)計(jì)和軟件設(shè)計(jì)。硬件系統(tǒng)包括開發(fā)平臺(tái)SST89E58單片機(jī)實(shí)驗(yàn)與開發(fā)集成系統(tǒng),將其作為硬件系統(tǒng)的檢測(cè)方式之一。硬件系統(tǒng)主要是由自己搭建電路,以此為基本方式來制作此項(xiàng)設(shè)計(jì)。單片機(jī)芯片采用SST89E58系列單片機(jī)中的。
軟件系統(tǒng)中主要是采用C51語言來進(jìn)行軟件方面的編程。具體的環(huán)境是應(yīng)用KeilC開發(fā)平臺(tái),以此來進(jìn)行程序的編譯、通訊以及程序的調(diào)試。SST89E58單片機(jī)實(shí)驗(yàn)與開發(fā)集成系統(tǒng)軟件直觀且易于掌握?,F(xiàn)在比較普遍的單片機(jī)編程語言主要有兩種——匯編和C51編程語言,匯編語言的可讀性、可移植性差,沒有通用性,而C51更接近人類語言、直觀、更易于描述復(fù)雜算法,所以選用的是C51語言。
經(jīng)過以上分析,本系統(tǒng)可以按時(shí)完成任務(wù)。
2.1.3 方案提出
對(duì)本系統(tǒng)的軟件設(shè)計(jì)已經(jīng)準(zhǔn)備了閉環(huán)數(shù)字控制方式和開環(huán)數(shù)字控制方式兩套方案。
2.1.4 方案分析
方案1: 閉環(huán)數(shù)字控制方式
閉環(huán)數(shù)字控制方式,主要利用光電傳感器檢測(cè)法,結(jié)構(gòu)圖如圖2.1所示。首先單片機(jī)根據(jù)輸入的數(shù)據(jù)來計(jì)算物體要移動(dòng)的距離并控制物體往坐標(biāo)的大概方向運(yùn)動(dòng),紅外發(fā)射接收器來探測(cè)懸掛物體移動(dòng)了多少個(gè)1*1cm的小方格,并經(jīng)過A/D送給單片機(jī),單片機(jī)通過特定的算法計(jì)算出物體的坐標(biāo),并控制電機(jī)的轉(zhuǎn)動(dòng)來控制物體往坐標(biāo)進(jìn)發(fā),在此過程中單片機(jī)不斷計(jì)算,不斷調(diào)整電機(jī)的轉(zhuǎn)速和方向使懸掛物體做一定路線的移動(dòng)。但其缺點(diǎn)是,電路復(fù)雜,不但要求要有A/D電路,光電探測(cè)電路,還要其電路要做得十分精確。任何一個(gè)電路設(shè)計(jì)得不好,也會(huì)使物體運(yùn)動(dòng)產(chǎn)生很大的偏差[5]。
微機(jī)
單片機(jī)
電機(jī)驅(qū)動(dòng)
電機(jī)
D/A
光電傳感器
圖2.1 閉環(huán)數(shù)字控制
方案2: 開環(huán)數(shù)字控制方式
開環(huán)數(shù)字程序控制方式,即沒有反饋系統(tǒng),開環(huán)數(shù)字控制的結(jié)構(gòu)圖如圖2.2所示。由圖可看出,此種控制方式與上面的控制方式少了反饋電路[6]。單片機(jī)由輸入的數(shù)據(jù)來計(jì)算物體要移動(dòng)的距離,直接發(fā)出控制脈沖來控制電機(jī)的轉(zhuǎn)動(dòng),進(jìn)而控制物體的運(yùn)動(dòng)方向。由于少了反饋電路,系統(tǒng)的精度只與單片機(jī)所采用的算法準(zhǔn)確性有關(guān),此種方式電路結(jié)構(gòu)簡單,成本低且易于調(diào)整和維護(hù),是一種較理想的方式。
單片機(jī)
電機(jī)驅(qū)動(dòng)
電機(jī)
微機(jī)
圖2.2 開環(huán)數(shù)字控制方式
2.1.3 方案確定
綜合上面所述,考慮時(shí)間和調(diào)試的復(fù)雜性,本設(shè)計(jì)采用方案2。
2.2 需求分析
當(dāng)今時(shí)代,是一個(gè)新技術(shù)層出不窮的時(shí)代。在電子領(lǐng)域,尤其是自動(dòng)化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng)正以前所未見的速度被單片機(jī)智能控制系統(tǒng)所取代。大部分的高等工科學(xué)校都已開設(shè)了單片機(jī)課程。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說,智能控制與自動(dòng)控制的核心就是單片機(jī)。目前,一個(gè)學(xué)習(xí)與應(yīng)用單片機(jī)的高潮正在工廠、學(xué)校及企事業(yè)單位大規(guī)模地興起。過去習(xí)慣于傳統(tǒng)電子領(lǐng)域的工程師、技術(shù)員正面臨著全新的挑戰(zhàn),如不能在較短時(shí)間內(nèi)學(xué)會(huì)單片機(jī),勢(shì)必會(huì)被時(shí)代所遺棄,只有勇敢地面對(duì)現(xiàn)實(shí),挑戰(zhàn)自我,加強(qiáng)學(xué)習(xí),爭取在較短的時(shí)間內(nèi)將單片機(jī)技術(shù)融會(huì)貫通,才能跟上時(shí)代的步伐。
步進(jìn)電機(jī)是一種離散運(yùn)動(dòng)的裝置[4],它和現(xiàn)代數(shù)字控制技術(shù)有著緊密的本質(zhì)的聯(lián)系。步進(jìn)電機(jī)亦是一種將電脈沖轉(zhuǎn)化為角位移或直線位移的執(zhí)行機(jī)構(gòu),當(dāng)步進(jìn)電機(jī)驅(qū)動(dòng)器接收到一個(gè)脈沖信號(hào),它就驅(qū)動(dòng)步進(jìn)電機(jī)按設(shè)定的方向轉(zhuǎn)動(dòng)一個(gè)固定的角度(又稱之為步進(jìn)角),為此可以通過控制脈沖個(gè)數(shù)來控制角位移量,從而達(dá)到準(zhǔn)確定位的目的;同時(shí)可以通過脈沖頻率來控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng)速度和加速度,從而達(dá)到調(diào)速的目的。這里給出懸掛運(yùn)動(dòng)控制系統(tǒng)的要求:
基本要求:
1. 控制系統(tǒng)能夠通過鍵盤或其他方式任意設(shè)定坐標(biāo)點(diǎn)參數(shù);
2. 控制物體在80cm×100cm的范圍內(nèi)作自行設(shè)定的運(yùn)動(dòng),運(yùn)動(dòng)軌跡長度不小于100cm,物體在運(yùn)動(dòng)時(shí)能夠在板上畫出運(yùn)動(dòng)軌跡,限300秒內(nèi)完成;
3. 控制物體作圓心可任意設(shè)定、直徑為50cm的圓周運(yùn)動(dòng),限300秒內(nèi)完成;
4. 物體從左下角坐標(biāo)原點(diǎn)出發(fā),在150秒內(nèi)到達(dá)設(shè)定的一個(gè)坐標(biāo)點(diǎn)(兩點(diǎn)間直線距離不小于40cm)。
第3章 過程論述
3.1 概要設(shè)計(jì)
3.1.1 系統(tǒng)功能設(shè)計(jì)
1. 硬件設(shè)計(jì)
總體結(jié)構(gòu)由AT89C52系列單片機(jī)等芯片構(gòu)成,大致分為以下幾個(gè)部分。
首先是最小系統(tǒng)部分。這個(gè)部分是以單片機(jī)為核心的一個(gè)單片機(jī)最小系統(tǒng)。根據(jù)設(shè)計(jì)之前對(duì)設(shè)計(jì)題目的分析,可大致的了解到系統(tǒng)所要求程序和所要存儲(chǔ)數(shù)據(jù)單元的大小,這里采用的單片機(jī)為SST系列單片機(jī)中的SST89E58。
其次是信號(hào)的采集部分和鍵盤輸入顯示部分設(shè)計(jì)。
然后是信號(hào)的輸出部分。根據(jù)鍵盤的輸入,選定一個(gè)工作模試,選定進(jìn)行繪制的圖形,再根據(jù)輸入的參數(shù),繪制出具體的圖形。
最后本設(shè)計(jì)是要實(shí)現(xiàn)電機(jī)的驅(qū)動(dòng)部份,因?yàn)?,電機(jī)的驅(qū)動(dòng)是用四項(xiàng)模擬信號(hào)輸入來控制的,所以要設(shè)計(jì)一個(gè)電機(jī)驅(qū)動(dòng)電路,把單片機(jī)輸出的數(shù)字信號(hào),轉(zhuǎn)換成電機(jī)能夠使用的模擬信號(hào)。
2. 軟件設(shè)計(jì)
在設(shè)計(jì)中,需要對(duì)鍵盤的輸入數(shù)據(jù)進(jìn)行采集,并將采集來的數(shù)據(jù)顯示在屏幕上,然后將輸入的數(shù)據(jù)傳給上位機(jī),并根據(jù)輸入的數(shù)據(jù)執(zhí)行相應(yīng)的操作,控制步進(jìn)電機(jī)繪制出所需的圖形。
3.1.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
單片機(jī)本身具備比較強(qiáng)大的功能,但往往不能滿足一個(gè)實(shí)際應(yīng)用系統(tǒng)的功能要求,有些單片機(jī)本身就缺少一些功能部分需要擴(kuò)展至應(yīng)用系統(tǒng)所要求的規(guī)模。
單片機(jī)無法直接與微型計(jì)算機(jī)進(jìn)行通信,如果想讓單片與微機(jī)通信必須將max232芯片與單片機(jī)串口相聯(lián)[7]。
懸掛控制系統(tǒng)由鍵盤,MSC1602液晶顯示器,SST89E58單片機(jī),42BYG205電機(jī)等組成。功能框圖如圖3.1。
鍵盤采用4×4矩陣鍵盤通過程序設(shè)計(jì)完成鍵盤掃描。LCD顯示器通過P2口接收數(shù)據(jù)。單片機(jī)收到命令后,按照相應(yīng)的算法,經(jīng)過計(jì)算后發(fā)出控制信號(hào)傳給電機(jī)。電機(jī)根據(jù)信號(hào)實(shí)現(xiàn)相應(yīng)的動(dòng)作。
鍵盤控制部分
SST89C52單片機(jī)控制部分
LCD顯示部分
電機(jī)控制部分
微機(jī)
圖3.1 功能框圖
原理總框圖:
單片機(jī)
接收
串行通訊
PC機(jī)顯示
圖3.2 串行通信原理圖
3.2 詳細(xì)設(shè)計(jì)
3.2.1 硬件設(shè)計(jì)
1. 整體設(shè)計(jì)
懸掛運(yùn)動(dòng)控制系統(tǒng)主要由核心模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊、輸入模塊、顯示模塊、通訊模塊等組成。如圖3.3所示。本系統(tǒng)能夠完成以下功能:由鍵盤輸入工作模式和坐標(biāo)數(shù)據(jù),其中工作模式包括:模式1:畫直線,輸入起點(diǎn)和終點(diǎn)的坐標(biāo)后,電機(jī)將帶動(dòng)重物運(yùn)動(dòng)出一條直線的軌跡。模式2:畫圓,輸入圓心和半徑的數(shù)據(jù)后,電機(jī)將帶動(dòng)重物運(yùn)動(dòng)出一圓形軌跡。模式3:3邊圖形,輸入3個(gè)點(diǎn)的坐標(biāo)后,電機(jī)將帶動(dòng)重物運(yùn)動(dòng)出一個(gè)三角形的軌跡。模式4:4邊圖形,輸入4個(gè)點(diǎn)的坐標(biāo)后,電機(jī)將帶動(dòng)重物運(yùn)動(dòng)出一個(gè)四邊形的軌跡。然后顯示模塊會(huì)將工作的狀態(tài)顯示在LCD上,反映輸入的數(shù)據(jù)是否正確,和電機(jī)當(dāng)前的運(yùn)行狀態(tài)。步進(jìn)電機(jī)驅(qū)動(dòng)模塊,將單機(jī)輸出的5V信號(hào)轉(zhuǎn)換成步進(jìn)電機(jī)所需要的12V信號(hào),提供步進(jìn)電機(jī)所需要的驅(qū)動(dòng)電流。通訊模塊是能max232芯片,使用一定的協(xié)議,使單片機(jī)能與微機(jī)之間進(jìn)行通訊,實(shí)現(xiàn)上位機(jī)與下位機(jī)之間的相互控制。
各個(gè)模塊的具體工作原理,將在下面作出詳細(xì)說明。
2. 主要功能模塊設(shè)計(jì)
懸掛運(yùn)動(dòng)控制系統(tǒng)主要由最小系統(tǒng)模塊、步進(jìn)電機(jī)驅(qū)動(dòng)模塊、輸入模塊、顯示模塊等組成。通過鍵盤輸入數(shù)據(jù),可以完成以下功能:將工作的狀態(tài)顯示在LCD上,控制步進(jìn)電機(jī)將重物移至指定位置,控制步進(jìn)電機(jī)帶動(dòng)重物畫出指定的圖形,包括圓形、直線、多邊形等。
(1) 核心模塊
核心模塊是整個(gè)懸掛運(yùn)動(dòng)系統(tǒng)的最基本的部分。主要由SST89E58單片機(jī)和支持單片工作的一些器件,如晶振、電源和相關(guān)的電阻、電容組成,見圖3.4。SST98E58內(nèi)部具有三總路線和32K的存儲(chǔ)器,所以不用擴(kuò)展總線和外部存儲(chǔ)[8]。各IO口分部如下:P0口作為鍵盤接口,P1口作為電機(jī)驅(qū)動(dòng)接口,P2口作為LCD的數(shù)據(jù)接口,P3.3、P3.4、P3.5作為LCD的控制線接口。
(2) 步進(jìn)電機(jī)驅(qū)動(dòng)模塊
步進(jìn)電機(jī)的驅(qū)動(dòng)模塊是完成對(duì)步進(jìn)電機(jī)的驅(qū)動(dòng),步電機(jī)是由+12V電壓驅(qū)動(dòng)的,這個(gè)驅(qū)動(dòng)電路的主要功能是將+5V的電壓轉(zhuǎn)換為+12V電壓[9]。見附錄圖 1。步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過一個(gè)步距角。感應(yīng)子式步步進(jìn)電機(jī)大體分為兩種:① 反應(yīng)式步進(jìn)電機(jī),②感應(yīng)子式步進(jìn)電機(jī)。
我們使用的是兩相的感應(yīng)子式步進(jìn)電機(jī),當(dāng)電機(jī)繞組通電時(shí)序?yàn)闀r(shí)為正轉(zhuǎn),通電時(shí)序?yàn)闀r(shí)為反轉(zhuǎn)。我們的對(duì)步進(jìn)電機(jī)驅(qū)動(dòng)是將輸出4個(gè)的+5V和0V信號(hào)經(jīng)過集成運(yùn)放LM324變換成兩個(gè)+5V的信號(hào)[9],再經(jīng)過步進(jìn)電機(jī)的驅(qū)動(dòng)電路形成步進(jìn)電機(jī)所需的兩個(gè)+12V的信號(hào),分別對(duì)應(yīng)步進(jìn)電機(jī)的兩相AB,按照上述順序變換,實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的驅(qū)動(dòng)。
圖3.3 整體設(shè)計(jì)框圖
圖3.4 核心結(jié)構(gòu)框圖
(3) 輸入模塊
輸入模塊是由自行焊接的4x4矩陣的鍵盤實(shí)現(xiàn)的[10],在這16個(gè)按鍵中,包括0~9的數(shù)字鍵,一個(gè)確定鍵,一個(gè)光標(biāo)控制鍵,一個(gè)標(biāo)志鍵,兩個(gè)電機(jī)驅(qū)動(dòng)鍵,一個(gè)模式選擇鍵。見圖 3.5。將鍵盤的8根線,接到單片機(jī)P0口上,前4根為行線,后4根為列線,采用行列掃描的方法,對(duì)鍵盤監(jiān)測(cè):首先給所有的行線為高電平,列線順序給某一根線低電平[11]。當(dāng)某一鍵按下,并且列線掃描到該鍵所在的列時(shí),會(huì)使該鍵所在的行線接口鉗制到低電平,這時(shí)就可以確定是那一個(gè)鍵按下了。
(4) 顯示模塊
顯示模塊是由一塊1602LCD構(gòu)成,在單片機(jī)中編寫程序控制其顯示內(nèi)容。見圖3.6。 1602是一塊(16個(gè)字符×2行的)液晶顯示器。有8根數(shù)據(jù)線(D0~D7)和三根控制線(RS、R/W、E)與單片機(jī)相聯(lián)RS:數(shù)據(jù)/命令選擇端,R/W:讀寫選擇端,E:使能信號(hào)??梢酝ㄟ^程序設(shè)計(jì)完成對(duì)1602的初始化和輸出控制。
圖3.5 輸入模塊框圖
(5) 通訊模塊
本懸掛運(yùn)動(dòng)控制系統(tǒng)利用單片機(jī)自帶的串行口,通過max232與微型計(jì)算機(jī)相聯(lián),實(shí)現(xiàn)相互控制。Max232又叫做雙通道RS232線性驅(qū)動(dòng)/接收器[12]。該器件包含2驅(qū)動(dòng)器、2接收器和一個(gè)電壓發(fā)生器電路提供TIA/EIA-232-F電平。串行異步通信最廣泛使用的總路線接口標(biāo)準(zhǔn)RS-232C。232C接口標(biāo)準(zhǔn)采用EIA電平。它規(guī)定:高電平為+3V~15V,低電平為+3V~+15V。實(shí)際應(yīng)用常采用12V或15V。
① 基本約定:I、波特率:9600
II、一位啟始位,8位數(shù)據(jù),一位停止位,無奇偶校驗(yàn)位。
② 傳送順序:第一個(gè)字符,表示圖形標(biāo)志,根據(jù)標(biāo)志位,決定數(shù)據(jù)位的字符個(gè)數(shù)。
所畫的五個(gè)圖形分別用1、2、3、4、5表示。其中1表示直線,2表示圓形,3表示三角形,4表示四邊形,5表示五邊形。
直線:連續(xù)8字節(jié)數(shù)據(jù)(直線的兩個(gè)點(diǎn)),最后組裝成4個(gè)無符號(hào)字符型數(shù)據(jù)。
圓形:連續(xù)6字節(jié)數(shù)據(jù),前4個(gè)為圓心坐標(biāo),后2個(gè)為半徑。
三角形:連續(xù)12字節(jié)數(shù)據(jù)(三個(gè)點(diǎn)的坐標(biāo)),最后組裝成6個(gè)無符號(hào)字符型數(shù)據(jù)。
四邊形:連續(xù)16字節(jié)數(shù)據(jù)(四個(gè)點(diǎn)的坐標(biāo)),最后組裝成8個(gè)無符號(hào)字符型數(shù)據(jù)。
五邊形:連續(xù)20字節(jié)數(shù)據(jù)(五個(gè)點(diǎn)的坐標(biāo)),最后組裝成10個(gè)無符號(hào)字符型數(shù)。
圖3.6 顯示模塊框圖
(6) 系統(tǒng)組成原理圖
系統(tǒng)的總體框圖如圖 3.7
圖3.7 系統(tǒng)控制硬件總框圖
3. 主要元器件功能與選用
(1) 步進(jìn)電機(jī)介紹
步進(jìn)電機(jī)是將電脈沖信號(hào)轉(zhuǎn)變?yōu)榻俏灰苹蚓€位移的開環(huán)控制元件。在非超載的情況下,電機(jī)的轉(zhuǎn)速、停止的位置只取決于脈沖信號(hào)的頻率和脈沖數(shù),而不受負(fù)載變化的影響,即給電機(jī)加一個(gè)脈沖信號(hào),電機(jī)則轉(zhuǎn)過一個(gè)步距角。這一線性關(guān)系的存在,加上步進(jìn)電機(jī)只有周期性的誤差而無累積誤差等特點(diǎn)。使得在速度、位置等控制領(lǐng)域用步進(jìn)電機(jī)來控制變的非常的簡單。
雖然步進(jìn)電機(jī)已被廣泛地應(yīng)用,但步進(jìn)電機(jī)并不能象普通的直流電機(jī),交流電機(jī)在常規(guī)下使用。它必須由雙環(huán)形脈沖信號(hào)、功率驅(qū)動(dòng)電路等組成控制系統(tǒng)方可使用。因此用好步進(jìn)電機(jī)卻非易事,它涉及到機(jī)械、電機(jī)、電子及計(jì)算機(jī)等許多專業(yè)知識(shí)。
目前,生產(chǎn)步進(jìn)電機(jī)的廠家的確不少,但具有專業(yè)技術(shù)人員,能夠自行開發(fā),研制的廠家卻非常少,大部分的廠家只一、二十人,連最基本的設(shè)備都沒有。僅僅處于一種盲目的仿制階段。這就給用戶在產(chǎn)品選型、使用中造成許多麻煩。簽于上述情況,我們決定以廣泛的感應(yīng)子式步進(jìn)電機(jī)為例。敘述其基本工作原理。望能對(duì)廣大用戶在選型、使用、及整機(jī)改進(jìn)時(shí)有所幫助。
(2) 步進(jìn)電機(jī)控制原理
步進(jìn)電機(jī)是數(shù)字控制電機(jī),它將脈沖信號(hào)轉(zhuǎn)變成角位移,即給一個(gè)脈沖信號(hào),步進(jìn)電機(jī)就轉(zhuǎn)動(dòng)一個(gè)角度,因此非常適合于單片機(jī)控制。步進(jìn)電機(jī)可分為反應(yīng)式步進(jìn)電機(jī)(簡稱VR)、永磁式步進(jìn)電機(jī)(簡稱PM)和混合式步進(jìn)電機(jī)(簡稱HB)。
步進(jìn)電機(jī)區(qū)別于其他控制電機(jī)的最大特點(diǎn)是,它是通過輸入脈沖信號(hào)來進(jìn)行控制的,即電機(jī)的總轉(zhuǎn)動(dòng)角度由輸入脈沖數(shù)決定,而電機(jī)的轉(zhuǎn)速由脈沖信號(hào)頻率決定。
步進(jìn)電機(jī)的驅(qū)動(dòng)電路根據(jù)控制信號(hào)工作,控制信號(hào)由單片機(jī)產(chǎn)生。其基本原理作用如下:
① 控制換相順序
通電換相這一過程稱為脈沖分配。例如:三相步進(jìn)電機(jī)的三拍工作方式,其各相通電順序?yàn)锳-B-C-D,通電控制脈沖必須嚴(yán)格按照這一順序分別控制A,B,C,D相的通斷。
② 控制步進(jìn)電機(jī)的轉(zhuǎn)向
如果給定工作方式正序換相通電,步進(jìn)電機(jī)正轉(zhuǎn),如果按反序通電換相,則電機(jī)就反轉(zhuǎn)。
③ 控制步進(jìn)電機(jī)的速度
如果給步進(jìn)電機(jī)發(fā)一個(gè)控制脈沖,它就轉(zhuǎn)一步,再發(fā)一個(gè)脈沖,它會(huì)再轉(zhuǎn)一步。兩個(gè)脈沖的間隔越短,步進(jìn)電機(jī)就轉(zhuǎn)得越快。調(diào)整單片機(jī)發(fā)出的脈沖頻率,就可以對(duì)步進(jìn)電機(jī)進(jìn)行調(diào)速。
(3) 電機(jī)選擇
方案1:直流電機(jī)。
直流電機(jī)又分為直流無刷電機(jī)和直流有刷電機(jī),是最早實(shí)現(xiàn)調(diào)速的電動(dòng)機(jī),其優(yōu)點(diǎn)是有良好的線性調(diào)速特性,簡單的控制性能,高的效率,但其數(shù)字控制方面較難把握。
方案2:步進(jìn)電機(jī)。
步進(jìn)電機(jī)是多種機(jī)電設(shè)備中被廣泛應(yīng)用的一種電機(jī),它主要由定子和轉(zhuǎn)子構(gòu)成。定子的主要結(jié)構(gòu)是繞組。三相、四相、五相步進(jìn)電機(jī)分別有三個(gè)、四個(gè)、五個(gè)繞組,其它以此類推。繞組按一定的通電順序工作著,這個(gè)通電順序我們稱為步進(jìn)電機(jī)的“相序”。轉(zhuǎn)子的主要結(jié)構(gòu)是磁性轉(zhuǎn)軸,當(dāng)定子中的繞組在相序信號(hào)作用下,有規(guī)律的通電、斷電工作時(shí),轉(zhuǎn)子周圍就會(huì)有一個(gè)按此規(guī)律變化的電磁場(chǎng),因此一個(gè)按規(guī)律變化的電磁力就會(huì)作用在因此轉(zhuǎn)子上,使轉(zhuǎn)子發(fā)生轉(zhuǎn)動(dòng)。它將電脈沖信號(hào)轉(zhuǎn)換成角位移,即給一個(gè)脈沖信號(hào),步進(jìn)電動(dòng)機(jī)就轉(zhuǎn)動(dòng)一個(gè)角度,因此非常適合于單片機(jī)控制。另外步進(jìn)電機(jī)還有動(dòng)態(tài)響應(yīng)快易于起停,易于正反速及變速等優(yōu)點(diǎn)。
綜合上面所述,為易于單片機(jī)控制,本設(shè)計(jì)采用方案2。
(4) 驅(qū)動(dòng)方式的選擇
我們知道步進(jìn)電動(dòng)機(jī)使用脈沖電源工作。開關(guān)管是按照控制脈沖的規(guī)律“開”和“關(guān)”,使直流電源以脈沖方式向繞組L供電,這一過程我們稱它為步進(jìn)電動(dòng)機(jī)的驅(qū)動(dòng)。
①單電壓驅(qū)動(dòng) 單電壓驅(qū)動(dòng)是指電動(dòng)機(jī)繞組在工作時(shí),只用一個(gè)電壓電源對(duì)繞組供電。它的特點(diǎn)是電路簡單,一般只用于小功率步進(jìn)電動(dòng)機(jī)的驅(qū)動(dòng)。
②雙電壓驅(qū)動(dòng) 雙電壓驅(qū)動(dòng)是用提高電壓的方法使繞組中的電流上升波形變陡。它的基本思路是在低頻段使用較低的電壓驅(qū)動(dòng),在高頻段使用較高的電壓驅(qū)動(dòng)。這種驅(qū)動(dòng)方法在低頻段具有單電壓驅(qū)動(dòng)的特點(diǎn),在高頻段具有良好的高頻性能。
本設(shè)計(jì)考慮到變壓器,因采用了單電壓驅(qū)動(dòng).
(5) SST89E58單片機(jī)
SST89E58是一個(gè)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含32k bytes的可反復(fù)擦寫的Flash只讀程序存儲(chǔ)器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)。該器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)。由于片內(nèi)置通用8位中央處理器和Flash存儲(chǔ)單元,功能強(qiáng)大的SST89E58單片機(jī)可為您提供許多較復(fù)雜系統(tǒng)控制應(yīng)用場(chǎng)合。
(6) 對(duì)于本系統(tǒng)開發(fā)來說存在下列很明顯的優(yōu)點(diǎn)
① 內(nèi)部含F(xiàn)LASH存儲(chǔ)器。因此在系統(tǒng)開發(fā)過程中可以十分容易進(jìn)行程序的修改,這就大大縮短了系統(tǒng)的開發(fā)周期。同時(shí),在系統(tǒng)工作過程中,能有效的保存一些數(shù)據(jù)信息,即使外界電源損壞也不影響到信息的保存。
② 和80C51插座兼容。SST89E58單片機(jī)的引腳是和80C51一樣的,所以,當(dāng)用SST89E58單片機(jī)取代80C52時(shí),可以直接進(jìn)行代換。
③ 時(shí)鐘方式。SST89E58單片機(jī)采用靜態(tài)時(shí)鐘方式,所以可以節(jié)省電能,這對(duì)于降低便攜式產(chǎn)品的功耗十分有用。
④ 編程亦無廢品產(chǎn)生。一般的OTP產(chǎn)品,一旦錯(cuò)誤編程就成了廢品。而89C51單片機(jī)內(nèi)部采用了Flash存儲(chǔ)器,所以,錯(cuò)誤編程之后仍可以重新編程直到正確為止,故不存在廢品。
⑤ 可以進(jìn)行反復(fù)系統(tǒng)試驗(yàn)。用SST89E58單片機(jī)設(shè)計(jì)的系統(tǒng),可以反復(fù)進(jìn)行系統(tǒng)試驗(yàn),每次試驗(yàn)可以編入不同的程序,這樣可以保證用戶的系統(tǒng)設(shè)計(jì)達(dá)到最優(yōu)。而且隨的需要和發(fā)展,還可以進(jìn)行修改,使系統(tǒng)能不斷追隨新的要求。
⑥ SST89E58是用靜態(tài)邏輯來設(shè)計(jì)的,其工作頻率可下降到0HZ,并提供兩種可用軟件來選擇的省電方式——空閑方式(Idle Mode)和掉電方式(Power Down Mode)。在空閑方式中,CPU停止工作,而RAM、定時(shí)器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。在掉電方式中,片內(nèi)振蕩器停止工作,由于時(shí)間被“凍結(jié)”,使一切功能都暫停,只保存片內(nèi)RAM中的內(nèi)容,直到下一次硬件復(fù)位為止。
(7) LM324是四運(yùn)放集成電路,它采用14腳雙列直插塑料封裝。它的內(nèi)部包含四組形式完全相同的運(yùn)算放大器,除電源共用外,四組運(yùn)放相互獨(dú)立。每一組運(yùn)算放大器可用圖1所示的符號(hào)來表示,它有5個(gè)引出腳,其中“+”、“-”為兩個(gè)信號(hào)輸入端,“V+”、“V-”為正、負(fù)電源端,“Vo”為輸出端。兩個(gè)信號(hào)輸入端中,Vi-(-)為反相輸入端,表示運(yùn)放輸出端Vo的信號(hào)與該輸入端的位相反;Vi+(+)為同相輸入端,表示運(yùn)放輸出端Vo的信號(hào)與該輸入端的相位相同。
由于LM324四運(yùn)放電路具有電源電壓范圍寬,靜態(tài)功耗小,可單電源使用,價(jià)格低廉等優(yōu)點(diǎn),因此被廣泛應(yīng)用在各種電路中。
(8) 主要應(yīng)用
① 反相交流放大器
此放大器可代替晶體管進(jìn)行交流放大,可用于擴(kuò)音機(jī)前置放大等。電路無需調(diào)試。放大器采用單電源供電,由R1、R2組成1/2V+偏置,C1是消振電容。放大器電壓放大倍數(shù)Av僅由外接電阻Ri、Rf決定:Av=-Rf/Ri。負(fù)號(hào)表示輸出信號(hào)與輸入信號(hào)相位相反。按圖中所給數(shù)值,Av=-10。此電路輸入電阻為Ri。一般情況下先取Ri與信號(hào)源內(nèi)阻相等,然后根據(jù)要求的放大倍數(shù)在選定Rf。Co和Ci為耦合電容。
② 同相交流放大器
同相交流放大器的特點(diǎn)是輸入阻抗高。其中的R1、R2組成1/2V+分壓電路,通過R3對(duì)運(yùn)放進(jìn)行偏置。 電路的電壓放大倍數(shù)Av也僅由外接電阻決定:Av=1+Rf/R4,電路輸入電阻為R3。R4的阻值范圍為幾千歐姆到幾十千歐姆。
③ 交流信號(hào)三分配放大器
此電路可將輸入交流信號(hào)分成三路輸出,三路信號(hào)可分別用作指示、控制、分析等用途。而對(duì)信號(hào)源的影響極小。因運(yùn)放Ai輸入電阻高,運(yùn)放A1-A4均把輸出端直接接到負(fù)輸入端,信號(hào)輸入至正輸入端,相當(dāng)于同相放大狀態(tài)時(shí)Rf=0的情況,故各放大器電壓放大倍數(shù)均為1,與分立元件組成的射極跟隨器作用相同R1、R2組成1/2V+偏置,靜態(tài)時(shí)A1輸出端電壓為1/2V+,故運(yùn)放A2-A4輸出端亦為1/2V+通過輸入輸出電容的隔直作用,取出交流信號(hào)。
④ 有源帶通濾波器
許多音響裝置的頻譜分析器均使用此電路作為帶通濾波器,以選出各個(gè)不同頻段的信號(hào),在顯示上利用發(fā)光二極管點(diǎn)亮的多少來指示出信號(hào)幅度的大小。這種有源帶通濾波器的中心頻率 ,在中心頻率fo處的電壓增益Ao=B3/2B1,品質(zhì)因數(shù) ,3dB帶寬B=1/(п*R3*C)也可根據(jù)設(shè)計(jì)確定的Q、fo、Ao值,去求出帶通濾波器的各元件參數(shù)值。R1=Q/(2пfoAoC),R2=Q/((2Q2-Ao)*2пfoC),R3=2Q/(2пfoC)。上式中,當(dāng)fo=1KHz時(shí),C取0.01Uf。此電路亦可用于一般的選頻放大。此電路亦可使用單電源,只需將運(yùn)放正輸入端偏置在1/2V+并將電阻R2下端接到運(yùn)放正輸入端既可。
⑤ 比較器
當(dāng)去掉運(yùn)放的反饋電阻時(shí),或者說反饋電阻趨于無窮大時(shí)(即開環(huán)狀態(tài)),理論上認(rèn)為運(yùn)放的開環(huán)放大倍數(shù)也為無窮大(實(shí)際上是很大,如LM324運(yùn)放開環(huán)放大倍數(shù)為100dB,既10萬倍)。此時(shí)運(yùn)放便形成一個(gè)電壓比較器,其輸出如不是高電平(V+),就是低電平(V-或接地)。當(dāng)正輸入端電壓高于負(fù)輸入端電壓時(shí),運(yùn)放輸出低電平。
圖中使用兩個(gè)運(yùn)放組成一個(gè)電壓上下限比較器,電阻R1、R1ˊ組成分壓電路,為運(yùn)放A1設(shè)定比較電平U1;電阻R2、R2ˊ組成分壓電路,為運(yùn)放A2設(shè)定比較電平U2。輸入電壓U1同時(shí)加到A1的正輸入端和A2的負(fù)輸入端之間,當(dāng)Ui >U1時(shí),運(yùn)放A1輸出高電平;當(dāng)Ui U2,則當(dāng)輸入電壓Ui越出[U2,U1]區(qū)間范圍時(shí),LED點(diǎn)亮,這便是一個(gè)電壓雙限指示器。 若選擇U2 > U1,則當(dāng)輸入電壓在[U2,U1]區(qū)間范圍時(shí),LED點(diǎn)亮,這是一個(gè)“窗口”電壓指示器。 此電路與各類傳感器配合使用,稍加變通,便可用于各種物理量的雙限檢測(cè)、短路、斷路報(bào)警等。
⑥ 單穩(wěn)態(tài)觸發(fā)器
此電路可用在一些自動(dòng)控制系統(tǒng)中。電阻R1、R2組成分壓電路,為運(yùn)放A1負(fù)輸入端提供偏置電壓U1,作為比較電壓基準(zhǔn)。靜態(tài)時(shí),電容C1充電完畢,運(yùn)放A1正輸入端電壓U2等于電源電壓V+,故A1輸出高電平。當(dāng)輸入電壓Ui變?yōu)榈碗娖綍r(shí),二極管D1導(dǎo)通,電容C1通過D1迅速放電,使U2突然降至地電平,此時(shí)因?yàn)閁1>U2,故運(yùn)放A1輸出低電平。當(dāng)輸入電壓變高時(shí),二極管D1截止,電源電壓R3給電容C1充電,當(dāng)C1上充電電壓大于U1時(shí),既U2>U1,A1輸出又變?yōu)楦唠娖?,從而結(jié)束了一次單穩(wěn)觸發(fā)。顯然,提高U1或增大R2、C1的數(shù)值,都會(huì)使單穩(wěn)延時(shí)時(shí)間增長,反之則縮短。如果將二極管D1去掉,則此電路具有加電延時(shí)功能。剛加電時(shí),U1>U2,運(yùn)放A1輸出低電平,隨著電容C1不斷充電,U2不斷升高,當(dāng)U2>U1時(shí),A1輸出才變?yōu)楦唠娖健?
3.2.2 軟件設(shè)計(jì)
1. 主程序總流程圖
在設(shè)計(jì)系統(tǒng)的總流程中.比較簡單. 但在子程序相當(dāng)復(fù)雜.程序總圖如圖3.8所示:
2. 主程序設(shè)計(jì)
以往,人們研制單片機(jī)應(yīng)用系統(tǒng),幾乎都是使用匯編語言編寫應(yīng)用程序。經(jīng)管匯編語言具有能夠直接操作硬件、指令執(zhí)行速度快等優(yōu)點(diǎn),但匯編語言不是結(jié)構(gòu)化的程序設(shè)計(jì)語言,用它編寫的程序可讀性差,不便于資料的交流和移植,調(diào)試也比較麻煩;而C語言恰好克服了匯編語言的缺點(diǎn),而且又具有匯編語言的優(yōu)點(diǎn)。故本系統(tǒng)采用KEIL 51軟件用C語言進(jìn)行的程序設(shè)計(jì)[13]。
系統(tǒng)上電后,對(duì)設(shè)備進(jìn)行初始化,之后便進(jìn)入判斷測(cè)試狀態(tài)還是運(yùn)行狀態(tài),如果是運(yùn)行狀態(tài)便進(jìn)行波特率設(shè)置,如果是測(cè)試狀態(tài),便顯示當(dāng)前波特率,如果改變波特率,則進(jìn)行發(fā)送數(shù)據(jù),重新判斷是運(yùn)行還是測(cè)試狀態(tài)。如果運(yùn)行的是波特率設(shè)置,則之后進(jìn)行鍵盤設(shè)置,可以對(duì)通道進(jìn)行選擇,選擇后邊進(jìn)行A/D轉(zhuǎn)換狀態(tài),之后發(fā)送數(shù)據(jù),系統(tǒng)在進(jìn)行判斷是測(cè)試狀態(tài)還是運(yùn)行狀態(tài)。如果鍵盤處理的是定時(shí)器,則改變定時(shí)常數(shù),然后進(jìn)行A/D數(shù)據(jù)轉(zhuǎn)換,之后發(fā)送數(shù)據(jù),又進(jìn)行判斷是測(cè)試狀態(tài)還是運(yùn)行狀態(tài)[14]。
圖3.8 主程序流程圖
對(duì)與一個(gè)開環(huán)控制系統(tǒng)來說,最重要的就是它的算法的選擇,然后就是針對(duì)算法的編程.
(1) 控制算法的論證
方案1: 逐點(diǎn)比較直線插補(bǔ)算法[17]
逐點(diǎn)比較法是數(shù)控機(jī)床中廣泛采用的一種軟件插補(bǔ)算法,該方法普遍用于二坐標(biāo)數(shù)控加工系統(tǒng).所謂逐點(diǎn)比較法就是在繪圖過程中,繪圖筆每移動(dòng)一步都要與理想線路進(jìn)行比較,然后決定下一步的移動(dòng)方向用步步修正的方法畫出所期望的線段. 逐點(diǎn)比較法的基本原理是斜率比較法.即線段的起點(diǎn)與筆當(dāng)前的位置構(gòu)成的直線斜率與要繪線段斜率進(jìn)行比較.當(dāng)前者斜率小于后者斜率時(shí),筆應(yīng)該向Y方向走一步.當(dāng)前者斜率大于后者斜率時(shí),筆應(yīng)該向X方向走一步.
如圖3.9所示,OA為欲畫的路線,M1為畫筆開始所在的位置,當(dāng)OA的斜率小欲畫線段的斜率時(shí),OA向+Y方向移動(dòng)一步,到達(dá)M2點(diǎn).然后再用線段OM2的斜率與OA的斜率進(jìn)行比較,當(dāng)OM2的斜率大欲畫線段OA斜率時(shí),OA向+X方向移動(dòng)一步。
圖3.9 逐點(diǎn)比較直線插補(bǔ)算法
方案2:逐點(diǎn)比較圓弧插補(bǔ)算法[18].
圓弧軌跡插補(bǔ)不同于直線,一段圓弧可能跨越幾個(gè)象限。每當(dāng)一段圓弧跨過象限后,原來的偏差計(jì)算、坐標(biāo)計(jì)算式必須進(jìn)行修改。在插補(bǔ)過程中每走一步必須檢查是否會(huì)跨越象限,一旦查到跨越象限,就要根據(jù)順圓或逆圓改進(jìn)進(jìn)入該象限的一套計(jì)算方法。傳統(tǒng)的過象限處理是采用查表的方法,即用舊的標(biāo)志字通過查表取得新標(biāo)志字,替換舊標(biāo)志字,當(dāng)再次進(jìn)行插補(bǔ)時(shí),根據(jù)新的標(biāo)志字進(jìn)行插補(bǔ)和進(jìn)給。查表法處理起來相當(dāng)麻煩。符號(hào)判別法是根據(jù)動(dòng)點(diǎn)坐標(biāo)本身位置的變化自動(dòng)轉(zhuǎn)換運(yùn)算和判別,自動(dòng)轉(zhuǎn)入其他象限,改變偏差計(jì)算、坐標(biāo)計(jì)算式。
方案3:數(shù)學(xué)建模法[21]。
數(shù)學(xué)建模法是指用數(shù)學(xué)方法,運(yùn)用幾何知識(shí)(極坐標(biāo))把圓上的點(diǎn)和兩個(gè)電機(jī)所在的位置聯(lián)系起來,通過相關(guān)計(jì)算把圓上的點(diǎn)的坐標(biāo)用數(shù)學(xué)表達(dá)式表示出來,并轉(zhuǎn)換成電機(jī)所要轉(zhuǎn)動(dòng)的偏移量,最后把偏移量轉(zhuǎn)化為電機(jī)所要轉(zhuǎn)的速度。此方法,計(jì)算復(fù)雜,但所得數(shù)據(jù)較為準(zhǔn)確,只要編程正確,用電機(jī)所畫出來的線就不會(huì)編差大。
上述幾種方法我們都嘗試編程,但在調(diào)試過程中,前兩種方法的誤差比較大.達(dá)不到比賽的要求,最后我們只能采用方案3。采用方案3的算法相當(dāng)復(fù)雜, 而且要經(jīng)過了無數(shù)次調(diào)試.
(2) 直線的計(jì)算和編程
從圖3.10我們可以看到假設(shè)原點(diǎn)坐標(biāo)X0,Y0,要達(dá)到的坐標(biāo)點(diǎn)X1,Y1
圖3.10 數(shù)學(xué)建模算法
那么到坐標(biāo)點(diǎn)的距離L
我們沒有采用Y=KX+B的直線方程,而是把L的長度分為COUNT_L等分
我們計(jì)算出每一個(gè)增量INC_X,INC_Y
我們假設(shè)一個(gè)變量i,i的范圍從1----COUNT_L
所以每走一步的坐標(biāo)值
畫直線函數(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 ;
}
我們可以看到畫直線的程序的復(fù)雜性.
(3) 圓的的計(jì)算和編程[20]
在圓弧的編程中,它的算法比直線的算法更復(fù)雜.從圖我們可以看到假設(shè)圓心坐標(biāo)X0,Y0,半徑為R
圓上的一點(diǎn)坐標(biāo)為XQ,YQ
XQ=X0+R
YQ=Y0
而我們把圓分成360度,即設(shè)一個(gè)變量,的范圍從1到360,每走一小步的坐標(biāo)值XX,YY
那么它的力臂LL,LR
LL=
LR=
而原點(diǎn)坐標(biāo)的力臂LL0,LR0
LL0=
LR0=
因此力臂的增量為LL,LR
△LL= LL- LL0
△LR= LR- LR0
因我們的步進(jìn)不同,所以它的增量分別為0.026,0.026,最后才計(jì)算出要給的脈沖數(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). 坐標(biāo)的顯示和編程
坐標(biāo)的顯示和編程就是把每走一步走的距離顯示在液晶上[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)測(cè)試
4.1 硬件測(cè)試
對(duì)懸掛運(yùn)動(dòng)控制系統(tǒng)各單元的測(cè)試包括最小系統(tǒng)模塊測(cè)試、LCD測(cè)試、鍵盤測(cè)試、電機(jī)驅(qū)動(dòng)測(cè)試。
測(cè)試內(nèi)容
測(cè)試儀器
測(cè)試方法
測(cè)試結(jié)果
最小系統(tǒng)測(cè)試
萬用表
實(shí)測(cè)
工作正常
LCD測(cè)試
萬用表
實(shí)測(cè)
顯示正常
鍵盤測(cè)試
萬用表
實(shí)測(cè)
輸入正常
電機(jī)驅(qū)動(dòng)測(cè)試
萬用表
實(shí)測(cè)
輸出正常
4.2 軟件測(cè)試
4.2.1 單元測(cè)試
白盒測(cè)試
白盒測(cè)試是一種透明的測(cè)試技術(shù),它包括邏輯覆蓋、基本路徑、循環(huán)覆蓋等幾種典型的白盒測(cè)試技術(shù),它是以程序的內(nèi)部邏輯結(jié)構(gòu)為基礎(chǔ)來設(shè)計(jì)測(cè)試用例的[16],其原則是:
保證程序中每一個(gè)獨(dú)立的路徑至少執(zhí)行一次。
保證所有判定的每一個(gè)分支至少執(zhí)行一次。
保證每個(gè)判定表達(dá)式中每個(gè)條件的所有可能結(jié)果至少執(zhí)行一次。
保證每一循環(huán)都在邊界條件和一般條件至少各執(zhí)行一次。
保證所有內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性。
我選擇基本路徑測(cè)試方法對(duì)我的軟件設(shè)計(jì)部分的程序進(jìn)行測(cè)試?;韭窂綔y(cè)試對(duì)于不太復(fù)雜的程序進(jìn)行窮盡測(cè)試往往是不可能的?;韭窂綔y(cè)試方法就可以較好的解決這類問題,其主要思想是根據(jù)軟件詳細(xì)設(shè)計(jì)的過程性描述或源代碼中的控制流程求出程序的環(huán)形復(fù)雜性度量,然后用此度量確定程序的基本路徑集合,并由此導(dǎo)出一組測(cè)試用例來覆蓋該集合中的每一個(gè)獨(dú)立的路徑,從而可以保證每個(gè)語句至少執(zhí)行一次。
以下是采用基本路徑測(cè)試法對(duì)畫直線過程為例進(jìn)行的測(cè)試
1. 畫直線過程的流程圖為圖3.14,畫直線過程的流圖為圖4-2-1所示
圖4.1 畫直線過程的流圖
2. 根據(jù)流圖確定環(huán)形復(fù)雜度量V(G)??梢杂萌N方法求出V(G)的值:
1)V(G)=E-N+2=10-10+2=2,其中E為流圖中的邊數(shù),N為結(jié)點(diǎn)數(shù)。
2)V(G)=2(個(gè)區(qū)域)
3)V(G)=P+1=1+1=2,其中P為謂詞結(jié)點(diǎn)的個(gè)數(shù)。在圖4-2-1中,僅結(jié)點(diǎn)6是謂詞結(jié)點(diǎn)。
3. 確定基本路徑集合(即獨(dú)立路徑集合)。一條獨(dú)立路徑是指,和其他的獨(dú)立路徑相比,至少引入一個(gè)新處理語句或一個(gè)新判斷的程序通路。在(2)中求出的V(G)值正好等于該程序路徑的條數(shù)。于是可以確定2條獨(dú)立的路徑:
路徑1:1-2-3-4-5-6-7-8-9-6-10
路徑2:1-2-3-4-5-6-7-8-9-6…
其中路徑2后的省略號(hào)表示這些路徑的其余部分已無關(guān)緊要。
(4)為每一條獨(dú)立路徑各設(shè)計(jì)一組測(cè)試用例,以便強(qiáng)迫程序沿著該路至少執(zhí)行一次。
(1) 路徑1的測(cè)試用例:
i=有效的步數(shù)
期望結(jié)果:根據(jù)輸入的坐標(biāo)值,電機(jī)帶動(dòng)重物畫直線。
(2) 路徑2的測(cè)試用例:
i=k,k>count_l
期望結(jié)果:直線完成,電機(jī)停止轉(zhuǎn)動(dòng)。
以上是對(duì)畫直線過程的測(cè)試,其它過程用同種方法進(jìn)行測(cè)試,測(cè)試結(jié)果均為正常。
4.2.2 功能測(cè)試
功能測(cè)試采用黑盒測(cè)試方法:
黑盒測(cè)試主要是測(cè)試軟件是否滿足功能需求。黑盒測(cè)試主要測(cè)試的錯(cuò)誤類型有:
1. 不正確或遺漏的功能。
2. 接口錯(cuò)誤。
3. 性能錯(cuò)誤。
4. 數(shù)據(jù)結(jié)構(gòu)或外部數(shù)據(jù)訪問錯(cuò)誤。
5. 初始化或終止條件錯(cuò)誤等。
黑盒測(cè)試主要包括等價(jià)類的劃分、邊界值分析、錯(cuò)誤推測(cè)、組合數(shù)據(jù)測(cè)試等幾種設(shè)計(jì)測(cè)試用例的方法。
對(duì)懸掛運(yùn)系統(tǒng)采用等價(jià)類劃分方法進(jìn)行測(cè)試,以下是用等價(jià)類劃分法設(shè)計(jì)測(cè)試用例,來測(cè)試程序畫圓過程,測(cè)試過程如下:
(1) 劃分等價(jià)類并編號(hào)。等價(jià)類劃分的結(jié)果如表4.1所示,即劃分成3個(gè)有效等價(jià)類和5個(gè)元效等價(jià)類。
表4.1 輸入坐標(biāo)值的等價(jià)類劃分
輸入有效等價(jià)類
有效等價(jià)類
無效等價(jià)類
坐標(biāo)輸入類型及長度
①整數(shù)部分為兩位的浮點(diǎn)
②整數(shù)部分超出兩位的數(shù)
X軸坐標(biāo)取值范圍
③在0~80之間
④小于0
⑤大于80
Y軸坐標(biāo)取值范圍
⑥在0~99之間
⑦小于0
⑧大于100
(2) 設(shè)計(jì)測(cè)試用例,以便覆蓋所有的有效等價(jià)類。在表4-1中列出3個(gè)有效等價(jià)類;覆蓋的編號(hào)分別為①③⑥,設(shè)計(jì)的測(cè)試用例如下:
測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋的有效等價(jià)類
50 輸入有效 ① ③ ⑥
c. 為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例,設(shè)計(jì)結(jié)果如下:
測(cè)試數(shù)據(jù) 期望結(jié)果 覆蓋的無效等價(jià)類
423 輸入無效 ②
-1 輸入無效 ④
95 輸入無效 ⑤
-3 輸入無效 ⑦
110 輸入無效 ⑧
4.2.3 集成測(cè)試
為了確定系統(tǒng)與題目要求的符合程度,我們對(duì)系統(tǒng)中的關(guān)鍵部分進(jìn)行了測(cè)試。位置測(cè)試如下:
表4.1 直線測(cè)試表
原點(diǎn)坐標(biāo)(X,Y)
輸入坐標(biāo)(X,Y)
實(shí)際測(cè)量距離值
誤差值
運(yùn)行時(shí)間
(10cm,10cm)
(40cm, 50cm)
39cm,49.2cm)
0.8cm-2cm
20S
(19cm,24cm)
(34cm,35cm)
(33cm,34.5cm)
1cm-2-cm
2S
表4.2 圓弧測(cè)試表
圓點(diǎn)坐標(biāo)(X,Y)
實(shí)際測(cè)量半徑值
誤差值
運(yùn)行時(shí)間
(40cm,50cm)
23~27cm
+-2cm
150S
4.2.4 測(cè)試結(jié)果
經(jīng)過以上測(cè)試后,各模塊都能正常工作,輸入模塊可以正確的輸入數(shù)據(jù),顯示模塊可以正確的顯示信息,驅(qū)動(dòng)模塊可以正確的驅(qū)動(dòng)電機(jī)??梢酝ㄟ^鍵盤輸入,使單片機(jī)帶動(dòng)重物,繪制出規(guī)定的圖形。
結(jié) 論
本文介紹的懸掛運(yùn)動(dòng)控制系統(tǒng)是基于單片機(jī)的控制系統(tǒng),集輸入、顯示、對(duì)電機(jī)的驅(qū)動(dòng)于一身,另外還增加了與上位機(jī)的通信。顯示出了方便操作,功能完善、高集成度等特點(diǎn)。
本系統(tǒng)另一大特點(diǎn)的大部分功能由程序?qū)崿F(xiàn),節(jié)省了很多硬件,雖然算法和程序都非常復(fù)雜,但它省了很多硬件電路.因?yàn)楝F(xiàn)在提倡”硬件變?yōu)檐浖睂?duì)我們的編程能力有很大的促進(jìn)。在本系統(tǒng)設(shè)計(jì)中,我們完成了全部基本要求,并完成了發(fā)揮部分的第一條。
經(jīng)過詳細(xì)的測(cè)試,各模塊都能正常工作,輸入模塊可以正確的輸入數(shù)據(jù),顯示模塊可以正確的顯示信息,驅(qū)動(dòng)模塊可以正確的驅(qū)動(dòng)電機(jī)??梢酝ㄟ^鍵盤輸入,使單片機(jī)帶動(dòng)重物,繪制出規(guī)定的圖形。
最終完成的系統(tǒng)的運(yùn)行情況,反映出了本系統(tǒng)方案正確、實(shí)現(xiàn)方法可行,運(yùn)行效果好。
后 記
短短二個(gè)月的畢業(yè)設(shè)計(jì)已經(jīng)結(jié)束了,回顧這段時(shí)光,我身有感觸,它不僅是我所學(xué)知識(shí)的一次全面的考查而且也是從理論知識(shí)到實(shí)踐操作的一次大的深化。
大學(xué)三年多的時(shí)間都是在學(xué)習(xí)基礎(chǔ)知識(shí),并未真正系統(tǒng)地去應(yīng)用和實(shí)踐。但是經(jīng)過這次畢業(yè)設(shè)計(jì),我接觸到了更多平時(shí)沒有接觸到的儀器設(shè)備、元器件,及時(shí)地彌補(bǔ)了這方面知識(shí)的不足,深刻體會(huì)到了所學(xué)理論知識(shí)的重要性。知識(shí)掌握得越多,設(shè)計(jì)得就更全面、更順利、更好。在此我要感謝四年來教過我的所有老師,沒有你們的精心教導(dǎo),就沒有今天將要畢業(yè)的我。
在畢業(yè)設(shè)計(jì)中,老師不僅使我養(yǎng)成了嚴(yán)肅認(rèn)真和實(shí)事求是的科學(xué)態(tài)度,同時(shí)也培養(yǎng)了我吃苦耐勞的精神以及相互合作的團(tuán)隊(duì)精神,同學(xué)之間的友誼也充分的在畢業(yè)設(shè)計(jì)當(dāng)中更加深厚了。我不僅學(xué)到了很多的與本專業(yè)相關(guān)知識(shí),而且加深了所學(xué)課程知識(shí),深刻感受到了知識(shí)的偉大和工作的快樂。在具體的設(shè)計(jì)中,我遇到了一些困難,通過上網(wǎng)和圖書館查到了許多相關(guān)的知識(shí),經(jīng)過自己的仔細(xì)分析和小組成員一起討論研究,并向?qū)熣?qǐng)教,最終不只解決了所遇到的困難,而且學(xué)到了很多的知識(shí),擴(kuò)大了知識(shí)面。
從最初的茫然,到現(xiàn)在小有成果;從最初的無從下手,到現(xiàn)在的信心百倍;離不開導(dǎo)師耐心的指導(dǎo)和小組成員的共同努力。畢業(yè)設(shè)計(jì)到了尾聲,無論是知識(shí)的收獲,還是同學(xué)友誼和師生情誼的加深,使我更加有信心面對(duì)以后的工作。在這里我個(gè)人非常感謝孫海老師給予我和小組成員的精心指導(dǎo)和幫助。
參考文獻(xiàn)
[1] 吳秀清.微型計(jì)算機(jī)原理與接口技術(shù)[M].北京:中國科學(xué)技術(shù)大學(xué)出版社,2002.7. 1—60.
[2] 孫永浩.MCS-51 單片機(jī)開發(fā)與應(yīng)用指南[M]. 哈爾濱:黑龍江科學(xué)技術(shù)出版社,1989.1. 23—80.
[3] 宋文緒.自動(dòng)檢測(cè)技術(shù)[M].北京: 冶金工業(yè)出版社,2000.2. 112—135.
[4] 孫和平.單片微機(jī)原理與接口技術(shù)[M].北京:冶金工出版社,2003.6. 138—200.
[5] 李建忠.單片機(jī)原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2001.9. 37-79.
[6] 求實(shí)科技.單片機(jī)典型模塊設(shè)計(jì)實(shí)例導(dǎo)航[M].北京:人民郵電出版社,2004.3 44—67.
[7] 裘雪紅.微型計(jì)算機(jī)原理及接口技術(shù)[M].西安:西安電子科技
收藏