智能小车总结(材料)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“智能小车设计总结”。
第二届“飞思卡尔杯”智能小车
技术总结报告
队名:BIT 电气二队
队员:叶林瓒
李文楠
学院:信息科学技术学院
专业:电气工程与自动化
宣言:做到最好
2008-9-3
第二届“飞思卡尔杯”智能小车..................................................1 技术总结报告..............................................................................1 摘要..............................................................................................3 第一章:智能小车总体概况.....................................................3 1.1 概况.................................................................................3 2.总体结构如图....................................................................3 3.作品 智能小车如图...........................................................4 第二章 智能小车硬件系统设计...............................................5 2.1 控制核心DSP电路........................................................5 2.2 直流电机驱动模块.........................................................6 2.3 智能小车路径检测.........................................................8 第三章 智能小车软件设计.....................................................11 3.1算法描述........................................................................11 3.2主程序流程图................................................................12 3.3 程序清单.......................................................................14 四:总结与体会.......................................................................19 五:参考书目...........................................................................19
摘要
本智能小车采用飞思卡尔公司的56F8013VF DSP芯片作为控制核心,通过红外发射管和接收管识别路径,利用PWM技术控制直流电机的前进速度和方向,硬件电路基于提供的DSP开发板可靠完善,软件采用C语言编程简单明确,经反复调试安装,形成一完整作品,可满足大赛要求。
关键词:DSP 智能小车 路径识别 PWM控制技术
第一章:智能小车总体概况 1.1 概况
智能小车采用56F8013VF DSP开发板和一块通用板为基础,经焊接相关控制芯片而成,通过I/O口检测信号,输出PWM信号控制直流电机 前进 停止 左转 右转。检测信号则为三组红外发射和接收管,黑线时输出高电平,白线时输出低电平。
2.总体结构如图
3.作品 智能小车如图
第二章 智能小车硬件系统设计 2.1 控制核心DSP电路 如图
输出主要包括: 1.6通道PWM模块 2.串行通行接口(SPI)3.16位定时器 4.6通道12位ADC 5.26个GPIO 智能小车主要利用 PWM模块,定时器,GPIO口。
2.2 直流电机驱动模块
直流电机采用H桥控制方案 如图
通过采用L293D芯片可以达到目的,整体控制方案如图
电机有两个分别作为左右轮的驱动,而通过两路PWM输出即可控制一个电机,故共需4路PWM输出。
L293D芯片内部结构如图
真值表如下
当允许信号 ENABLE 为高时 输出才随输入变化,否则为高阻态,所以焊接时,ENABLE及VS均接VCC。具体控制过程为:
1.通过编程由控制芯片8013经PWM发出驱动信号,PWM输出作为L293D的输入,经L293转换输出控制信号使电机转动,进而带动车轮转动,使小车前进后退。2.PWM输出信号的高低则可以控制直流电机转动的快慢,当占空比大时,转速高,占空比小时,转速低,所以当PWM输出占空比为0时可控制电机停止。
3.当左轮停止,右轮转时,小车右转。当右轮停止,左轮转动时,小车左转。而两路PWM输出的正负顺序转换则可控制电机的正反转,进而控制小车的前进和后退。2.3 智能小车路径检测 1.路径检测原理
路径检测采用红外光电传感器,包括白色的发射管和黑色的接收管。如图
根据不同颜色对红外光的反射率不同,白色很高,黑色很低。所以当发射管发出红外光线经白色线时,觉大部分都被黑色管接收,处于导通状态,输出低电平,而红外光经黑色线时,接收不足,黑色管无法导通,输出高电平。输出的高低电平经GPIO口接入8013DSP中,通过一定的算法即可判断,从而输出控制信号,控制小车的路径。2.红外传感器电路如图
a.红外发射管为二级管,接收为三极管,当接收三级管导通时集电极输出低电平,断开时集电极输出高电平。b.如图所示,接收管集电极输出接入比较器339正极,比较器负极则为滑动变阻器的输出,当正极高于负极时,比较器输出5V高电平,否则为0V低电平
c.比较器输出则接入8013DSP的GPIO口,通过读GPIO口的状态即可判断是黑线或白线
d.光电传感器都接限流电阻,比较器输出接上拉电阻。3.检测算法规划
根据比赛要求采用三组红外光电传感器即可,排列如图
a.小车前两组用于辨识黑色线,使小车能沿着黑色线前进,且两组宽度要恰好,太窄则同时感应到黑线或白区域,算法不好控制小车能沿着黑色线行走,即易偏离轨迹。太宽则令小车容易成大S型行走,影响前进速度。
当左组光电传感器检测到黑色线时,小车右转,当右组光电传感器检测到黑色线时,小车左转,否则小车前进,这样即可保证小车能沿着既定的轨迹前进而不篇路。b.第三组位于小车左中间电路板外侧,用于判断黑色线十字交叉口,控制小车的停止,左转或右转,亦可判断小车前进了几个方格。
第三章 智能小车软件设计
软件编程采用 codewarrior软件在线编程,C语言模式,通过添加相关“豆子” 简单方便。3.1算法描述
预赛主要通过定时器定时扫描,GPIO口读入黑白线判断,从PWM口输出驱动信号驱动电机。具体如下 a.定时器定时10ms,中断
b.中断程序读入,三个GPIO口数据,value1,value2,value3,其中value3为底盘左侧信号,为停止转弯信号,value1,value2使小车直走。
c.如果读入value3大于0,则为停止信号,PWM输出0信号小车停止,定时10秒。否则若value1大于0,则小车右转,输出PWM信号控制小车右转,否则若value2大于0,则小车左转,输出PWM信号控制小车左转。否则为直线前进,两边输出PWM信号,使小车全速前进。d.决赛阶段考虑到两车PK,小车前进速度优先,故编程时会让小车一直走直线,但我们会在小车前进前方设置干扰装置,破坏对方,除定时停止外,程序基本不变。
3.2主程序流程图
定时器流程图
3.3 程序清单 主程序:
/**
#### **
Filename : xiaoche1.C **
Project
: xiaoche1 **
Proceor : 56F8013VFAE **
Version
: Driver 01.09 **
Compiler : Metrowerks DSP C Compiler **
Date/Time : 2008-8-28, 12:22 **
Abstract : **
Main module.**
Here is to be placed user's code.**
Settings : **
Contents : **
No public methods ** **
(c)Copyright UNIS, spol.s r.o.1997-2004 **
UNIS, spol.s r.o.**
Jundrovska 33 **
624 00 Brno **
Czech Republic **
http
: www.daodoc.com **
: info@proceorexpert.com **
####*/ /* MODULE xiaoche1 */
/* Including used modules for compiling procedure */ #include “Cpu.h” #include “Events.h” #include “PWMC1.h” #include “Bits1.h” #include “Bits2.h” #include “Bits3.h” #include “TI1.h” #include “PC_M1.h” #include “Inhr1.h” /* Include shared modules, which are used for whole project */ #include “PE_Types.h” #include “PE_Error.h” #include “PE_Const.h” #include “IO_Map.h”
void main(void){
/*** Proceor Expert internal initialization.DON'T REMOVE THIS CODE!!***/
PE_low_level_init();
/*** ***/ /* Write your code here */ PWMC1_Enable();PWMC1_OutputPadEnable();for(;;){;
} } /* END xiaoche1 */ /* ** End of
Proceor
Expert
internal
initialization.中断程序:
#pragma interrupt called /* Comment this line if the appropriate 'Interrupt preserve registers' property */
/* is set to 'yes'(#pragma interrupt saveall is generated before the ISR)
*/ int value1=0;int value2=0;int value3=0;int time=0;void TI1_OnInterrupt(void){value1=Bits1_GetVal();
//left value2=Bits2_GetVal();
//right value3=Bits3_GetVal();
//centen if(value3>0&&time
//stop
{ PWMC1_SetDutyPercent(0,0);PWMC1_SetDutyPercent(1,0);PWMC1_SetDutyPercent(2,0);
PWMC1_SetDutyPercent(3,0);
time++;
//stop
}
else if(value1>0)
//turn right
{PWMC1_SetDutyPercent(0,0);PWMC1_SetDutyPercent(1,0);PWMC1_SetDutyPercent(2,0);
PWMC1_SetDutyPercent(3,100);
}
10s
else if(value2>0)
//turn left
{PWMC1_SetDutyPercent(0,100);PWMC1_SetDutyPercent(1,0);PWMC1_SetDutyPercent(2,0);
PWMC1_SetDutyPercent(3,0);
}
else
//go
{PWMC1_SetDutyPercent(0,100);PWMC1_SetDutyPercent(1,0);PWMC1_SetDutyPercent(2,0);
PWMC1_SetDutyPercent(3,100);
} /* Write your code here...*/ } /* END Events */
四:总结与体会 经过两周左右的时间,我们终于完成了小车的制作和程序的编写。制作过程中,我们克服了许多困难,通过参考前人的经验,完成了小车主体的器件分布规划和焊接。期间出现了很多错误,但都被及时发现并纠正了。从中我们体会到前期规划的重要性,在焊之前考虑一下器件的焊接顺序和可能出现的问题,这样在焊的时候才会比较流畅,布线也比较清楚,查错也很容易。
编程是整个小车制作的重点,我们通过对小车电路、比赛规则、外部环境等情况的研究,编写出了相应的程序,经过几次调试最终完成了比赛用程序。通过编写程序,我们感到了DSP的功能的确很强大而且程序编写也不是很麻烦。
对于这次比赛,很感谢学校和Freescale公司给了我们参与这次比赛的机会,也很感谢实验室的学长的帮助,通过实际操作加深了我们对理论知识的理解和运用能力,相信我们的努力能使我们取得好的成绩。
五:参考书目
1.Free scale DSP实验指导书
2.DSP原理及开发技术
清华大学出版社 东雷著