2011年全国学生电子设计竞赛报告
智车
联系电话:
2011年X月X日
摘
系统采型号TMS320F2812DSP芯片设计两台智车系统硬件中央处理器传感采集电路车电机驱动电路等四部分组成传感器选避障功红外避障传感器检测黑白线功TCRT5000红外反射式接开关传感器车运行程中时检测行驶车道标志线跑道两侧边界线前方障碍实时信息传输DSP中央处理器中央处理器根控制算法发出控制指令控制车预定求运行实验测试结果表明系统满足赛题规定项指标求
关键词:DSPPWM智车红外避障
目 录
系统方案设计证 4
11方案较证 4
111直流电动机驱动 4
112 避障模块 4
113 黑白线检测模块 5
12信号检测控制方案 5
121电机信号控制程 5
122黑白线障碍信号检测控制 5
13系统算法误差分析 6
131直流电机步算法误差分析 6
132转弯角度算法误差分析 6
133预防车出轨算法误差分析 6
二 电路设计 6
三 系统软件设计 7
四 测试结果分析 8
41硬件测试结果分析 8
411车车体 8
412直流电机驱动 8
413黑白线检测模块 8
414红外壁障模块: 8
42软件测试结果分析 9
421单行模式 9
422超车模式 9
附件 10
附件1件模块 10
附件2电路设计 12
附件3车实体 13
附件4程序清单 14
系统方案设计证
结合直流电动机相良调速特性较功耗特性利DSP产生PWM波控制智车实现求智车采集中控制分散模块化设计智车硬件TMS320F2812开发板升压电源模块驱动模块红外检测模块黑白线检测模块组成智车采左右两电机驱动两电机间差速控制转智车前端3组反射式红外光电传感器黑白线检测模块黑线反馈信号通DSP芯片控制PWM输出控制电机速度转
11方案较证
111直流电动机驱动
直流电动机驱动采TI提供TMS320F2812芯片结合Mini红外避障传感器ST188黑白线检测传感器检测车运动轨迹产生占空调PWM波实现调速模块驱动车两直流电机够较实现车速度方控制
DSP4IO口输入信号A1 A2控制A电机输入信号B1B2控制B电机5V直流扩展输出传感器供电33V直流扩展输出DSP33V电压工作模块供电
112 避障模块
方案:采HCSR04 超声波测距传感器(图2示) 提供 2cm400cm 非接触式距离感测功 测距精度达高 3mm模块包括超声波发射器接收器控制电路
方案二:Mini 红外探测传感器(图3示)传感器环境光线适应力强精度高具红外线发射接收发射发射出定频率红外线检测方遇障碍物(反射面)时红外线反射回接收接收时指示灯亮起电路处理信号输出接口输出数字信号通电位器旋钮调节检测距离效距离3~35cm工作电压33V5V工作电压范围宽泛电源电压波动较情况稳定工作
方案三:红外避障传感器(图4) 种集发射接收体光电传感器检测距离根求进行调节该传感器具探测距离远受见光干扰价格便宜易装配方便等特点广泛应机器避障流水线计件等众场合45—5V供电380cm检测距离TTL电输出输出低电效前方障碍输出高电障碍输出口(黄色)电会高电变成低电背面图电位器调节障碍检测距离旦调节电位器(调节距离60cm)效距离(40cm处障碍物10cm处障碍物)输出低电低电刚DSP识
组讨红外避障传感器检测范围更加方便合适车障碍物检测环境适应力更强HCSR04 超声波测距模块成较高输出端口连接较复杂Mini 红外探测传感器抗干扰力该模块选择方案三
113 黑白线检测模块
方案:反射式红外光电传感器ST188(图5示)黑线检测测试中检测白色区域发射发射红外线没反射接收测量接收电压48检测黑色区域接收接收发射发射红外线电阻发生变化分电压发生变化测接收电压05
方案二:TCRT5000红外反射式接开关传感器(图6)实现寻迹壁障等功TCRT5000光电传感器模块基TCRT5000红外光电传感器设计款红外反射式光电开关传感器采高发射功率红外光电二极高灵敏度光电晶体组成输出信号施密特电路整形稳定
方案三:TK20黑白线检测传感器(图7)效探测距离达5cm通调节电位器远达10cm(该距离探测黑白线精度降低)款黑白线传感器继承TK10受见光干扰输出信号开关量信号处理简单非常方便
方案四:三片芯片片电压较器339N芯片电位器电阻干焊接三路黑白线检测电路板(图8示)完成边线转弯标志线检测工作电压33—5V间功耗次试验验证达检测求
分析较更实现该模块选方案二
12信号检测控制方案
智车采TI公司TMS320F2812芯片作控制核心通红外发射接收识车前判断否超车通黑白线检测模块识路径循迹利PWM技术控制两直流电机前进速度方硬件电路包括升压电路电机驱动电路检测电路模块化结构保证车成整体软件采C语言编程完成车实现务
TMS320F2812 DSPTI公司新推出功强32位定点DSPTMS320LF2407A升级版特点速度TMS320LF2407A质飞跃高40M跃升TMS320F2812150M处理数位数16位定点跃升32位定点亮点拥EVAEVB事件理器配套12位16通道AD数采集电机控制心应手加丰富外设接口CANSCI等工控领域占少份额
DSP单片机相数字运算方面功更强点DSP硬件法器法器做法运算时候会单片机千百倍
121电机信号控制程
通编程控制芯片TMS320F2812产生PWM发出驱动信号输出四路PWM作直流电机输入输出控制信号电机转动进带动车轮转动PWM输出占空控制直流电机转动快慢占空时转速高占空时转速低左轮转速右轮转速时车右转 右轮转速左轮转速时车左转车直行时量加PWM占空提高车运行速度直行道车左右边缘触黑线时适改变PWM占空控制左右两电机转速调整车方遇转弯标志线时根转弯角度控制PWM占空车转弯
122黑白线障碍信号检测控制
黑白线检测传感器检测黑线时车做出转弯起跑停止响应车左右两边黑白线检测传感器检测跑道两边边界线时做出调整车预定轨道行驶防止车跑出边界车头正方黑白线检测传感器车检测超车弯道标志线时车转弯车头方安装红外传感器车通红外传感器检测前方车时超车区做出超车响应
13系统算法误差分析
系统算法够较完成轨迹求会误差通车传感器反馈相应算法设计已减少系统误差转弯处转弯程度转弯时间求高产生误差源电机转速电源幅度关车转弯标志处时处轨道位置转弯幅度较确定素
面诉素引起种误差采取种方案减误差系统带稳定性
131直流电机步算法误差分析
相电压条件加系统摩擦两相直流电机存转速差异避免车直行测试测量发现车严格直线行走提高车性反复调节输入PWM波占空车够直行
132转弯角度算法误差分析
车检测前方转弯标志线时根弯做出转弯响应刚开始实验车转弯幅度时间总会车面行走产生种影响车更利转弯尝试种转弯时幅度转弯设定时间转弯够利测转弯角度约90°时间约5秒
133预防车出轨算法误差分析
车完全跑道行走防止车出跑道智车必须加入跑道边缘调整反馈算法车两测检测边缘时智车动调整保证车行走方车车身两边黑白线传感器检测跑道边缘时转弯标志线进行检测样会期结果算法加入智屏蔽检测功确保车跑道安全运行测试车动调节较灵敏
二 电路设计
电路设计见附件2
三 系统软件设计
开始
模式1车单行
模式2甲乙交超车
键弹起
键
模式1车单行
检测起点标志起跑
检测转弯标志转弯
检测终点标志停止
模式2车交超车
检测转弯标志转弯
检测起点标志起跑
检测超车标志
前方否车
直行
进入超车区超车
圈数计数否等4
结束
否
否
根题目求软件分两种模式车单行二车交领跑
设计思路:模式中检测标志线执行转弯程序时计数直达起跑终点标志线模式二中车运行分四种情况车直跑转弯直超车标志区转弯处然红外模块检测前方否车没话继续前行车话走超车区轨迹然达超车区标志线达初状态
系统程序见附录
四 测试结果分析
题目分工准备做模块中负责做车整体构架负责做车完成功需模块负责做软件编程仔细分工整系统相独立模块组成更方便搭建整系统构架分工协作长更快更解决调试程中出现种种问题更进行测试搭建1:1跑道反复进行测试调整
41硬件测试结果分析
411车车体
根题目求快速选购两辆履带式车组件进行组装分放置两相直流电机控制车运动方测试车摩擦系数良益车控制
412直流电机驱动
车够正常运行电机加直流电机驱动模块题目求准备电池盒通该模块直流电机进行供电通输入占空相等PWM波观察车运动方发现车严格走直线偏差反复调试确定组合适PWM信号车较直线运行测量两路PWM占空差约5左右
413黑白线检测模块
选性较TCRT5000红外反射式接开关传感器学法焊接进行测试发现该模块黑线检测效果车运行轨迹观察中发现检测盲点该模块电路测量排查发现问题紧接着环境进行检查发现该模块路面果物体距离灯头太话该模块会做出错误判断调整该模块高度已够稳定检测黑白信号佳检测距离测58mm
414红外壁障模块:
该模块检测超车区域前方否车做出超车响应刚开始时会漏测调节电位已够否车做出正确判断45—5V供电380cm检测距离调节检测距离约40cm
42软件测试结果分析
421单行模式
该模式快算法车体前部黑白线传感器检测转弯标志线然两侧黑白线传感器检测跑道边界防止车掉落实际运行结果出问题先转弯标志器检测求检测起始位置标志线直行转弯标志线转弯然车体两侧黑白线传感器车轨迹修正通设定反馈量调节车行走轨迹车体两侧传感器检测转弯标志线者起点终点标志线做出相应模式难点选择适合参数车动跑道行驶通程序算法反复修改测试述问题已较解决符合赛求
422超车模式
该模式车通红外壁障模块动调节稳定两车间间距防止发生碰撞超车区乙车超越甲车程中乙车转超车标志线进入超车区超越甲车领跑圈甲车超越乙车程中甲车转超车标志线进入超车区超越乙车领跑圈甲乙车交领跑四圈重新设定甲车起始位置(离起点标志线前进方40cm 范围意设定)甲乙两车四圈交领跑功
附件
附件1件模块
图1 直流电动机驱动模块
图2 HCSR04超声波测距传感器 图3 Mini红外探测传感器
图4 红外避障传感器 图5 反射式红外光电传感器st188
图6 TCRT5000红外反射式接开关传感器 图7 TK20黑白线检测
图8 三路黑白线检测电路板
附件2电路设计
图9 TMS320F2812系统图
图10 st188光电传感器电路图
附件3车实体片
图11 智车
附件4程序清单
void main(void)
{
InitSysCtrl() 初始化系统函数
memcpy(&secureRamFuncs_runstart &secureRamFuncs_loadstart (Uint32)&secureRamFuncs_loadsize)
InitFlash()
DINT
IER 0x0000 禁止CPU中断
IFR 0x0000 清CPU中断标志
InitPieCtrl() 初始化PIE控制寄存器
InitPieVectTable() 初始化PIE中断量表
InitGpio() 初始化Gpio口
InitEv()
while(1)
{
if(m11) 模式选择
deal_surpass()
else
deal_turn()
}
}
****************************************************************************
*
*名 称:InitSysCtrl()
*
*功 :该函数2812系统控制寄存器进行初始化
*
*入口参数:
*
*出口参数:
*
****************************************************************************
void InitSysCtrl(void)
{
Uint16 i
EALLOW
TMX产品够片RAM模块M0M1L0L1LH0够获性控制寄存器位
必须位设备硬件仿真寄存器TMXTI试验型产品
DevEmuRegsM0RAMDFT 0x0300
DevEmuRegsM1RAMDFT 0x0300
DevEmuRegsL0RAMDFT 0x0300
DevEmuRegsL1RAMDFT 0x0300
DevEmuRegsH0RAMDFT 0x0300
禁止门狗模块
SysCtrlRegsWDCR 0x0068
初始化PLL模块
SysCtrlRegsPLLCR 0xA 果外部晶振30MSYSCLKOUT30*102150MHz
延时PLL模块够完成初始化操作
for(i 0 i< 5000 i++){}
高速时钟预定标器低速时钟预定标器产生高速外设时钟HSPCLK低速外设时钟LSPCLK
SysCtrlRegsHISPCPall 0x0001 HSPCLK150275MHz
SysCtrlRegsLOSPCPall 0x0002 LSPCLK1504375MHz
工程中外设进行时钟例中EVA
SysCtrlRegsPCLKCRbitEVAENCLK1 EVA时钟
EDIS
}
****************************************************************************
*
*名 称:InitGpio()
*
*功 :初始化GpioGpio引脚处已知状态例确定功特定功
* 通IO果通IO输入输出等等
*
*入口参数:
*
*出口参数:
*
****************************************************************************
void InitGpio(void)
{
EALLOW
GPIO中PWM相关引脚设置PWM功
GpioMuxRegsGPAMUXbitPWM1_GPIOA01 设置PWM1引脚
GpioMuxRegsGPAMUXbitPWM2_GPIOA11 设置PWM2引脚
GpioMuxRegsGPAMUXbitPWM3_GPIOA21 设置PWM3引脚
GpioMuxRegsGPAMUXbitPWM4_GPIOA31 设置PWM4引脚
GpioMuxRegsGPBMUXbitPWM7_GPIOB00
GpioMuxRegsGPBMUXbitPWM8_GPIOB10
GpioMuxRegsGPBMUXbitPWM9_GPIOB20
GpioMuxRegsGPBMUXbitPWM10_GPIOB30
GpioMuxRegsGPBMUXbitPWM11_GPIOB40
GpioMuxRegsGPDMUXbitT1CTRIP_PDPA_GPIOD00
GpioMuxRegsGPDDIRbitGPIOD00
GpioMuxRegsGPADIRall0x00ff
GpioMuxRegsGPBDIRall0xff00
EDIS
}
****************************************************************************
*
*名 称:InitEv()
*
*功 :初始化EVA者EVB例中EVA产生PWM波形 全较单元死区时间427us
*入口参数:
*
*出口参数:
*
****************************************************************************
void InitEv(void)
{
EVA模块
EvaRegsT1CONbitTMODE2 连续增模式
EvaRegsT1CONbitTPS1 T1CLKHSPCLK2375M
EvaRegsT1CONbitTENABLE0 暂时禁止T1计数
EvaRegsT1CONbitTCLKS100 部时钟T1CLK
EvaRegsT1CONbitTECMPR1 定时器较操作
EvaRegsT1PR0x927B 1KHzPWM周期1ms
EvaRegsT1CMPR0x3A98 占空40低电效
EvaRegsT1CNT0
EvaRegsCOMCONAbitCENABLE1 较单元较操作
EvaRegsCOMCONAbitFCOMPOE1 全较输出PWM16引脚均相应较逻辑驱动
EvaRegsCOMCONAbitCLD2
死区时间:427us
EvaRegsDBTCONAbitDBT10 死区定时器周期m10
EvaRegsDBTCONAbitEDBT11 死区定时器1位
EvaRegsDBTCONAbitEDBT21 死区定时器2位
EvaRegsDBTCONAbitEDBT31 死区定时器3位
EvaRegsDBTCONAbitDBTPS4 死区定时器预定标子 Tdb375M16234M
EvaRegsACTRall0x0999 设定引脚PWM1PWM6动作属性
}
void delaym2(Uint32 k)
{
while(k>0)
{
k
if(flag11)
flag1
}
}
void delaym1(Uint32 k)
{
while(k)
{
if(flag11)
flag1
if(flag21||flag31)
break
}
}
void delay(Uint32 k)
{
while(k)
}
void ldelay(Uint32 k)
{
while(k>0)
{
EvaRegsCMPR10x668A PWM1占空70
EvaRegsCMPR20x8B29 PWM3占空95
EvaRegsT1CONbitTENABLE1 enable T1计数
k
delay(5000)
while((flag21)&&(count4))
{
EvaRegsCMPR10x668A PWM1占空70
EvaRegsCMPR20x9270 PWM3占空99
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym2(3000)
}
while((flag31)&&(count4))
{
EvaRegsCMPR10x9270 PWM1占空99
EvaRegsCMPR20x668A PWM3占空70
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym2(3000)
}
}
}
void deal_turn(void)
{
while(1)
{
while(flag11)
{
EvaRegsCMPR10x83D6 PWM1占空90
EvaRegsCMPR20x83D6 PWM3占空90
EvaRegsT1CONbitTENABLE1 enable T1计数
while(flag21)
{
EvaRegsCMPR10x668A PWM1占空70
EvaRegsCMPR20x9270 PWM3占空99
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym1(50000)
}
while(flag31)
{
EvaRegsCMPR10x9270 PWM1占空99
EvaRegsCMPR20x668A PWM3占空70
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym1(50000)
}
}
while(flag11||flag1)
{
count++
flag0
if(count1)
{
EvaRegsCMPR10x83D6 PWM1占空90
EvaRegsCMPR20x83D6 PWM3占空90
EvaRegsT1CONbitTENABLE1 enable T1计数
delay(550000)
}
else if(count2||count3||count5)
{
ldelay(6000)
}
else if(count4)
{
EvaRegsCMPR10x668A PWM1占空70
EvaRegsCMPR20x8B29 PWM3占空95
EvaRegsT1CONbitTENABLE1 enable T1计数
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
}
else
{
EvaRegsT1CONbitTENABLE0 enable T1计数
while(1)
}
}
}
}
车surpass处理函数
void deal_surpass()
{
while(1)
{
while(flag11)
{
EvaRegsCMPR10x83D6 PWM1占空90
EvaRegsCMPR20x83D6 PWM3占空90
EvaRegsT1CONbitTENABLE1 enable T1计数
while(flag21)
{
EvaRegsCMPR10x668A PWM1占空70
EvaRegsCMPR20x9270 PWM3占空99
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym1(50000)
}
while(flag31)
{
EvaRegsCMPR10x9270 PWM1占空99
EvaRegsCMPR20x668A PWM3占空70
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym1(50000)
}
}
while(flag11||flag1)
{
count++
flag0
if(count51)
{
EvaRegsCMPR10x83D6 PWM1占空90
EvaRegsCMPR20x83D6 PWM3占空90
EvaRegsT1CONbitTENABLE1 enable T1计数
delay(550000)
}
if((count52)||(count53))
{
ldelay(6100)
}
if(count54)
{
EvaRegsCMPR10x668A PWM1占空70
EvaRegsCMPR20x8B29 PWM3占空95
EvaRegsT1CONbitTENABLE1 enable T1计数
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
delay(5000000)
while(flag21)
{
EvaRegsCMPR10x7530 PWM1占空80
EvaRegsCMPR20x668A PWM3占空70
EvaRegsT1CONbitTENABLE1 enable T1计数
}
j0
while(j<100000)
{
EvaRegsCMPR10x83D6 PWM1占空90
EvaRegsCMPR20x83D6 PWM3占空90
EvaRegsT1CONbitTENABLE1 enable T1计数
while(flag21)
{
EvaRegsCMPR10x668A PWM1占空70
EvaRegsCMPR20x9270 PWM3占空99
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym1(50000)
}
while(flag31)
{
EvaRegsCMPR10x9270 PWM1占空99
EvaRegsCMPR20x668A PWM3占空70
EvaRegsT1CONbitTENABLE1 enable T1计数
delaym1(50000)
}
j++
}
EvaRegsT1CONbitTENABLE0 disable T1计数
while(1)
}
if(count50)
{
ldelay(6500)
}
}
}
}
参赛学生: 郭ming阳 韩 瑞 华 刘si庆
参赛学校: 山dong 科技 学
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档