基于ARM的直流电机测速系统Word文档格式.docx
《基于ARM的直流电机测速系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于ARM的直流电机测速系统Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。
2、无线通讯领域:
目前已有超过85%的无线通讯设备采用了ARM技术,ARM以其高性能和低成本,在该领域的地位日益巩固。
3、网络应用:
随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。
此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。
4、消费类电子产品:
ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。
5、成像和安全产品:
现在流行的数码相机和打印机中绝大部分采用ARM技术。
手机中的32位SIM智能卡也采用了ARM技术。
除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。
1.3本课题研究目的及意义
直流电动机是最早出现的电动机,也是最早实现调速的电动机。
长期以来,直流电动机一直占据着调速控制的统治地位。
由于它具有良好的线性调速特性,简单的控制性能,高效率,优异的动态特性,现在仍是大多数调速控制电动机的最优选择。
因此研究直流电机的速度控制,有着非常重要的意义。
随着ARM的发展,数字化直流PWM调速系统在工业上得到了广泛的应用,控制方法也日益成熟。
它对ARM的要求是:
具有足够快的速度;
有PWM口,用于自动产生PWM波;
有捕捉功能,用于测频;
有A/D转换器、用来对电动机的输出转速、输出电压和电流的模拟量进行模/数转换。
通过设计基于ARM的嵌入式直流电机调速系统并调试得出结论,在掌握L298N和74HC595的同时进一步加深对直流电动机调速方法的理解,对运动控制的相关知识进行巩固。
第二章系统分析
2.1
设计目的
(1)本次课程设计是在学习了《ARM嵌入式系统基础教程》课程之后综合利用所学知识完成一个计算机应用系统设计并在实验室实现。
(2)通过课程设计,巩固和加深了对ARM课程中所学的理论知识和实验能力,基本掌握软件编程、硬件设计和实验能力。
(3)加深对计算机软硬知识的理解,获得初步的应用经验,为以后从事生产和科研工作打下一定的基础。
2.2
设计要求
设计一种嵌入式监控系统,使得机器设备能够通过该系统与人之间进行数据通信的目的。
(1)设计一个直流电机的控制系统。
(2)可通过键盘控制直流电机的转速和方向。
(3)能够在上位机显示当前的转速。
(4)在电机加速时能够报警。
2.3设计分析
本次的设计内容是基于ARM7控制直流电机并测量转速。
以lpc2114为主控制芯片,由三极管搭接H桥驱动直流电机转动,通过蜂鸣器实现报警功能,用红外对管进行测速并用上位机显示直流电机转速,系统硬件总体设计框图如下所示:
图2-1系统原理结构图
2.3.1核心控制电路
以嵌入式微控制器作为核心控制电路,作为硬件系统的中枢控制中心,用于协调和管理系统的其它硬件。
本系统选用PHIPLIS公司的ARMTDMI-S内核为控制器LPC2114作为嵌入式系统的核心单元、该处理器内部集成了系统所需的PWM模块、脉冲捕获模块等。
2.3.2电动机接口电路
电动机接口电路用于检测和驱动电动机的转速和转向,转速检测采用红外对管配合控制核心的脉冲捕获功能实现,电动机驱动电路采用控制核心的PWM功能和H桥驱动实现。
2.3.3用户接口电路
用户接口电路用于获取用户的输入和将系统相关信息显示给用户,本系统采用按键获取用户输入,采用上位机显示电动机的转速。
第三章系统设计
3.1硬件设计
图3-1系统电路图
系统功能:
该系统主要实现对直流电机正反转,测速,加速、减速及加速到达上限报警,最后将测量的转速结果在EasyARM显示界面显示。
3.1.1直流电机驱动模块
PWM控制电路
经典的模拟控制电路主要由PWM电路、延时电路和驱动电路组成。
其基本电路结构和调制原理如图3-4。
PWM发生电路是采用三角波发生器产生的三角波放大后与一路可调直流电压(电流调节器输出的U1)进行比较,电压比较器输出的是一系列方波信号。
如果改变U1的大小,那么方波脉冲宽度将会改变,从而达到脉宽调制的目的。
图3-2基本电路结构
LPC2124可提供6路PWM直接输出,控制电机的调速范围大,使用方便。
本设计使用LPC2124的P0.21引脚的PWM5功能,P0.25的GPIO功能,外接由74HC08和7404组成的组合电路,生成两路PWM信号,如图
图3-3PWM控制电路
本次设计直流电机控制使用了H桥驱动电路,控制口线为P0.21、P0.22。
JP4可以断开直流电机控制电路与lpc2200连接。
电路原理图如下所示:
图3-4H桥驱动电路图
如图示,当P0.21输出高电平时(即ZDJ_A点为3.3V),则Q6、Q9导通→Q10导通→MOTOR_B点为MGV+,Q9导通→MOTOR_A点为GND,此时直流电机将会正转。
由于Q9的集电极通过一个二极管D5连接到H桥的另一个控制端ZDJ_B,将ZDJ_B控制端电压钳在1.0v以下,所以不管P0.22口输出的是高电平还是低电平,Q7、Q8都会截至→Q11截至,不会造成H桥短路现象。
当P0.21输出低电平时(即ZDJ_A点为0V),则Q6、Q9截至→Q10截至,P0.22的输出电平可以控制直流电机反转或停机。
若P0.22输出高电平(即ZDJ_B点为3.3V),则Q7、Q8导通→Q11导通→MOTOR_A点为MGV+,Q11导通→MOTOR_B点为GND,此时直流电机将会正转。
当P0.22口输出低电平时,Q7、Q8都会截至→Q11截至,电机停机。
3.1.2报警模块
蜂鸣器采用直流电压供电,在电动机转速达到上限时进行报警。
图3-5蜂鸣器报警电路
3.1.3测速模块
利用红外对管对颜色敏感的特点,当检测物表面为黑色时,反射光很弱,接收端检测到的光线可以忽略,使接收端呈现一种状态,例如开关管截止;
当被检测物表面为白色时,反射光强烈,发射端发射的红外线被接收端全部接收,使接收端呈现另一种相反的状态,例如开关管开通。
这两种相反的状态表现在电路中,就是高低电平组成的脉冲信号。
图3-6红外对管测速电路
3.1.4显示模块
为了给系统提供更友好的人机界面,我们可以通过上位机软件实现各种显示输出或操作输入,EasyARM软件是上位机人机界面软件,通过RS232串口通讯完成各种功能控制。
全仿真的DOS字符窗口是具有25行80列的字符显示窗(显示字符的前景/背景颜色可设置),具有8个仿真LED数码管和8个仿真发光二极管,还有20个模拟按键(按键名可重新定义)。
串口模式可设置,具有单独的数据发送/接收调试窗,方便地监视串口接收到的数据或调试串口。
3.2软件设计
3.2.1流程图
图3-7主程序流程图3-8PWM寄存器初始化流程图图3-9定时器0初始化流程图
3.2.2程序清单
/**************************************************************************
*文件名:
main.c
*功能:
使用PWM5控制电机转速,共4档。
*说明:
将跳线JP4,JP9短接。
**************************************************************************/
#include"
config.h"
#defineUART_BPS115200//定义通讯波特率
#defineKEY51<
<
20//定义按键5
#defineP0_221<
22//GPIO
#defineP0_211<
21//GPIO
#defineBEEPCON0x00000080//P0.7引脚控制B1,低电平蜂鸣
uint8constSEND_STRING[]="
jjj\r\n"
;
/*PWM周期及占空比设置值*/
#defineCYCLE_DATA200000//定义周期
#defineDUTY_CYCLE_DATA20000//定义基本占空比参数
voidDelayNS(uint32dly);
voidCC(uint8i);
*名称:
UART0_Ini()
初始化串口0。
设置为8位数据位,1位停止位,无奇偶校验,波特率为115200
*入口参数:
无
*出口参数:
voidUART0_Init(void)
{uint16Fdiv;
U0LCR=0x83;
//DLAB=1,可设置波特率
Fdiv=(Fpclk/16)/UART_BPS;
//设置波特率
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;
U0LCR=0x03;
}
UART0_SendByte()
向串口发送字节数据,并等待发送完毕。
data要发送的数据
voidUART0_SendByte(uint8data)
{
U0THR=data;
//发送数据
while((U0LSR&
0x40)==0);
//等待数据发送完毕
}
UART0_SendStr()
向串口发送一字符串
srt要发送的字符串的指针
****************************************************************************/
voidUART0_SendStr(uint8const*str)
while
(1)
{
if(*str=='
\0'
)break;
UART0_SendByte(*str++);
//发送数据
}
*名称:
main()
*功能:
主函数
intmain(void)
{uint8i=1;
/*PINSEL1=0x01<
10;
//设置PWM5连接到P0.21管脚
IO0DIR=BEEPCON;
//设置I/O为输出
IO0DIR=P0_22;
PWMPR=0x00;
//不分频,计数频率为Fpclk
PWMMCR=0x02;
//设置PWMMR0匹配时复位PWMTC
PWMMR0=CYCLE_DATA;
//设置PWM周期
PWMMR5=DUTY_CYCLE_DATA;
//设置PWM占空比
PWMLER=1<
0|1<
5;
//PWMMR0、PWMMR5锁存
PWMPCR=1<
13;
//允许PWM5输出,单边PWM
PWMTCR=0x09;
*///启动定时器,PWM使能
CC
(1);
IO0CLR=P0_22;
//将P0.22置低,配合PWM控制
PWMMR5=DUTY_CYCLE_DATA*i;
//设置PWM占空比
//启动定时器,PWM使能
if((IO0PIN&
KEY5)==0)
{
//DelayNS(20);
i=i+3;
IO0SET=BEEPCON;
//BEEPCON=1
//while((IO0PIN&
KEY5)==0);
//PWMTCR=0x00;
if(i>
=11)
PINSEL0=0x00000000;
//设置管脚连接GPIO
i=10;
IO0CLR=BEEPCON;
//BEEPCON=0
//DelayNS(2000);
i=i-3;
i=i-3;
//PINSEL0=0x00000005;
//设置I/O连接到UART0
//UART0_Init();
//UART0_SendStr(SEND_STRING);
//DelayNS(10);
return(0);
DelayNS()
长软件延时
dly延时参数,值越大,延时越久
voidDelayNS(uint32dly)
{uint32i;
for(;
dly>
0;
dly--)
for(i=0;
i<
5000;
i++);
Fanzhuanjiating()
反转加速,停止
i占空比参数
voidCC(uint8i)
uint8m=0;
PINSEL1=0x01<
//设置PWM5连接到P0.22管脚
IO0DIR=P0_22;
IO0SET=P0_22;
//将P0.21置低,配合PWM控制
//设置PWMMR0匹配时复位PWMTC
//设置PWM周期
//启动定时器,PWM使能
while(m<
3)
//设置PWM占空比
i=i+2;
m++;
第四章心得体会
[硬件宋阿珍]为期一周的arm课程设计结束了,本应感到如释重负的我们心情却更加沉重了,因为通过课程设计可以看出这门课我们大部分人学的是一塌糊涂,或许看到这种结果,在我们看来是全专业最为认真敬业的老师之一的黄老师应该更加心痛吧,自己辛辛苦苦努力一个学期,学生竟然交出这样的答卷,着实是让人寒心的,所以我们感到非常的惭愧。
在课程设计过程中,我主要负责的是硬件方面,即电路原理图的绘制,老师的要求是用H桥电路驱动直流电机,实现电机正转加速,报警,反转加速,报警,正转减速,反转减速,并且利用红外对管实现对电机转速的测量,将所测得数据利用串口程序时期显示在上位机或者数码管上,利用Protel99软件画出最小系统以及外围电路,由于我们专业没有学习过专业的画图软件而这些主要是依靠我们自学,所以在画图过程中我们遇到了诸多为题,如怎样使元器件方向改变,怎样使元器件镜像,并且老师要求要用何种芯片,而我的元器件库里根本没有,这对于初学者要画出一个有40个管脚的芯片,确实费了不少时间,红外对管测速,别说原理图了,这根本在我来说是第一次听说,那红外对管如何跟电路连接,他对硬件有什么要求,他的基本参数是多少,这些都是摆在我们面前的问题,还好班里有一个懂这个的同学,通过向他的询问,才对红外对管有了一定的了解,但遗憾的是,由于我们组的专业知识有限,测速电路虽然知道了一些,但最终还是在测速这一模块做的不太好,这方面的知识还得好好补补,下来一个问题是如何利用H桥电路实现电机的反转,因为芯片通过控制PWM波来控制电机的速度和旋转方向,如何改变方向是我们遇到的最大的问题,起初我们以为改变p0.21口和p0.22口的电位改变电路电流的方向实现反转,但没有实现,在查看芯片数据时得知,p0.21口输出PWM波,只能通过改变p0.22口的设置来改变高低电平来改变旋转方向,这个问题的解决也是在对此有了解的同学的指导下完成的,先来是占空比的问题,因为转速的快慢会影响演示的效果,这个是在老师的帮助下完成的,在实验中遇到的各种问题,多亏了老手和同学的帮助才得以顺利解决,所以除了特别感谢之外,深知学习一门知识的重要性,别人又不如自己有,通过课程设计,虽然没能对这门课程的各个要点得以理解,但也是学到了不少东西,比如红外对管测速原理,电机如何实现正反转,如何进行报警,如何操作绘图软件,如何跟同学之间更默契的合作,如何自己动手进行设计,等等很多东西都是通过实践得来的,大四马上就要结束了,在不久的将来即将走上社会,多学一点东西总是没有错的,所以感谢黄老师,李老师对我们的指导和帮助。
[软件杨柳]本设计用一台ARM机实现对直流电机的转速监控,在硬件上采用了基于PWM技术的H型桥式驱动电路,解决了电机驱动的效率问题,在软件上也采用较为合理的系统结构及算法,提高了ARM的使用效率。
通过本次设计,加强了我对ARM知识的掌握,同时了解了目前工业生产中数字化系统的重要性,使我对使用ARM实现自动化控制的设计过程有了全面地了解。
通过学习控制系统工作原理以及如何利用ARM实现各种功能,我查阅了大量相关资料,学会了许多知识,培养了我独立解决问题的能力。
我在此次设计中负责的是软件设计,在这个过程中我遇到了许多问题,由于编程是我的弱项,所以花费了比较多的精力。
我是在原有的直流电机实验基础上进行改编的,通过查资料,问指导老师,还有在同学帮助下不断的修改,使程序最终可以正常运行。
但是对于老师的设计要求还是具有一定差异,最后一天,在两位大神的帮助下,我们对软件的部分功能进行了完善,比如电机反转减速,用延时程序控制电机减速等。
用软件编程完成转速驱动,转速检测,实现了对转速的最优化调节。
这次的课程设计还让我体会到了同学之间的互帮互助,在大家的努力下,从一筹莫展到逐渐完成。
细节决定成败,这句话也在这次课题中得到了印证,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行,因此我们不仅仅要有整体意识,也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。
通过这次课程设计,我还体会到了自己知识的贫乏,许多知识都没有涉及到。
在