1、 本科毕业论文 ( 20 届) 基于 ARM 的直流电机调压调速系统设计 所在学院 专业班级 电子与信息工程 学生姓名 学号 指导教师 职称 完成日期 年 月 本科生毕业论文 I 摘要 随着社会的发展和科学技术的进步,嵌入式技术的应用已经走进社会的各个领域:工业控制、交通管理、信息家电、家庭智能管理系 统、 POS 网络及电子商务、环境工程与自然和机器人等。所谓嵌入式系统是指以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统 1-5。 ARM 处理器是一个 32 位元精简指令集 (RISC)处理器架构 ,其广泛地使用在许多嵌入
2、式系统设计。 本文以基于 ARM 的直流电机调压调速系统设计为研究对象,结合广州天嵌科技有限公司生产的 TQ2440 ARM 开发板(基于三星 S3C2440 SOC)以及自己制作的直流电机模块,说明了ARM 开发板与直流电机模块之间的接口, 详细讲解了 ARM Linux 交叉编译环境的搭建,Linux-2.6.30.4 内核的编译与移植,电机速度控制与速度检测驱动程序的编写,根文件系统的制作, QT-4.5 图形库的编译与图形界面程序的编写,完成了基于 ARM 的直流电机调压调速系统的设计。本文的重点和难点是驱动程序的编写,在 Linux 下编写驱动程序并不像在裸板上直接编写来得容易,因为
3、 Linux 内核环境下下涉及到进程(线程间)的同步与互斥、通信,避免临界区访问的死锁,还需要熟悉内核里面对驱动支持的接口。而这一切又是建立在对 C语言必须有非常深入的本质的了解的 基础上,因为内核里大部分代码都是用 C 语言写的。 关键词: ARM; Linux; QT;根文件系统;驱动程序本科生毕业论文 II Abstract With the social development and scientific technology making progress, the application of embedded technology has been into all areas
4、 of society: industrial control, traffic management, information appliances, smart home management systems, POS network and e-commerce, environmental engineering and natural and robot and so on. The so-called embedded system is application-centric, computer technology, software and hardware can be c
5、ut to meet the app lication system functionality, reliability, cost, size, power consumption demanding dedicated computer system. ARM processor is a 32-bit reduced instruction set (RISC) processor architecture, which are widely used in many embedded system design. This article treated the ARM of the
6、 pressure regulating speed control system of dc motor design as the research object, combined with the union Guangzhou EmbedSky Technology Co., LTD production TQ2440 ARM development board (SOC) which is based on Samsung S3C2440 and homemade dc motor module, explains the ARM development board and dc
7、motor module of the interface between, explains the ARM Linux cross-compiling environment construction, Linux - 2.6.30.4 kernel with transplantation, motor compilation speed control with speed detection driver compiling, and root file system production, QT 1-4.5 graphics library compiler and GUI app
8、lication compiling, and completed the dc motor voltage based on ARM speed system of design. This peppers keystone and i difficulty is that writing driver in the Linux is not easy as a direct preparation of the bare board, because under the circumstances of the Linux kernel involved in the process (t
9、hreads) synchronization and mutual exclusion, communication, avoid ing deadlock when accessing to critical areas, but also need to be familiar with the inside of the driver support kernel interface. All this is built on a very in-depth understanding of the C language, because most of the kernel code
10、 is written by that. keywords: ARM; Linux; QT; root file system; driver本科生毕业论文 III 目录 第 1 章 引言 .1 1.1 课题研究背景 .1 1.2 研究现状 .1 1.3 研究目的和意义 .2 1.4 研究内容 .2 第 2 章 硬件环境搭建 .4 2.1 TQ2440 开发板介绍 .4 2.2 硬件需求分析 .4 2.3 制作直流电机模块 .5 2.4 直流电机模块测试 .6 第 3 章 嵌入式软件开发环境搭建 .7 3.1 安装 Ubuntu 于机 .7 3.2 安装交叉编译器及相应的库 .7 3.3 内核
11、编译移植 .7 3.4 根文件系统构建 .14 3.5 QT 库编译移植 .18 第 4 章 驱动程序设计 .19 4.1 设备驱动程序的工作原理 .19 4.2 设备驱动程序的 file_operations 结构 .20 4.3 S3C2440 PWM 定时器功能分析 .21 4.4 编写 PWM 定时器驱动程序 .22 4.5 测试 PWM 定时器驱动 .24 4.6 S3C2440 中断控制器分析 .25 4.7 编写中断驱动程序 .26 4.8 测试中断驱动程序 .27 第 5 章 图形界面设计 .29 5.1 QT 简介 .29 5.2 QT 信号与槽机制 .29 本科生毕业论文
12、IV 5.3 图形界面设计 .29 5.4 测试图形程序 .32 小结 .34 致谢 . 错误 !未定义书签。 参考文献 .35 本科生毕业论文 1 第 1 章 引言 1.1 课题研究背景 直流电机控制系统在工业控制、农业生产以及我们日常生活当中有着广泛的应用,比如智能小车里面的马达,也就是直流电机在控制车速的时候涉及到直流电机的转速控制。本文研究的直流电机控制系统由一个小型马达,一个红外对射管,一个与电机同轴的有 6 个均匀分布小孔齿轮以及三极管开关电路和红外对射管中断信号产生电路所构成。电机的转动与否受控于三极管开关电路,所以就可以通过控制三极管开关电路的导通与关闭来控制直流电 机的旋转与
13、停止。 直流电机转速可以通过改变直流电机两端电压来控制,其有两种方法:一种是通过在电路当中串联可调电阻分压的方式,来降低直流电机两端电压从而调节其转速,这种方法需要电路当中的电阻来承受一部分功率,白白浪费了电能,此种方法不可取。另一种方案是采用 PWM 波对直流电机进行调速。 PWM 是 Pulse-Width Modulation 的缩写,意为脉冲宽度调制。脉宽调制是开关型稳压电源中的术语。这是按稳压的控制方式分类的,除了 PWM 型,还有 PFM 型和 PWM、PFM 混合型。脉宽宽度调制式( PWM)开关型稳压电路 是在控制电路输出频率不变的情况下,通过电压反馈调整其占空比,从而宏观上改
14、变电路两端的平均电压。 在直流电机调速系统当中, PWM 波调速是在输出方波频率不变的情况下,改变其占空比,在单位周期时间内, 80的导通时间比 20的导通时间在电机两端的等效直流电压来得高,直流电机也就转得快快,所以就可以通过改变占空比的方式来给直流电机调速。 由单个三极管构成的开关电路是最简单的直流电机驱动电路,采用 8050 三极管,可以轻松驱动一个微型马达。 S3C2440 是三星公司开发的基于 ARM920T 处理器内核片上系统 (SOC),在 1.3V 内核电压的情况下可以达到 400MHz 的主频,高性能低功耗高性价比。其外设资源丰富,内部有 4个 PWM定时器,支持从 GPIO
15、口输出,也支持从 GPIO口引入外部中断信号。 TQ2440是广州天嵌科技有限公司开发的基于 S3C2440 的 ARM9 开发板,其设计分为核心板(最小系统板)和底板(功能扩展板)。在底板上有两排插针,是 GPIO 口得引出脚。可以用来作为直流电机得调速信号的输出引脚和测速信号的输入引脚。 本课题研究了一种直流电机调压调速系统,该系统由 TQ2440 开发板和直流电机调速模块组成。开发板和直流电机 模块之间用杜邦线连接来传输控制信号。 1.2 研究现状 电机控制技术在这二十多年来发生了非常大的变化,其电机的控制方法由模拟控制技术向数字控制技术转变,如由单片机来控制。之所以有现在的这些转变,这
16、是由于当今时代微电子技术、传感器技术、自控技术和微电脑应用技术的大力发展和推广应用之后所有的成就。 本科生毕业论文 2 ARM 处理器是 ARM 公司设计的精简指令集( RISC)处理器内核,它跟我们平时用的通用处理器如 PC 里采用的 X86 的处理器相比,其在硬件设计上经行了精简,去掉了那些功能复杂多样但是使用频率又比较低的指令。这使得 ARM 处理 器在功耗上大大的降低,并且通过 ARM对应的编译器进行代码优化之后同样可以完成一条复杂指令能完成的功能,就是通过几条简单的指令来实现。现在 ARM 处理器的应用相当的广泛,比如在娱乐消费类电子产品、嵌入式工业方面的控制、网络方面的控制如路由器
17、等。 Linux 操作系统是 Unix 类操作系统的另一个版本,它在 1991年 10 月诞生,也就是在那时第一次正式的向外公布其第一个版本的源码。由于其代码开源、免费,只要遵循 GPL( General Public License)规范,便可以在对 Linux 的源代码进行修改之后进行发布。 Linux的这些特性使得它获得了快速的发展,全世界的 C 语言、操作系统爱好者等都可以参与到Linux 内核的开发。到现在 Linux 已经广泛的应用于我们的日常生活当中,比如市场上流行的安卓智能手机的操作系统内核用的就是 Linux 内核。 1.3 研究目的和意义 直流电机的应用在日常生活当中随处可
18、见,是常见的动力提供原件,研究直流电机的速度控制,有着非常重要的意义。 ARM 是近年来发展非常迅速的处理器,现在最新的 ARM 内核为 Cotex-a8、 Cotex-a9,其在高端智能手机、平板脑上的应用越来越普及,应用前景十分好 。将其应用于直流电机的速度控制,有着极大的使用价值。以脉宽调制技术为代表的电机数字驱动技术也在迅猛发展,将计算机技术应用于这一领域正好可以发挥其在数字控制方面的优势。微电子技术和计算机控制技术的发展,为计算机控制技术的发展和应用奠定了坚实的基础。 Linux 操作系统在近几年的发展也十分迅速,其在服务器上的使用早已经十分普及,因为网络是 Linux 的专长 6-
19、8。 Linux 以其免费、开源,又其内核大部分源码为 C 语言编写,深受程序开发爱好者得喜爱。除了服务器版本之外,主流的 Linux 发行版有 Ubuntu、 Debian、GNU/LinuxFedora、 Gentoo、 Mandriva Linux、 OpenSUSE、 CentOS、 Red Hat。在 Linux 操作系统里做程序开发,有利于对更加的深入理解 C 语言的原理。 本课题将对基于 ARM 微控制器的直流电机转速控制系统做深入研究,并对其设计、开发与调试方面做出研究。在软件设计开发过程当中,学会交叉编译环境的搭建、嵌入式操作系统的移植、根文件系统的构建、驱动程序的编写。 1
20、.4 研究内容 本课题的研究对象是直流电机,对直流电机转速进行控制。基本思想就是用 ARM 开发板作为 PWM 控制信号的信号源,通过 ARM 开发板的 GPIO 口将 PWM 波输出,经杜邦线连接到直流电机模块来控制直流电机的转速。然后再将直流电机模块产生的中断信号,也就是直流电机的转速信号经杜邦线送到 ARM 开发板的 GPIO 口, ARM 处理器统计每秒钟内中断产生的次数就可以计算出直流电机的转速。然后再将转速显示到开发板的 LCD 屏幕上,并且要求可以通过触摸屏来调节直流电机的转速。本方法要求 ARM 开发板具有 PWM 端口和中断信号引入端口,以及 LCD 显示屏和触摸屏。 本科生
21、毕业论文 3 系统硬件平台为天嵌科技有限公司开发的以 S3C2440 为核心的 TQ2440 开发板,开发板组成上分为系统核心板和功能扩展底板两块。在其底板上有两排 GPIO 口,可以提供 PWM 信号端口和外部中断信号引入端口。 TQ2440 开发还配有 LCD 以及触摸屏,可以很好的满足本次设计的部分要求。 系统的软件平台,嵌入式系统内核采用 Linux-2.6.30.4 的内核, U-boot-1.6 作为bootloader,图形程序的制作将使用诺基亚公司开发的 QT 库。 Linux 操作系统内核是一个可移植性非常好的内核,而且源码免费、完全公开,源码里有针对各个平台的配置,如 X8
22、6,PPC,ARM 等,其中就有针对 S3C2440 平台的配置。只要在原有配置的情况下做些修改,便可以在相应的开发板上运行。 结合现有的硬件平台和软件资源,本课题做了以下几项内容: ( 1)在硬件环境需求方面,介绍并分析了 TQ2440 ARM 开发板的现有硬件资源情况,对比本课题所需要的硬件平台之后还缺少直流电机模块。为了满足硬件资源需求,所以自行制作了直流电机模块并进行了对其进行了测试。 ( 2)在软件环境方面,因为需要在 Linux 下进行软件开发,需要搭建嵌入式程序开发环境,所以做了在 PC 机上安装 Linux 系统,安装交叉编译工具链,移植 Linux 内 核到开发板,制作根文件
23、系统,移植 QT 库等操作。 ( 3)硬件环境和软件环境搭建好之后,因本课题需要开发板要与直流电机模块之间通信,所以分析了 S3C2440 的 PWM 定时器的工作原理和外部中断的工作原理,并针对 TQ2440 开发板的PWM 端口( TOUT0)和外部中断 4 引脚( EINT4)编写了驱动程序。 ( 4)由于本课题需要 LCD 屏幕作为硬件与用户之间的接口,因此编写了 QT 图形应用程序,并且做好了用图形程序来显示和控制直流电机转速的调试工作。本科生毕业论文 4 第 2 章 硬件环境搭建 基于 ARM 的直流电机调压调速系统,在硬件上需 要一块 ARM 开发板,一个直流电机模块,开发板与直
24、流电机之间进行适当连接之后便可以控制直流电机。本课题所使用的开发板为广州天嵌科技出品的 TQ2440 ARM 开发板,它有丰富的硬件接口资源,其中就有可以为直流电机提供调速信号与速度显示的接口。由于还缺少直流电机模块,所以需要自行制作直流电机模块。 2.1 TQ2440 开发板介绍 TQ2440 开发板是广州天嵌科技有限公司出品的基于三星 S3C2440的 ARM 开发板,其有丰富的外设接口资源: CMOS 摄像头接口、用户中断按键接口、系统总线接口、 Jtag 接口、 RJ45网络 接口、三个串口扩展口、 USB Slave 接口、 USB Host 接口、音频输入输出接口、 GPIO 接口
25、、 SD 卡接口以及 LCD 接口。开发板实物如图 1.1 所示 : 图 1.1 TQ2440 开发板外设接口图 2.2 硬件需求分析 在 TQ2440 开发板当中有两排 GPIO 接口, TQ2440 开发板电路图对 GPIO 的定义如图 1.2: 图 1.2 TQ2440 GPIO 接口定义原理图 本科生毕业论文 5 由图 1.2 中可以看出,在 TQ2440 开发板提供的 GPIO 口当中,有 2 个 TOUT 定时器输出端口与 10 个 EINT 外部中断引入端口。在 ARM 直流 电机调速系统硬件当中,为了让 ARM 可以控制直流电机的转速并且对其转速进行测量, ARM 开发板需要向
26、直流电机模块输出控制信号并且采集由直流电机模块在旋转当中发出的中断信号。这里可用 GPIO 口当中的 TOUT0 作为PWM 波信号的输出端口来控制直流电机的转速,用 EINT4 作为转速中断信号的输入端口。 在 ARM 端口的控制信号输出类型与电机转速信号引入方式确定之后,便可制作出直流电机模块,使其使用来自 ARM 开发板的 PWM 波信号进行调速,并且发出高低电平变化的中断信号来通知 ARM 开发板直流电机的转速。 2.3 制作直流电机 模块 本课题的题目是基于 ARM 的直流电机调压调速系统设计,要求能对直流电机模块进行转速的显示与控制。根据题目要求,直流电机模块应该具有的功能为随速度
27、控制信号的变化而调速,而且可以将转速信号输出给 ARM 开发板。直流电机控制电路原理图如图 1.3 所示: 图 1.3 直流电机模块原理图 直流电机模块调速原理: ARM 开发板 PWM 端口输出固定频率的方波信号,经杜邦线连接到直流电机模块的 PWM 波输入引脚,该引脚经一个 470 欧姆的电阻后连到三极管 C8050 的基极。当三极管基极的电压为高电平时(开发板 GPIO 口输 出高电平为 3.3 伏),大于三级管的导通电压(锗管大于 0.1 伏,硅管大于 0.5 伏)时,三极管导通,与三极管同一个回路的直流电机两端的电压从 0V 左右增加到接近电源电压 3.0 伏,直流电机便开始转动。当
28、三极管基极的电压变为低电平时(开发板 GPIO 口输出低电平为小于 0.1 伏),此时三极管截止,三极管集电极和发射极之间的电阻非常大,根据串联电阻电路分压的原理,可知直流电机两端的电压非常小,电路几乎接近断路状态。因此三极管在这里起到了电路开关的作用,控制着电路的通断。在单位周期内,如果 PWM 波的占空比由小变大,也就是有效 电平时间所占的比例变大,那么加在直流电机两端的平均电压也将从小变大,介于 0.0 伏到电源电压 3.0 伏之间,直流电机的转速也就从小变大。如果 PWM 的占空比达到最大,直流电机的转速也将达到最大值。 直流电机模块测速原理:在直流电机转轴上装有一齿轮,齿轮上面均匀有 6 个洞,用于透光。齿轮被放置在红外对射管的中间,电机转动的时候带动齿轮一起转动。齿轮转动一周,齿轮上的洞按顺序的经过红外对射管之间,导致红外对射管导通 6 次。如图 1.3 所示,红外对射管与电阻 R3 组成串联电路。当红外对射管不导通时,红外对射管内部光控三极管的集 电