课程设计二相步进电机控制系统的设计.doc

上传人:仙人指路1688 文档编号:2881370 上传时间:2023-03-01 格式:DOC 页数:25 大小:619KB
返回 下载 相关 举报
课程设计二相步进电机控制系统的设计.doc_第1页
第1页 / 共25页
课程设计二相步进电机控制系统的设计.doc_第2页
第2页 / 共25页
课程设计二相步进电机控制系统的设计.doc_第3页
第3页 / 共25页
课程设计二相步进电机控制系统的设计.doc_第4页
第4页 / 共25页
课程设计二相步进电机控制系统的设计.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《课程设计二相步进电机控制系统的设计.doc》由会员分享,可在线阅读,更多相关《课程设计二相步进电机控制系统的设计.doc(25页珍藏版)》请在三一办公上搜索。

1、摘要随着微电子和计算机技术的发展,步进电机的需求量与日俱增,它广泛用于打印机、电动玩具等消费类产品以及数控机床、工业机器人、医疗器械等机电产品中,其在各个国民经济领域都有应用。研究步进电机的控制系统,对提高控制精度和响应速度、节约能源等都具有重要意义。本控制系统的设计,由硬件设计和软件设计两部分组成,完成二相步进电机的控制。其中,硬件设计主要包括单片机系统、按键控制模块、步进电机驱动模块、数码显示模块等功能模块的设计,以及硬件电路在PROTUS上的仿真。软件设计包括主程序以及各个模块的控制程序,最终实现对步进电机转动方向及转动模式(四拍,八拍)的控制,并且将步进电机的步进数动态显示在LED数码

2、管上。本系统具有智能性、实用性及可靠性的特点。关键词:二相步进电机 单片机 四拍 八拍 LED显示AbstractWith the development of microelectronics and computer art, step-by-step electric motor need amounts increase with each passing day , it is used for the products consuming a kind such as printer , electricity-driven toy broadly and numerical co

3、ntrol machine tool , electromechanical products such as industry robot , medical apparatus and instruments are hit by, the person applies to each national economy field It both. Study step-by-step electric motor navar , having importance to improving under the control of accuracy and responding to s

4、peed , the energy saving and so on. Control systematic design originally, the made up of designing two parts from the hardware design and the software , controlling accomplishing two-phase step-by-step electric motor. And among them, the hardware design includes the monolithic machine system mainly

5、, button under the control of module , step-by-step electric motor drive function module design such as module , numerical code display module, hardware circuit emulation on PROTUS. The software designs under the control of procedure including the host procedure and each modules , realizes controlli

6、ng turning direction to step-by-step electric motor and turning the pattern (four shoot , eight shoots) ultimately , step-by-step electric motor step-by-step number development is demonstrated and on LED numerical code. System has intelligence , pragmatism and the reliability characteristic.Keywords

7、: Electric motor MCU Four shoots Eight shoots LEDdisplay目录摘要.21总体分析与解决方案.11.1问题的提出与简述.1 1.2设计目的级系统功能.12 硬件电路设计模块.2 2.1单片机系统原理.2 2.2二相步进电机工作原理分析.52.3 L298驱动电路设计.72.4 四位LED数码管显示设计.72.5总体硬件仿真设计.103软件设计模块.113.1整体流程分析与设计.11 3.2步进电机四拍,八拍流程分析与设计.113.3显示模块流程分析与设计.144 系统调试运行与仿真.155 小结与心得体会.16参考文献.17附录.18二相步进

8、电机控制系统的设计1总体分析与解决方案1.1问题的提出与简述 如今,电动机在工农业生产、人们日常生活中起着十分重要的作用。步进电机是最常见的一种控制电机,在各领域中得到广泛应用。步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过

9、控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,其优点是结构简单、运行可靠、控制方便。尤其是步距值不受电压、温度的变化的影响、误差不会长期积累的特点,给实际的应用带来了很大的方便。它广泛用于消费类产品(打印机、照相机)、工业控制(数控机床、工业机器人)、医疗器械等机电产品中。研究步进电机的控制和测量方法,对提高控制精度和响应速度、节约能源等都具有重要意义。为此,本文设计了一个步进电机控制系统,可以实现对步进电机转动方式和转动方向的控制。1.2设计目的及系统功能本设计的目的是以单片机为核心设计出一个二相步进电机控制系统。本系统采用ATmega1

10、28作为控制单元,通过按键实现对二相步进电机转动方向及转动模式的控制,并且将步进电机的步进步数动态显示在LED数码管上。通过本课题,查阅相关资料,由于本学期所学单片机课程型号为ATmega128,了解了ATmega128单片机控制的一些基本技术,掌握其控制系统的分析方法与实现方法,能对单片机外围电路设计进行系统学习与掌握;另一方面,通过设计步进电机控制系统的硬件电路,控制程序和相应的电路图,以此培养自己的自学和动手能力,从而为今后参加工作或进一步深造打下良好的基础。设计的步进电机控制系统有以下功能:1. 二相步进电机采用双极性(H桥)控制2用K0-K1作为通电方式选择键,K0为四拍,K1为八拍

11、3. 用K2作为启动/停止控制键4. 用K3作为方向控制5. 用4位LED数码管显示工作步数6. 用3个发光二极管显示状态:正转时红灯亮,反转时黄灯亮,不转时绿灯亮考虑到二相步进电机需采用双极性控制,故电机的驱动模块使用芯片L298实现,接线简洁,稳定性好。选定好设计方案后,可以由分析得到系统的总体原理框图如下所示:图1系统总体原理框图2硬件电路设计模块2.1 单片机系统原理 本次课题采用的单片机型号是ATmega128,ATmega128为基于AVR RISC结构的8位低功耗CMOS微处理器。由于其先进的指令集以及单周期指令执行时,ATmega128 的数据吞吐率高达1 MIPS/MHz,从

12、而可以缓减系统在功耗和处理速度之间的矛盾。AVR 内核具有丰富的指令集和32个通用工作寄存器。所有的寄存器都直接与算逻单元(ALU) 相连接,使得一条指令可以在一个时钟周期内同时访问两个独立的寄存器。这种结构大大提高了代码效率,并且具有比普通的复杂指令集微处理器高10 倍的数据吞吐率。ATmega128 具有如下特点:128K 字节的系统内可编程Flash( 具有在写的过程中还可以读的能力,即RWW)、4K字节的EEPROM,4K字节的SRAM、53个通用I/O 口线、32个通用工作寄存器、实时时钟RTC、4个灵活的具有比较模式和PWM 功能的定时器/ 计数器(T/C)、两个USART、面向字

13、节的两线接口TWI、8通道10位ADC( 具有可选的可编程增益)、具有片内振荡器的可编程看门狗定时器、SPI串行端口、与IEEE 1149.1 规范兼容的JTAG测试接口( 此接口同时还可以用于片上调试),以及六种可以通过软件选择的省电模式。ATmega128 AVR有整套的开发工具,包括C编译器,宏汇编,程序调试器/ 仿真器和评估板。芯片引脚图如下所示:图2 ATmega128的引脚图本次课设所使用的单片机功能主要有单片机的I/O口以及定时器/计数器功能。作为通用数字I/O 使用时,所有AVR I/O 端口都具有真正的读- 修改- 写功能。这意味着用SBI 或CBI 指令改变某些管脚的方向(

14、 或者是端口电平、禁止/ 使能上拉电阻) 时不会无意地改变其他管脚的方向( 或者是端口电平、禁止/ 使能上拉电阻)。输出缓冲器具有对称的驱动能力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻,并有保护二极管与VCC 和地相连。每个端口都有三个I/O 存储器地址:数据寄存器 PORTx、 数据方向寄存器 DDRx 和端口输入引脚 PINx。数据寄存器和数据方向寄存器为读/ 写寄存器,而端口输入引脚为只读寄存器。当寄存器SFIOR 的上拉禁止位PUD 置位时所有端口的全部引脚的上拉电阻都被禁止。DDxn 位于DDRx 寄存器, PORTxn 位于PORTx 寄存器

15、, PINxn 位于PINx 寄存器。DDxn 以来选择引脚的方向。当DDxn 为1“ 时, Pxn 配置为输出;否则为输入。当引脚配置为输入时,若PORTxn 为1“,上拉电阻将使能。如果需要关闭这个上拉电阻,可以将PORTxn 清零,或者将这个引脚配置为输出。复位时各引脚为三态,即使此时没有时钟在运行。当引脚配置为输出时,若PORTxn 为1“,引脚输出高电平(1“),否则输出低电平(“0“)。在( 高阻态) 三态(DDxn, PORTxn = 0b00) 输出高电平(DDxn, PORTxn = 0b11) 两种状态之间进行切换时,上拉电阻使能(DDxn, PORTxn = 0b01)

16、或输出低电平(DDxn,PORTxn = 0b10) 这两种模式必然会有一个发生。通常,上拉电阻使能是完全可以接受的,因为高阻环境不在意是强高电平输出还是上拉输出。如果使用情况不是这样子,可以通过置位SFIOR 寄存器的PUD 来禁止所有端口的上拉电阻。在上拉输入和输出低电平之间切换也有同样的问题。必须选择高阻态(DDxn,PORTxn = 0b00) 或输出高电平(DDxn, PORTxn = 0b11) 作为中间步骤。其PROTUS仿真图如下所示:图3 ATmega128的仿真图本次课设采用单片机的定时器/计数器功能的CTC模式, T/C(TCNT0)和输出比较寄存器(OCR0)为8位寄存

17、器。中断请求信号位于定时器中断标志寄存器TIFR。与定时器相关的所有中断都可以通过定时器中断屏蔽寄存器TIMSK 单独进行屏蔽。在CTC 模式(WGM01:0 = 2) 里OCR0 寄存器用于调节计数器的分辨率。当计数器的数值TCNT0 等于OCR0 时计数器清零。OCR0 定义了计数器的top 值,亦即计数器的分辨率。这个模式可以在极大程度上控制比较匹配输出的频率,也简化了外部事件计数的操作。CTC模式的时序图如下所示。计数器数值TCNT0一直增加直到TCNT0与OCR0匹配,然后TCNT0 清零。图4 CTC模式的时序图2.2 二相步进电机工作原理分析步进电机一般分为永磁式(PM)、反应式

18、(VR)和混合式(HB)3种类型。目前,二相混合式步进电机的应用最为广泛。图5为二相六线式步进电机的工作原示意图。由图可知,它有2个绕组,且每个绕组都有一个中间抽头。因此,二相步进电机也就有了6根引线。当电机中的绕组通电后,其定子磁极产生磁场,将转子吸合到相应的磁极处。若绕组在控制脉冲的作用下,通电方向使定子在顺时针方向轮流产生磁场,则电机可顺时针转动;通电方向使定子在逆时针方向轮流产生磁场,则电机可逆时针转动。控制脉冲每作用一次,通电方向就变化一次,使电机转动一步,即一个步距角。脉冲频率越高,电机转动也就越快。本次课设所使用的二相步进电机需要采用双极性的接法。双极性则是指步进电机线圈中电流的

19、流动方向不是单向的,即绕组线圈中的电流有时沿某一方向流动,有时按相反方向流动。步进电机的双极性驱动电路如图2-5所示它使用8个晶体管来驱动2组相位。双极性驱动电路可以同时驱动四线式或六线式的二相步进电机。对于二相六线式步进电机而言, 2个绕组的中间抽头Vdd1和Vdd2都悬空。根据步进电机的工作原理,当控制器给驱动器发出脉冲信号时,驱动器经过环形分配器和功率放大后,电机绕组通电的顺序为,其4个状态按顺序周而复始进行变化,电机转动; 若通电时序就变为时,电机就逆向转动。步进电机运转时,当达林顿管Q1和Q4导通时,线圈中电流方向为A;当林顿管Q2和Q3导通时,线圈中电流方向为A。可见,步进电机线圈

20、中的电流方向在运转过程中是不断改变的。图5 二相步进电机原理图图6 双极性驱动电路 任务要求需要对二相步进电机进行四拍,八拍的控制。其两者的区别在于通电时序的不一样,四拍的通电方式为:,而八拍需要在此基础上进行细分,在中间插入,其通电方式为: 。由对应的通电方式,在结合图6,便可以得到对应的单片机管脚P1.0,P1.1,P1.2,P1.3的电平变化情况,绘制出步进电机的四拍,八拍控制方式表格。如下所示:表1 步进电机四拍控制通电方式时序单片机管脚位通电的线圈对应二进制数转换16进制数P1.3P1.2P1.1P1.010010001002H21000100008H30001000101H4010

21、0010004H表2 步进电机八拍控制通电方式时序单片机管脚位通电的线圈对应二进制数转换16进制数P1.3P1.2P1.1P1.010010001002H2101010100AH31000100008H41001100109H50001000101H60101010105H70100010004H80110011006H由上述所得表格,便可以通过控制单片机I/O口输出高低电平变化来实现步进电机的四拍,八拍运转。在编写程序时,设置好控制字,在I/O口做循环输出,便实现了单片机对步进电机的控制。由于单片机单独代负载能力较差,步进电机与单片机之间需要接入步进电机的驱动电路。2.3 L298驱动电路设

22、计由课题任务要求可知,二相步进电机需采用双极性(H桥)控制,故考虑使用芯片L298来驱动步进电机。L298N 为双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,内含二个H-Bridge 的高电压、大电流双全桥式驱动器,接收标准TTL逻辑准位信号,可驱动46V、2A以下的步进电机,且可以直接透过电源来调节输出电压;此芯片可直接由单片机的IO端口来提供模拟时序信号。在接入步进电机时,OUTl,OUT2 ,OUT3,OUT4接二相步进电机的,,二相步进电机的对应管脚以图6为准,input1input4接单片机的I/O

23、口,用来控制单片机的正反转以及四拍,八拍通电方式。芯片的内部结构如下图所示:图7 L298内部结构图由图6与图7比较可以看出,L298内部集成有2个H桥路,对应的输入接口为:IN1位P1.1,IN2为P1.0,IN3为P1.2,IN4为P1.3。对应的输出接口为:OUT1接,OUT2接,OUT3接,OUT4接。PROTUS仿真图为:图8 驱动电路PROTUS仿真图2.4 四位LED数码管显示设计 任务要求需采用4位LED数码管显示工作步数,通过查阅相关资料,在仿真时采用型号7SEG-MPX4-CC共阴极数码管显示。其PROTUS仿真图如下所示:图9 数码管显示仿真图单片机的PD口接数码管输入管

24、脚ABCDEFG以及DP(可以不用),PE口接4位数码管的片选端口1234,7段数码管对应的显示数值与输入信号的关系可以由下表得到。表3 七段数码管显示功能表单片机管脚输入显示十六进制PD0PD1PD2PD3PD4PD5PD6ABCDEFG1111110O3FH0110000106H110110125BH111100134FH0110011466H1.01101156DH001111167DH1110000707H111111187FH111101196FH由上表可以得到显示数字与单片机管脚输入信号的对应关系。只需要控制单片机的PD口输出信号即可显示数字,在程序设计中,定义7段显示数组为sev

25、en_seg10= 0X3f, 0X06, 0X5b, 0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f即可使数码管显示数字。2.5 总体硬件仿真设计 由前面各硬件部分的设计分析,以及控制系统的总体原理框图可以得到系统的硬件PROTUS仿真图为: 图10 系统仿真原理图 通过硬件仿真图可以看到,以单片机ATmega128为核心的控制系统,由PA口与PB口进行开关按键的设置,具体为:PB1接K2启动/停止开关,高电平为停止状态,低电平为启动状态;PA7接K3正/反转开关,高电平为正转,低电平为反转;PA0接K0四拍通电方式,按一次即可使电机进行四拍运转;PA2接K1八拍通电方

26、式,按一次使电机进行八拍运转。 PE口与PD口外接4位LED数码管,显示步进步数,具体接线方式已在前面叙述,通过控制PE口的电平信号,达到片选的目的,进而实现4位数值的显示。PF口作为输出口外接负载,具体由PF7接绿色发光二极管,使其在电机停转时亮;PF5接红色放光二极管,使其在电机正转时亮;PF4接黄色发光二极管,使其在电机发转时亮。PF0-PF3外接驱动电路L298的4个输入端,具体为PF0接IN2,PF1接IN1,PF2接IN3,PF3接IN4;即对应图2-5的P1.0-P1.3,L298再外接二相步进电机,这样即可通过控制单片机的PF口输出电平来实现二相步进电机的启动,停止,正反转以及

27、四拍,八拍运转。具体工作过程需通过对单片机编程来实现。3软件设计模块3.1总体流程分析与设计 软件模块的分析需要根据硬件电路的设计来进行,基于上述硬件电路的分析设计,对整个程序流程需要有个整体的思考与判断。由硬件电路的设计可以看出,程序需要实现以下几个功能:通过开关按键实现电机的启用与停止,正转与反转,以及四拍,八拍的运行方式;由4位LED数码管实现步进步数的显示;3个发光二极管显示电机的状态。程序设计的总体思想是单片机通过判断按键输入电平变化从而选择正反转以及四八拍的工作方式。通过单片机的定时器/计数器2实现步数计数的功能;由定时器/计数器0实现单片机PF口输出正反转信号以及四拍,八拍控制字

28、,同时发光二极管显示状态,主程序流程图如图3-1所示。程序设计主要采用主程序调用子程序的模式来进行,定义子程序display()在主程序中循环实现单片机的持续运行。在display()中,调用子程序saomiao()实现对按键的扫描以达到选定电机运行状态的目的,由if判断语句设计,先判断启动/停止按键接口PB1,接着判断正/反转按键接口PA7,设定变量flag(正转位0,反转为2),然后判断四八拍方式选择按键,此时开启定时器/计数器0和定时器/计数器2,以及确定循环变量tt(四拍为4,八拍为8),由于定时器/计数器的启动,使得单片机的PF口输出对应方式的控制字,让电机开始运转;计数功能启用,实

29、现步进数的计数,最后通过片选数组scank选定数码管的位数,并由七段数组seven_seg,显示对应的数值。最后重新判断PB口数值,若启动/停止按键为停止,则关闭定时器/计数器0和定时器/计数器2,系统停止,具体完整程序参见附录。3.2步进电机四拍,八拍流程分析与设计 程序设计需要对步进电机进行四拍控制与八拍控制,有前面所述可知,两者的区别在于对电机的通电时序不一样。由表2-1与表2-2可以得到电机的控制字,在程序设计时,首先定义电机的控制字数组,由于存在正反转两种情况,所以定义一个2维数组为d48= 0x22,0x28,0x21,0x24,0x22,0x2a,0x28,029,0x21,0x

30、25,0x24,0x26,0x14,0x11,0x18,0x12,0x14,0x15,0x11, 0x19, 0x18, 0x1a,0x12,0x16;分别为电机正转4拍,正转8拍,反转4拍,反转8拍的控制字;通过给单片机PF口赋予上述数值即可实现步进电机的不同方式运转,同时由发光二极管显示电机的工作状态。图11 主程序流程图 在程序设计时,需要使用单片机的定时器/计数器0功能实现四拍,八拍运转。在程序中,首先有saomiao()程序判断所选功能按键,同时开启定时器/计数器0,在其初始化程序里,设定寄存器的值为TCNT0 = 0x64,OCR0 = 0x9C,当TCNT0的计数值与OCR0相等

31、时,触发中断子程序timer0_comp_isr(),在中断子程序里,先重新赋予寄存器数值TCNT0 = 0x64,OCR0 = 0x9C,以便下次触发中断程序,然后将设定的计数变量timer0加1,判断timer0是否为50,当累加到50后,将timer0清零,变量i加1,将对应的控制字d4flag+paii%tt赋给PF口,使电机转动,让循环重复上述过程。flag+pai确定了电机的正反转以及四拍,八拍方式;当为四拍时,tt=4,为八拍时,tt=8;这样即可使控制字循环输出给PF口,从而实现了步进电机的四拍,八拍运转。其程序流程图如下所示:图12 步进电机四拍,八拍流程图 程序通过控制寄存

32、器值TCCR0来控制定时器/计数器0的启动与停止,当TCCR0=0x0E时,定时器/计数器0启动,TCNT0累加,当TCNTO=OCR0时,触发相应的中断子程序,设定当timer0=50时,将控制字输出到PF口,实现了一定的延时,可以调整这个数值以达到满意的延时效果,将TCCR0设置为0x00来屏蔽定时器/计数器0功能。3.3显示模块流程分析与设计 硬件设计得到了4位LED数码管的显示电路,由单片机的PD口输出显示数字,有PE口用来输出片选信号。由前所述表3可知,ABCDEFG管脚对应的数字显示,得到了10个对应的十六进制数,在程序设计中,先定义了7段数码管显示数组seven_seg10=0X

33、3f,0X06,0X5b,0X4f,0X66, 0X6d, 0X7d, 0X07, 0X7f, 0X6f,以及片选数组scan4=0Xf7,0Xfb,0Xfd,0Xfe;使用定时器/计数器2来实现计数的功能,其工作方式与定时器/计数器0一样,在时序上与定时器/计数器0保持一致,以达到步进与计数同步的效果,其设定的TCNT2与OCR2值与前面一致。其程序流程图如下所示:图13 中断计数程序流程图通过定时器/计数器2实现计数的功能,要显示出计数结果,需要给单片机PE口对应的片选信号来实现每位数值的显示。其对应的程序代码如下:PORTE =scank;/对应的片选信号 switch(k)/显示每位数

34、值case 0 : PORTD=seven_segnow.geshi%10; break;/显示个位case 1 : PORTD=seven_segnow.geshi/10;break;/显示十位case 2 : PORTD=seven_segnow.baiqian%10;break;/显示百位 case 3 : PORTD=seven_segnow.baiqian/10;break;/显示千位 k+; if(k=4) k=0;/4位循环显示,清零对上述程序代码循环运行,即可实现4位LED数码管的显示功能。4系统调试运行与仿真硬件设计模块完成了对系统电路图的设计,软件模块由程序实现了各项功能;

35、接下来需要将软件与硬件结合起来才能真正完成整个设计工作。我们采用的是PROTUS仿真软件得到了系统的硬件图,参见图10;使用ICC AVR软件的集成环境调试程序,程序代码请参见附录,在该集成环境下,创建一工程,将程序装入该工程下,调试运行无误后,该工程会自动生成.hex文件,在PROTUS仿真环境里,在单片机中载入该文件,这样便实现了单片机程序的载入。在系统完成后测试系统,检查硬件和软件是否能够协调运行,并对系统出现的情况进行分析,看是否能够达到系统创作之初所设想的效果,如达不到则重新修改系统的硬件结构或者修改软件的程序部分,直到达到设计需要为止。本系统的设计思路为:首先从整体上划分出各功能模

36、块,然后硬件和软件同时进行依次完成各个功能模块,最后将各个模块联系起来完成整个系统。在硬件调试的过程中,遇到了很多问题。主要有: 按键设计完成后,在多次运行过程中发现按键是否按下难以直观准确判断,在此处进行改进设计,为每一个按键接上一个发光二极管,当有键按下时,相对应的发光二极管变亮,使得按键动作形象直观。在步进电机与驱动电路的连接中,需要准确的接好各个管脚,因为程序里的控制字对应着这些管脚电平的变化,不能随便接,单片机的输出口与驱动电路的输出口也需要一一对应,否则电机无法按正常的设计运转。软件测试的时候也有些问题,主要有:控制步进电机转动的程序段完成后,调试发现对步进电机的转速过小,查阅资料

37、后发现设计思路不太合理,原先的设计思路是用主程序控制步进电机转动,采用延时方式控制步进电机速度,由定时器处理按键键值;随即改进程序,主程序用来处理按键,由定时器控制步进电机转动,步进电机转动速度由定时器定时时间决定,可调范围较广。问题得到解决,不仅扩大了步进电机转速的控制范围,也使得单片机对步进电机转速的控制更加精确。5小结与心得体会经过与同小组同学的共同努力,近一个多星期的学习,本次课程设计课题二相步进电机控制系统告一段落。二相步进电机控制系统的设计主要分为硬件设计和软件设计两个部分:硬件设计主要是把单片机系统(ATmega128)、按键控制模块、步进电机驱动模块(L298)、数码显示模块等

38、各个硬件功能模块及其它元件合理搭配并连接起来使其能够为软件运行提供一个硬件平台。软件设计主要是通过编写程序代码,实现对整个系统的控制。在系统上电复位后程序自动运行,通过接受外部的键盘操作修改系统参数值,控制步进电机的启停,以及四拍,八拍通电方式和转动方向的改变;定时器T0根据系统参数控制步进电机的转动;定时器T2实现步进电机步进步数的动态显示。本系统具有一定的实用功能,能基本符合实际应用需求,本次设计由于设计时间较短,个人能力以及精力等因素的限制,加之设计经验的不足,该系统还有许多不尽如人意的地方。该系统具有一定的缺陷,并不完美,但仿真成功的那一刻的感觉是很美妙的,努力有了收获,学的很充实。通

39、过这次课程设计,使我从一开始对系统的不太熟悉,到能开发一个简单的系统,在这整个过程中我学到了很多东西,掌握了一些常用的开发技能,也发现了大量的问题,有些在设计过程中已经解决,有些还有待今后慢慢学习。近十天的课程设计,使我受益匪浅。我不仅了解了把理论设计转换成现实实物的整个过程。如:查阅资料,方案选定,电路设计,仿真电路图,检查调试,软件流程控制,编写调试软件到整个软硬件系统的调试,最后直到系统完成。为我以后的设计打下了一个好的基础。而且使我更加熟悉了整个设计的过程和一些软件及硬件设备的使用。对我以后面对这方面的工作有了很大的帮助,锻炼了自己解决实际问题的能力,也培养了我们求真务实的态度。参考文

40、献1 于海生,计算机控制技术M,北京:机械工业出版社,2007年2 张毅刚,新编MCS-51单片机应用设计M,哈尔滨:哈尔滨工业大学出版社,2006年3 陈冬云,ATmega128 单片机原理与开发指导M,北京:机械工业出版社,2005年4 王彦平,RPOTEL 99 电路设计指南M,北京:清华大学出版社,2000年5 沈美明,IBM-PC汇编语言程序设计M, 北京:清华大学出版社,2001年6 沈精虎,Protel99 入门与提高M, 北京:人民邮电出版社,2007年7 吴金戌,8051 单片机时间与应用M, 北京:清华大学出版社,2003年8 胡辉,单片机原理及应用设计M, 北京:中国水利

41、水电出版社,2007年附录:程序代码:/ICC-AVR application builder : 2009/6/30 14:09:19/ Target : M128/ Crystal: 4.0000Mhz#include #include unsigned char d48=0x22,0x28,0x21,0x24,0x22,0x2a,0x28,0x29,0x21,0x25,0x24,0x26, 0x14,0x11,0x18,0x12,0x14,0x15,0x11,0x19,0x18,0x1a,0x12,0x16;/定义电机四八拍正反转控制字unsigned char scan4=0Xf7,0

42、Xfb,0Xfd,0Xfe;/*选择扫描显示数码管,送PE口选数码管*/unsigned char seven_seg10=0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07,0X7f,0X6f;/*0-9的字符表,送PF口显示*/unsigned char flag,pai,tt,i,key,k=0;/定义正反转,模式,拍数,按键值,数码管选位typedef struct char baiqian;char geshi; conut; /定义计数变量conut now;void port_init(void)/端口初始化程序 PORTA = 0xFF; DDRA = 0x00; PORTB = 0xFF; DDRB = 0x00; PORTC = 0x00; /m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0xFF; PORTE = 0x00; DDRE = 0xFF; PORTF = 0x00; DDRF = 0xFF; PORTG = 0x00; DDRG = 0x00;/TIMER0 initialize - prescale:256/ WGM: CTC/ des

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号