直流电机调速系统设计Word文档下载推荐.docx
《直流电机调速系统设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《直流电机调速系统设计Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
目前科研生产中采用的速度测量方法可分为两类:
直接测量法和间接测量法两大类。
直接测量法时通过魔种测量原理或效应直接获得速度量,如多普勒测速仪、空间滤波测速等。
这种方法的最大优点是反应快、可测量瞬时速度,但设备成本高,且受到大气物理环境的限制。
间接测量法师测量目标的移动距离和时间,通过计算得到速度量。
(2)在电气时代的今天,电动机在工农业生产也人们日常生活中都起着十分重要的作用。
2课程设计介绍
设计一种直流电机测速系统,以LMS2110为控制核心,通过按键改变电机电机速度,并在液晶屏上显示速度。
实现了按键输入、电机驱动、转速改变、转速显示等功能。
2.1课程设计目的
随着ARM的发展,数字化直流PWM调速系统在工业上得到了广泛的应用,控制方法也日渐成熟,他对ARM的要求是:
具有够快的速度;
有PWM口,用于自动产生PWM波;
有捕捉功能,勇于测频;
有A/D转换器、用来对电动机的输出转速、输出电压和电流的模拟量进行模/数转换。
通过设计基于ARM的嵌入式直流电机调速系统并调试得出结论,在掌握L298N和74HC595的同事进一步加深对直流电动机调速方法的理解,对运动控制的相关知识进行巩固。
通过本次综合设计,运用已学的课程知识,根据题目要求进行软硬件系统的设计和调试,对《嵌入式系统原理与应用》课程中涉及的芯片结构、控制原理、硬件和编程等方面有一定的感性认识和实践操作能力,从而加深对本课程知识点的理解,在应用知识能力、设计能力、调试能力以及报告撰写能力等方面有显著提高。
2.2题目要求
2.2.1题目
2.2.2工作流程
(1)按下电源键,电源指示灯亮;
(2)按运行键,电机运转。
按速度增键,电机速度加快;
按速度减键,电机速度减慢;
(3)LED实时显示当前的电机的速度;
(4)运行过程中,若再按下电源键,则系统停止工作,电源指示灯灭。
2.2.3设计要求
(1)利用实验系统的资源来设计一个“直流电机调速系统”。
(2)控制面板包括:
四位数码显示、十个数字按键键盘、电源按键、电源指示灯、两个速度增减键和一个运行键。
2.2.4实验设备与器材
实验设备:
LM3S2110板、PC机一台。
实验器材:
LCD1602液晶显示器、MagicARM2200教学实验开发平台。
3总体设计方案综述
3.1ARM7简介
ARM7引系列处理是英国ARM公司设计的主流嵌入式处理器ARM7内核是0.9MIPS/MHz的三级流水线和冯·
诺依曼结构:
ARM9内核是5级流水线,提供1.1MIPS/MHz的哈佛结构。
ARM7没有MMU,ARM720T是WWU的,ARM9主要包括ARM9TDMI和ARM9E-S等系列ARM9是有MMU的,ARM940T只有Memoryprotectionunit。
不是一个完整的MMU。
ARM7:
小型、快速、低能耗、集成式RISC内核,用于移动通信。
ARM7TDMI(Thumb):
这是公司授权的用户最多的一项产品,将ARM7指令集同Thumb扩展组合在一起,以减少内存容量和系统成本。
同时,他还利用嵌入式ICE调试技术来简化系统设计,并用一个DSP增强扩展来改进性能,该产品的典型用途是数字蜂窝电话和硬盘驱动器。
ARM9TDMI:
采用5阶段管道化ARM9内核,同时设备Thumb扩展、调试和Harvard总线。
再生产工艺相同的情况下,性能可达ARM7TDMI的两倍之多。
常用于连网和顶置盒。
3.2设计思路及流程图
利用ARM上位设计一个直流电机的软件模拟PWM驱动及测速系统,并且通过嵌入式开发平台试验箱上的模块来测量转速。
本系统具有精度高,成本低,是用方便等优点。
利用ARM控制直流电机并测量转速,显示速度。
(1)系统总体框图
图3.1直流电机调速系统总体框图
(2)设计流程图
图3.2直流电机调速系统设计流程图
(3)调速设计框图
图3.3调速设计框图
4系统硬件部分的设计及说明
4.1工作原理
4.1.1PWM控制原理
本设计的主要思想为利用PWM控制占空比从而达到改变电机速度。
下面为PWM控制原理:
图4.1为PWM降压斩波器的原理电路及输出电压波形。
在图4.1a中,假定晶体管V1先导通T1秒(忽略V1的管压降,这期间电源电压Ud全部加到电枢上),然后关掉T2秒(这期间电枢端电压为零)。
如此反复,则电枢端电压波形如图4.1b中所示。
电动机电枢端电压Ua为其平均值。
图4.1PWM降压斩波器原理电路及输出电压波形
a)原理图b)输出电压波形
式中
为一个周期T中,晶体管V1导通时间的比率,成为负载率或占空比。
使用下面散户总方法中的任何一种,都可以改变a的值,从而达到调压的目的:
定宽调频法:
T1保持一定,是T2在0到无穷大范围内变化;
调宽调频法:
T2保持一定,是T1在0到无穷大范围内变化;
定频调宽法:
T1+T2=T保持一定,是T在0到T范围内变化。
不管哪种方法,a的变化范围均为a属于【0,1】,因而电枢电压平均值Ua的调节范围为0到Ud,均为正值,及电动机只能在某一方向调速,成为不可逆调速。
当需要电动机在正、反向两个方向调速运转,即可逆调速时,就要使用图4.1-4.2a所示的桥式(或称H型)降压斩波电路。
在图4.2a中,晶体管V1、V4是同时导通同时关断的,V2、V3也是同时导通同时关断的,但V1与V2.V3与V4都不允许同时导通,否则电源U的直通短路。
设V1、V4先同时导通T1秒后同时关断,间隔一定时间(为避免电源直通短路。
该间隔时间成为死去时间)之后,再是V2、V3同时导通T2秒后同时关断,如此反复,则电动机电枢端电压波形如图4.2b所示。
图4.2桥式PWM降压斩波器原理电路及输出电压波形
4.1.2直流电机测速原理
电机的叶轮置于红外对射管之间,叶轮转过,挡住传感器,产生中断,给单片机,从而实现计数,进而计算出电机的速度。
直流电机的转速计算公式如下:
n=(U-IR)/Kφ,其中U为电枢端电压,I为电枢电流,R为电枢电路总电阻,φ为每极磁通量,K为电动机结构参数。
可以看出,转速和U、I有关,并且可控量只有这两个,我们可以通过调节这两个量来改变转速。
我们知道,I可以通过改变电压进行改变,而我们常提到的PWM控制也就是用来调节电压波形的常用方法,这里我们也就是用PWM控制来进行电机转速调节的。
通过单片机输出一定频率的方波,方波的占空比大小绝对平均电压的大小,也决定了电机的转速大小
4.2LMS2110
4.2.1LMS2110简介
图4.3LMS2110微控制器
LM3S2110微控制器是针对工业应用方案而设计的,包括远程监控、电子贩售机、测试和测量设备、网络设备和交换机、工厂自动化、HVAC和建筑控制、游戏设备、运动控制、医疗器械、以及火警安防。
除此之外,该LM3S2110微控制器的优势还在于能够方便的运用多种ARM的开发工具和片上系统(SoC)的底层IP应用方案,以及广大的用户群体。
另外,该微控制器使用了兼容ARM的Thumb指令集的Thumb2指令集来减少存储容量的需求,并以此达到降低成本的目的。
最后,LM3S2110微控制器与Stellaris系列的所有成员是代码兼容的,这为用户提供了灵活性,能够适应各种精确的需求。
为了能够帮助用户产品快速的上市,LuminaryMicro公司提供了一整套的解决方案,包括评估和开发用的板卡、白皮书和应用笔记、方便使用的外设驱动程序库以及强劲的支持、销售和分销网络。
LMS2110开发板中包含一块LM3S2110微控制器,另外主要可以使用的元器件有:
1个RST键,4个独立按键,8个LED灯和1个蜂鸣器。
本课程设计用到的有关管脚如下
(1)在PWM模式中,TimerA或TimerB被配置为16位的递减计数器,通过设置适当的装载值(决定PWM周期)和匹配值(决定PWM占空比)来自地产生PWM方波信号从相应的CCP管脚输出。
可用的CCP管脚,如表1,本设计实验用到了定时器0。
表4.1可使用的CCP管脚
定时器
16位向上/向下计数器
偶数CCP管脚
奇数CCP管脚
定时器0
TimerA
CCP0
-
TimerB
CCP1
定时器1
CCP2
CCP3
定时器2
(2)用到的LED灯和KEY按键
ARM2110开发板中,有8个LED小灯,其原理电路图如图4.5所示。
这8个小灯--LED1~LED8各自的负极连接了一个4.7K的电阻后依次连接在微控制器LM3S2110上的PF1、PF2、PB0、PB1、PB2、PB3、PE0、PE1这8个引脚上,当这8个引脚中的某个引脚得到低电平时,其相连的LED小灯就会亮起来。
LMS2110开发板中有4个独立按键,其原理电路图如图4.4所示。
这四个独立按键—KEY1~KEY4各自的一端依次连接在微控制器LM3S2110上的PH1、PB6、PB5、PB4四个引脚上。
图4.4LMS2110开发板KEY按键管脚图图4.5LMS2110开发板LED灯管脚图
4.2.2LMS2110中断功能介绍
ARMCorter-M3微控制器和嵌套向量中断控制器(NVIC)将区分所有异常的优先等级并对其进行处理。
所有异常都在控制器模式中处理。
在出现异常时,控制器的状态将被自动存储到堆栈中,并在中断服务程序(ISR)结束时自动从堆栈中恢复。
取出向量和保存状态时同时进行的,这样便提高了进入中断的效率。
中断是通过NVIC中断设置使能寄存器来使能的,并且由NVIC中断优先级寄存器来区分其优先等级。
4.31602液晶显示模块设计
4.3.11602液晶显示模块简介
图4.61602液晶显示模块
所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。
目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。
现代的液晶显示屏(LCD)用于数字型钟表和许多便携式计算机的一种显示器类型。
LCD显示使用了两片极化材料,在它们之间是液体水晶溶液。
电流通过该液体时会使水晶重新排列,以使光线无法透过它们。
因此,每个水晶就像百叶窗,既能允许光线穿过又能挡住光线。
液晶显示器(LCD)目前科技信息产品都朝着轻、薄、短、小的目标发展,在计算机周边中拥有悠久历史的显示器产品当然也不例外。
4.3.2设计用到的管脚
字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如表2。
表4.21602液晶显示模块管脚图
引脚号
引脚名
电平
输入/输出
作用
1
Uss
电源地
2
Ucc
电源(+50)
3
Uee
对比调整电压
4
RS
0/1
输入
0=输入指令
1=输入数据
5
R/W
0=向LCD写入指令或数据
1=从LCD读取信息
6
E
1,1—0
使能信号,1时读取信息,1—0(下降沿)执行指令
7
DB0
数据总线line0(最低位)
8
DB1
数据总线line1
9
DB2
数据总线line2
10
DB3
数据总线line3
11
DB4
数据总线line4
12
DB5
数据总线line5
13
DB6
数据总线line6
14
DB7
数据总线line7(最高位)
15
A
+Ucc
LCD背光电源正极
16
K
接地
LCD背光电源负极
4.4硬件电路图
本课程设计用到了LMS2110开发板、1602液晶显示模块,如图4.7是各板块连接的内部管脚图。
图4.7LMS2110、1602液晶显示、导线的连接电路内部管脚图
5系统软件概述
5.1IAR介绍使用说明
(1)新建工程:
File-Open-Workspace,建立新工程
图5.1新建工程:
File-Open-Workspace图5.2新的工程
(2)Project-CreateNewProject
图5.3Project-CreateNewProject
(3)保存工程,工作空间文件后缀.eww,工程的后缀.ewp
图5.4保存工程
(4)输入嵌入式程序
图5.5输入嵌入式程序
(5)点击Make进行程序校验
图5.6进行程序校验
(6)点击DOWNLOADANDDEBUG将程序输入板子中
图5.7将程序输入板子中
5.2总体流程
(1)开发环境:
系统软件采用IAR集成开发环境开发
(2)总体流程概况
我们在程序主循环中实现按键扫描与转速显示,通过定时器0每个50ms产生一次时钟中断,每1s更新一次要显示的速度。
通过定时器1实现PWM波的输出,每隔20ms输出一次PWM波。
使用外部中断0,将ARM2110传感器的输入设为外部中断,中断出发方式为下降沿触发。
每产生一个外部中断,计数值加一。
每隔1s显示并清空计数值,以此实现测速功能。
5.3初始化
无论任何软件或系统必须要进行初始化。
所谓初始化就是把其中的某些参数或者数值变为默认值,或者将控件调整为默认状态。
5.3.1GPIO初始化
针对不同端口的GPIO引脚,都要分别进行初始化的设置。
最基本的GPIO初始化步骤包括:
(1)使能端口;
(2)设置引脚的输入或输出状态;
(3)设置引脚的上升沿或下降沿触发的状态;
(4)设置引脚的中断使能;
(5)设置端口的中断使能。
5.3.2定时器的初始化
LMS2110对于16为单次触发、周期定时器,Timer可以被才分为两个单独运行的16位定时、计数器,都可以被配置成带8位预分频(可选)的16位递减计数器。
如果使用8位预分频功能,则相当于24位定时器。
具体用法跟32位单次触发、周期定时器类似,只不过对TimerA和TimerB被配置为能够捕获外部输入脉冲边沿事件的递减计数器。
共有3种边沿事件类型:
正边沿、负边沿、双边沿。
5.3.3LED灯的初始化
使能和配置完成后将LED灯(PF1)赋初值,因为它们均为低电平使能,故将初值赋为全“1”。
6系统模拟测试与调试
6.1测速方案
测试包含仿真测试和硬件测试两个部分。
仿真测试指使用ProteusPro7.1对系统进行仿真测试。
主要测试系统电路的设计和验证程序逻辑的正确性。
硬件测试指系统搭建后对硬件电气性能的测试。
主要测试各功能的完整性可靠性,以及系统电气性能的稳定性。
测试工具为示波器万用表等。
6.2测试结果
6.2.1仿真测试结果
(1)仿真测试中,系统运行正常,程序逻辑正确。
按键输入正常、数码管显示正确。
(2)输出PWM波正常。
6.2.2硬件测试结果
(1)系统硬件搭建完毕后,进行硬件测试。
(2)系统加电后,振荡电路正常起振,STC89C52在时钟源电路的驱动下运行正常。
(3)系统可在复位电路的作用下正常复位。
(4)系统按键输入正常,并能够正确消除抖动。
(5)系统PWM波输出正常。
将示波器接STC89C52的P1.7管脚,可观察到峰峰值5V左右的方波,其占空比可由按键key1在30%和70%之间切换,频率与调速要求一致。
(6)电桥驱动电路正常,在PWM驱动下可稳定驱动电机运行。
(7)ST151传感器测量正常,在电机稳定运行时,示波器可在传感器电路输出端测得稳定的方波信号。
(8)数码管转速显示正常,数码管可正确显示并正确显示电机转速。
6.3设计现象分析
(1)实验分析:
a、按下电源键,LED3亮,液晶屏显示“SPEEDUPandDOWN”,电机静止;
b、按下KEY1键,LED3保持亮,LED4闪烁,液晶屏显示数字“550—450”跳变,电机转速缓慢;
c、按下KEY2键,LED3保持亮,LED4闪烁,液晶屏显示数字“450—550”跳变,电机转速飞快;
d、按下电源键,液晶屏恢复,LED灯灭,电机恢复静止。
(2)现象简述
a、打开电源,液晶屏显示“SPEEDUPandDOWN”,电机静止;
图6.4液晶屏显示“SPEEDUPandDOWN”图6.2电机静止
b、按下KEY1键,电机减速,液晶屏由550减小到450,如图6.3—6.4,转速变慢如图6.5;
c、按下KEY2键,电机加速,液晶屏由450增速至550,如图6.4—6.3,转速增大,如图6.5。
图6.3液晶屏显示550图6.4液晶屏显示450图6.5电机转速变快
7心得体会
这次的课程设计为期一个月的时间。
在这段时间里我们深入了解了之前学习过的ARM7嵌入式系统设计,了解了LMS2110微控制器开发板的使用,了解了1060液晶显示模块的使用,学习了软件IAR的使用,并且在硬件上还采用了基于PWM技术的调速电路,虽然也遇到了这样或者那样的问题,但是我们还是完成了“直流电机调速系统设计”课题。
其实,实际效果的出来还是跟最一开始我们的想象是不一样的,最开始我们的想象是一共用到四个按键来分别控制电源的开启/关闭、电机开始转动、电机加速、电机减速,并且希望LED3不亮,但是设计中还是遇到了问题,比如液晶屏了连接管脚中有些管脚连上线路后LED3的灯会一直长亮,或者我们换一个灯亮却会导致整个系统的瘫痪等。
各种问题层出不穷,我们耐着心思琢磨着,希望可以一一解决。
并且经过反复的检查,我们发现并解决了电机的驱动存在问题,我们的程序内部延时效果也不好,数码管显示间隔较大,对按键的消抖处理也有不足,但经多次调试最终的效果还是比较理想,当然,我们做的还有不足之处,比如说:
调速模块的灵敏度不够高等。
另外,我们还发现了有时数码显示会有乱码或者出现类似日文的字符,那是因为有些地方短路了。
我们看着最后并不完美但已经很不错的设计现象,我们还是很开心。
总之,通过这次课设,我觉得一定要将理论和实践联系起来,才能够好的掌握所学的理论知识。
8参考文献
[1]周立功.编著.ARM微控制器基础与实践[M].北京:
北京航空航天大学出版社.2005
[2]沈建华.译.ARM嵌入式系统开发、软件实际与优化[M].北京:
[3]彭介华编.电子技术课程设计指导[M].北京:
高等教育出版社.1997
[4]谢自美.电子线路设计·
实验·
测试[M].第2版.武汉:
华中理工大学出版社.2000
[5]康华光主编.电子技术基础·
数字部分[M].第4版.北京:
高等教育出版社.2007
[6]常健生主编.检测与转换技术[M].第3版.北京:
机械工业出版社.2003
[7]清华大学通信教研组,增量调制数字电话终端机[M].北京:
人民邮电出版社.北京.2010
[8]曹志刚,钱亚生.现代通信原理[M].北京:
清华大学出版社.1992
附录
附录1人员分配
直流电机测速系统设计中系统软件部分由王妍负责,系统硬件部分由霍然负责。
附录2程序清单
#include"
systemInit.h"
#include<
timer.h>
#definePART_LM3S2110
//定义KEY
#defineKEY1_PERIPHSYSCTL_PERIPH_GPIOB
#defineKEY1_PORTGPIO_PORTB_BASE
#defineKEY1_PINGPIO_PIN_6
//定义KEY
#defineKEY2_PERIPHSYSCTL_PERIPH_GPIOH
#defineKEY2_PORTGPIO_PORTH_BASE
#defineKEY2_PINGPIO_PIN_1
#definelcdenGPIO_PIN_0//PB0;
#definelcdrsGPIO_PIN_1//PB1;
unsignedchardata;
//PD0-PD7;
unsignedcharn