基于单片机的步进电机转速控制资料
基于stm32单片机的步进电机实验报告

基于stm32单片机的步进电机实验报告步进电机是一种将电脑控制信号转换为机械运动的设备,常用于打印机、数码相机和汽车电子等领域。
本实验使用STM32单片机控制步进电机,主要目的是通过编程实现步进电机的旋转控制。
首先,我们需要了解步进电机的基本原理。
步进电机是一种能够按照一定步长精确旋转的电机。
它由定子和转子两部分组成,通过改变定子和转子的电流,使转子按照一定的角度进行旋转。
在本实验中,我们选择了一种四相八拍步进电机。
该电机有四个相位,即A、B、C、D相。
每个相位都有两个状态:正常(HIGH)和反向(LOW)。
通过改变相位的状态,可以控制步进电机的旋转。
我们使用STM32单片机作为控制器,通过编程实现对步进电机的控制。
首先,我们需要配置STM32的GPIO口为输出模式。
然后,编写程序通过改变GPIO口的状态来控制步进电机的旋转。
具体来说,我们将A、B、C、D相分别连接到STM32的四个GPIO口,设置为输出模式。
然后,通过改变GPIO口输出的电平状态,可以控制相位的状态。
为了方便控制,我们可以定义一个数组,将表示不同状态的四个元素存储起来。
通过循环控制数组中的元素,可以实现步进电机的旋转。
在实验中,我们通过实时改变数组中元素的值,可以实现不同的旋转效果。
例如,我们可以将数组逐个循环左移或右移,实现步进电机的正转或反转。
在实验过程中,我们可以观察步进电机的旋转情况,并根据需要对程序进行修改和优化。
可以通过改变步进电机的旋转速度或步进角度,来实现更加精确的控制。
总结起来,通过本次实验,我们了解了步进电机的基本原理,并通过STM32单片机控制步进电机的旋转。
通过编写程序改变GPIO口的状态,我们可以实现步进电机的正转、反转和精确控制。
这对于理解和应用步进电机技术具有重要意义。
基于单片机的步进电机控制器设计

基于单片机的步进电机控制器设计步进电机是一种可实现精确控制和定位的电动机,广泛应用于机械和自动化领域。
为了更好地控制步进电机,可以设计一个基于单片机的步进电机控制器。
本文将从步进电机的基本原理、常见控制方式、单片机的选择、电路设计和程序编写等方面进行详细介绍,共计超过1200字。
第一部分:步进电机的基本原理步进电机主要由定子和转子组成,通过电磁原理可以实现精确控制和定位。
步进电机根据工作方式的不同分为全步进电机和半步进电机,全步进电机每次步进一个固定的角度,而半步进电机每次步进一个更小的角度。
第二部分:常见的步进电机控制方式步进电机的控制方式有多种,其中最常见的控制方式是脉冲方向控制和脉冲加减速控制。
脉冲方向控制方式通过给步进电机控制信号的脉冲数和方向来实现电机转动,脉冲加减速控制方式则通过改变脉冲的频率和加减速度来控制电机的转速和位置。
第三部分:单片机的选择在设计步进电机控制器时,需要选择适合的单片机来实现控制逻辑和信号的生成。
常见的单片机有51系列、AVR系列、ARM Cortex-M系列等。
选择单片机时需要考虑其运算速度、存储容量、IO口数量等因素,以满足步进电机控制的要求。
第四部分:电路设计步进电机控制器的电路设计包括电机驱动电路和控制电路。
其中电机驱动电路用于提供适当的电流和电压给步进电机,以实现其运转。
可以选择使用电流驱动器芯片或者使用MOSFET等器件设计电路。
控制电路主要包括单片机和其他外围电路,用于生成控制信号和接收输入信号。
第五部分:程序编写步进电机控制器的程序需要实现控制逻辑和信号的生成。
程序可以使用C语言或者汇编语言进行编写,通过单片机的GPIO口和定时器等模块来生成适当的脉冲信号和控制信号,驱动步进电机实现转动和定位。
综上所述,基于单片机的步进电机控制器设计涉及到步进电机的基本原理、常见的控制方式、单片机的选择、电路设计和程序编写等多个方面。
通过合理的设计和实现,可以实现对步进电机的精确控制和定位,为机械和自动化领域的应用提供便利。
基于单片机步进电机速度控制研究

基于单片机步进电机速度控制研究基于单片机步进电机速度控制研究步进电机是一种非常常见的电机类型,它在很多领域都有广泛的应用。
与传统的直流电机比较,步进电机具有很多优势,比如精度高、摩擦小、噪音小等。
但是为了更好地发挥步进电机的优势,需要对其进行精细的控制,包括速度的控制。
因此,基于单片机的步进电机速度控制研究非常重要,本文将对此进行深入探讨。
一、步进电机的原理和特点步进电机是一种能够将电脉冲转换成机械旋转的电动机。
它的核心是转子和定子之间的电磁相互作用,通过不同的脉冲信号控制电机的转动速度和方向。
步进电机的特点主要有以下几个方面:1. 精度高:步进电机的步进角度可以达到很小,因此可以实现精细的运动控制。
2. 摩擦小:步进电机与传统的直流电机相比,其内部的摩擦力要小很多,因此可以实现更加平稳的运动。
3. 噪音小:步进电机的电机转子比较轻,摩擦力较小,因此转动时噪音较小。
二、步进电机的速度控制步进电机的速度控制是一种基于脉冲信号的控制方式,根据输入的脉冲信号来控制电机的转动速度。
这种控制方式可以实现精确的速度控制,并且可以改变电机的运动方向。
步进电机的速度控制可以分为定速控制和变速控制。
定速控制是通过固定的脉冲频率来控制电机的速度,而变速控制则是通过改变脉冲频率来实现速度的变化。
三、基于单片机的步进电机速度控制基于单片机的步进电机速度控制是一种常见的控制方式。
它通过单片机的计算和控制来实现对电机的脉冲信号控制,可以更加灵活地实现对电机的控制。
常见的单片机包括STC89C52、STM32F103等。
步进电机的速度控制是通过控制脉冲信号的频率来实现的。
因此,为了实现步进电机的速度控制,需要设置一个计时器来定时产生脉冲信号。
计时器可以通过单片机内部的外设或者扩展外部芯片来实现,常用的计时器包括定时器0、定时器1等。
单片机的速度控制还可以实现反馈控制,常见的反馈控制方式包括编码器反馈和霍尔传感器反馈。
通过反馈控制,可以实现对电机速度的更加精准的控制,并且可以消除误差。
基于单片机的步进电机控制

基于单片机的步进电机控制步进电机是一种常用的电动执行元件,在许多领域中都有广泛的应用。
为了实现对步进电机的精确控制,通常使用单片机来实现控制算法。
本文将介绍一个基于单片机的步进电机控制方案,并详细说明其实现过程和步骤。
首先,需要明确步进电机的工作原理。
步进电机通过控制电流的方向和大小来实现精确的旋转控制。
通常,步进电机由若干个驱动器组成,每个驱动器控制一个电机相位。
单片机通过控制驱动器的状态来控制步进电机的旋转。
1.硬件设计和搭建首先,需要根据步进电机的特性选择合适的单片机和驱动器。
单片机的选择应考虑其计算能力、IO口数量和通信接口等因素。
驱动器的选择应考虑其控制精度、最大电流和保护功能等因素。
然后,根据步进电机的型号和参数,设计并搭建电路板。
在电路板上,需要连接单片机、驱动器和步进电机,以及相应的电源和信号线。
2.控制算法设计在单片机中,需要设计控制算法来实现步进电机的精确控制。
常用的控制算法有定位控制、速度控制和加速度控制等。
根据实际需求,选择合适的控制算法,并编程实现。
3.编程实现根据控制算法的设计,使用合适的编程语言(如C语言或汇编语言)编写程序。
程序应包括步进电机的初始化代码、控制算法的实现代码和中断服务程序等。
在程序中,需要通过单片机的IO口控制驱动器,以改变驱动器的状态,从而控制步进电机的旋转方向和速度。
同时,还需要通过测量步进电机的位置和速度来实现闭环控制。
4.调试和优化完成编程后,需要进行调试和优化,以保证步进电机的控制精度和可靠性。
可通过调整控制算法的参数、增加传感器和使用滤波算法等方式来提高步进电机控制的性能。
综上所述,本文介绍了一个基于单片机的步进电机控制方案。
通过硬件设计和搭建、控制算法设计、编程实现和调试优化等步骤,可以实现对步进电机的精确控制。
这种方案在工业自动化、仪器仪表和机器人等领域具有广泛的应用价值。
基于单片机步进电机转速测速控制器

摘要在电气时代的今天,电动机在工农业生产与人们日常生活中都起着十分重要的作用。
步进电机作为最常见的一种电机,作为一种数字伺服执行元件,步进电机具有结构简单、运行可靠、控制方便、控制性能好等优点,广泛应用在数控机床、机器人、自动化仪表等领域。
为了实现步进电机的简易运动控制,一般以单片机作为控制系统的微处理器,通过步进电机专用驱动芯片实现步进电机的速度和位置定位控制。
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
步进电机的调速一般是改变输入步进电机的脉冲的频率来实现步进电机的调速,因为步进电机每给一个脉冲就转动一个固定的角度,这样就可以通过控制步进电机的一个脉冲到下一个脉冲的时间间隔来改变脉冲的频率,延时的长短来具体控制步进角来改变电机的转速,从而实现步进电机的调速。
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
本设计采用89C52单片机为核心设计,L297和L298为驱动芯片,用单片机内部的定时器改变CP脉冲的频率时间对步进电机的转速控制,实现电机调速与正反转功能,并用数字灯和数码管显示当前状态。
【关键词】步进电机单片机L297 L298IABSTRACTIn the electrical era, the motor plays an important role in indus trial and agricultural production and daily life. Stepper motor as th e most common type of motor, a digital servo actuator, stepper motor has a simple structure, reliable operation, easy to control, good con trol performance, widely used in CNC machine tools, robots, automated instrumentation areas. Generally based onsingle chip as the microproc essor control system for easy movement of the stepper motor control, speed and position of the stepper motor positioning control stepper m otor-specific driver chip.The stepper motor is the electrical pulses into angular displacement or linear displacement of the open-loop con trolcomponents.In the case of non-overloading, motor speed, the stop position depends only on the pulse frequency and pulse number, regard less of load changes, to the motor plus a pulse signal, the motor is turned to a step angle. The existence of this linear relationship, co upled with the characteristics of the stepper motor only periodic err or without accumulated error. Makes the speed, position and control t he stepper motor to control very simple. Governorgeneral of the stepp er motor is to change the frequency of the pulse input stepper motor to achieve the speed control of stepper motor, stepper motors each to a pulse rotating a fixed angle, so that you can control the stepper m otor a pulse to the next pulse time interval to change the frequency of the pulse, the delay length to specifically control the stepping a ngle to change the motor speed, in order to achieve the speed control of stepper motor.Stepper motor is a digital motor control, it will pulse signal ch anges in angular displacement, that is, to a pulse signal, the steppeIIr motor to rotate atan angle, so it is suitable for single-chip contr ol.This design uses a 89C52 microcontroller as the core design, the L297 and L298 driver chip, change the time of the CP pulse frequency of the stepper motor speed control, motor speed control with reversin g function using theinternal timer of the microcontroller, and digita l light and The digital tube displays the current status.【Key words】Stepper motor Microcontroller L297 L298III目录前言 (1)第一章绪论 (2)第一节单片机控制步进电机的背景与意义 (2)第二节国内外研究状况 (2)1.2.1 国外研究状况 (2)1.2.2 国内研究状况 (3)第三节本文主要研究内容 (3)第四节本章总结 (4)第二章系统概述 (5)第一节步进电机介绍 (5)2.1.1 步进电机的概述 (5)2.1.2 步进电机的工作原理 (8)2.1.3 步进电机的选择 (9)第二节步进电机驱动介绍 (10)2.2.1 步进电机驱动系统简介 (10)2.2.2 步进电机绕组的电气的特性 (11)第三节单片机介绍 (13)2.3.1 单片机原理概述 (13)2.3.2 单片机的应用系统 (13)2.2.3 AT89C52 (14)第四节核心芯片介绍 (18)2.4.1 L297的工作原理 (18)2.4.2 L297驱动相序的产生 (19)2.4.3 L298简介 (20)2.4.4 驱动方式的确定 (22)第五节本章总结 (22)- 1 -第三章系统的设计与实现 (23)第一节系统整体设计 (23)3.1.1 系统原理图 (23)3.1.2 系统整图 (23)第二节系统硬件电路的设计 (24)3.2.1 电源电路的设计 (24)3.2.2 按键电路的设计 (26)3.2.3 驱动电路的设计 (27)3.2.3 显示部分电路 (27)3.2.4 时钟部分 (28)3.2.5 抗干扰设计 (28)第三节系统软件程序设计 (29)3.3.1 系统主程序设计 (30)3.3.2 键盘控制程序设计 (30)3.3.3 正反转程序设计 (31)3.3.4 加减速程序设计 (32)3.3.5 显示子程序的设计 (33)3.3.6 定时中断流程图 (34)第四节本章总结 (35)第四章系统的测试 (36)第一节测试的步骤 (36)第二节测试的数据 (37)第三节理论与实际的分析 (38)第四节本章总结 (39)第五章总结与展望 (40)第一节总结 (40)第二节展望 (41)致谢 (42)参考文献 (43)- 2 -附录一 (44)英文原文 (44)英文翻译 (47)附录二 (50)源程序清单 (50)- 3 -前言步进电机广泛应用与ATM机、喷绘机、刻字机、写真机、喷图设备、医疗仪器及设备、计算机外设及海量储存设备、精密仪器、工业控制系统、办公自动化、机器人等领域。
基于单片机的步进电机转速控制器的设计的开题报告

[3]常斗南,等.可编程序控制器原理、应用、实验[M] .北京:机械工业出版社,1998.
[4]于海生,等.微型计算机控制技术[M] .北京:清华大学出版社,1999.
[5]王福瑞,等.单片机微机测控系统设计大全[M] .北京:北京航空航天大学出版社,1998.
设计(论文)
题目
基于单片机的步进电机转速控制器的设计
设计(论文)
类型(划“√”)
工程设计
应用研究
开发研究
基础研究
其它
√
一、本课题的研究目的和意义
步进电机已成为出直流电机和交流电机以外的第三类电动机。传统电动机作为机电能量转换装置,在人类的生活和生产进入电气化过程中起着关键的作用。可是在人类社会进入电气化时代的今天,传统电动机已不能满足工业自动化和办公自动化等各种运动控制系统的要求。发展了一系列新的具有控制功能的电动机系统,其中较有自己特点,且应用十分广泛的就是步进电机。
[14]王润孝,秦现生编著1机床数控原理与系统1西北工业大学出版社,1997.
[15]李伯成,侯伯李等编1IBM - PC微机应用系统设计1西安电子科技大学,1996.
[16]黄义源主编1机械设备电气与数字控制1中共广播电视大学出版社,1992
[17]Bai You'ai He JianDe Chen Qing (et al) Effects of nitrogen supply levels on greenhouse tomato growth and nitrogen utilization in Beijing Region.ChinaVegetables.InstituteofVegetablesand Flowers,Beijing,China: 2004. 2,7-9.
基于51单片机的步进电机控制系统设计
基于51单片机的步进电机控制系统设计步进电机是一种特殊的直流电动机,具有定角度、定位置、高精度等特点,在许多领域得到广泛应用,如机械装置、仪器设备、医疗设备等。
本文将基于51单片机设计一个步进电机控制系统,主要包括硬件设计和软件设计两部分。
一、硬件设计步进电机控制系统的硬件设计主要包括51单片机、外部电源、步进电机驱动模块、以及其他辅助电路。
1.51单片机选择由于步进电机控制需要执行复杂的算法和时序控制,所以需要一个性能较高的单片机。
本设计选择51单片机作为主控芯片,因为51单片机具有丰富的外设接口、强大的计算能力和丰富的资源。
2.外部电源步进电机需要较高的电流供给,因此外部电源选择稳定的直流电源,能够提供足够的电流供电。
电源电压和电流的大小需要根据具体的步进电机来确定。
3.步进电机驱动模块步进电机驱动模块是连接步进电机和51单片机的关键部分,它负责将51单片机输出的脉冲信号转化为对步进电机的驱动信号,控制步进电机准确转动。
常用的步进电机驱动芯片有L297、ULN2003等。
4.其他辅助电路为了保证步进电机控制系统的稳定运行,还需要一些辅助电路,如限流电路、电源滤波电路、保护电路等。
这些电路的设计需要根据具体的应用来确定。
二、软件设计1.系统初始化系统初始化主要包括对51单片机进行外部中断、定时器、串口和IO 口等初始化设置。
根据实际需求还可以进行其他模块的初始化设置。
2.步进电机驱动程序步进电机的驱动程序主要通过脉冲信号来控制电机的转动。
脉冲信号的频率和脉冲宽度决定了电机的转速和运行方向。
脉冲信号可以通过定时器产生,也可以通过外部中断产生。
3.运动控制算法步进电机的运动控制可以采用开环控制或闭环控制。
开环控制简单,但无法保证运动的准确性和稳定性;闭环控制通过对电机转动的反馈信号进行处理来调整脉冲信号的生成,从而实现精确的运动控制。
4.其他功能设计根据具体的应用需求,可以加入其他功能设计,如速度控制、位置控制、加速度控制等。
基于51单片机的步进电机控制系统设计与实现
步进电机工作原理
步进电机是一种基于磁场的控制系统,工作原理是当电流通过定子绕组时,会 产生一个磁场,该磁场会吸引转子铁芯到相应的位置,从而产生一定的角位移。 步进电机的角位移量与输入的脉冲数量成正比,因此,通过控制输入的脉冲数 量和频率,可以实现精确的角位移和速度控制。同时,步进电机具有较高的分 辨率和灵敏度,可以满足各种高精度应用场景的需求。
二、系统设计
1、硬件设计
本系统主要包括51单片机、步进电机、驱动器、按键和LED显示等部分。其中, 51单片机负责接收按键输入并控制步进电机的运动;步进电机用于驱动负载运 动;驱动器负责将51单片机的输出信号放大,以驱动步进电机。LED显示用于 显示当前步进电机的状态。
2、软件设计
软件部分主要包括按键处理、步进电机控制和LED显示等模块。按键处理模块 负责接收用户输入,并根据输入控制步进电机的运动;步进电机控制模块根据 按键输入和当前步进电机的状态,计算出步进电机下一步的运动状态;LED显 示模块则负责实时更新LED显示。
三、系统实现
1、按键输入的实现
为了实现按键输入,我们需要在主程序中定义按键处理函数。当按键被按下时, 函数将读取按键的值,并将其存储在全局变量中。这样,主程序可以根据按键 的值来控制步进电机的转动。
2、显示输出的实现
为了实现显示输出,我们需要使用单片机的输出口来控制显示模块的输入。在 中断服务程序中,我们根据设定的值来更新显示模块的输出,以反映步进电机 的实时转动状态。
基于单片机的步进电机控制系统需要硬件部分主要包括单片机、步进电机、驱 动器、按键和显示模块等。其中,单片机作为系统的核心,负责处理按键输入、 控制步进电机转动以及显示输出等功能。步进电机选用四相八拍步进电机,驱 动器选择适合该电机的驱动器,按键用于输入设定值,显示模块用于显示当前 步进电机的转动状态。
单片机实验 步进电机控制
实验七步进电机控制一、实验目的1、了解步进电机控制的基本原理2、掌握步进电机转动编程方法二、实验说明1.步进电机的基本原理:步进电机是一种静电脉冲信号转换成相应角位移或是线位移的电磁机械装置。
在没有超出负载的情况下,它能在一瞬间实现启动和停止。
步进电机的转动速度只取决于外加脉冲信号的频率和脉冲数,而不受负载变化的影响。
例如,给步进电机施加一个脉冲信号,步进电动机就会转过一个歩距角。
步进电机既能控制转动方向也能控制转动速度。
2.步进电机的驱动脉冲:步进电动机通过控制输入电流形成一个旋转磁场而工作,旋转磁场可以由1相励磁,2相励磁,3相励磁和5相励磁等方式产生。
本次实验使用时小型2相励磁步进电动机有两组励磁线圈是AB。
应用时只需要在两组线圈的4个端口分别输入规定的环形脉冲信号(通过控制单片A和B机的P0.0、P0.1、P0.2和P0.3这四个引脚的高低电平),就可以制定步进电动机的转动方向。
3.本次实验使用独立式键盘控制小型2相励磁步进电机,要求按下S1键,步进电机正传;按下S2键,步进电机反转;按下S3键,步进电机停转。
4.绘制仿真原理图时,步进电机选用“MOTOR-STEPPER”,功率放大集成电路选用“ULN2003A”,逻辑部件选用“74LS04”。
三、实验步骤1.先建立文件夹“ex7”,然后建立“ex7”工程项目,最后建立源程序文件“ex7.c”,输入如下源程序;//独立式键盘控制步进电机实验#include<reg51.h> //包含51单片机寄存器定义的头文件sbit S1=P1^4; //将S1位定义为P1.4引脚sbit S2=P1^5; //将S2位定义为P1.5引脚sbit S3=P1^6; //将S3位定义为P1.6引脚unsigned char keyval; //储存按键值unsigned char ID; //储存功能标号/*软件消抖延时(约50ms)*/void delay(void){unsigned char i,j;for(i=0;i<150;i++)for(j=0;j<100;j++);}/*步进电机转动延时,延时越长,转速越慢*/void motor_delay(void){unsigned int i;for(i=0;i<2000;i++);}/*步进电机正转*/void forward( ){P0=0xfc; //P0口低四位脉冲1100motor_delay();P0=0xf6; //P0口低四位脉冲0110motor_delay();P0=0xf3; //P0口低四位脉冲0011motor_delay();P0=0xf9; //P0口低四位脉冲1001motor_delay();}/*步进电机反转*/void backward(){P0=0xfc; //P0口低四位脉冲1100motor_delay();P0=0xf9; //P0口低四位脉冲1001motor_delay();P0=0xf3; //P0口低四位脉冲0011motor_delay();P0=0xf6; //P0口低四位脉冲0110motor_delay();}/*步进电机停转*/void stop(void){P0=0xff ; //停止输出脉冲}/*主函数*/void main(void){TMOD=0x01; //使用定时器T0的模式1EA=1; //开总中断ET0=1; //定时器T0中断允许TR0=1; //启动定时器T0TH0=(65536-500)/256; //定时器T0赋初值,每计数200次(217微秒)发送一次中断请求TL0=(65536-500)%256; //定时器T0赋初值keyval=0; //按键值初始化为0,什么也不做ID=0;while(1){switch(keyval) //根据按键值keyval选择待执行的功能{case 1:forward(); //按键S1按下,正转break;case 2:backward(); //按键S2按下,反转break;case 3:stop(); //按键S3按下,停转break;}}}/*定时器T0的中断服务子程序:键盘扫描程序*/void Time0_serve(void) interrupt 1 using 1{TR0=0; //关闭定时器T0if((P1&0xf0)!=0xf0) //第一次检测到有键按下{delay(); //延时一段时间再去检测if((P1&0xf0)!=0xf0) //确实有键按下{if(S1==0) //按键S1被按下keyval=1;if(S2==0) //按键S2被按下keyval=2;if(S3==0) //按键S3被按下keyval=3;}}TH0=(65536-200)/256; //定时器T0的高8位赋初值TL0=(65536-200)%256; //定时器T0的低8位赋初值TR0=1; //启动定时器T0}2.用Proteus软件仿真经过Keil软件编译通过后,可利用Proteus软件仿真。
基于单片机AT89C52的步进电机的控制器设计
基于单片机AT89C52的步进电机的控制器设计步进电机是一种非常常见的电机类型,由于其具有精准定位、适应高速运动以及控制简单等特点,被广泛应用于各种自动化设备中。
本文将从步进电机的工作原理、控制方式以及基于单片机AT89C52的步进电机控制器设计等方面展开阐述。
首先,我们来了解步进电机的工作原理。
步进电机是一种特殊的同步电动机,它具有内置的磁化轭,在没有外部励磁的情况下也能自动旋转。
步进电机的旋转是由控制电流方向和大小来实现的。
通常情况下,步进电机每转动一定角度,称为“步距角”,它可以是1.8度、0.9度、0.45度等,不同的步距角决定了电机的分辨率。
步进电机的控制方式主要有全步进和半步进两种。
全步进是指每次控制信号脉冲后,电机转动一个步距角。
而半步进则是在全步进基础上,在脉冲信号中引入一半步距角的微调。
控制信号脉冲可以是脉冲序列或者方波信号。
基于单片机AT89C52的步进电机控制器设计主要包括控制信号发生器的设计和步进电机驱动电路的设计。
控制信号发生器负责产生相应的控制信号脉冲,而步进电机驱动电路将这些脉冲信号转化为电流信号驱动步进电机。
控制信号发生器的设计可以采用定时器/计数器模块来实现。
AT89C52芯片具有可编程的定时器/计数器,可以用来产生控制信号的脉冲。
通过设置定时器的工作方式和计数值,可以实现不同频率、占空比的控制脉冲。
步进电机驱动电路的设计主要包括功率级驱动电路和电流控制电路。
功率级驱动电路负责将控制信号转化为足够大的电流驱动步进电机,通常采用功率放大器来实现。
电流控制电路则用来控制驱动电流的大小,使步进电机能够顺畅工作。
电流控制电路通常采用可调电阻、电流检测电阻和比较器等元件组成。
在步进电机控制器设计中,还需要考虑到步进电机的特性和应用需求。
例如,步进电机的电源电压、额定电流、阻抗、扭矩等参数需要与驱动电路匹配。
此外,还需要考虑到步进电机的机械结构、位置传感器、防重叠措施等因素。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子器件市场调研与系统设计实践专 业: *** 班 级: 姓 名: 学 号: 指导教师: ****大学****学院**** 年 **月**日基于单片机的步进电机调速与正反转控制系统1 系统要求步进电动机是用电脉冲信号进行控制,将电脉冲信号转换成相应的角位移或线位移的微电动机,它最突出的优点是可以在宽广的频率范围内通过改变脉冲频率来实现调速,快速起停、正反转控制及制动等,并且用其组成的开环系统既简单、廉价,又非常可行,因此在打印机等办公自动化设备以及各种控制装置等众多领域有着极其广泛的应用。
随着微电子和计算机技术的发展,步进电动机的需求量与日俱增,研制步进电机驱动器及其控制系统具有十分重要的意义。
本设计基于单片机控制的步进电机设计课题是以单片机为主控制模块,从而实现电机的启停、正反转和调速的目的的一个设计课题。
在课题设计之前,通过互联网了解到了当前步进电机的发展状况及发展前景。
同时也了解了当今最先进的步进电机所具备的功能,方便为课题设计提供参考和借鉴;最后,通过画原理框图的形式,以最直观的方式为整个课题设计制定了流程及要求。
1.1 设计目的《电子器件市场调研与系统设计实践》是本专业的重要实践教学环节,强调实际应用技能训练。
结合自动化专业系列课程的学习,培养我们对电子器件的认知,锻炼我们的市场调研能力,加深我们对自动化专业系列课程知识的掌握。
通过课程设计环节培养学生与人交往、独立思考和处理问题的能力。
1.2 设计内容及要求本次课程设计所选的步进电机是四相步进电机,采用的方法是利用单片机控制步进电机的驱动。
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
本次课程设计就是通过改变脉冲频率来调节步进电机的速度的,并且通过数码管显示其转速的级别。
另外通过单片机实现它的正反转,步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。
2 系统方案及原理2.1 系统设计方案该步进电机调速系统主要具有电机启停、调速、正反转控制和显示功能,现将该步进电机调速控制系统实现的所有功能的具体步骤整理如下:(1)步进电机启停功能。
单片机预设初值,预设初值脉冲发送给驱动器,驱动步进电机按预设的最低速运行。
(2)步进电机调速功能。
将产生的不同频率和脉宽的脉冲信号输入到驱动器中,驱动电机在单位时间内转动若干个步角距。
(3)步进电机转向控制。
通过改变步进电机绕组的通电相序,改变转子的转向,从而实现步进电机的正反转控制功能。
(4)复位功能。
通过复位单片机,使单片机输出的脉冲复位为预设初值,从而使步进电机复位为预设最低速度运行。
(5)显示功能。
通过在四位一体数码管中显示设定步进电机目前的转速和转向。
2.2 自动浇花系统原理步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电动机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。
系统是单片机控制,整个设计的电压是5v,所以电机的电压也要选择5v可以驱动的,所以本实验选择28BYJ-48步进电机作为设计对象,步进电机28BYJ48型四相八拍电机,电压为DC5V—DC12V。
当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。
当通电状态的改变完成一个循环时,转子转过一个齿距。
原理框图如图1。
图1步进电机控制系统原理框图3 市场调研及硬件设计3.1市场调研认真分析了题目所要求的功能后,进行了系统设计。
对方案进行了仿真实验,并对所需的器件进行了市场调研,通过不同的途径,包括淘宝店、天猫购物、实体店,对比分析后,最优方案是通过淘宝店购买元器件。
主要的元器件罗列如表1。
通过硬件电路搭建后,完成实物电路板的焊接过程,实物图见附录A。
3.2电路原理图从控制系统的大小和复杂度出发,必须考虑单片机的基本参数和增强功能。
前者往往需要考虑芯片的速度,ROM容量,I/O引脚数量和工作电压(1.8V/3V/5V)等,后者则包括是否拥有看门狗,双指针,双串口,实时时钟,CAN接口,SPI 接口,USB接口等附加模块。
本设计中受控对象只有超声波、声光报警,复杂度低,采用低端的通用的单片机芯片就能够满足要求。
P0口为四位一体数码管的段选。
P1.0为步进电机启停按键定义,P1.1为步进电机正反转按键定义,P3.0为步进电机加速按键定义,P3.1为步进电机减速按键定义,P2.0、P2.1、P2.2、P2.3为四位一体数码管的位选。
P2.7、P2.6、P2.5、P2.4为脉冲信号输入端定义,原理图如图2。
图2 系统原理图4 硬件调试及分析4.1 Proteus软件仿真在实物制作前,需要首先在Proteus仿真软件中对电路进行设计(即对硬件电路图进行合理的搭配,如图2),通过仿真软件测试电路与编译的程序相配合,检查外围电路设计是否合理,程序编译是否正确,以及软件和硬件是否能够正常配合工作,实现设计中的要求,若仿真电路没有问题,就可以在实际电路中对实物进行焊接制作。
我选择单片机仿真软件Proteus8.2仿真以及Keil4 编译。
源程序见附录B。
4.2 按键电路按键操作在四位一体数码管上显示步进电机的转速和转向,有启停按键,正反转按键以及加减速按键,如图3。
图3 按键电路图4.3 显示电路检测到土壤湿度湿度和预先设置的上下限值,显示在液晶显示屏上,如图4。
图4 步进电机一档速正转4.4 驱动电路STC89C51RC的P2口作为驱动电路的控制引脚,P2输入高电平时,对应的输出为0,LED灯亮,步进电机转动,水泵工作;P2口输入低电平时,对应输出为1,LED灯熄灭,步进电机停止转动,如图5。
图5 驱动电路5 总结在把理论设计转换成实物的整个过程,如:电路设计、分析计算、画电路图、焊接电路、检查调试、软件流程控制设计分析、编写调试软件、烧写软件到整个软硬件系统的调试,最后直到系统完成。
其中整个系统的前期准备是首先必须做到位的,如控制什么、用什么控制、得到什么结果,进而对各部分应选择具体的芯片作进一步的考虑,以使系统得到最优的表现。
通过本课题,一方面我在查阅资料的基础上,了解STC89C51单片机控制的一些基本技术,掌握其控制系统的分析方法与实现方法,能对单片机外围电路设计进行系统学习与掌握;另一方面,在设计步进电机控制系统的硬件电路,控制程序和相应的电路图时,应充分运用说学知识,善于思考,琢磨,分析。
我们的学习不但要立足于书本,以解决理论和实际教学中的实际问题为目的,还要以实践相结合,理论问题即实践课题,解决问题即课程研究,学生自己就是一个专家,通过自己的手来解决问题比用脑子解决问题更加深刻。
学习就应该采取理论与实践结合的方式,理论的问题,也就是实践性的课题。
这种做法既有助于完成理论知识的巩固,又有助于带动实践,解决实际问题,加强我们的动手能力和解决问题的能力。
参考文献[1] 王思明,张金敏,苟军年.单片机原理及应用系统设计[M].北京:科学出版社,2012.[2] 周润景,刘晓霞.基于PROYEUS的电路设计、仿真与制板[M]. 北京:电子工业出版社,2013.8.[3] 潭浩强.C 语言程序设计.清华大学出版社[M].2005.07.[4] 张毅刚,MCS-51单片机应用设计[M].哈尔滨工业大学出版社.2004.[5] 刘乐喜.微机计算机接口技术及应用[M].华中科技大学出版社.2005.08.[6] 冯博琴.微型计算机原理与接口技术[M].清华大学出版社.2004.附录A 实物图附录B 源程序#include<reg51.h>#define uchar unsigned char#define uint unsigned int#define led P0//数码管段选#define haha P2sbit s1 = P1^0;sbit s2 = P1^1;sbit s3 = P3^0;sbit s4 = P3^1;//按键定义,s1正转,s2反转,s3加1,s4减1sbit wei3 = P2^3;sbit wei2 = P2^2;sbit wei1 = P2^1;sbit wei0 = P2^0;//数码管位选定义sbit a = P2^7;sbit b = P2^6;sbit c = P2^5;sbit d = P2^4;//脉冲信号输入端定义uchar code display[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳数码管驱动信号0---9,不显示uchar code time_counter[10][2]={{0xda,0x1c},{0xde,0xe4},{0xe1,0xec},{0xe5,0xd4},{0xe9,0xbc}, //9.7 ----1ms{0xed,0xa4},{0xf1,0x8c},{0xf5,0x74},{0xf9,0x5c},{0xfc,0x18}};uchar code qudong[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90};uchar num1 = 0;//控制取励磁信号变量uchar num2 = 8;uchar k=1;//加减档位控制,1为最小档bit flag1 = 0;//初始正转,正反转标志uchar buf[4]={0,10,10,1};//数码管显示缓存,正转,不显示,不显示,显示1档位,高----低//================================定时器0/1初始化函数================================void T0_T1_init(){TMOD = 0x11;//定时器0/1均工作于方式1,16位计时方式TH0 = (65536 - 4000)/256;TL0 = (65536 - 4000)%256;//定时器0,定时4ms用于数码管扫描显示TH1 = time_counter[k-1][0];TL1 = time_counter[k-1][1];//定时器1,定时10ms用于步进电机转速控制TR0 = 1;TR1 = 1;ET0 = 1;ET1= 1;//开定时器中断EA = 1;//开总中断}//================================ms级延时函数=======================================void delay1m(uint x){uint i,j;for(i=0;i<x;i++) //连数x次,约x msfor(j=0;j<120;j++); //数120 次,约1 ms}//================================主函数=============================================void main(){T0_T1_init();buf[1] = 10;//不显示while(1){if(s1 == 0){delay1m(3);if(s1 == 0){flag1 = 0;//正转buf[0] = 0;//最高位显示0haha = 0x00;//停止{k--;if(k == 0){k = 10;}buf[2]= k/10;buf[3]= k%10;}flag1 = 1;//反转buf[0] = 1;//最高位显示1haha = 0x00;//停止}while(!s2);}if(s3 == 0) //速度加1档{delay1m(3);if(s3 == 0){k++;if(k > 10 ){k = 1;}buf[2]= k/10;buf[3]= k%10;}while(!s3);}if(s4 == 0) //速度减1档{delay1m(3);if(s4 == 0){k--;if(k == 0){k = 10;}buf[2]= k/10;buf[3]= k%10;}while(!s4);}}}//==================================定时器0中断函数,用于数码管扫描显示====================================void time0_interrupt()interrupt 1{static num = 0;TH0 = (65536 - 4000)/256;TL0 = (65536 - 4000)%256;//定时器0,定时4ms用于数码管扫描显示switch(num){case 0:wei3=1;wei2=1;wei1=1;wei0=0;led = display[buf[3]];break;case 1:wei3=1;wei2=1;wei1=0;wei0=1;led = display[buf[2]];break;case 2:wei3=1;wei2=0;wei1=1;wei0=1;led = display[buf[1]];break;case 3:wei3=0;wei2=1;wei1=1;wei0=1;led = display[buf[0]];break;}num++;if(num == 4)num = 0;}//==================================定时器1中断函数,用于脉冲频率控制=====================================void time1_interrupt()interrupt 3{static num1 = 0;static num2 = 0;TH1 = time_counter[k-1][0];TL1 = time_counter[k-1][1];//定时器1,定时1 用于步进电机转速控制if(flag1 == 0)//正转{switch(num1){case 0:a = 1;b = 0;c = 0;d = 0;break;case 1:a = 1;b = 1;c = 0;d = 0;break;case 2:a = 0;b = 1;c = 0;d = 0;break;case 3:a = 0;b = 1;c = 1;d = 0;break;case 4:a = 0;b = 0;c = 1;d = 0;break;case 5:a = 0;b = 0;c = 1;d = 1;break;case 6:a = 0;b = 0;c = 0;d = 1;break;case 7:a = 1;b = 0;c = 0;d = 1;break;}num1++;if(num1 == 8)num1 = 0;}else //反转{switch(num2){case 0:a = 1;b = 0;c = 0;d = 1;break;case 1:a = 0;b = 0;c = 0;d = 1;break;case 2:a = 0;b = 0;c = 1;d = 1;break;case 3:a = 0;b = 0;c = 1;d = 0;break;case 4:a = 0;b = 1;c = 1;d = 0;break;case 5:a = 0;b = 1;c = 0;d = 0;break;case 6:a = 1;b = 1;c = 0;d = 0;break;case 7:a = 1;b = 0;c = 0;d = 0;break;}num2++;if(num2 == 8)num2 = 0;}}。