资源描述
“学生研究计划”(SRP)项目结题报告书
项目编号:JY130513
项目名称: 单轴直立行走遥控车的研制
起止时间: 2013.04---2013.11
学生姓名: 欧志兴
专业年级: 2011 级车辆工程
联系电话: 18825142336
电子信箱: 493290676@
指导教师: 翟伟良
填表日期: 2013-11-18
华南理工大学广州学院
2013年11月18日
项目名称
单轴直立行走遥控车的研制
所在学院
汽车工程学院
起止时间
2013.3-2013.11
项目性质
□发明、设计 □基础性研究■应用性研究□社会调研
项目来源
■自主立题□教师指导选题
指导教师
姓名
职位/职称
联系电话
Email
翟伟良
15914375278
助理工程师
234598917@
学生情况
姓名
是否作为毕业设计(论文)或相关(填是、相关)
欧志兴
否
一、项目成果简介:(重点介绍特色及创新点,200字左右)
特色:
本设计是一台基于32位单片机控制的两轮直立行走的遥控车。通过角速度传感器与加速度传感配合,保持小车平衡;通过无线遥控模块控制小车前进、后退、左转、右转。该设计可填补了现在市场两轮直立行走平衡遥控车的空缺。
创新点:
1、通过使用LCD液晶屏幕可调节小车的站立、行驶速度,显示运行状态,采用MK10DN5127VLL10单片机作为小车的检测和控制的核心,稳定了硬件电路
2、采用直立平衡模块(enc陀螺仪、加速度计7361)控制小车两轮直立行走
3、使用PWM模拟控制小车的速度,从而实现自由控制电机的转速
4、通过无线遥控模块控制小车前进、后退、左转、右转
5、本次设计的两轮遥控小车,采用MK10DN5127VLL10单片机作为小车的检测和控制的核心,使硬件电路稳定,简单
二、项目研究中使用的具体材料:(含参阅的书籍和论文目录,使用的检索目录)
主控芯片一个(MK10DN5127VLL10)
无线遥控模块一个
直立平衡模块(enc陀螺仪、加速度计7361)
液晶显示器(LCD1602)
电机驱动模块
小车底板、贴片电阻、LM2940和LM1117稳压芯片
胆电容、电阻若干、三极管若干、电路板等
参考文献:
[1] 李全利,仲伟峰,徐军.单片机原理及应用.清华大学出版社,2009 。
[2] 王宜怀,吴瑾,蒋银珍.嵌入式系统原理与实践.电子工业出版社,2012。
[3] 谭浩强著.C程序设计.北京:清华大学出版社,2003。
[4] 范红刚,魏学海,任思璟.51单片机自学笔记.北京航天航空大学出版社,2009。
[5] 唐文初,邓宝清.汽车构造.华南理工大学出版社,2010。
[6] 邵贝贝.单片机嵌入式应用的在线开发方法 [M].北京.清华大学出版社.2004。
三、项目成果形式及数量:(需另行提供附件、电子版和模型演示光盘等)
1.□文献资料综述( )份;2.□调查报告 ( )份;3.□研究论文( )份;
4.□软件 ( 1 )份;5.□设计 ( )份;6.□硬件研制( 1 )份;
7.□获得专利 ( )份;8.□心得体会 ( )份;9.□实物模型( 1 )份;
10.□其他 ( )件,名称:
附件清单:
四、项目总结报告(以学术论文形式撰写,应包含项目实施过程中创新思维和创新实践方面收获,3000~4000字左右):
摘 要
本设计基于MK10DN5127VLL10单片机设计的两轮直立遥控小车,根据题目的具体要求,采用enc陀螺仪和加速度计7361控制小车两轮直立,采用模拟PWM控制小车的速度,使用普通无线遥控模块实行无线控制,由LCD1602液晶屏幕显示各项功能。最后,小车的运行过程由单片机编程来实现。
关键词:MK10DN5127VLL10,单轴两轮直立,遥控车,电机驱动模块,稳压
第一章 绪论
1.1引言
当今的中国经济蓬勃发展,市场也呈现出多样化。但是,据了解,遥控车的类型虽然很多,但是单轴两轮直立遥控车基本上没有。而本次设计的遥控小车,就是填补这一空缺,具有很高的经济效益。本小车采用的是MK10DN5127VLL10单片机作为小车的检测和控制的核心;采用enc陀螺仪和加速度计7361控制小车两轮直立,开机3秒待系统稳定后,小车便会处于直立状态,此时便可开始遥控小车;使用PWM模拟控制小车的速度,从而实现自由控制电机的转速;采用LM1117稳压模块给系统板供电;通过使用LCD1602液晶屏幕显示小车运行状态,通过按键可调节小车的站立,行驶速度等。本设计结构简单,较容易实现,具有稳定性强 、趣味性高,一定程度上满足那些热爱遥控,直立车的人群。
1.2项目名称和要求
项目名称:单轴直立行走遥控车的研制
项目要求:
(1)陀螺仪、加速度计站立模块的应用
(2)电机驱动芯片的应用
(3)无线遥控模块的应用
(4)编写程序及测试
第二章系统方案的论证
单轴两轮直立小车的设计由上位机控制电路和主控制车电路组成,实现用无线遥控器控制小车的前进、后退、左转、右转,自由控制电机的转速,下面列出一种比较简单实用的方案。
方案
遥控方面,目前采用一般的玩具车遥控器,利用单片机的普通IO口实现控制小车的前进、后退、左转、右转。电机调试采用PWM信号,如果采用定时器来产生PWM信号的话又需要占用一只定时器。站立模块采用enc陀螺仪、加速度计7361模块,该模块是采用陀螺仪的高速旋转的原理以及配合加速度计7361实现小车两轮平衡站立,由于一个陀螺仪不够稳定,所以这里采用两个陀螺仪,实现水平和竖直方向的控制。我们选取MK10DN5127VLL10作为主控制器,是因为该芯片功能强大,比较稳定,易于控制,而且本身自带四个触摸屏按键,一个稳压模块等。
主控制车电路采用MK10DN5127VLL10单片机为主控制器,enc陀螺仪、加速度计7361模块控制小车站立,CD4504芯片控制电机构成直流电机驱动,无线遥控模块控制小车。
站立模块
MK10DN5127VLL10
无线遥控模块
直流电机驱动
↓
主控制电路采用MK10DN5127VLL10单片机为主控制器,四个触摸式按键控制小车的各个状态,采用LM1117模块稳压给核心板供电,显示采用LCD1602液晶显示。
MK10DN5127VLL10
按键
LCD1602液晶屏
稳压模块
第三章元器件的选择
3.1单片机的选择
MK10DN5127VLL10/AD/PWM 系列单片机是超核科技生产32位的单片机,具有功能多/高速/低功耗/超强抗干扰的单片机,指令代码由Keil uVision4软件编写,方便、简洁。内部集成专用复位电路,稳压电路,电容式触摸按键,PWM,高速8、10、12位A/D转换以及诸多普通IO口等等,针对电机控制,强干扰场合。
3.2站立模块的选择
站立模块由enc陀螺仪、加速度计7361以及若干个电容、电阻等组成,该模块买回各个元器件,由自己焊接,经过反复的测试、调整,记录了大量的数据,最终选出了最稳定的数据。
3.3电机驱动芯片选型
电机驱动芯片选型选择的是MOS管,比较常见的是3脚封装的4905,内部包含3通道逻辑驱动电路。可以方便的驱动两个直流电机,或一个两相步进电机。
4905芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。
第四章电路设计
4.1主控制车电路
4.2 单片机最小系统
第五章硬件原理
5.1电机驱动
智能小车采用两轮驱动,单片机分别控制两个电机,选取电机驱动芯片4905,该芯片可驱动两路5-36v的直流电机或者一路四拍的步进电机。
5.2电源电路
由于小车驱动电源7.2v,而单片机正常工作电压为5v,无线模块的正常工作电压为3.3v,分别选用LM7805和UTC1117稳压芯片来提供电源。
LM7805电路:
UTC1117电路:
5.3显示电路
控制电路采用lcd1602作为显示屏幕
5.5按键电路
采用电容式触摸按键。
第六章 执行流程
按键按下、启动系统
程序初始化
中断初始化
锁相环初始化
AD转换初始化
定时器环初始化
端口初始化
PWM初始化
6秒延时待程序稳定
二力互补滤波
计算车体倾角
读取陀螺仪、加速度计、编码器脉冲值
计算直立PWM值
否
小车站立模式
是否接收到控制信号?
是
反馈给MCU
计算左右轮PWM值
计算电机转速
读取编码器脉冲
否
发送信号给遥控器
计算小车速度
速度过快?
小车可向左、向右、向前、向后自由行驶
是
停车保护
系统初始化
遥控器流程图:
接收信号
LCD实时显示速度
按下左按键
按下后退按键
按下前进按键
按下右按键
产生后退信号
产生前进信号
产生右转信号
产生左转信号
发送信号
按下按键上电运行,系统首先进入各初始化程序,初始化就是把变量赋为默认值,把控件设为默认状态,把没准备的准备好,包括锁相环初始化、AD转换初始化、定时器初始化、PWM初始化、端口初始化和中断初始化。
然后延时6s等待系统稳定,接着读取陀螺仪、加速度计初值。
程序设定了1ms中断函数,把直立控制、方向控制和速度控制都放在期间同时进行。当按下按键产生中断时,则分别读取陀螺仪、加速度计的AD值以及编码器的脉冲个数,然后通过二力互补滤波来进行陀螺仪和加速度计数据融合滤波,用一下公式angle +=P_enc*enc_anglespeed*5*0.2+ (1-P_enc)*(acc_angle-angle) 求取车体倾角,使小车站立;开始循环接收遥控器发送过来的信号,MCU根据接收到的信号,使用公式PWM_speed = (int)(e_speed_PWM_old + e_speed_PWM_D*(float)time/20)计算速度PWM实现速度监控;控制小车的左转、右转、前进、后退。小车还利用编码器读回来的脉冲,通过换算,可显示当前的车速,使用的公式为: road+=pluse/45.0*0.05; speed=road/time。再把结果发送给遥控器。若编码器读回来的速度过快,为保护小车不被撞坏,则让小车的电机停止转动。
待小车通电稳定后进入站立模式,则可使用遥控器操控小车。遥控器分为发射模块和接收模块,当按下按键时,发射模块发出一个对应的射频信号给小车,接收模块一直循环接收小车发送回来的信号,把信号结果显示在LCD上,实时显示车速。
第七章 部分程序代码
#include "gpio.h"
//函数名:GPIO_Init
//功 能:gpio初始化
//说 明:port io端口号 PTA,PTB,PTC,PTD,PTE
// index 引脚号 0-31,视芯片针脚数而定
// dir 输入输出控制0输入 1输出
// data 当设置为输出功能时 1输出高电平 0输出低电平
// 当设置为输入功能时 1上拉电阻 0下拉电阻
///////////////////////////////////
void GPIO_Init(GPIO_Type *port,int index,int dir,int data)
{
PORT_Type *p;
switch((u32)port)
{
case PTA_BASE:p=PORTA;SIM->SCGC5|=SIM_SCGC5_PORTA_MASK;break; //开启PORTA口使能时钟,在设置前首先开启使能时钟参见k10手册268页,
case PTB_BASE:p=PORTB;SIM->SCGC5|=SIM_SCGC5_PORTB_MASK;break; //开启PORTB口使能时钟
case PTC_BASE:p=PORTC;SIM->SCGC5|=SIM_SCGC5_PORTC_MASK;break; //开启PORTC口使能时钟
case PTD_BASE:p=PORTD;SIM->SCGC5|=SIM_SCGC5_PORTD_MASK;break; //开启PORTD口使能时钟
case PTE_BASE:p=PORTE;SIM->SCGC5|=SIM_SCGC5_PORTE_MASK;break; //开启PORTE口使能时钟
default : break;
}
p->PCR[index]&=~(PORT_PCR_MUX_MASK);
p->PCR[index]|=PORT_PCR_MUX(1); //配置PORT口的MUX位为GPIO模式,参见k10手册238页
if(dir==1) //设置为输出口
{
port->PDDR|=(1<<index); //配置PORTn口的第index引脚为输出,参见k10手册1484页
p->PCR[index]&=~(PORT_PCR_PE_MASK); //作为输出口时关闭该引脚的上下拉电阻功能,参见k10手册240页
if(data==1) //设置输出值,参见k10手册1482 页
port->PDOR|=(1<<index); //端口输出值为1
else
port->PDOR&=~(1<<index);//端口输出值为0
}
else//设置为输入口
{
port->PDDR&=~(1<<index);//配置PORTn口的第index引脚为输入,参见k10手册1484页
if(data==1) //上拉电阻,参见k10手册240页
p->PCR[index]|=PORT_PCR_PS_MASK;
else //下拉电阻,参见k10手册240页
p->PCR[index]&=~(PORT_PCR_PS_MASK);
p->PCR[index]|=PORT_PCR_PE_MASK;
}
}
#include "wdog.h"
//看门狗驱动文件
//特别注意:看门狗的每一次设置需要间隔一个复位周期
void WDOG_Init(void)
{
WDOG->UNLOCK=(u16)0xC520u;
WDOG->UNLOCK=(u16)0xD928u; //看门狗钥匙,参考k10手册504页。
//在这里大部分选择默认配置,时钟来源为bus clock即48mhz
WDOG->PRESC=(u16)0x0700u;//设置分频器,设置值为8,及不分频,参见手册506页
WDOG->TOVALH=(u16)0x0393u;
WDOG->TOVALL=(u16)0x8700u; //设置超时时间值,暂定为10s,时钟频率为6mhz,参考k10手册502页。
WDOG->STCTRLH|=(u16)0x0001u;//开启看门狗,参考k10手册501页。
}
#include "led.h"
//LED初始化
void LED_Init(void)
{
GPIO_Init(LED0_PORT,LED0_PIN,1,0);
GPIO_Init(LED1_PORT,LED1_PIN,1,0);
}
实践收获:
通过本次ARP项目的锻炼,增强了自己的动手操作,更让我们意识到了在实际上自身接受的理论电路知识十分缺陷,本以为焊接电路这些工作是非常容易,可是由于疏忽以及动作不规范等,导致芯片因受热温度过高,不能正常工作;而且对电路硬件也不够熟悉,需要每次、每个元器件都对照电路图,很耗时间。后来,通过反复的磨练,反复地看电路图,做到得心应手。本次设计的遥控小车,开始有好几个方案,但由于技术还不够成熟,总会出现这样或那样的问题,比如:加入PWM后两轮小车抖动非常厉害、控速方面不成熟有时会跑飞撞坏车身等等。后来,经过几个人的合作,一起想出最佳解决方法,完成了项目,令我感受到了团队的力量。经过SRP研究计划,使我们体会到自己的理论知识的欠缺以及实践经验的真空。
五、项目实施过程中存在的问题和建议:
存在问题:缺少实验室工作
缺少资金
建议: 1、成立SRP研究计划专门实验室,方便参与SRP的学生成员能更深入的沟通与合作,实验 室必须配备各类常用电子元件,方便学生实验研究。
2、成立SRP推进小组,负责SRP实验室的专门管理。
3、希望学校能加重对学生项目的关注,多支持,多赞助。
六、诚信承诺:
我承诺在SRP计划项目实施过程中遵守学校有关规定,恪守学术规范,本人在项目成果中除特别注明和引用外,均为本人观点,不存在剽窃、抄袭他人学术成果,伪造、篡改实验数据的情况。如有违规行为,我愿承担一切责任,接受学校的处理。
项目组成员签字:
年 月 日
七、自我评定:□优秀 ■良好 □中等 □合格 □不合格
指导教师
意见
该生在本项目中态度认真、积极,能根据需要查阅相关文献资料,能提出较合理的实施方案,能近期完成任务。
指导教师签名:
年 月 日
单位审核
意见
项目总评成绩:
□优秀 □良好 □中等 □合格 □不合格
单位盖章: 单位负责人签字:
年 月 日
13 / 13
展开阅读全文