基于stm32的舵机控制系统设计 - 学位论文 - 图文

更新时间:2024-03-24 16:54:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于STM32的舵机控制系统

院 系 专 业 班 级 学 号 姓 名 指导教师 负责教师

北方科技学院

自动化 B641301 B64130116 李国军 张庆新 张庆新

沈阳航空航天大学

2010年6月

沈阳航空航天大学北方科技学院毕业设计(论文)

摘 要

随着越来越多的高科技产品逐渐融入了日常生活中,舵机的控制系统发生了巨大的变化。单片机、C语言等前沿学科的技术的日趋成熟与实用化,使得舵机的控制系统有了新的的研究方向与意义。本文描述了一个由STM32微处理器、舵机、LCD显示器、键盘等模块构成的,提供基于STM32的PWM信号舵机的控制系统。该系统采用STM32微处理器为核心,在MDK的环境下进行编程,根据键盘的输入,使STM32产生周期性PWM信号,用此信号对舵机的速度及转角进行控制,并且通过LCD显示出数据。结果表明该系统具有结构简单、工作可靠、精度高等特点. 关键词:STM32微处理器;舵机系统;LCD显示;PWM信号

I

沈阳航空航天大学北方科技学院毕业设计(论文)

Abstract

As well as the high-tech products gradually integrated into the daily life, servo control system has undergone tremendous changes. SCM and C language of the frontier disciplines such mature technology and practical,Make steering control system is a new research direction and meaning. This paper describes a STM32 microprocessors, steering, LCD display and keyboard, etc. Based on the STM32 servo control system of PWM signal,This system uses STM32 microprocessor as the core, MDK in the environment, according to the keyboard input programming, STM32 produce periodic PWM signal, with this signal to the velocity and Angle of steering gear control, and through the LCD display data. The features of the simple hardware, stable operation and high precision are incarnated in the proposed system.

Keywords: STM32 microprocessors; Steering system; LCD display;pulse width modulation signal

II

沈阳航空航天大学北方科技学院毕业设计(论文)

目 录

第1章 绪 论 ..................................................................................................................... 1 1.1 课题背景 .................................................................................................................... 1 1.2 课题的研究展望 ........................................................................................................ 2 课题任务及要求 ............................................................................................................... 2 1.3 课题内容及安排 ........................................................................................................ 3 第2章 硬件设计 ................................................................................................................. 4 2.1 STM32微处理单元 .................................................................................................... 4 2.2 舵机............................................................................................................................. 8 2.3 LCD显示器 ................................................................................................................ 9 2.4 时钟电路的制作 ...................................................................................................... 10 第3章 软件设计 ............................................................................................................... 12 3.1 STM32固件库简介 .................................................................................................. 12 3.2 软件的总体设计 ...................................................................................................... 13 3.3 时钟初始化子程序 .................................................................................................. 14 3.4 I/O口初始化子程序 ................................................................................................. 16 3.5 PWM信号子程序 ..................................................................................................... 17 3.6 A/D转换初始化子程序 ............................................................................................ 18 3.7 LCD显示子程序 ...................................................................................................... 19 第4章 系统调试 ............................................................................................................... 21 4.1 调试方案 .................................................................................................................. 21 4.1.1 硬件调试方案 .................................................................................................... 21 4.1.2 软件调试方案 .................................................................................................... 21 4.2 故障调试及解决方法 .............................................................................................. 22 4.3 联调结果 .................................................................................................................. 22 结 论 ................................................................................................................................. 26 社会经济效益分析 ............................................................................................................. 27 参考文献 ............................................................................................................................. 28

III

沈阳航空航天大学北方科技学院毕业设计(论文)

致 谢 ................................................................................................................................. 29 附录I 电路原理图........................................................................................................... 30 附录Ⅱ 程序清单 ............................................................................................................... 35

IV

沈阳航空航天大学北方科技学院毕业设计(论文)

第1章 绪 论

舵机(servo motor),又名伺服电机,主要是由外壳、电路板、马达、减速齿轮和电位器构成。舵机主要适用于那些需要角度不断变化并可以保持的控制系统,比如人形机器人的手臂和腿, 车模和航模的方向控制。舵机的基本工作原理是发一个控制信号给舵机, 经电路板判断转动方向, 再驱动马达开始转动, 透过减速齿轮将动力传至摆臂, 同时由电位器检测送回讯号, 判断是否已经到达指定位置。早期在模型上使用最多,主要控制模型的舵面,所以俗称舵机。舵机接收一个简单的控制命令就可以自动的转动到一个比较精确的角度,仿人型机器人就是舵机应用的最高境界。随着工业的发展,舵机应用到那些需要角度不断变化并可以保持的控制系统,目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。

1.1 课题背景

舵机最早出现在航空模型中,飞机的飞行姿态是通过调节发动机和各个控制舵面来实现的。以简单的四通飞机来说,遥控器有四个通道,分别对应四个舵机,而舵机又通过连杆等传动元件带动舵面的转动,从而改变飞机的运动状态。舵机因此得名:控制舵面的伺服电机。不仅在航模飞机中,在其他的模型运动中都可以看到它的应用:船模上用来控制尾舵,车模中用来转向等等。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍,由此可见,凡是需要操作性动作时都可以用舵机来实现,随着舵机的应用越来越广泛,对舵机的精确控制要求也越来越高,因此一个好的舵机控制系统使舵机的控制精确会达到一个新的高度,让舵机达到理想的工作状态。

STM32系列32位闪存微控制器基于突破性的ARM Cortex-M3内核,这是一款专为嵌入式应用而开发的内核。STM32系列产品得益于Cortex-M3在架构上进行的多项改进,包括提升性能的同时又提高了代码密度的Thumb-2指令集,大幅度提高的中断响应,而且所有新功能都同时具有业界最优的功耗水平。STM32F系列产品

1

沈阳航空航天大学北方科技学院毕业设计(论文)

的目的是为MCU用户提供新的自由度。它提供了一个完整的32位产品系列,在结合了高性能、低功耗和低电压特性的同时保持了高度的集成性能和简易的开发特性.它的优点有以下几个方面:搭载ARM公司最新的、具有先进架构的Cortex-M3内核,出色的实时性能,优越的功效高级的、创新型外设,最大的集成性易于开发,加速了面市时间整个产品系列具有脚到脚、外设和软件的高度兼容性,为您提供最大的灵活性。

1.2 课题的研究展望

舵机是随着生产发展而产生和发展的,而舵机的发展反过来又促进社会生产力的不断提高。以前,舵机的发展过程是由诞生到在工业上初步应用、各种舵机建立和发展。在进入计算机和自动化时代的今天,不仅对舵机提出了诸多性能良好、运行可靠、单位容量的重量轻、体积小等方面越来越多的要求,而且随着自动控制系统的计算装置的发展,在舵机转动的理论基础上,发展出多种高精度、快响应的控制舵机。与此同时,电力电子学等学科的渗透使舵机这一较为成熟的学科得到新的发展。

当前科学技术突飞猛进,因此舵机正向多用途、多品种方向发展,向高精度和高稳定的方向发展。在应用上,由于计算机技术迅速发展,将会出现由机器人工作的无人工厂,以计算机作为这些工厂的“中枢神经”,使实现无人化成为可能。在这种时代里,某些特种舵机必须具有快速响应、高精度运动、快速启动和停止等使机器人比人的手脚更复杂而精巧的运动。理论上,在舵机中应用了控制技术,使舵机具有更好的特性,因此舵机控制系统成为控制一些重要元件的重要的部分。

基于STM32的舵机控制系统会越来越多的应用在精度要求高的舵机系统中,舵机的控制将与其他的元件结合,功能越来越强大,使得舵机的作用也会越来越大。

课题任务及要求

本次设计的基于STM32的舵机控制系统是以STM32微处理器为核心,在MDK的环境下进行C语言的编程,编写键盘、ADC、显示的子程序,设计键盘中的某个按键,当按下该按键时,通过STM32产生PWM信号,该信号为舵机控制信号,控制多路舵机,实现可通过按键控制舵机的旋转角度和速度等有效准确的控制,并

2

沈阳航空航天大学北方科技学院毕业设计(论文)

将其状态通过TFT彩色LCD显示,毕设方案:

1、 2、 3、 4、 5、 6、 7、

熟悉科研课题的环境及毕业设计的具体要求; 阅读主要参考文献,收集有关资料; 学习STM32处理器; 学习舵机控制的技术资料; 学习基于固件库的程序开发方法; 掌握MDK编程环境的C语言开发平台; 完成论文。

1.3 课题内容及安排

本文对基于STM32的舵机控制系统设计进行了详细的介绍,共分五章。第1章简要介绍了整个课题的研究背景、目的、意义及整个任务的要求安排;第2章是针对此次课题的任务进行方案论证,尤其重要的对STM32微处理器其32位的处理能力及内嵌的语音对本设计的影响进行详细的阐述;第3章具体介绍了整个控制系统的硬件设计,包括键盘输入模块电路,转接板电路,显示电路的设计;第4章阐述了舵机控制系统的软件设计,包括STM32初始化子程序,数据处理子程序,显示子程序的设计。第5章是针对硬件调试、软件调试和整机连调的结果进行了具体的分析和说明。

3

沈阳航空航天大学北方科技学院毕业设计(论文)

第2章 硬件设计

硬件是整个基于STM32技术的舵机控制系统设计的基础,怎样选择合适的器件来组成整个硬件电路十分关键,也是本章叙述的重点。除此之外,以下部分还会分别阐述本设计运用到的各个模块的特性和原理,以及它们所能实现的功能。

2.1 STM32微处理单元

本设计的舵机控制系统需要STM32处理器,STM32微处理器完成键盘输入量对舵机的控制,并且通过LCD显示舵机的转动角度,作为舵机的主控制器,实现对舵机稳定和精确的控制。

作为微型移动机器人上的主控制器,需要处理的数据和事件比较多,因此需要一款功能强大的处理器——STM32这款32位的微处理器正是最佳的选择。下面将着重介绍STM32的强大的功能以及本设计所用到的STM32中的SPI通讯的部分的工作原理。

STM32的突出的功能包括以下几点:

1.性能强劲。在相同的主频下能做处理更多的任务,全力支持劲爆的程序设计。 2.功耗低。延长了电池的寿命——这简直就是便携式设备的命门(如无线网络应用)。

3.实时性好。采用了很前卫甚至革命性的设计理念,使它能极速地响应中断,而且响应中断所需的周期数是确定的。

4.代码密度得到很大改善。一方面力挺大型应用程序,另一方面为低成本设计而省吃俭用。

5.使用更方便。现在从8位/16位处理器转到32位处理器之风刮得越来越猛,更简单的编程模型和更透彻的调试系统,为与时俱进的人们大大减负。

6.低成本的整体解决方案。让32位系统比和8位/16位的还便宜,低端的Cortex‐M3单片机甚至还卖不到1美元。

7.遍地开花的优秀开发工具。免费的,便宜的,全能的,要什么有什么。

4

沈阳航空航天大学北方科技学院毕业设计(论文)

正是基于以上这么多的优点,使得STM32成为本设计中微型移动机器人上的主处理器的最佳选择。下图2.1为STM32的系统结构图

图2.1 STM32系统结构图

高级控制定时器由一个16位的自动装载计数器组成,它由一个可编程预分频器驱动。它适合多种用途,包含测量输入信号的脉冲宽度(输入捕获),或者产生输出波形(输出比较,PWM,嵌入死区时间的互补PWM……)。使用定时器预分频器和RCC时钟控制预分频器,可以实现脉冲宽度和波形周期从几个微秒到几个毫秒的调节。高级控制(TIM1)和通用(TIMx)定时器是完全独立的,它们不共享任何资源

TIM1 定时器的功能包括:

1.16位上,下,上/下自动装载计数器 2. 数值

3. 4个独立通道:输入捕获,输出比较,PWM生成(边缘或中间对齐模式),单脉冲模式输出,死区时间可编程的互补输出

5

位可编程预分频器,计数器时钟频率的分频系数为1~65535之间的任意

沈阳航空航天大学北方科技学院毕业设计(论文)

4.使用外部信号控制定时器和定时器互连的同步电路 5. 在指定数目的计数器周期之后更新定时器寄存器

6.刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 7.如下事件发生时产生中断/DMA:

(1) 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)

(2) 触发事件(计数器启动,停止,初始化或者由内部/外部触发计数) (3) 输入捕获─ 输出比较─ 刹车信号输入 高级定时器TIM的框图如下,

6

沈阳航空航天大学北方科技学院毕业设计(论文)

图2.2 定时器TIM的框图

7

沈阳航空航天大学北方科技学院毕业设计(论文)

2.2 舵机

图2.3 舵机实物图

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统 。 舵机都有外接三根线,分别用棕、红、橙三种颜色进行区分,棕色为接地线,红色为电源正极线,橙色为信号线。电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源.电压通常介于4~6V,一般取5V

图2.4 舵机的接线图

其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:

0.5ms---------—90度; 1.0ms---------—45度;

8

沈阳航空航天大学北方科技学院毕业设计(论文)

1.5ms--------------0度; 2.0ms------------45度; 2.5ms------------90度;

舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,

标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms之间,但是,事实上脉宽可由0.5ms到2.5ms之间,脉宽和舵机的转角0°~180°相对应。有一点值得注意的地方,由于舵机牌子不同,对于同一信号,不同牌子的舵机旋转的角度也会有所不同。

控制说明:舵机的响应时间对于控制非常重要,一方面可以通过修改PWM周期获得。另一方面也可以通过机械方式,利用舵机的输出转距余量,将角度进行放大,加快舵机响应速度;

2.3 LCD显示器

LCD显示器是本课设的主要器件,当键盘的输入量经过STM32微处理器进行数据的处理,由模拟量转换成数据量,传给LCD进行显示数据。LCD模块的连接有两种方法:直接控制和间接控制。直接控制实际指的是LCD模块的总线接口直接与MCU端口连接,然后MCU通过程序控制端口来模拟LCD的总线时序来完成对其的控制操作;而间接控制指的是MCU本身就有外部总线拉出,与LCD的总线接口对应的连接上,程序中直接操作总线以控制LCD。考虑到电路设计的简洁性及灵活性,本系统采用PWM信号点亮LCD的方式,硬件电路图如下,

9

沈阳航空航天大学北方科技学院毕业设计(论文)

图2.5 PWM信号点亮LCD硬件电路

2.4 时钟电路的制作

STM32工作时,是在统一的时钟脉冲控制下一拍一拍的进行的,这个脉冲是由STM32控制器中的时序电路发出的,STM32的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件间的同步工作,STM32内部电路就在唯一的时钟信号控制下严格的按时序进行工作。要给单片机提供时序要有相关的硬件电路,即振荡器和时钟电路。常用的时钟电路设计有两种方式,一种是内部时钟方式,另一种是外部时钟电路方式。

本系统采用了内部时钟方式,利用STM32内部的振荡器,然后在引脚OSC-IN和OSC-OUT两端跨接晶体,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,如图2.6所示。

10

本文来源:https://www.bwwdw.com/article/4068.html

Top