2024年1月10日发(作者:名字男孩)
智能小车
1
学 校:江汉大学学 院:物信学院班级、姓名:
10通信 曹聪慧
10自二 彭洋
摘要:
本系统采用STC89C52作为主控制芯片,采用7805作为稳压芯片,采用L9110芯片作为直流电机驱动,在PWM控制下,小车自动寻路,快慢速行驶和转向。三者的结合使小车更加智能化,自动化,并用霍尔元件测速,用1602液晶把速度显示出来。电路结构简单,可靠性能高。
关键词:STC89C52单片机、PWM调速、自动循迹,测速
2
目 录
1.系统方案.............................................4
1.1 车体设计........................................4
1.2 控制器模块......................................4
1.3电机模块.........................................4
1.4电机驱动模块.....................................5
1.5测速模块........................................ 5
1.6电源模块.........................................5
1.7最终方案.........................................6
2.系统硬件设计.........................................7
2.1电源模块的设计.................................. 7
2.1控制模块的设计...................................6
2.1循迹模块的设计...................................6
2.1电机驱动模块的设计..............................7
2.1测速模块的设计...................................7
3.软件程序的设计.......................................10
3.1总体流程图 .......................................10
3.2软件大体思路...................................10
4.系统功能测试.........................................9
4.1 问题分析及解决..................................10
5.总结.........................................12
(附录)
3
系统方案
1.1 车体设计
自己制作电动车。一般的说来,自己制作的车体比较粗糙,性能不太稳定。但只要对车体仔细制作,通过优良的控制算法,也能实现控制小车前进转弯的功能。
1.2 控制器模块
采用STC公司的STC89C52单片机作为主控制器。STC89C52是一个低功耗,高性能的51内核的CMOS 8位单片机,片内含8k空间的可反复擦些1000次的Flash只读存储器,具有256 bytes的随机存取数据存储器(RAM),32个IO口,2个16位可编程定时计数器。且该系列的51单片机可以不用烧写器而直接用串口或并口就可以向单片机中下载程序。我们自己制作51最小系统板,体积很小,下载程序方便,放在车上不会占用太多的空间。
1.3电机模块
方案一:采用步进电机实现物体的精确定位和方向控制。步进电机可以作为一种控制用的特种电机,可以精确地控制角度和距离。缺点是相对体积较大,力矩比较小,容易失步,而且价格比较昂贵。
方案二:采用普通直流电机。直流电机运转平稳,精度有一定的保证。直流电机控制的精确度虽然没有步进电机那样高,但完全可以满足本题目的要求。通过单片机的PWM输出同样可以控制直流电机的旋转速度,实现电动车的速度控制。并且直流电机相对于步进电机 4
价格经济。
我们选择方案二,使用直流电机作为电动车的驱动电机。
1.4电机驱动模块
采用电机驱动芯片L9110。L9110 是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC
之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/CMOS。兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过750~800mA 的持续电流,峰值电流能力可达1.5~2.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。
1.5 测速模块
本系统中选用霍尔元件测速。如果把霍尔元件集成的开关按预定位置有规律地布置在物体上,当装在运动物体上的永磁体经过它时,可以从测量电路上测得脉冲信号。根据脉冲信号列可以传感出该运动物体的位移。若测出单位时间内发出的脉冲数,则可以确定其运动速度。
1.6电源模块
在本系统中,需要用到的电源有单片机的5V,7805芯片的电源5V和电机的电源7-15V。所以需要对电源的提供必须正确和稳定可靠。
5
方案一:用9V的锌电源给前、后轮电机供电,然后使用7805稳压管来把高电压稳成5V分别给单片机和电机驱动芯片供电。这种接法比较简单。
方案二:采用双电源。为了确保单片机控制部分和后轮电机驱动的部分的电压不会互相影响,要把单片机的供电和驱动电路分开来,即:用直流电12v供给单片机,后轮电机的电源用5V供电,这样有助于消除电机干扰,提高系统的稳定性。
基于以上分析,我们选择了方案一,采用7805芯片供电。
1.7最终方案
经过反复论证,我们最终确定了如下方案:
1车体用塑胶车架手工制作。
2采用STC公司的STC89C52单片机作为主控制器。
3电机采用直流电机。
4采用专用芯片L9110作为电机驱动芯片。
5采用7805供电。
6采用霍尔元件测速
6
系统硬件设计
2.1电源模块电路图为:
2.2控制模块电路图为:
2.3循迹模块电路图为:
7
2.4测速模块电路图为:
2.5电机驱动电路的设计
L9110 是为控制和驱动电机设计的两通道推挽式功率放大专用集成电路器件,将分立电路集成在单片IC 之中,使外围器件成本降低,整机可靠性提高。该芯片有两个TTL/CMOS。兼容电平的输入,具有良好的抗干扰性;两个输出端能直接驱动电机的正反向运动,它具有较大的电流驱动能力,每通道能通过750~800mA 的持续电流,峰值电流能力可达1.5~2.0A;同时它具有较低的输出饱和压降;内置的钳位二极管能释放感性负载的反向冲击电流,使它在驱动继电器、直流电机、步进电机或开关功率管的使用上安全可靠。
芯片引脚和功能如图1,驱动电路如图2。
序号符号 功能
1 OA A 路输出管脚
2 VCC 电源电压
3 VCC 电源电压
4 OB B 路输出管脚
5 GND 地线
6 IA A 路输入管脚
7 IB B 路输入管脚
8 GND 地线
8
图1 L298N的引脚和功能
图2 驱动电路图
9
软件程序的设计
3.1总体流程图
3.2软件大体思路
由于硬件的设计软件大体思路便定下来了。我们采用了三个红外对管加上D/A对黑线循迹的处理,小车没有舵机,前轮为单万向轮,因此我们用电机的速度差便可以转向。软件中再插入霍尔元件测速及在LCD上的显示。
三个红外对管便有八种情况,去掉中间是白线两边黑线的情况我们为软件量身定做了八种电机的转动情况以应对各种情况。
电机的控制则采用脉宽调节的方式,用PWM控制转速。
由于为了提高速度,我们保持直道高速行驶,必然导致大弯转不过来,因此程序中加上了对从跑到中甩出去的处理,做急转弯或者倒退,让黑线回到探头底下。
测速则采用中断计时的策略,对下降沿进行累计算出速度并且在LCD上显示出来。
程序源代码在后面的附录中。
10
系统功能测试
测试设备:特定跑道
4.1 问题分析及解决
硬件做好后,我们用软件对车子在特定跑到上进行调试。出现了以一些问题,弯道太急速度较快拐不过去,由于检测频率太高容易出现一些误判,循迹检测频率太小导致车体走较直的线两边摆动很明显,影响速度。
首先我们需要找到一种合适的循迹频率及转速保证车体可以“咬住”黑线。经过多次更改占空比以及循迹频率,最终定下了较好的值,能使走较直的线时车子比较平稳。
然后我们再对三个探头同时检测到白色时的情况进行处理,解决了这也就解决了过大弯以及找不到路径的处理。经过调试,最终解决了这个问题,在程序遇到这种情况前纪录下前一状态,遇到状态时做相应的校正处理,前一状态拐弯飞出去了就做急转弯寻找黑线,前一状态为直线飞出去了车子就做倒车处理,这样最终我们就解决各种问题。最终完成了这个设计。
11
总结
实验室是一个很培养人动手能力的地方,在这里同学们都十分努力也十分有创意,其中不乏很多很优秀的同学们。进入大学以来就一直想进入实验室好好锻炼一下自己。于是,我们通过一个多月的准备,我们两个一个做的是计算器,一个是做的也是一个很新颖的电子产品,但是我们知识储备还有动手能力还远远不足以在以后的专业领域立足,对于很多东西还不是很了解。因此在通过了实验室的选拔后,我们暑假期都义无反顾地留在了实验室里面,学习更多的知识。
在这一个月的时间里我们都自学了51单片机,并且也焊也调试了功率放大器等的电路,之后的小车制作对我们来说可以说是一个最大的挑战。我们两个先讨论了制作小车的方案和分工安排,一个是主要负责焊接电路,另外一个是负责软件的编写,之后再两个人一起来对小车进行调试。一般来说都是制定计划容易,实践计划难,正如上所说,在过程中我们遇到了一个又一个的难题。先是在最小系统的芯片和下面的电路连接不是很好上面有了一些问题,但是这个问题我们一开始并没有发现,在之后的电机模块和循迹模块上面的硬件方面有一点小问题,但是也是很快就找到了,不过一直隐藏的问题还没有解决,也一直贯穿在我们做小车的始终。液晶的模块焊上去以后,液晶时而显示时而不显示时而又是乱码,反反复复检查电路,还是找不到。有时我们看见电机可以转,液晶显示的也是好的就下去去调试,可是总是下去调了不久就又有了问题。在硬件方面我们也是纠结了很多天。重新焊了两次最小系统,后来也许是我们太急了,到后来把芯片 12
也烧了,但是我们最后还是冷静了下来,一步一步地把电路和程序调好了,车子也在参数一次一次的改动下跑的在稳中越来越快。看着一起努力的结果,心里面既有喜悦也有辛酸。
在这次的小车制作中,也让我们学到了很多的东西。首先,是学会团结,只有一个团队一起努力才能取得成功。再次,就是不能忽略掉任何小的细节,这次却是因为硬件的一些小问题走了很多的弯路。最后,是学会创新,我们在程序里面多加了很多对自己小车的想法,并付诸实践获得了成功。希望以后可以多动手做一些电子的作品,取得更大的进步。
江汉大学10通信
曹聪慧
2012-7-29
13
总结
首先祝贺我和我的队友圆满完成智能小车的项目!
在这我怀着无比开心的心情总结一下在实验室的学习。
来到实验室是很好的选择,特别是对于我们这个专业来说,不但能充实自己的业余时间,更可以充实自己自身!
我来到实验室正式学习已经一个月了,又想起当初义无反顾的想进实验室,我做出了多少努力,面对老师选拔时布置的任务,我非常认真的完成,最终才获得在实验室学习的这个机会。
在这一个月里,我依然没有因放假而太放松自我,自主学习了51单片机,对单片机以及控制原理有了进一步的了解,完成了实验室布置的自主学习51单片机的全部任务。而老师请人办的讲座以及讲座后的练习也让我们学到了好多理论和实践上的东西。最后做智能小车这一项目更是锻炼人,我们在做小车的时候遇到了无数问题,我敢说我们组碰到的问题是最多的,而解决让问题也让我们收获最大!我们不断的失败,不断的检测问题,想解决方案,并总结问题,让我们变得更强!
在实验室我学到了许多许多知识,培养了我的实践能力以及解决问题的能力,更好的理解了团队,曾强了自主学习的能力,更使我对我自己的专业有了更大的爱好!感谢实验室,感谢秦老师以及其他老师,感谢实验室的同学们,感谢我的团队!!
预祝我们实验室在此次省赛中取得好成绩!
14
彭洋
附录
源代码主要部分:
main()
{
lcd_init(); // 初始化LCD
delay(10);
EA=1;
TMOD=0x11;
TH0 = 0x4C;
TL0 = 0xD0;
TH1 = 0xfe;
TL1 = 0x83;
TR0=1;
ET0=1;
TR1=1;
ET1=1;
lcd_dis(3,0,":0.00m/s",8);
lcd_dis(3,1,":0.00m/s",8);
lcd_zdy1(dis1) ;
lcd_zdy2(dis2) ;
lcd_dis(8,0,"m/s",3);
lcd_disonechar(3,0,58);
lcd_disonechar(5,0,46);
lcd_disonechar(1,0,0);
lcd_disonechar(2,0,1);
lcd_dis(8,1,"m/s",3);
lcd_disonechar(3,1,58);
lcd_disonechar(5,1,46);
lcd_disonechar(1,1,2);
lcd_disonechar(2,1,3);
lcd_disonechar(1,0,0);
lcd_disonechar(2,0,1);
while(1)
{
xunji();
cesu();
}}
xunji()
{ P1=0xff;
switch(P1)
15
{ ca 0xfa: PWM1();a=0 ;break; //010直走
ca 0xfe: PWM7();a=1 ;break; //110微右偏
ca 0xfb: PWM6();a=2 ;break; //011微左偏
ca 0xfc: PWM3();a=1 ;break; //100右偏
ca 0xf9: PWM2();a=2 ;break; //001左偏
ca 0xf8: if(a==1) PWM5();if(a==2) PWM4();if(a==0) PWM8();break;
default: PWM1();break; }}
cesu()
{ if(c1==1)
f1=1;
el if(c1==0&&f1==1)
{
f1=0;
temp1++;
}
if(c2==1)
f2=1;
el if(c2==0&&f2==1)
{
f2=0;
temp2++;
}
if(m==20) //每秒脉冲数
{ v1=temp1*4;// 每次脉冲走4cm
v2=temp2*4;
m=0;
temp1=0;temp2=0; }
lcd_disonechar(4,0,v1/100+0x30);
lcd_disonechar(6,0,v1/10%10+0x30);
lcd_disonechar(7,0,v1%10+0x30);
lcd_disonechar(4,1,v2/100+0x30);
lcd_disonechar(6,1,v2/10%10+0x30);
lcd_disonechar(7,1,v2%10+0x30); }
void time1() interrupt 1
{
TH0=0x4c;
TL0=0xd0;
m++; }
void time2() interrupt 3
{ TH1 = 0xfd;
TL1 = 0x83; t++;}
16
本文发布于:2024-01-10 05:26:34,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1704835594134984.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:智能小车设计报告.doc
本文 PDF 下载地址:智能小车设计报告.pdf
留言与评论(共有 0 条评论) |