基于单片机的步进电机转速控制
基于单片机的步进电机控制

基于单片机的步进电机控制步进电机是一种常用的电动执行元件,在许多领域中都有广泛的应用。
为了实现对步进电机的精确控制,通常使用单片机来实现控制算法。
本文将介绍一个基于单片机的步进电机控制方案,并详细说明其实现过程和步骤。
首先,需要明确步进电机的工作原理。
步进电机通过控制电流的方向和大小来实现精确的旋转控制。
通常,步进电机由若干个驱动器组成,每个驱动器控制一个电机相位。
单片机通过控制驱动器的状态来控制步进电机的旋转。
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机、喷绘机、刻字机、写真机、喷图设备、医疗仪器及设备、计算机外设及海量储存设备、精密仪器、工业控制系统、办公自动化、机器人等领域。
基于单片机的步进电机控制设计

毕业设计(论文)课题名称基于单片机的步进电机控制设计学生姓名学号系、年级专业信息工程系﹑电子信息工程专业指导教师职称讲师2009年5 月22 日摘要本论文主要介绍了基于单片机的步进电机控制的规则、硬件结构、软件代码的编写与工作原理、以与液晶模块12864LCD的详细介绍以与指令集。
模拟出单片机系统下的步进电机转速控制,具有任意转速选择、转动时间、正反转、加速和减速设置、系统低功耗、可实现在线调试等特点。
本系统是以单片机为其控制核心,以有源晶振构成的电路作为时钟信号,通过键盘输入选择向单片机控制系统发出步进转动控制命令,控制系统接收命令后做出一系列必要的判断后,控电机的转速、转向等。
本设计已通过了实验仿真,运行稳定,达到了基本的设计要求。
本设计要分为两大块:一块为硬件电路组成部分,一块为软件程序设计部分。
在硬件电路里主要包括有源晶振部分、键盘输入控制部分、电机驱动电路与液晶显示部分等与单片机的接线设计;软件编程方面主要是子程序和主程序的编写,包括:初始化代码、液晶驱动代码、时间记录代码、表格数据代码等。
关键词:单片机;步进电机;12864LCD;指令集AbstractThis thesis is mainly introduce the Prepared and working principles about regulation、structure of hardware、software code of stepping motor control based on MCU as well as detail information and instruction set on LCD Module 12864LCD. This thesis also simulates that under the system of single-chip stepping motor speed control has the disadvantages of changing speed、time arbitrary、Positive and negative transfer、installation of accelerated and deceleration、low-power system and online debugging. Single-chip as core of control and the circuit made up by active crystal as clock signal, the stepper motor speed control system starts to making a series of necessary judgment and then control rotate speed and change direction when it receive the command of stepper transfer control from single-chip control system by keyboard. As run steady, this project has already passed the simulation and has achieved the basic purpose.This project consists of two parties. One is hardware circuit and the other is software programming. In the part of hardware circuit is include active crystal、control system of keyboard input 、system of motor drive circuit and liquid crystal system. In the second part, Design of connection of single-chip、software prepared is the mainly prepared of Subroutine and Main program including initialization code 、liquid drive code 、the timing of recording code form data code[8].Key words: MCU;stepper motor;12864LCD;Instruction Set.目录摘要 (I)Abstract (II)第1章绪论 (1)1.1 课题的来源 (1)1.2 课题研究的意义 (1)1.3 课题国内研究现状 (1)1.4 课题研究的目的和主要内容 (2)第2章步进电机方案设计与分析 (4)2.1 方案提出 (4)2.2 可行性分析 (5)2.3 主要器件选择 (5)第3章系统硬件设计 (7)3.1 AMPIRE128*64液晶屏介绍 (7)3.2 HD61202与其指令集介绍 (8)3.3 晶振、复位、驱动电路 (11)3.4 液晶显示屏与单片机接口电路 (13)3.5 控键与单片机接口电路 (13)第4章系统软件设计 (16)4.1 电机流程图 (16)4.2 液晶屏驱动代码设计 (17)4.3 固定字符显示代码 (21)4.4 中断子程序 (22)4.5 汉字表 (23)4.6 字符表 (25)4.7 延时子程序 (26)4.8 主函数程序 (26)第5章系统仿真 (28)5.1 Keil2编译环境介绍 (28)5.2 Proteus 仿真平台 (29)5.3 建立工程项目 (31)5.4 Proteus中原理图的绘制与文件的加载 (35)5.5 开机界面显示 (36)5.6 控制界面显示 (36)5.7 仿真结果分析与解决方法 (37)第6章PCB板设计 (38)6.1加载网络表与元件封装 (38)6.2 PCB板参数设置 (40)6.3元件布局与布线设计 (42)结束语 (44)参考文献 (45)致谢 (46)附录Ⅰ总体电路图 (46)第1章绪论1.1 课题的来源步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。
基于单片机的步进电机控制系统的设计

基于单片机的步进电机控制系统的设计
步进电机是一种特殊的电机,它的转动是以步进的形式进行的,每一次步进角度由控制电路发出的一个脉冲决定。
因此,基于单片
机的步进电机控制系统需要实现以下功能:
1. 产生脉冲信号:单片机需要通过定时器等模块产生相应的脉
冲信号,以控制步进电机的运动。
2. 识别旋转方向:步进电机需要能够前进和后退,因此单片机
需要实时检测步进电机的转动方向,并控制脉冲信号发生的顺序。
3. 控制转速:控制步进电机转速需要通过控制脉冲信号的频率
来实现,单片机需要动态地调整脉冲信号的频率,从而控制欲速度。
下面是实现步进电机控制的一种基本算法:
1. 设置电机控制端口,初始化各参数。
2. 等待步进电机稳定。
在控制电路上电时,如果步进电机没有
停在起始位置,需要先手动将步进电机转动到起始位置,然后等待
电机稳定。
3. 根据旋转方向和转速控制脉冲信号产生频率。
根据步进电机
的旋转方向,确定脉冲信号产生的顺序,然后通过定时器等模块产
生相应的脉冲信号,从而控制步进电机旋转。
4. 根据指令调整转速。
根据实际需求调整步进电机的转速,即
调整脉冲信号频率。
上述算法是一个最基本的控制算法,具体的实现还需要考虑步
进电机控制的精度、错误处理等方面的问题。
基于单片机的步进电机控制系统设计方案

D10-基于单片机旳步进电机控制系统一、理解什么是步进电机以及其工作原理步进电机是数字控制电机,步进电机旳运转是由电脉冲信号控制旳,其角位移量或线位移量与脉冲数成正比,每个一种脉冲,步进电机就转动一种角度(不距角)或前进、倒退一步。
步进电机旋转旳角度由输入旳电脉冲数确定,因此,也有人称步进电机为数字/角度转换器。
步进电机旳各相绕组按合适旳时序通电,就能使步进电机转动。
当某一相绕组通电时,对应旳磁极产生磁场,并与转子形成磁路,这时,假如定子和转子旳小齿没有对齐,在磁场旳作用下,由于磁通具有力图走磁阻最小途径旳特点,则转子将转动一定旳角度,使转子与定子旳齿互相对齐,由此可见,错齿是促使电机旋转旳原因。
二、步进电机旳特点(1)步进电机旳角位移与输入脉冲数严格成正比,因此当它转一转后,没有合计误差,具有良好旳跟随性。
(2)由步进电机与驱动电路构成旳开环数控系统,既非常以便、廉价,也非常可靠。
同步,它也可以有角度反馈环节构成高性能旳闭环数控系统。
(3)步进电机旳动态响应快,易于启停、正反转及变速。
(4)速度可在相称宽旳范围内平滑调整,低速下仍能保证获得很大旳转矩,因此一般可以不用减速器而直接驱动负载。
(5)步进电机只能通过脉冲电源供电才能运行,它不能直接用交流电源或直流电源。
(6)步进电机自身旳噪声和振动比较大,带惯性负载旳能力强。
三、步进电机旳控制步进电机旳控制重要包括换相次序旳控制、速度控制、速度控制、加减速控制等,控制系统就是运用单片机旳功能实现以上控制旳系统,即本次设计旳目旳。
四、示意图五、硬件设计计划本设计旳硬件电路只要包括控制电路、最小系统、驱动电路、显示电路四大部分。
最小系统只要是为了使单片机正常工作。
控制电路只要由开关和按键构成,由操作者根据对应旳工作需要进行操作。
显示电路重要是为了显示电机旳工作状态和转速。
驱动电路重要是对单片机输出旳脉冲进行功率放大,从而驱动电机转动。
(1)控制电路根据步进电机旳工作原理可以懂得,步进电机转速旳控制重要是通过控制通入电机旳脉冲频率,从而控制电机旳转速。
基于单片机的步进电机控制探讨

基于单片机的步进电机控制探讨在步进电机的运行过程中,来自于单片机的电子脉冲信号可以控制其转动角度,而借助于单片机硬件电路以及软件编程等形式,则可实现步进电机的启动、停止以及正反转等动作,以此来实现对步进电机的有效控制。
基于此,本文分析了基于单片机的步进电机控制方法,以期为步进电机的应用与控制提供相应参考。
标签:单片机;步进电机;控制策略;控制系统0 引言步进电机的系统结构简单,对转动定位控制精准,因此步进电机在仪表控制和过程控制中发挥着至关重要的作用,且在当今的自动化控制、电动阀控制、数控机床以及医疗设施等各领域中得到了广泛应用。
而在步进电机的具体应用过程中,单片机可以对其起到更加精准的控制作用,以此来实现应用效果的显著提升。
因此,在步进电机的应用与研究中,应加大对单片机控制的研究,以此来实现步进电机的良好应用与发展。
1 步进电机工作原理在步进电机的运行过程中,电子脉冲信号数量及其频率对其转动速度以及停止位置起到决定性作用。
在步进电机运行过程中,如果给定一个脉冲信号,其转子便可经过相应角度,我们将该角度叫做步距角。
就目前的步进电机来看,步距角一般按照半步和一步进行划分,具体情况如表1所示。
按照以上划分方式,每给定一个脉冲信号,步进电机就可以转动0.9°,随着脉冲信号书的连续给定,可控制步进电机实现连续运转。
2 基于单片机的步进电机控制2.1控制系统框架分析2.1.1硬件系统设计构架分析在本次所研究的步进电机控制系统中,应用到的单片机为51单片机,主控制器型号为80C51,该控制器属于一种有着高效性的微控制器,通过该控制器的应用,可以为嵌入形式的控制系统提供出价格低廉、灵活度高的方案,其组成部分及其个数如表2所示。
在本次研究中,主要选择的步进电机是四相六线形式的步进电机,其额定电压是12V,这种步进电机可以在单拍模式下工作,也可以在单双拍混合模式下工作。
但是通常情况下,在该步进电机工作在单拍模式下时,其转动相角过度比较少,转动角度比较大,而且转动也并不十分连贯[1]。
基于单片机的步进电机转速控制器的设计的开题报告

[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.
基于单片机的步进电机控制电路设计

基于单片机的步进电机控制电路设计
步进电机是一种应用广泛的电机,它的控制方式是通过逐步改变电流来驱动电机转动。
基于单片机的步进电机控制电路设计可以使步进电机的控制更加精确、方便和自动化。
下面将介绍一下如何设计一台基于单片机的步进电机控制电路。
首先,我们需要选择合适的单片机。
对于步进电机控制,需要一个I/O口数目足够的单片机,并且要求计算速度快、性能稳定。
常用的单片机有AT89C51、AVR、PIC、STM32等,其
中STM32拥有强大的计算能力和外设支持,非常适合用于步
进电机控制电路的设计。
接下来,我们需要考虑步进电机的驱动方式。
步进电机可以采用全步进或半步进两种方式驱动。
全步进控制方式会让电机一步步转动,步距为180度,转速慢但精确度高,而半步进控制方式可以让电机先半步,再进入全步进控制,提高了转速同时又保持了较高的精度。
最后,我们需要设计电路连接和代码编写。
在电路连接方面,需要将单片机输出引脚和驱动芯片的控制引脚相连,同时将驱动芯片输出端和电机的相应引脚相连。
在代码编写方面,需要根据所选单片机的指令集来编写步进电机控制引脚输出的程序,实现步进电机转速和方向的控制。
综上所述,基于单片机的步进电机控制电路设计需要选取合适的单片机,选择合适的步进电机驱动方式,并根据电路连接和
代码编写来实现电机的精确控制。
这样设计出的步进电机控制电路可以应用于各种机械设备控制,使之更加智能化和自动化。
- 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;}}。