自平衡载物小车林浩淼.docx
《自平衡载物小车林浩淼.docx》由会员分享,可在线阅读,更多相关《自平衡载物小车林浩淼.docx(17页珍藏版)》请在冰点文库上搜索。
自平衡载物小车林浩淼
智能控制设计大赛
自平衡小车
所在单位:
华南理工大学
电子与信息学院
作者:
林浩淼微电子技术08
翁锦深信息工程08
李勇明微电子技术08
自平衡小车论文
一、设计任务与要求
1、设计任务
制作一载物小车,车上放一平板,平板倾角可以调节(前后倾角),长10cm,宽5cm。
板上放一元硬币,平板上表面要求视觉平整,并且贴标准透明宽胶布(评审现场将由工作人员对小车上表面重新贴一遍),周围不得加设围栏。
小车载物从始点由黑线指引经特制道路到达终点。
物体每掉落一次,时间加5s。
从掉落处重新出发(若从上坡处掉落从坡底出发),与前段耗时累积。
要求时间尽量短。
(道路中间有若干坡道。
道路长5m宽50cm,小车长度小于15cm,宽度小于10cm,坡度小于40度。
道路不一定为直线,超点和终点各有一与道路成十字交叉的黑线,线长20cm,宽2cm。
)
2、设计要求
2.1基本要求:
1)车上安装平板可根据路面自动调节角度。
2)小车可根据黑线指引识别道路。
3)小车载物完成任务总耗时不超过25s。
4)计时规则:
t(总耗时)=t(基本耗时)+n*5。
时间要求尽量快。
t(基本耗时)为不考虑罚时和物品掉落后延误时间的小车从始点到终点的运动时间。
n为小车从始点到终点运动过程中物品掉落次数。
二、方案论证与比较
1、电源模块
电源供电部分关系到整个系统工作的稳定性,由于采用的是镍镉电池供电,内阻比较大,电机启动或者突然加速的瞬间,电池输出的电流很大,电池两端电压突然会降低。
为了保证单片机和其他模块工作正常,所以在对电源供电的设计方面,要求电路工作效率高,输出电压稳定。
而且随着车子在跑道上跑,随着电池电量的消耗,电池两端的电压也会慢慢降低,这就要求稳压芯片的选取要工作压差小。
本系统所需电压有5V、12V。
其中12V是电机驱动电压,可由电池直接提供。
根据不同的工作原理可将电源分成两类:
线性稳压电源、开关稳压电源。
线性稳压电源:
一般的线性稳压电源的输入电压与输出电压之间的电压差大,稳压电源内部的调整管上的损耗大,效率低。
但近年来开发出各种低压差(LDO)的新型线性稳压器IC,效率也有较大的提高,线性稳压电源还有一个优点就是外围元件最少、输出噪声最小、静态电流最小,价格也便宜。
开关稳压电源:
开关稳压电源中有一个工作在开关状态的晶体管(一般是MOSFET),故称为开关电源开关管工作于饱和导通及截止两种状态,所以开关管管耗小并且与输入电压大小无关,相对于线性稳压电源一个明显的优点是工作效率高,一般可达80~95%。
5V部分:
主要用于单片机供电.红外管和驱动电路的逻辑门供电。
芯片选择:
方案一:
普通常用稳压芯片LM7805。
优点:
价格便宜。
缺点:
效率低,发热量大。
压差大,外部供电要在7.5V以上才可以稳定稳压到5V
方案二:
低压差线性稳压芯片LM2940。
优点:
低压差,工作压差可以小于0.5V,在电池两端的电压降到5.5V还能稳定地输出5V的电压,电压波纹小,可以给单片机稳定的供电。
外围电路简单,需要的滤波电容小。
考虑到小车以简易和廉价为主,我们选择了方案一。
2、电机驱动模块
因为单片机输出的是TTL电平,输出的电路非常小,不能驱动电机运转,因此需要驱动电路和单片机连接才能使电机运转。
方案选择:
方案一:
采用集成电机驱动芯片MC33886。
优点:
外围电路简单,可以实现全桥驱动;缺点:
发热量大,价格昂贵,驱动电流不够大。
方案二:
采用三极管放大电流驱动电机。
优点:
价格便宜,电路简单;缺点:
电路不稳定,电流不够大。
方案三:
采用集成芯片驱动芯片L298。
价格比方案一便宜,电路稳定,可以支持双电机驱动,符合小车设计的双电机运动方案,可以支持电机正反转。
综上所述,我们选择方案三来做驱动电路。
3、光电传感器模块
路径识别模块是智能车系统的关键模块之一,路径识别方案的好坏,直接关系到最终性能的优劣。
传感器的收发距离对于车子的前瞻性有着直接的影响。
大多数采用的传感器都是红外传感器,说明相对于超声波传感器等其他类型的传感器还是有一定优势的,所以我们重点放在红外传感器的设计和测试。
对于红外对管的选取和电路设计,我们作了几个方案论证。
方案一:
通过38K载波发射和一体接收头接收。
优点:
发射距离远,抗干扰能力强;缺点:
接收方向范围过大(大于135度),不利于对道路黑线位置检测,硬件软件较复杂。
方案二:
一体化发射/接收管。
优点:
硬件电路简单,方便;缺点:
可以收发距离太近。
方案三:
二极管形式发射接收管。
优点:
发射功率大,距离比一体化发射/接收管稍远;缺点:
硬件电路稍复杂。
最后经过分析比较,我们采用第二种方案。
具体设计说明在第三章硬件结构设计有详细说明。
4、控制模块
控制芯片采用当前应用广泛的51单片机,价格便宜,电路相对简单,容易编程,我们对51的技术相当熟练。
因此用51单片机来出来光电传感器传回来的信息,再通过程序对电机的运转作相应的处理。
5、平衡模块
为了实现这个功能,我们从两个大的方面进行了论证思考:
首先是可以通过电路控制平衡,主要是通过光电对射管等来判断板是否偏离,是的话通过单片机及马达等进行角度控制。
其次是直接利用机械方式控制平衡。
考虑到电路控制不仅电路设计复杂,可行性不高,而且所需投资较大。
为了让小车更简洁,性价比更高,我们采用了机械控制方式。
方案一:
如图,制作一个小容器,在小容器中部固定那块矩形小木板,然后在容器中加水,让木板刚好处于水面上,这样不管容器如何倾斜,其水面都保持水平状态,再利用水对木板的浮力,因而木板也始终保持水平状态,所以木板上的物体也不会滑落下来。
方案二:
如图,直接利用跷跷板模型进行平衡控制,即在小车上面设置一个支点,再直接把木板中间部分架到支点上面,利用等臂杠杆原理,板两边对中间支点的力矩大小相等L1=L2,力(重力)相等F1=F2,即F1*L1=F2*L2,则木板保持平衡状态,所以只要将物体放到木板的正中间,则能保持板始终处于水平。
方案三:
将一根硬铁丝折成图
(1)形状,然后按图
(2)所示方式将木板中部架设到铁丝凹下部分并固定,最后在小车的两边固定两个支柱,将图
(2)连好的装置按图(3)所示方式放好,即将架设点A和架设点B分别架到两根支柱上。
这样,一个简单的平衡装置便完成。
无论车怎么爬坡下坡,只要物体摆在木板中间,是木板左右重力平衡时,木板会一直处于水平位置
通过三个方案比较,我们发现,第一、二个方案可行性不高,因此我们选择第三个方案做为我们的平衡装置。
三、硬件系统的设计与实现
1、系统的总框图
2、小车机械结构设计
整车采用三轮机构,两个后轮和前面一个万向轮。
两个后轮各由一个电机驱动作为主动轮,万向轮是从动轮。
结构简单,由一块纸压板和三个轮子构成。
光感电路板架在车的地盘,控制电路板放在车纸压板的正面。
具体结构如下图所示:
小车机械结构仰视图
3、小车的电路设计
3.1小车硬件系统结构图
3.2电源供电电路
电源供电部分关系到整个系统工作的稳定。
由于采用的是电池供电,为了更好地提高工作效率,和稳定的电压输出,我们设计两路7805供电,输出5V用于单片机和光电传感部分。
12V输入直接接到直流电机上。
(如图3.2)
图3.2电源供电电路部分
3.3电机驱动部分电路
采用电机驱动专用芯片L298,内部集成双H桥,放大电流5A左右,足够驱动电机运转。
L298带使能控制端,通过程序设置可以使电机正转反转。
芯片带四路信号输入,每两路各控制一个电机。
四个输出端,每两路输出端接一个电机。
具体电路图如图3.4
图3.3L298接口电路
3.4单片机控制部分电路
控制芯片是8位的51单片机,内部ROM4K,足够存储程序。
晶振是11.0592M,P0口采集光电传感器信号。
P1^0---P1^5输出控制电机运转。
具体电路连接如图3.4所示。
图3.4单片机控制电路部分
3.5光电传感器部分电路
传感器由4对发射接收管组成,发射管发出红外线,白色底对红外线的反射量明显大于黑色线的反射量。
根据黑白色的反射量不同的原理,可以判断出黑线所在的位置,起到沿黑线走的作用。
接收管的电阻会随着红外线的反射量增多而电阻减小。
电路通过L324电压比较器其来比较接收管电压和预定电压的值。
具体用法可以参考LM324的datesheet.八个光感电路连接之一如图3.5所示。
图3.5光电传输部分电路
3.6平板平很部分
板与支点的接触巧妙的转化到了铁丝上面(图(3)中的架设点A和B)。
3.7整板电路硬件设计原理图
四、软件系统的设计与实现
在整个设计过程中,采用80C51单片机作为作为控制的核心,软硬件相结合,单片机的工作频率是12M。
本次制作主要用到单片机I/O口模块,P0口收集黑线信息,P2口控制电机的运转;串口通信模块用来下载程序。
4.1I/O口程序设计
(1)//对各个输入控制端位声明
sbitena=P1^0;
sbitenb=P1^1;
sbitin1=P1^2;
sbitin2=P1^3;
sbitin3=P1^4;
sbitin4=P1^5;
sbitinf=P3^2;
(2)主程序中用到的I/O口
if(P0==0x08)//如果第四盏灯对准黑线,小车开始运转
{
loop:
in1=1;
in2=0;
in3=1;
in4=0;
while
(1)
{
if(P0!
=0x08)//当小车偏离黑线,开始处理
{
if(P0==0x10||P0==0x20||P0==0x40||P0==0x80)//如果小车往右边偏转,右轮不动,左轮动,直到小车回到中央{
in1=0;
while
(1)
{
if(P0==0x08)
{
in1=1;
gotoloop;
}
}
}
if(P0==0x04||P0==0x02||P0==0x01)//如果小车往左边偏转,左轮不动,右轮动,直到小车回到中央
{
in3=0;
while
(1)
{
if(P0==0x08)
{
in3=1;
gotoloop;
}
}
}
}
}
}
4、2小车的控制程序
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitena=P1^0;
sbitenb=P1^1;
sbitin1=P1^2;
sbitin2=P1^3;
sbitin3=P1^4;
sbitin4=P1^5;
sbitinf=P3^2;
/************************************************************
延迟程序
**************************************************************/
voiddelay(uinti)
{
uintx,y;
for(x=i;x>0;x--)
for(y=110;y>0;y--);
}
/***************************************************************
主程序
************************************************************/
voidmain()
{
while
(1)
{
if(P0==0x08)//如果第四盏灯对准黑线,小车开始运转
{
loop:
in1=1;
in2=0;
in3=1;
in4=0;
while
(1)
{
if(P0!
=0x08)//当小车偏离黑线,开始处理
{
if(P0==0x10||P0==0x20||P0==0x40||P0==0x80)//如果小车往右边偏转,右轮不动,左轮动,直到小车回到中央
{
in1=0;
while
(1)
{
if(P0==0x08)
{
in1=1;
gotoloop;
}
}
}
if(P0==0x04||P0==0x02||P0==0x01)//如果小车往左边偏转,左轮不动,右轮动,直到小车回到中央
{
in3=0;
while
(1)
{
if(P0==0x08)
{
in3=1;
gotoloop;
}
}
}
}
}
}
}
}
参考资料
(1)《C程序设计完全手册》求是科技编著人民邮电出版社2006.4第一版于北京
(2)《单片机原理及应用教程》第2版赵全利机械工业出版社
(3)《C程序设计》谭浩强著第三版清华大学出版社
(4)《PROTELDXP应用实例》人民邮电出版社2003版于北京