好好学习,天天向上,一流范文网欢迎您!
当前位置: >> 报告 >> 汇报材料 内容页

基于STM32的步进电机控制系统学院:电子信息科学与技术题目

课程设计报告

设计课题:基于STM32的步进电机控制系统 学校:电子工程学院

专业:电子信息科学与技术

班级:13班电子信息科学与技术

学号:201330310101、201330310109、

201330310126, 201330310128

姓名:白以霞、何廷芳、徐浩伟、叶莉邮箱:186********@163.com

时间:2016 年 9 月

分数:

指导教师:杨毅

华南农业大学

电子工程学院应用物理系

课程设计(报告)作业本

学生姓名 白以霞、何廷芳、许浩伟、叶莉 指导教师 杨毅 职称讲师 学号 201330310101、201330310109、

201330310126, 201330310128

电子信息科学与技术专业

题目是基于STM32的步进电机控制系统

任务和要求

1、设计一个以STM32为核心的步进电机控制系统;

2、用键盘调整电机转速值:按“+”键,电机转速会增加。按“-”键,电机转速会降低。

无按键时电机转速恒定;

3、按键按下时,蜂鸣器用于提示按键音;

4、电机运转时,其转速值显示在液晶屏上;

5、设计硬件接口电路,编写裸机控制程序;

6.撰写课程设计报告。

开始日期 2016 年 9 月 2 日 结束日期 2016 年 9 月 30 日

1 简介

电机是根据电磁感应定律转换或传递电能的电磁装置。将机械能转化为电能的称为发电机,在电路中用G表示;将电能转化为机械能的称为电动机,在电路中用M表示。

步进电机是一种开环控制元件,可以将电脉冲信号转换成角位移或线位移。在非过载情况下,电机的转速和停止位置只取决于脉冲信号的频率和脉冲数,不受负载变化的影响,即给步进电机一个脉冲信号电机,电机转动一个步距角。这种线性关系的存在,加上步进电机只有周期性误差,没有累积误差的特点,使得步进电机在速度和位置控制领域的控制操作非常简单[1]。

本设计以STM32嵌入式控制板为核心,设计了一个基于STM32的步进电机控制系统。系统可通过按键控制,实时检测步进电机的转速。通过LCD液晶模块,可以显示电机的转动情况。

2.系统设计与理论分析

图 1 系统方案设计

如图1所示,该系统由STM32内核版、ULN2003驱动模块、步进电机模块、测速模块、按键控制模块、蜂鸣器模块和LCD速度显示模块组成。具体工作方法如下:

1)STM32核心板通过GPIOC口连接ULN2003驱动模块,保证ULN2003

正常工作;

2)ULN2003驱动模块与步进电机连接,驱动步进电机正常旋转;

3)测速模块与步进电机相连,实时测量步进电机的转速,并将转速信号反馈给STM32核心板;

4)LCD速度显示模块显示步进电机的速度;

5)按键控制模块与STM32相连,控制步进电机的工作状态(加速、减速、正转、反转等)。按键按下时,蜂鸣器模块发出提示音提示按键音。

该方案的优点是:

1)结构简单,无需复杂的布线设计;

2)使用方便,实现模块化,方便电路的焊接和错误调试;

3)所需元器件数量少,成本低。

3、硬件系统设计

3-1. STM32核心版

本设计采用STM32F103ZET6作为MCU,其资源包括:64KB SRAM,512KB FLASH,2个基本定时器,4个通用定时器,2个高级定时器,2个DMA控制器(共12个通道),3个1个SPI,2个IIC, 5个串口、1个USB、1个CAN、3个12位ADC、1个12位DAC、1个SDIO接口、1个FSMC接口和112个通用IO口[2]。MCU的部分原理图如图2所示。

STM32F103ZET采用ARM Cortex-M3处理器,内部资源非常丰富。与其他类型的MCU相比,STM32F103ZET的优势在于:

1)支持ARM Thumb-2指令集,充分融合ARM指令和Thumb指令,减少系统状态切换的时间开销,提高代码效率;

2)内部有一个嵌套的中断向量控制单元NVIC,支持“咬尾中断机制”和“延迟中断机制”,使系统的中断响应更快,系统实时性更好,每个I/O口可作为中断输入,提高了硬件设计的灵活性;

3) 支持复用I/O重映射功能。

4)价格低廉,功能强大,周边资源丰富;

图 2. MCU 部分原理图

3-2. ULN2003驱动模块

大多数电力电子电路都需要大电流输出能力,以驱动各种类型的负载。因此,功率驱动电路是电力电子设备输出电路的重要组成部分。

ULN2003A为7路反相电路,即输入端为高电平时,ULN2003A输出端为低电平,输入端为低电平时,ULN2003A输出端为高电平。ULN2003A由7个达林顿管组成,每个达林顿管的结构如图3所示。因此,ULN2003A可以

作为一些器件,如步进电机的驱动电路。

图 3. ULN2003A 中的达林顿管结构

图4是ULN2003A的芯片管脚图。从图中可以看出,ULN2003A芯片有16个管脚。通过查阅数据手册,您可以查看表1中记录的每个管脚的功能。

图 4. ULN2003A 芯片管脚图

表1 ULN2003A各引脚功能

本设计采用IN1~IN4输入,对应的OUT1~OUT4输出接步进电机。电路连接方法如图5所示。

图 5. ULN2003A 电路连接图

本设计采用的ULN2003A为国产型号,其主要技术参数如下:

表2 ULN2003A驱动模块主要技术参数

3-3。步进电机

步进电机可以将电脉冲转换成相应的角位移或线位移。常见的步进电机有三线式、五线式和六线式。本设计采用的步进电机28BYJ-48属于四相五线步进电机。图7为28BYJ-48的控制等效电路,其主要参数如表3所示。

图 6. 28BYJ-48 步进电机

图 7. 步进电机的等效控制电路

表3 28BYJ-48步进电机主要技术参数

当一系列连续的控制脉冲施加到步进电机上时,它可以连续转动。每个脉冲信号对应步进电机某一相或两相绕组通电状态的变化,即转子转过一定角度(步距角)。当通电状态的变化完成一个周期时,转子转过一个齿距。在本设计中,28BYJ48 四相步进电机运行在以下上电模式。

表4 28BYJ48四相步进电机供电方式

3-4。电机测速模块

电机测速功能由对射式计数传感器模块实现。对射式计数传感器又称对射式光电传感器,其实物显示如图8所示:

图8 对射式计数传感器模块实物图

①工作原理

本设计采用的对射式计数传感器模块为单通道信号输出,具有信号输出指示功能。模块工作电压为直流5V,内部有一个槽型光耦开关H2010,利用被测物体对红外光束的遮蔽或反射,通过同步门控检测物体的有无。循环:当步进电机转动时,步进电机的齿轮会周期性地挡住传感器模块发出的红外线。当有挡块时,模块输出高电平,同时LED灯熄灭。当没有遮挡物时,模块输出低电平,同时LED灯亮。从而实现了对步进电机转速的精确测量。

②主要技术指标

对射式计数传感器模组的主要技术指标如下表所示:

3-5。按钮控制模块

图 9. 按键控制模块电路

图9是本设计中采用的按键控制模块的电路原理图。从图中可以看出,按键控制模块包括4个独立的按键,分别连接到嵌入式核心板的GPIOE.2~GPIOE.5端口。每个键都是一个小的弹性开关,按下时关闭,松开时自动打开。单个按钮对应的功能如下:

1)SW1:控制步进电机加速;

2)SW2:控制步进电机减速;

3)SW3:控制步进电机的启停;

4)SW4:控制步进电机正反转。

3-6。蜂鸣器显示模块

蜂鸣器是一种一体化结构的电子发声器。它由直流电压供电,广泛应用于电脑、报警电子玩具、汽车电子设备、电话机、定时器等电子产品中作为发声装置。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种。本设计采用电磁式蜂鸣器,其实物展示如图10所示:

图 10. 蜂鸣器实物图

①工作电路

蜂鸣器模块的工作电路如图11所示,该模块连接到嵌入式核心板的GPIOF口。

图 11. 蜂鸣器模块工作电路

②模块功能

通过软件编程可以实现以下功能:

当系统检测到按键被按下时,通过GPIOF口输出信号,蜂鸣器发声,从而实现模拟按键音。

3-7。LCD速度显示模块

①TFLCD简介

TFTLCD 代表薄膜晶体管液晶显示器。它的英文全称是:Thin Film Transistor-Liquid Crystal Display。TFTLCD不同于无源TNLCD和STNLCD的简单矩阵。它在液晶屏的每个像素点上都有一个薄膜晶体管(TFT),可以

有效克服了非选择时的串扰,使显示液晶屏的静态特性与扫描线数无关,从而大大提高了图像质量。TFTLCD又称真彩色液晶显示器。

②本设计选用的LCD

本设计选用2.8寸ALIENTEK TFTLCD模块作为液晶显示速度显示模块。本模块支持65K色显示,显示分辨率为320×240,接口为16位80并口,自带触摸屏。

模块外观如图12所示:

图 12. ALIENTEK TFTLCD 模块

在本设计中,ALIENTEK TFTLCD模块可以显示步进电机的速度、方向、转动状态(正转/反转)和转动孔数。具体显示结果将在下文“系统运行分析”中进行说明。

4.软件系统设计

①程序设计流程图

图 13. 程序设计流程图

②软件系统设计思路

软件系统包括7个文件:main.c、lcd.c、led.c、beep.c、timer.c、exit.c、key.c。每个文件主要是相关硬件设备的驱动函数和相关IO口的配置。

硬件设计的初始化,主要是调用相关设备的初始化函数,函数为:

1)分别为液晶屏、LED、蜂鸣器、定时器、键盘灯配置相关IO口和工作模式,

2)开启NVIC中断,配置相关NVIC的优先级,从而实现按键的实时处理, 3)配置定时器的工作模式,设置定时器时钟预分频值为35999,自动重新加载

值为59999,当定时器计数到60000时,产生定时器中断。中断时间:Time = (59999+1)*(35999+1)/72M = 30 s

初始化完成后,程序进入死循环,其工作流程为:

1) 扫描键盘是否被按下,设置变量t。当t=0时四相步进电机,无键值按下,程序进入LCD显示四相步进电机,调用LCD驱动函数将当前步进电机的相关信息(速度、旋转方向、旋转或停止)显示在LCD屏上;当t=1时,按下键值,根据键值程序进入不同的子程序,分别实现电机的加速、减速、起停和转向。

2) 显示相关信息后进入电机驱动程序。电机的驱动方式有很多种,这里我们采用四相八拍的驱动相序:

A—AB—B—BC—C—CD—D—D—A

这种驱动方式的优点是转动力矩较大,可以拉动较重的东西,缺点是速度不快。其速度的控制是通过延时的长短来实现的,可以通过按键来改变,每个按键的步长设置为5ms。

5、系统运行分析

①系统构成

本设计由嵌入式主板和外接电路板两部分组成:

1)嵌入式主板:包括以STM32为核心的MCU、LCD速度显示模块;

2)外部电路板:包括步进电机模块、ULN2003驱动模块、蜂鸣器模块、按键模块。系统组成如图14所示。

图 14. 系统组成

(1.LCD速度显示模块;2.步进电机模块;3.ULN2003驱动模块;4.按键模块;

5.蜂鸣器模块)

②步进电机运行分析

打开嵌入式主板和外接电路板的开关,步进电机正常转动,操作如下: 1)按下按钮SW1,步进电机加速,最大加速度可达30s /圆形的;

2)按下按钮SW2,步进电机减速,最小减速度可降至80秒/轮;

3)按下按钮SW3,步进电机反转;

4)按下按钮SW4,步进电机停止。再次按下按钮 SW4,步进电机重新启动。

综上所述,步进电机按要求正常运行。

③蜂鸣器模块的工作分析

当按下某个按钮时,蜂鸣器发出清脆的声音,表示模块工作正常。

④LCD速度显示模块分析

打开嵌入式主板(此时外接电路板的开关没有打开),LCD速度显示模块工作正常,显示情况如图15所示:

图 15. LCD 显示案例 1

从图15可以看出,此时LCD上显示的信息从上到下分别是:

1) SCAU:学校名称;

2)电机学院:学院名称;

3)Motor Speed Detector:步进电机转速检测;

4)孔数:表示步进电机转过的孔数。由于此时步进电机没有转动,所以该行没有数值;

5)方向:表示步进电机的转速。由于此时步进电机没有转动,所以这一行的值为000.00 s/round;

6) Status:表示步进电机旋转的方向。由于此时步进电机没有转动,所以这一行没有数值。

打开外部电路板的开关,步进电机就会转动。此时液晶显示速度显示模块的操作如下:

1)按下按钮SW1,步进电机加速,最大加速度可达30秒/轮;

2)按下按钮SW2,步进电机减速,最小减速度可降至80秒/轮;

1)2)情况下的LCD显示如图16所示;

图 16. LCD 显示案例 2 和 3

从图16可以看出,按下SW1键时,步进电机加速,Speed栏显示“up”,表示按下了加速按钮;当按下SW2键时,步进电机减速,Speed栏显示“下降”,表示按下了减速按钮。

3)按下按钮SW3,步进电机反转;

4)按下按钮SW4,步进电机停止。再次按下按钮 SW4,步进电机重新启动。

综上所述,步进电机按要求正常运行。

3)4)情况下的LCD显示如图17;

图 16. LCD 显示案例 4 和 5

从图17可以看出,当按下SW3键时,步进电机反转,Direction栏由“1”变为“0”,其中“1”表示正转,“0”表示反转;当按下 SW4 键后,步进电机停止工作,Status 栏由“Moving”变为“Stop”,其中“Moving”表示步进电机工作,“Stop”表示步进电机关闭。

综上所述,液晶显示速度显示模块按要求正常工作。

六、总结与讨论

本系统采用STM32嵌入式进行可编程控制,结合外围步进电机、LCD等,通过嵌入式核心板的使用降低了硬件电路设计的复杂度。经过系统运行测试,系统各模块工作正常,成功实现了基于STM32的步进电机控制系统的基本功能和扩展。

本系统具有以下特点:

1)模块化的设计思想,简化了硬件电路的设计,便于错误检测。

2)采用模块化软件设计思想,程序分为主程序、LCD驱动程序、LED程序等7个程序模块,简化了程序的设计,方便了软件的调试。

当然,虽然达到了设计要求,但本系统还有很多值得改进的地方,例如: 1)步进电机转动速度慢,最快只能达到30s/转左右;

2)旋转不稳定等液晶显示速度显示模块的速度显示值存在小范围不稳定跳跃等,这些不足和发展方向将在以后的工作中加以改进和实现。