毕设 无极调速电机控制器设计

编号:

嵌入式系统综合实训说明书

题 目: 无极调速电机控制器设计

院(系): 信息与通信学院

专 业: 电子信息工程

学生姓名:

学 号:

指导教师:

2014 年 12月 31日

摘 要

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。直流电动机是将直流电能转换为机械能的电动机,因其良好的调速性能而在电力拖动中得到广泛应用。

本课题设计PWM 信号发生器控制直流电机,采用新唐Nuc140开发板的PWM 模块、LCD 液晶显示模块和键盘输入模块,利用按键输入控制PWM 输出到直流电机,控制直流电机的无级调速,并在液晶LCD 上显示。两个按键分别调节直流电机的速度增加和速度减小。

关键字:PWM ;nuc140开发板;直流电机;按键;LCD ;无级调速

Abstract

The Pulse Width Modulation (PWM), is English "Width Modulation" abbreviation of points, abbreviation Pulse Width Modulation is the use of the microprocessor digital output to analog circuits to control an effective technology, widely used in from measurement, communication to power control and transform in many areas. DC motor is a DC electric energy into mechanical energy of the motor, due to its good speed performance and has been widely used in electric drive.

The design of PWM signal generator to control the DC motor, using the Nuvoton Nuc140 development board chip PWM module, LCD display module and a keyboard input module, using the key input control PWM output to a DC motor, stepless speed control of DC motor, and displayed in the LCD. The two keys are adjusting the speed of DC motor speed increase and decrease.

Keywords :PWM; Nuc140 development board; Dc motor; Button; LCD ;stepless speed regulation

目 录

引言 . .......................................................................................................................................... 1 1 设计任务 .......................................................................................................................... 2 2 设计平台 ........................................................................................................................... 2

2.1 开发板NU-LB-NUC140介绍 .......................................................................................... 3

2.2 NU-LB-NUC140板的框图 ................................................................................................ 3

2.3 NU-LB-NUC140板的主要组成部分 ................................................................................ 3 3 硬件设计 .......................................................................................................................... 4

3.1 总体设计方案与系统构成 ................................................................................................ 4

3.2 NUC140VE3CN 芯片 ........................................................................................................ 5

3.2.1NUC140VE3CN 管脚 . ...................................................................................................... 5

3.2.2NUC140VE3CN 芯片主要性能 . ..................................................................................... 5

3.2.3NUC140VE3CN 的应用 . ................................................................................................. 6

3.3 PWM 模块 . ......................................................................................................................... 7

3.3.1PWM 特性 ........................................................................................................................ 7

3.3.2PWM 框图 ........................................................................................................................ 8

3.3.3PWM 定时器操作 ............................................................................................................ 9

3.3.4PWM 双缓存,自动重载以及单触发模式 ................................................................. 10

3.3.5可调占空比 .................................................................................................................... 10

3.3.6PWM 定时器开启过程 .................................................................................................. 11

3.3.7PWM 定时器关闭过程 .................................................................................................. 11

3.4 直流电机和驱动模块 ...................................................................................................... 12

3.4.1直流电机驱动模块驱动的实现 .................................................................................... 12

3.4.2直流电机类型 ................................................................................................................ 12

3.4.3直流电机结构 ................................................................................................................ 12

3.4.4直流电机工作原理 ........................................................................................................ 12

3.4.5直流电机主要技术参数 ................................................................................................ 13

3.5 按键模块和液晶显示模块 .............................................................................................. 13 4 软件设计 ........................................................................................................................ 13

4.1 软件设计流程及分析 ...................................................................................................... 14

4.2 初始化程序 ...................................................................................................................... 15

4.3 PWM 频率的设定 ............................................................................................................... 15

4.4 PWM 占空比的计算 ........................................................................................................... 16

4.5 程序的实现 ...................................................................................................................... 16 结论 . ........................................................................................................................................ 18 谢辞 . ........................................................................................................................................ 19 参考文献 ............................................................................................................................... 20 附录1 ..................................................................................................................................... 21 附录2 ..................................................................................................................................... 26

引言 脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

随着电力半导体交流技术的日益发展成熟,直流电机在许多领域已被整流装置代替,但直流电动机具有良好的启动、调速和正反转特性,能满足生产过程中的各种特殊要求,因而在需要宽广调速的场合及特殊要求的自动化控制系统中占有一定得应用地位。

1 设计任务

(1)输出PWM 信号。

(2)PWM信号频率通过按键(周期)可调。

(3)PWM信号输出控制电机无级调速。

(4)PWM信号频率通过LCD 显示。

2 设计平台

2.1 开发板NU-LB-NUC140介绍

NU-LB-NUC140是基于NUC100系列单片机为新唐科技的的Cortex -M0电路板,并提供了完整的开发环境,NUC140微控制器具有4K/8K/16K字节的内部SRAM 和32K/64K/128K字节的嵌入式闪存,内置的1.8V LDO ,集成定时器,看门狗定时器,RTC ,PDMA ,UART ,SPI/ SSP,I2C ,PWM 定时器,GPIO ,LIN ,CAN ,USB2.0 FS设备,12位ADC ,模拟比较器,低电压探测器和欠压检测功能。它支持掉电检测。

NU-LB-NUC140学习板类似于其他开发板。用户可以用它来开发和验证应用程序来模拟真实的行为。本用户手册提供有关硬件的功能和有关使用该学习板信息。下图显示了NU-LB-NUC140开发板。

图2.1 NU-LB-NUC140开发板

2.2 NU-LB-NUC140板的框图

图3.2显示了NU-LB-NUC140板的框图。

图2.2 NU-LB-NUC140板的框图

2.3 NU-LB-NUC140板的主要组成部分

主要成分:

(1)MCU :NuMicroTM NUC140 MCU,它可以运行高达50MHz 的运行速度。

(2)GPIO 扩展插槽:支持所有的GPI/ O引脚接口,GPIO 扩展插槽。

(3)AUDIO :WAU8822音频编解码器。

(4)I2C EEPROM:24LC64 I2C E2PROM。

(5)SPI FLASH:25Q16 SPI串行FLASH 用于数据存储。

(6)UART :UART 端口0连接到DSUB-9连接器。

(7)SD 卡插槽:通过SPI 端口1支持一个SD 卡插槽。

(8)LCD 连接器:支持LCD 模块。

(9)直流电源插孔:5V/1A电源适配器输入。

(10)LDO :5V 至支持NUC140和车载设备3.3V/1A LDO。

(11)USB :USB 连接功能。

(12)蜂鸣器。

(13)按键矩阵。

(14)7段LED 。

(15)CAN 接口。

(16)可变电阻。

(17)PWM/Capture 。

(18)4K/8K/16K 字节内建SRAM 。

3 硬件设计

3.1 总体设计方案与系统构成

本次实训课题——基于嵌入式ARM 的无极调速电机控制器设计。软件程序从下载口接入Nu-LB-NUC140开发板,通过PWM 专用的标准定时器还有匹配器以及按键控制电路来实现PWM 的输出控制直流电机的转动。电路系统构成框图如图2.1所示。

图3.1电路系统构成

3.2 NUC140VE3CN芯片

本系统主要由嵌入式ARM Cortex M0芯片NUC140VE3CN 构成,按键输入控制输出电机的无极调速,液晶LCD 显示状态。芯片NUC140VE3CN 是该系统的主要部分。

3.2.1NUC140VE3CN 管脚

NUC140VE3CN 芯片管脚图如图3.3.1所示

图3.3.1 NUC140VE3CN芯片管脚图

3.2.2NUC140VE3CN 芯片主要性能

(1)ARM Cortex M0 内核最高运行50 MHz的为微型处理器。

(2)4K/8K/16K 字节内建SRAM 。

(3)最多支持2组I2C 设备,一组12Mbps 的USB 2.0 FS 设备,持4组SPI 控制器。

(4)EmbeddedICE RT和嵌入式跟踪接口可实时调试和高速跟踪执行代码。

(5)12位ADC ,转换速率达700K SPS, 最多8通道单端模式输入或4通道差分模式输入。

(6)通过频率补偿寄存器(FCR) 支持软件频率补偿功。

(7)四个16位PWM 产生器,可输出8路PWM 或4组互补配对PWM ,8路16位捕捉定时器(共享PWM 定时器)提供8路输入的上升/下降沿的捕捉功能,。

(8)支持4组32位定时器, 每个定时器有一个24位向上计数定时器和一个8位预分频计数器。

(9)支持EBI 可访问的空间: 8位模式为64KB 或16位模式为128KB 。

(10)支持四级检测电压:4.5 V/3.8 V/2.7 V/2.2 V 。

(11)看门狗定时溢出的中断/复位选择。

(12)通过片内PLL 可实现最大为60MHz 的 CPU操作频率,PLL 的稳定时间为100us 。

(13)支持一组PLL, 高至50 MHz, 用于高性能的系统运行,外部4~24 MHz 晶振输入用于USB 和精准的定时操作,外部32.768 kHz 晶振输入用于RTC 及低功耗模式操作。

(14)2组模拟比较器模块。

(15)可通过个别使能/禁止外部功能和降低外部时钟来优化功耗。

(16)通过外部中断将处理器从掉电模式中唤醒。

(17)单个电源供电,含有上电复位(POR )和掉电检测(BOD )电路。

3.2.3NUC140VE3CN 的应用

(1)工业控制

(2)医疗系统

(3)访问控制

(4)军事设备

(5)无线通讯领域

(6)ARM 开发

(7)一般性应用

(8)消费类电子产品

3.3 PWM模块

NUC140 有 2 组PWM ,支持4 组PWM 发生器,这些发生器可以配置成8 个独立的PWM 输出PWM0~PWM7,或4 组互补的PWM 对,(PWM0, PWM1), (PWM2, PWM3), (PWM4, PWM5) 和(PWM6, PWM7) 带 4 个可编程的死区发生器。

每组 PWM 发生器带有一个8-位预分频,一个提供5级时钟源(1, 1/2, 1/4, 1/8, 1/16) 的时钟除频器,两个包含2 个时钟选择的PWM 定时器,两个用于 PWM 周期控制的16 位 PWM 向下计数计数器,两个16 位比较器用于PWM 占空比控制及死区发生器。4组PWM 发生器提供8个独立的由硬件置位的PWM 中断标志,当相应的PWM 向下计数周期达到0 时触发中断。每个PWM 中断源通过相应的使能位允许CPU 来请求PWM 中断。PWM 发生器可以定义为产生单周期PWM 周期信号的单触发模式或连续输出PWM 波形的连续模式。

PWM-定时器其中之一特性是数字输入捕捉功能。若捕捉功能使能,则PWM 的输出管脚会被切换成捕捉输入模式。捕捉器0 和PWM0 共用PWM0 中的定时器;捕捉器1 和PWM1 共用PWM1 定时器,以此类推。因此用户在使用捕捉功能之前,必须预先配置PMW 定时器。

3.3.1PWM 特性

1. PWM 功能特性:

(1)PWM 组有两个PWM 发生器。每个PWM 支持8-位预分频器,一个时钟除频器,两个PWM 定时器(向下计数),一个死区发生器和两个PWM 输出。

(2)最高 16-位解析度。

(3)PWM 中断请求与PWM 周期同步

(4)One-shot 或Auto-reload 模式

(5)最高 2 个 PWM 组(PWMA/PWMB) 可支持 8 路PWM 通道或4 对PWM 通道

2. 捕捉功能特征:

(1)与 PWM 发生器共用定时器模块。

(2)支持 8 个捕捉输入通道,共享8 个PWM 输出通道。

(3)每个通道支持1 个上升沿锁存寄存器(CRLR),一个下降沿锁存寄存器(CFLR) 和捕捉中断标志(CAPIFx)。

3.3.2PWM 框图

本系统只使用了PWM 发生器0,下图3.4.2.1和图3.4.2.2分别为PWM 发生器0时钟源控制框图和PWM 发生器0结构框图。

图3.3.2.1 PWM发生器0时钟源控制框图

图3.3.2.2 PWM发生器0结构框图

3.3.3PWM 定时器操作

PWM 周期和占空比控制由向下计数的PWM 寄存器 (CNR) 和PWM 比较寄存器(CMR) 配置。 PWM-定时器工作时序如图 5-42。脉宽调制的公式如下,PWM-定时器的图例如图5-41。注: 在 PWM 功能使能前,MCU 相应的GPIO 管脚必须配置成PWM 功能(使能POE 并禁用CAPENR )。

PWM 频率= PWMxy_CLK/[(prescale+1)*(clock divider)*(CNR+1)]; xy 代表 01, 23, 45 或67,取决于所选择的PWM 通道。

占空比 = (CMR+1)/(CNR+1)

CMR >= CNR: PWM 输出为高

CMR

CMR = 0: PWM 低脉宽= (CNR) unit; PWM 高脉宽= 1 unit

下图 3.3.3.1为PWM 定时器内部比较器输出。

图3.3.3.1 PWM定时器内部比较器输出

下图3.3.3.2为PWM 定时器操作时序。

图3.3.3.2 PWM定时器操作时序

3.3.4PWM 双缓存,自动重载以及单触发模式

PWM 定时器具有双缓存功能。寄存器预先设定的值,在一个周期完成后,可以自动重载。PWM 计数器的值写入CNRx ,并可从PDRx 读出当前PWM 计数器的值。

PWM 控制寄存器(PCR) 中CH0MOD 位定义PWM0 是自动重载模式或是单触发模式。如果CH0MOD 设为1,当PWM 计数器计到0,自动重载CNR0 值到PWM 计数器。如果CNR0 设为0,PWM 计数器计数到0后,将暂停运行。如果此时CH0MOD 也设为0,计数器会立即停止。PWM1~PWM7 运行状态与PWM0 相同。下图3.3.4为PWM 双缓存图解。

图3.3.4 PWM双缓存图解

3.3.5可调占空比

双缓存允许CMRx 字在当前周期的任意时刻改写。导入值会在下一个周期生效。下

图3.3.5为PWM 控制输出占空比图。

图3.3.5 PWM 控制输出占空比图

3.3.6PWM 定时器开启过程

使用下列步骤用于启动PWM 。

1. 设置时钟选择(CSR)。

2. 设置预分频器(PPR)。

3. 设置反转打开/关闭,死区发生器打开/关闭,自动重载/单触发模式以及停止PWM-定时器(PCR)。

4. 设置比较器寄存器(CMR) 来设定PWM 占空比。

5. 设置 PWM 向下计数计数器寄存器(CNR) 来设定PWM 周期。

6. 设置中断使能寄存器(PIER)。

7. 设置相应 GPIO 管脚为PWM 功能(使能POE 并禁用CAPENR )用于PWM 通道。

8. 使能 PWM 定时器开始运行(设置PCR 中的CHxEN = 1)。

3.3.7PWM 定时器关闭过程

本程序所使用的关闭方法为设置 16-位向下计数计数器(CNR) 为0,并查看PDR (16-位向下计数计数器的当前值)。当PDR 达到0,禁用PWM-定时器(PCR 的 CHxEN

位)。

3.4 直流电机和驱动模块

3.4.1直流电机驱动模块驱动的实现

本系统的直流电机驱动模块为L298电机驱动模块。板上有个三端稳压器L7805,当如果需要用电机的电源为控制部分供电的情况下可以把短路帽短路上,这样板上就可以输出一路5V 电压为控制部分电,但这样的话隔离芯片就起不到隔离作用,所以短路帽就起到隔离使能的作用。该模块具有信号指示,可驱动直流5-30V 之间电压的电机,最大输出电流2A (瞬间峰值电流3A) ,最大输出功率25W ;可输出l 路5V 电压为控制板供电;带光耦隔离,抗干扰能力强,具有续流保护等功能。

3.4.2直流电机类型

直流电机可按其结构、工作原理和用途等进行分类,其中根据直流电机的用途可分为以下几种: 直流发电机(将机械能转化为直流电能)、直流电动机(将直流电能转化为机械能)、直流测速发电机(将机械信号转换为电信号)、直流伺服电动机(将控制信号转换为机械信号) 。下面以直流电动机作为研究对象。

3.4.3直流电机结构

直流电机由定子和转子两部分组成。在定子上装有磁极(电磁式直流电机磁极由绕在定子上的磁绕提供〉,其转子由硅钢片叠压而成,转子外圆有槽,槽内嵌有电枢绕细,绕细通过换向器和电刷引出,直流电机结构如图3.4.2 所示。

图3.4.3 直流电机结构

3.4.4直流电机工作原理

直流电机电路模型如下图3.4.4所示,磁极N 、S 间装着一个可以转动的铁磁圆柱体,

圆柱体的表面上固定着一个线圈abed 。当线圈中流过电流时, 线圈受到电磁力作用,从而产生旋转。根据左手定则可知,当流过线圈中电流改变方向时, 线圈的受方向也将改变,因此通过改变线圈电路的方向实现改变电机的方向。

图3.4.4 直流电机电路模型

3.4.5直流电机主要技术参数

直流电机的主要额定值有:

额定功率Pn :在额定电流和电压下,电机的负载能力。

额定电斥Ue :长期运行的最高电压。

额定电流le : 长期运行的最大电流。

额定转速n : 单位时间内的电机转动快慢。以r/min 为单位。

励磁电流E :施加到电极线圈上的电流。

3.5 按键模块和液晶显示模块

本设计系统使用了NU140开发板的3×3键盘的K1和K2两个按键作为电机控制输入,以及显示所需要的128×64点阵LCD 面板。

4 软件设计

4.1 软件设计流程及分析

总体软件设计流程图如图4.1所示。

图4.1 总体软件设计流程图

系统总体的设计开始初始化系统,设置PWM 寄存器产生PWM 信号并输出,检测按键,若K1按下,输出改变控制直流电机的转速持续减小,松开按键,电机转速停留在此刻速度不改变,LCD 显示输出;当按下K2,输出改变控制直流电机的转速持续增大,松开按键,电机转速停留在此刻速度不改变,LCD 显示输出。

4.2 初始化程序

初始化程序如下

#include

#INCLUDE "PWM.H"

#INCLUDE "LCD.H"

#INCLUDE "SCANKEY.H"

INIT_LCD();

CLEAR_LCD();

PRINT_LINE(0,"PWM_DCMOTOR");

OPENKEYPAD();

INIT_PWM(0, 0, 119, 4); //初始化PWM0(GPA12)输出1MHZ 的方波 CLOCK = 12000000;

PRESCALER = 119;

CLOCKDIVIDER = 1;

DUTYCYCLE = 50;

TONE=0;

4.3 PWM频率的设定

uint32_t Frequency;

uint32_t tone;

uint32_t Clock;

uint8_t PreScaler;

uint8_t ClockDivider;

uint8_t DutyCycle;

uint16_t CNR, CMR;

init_PWM(0, 0, 119, 4);

Clock = 12000000;

PreScaler = 119;

ClockDivider = 1;

DutyCycle = 50;

tone=7000;

Frequency = tone;

初始化PWM0输出1MHZ 的方波,设定初始PWM 频率为7000。

4.4 PWM占空比的计算

CNR = Clock / Frequency / (PreScaler + 1) / ClockDivider - 1;

CMR = (CNR +1) * DutyCycle /100 - 1;

PWM_Out(0, CNR, CMR);

计算占空比并调用库函数PWM_Out()进行输出。

4.5 程序的实现

init_PWM(0, 0, 119, 4);

Clock = 12000000;

PreScaler = 119;

ClockDivider = 1;

DutyCycle = 50;

tone=7000;

while(1) { number = ScanKey(); if(number == 1) { print_Line(2,"Speed decreasing"); } if(number == 2) { print_Line(2,"Speed increasing"); } DrvSYS_Delay(10000000); tone=tone-100; if(tone18000) tone=18000;

设定初始PWM 输出频率为7000,此时电机转速为中等速度,若K1键按下输出频率增加,占空比改变,输出电压持续减小,电机转速减小,松开,输出频率不变,电机转速不变;若K2键按下输出频率减小,占空比改变,输出电压持续增大,电机转速增加,松开,输出频率不变,电机转速不变,实现简单的无极电机转速的控制。

结论

这次实训匆忙的结束了。由于学期末考试的原因使得这次实训时间有点仓促,且在这个过程中遇到了好多困难,但总的来说,我基本按要求完成了无极调速电机控制器设计的要求。尽管这次基本能完成了设计的要求,但我觉得我还有很多需要改进的地方,以后很长一段时间,还需加强这方面的学习。在这实训中,把理论和实践相结合,我学到了许多新的知识。

首先,完成这次实训之前选择性地学习了本次实训所使用的开发板的相关知识,同时深刻认识到自己很多知识的不足,比如C 语言相关编程等知识的薄弱,查阅和复习了很多有关的知识。

设计过程,首先考虑的是使用直流电机还是步进电机,因为自己是第一次使用嵌入式芯片,直流电机相对简单,因此选择了直流电机。在编写程序的时候,遇到的问题最多,由于我是第一次嵌入式芯片,刚开始只是先学习开发板的相关例程,然后才一点点地从例程出发,不断地修改编写,遇到困难和、老师讨论,不断地克服困难,并且恶补了自己的C 语编程知识。

经过这次设计,我觉得自己真的学到了不少东西。同时学会了怎样查阅资料和利用工具书。在这次设计过程中经常遇到一些不曾学过的东西,但能有针对性地查找资料,然后加以吸收利用,提高了自己的应用能力,而且还增长了自己的见识,补充了专业知识,增强了自己的动手能力,而且还磨练了自己的耐性。收获颇多。

谢 辞

通过本次设计不仅是对我们的专业知识的检查与总结,而且是对今后学习研究的一种的激励。过程中得到刘争红老师的悉心指导,多次询问研究进程,并为我提供了大量宝贵的建议和相关的文献资料,帮助我开拓研究思路,精心点拨、热忱鼓励。同时也要感谢热心帮助我的同学,帮助我克服了很多困难。紧张的日子也总算告一段落,回味起来, 感触颇多。在此过程中,我遇到了许多问题,通过老师和同学的帮助以及自己查阅资料等多种途径,解决了许多问题,也提高了自己独立思考问题、分析问题、解决问题的能力,同时也提高了实践能力。最后我要感谢这段时间来所有帮助过我的老师、同学和朋友,是你们让我的不断发现自己的不足并帮助我解决一个个设计上的问题,给我留下了美好的回忆。非常感谢!

参考文献

[1] 崔更申 孙安青.ARM 嵌入式系统开发与实践[M].北京:中国电力出版社,2008.

[2] 赵俊. ARM Cortex-M0从这里开始[M]. 北京:北京航空航天大学出版社,2012.

[3] 杨宗德. 嵌入式ARM 系统原理与实例开发[M]. 北京:北京大学出版社,2007.

[4] 刘天时[等] .ARM7嵌入式开发基础实验[M]. 北京:北京航空航天大学出版社,2007.

[5] 杜春雷.ARM 体系结构与编程[M].北京:清华大学出版社,2003.

[6] 谭建成. 电机控制专用集成电路[M].北京:机械工业出版社,1997.

[7] 张绮文. ARM 嵌入式常用模块与综合系统设计实例精讲. 北京:电子工业出版社,2007.

[8] 欧阳禹.ARM7嵌入式系统实训教程. 北京:清华大学出版社,2008.

[9] 周立功. 常用ARM 指令及汇编[M].广州:广州周立功单片机发展有限公司,2003.

[10] 姜换新.ARM 嵌入式系统C 语言编程[J].Tsinghua Tongfang Optical Disc Co,2002(5):15~53.

附 录 1

主程序代码

#include

#include "NUC1xx.h"

#include "GPIO.h"

#include "SYS.h"

#include "PWM.h"

#include "LCD.h"

#include "Note_Freq.h"

#include "Scankey.h"

int32_t main (void)

{

uint8_t number;

int tone;

uint32_t Clock;

uint32_t Frequency;

uint8_t PreScaler;

uint8_t ClockDivider;

uint8_t DutyCycle;

uint16_t CNR, CMR;

char TEXT1[16],TEXT2[16],TEXT3[16];

UNLOCKREG();

SYSCLK->PWRCON.XTL12M_EN = 1;

SYSCLK->CLKSEL0.HCLK_S = 0;

LOCKREG();

init_LCD();

clear_LCD();

print_Line(0,"PWM_DCmotor");

OpenKeyPad();

1.

init_PWM(0, 0, 119, 4);

Clock = 12000000;

PreScaler = 119;

ClockDivider = 1;

DutyCycle = 50;

tone=0;

while(1)

{

number = ScanKey();

if(number == 1) { print_Line(2,"Speed decreasing"); } if(number == 2) { } DrvSYS_Delay(10000000); //Delay 1 Second print_Line(2,"Speed increasing"); tone=tone-100; if(tone18000) tone=18000;

Frequency = tone;

CNR = Clock / Frequency / (PreScaler + 1) / ClockDivider - 1; CMR = (CNR +1) * DutyCycle /100 - 1;

PWM_Out(0, CNR, CMR);

if (Frequency==0) PWM_Stop(0);

sprintf(TEXT1,"Freq= %5dHz",tone);

print_Line(1, TEXT1);

}

}

2.Scankey 函数代码

#include

#include "GPIO.h"

#include "Scankey.h"

void delay(void)

{

int j;

for(j=0;j

}

void OpenKeyPad(void)

{

uint8_t i;

/* Initial key pad */

for(i=0;i

DrvGPIO_Open(E_GPA, i, E_IO_QUASI);

}

void CloseKeyPad(void)

{

uint8_t i;

for(i=0;i

DrvGPIO_Close(E_GPA, i);

}

uint8_t ScanKey()

{

uint8_t act[4]={0x3b, 0x3d, 0x3e};

uint8_t i,temp,pin;

for(i=0;i

{

temp=act[i];

for(pin=0;pin

{

if((temp&0x01)==0x01)

DrvGPIO_SetBit(E_GPA,pin);

else

DrvGPIO_ClrBit(E_GPA,pin);

temp>>=1;

}

delay();

if(DrvGPIO_GetBit(E_GPA,3)==0)

return(i+1);

if(DrvGPIO_GetBit(E_GPA,4)==0)

return(i+4);

if(DrvGPIO_GetBit(E_GPA,5)==0)

return(i+7);

}

return 0;

}

3.PWM_Out函数

void PWM_Out(uint8_t PWM_no, uint16_t CNR, uint16_t CMR) {

switch(PWM_no) {

case 0 :

PWMA->CNR0 = CNR; // set CNR

PWMA->CMR0 = CMR; // set CMR

PWMA->POE.PWM0=1;

break;

case 1 :

PWMA->CNR1 = CNR; // set CNR

PWMA->CMR1 = CMR; // set CMR

PWMA->POE.PWM1=1;

break;

case 2 :

PWMA->CNR2 = CNR; // set CNR

PWMA->CMR2 = CMR; // set CMR

PWMA->POE.PWM2=1;

break;

case 3 :

PWMA->CNR3 = CNR; // set CNR PWMA->CMR3 = CMR; // set CMR PWMA->POE.PWM3=1;

break;

case 4 :

PWMB->CNR0 = CNR; // set CNR PWMB->CMR0 = CMR; // set CMR PWMB->POE.PWM0=1;

break;

case 5 :

PWMB->CNR1 = CNR; // set CNR PWMB->CMR1 = CMR; // set CMR PWMB->POE.PWM1=1;

break;

case 6 :

PWMB->CNR2 = CNR; // set CNR PWMB->CMR2 = CMR; // set CMR PWMB->POE.PWM2=1;

break;

case 7 :

PWMB->CNR3 = CNR; // set CNR PWMB->CMR3 = CMR; // set CMR PWMB->POE.PWM3=1;

break;

default: break;

}

}

桂林电子科技大学实训说明书专用纸

附 录 2

效果图:

26

编号:

嵌入式系统综合实训说明书

题 目: 无极调速电机控制器设计

院(系): 信息与通信学院

专 业: 电子信息工程

学生姓名:

学 号:

指导教师:

2014 年 12月 31日

摘 要

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。直流电动机是将直流电能转换为机械能的电动机,因其良好的调速性能而在电力拖动中得到广泛应用。

本课题设计PWM 信号发生器控制直流电机,采用新唐Nuc140开发板的PWM 模块、LCD 液晶显示模块和键盘输入模块,利用按键输入控制PWM 输出到直流电机,控制直流电机的无级调速,并在液晶LCD 上显示。两个按键分别调节直流电机的速度增加和速度减小。

关键字:PWM ;nuc140开发板;直流电机;按键;LCD ;无级调速

Abstract

The Pulse Width Modulation (PWM), is English "Width Modulation" abbreviation of points, abbreviation Pulse Width Modulation is the use of the microprocessor digital output to analog circuits to control an effective technology, widely used in from measurement, communication to power control and transform in many areas. DC motor is a DC electric energy into mechanical energy of the motor, due to its good speed performance and has been widely used in electric drive.

The design of PWM signal generator to control the DC motor, using the Nuvoton Nuc140 development board chip PWM module, LCD display module and a keyboard input module, using the key input control PWM output to a DC motor, stepless speed control of DC motor, and displayed in the LCD. The two keys are adjusting the speed of DC motor speed increase and decrease.

Keywords :PWM; Nuc140 development board; Dc motor; Button; LCD ;stepless speed regulation

目 录

引言 . .......................................................................................................................................... 1 1 设计任务 .......................................................................................................................... 2 2 设计平台 ........................................................................................................................... 2

2.1 开发板NU-LB-NUC140介绍 .......................................................................................... 3

2.2 NU-LB-NUC140板的框图 ................................................................................................ 3

2.3 NU-LB-NUC140板的主要组成部分 ................................................................................ 3 3 硬件设计 .......................................................................................................................... 4

3.1 总体设计方案与系统构成 ................................................................................................ 4

3.2 NUC140VE3CN 芯片 ........................................................................................................ 5

3.2.1NUC140VE3CN 管脚 . ...................................................................................................... 5

3.2.2NUC140VE3CN 芯片主要性能 . ..................................................................................... 5

3.2.3NUC140VE3CN 的应用 . ................................................................................................. 6

3.3 PWM 模块 . ......................................................................................................................... 7

3.3.1PWM 特性 ........................................................................................................................ 7

3.3.2PWM 框图 ........................................................................................................................ 8

3.3.3PWM 定时器操作 ............................................................................................................ 9

3.3.4PWM 双缓存,自动重载以及单触发模式 ................................................................. 10

3.3.5可调占空比 .................................................................................................................... 10

3.3.6PWM 定时器开启过程 .................................................................................................. 11

3.3.7PWM 定时器关闭过程 .................................................................................................. 11

3.4 直流电机和驱动模块 ...................................................................................................... 12

3.4.1直流电机驱动模块驱动的实现 .................................................................................... 12

3.4.2直流电机类型 ................................................................................................................ 12

3.4.3直流电机结构 ................................................................................................................ 12

3.4.4直流电机工作原理 ........................................................................................................ 12

3.4.5直流电机主要技术参数 ................................................................................................ 13

3.5 按键模块和液晶显示模块 .............................................................................................. 13 4 软件设计 ........................................................................................................................ 13

4.1 软件设计流程及分析 ...................................................................................................... 14

4.2 初始化程序 ...................................................................................................................... 15

4.3 PWM 频率的设定 ............................................................................................................... 15

4.4 PWM 占空比的计算 ........................................................................................................... 16

4.5 程序的实现 ...................................................................................................................... 16 结论 . ........................................................................................................................................ 18 谢辞 . ........................................................................................................................................ 19 参考文献 ............................................................................................................................... 20 附录1 ..................................................................................................................................... 21 附录2 ..................................................................................................................................... 26

引言 脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管或晶体管导通时间的改变,这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。

随着电力半导体交流技术的日益发展成熟,直流电机在许多领域已被整流装置代替,但直流电动机具有良好的启动、调速和正反转特性,能满足生产过程中的各种特殊要求,因而在需要宽广调速的场合及特殊要求的自动化控制系统中占有一定得应用地位。

1 设计任务

(1)输出PWM 信号。

(2)PWM信号频率通过按键(周期)可调。

(3)PWM信号输出控制电机无级调速。

(4)PWM信号频率通过LCD 显示。

2 设计平台

2.1 开发板NU-LB-NUC140介绍

NU-LB-NUC140是基于NUC100系列单片机为新唐科技的的Cortex -M0电路板,并提供了完整的开发环境,NUC140微控制器具有4K/8K/16K字节的内部SRAM 和32K/64K/128K字节的嵌入式闪存,内置的1.8V LDO ,集成定时器,看门狗定时器,RTC ,PDMA ,UART ,SPI/ SSP,I2C ,PWM 定时器,GPIO ,LIN ,CAN ,USB2.0 FS设备,12位ADC ,模拟比较器,低电压探测器和欠压检测功能。它支持掉电检测。

NU-LB-NUC140学习板类似于其他开发板。用户可以用它来开发和验证应用程序来模拟真实的行为。本用户手册提供有关硬件的功能和有关使用该学习板信息。下图显示了NU-LB-NUC140开发板。

图2.1 NU-LB-NUC140开发板

2.2 NU-LB-NUC140板的框图

图3.2显示了NU-LB-NUC140板的框图。

图2.2 NU-LB-NUC140板的框图

2.3 NU-LB-NUC140板的主要组成部分

主要成分:

(1)MCU :NuMicroTM NUC140 MCU,它可以运行高达50MHz 的运行速度。

(2)GPIO 扩展插槽:支持所有的GPI/ O引脚接口,GPIO 扩展插槽。

(3)AUDIO :WAU8822音频编解码器。

(4)I2C EEPROM:24LC64 I2C E2PROM。

(5)SPI FLASH:25Q16 SPI串行FLASH 用于数据存储。

(6)UART :UART 端口0连接到DSUB-9连接器。

(7)SD 卡插槽:通过SPI 端口1支持一个SD 卡插槽。

(8)LCD 连接器:支持LCD 模块。

(9)直流电源插孔:5V/1A电源适配器输入。

(10)LDO :5V 至支持NUC140和车载设备3.3V/1A LDO。

(11)USB :USB 连接功能。

(12)蜂鸣器。

(13)按键矩阵。

(14)7段LED 。

(15)CAN 接口。

(16)可变电阻。

(17)PWM/Capture 。

(18)4K/8K/16K 字节内建SRAM 。

3 硬件设计

3.1 总体设计方案与系统构成

本次实训课题——基于嵌入式ARM 的无极调速电机控制器设计。软件程序从下载口接入Nu-LB-NUC140开发板,通过PWM 专用的标准定时器还有匹配器以及按键控制电路来实现PWM 的输出控制直流电机的转动。电路系统构成框图如图2.1所示。

图3.1电路系统构成

3.2 NUC140VE3CN芯片

本系统主要由嵌入式ARM Cortex M0芯片NUC140VE3CN 构成,按键输入控制输出电机的无极调速,液晶LCD 显示状态。芯片NUC140VE3CN 是该系统的主要部分。

3.2.1NUC140VE3CN 管脚

NUC140VE3CN 芯片管脚图如图3.3.1所示

图3.3.1 NUC140VE3CN芯片管脚图

3.2.2NUC140VE3CN 芯片主要性能

(1)ARM Cortex M0 内核最高运行50 MHz的为微型处理器。

(2)4K/8K/16K 字节内建SRAM 。

(3)最多支持2组I2C 设备,一组12Mbps 的USB 2.0 FS 设备,持4组SPI 控制器。

(4)EmbeddedICE RT和嵌入式跟踪接口可实时调试和高速跟踪执行代码。

(5)12位ADC ,转换速率达700K SPS, 最多8通道单端模式输入或4通道差分模式输入。

(6)通过频率补偿寄存器(FCR) 支持软件频率补偿功。

(7)四个16位PWM 产生器,可输出8路PWM 或4组互补配对PWM ,8路16位捕捉定时器(共享PWM 定时器)提供8路输入的上升/下降沿的捕捉功能,。

(8)支持4组32位定时器, 每个定时器有一个24位向上计数定时器和一个8位预分频计数器。

(9)支持EBI 可访问的空间: 8位模式为64KB 或16位模式为128KB 。

(10)支持四级检测电压:4.5 V/3.8 V/2.7 V/2.2 V 。

(11)看门狗定时溢出的中断/复位选择。

(12)通过片内PLL 可实现最大为60MHz 的 CPU操作频率,PLL 的稳定时间为100us 。

(13)支持一组PLL, 高至50 MHz, 用于高性能的系统运行,外部4~24 MHz 晶振输入用于USB 和精准的定时操作,外部32.768 kHz 晶振输入用于RTC 及低功耗模式操作。

(14)2组模拟比较器模块。

(15)可通过个别使能/禁止外部功能和降低外部时钟来优化功耗。

(16)通过外部中断将处理器从掉电模式中唤醒。

(17)单个电源供电,含有上电复位(POR )和掉电检测(BOD )电路。

3.2.3NUC140VE3CN 的应用

(1)工业控制

(2)医疗系统

(3)访问控制

(4)军事设备

(5)无线通讯领域

(6)ARM 开发

(7)一般性应用

(8)消费类电子产品

3.3 PWM模块

NUC140 有 2 组PWM ,支持4 组PWM 发生器,这些发生器可以配置成8 个独立的PWM 输出PWM0~PWM7,或4 组互补的PWM 对,(PWM0, PWM1), (PWM2, PWM3), (PWM4, PWM5) 和(PWM6, PWM7) 带 4 个可编程的死区发生器。

每组 PWM 发生器带有一个8-位预分频,一个提供5级时钟源(1, 1/2, 1/4, 1/8, 1/16) 的时钟除频器,两个包含2 个时钟选择的PWM 定时器,两个用于 PWM 周期控制的16 位 PWM 向下计数计数器,两个16 位比较器用于PWM 占空比控制及死区发生器。4组PWM 发生器提供8个独立的由硬件置位的PWM 中断标志,当相应的PWM 向下计数周期达到0 时触发中断。每个PWM 中断源通过相应的使能位允许CPU 来请求PWM 中断。PWM 发生器可以定义为产生单周期PWM 周期信号的单触发模式或连续输出PWM 波形的连续模式。

PWM-定时器其中之一特性是数字输入捕捉功能。若捕捉功能使能,则PWM 的输出管脚会被切换成捕捉输入模式。捕捉器0 和PWM0 共用PWM0 中的定时器;捕捉器1 和PWM1 共用PWM1 定时器,以此类推。因此用户在使用捕捉功能之前,必须预先配置PMW 定时器。

3.3.1PWM 特性

1. PWM 功能特性:

(1)PWM 组有两个PWM 发生器。每个PWM 支持8-位预分频器,一个时钟除频器,两个PWM 定时器(向下计数),一个死区发生器和两个PWM 输出。

(2)最高 16-位解析度。

(3)PWM 中断请求与PWM 周期同步

(4)One-shot 或Auto-reload 模式

(5)最高 2 个 PWM 组(PWMA/PWMB) 可支持 8 路PWM 通道或4 对PWM 通道

2. 捕捉功能特征:

(1)与 PWM 发生器共用定时器模块。

(2)支持 8 个捕捉输入通道,共享8 个PWM 输出通道。

(3)每个通道支持1 个上升沿锁存寄存器(CRLR),一个下降沿锁存寄存器(CFLR) 和捕捉中断标志(CAPIFx)。

3.3.2PWM 框图

本系统只使用了PWM 发生器0,下图3.4.2.1和图3.4.2.2分别为PWM 发生器0时钟源控制框图和PWM 发生器0结构框图。

图3.3.2.1 PWM发生器0时钟源控制框图

图3.3.2.2 PWM发生器0结构框图

3.3.3PWM 定时器操作

PWM 周期和占空比控制由向下计数的PWM 寄存器 (CNR) 和PWM 比较寄存器(CMR) 配置。 PWM-定时器工作时序如图 5-42。脉宽调制的公式如下,PWM-定时器的图例如图5-41。注: 在 PWM 功能使能前,MCU 相应的GPIO 管脚必须配置成PWM 功能(使能POE 并禁用CAPENR )。

PWM 频率= PWMxy_CLK/[(prescale+1)*(clock divider)*(CNR+1)]; xy 代表 01, 23, 45 或67,取决于所选择的PWM 通道。

占空比 = (CMR+1)/(CNR+1)

CMR >= CNR: PWM 输出为高

CMR

CMR = 0: PWM 低脉宽= (CNR) unit; PWM 高脉宽= 1 unit

下图 3.3.3.1为PWM 定时器内部比较器输出。

图3.3.3.1 PWM定时器内部比较器输出

下图3.3.3.2为PWM 定时器操作时序。

图3.3.3.2 PWM定时器操作时序

3.3.4PWM 双缓存,自动重载以及单触发模式

PWM 定时器具有双缓存功能。寄存器预先设定的值,在一个周期完成后,可以自动重载。PWM 计数器的值写入CNRx ,并可从PDRx 读出当前PWM 计数器的值。

PWM 控制寄存器(PCR) 中CH0MOD 位定义PWM0 是自动重载模式或是单触发模式。如果CH0MOD 设为1,当PWM 计数器计到0,自动重载CNR0 值到PWM 计数器。如果CNR0 设为0,PWM 计数器计数到0后,将暂停运行。如果此时CH0MOD 也设为0,计数器会立即停止。PWM1~PWM7 运行状态与PWM0 相同。下图3.3.4为PWM 双缓存图解。

图3.3.4 PWM双缓存图解

3.3.5可调占空比

双缓存允许CMRx 字在当前周期的任意时刻改写。导入值会在下一个周期生效。下

图3.3.5为PWM 控制输出占空比图。

图3.3.5 PWM 控制输出占空比图

3.3.6PWM 定时器开启过程

使用下列步骤用于启动PWM 。

1. 设置时钟选择(CSR)。

2. 设置预分频器(PPR)。

3. 设置反转打开/关闭,死区发生器打开/关闭,自动重载/单触发模式以及停止PWM-定时器(PCR)。

4. 设置比较器寄存器(CMR) 来设定PWM 占空比。

5. 设置 PWM 向下计数计数器寄存器(CNR) 来设定PWM 周期。

6. 设置中断使能寄存器(PIER)。

7. 设置相应 GPIO 管脚为PWM 功能(使能POE 并禁用CAPENR )用于PWM 通道。

8. 使能 PWM 定时器开始运行(设置PCR 中的CHxEN = 1)。

3.3.7PWM 定时器关闭过程

本程序所使用的关闭方法为设置 16-位向下计数计数器(CNR) 为0,并查看PDR (16-位向下计数计数器的当前值)。当PDR 达到0,禁用PWM-定时器(PCR 的 CHxEN

位)。

3.4 直流电机和驱动模块

3.4.1直流电机驱动模块驱动的实现

本系统的直流电机驱动模块为L298电机驱动模块。板上有个三端稳压器L7805,当如果需要用电机的电源为控制部分供电的情况下可以把短路帽短路上,这样板上就可以输出一路5V 电压为控制部分电,但这样的话隔离芯片就起不到隔离作用,所以短路帽就起到隔离使能的作用。该模块具有信号指示,可驱动直流5-30V 之间电压的电机,最大输出电流2A (瞬间峰值电流3A) ,最大输出功率25W ;可输出l 路5V 电压为控制板供电;带光耦隔离,抗干扰能力强,具有续流保护等功能。

3.4.2直流电机类型

直流电机可按其结构、工作原理和用途等进行分类,其中根据直流电机的用途可分为以下几种: 直流发电机(将机械能转化为直流电能)、直流电动机(将直流电能转化为机械能)、直流测速发电机(将机械信号转换为电信号)、直流伺服电动机(将控制信号转换为机械信号) 。下面以直流电动机作为研究对象。

3.4.3直流电机结构

直流电机由定子和转子两部分组成。在定子上装有磁极(电磁式直流电机磁极由绕在定子上的磁绕提供〉,其转子由硅钢片叠压而成,转子外圆有槽,槽内嵌有电枢绕细,绕细通过换向器和电刷引出,直流电机结构如图3.4.2 所示。

图3.4.3 直流电机结构

3.4.4直流电机工作原理

直流电机电路模型如下图3.4.4所示,磁极N 、S 间装着一个可以转动的铁磁圆柱体,

圆柱体的表面上固定着一个线圈abed 。当线圈中流过电流时, 线圈受到电磁力作用,从而产生旋转。根据左手定则可知,当流过线圈中电流改变方向时, 线圈的受方向也将改变,因此通过改变线圈电路的方向实现改变电机的方向。

图3.4.4 直流电机电路模型

3.4.5直流电机主要技术参数

直流电机的主要额定值有:

额定功率Pn :在额定电流和电压下,电机的负载能力。

额定电斥Ue :长期运行的最高电压。

额定电流le : 长期运行的最大电流。

额定转速n : 单位时间内的电机转动快慢。以r/min 为单位。

励磁电流E :施加到电极线圈上的电流。

3.5 按键模块和液晶显示模块

本设计系统使用了NU140开发板的3×3键盘的K1和K2两个按键作为电机控制输入,以及显示所需要的128×64点阵LCD 面板。

4 软件设计

4.1 软件设计流程及分析

总体软件设计流程图如图4.1所示。

图4.1 总体软件设计流程图

系统总体的设计开始初始化系统,设置PWM 寄存器产生PWM 信号并输出,检测按键,若K1按下,输出改变控制直流电机的转速持续减小,松开按键,电机转速停留在此刻速度不改变,LCD 显示输出;当按下K2,输出改变控制直流电机的转速持续增大,松开按键,电机转速停留在此刻速度不改变,LCD 显示输出。

4.2 初始化程序

初始化程序如下

#include

#INCLUDE "PWM.H"

#INCLUDE "LCD.H"

#INCLUDE "SCANKEY.H"

INIT_LCD();

CLEAR_LCD();

PRINT_LINE(0,"PWM_DCMOTOR");

OPENKEYPAD();

INIT_PWM(0, 0, 119, 4); //初始化PWM0(GPA12)输出1MHZ 的方波 CLOCK = 12000000;

PRESCALER = 119;

CLOCKDIVIDER = 1;

DUTYCYCLE = 50;

TONE=0;

4.3 PWM频率的设定

uint32_t Frequency;

uint32_t tone;

uint32_t Clock;

uint8_t PreScaler;

uint8_t ClockDivider;

uint8_t DutyCycle;

uint16_t CNR, CMR;

init_PWM(0, 0, 119, 4);

Clock = 12000000;

PreScaler = 119;

ClockDivider = 1;

DutyCycle = 50;

tone=7000;

Frequency = tone;

初始化PWM0输出1MHZ 的方波,设定初始PWM 频率为7000。

4.4 PWM占空比的计算

CNR = Clock / Frequency / (PreScaler + 1) / ClockDivider - 1;

CMR = (CNR +1) * DutyCycle /100 - 1;

PWM_Out(0, CNR, CMR);

计算占空比并调用库函数PWM_Out()进行输出。

4.5 程序的实现

init_PWM(0, 0, 119, 4);

Clock = 12000000;

PreScaler = 119;

ClockDivider = 1;

DutyCycle = 50;

tone=7000;

while(1) { number = ScanKey(); if(number == 1) { print_Line(2,"Speed decreasing"); } if(number == 2) { print_Line(2,"Speed increasing"); } DrvSYS_Delay(10000000); tone=tone-100; if(tone18000) tone=18000;

设定初始PWM 输出频率为7000,此时电机转速为中等速度,若K1键按下输出频率增加,占空比改变,输出电压持续减小,电机转速减小,松开,输出频率不变,电机转速不变;若K2键按下输出频率减小,占空比改变,输出电压持续增大,电机转速增加,松开,输出频率不变,电机转速不变,实现简单的无极电机转速的控制。

结论

这次实训匆忙的结束了。由于学期末考试的原因使得这次实训时间有点仓促,且在这个过程中遇到了好多困难,但总的来说,我基本按要求完成了无极调速电机控制器设计的要求。尽管这次基本能完成了设计的要求,但我觉得我还有很多需要改进的地方,以后很长一段时间,还需加强这方面的学习。在这实训中,把理论和实践相结合,我学到了许多新的知识。

首先,完成这次实训之前选择性地学习了本次实训所使用的开发板的相关知识,同时深刻认识到自己很多知识的不足,比如C 语言相关编程等知识的薄弱,查阅和复习了很多有关的知识。

设计过程,首先考虑的是使用直流电机还是步进电机,因为自己是第一次使用嵌入式芯片,直流电机相对简单,因此选择了直流电机。在编写程序的时候,遇到的问题最多,由于我是第一次嵌入式芯片,刚开始只是先学习开发板的相关例程,然后才一点点地从例程出发,不断地修改编写,遇到困难和、老师讨论,不断地克服困难,并且恶补了自己的C 语编程知识。

经过这次设计,我觉得自己真的学到了不少东西。同时学会了怎样查阅资料和利用工具书。在这次设计过程中经常遇到一些不曾学过的东西,但能有针对性地查找资料,然后加以吸收利用,提高了自己的应用能力,而且还增长了自己的见识,补充了专业知识,增强了自己的动手能力,而且还磨练了自己的耐性。收获颇多。

谢 辞

通过本次设计不仅是对我们的专业知识的检查与总结,而且是对今后学习研究的一种的激励。过程中得到刘争红老师的悉心指导,多次询问研究进程,并为我提供了大量宝贵的建议和相关的文献资料,帮助我开拓研究思路,精心点拨、热忱鼓励。同时也要感谢热心帮助我的同学,帮助我克服了很多困难。紧张的日子也总算告一段落,回味起来, 感触颇多。在此过程中,我遇到了许多问题,通过老师和同学的帮助以及自己查阅资料等多种途径,解决了许多问题,也提高了自己独立思考问题、分析问题、解决问题的能力,同时也提高了实践能力。最后我要感谢这段时间来所有帮助过我的老师、同学和朋友,是你们让我的不断发现自己的不足并帮助我解决一个个设计上的问题,给我留下了美好的回忆。非常感谢!

参考文献

[1] 崔更申 孙安青.ARM 嵌入式系统开发与实践[M].北京:中国电力出版社,2008.

[2] 赵俊. ARM Cortex-M0从这里开始[M]. 北京:北京航空航天大学出版社,2012.

[3] 杨宗德. 嵌入式ARM 系统原理与实例开发[M]. 北京:北京大学出版社,2007.

[4] 刘天时[等] .ARM7嵌入式开发基础实验[M]. 北京:北京航空航天大学出版社,2007.

[5] 杜春雷.ARM 体系结构与编程[M].北京:清华大学出版社,2003.

[6] 谭建成. 电机控制专用集成电路[M].北京:机械工业出版社,1997.

[7] 张绮文. ARM 嵌入式常用模块与综合系统设计实例精讲. 北京:电子工业出版社,2007.

[8] 欧阳禹.ARM7嵌入式系统实训教程. 北京:清华大学出版社,2008.

[9] 周立功. 常用ARM 指令及汇编[M].广州:广州周立功单片机发展有限公司,2003.

[10] 姜换新.ARM 嵌入式系统C 语言编程[J].Tsinghua Tongfang Optical Disc Co,2002(5):15~53.

附 录 1

主程序代码

#include

#include "NUC1xx.h"

#include "GPIO.h"

#include "SYS.h"

#include "PWM.h"

#include "LCD.h"

#include "Note_Freq.h"

#include "Scankey.h"

int32_t main (void)

{

uint8_t number;

int tone;

uint32_t Clock;

uint32_t Frequency;

uint8_t PreScaler;

uint8_t ClockDivider;

uint8_t DutyCycle;

uint16_t CNR, CMR;

char TEXT1[16],TEXT2[16],TEXT3[16];

UNLOCKREG();

SYSCLK->PWRCON.XTL12M_EN = 1;

SYSCLK->CLKSEL0.HCLK_S = 0;

LOCKREG();

init_LCD();

clear_LCD();

print_Line(0,"PWM_DCmotor");

OpenKeyPad();

1.

init_PWM(0, 0, 119, 4);

Clock = 12000000;

PreScaler = 119;

ClockDivider = 1;

DutyCycle = 50;

tone=0;

while(1)

{

number = ScanKey();

if(number == 1) { print_Line(2,"Speed decreasing"); } if(number == 2) { } DrvSYS_Delay(10000000); //Delay 1 Second print_Line(2,"Speed increasing"); tone=tone-100; if(tone18000) tone=18000;

Frequency = tone;

CNR = Clock / Frequency / (PreScaler + 1) / ClockDivider - 1; CMR = (CNR +1) * DutyCycle /100 - 1;

PWM_Out(0, CNR, CMR);

if (Frequency==0) PWM_Stop(0);

sprintf(TEXT1,"Freq= %5dHz",tone);

print_Line(1, TEXT1);

}

}

2.Scankey 函数代码

#include

#include "GPIO.h"

#include "Scankey.h"

void delay(void)

{

int j;

for(j=0;j

}

void OpenKeyPad(void)

{

uint8_t i;

/* Initial key pad */

for(i=0;i

DrvGPIO_Open(E_GPA, i, E_IO_QUASI);

}

void CloseKeyPad(void)

{

uint8_t i;

for(i=0;i

DrvGPIO_Close(E_GPA, i);

}

uint8_t ScanKey()

{

uint8_t act[4]={0x3b, 0x3d, 0x3e};

uint8_t i,temp,pin;

for(i=0;i

{

temp=act[i];

for(pin=0;pin

{

if((temp&0x01)==0x01)

DrvGPIO_SetBit(E_GPA,pin);

else

DrvGPIO_ClrBit(E_GPA,pin);

temp>>=1;

}

delay();

if(DrvGPIO_GetBit(E_GPA,3)==0)

return(i+1);

if(DrvGPIO_GetBit(E_GPA,4)==0)

return(i+4);

if(DrvGPIO_GetBit(E_GPA,5)==0)

return(i+7);

}

return 0;

}

3.PWM_Out函数

void PWM_Out(uint8_t PWM_no, uint16_t CNR, uint16_t CMR) {

switch(PWM_no) {

case 0 :

PWMA->CNR0 = CNR; // set CNR

PWMA->CMR0 = CMR; // set CMR

PWMA->POE.PWM0=1;

break;

case 1 :

PWMA->CNR1 = CNR; // set CNR

PWMA->CMR1 = CMR; // set CMR

PWMA->POE.PWM1=1;

break;

case 2 :

PWMA->CNR2 = CNR; // set CNR

PWMA->CMR2 = CMR; // set CMR

PWMA->POE.PWM2=1;

break;

case 3 :

PWMA->CNR3 = CNR; // set CNR PWMA->CMR3 = CMR; // set CMR PWMA->POE.PWM3=1;

break;

case 4 :

PWMB->CNR0 = CNR; // set CNR PWMB->CMR0 = CMR; // set CMR PWMB->POE.PWM0=1;

break;

case 5 :

PWMB->CNR1 = CNR; // set CNR PWMB->CMR1 = CMR; // set CMR PWMB->POE.PWM1=1;

break;

case 6 :

PWMB->CNR2 = CNR; // set CNR PWMB->CMR2 = CMR; // set CMR PWMB->POE.PWM2=1;

break;

case 7 :

PWMB->CNR3 = CNR; // set CNR PWMB->CMR3 = CMR; // set CMR PWMB->POE.PWM3=1;

break;

default: break;

}

}

桂林电子科技大学实训说明书专用纸

附 录 2

效果图:

26


相关内容

  • 安全性评价在电力施工公司的应用
  • 基于MC6805单片机的电风扇控制器的设计 沈权 (湖州师范学院信息与工程学院,浙江湖州 313000) [摘要]设计了一种以MC6805系列单片机为控制核心的电风扇控制器,该控制器可以实现电风扇的无极调速.各种定时功能和风型的自由转换.而且该控制器控制功能强,适用于电风扇等家用电器的自动控制.它不 ...

  • 变频器的基本应用
  • 变频器的基本应用 1 变频器与节能 变频器主要用于交流电动机(异步电机或同步电机)转速的调节,是公认的交流电动机最理想.最有前途的调速方案,除了具有卓越的调速性能之外,变频器还有显著的节能作用,是企业技术改造和产品更新换代的理想调速装置.自上世纪80年代被引进中国以来,变频器作为节能应用中越来越重要 ...

  • 三种异步电动机调速
  • 三种异步电动机的调速使用 在变频器调速技术不成熟,不适用时期.异步电动机的调速方法,主要是调节转差,转差调速占有相当重要的地位.典型的有:绕线转子异步电动机在转子电路内串入电阻的调速:电磁调速电动机调节直流磁场励磁电流的调速:力矩电动机调节电压的调速. 1) 绕线转子异步电动机: ● 因为调速电阻是 ...

  • 电磁调速电动机工作原理及接线图
  • 电磁调速电动机接线图 电磁调速电动机是由滑差离合器和一般异步电动机结合在一起组成的,在规定的范围内,它能实现均匀连续无极调速. 电磁调速控制器:7芯接线(1.2.3.4.5.6.7) 电磁调速电动机:5端子(励磁线圈:F1.F2.测速发电机:U.V.W) 电磁调速控制器1.2接220V电源相线和零线 ...

  • 三相电风扇无级调速电路
  • 辽 宁 工 业 大 学 电力电子技术课程设计(论文) 题目:三相电风扇无级调速电路 院(系): 电气工程学院 专业班级: 学 号: 080303046 学生姓名: 指导教师: (签字) 起止时间:2010-12-27至2011-1-7 辽 宁 工 业 大 学 课 程 设 计 说 明 书 (论文) 课 ...

  • 电工技术?双速电机接线图控制原理调速原理
  • 一.双速电机控制原理调速原理 根据三相异步电动机的转速公式:n1=60f/p 1.合上空气开关QF引入三相电源 2.按下起动按钮SB2,交流接触器KM1线圈回路通电并自锁,KM1主触头闭合,为电动机引进三相电源,L1接U1.L2接V1.L3接W1;U2.V2.W2悬空.电动机在△接法下运行,此时电动 ...

  • 电机及拖动基础论文
  • 电 机 及 拖 动 基 之础 论 异 步文 电 机 的 现 状 与 发 展 院系:工学院机械系 专业:机械设计制造极其自动化 班级:10机电3班 学号: 姓名: 日期:2012.6.1 异步电机的现状与发展 摘 要 近几十年来,随着电力电子技术.微电子技术及现代控制理论的发展,中.小功率电动机在工农 ...

  • 上海市节能产品应用推荐目录
  • <上海市节能产品应用推荐目录> (第一批) 上海市经济委员会 上海市发展与改革委员会 上海质量技术监督局 上海市财政局 目 录 1.供配电系统节能产品 1.1 S11高效变压器 1.2 非晶态磁性材料变压器 1.3 节能型轻质高强耐蚀电缆桥架 1.4 无功补偿电容量装置 1.5 电磁调速 ...

  • 车床总体改造方案设计
  • 车床总体改造方案设计 1. 机械部分的改造设计 ca6140车床的主轴以及进给系统都是由法兰式电动机拖动.普通车床主轴传动系统部分改造难度大.成本高,且精度提高有限,所以在改造此类机床时,摇臂钻床要选那些主轴各方面性能能满足使用要求的.改造时,保留原主轴系统,对进给传动系统及电气控制系统进行改造. ...