汽车中控门直流电机控制系统毕业设计Word文档下载推荐.docx
《汽车中控门直流电机控制系统毕业设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《汽车中控门直流电机控制系统毕业设计Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
2.中控门锁的工作原理
(1)当数码管显示数字1是直流电机电机开始反转,意味着门锁自动打开。
(2)当数码管显示数字6时电机直流电机停止转动,意味着门锁自动落锁。
2-1接线原理图
3.ARM及主控芯片LPC2103的简介
ARM公司自1990年正式成立以来,在32位RISC(ReducedInstructionSetComputerCPU)开发领域不断取得突破,其结构已经从V3发展到V7。
由于ARM公司自成立以来,一直以IP(IntelligenceProperty)提供者的身份向各大半导体制造商出售知识产权,而自己从不介入芯片的生产销售,加上其设计的芯核具有功耗低、成本低等显著优点,因此获得众多的半导体厂家和整机厂商的大力支持,在32位嵌入式应用领域获得了巨大的成功,已经占有75%以上的32位RISC嵌入式产品市场。
在低功耗、低成本的嵌入式应用领域确立了市场领导地位。
设计、生产ARM芯片的国际大公司已经超过50多家,国内中兴通讯和华为通讯等公司也已经购买ARM公司的芯核用于通讯专用芯片的设计。
LPC2103是一个基于支持实时仿真的16/32位ARM7TDMI-SCPU的微控制器,并带有32kB的嵌入高速Flash存储器,128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
较小的封装和极低的功耗使LPC2103适用于访问控制器和POS机等小型应用系统中;
由于内置了宽范围的串行通信接口(2个UART、SPI、SSP和2个I2C)和8KB的片内SRAM,LPC2103也适合用在通信网关和协议转换器中。
32/16位定时器、增强型10位ADC、定时器输出匹配PWM特性、多达13个边沿、电平触发的外部中断、32条高速GPIO,使得LPC2103微控制器特别适用于工业控制和医疗系统中。
3.1LPC2103特性
(1)16/32位ARM7TDMI-S微控制器,超小LQFP48封装;
(2)8KB的片内静态RAM和32KB的片内Flash程序存储器。
128位宽度接口/加速器可实现高达70MHz工作频率;
(3)通过片内boot装载程序实现在系统/在应用编程(ISP/IAP)。
单个Flash扇区或整片擦除时间为100ms,256字节编程时间为1ms;
(4)嵌入式ICERT通过片内RealMonitor软件提供实时调试;
(5)10位A/D转换器提供8路模拟输入(每个通道的转换时间低至2.44us),以及特定的结果寄存器来最大限度地减少中断开销;
(6)2个32位定时器/外部事件计数器(带7路捕获和7路比较通道);
(7)2个16位定时器/外部事件计数器(带3路捕获和7路比较通道);
(8)低功耗实时时钟(RTC)具有独立的电源和特定的32KHz时钟输入;
(9)多个串行接口,包括2个UART(16C550协议标准)、2个高速I2C总线(400Kbit/s)、SPI和具有缓冲作用和数据长度可变功能的SSP;
(10)向量中断控制器(VIC),可配置优先级和向量地址;
(11)多达32个通用I/O口(可承受5V电压);
(12)多达13个边沿、电平触发的外部中断管脚;
3.2ARM管脚信息
图3-1ARM管脚图
3.3定时器1
3.3.1匹配输出
定时器1匹配输出方波示例应用如下所示,定时时间为0.2秒。
用户需要短接JP4的P0.19端口,控制LED闪烁。
#include"
config.h"
#defineLED(1<
<
19)
/*******************************************************************************************
**函数名称:
Timer1Init
**函数功能:
定时器1初始化
**输入参数:
无
**输出参数:
*******************************************************************************************/
voidTimer1Init(void)
{
T1TCR=0x02;
/*定时器1复位*/
T1PR=0;
/*不设时钟分频*/
T1MCR=0x02;
/*设置T1MR1匹配后复位T1TC*/
T1EMR=0x03<
8;
/*匹配翻转*/
T1MR0=Fpclk/5;
/*设置0.2秒匹配值*/
T1IR=0x01;
/*清除中断标志*/
T1TCR=0x01;
/*启动定时器1*/
}
main
定时器1匹配输出翻转主程序
intmain(void)
PINSEL1=PINSEL1&
(0x03<
6);
/*选择MAT1.2输出*/
PINSEL1=PINSEL1|(0x02<
6);
Timer1Init();
/*定时器1初始化*/
IRQEnable();
/*IRQ中断使能*/
while
(1);
return0;
图3-2匹配输出波形
3.3.2PWM输出
定时器0、1可匹配输出PWM波形,波形的占空比自行设定。
在本应用示例中,P0.19输出的波形占空比为50%,P0.20输出的占空比为25%。
定时器PWM输出应用,示例如程序清单2所示。
产生波形如图4.30所示。
/*定时器0复位*/
PWM1CON=0x0C;
/*使能PWM输出*/
T1MCR=0x02;
/*设置T0MR0匹配后复位T0TC*/
T1MR0=Fpclk/2000;
/*设置PWM输出的周期*/
T1MR2=(Fpclk/2000)/2;
/*设置PWM1.2输出占空比为50%*/
T1MR3=((Fpclk/2000)/4)*3;
/*设置PWM1.3输出占空比为25%*/
/*启动定时器0*/
定时器1PWM输出
PINSEL1=(PINSEL1&
(~(0x03<
6)))|(0x02<
8)))|(0x02<
8);
/*选择MAT1.3输出*/
图3-3匹配输出波形
4.系统的硬件及软件设技
4.1.器件表的生成
本设计要模拟汽车中控锁,首先需要用到1个直流电机,用这个电机代表司机旁边的中控锁。
同时门边用两个LED,一个红色,一个绿色,分别代表车门锁的开关以及电机的状态。
门旁还有一个按键作为门锁的开关,司机还有一个打开所有门的按键。
为了指示电机动作完成,我们通过数码管显示的数字可以直观的看到显示结果。
据此,生成了一下器件表:
表4-1器件表
器件
数量
LPC2013芯片
1
直流电机
红色LED
数码管
绿色LED
按钮
3
焊接板
烧写器
4.2按键电路设计
为了控制系统,设计了几个按键,这里直接把按键的一个引脚接在单片机的IO口上,另一个引脚接在地上。
IO口设置为上拉输入,在按键按下后,IO口电平就会被拉低,通过程序中检测IO口电平状态就能知到按键是否被按下
4.3指示LED电路的设计
由于使用的LED功率小,电流低,可以直接用IO口的电流来驱动,这里我直接把每个LED的正极接在一个IO口,负极接在地,配置IO口输出,当IO口输出高时,就能点亮LED。
4.4数码管电路的设计
要显示电机是在什么时间开始转动以及什么时间停止,需要用到数码管,课题中我需要用到一个直流电机,所以使用了一位数码管,用来显示电机动作是的时间,为了节约IO,这里采用动态扫描的方式,把位选接IO,所有用到的段选相应的接在一起,再接在不同的IO口上。
显示原理是这样的
数码管首先从上到右,到下到左,到中间,最后到小数点分别标记为abcdefgdp八段其中小数点位DP为最高位,a段为最低位,要想显示什么字符只需要使对应的段发光即可,一般的习惯是单片机的端口的最低位接a段,次低位接b段,...最高位(如p0.7)接dp,显示码从高往低表示为为dpgfedcba
如要显示“1”,只需要将b、c段点亮即可,若是共阴极,片选是低电平选中,某一段输出高电平点亮,即显示码为00000110即0x06,其他的依照该方法类推
图4-2数码管脚图
4.5软件的概述
由于LPC2103的寄存器较多,编程起来比较复杂。
官方写了一套库函数,我就直接在官方的库函数上进行开发。
整个系统用到了单片机的GPIO模块来控制按键,电机和LED。
为了控制电机运行的时间和数码管显示的时间,用到了定时中断Tim模块,首先把每个初始化模块放在一起,在主函数最初调用。
把控制模块和显示模块分别写成两个函数,在主函数里的大循环里调用。
为了使整体程序结构合理,代码风格好,稳定性高,便于调试,我把这几个模块分成几个文件来写,每一个模块写一个C文件和一个H文件,只需要被调用的函数放入H文件中,同时还要保证每个函数的高内聚,低耦合的特性。
4.6电机数码管及LED模块
本设计里所用到的电机和LED都是利用IO口的输出来实现,所以我把他们放在一起。
首先打开这些模块的系统时钟,然后用结构体GPIO_InitTypeDef来初始化这些IO口为推挽输出,输出速度为50MHZ,然后按照结构体初始化IO口。
对于控制LED的IO口,为了使用方便,直接用一个宏定义来控制。
对于控制电机的部分,把他们封装成电机正转,电机反转和电机停止的函数,程序里用一个标志位来表示当前锁的状态。
数码管部分作出显示每个数字所对应的IO口状态,然后据此编写显示一位的函数,传入参数为位数和数字。
4.7按键输入模块
本设计里用到的按键和拨动开关都是直接连接IO口和地的,在软件里,首先要初始化这些IO口,为了防干扰,这里初始化为上拉输入。
首先打开相应口的时钟,然后利用结构体GPIO_InitTypeDef初始化这些IO口为上拉输入。
对于模拟车速的拨动开关,直接在控制函数里最初进行检测。
4.8控制模块
整个系统的逻辑都在这个控制模块里,我用一个全局变量来指示几个个门锁的开与锁,首先检测速度拨动开关是否达到高速,如果为真,再检测指示状态的变量,看是否全部关闭,如果没有全部关闭,就调用每个关闭函数,把没有关闭的门锁关闭,电机转动一段时间,然后通过数码管显示的时间进行提示。
然后函数返回,这样就禁用了按键。
拨动开关没有达到高速的时候,才能用按键进行控制,检测到司机的门为开,并且按下按键时,所有门锁全部锁上。
有锁住的门锁,再检测到全部打开的按键按下后,就打开所有的门锁。
其余的情况,检测到按键按下后,就改变门锁的状态,更新标志位。
4.9显示模块
为了指示当前门锁的状态,所有门锁用了一个绿色LED来指示是否锁住。
当锁住时,绿色LED不亮,当没有锁住时,绿色LED点亮。
所以在这里,只需要读取每个变量的值,然后进行逻辑判断,在根据结果点亮或熄灭相应的LED就行了。
为了指示当前电机工作运行的时间,用到了一位数码管,传入时间和电机信号,就能在相应的数码管上显示相应的数字。
当某一数值显示的时候电机就会转动,同理,另一数字显示的时候电机会停止。
4.10定时模块
为了精确控制电机的运行时间,这里用到了单片机的定时器1,首先初始化一组定时器,设定定时中断,并设置相应的参数,封装成函数,并在主函数里调用,同时还要编写定时中断函数,在中断里对一些标志变量和一些时间变量进行控制。
4.11主函数
由于其他模块都已经封装好,所以主函数里就直接调用那些函数就行,这样显得简单,整齐。
首先,先把三个标志位清0,然后调用IO初始化,然后初始化数码管不显示数字,再初始化按键。
这样就初始化了所有配置,然后来一个大循环,循环体内放控制函数和显示函数。
这样就能不断检测按键,进行控制和刷新显示。
5.硬件电路的焊接及调试
5.1软件的焊接
5-1硬件结果显示图
5-2硬件显示图
5.2软件的调试
要完成整个设计,硬件的调试必不可少,非常的重要,首先我要通过CodeWorriorforARMDeveloperSuite检测程序并烧写到LPC2103芯片当中
图5-3程序检测图
5-4添加J-LINK
5-5配置J-LINK
6.未来拓展
6.1利用电机正反转控制电路
五线马达是主锁,除了有马达以外还多了一个三线的状态开关,并且是和锁马达联动的,其中一根开锁的时候和第二根导通,闭锁的时候和第三根导通,门锁控制器就从它的状态得知门锁是开还是关,保证四个门同步开闭。
图6-1直流电机接线原理图
总结
本设计设利用ARM芯片模拟汽车中控门直流电机,通过GPIO的输出控制指示LED。
通过GPIO的上拉输入来检测按键和拨动开关。
通过定时器TIM模块定时中断来确定时间。
软硬件的有机结合,使得整个系统能够正常工作。
设计时,首先选择元器件,然后看元器件的数据手册,设计硬件电路,用C语言编写程序,调试程序直到成功实现功能。
采用C语言的编程方式,C语言是一种结构化的高级语言,可读性好,移植容易,更容易模块化,并且有严格的句法检查,出错少,便于调试。
而且即使在该设计完成投入使用后,需要升级增加功能,也只需要重新烧写程序就能够完成,极大的方便了用户和设计者。
通过这次的努力,终于彻底做完了毕业设计当中老师分配给我的各项任务。
在老师的指导下,我能够运用已经学过的知识解决所需要的问题,最终完成本课题的需求,实现控制如下:
当数码管显示1到5时,电机反转,当数码管显示6到0时,电机停止转动。
在这次设计中,我查阅了很多资料,也掌握了一些查阅资料的方法,同时还丰富了我的知识储备,提高了我的专业涵养,使我整个能力得到不少的提高。
这次的设计的硬件焊接以及软件调试都使我受益匪浅。
在硬件设计时,要考虑很多东西,需要用到哪些原件,以及整个布局都要提前想好。
在设计中,我还发现,以前在书本上学到的东西还是和实际有一点出入的,对待问题要更深入的研究,就会收获更多知识,对问题的认识程度也会更上一层楼。
总体来说,硬件设计还是相对简单的,最重要的是软件的设计。
做软件时,一定要先有一个整体的架构,要了解我的整个设计总体都需要哪些模块,整个程序的架构要提前想好,然后还要有良好的代码风格,这样不仅写起来有条理逻辑不会乱,而且对于后期的维护以及让他人阅读都有很大的帮助。
对于这次的设计,由于本人的经历和时间有限,考虑问题也不够全面,所掌握的知识也不是很多,或多或少会存在着一些缺点,设计难免存在一些不足之处。
我的这些不足,在今后学习和工作中会不断改善。
最重要的是,这次的设计使我懂得了学习的重要性,在今后,我会一直学习下去,我会一直坚持和努力。
致谢
经过了小半年的时间,终于完成了我的毕业设计,心里还是有点小激动的,十分的渴望能在大学的最后交出一份满意的答卷,希望这份答卷获得一个正面的评价,能为我的大学画上一个完美的句号。
在不知不觉中大学四年就过去了,这四年我成长了,都说大学是通往社会的一个门槛,我真的学习到了许多,还记得大一刚刚入学时的懵懵懂懂,还记得大学的每一个清晨,终于在大学的最后交出了一份满意的答卷。
首先还是应该感谢我的导师刘老师,刘老师给我了很多的帮助,没有刘老师的帮助,这个毕设题目也没办法完成的这么顺利,这么快。
没有老师的细心教导,我也不可能在学到这么多,这么全的专业课程知识。
同时我也需要也需要感谢一起做毕业设计的所有同学,感谢陪伴我走过了大学的最后六个月的时光,同学间的友情十分珍贵。
希望这份友情能够天长地久,永远长存。
我还需要感觉和我朝夕相伴四年的室友们,四年的情谊,四年的照顾弥足珍贵。
愿同学们友谊长存。
在未来的道路上,我还会继续努力,在科研的道路上获得新的成就。
参考文献
[1]陈大钦.电子技术基础实验(第二版):
机械工业出版社。
[2]胡学海.单片机原理及应用系统设计:
京电子工业出版社。
[3]李广弟.单片机基础:
北航出版社。
[4]周立功.单片机基础实验指导书:
广州周立功单片机发展有限公司出版社。
[5]吴黎明.单片机原理及应用技术:
科学出版社。
[6]陈光东.单片微型计算机原理及其C语言程序设计:
华中理工大学出版社。
[7]袁志勇嵌入式系统原理及应用北京航天航空大学出版社。
[8]刘彦文嵌入式系统原理及接口技术清华大学出版社。
[9]李宥谋嵌入式系统开发清华大学出版社。
[10]广州周立功公司嵌入式系统原理教程。
[11]刘波文嵌入式实时操作系统uC/OS-II经典实例北京航天航空大学出版社。
[12]肖广兵ARM嵌入式开发实例——基于stm32的系统设计电子工业出版社。
[13]刘敦放《使用ARM定时器对十字路口交通灯控制的探讨》重庆科技学院学报。
附录
/****************************************Copyright(c)****************************************************
**
**
**--------------FileInfo---------------------------------------------------------------------------------
**Filename:
main.c
**LastmodifiedDate:
2013-10-31
**LastVersion:
1.0
**Descriptions:
Themain()functionexampletemplate
**--------------------------------------------------------------------------------------------------------
**Createdby:
Chenmingji
**Createddate:
2004-09-16
**Version:
1.0
Theoriginalversion
**-------------------------------------------------------------