北邮智能车实习报告.docx
《北邮智能车实习报告.docx》由会员分享,可在线阅读,更多相关《北邮智能车实习报告.docx(15页珍藏版)》请在冰豆网上搜索。
北邮智能车实习报告
北京邮电大学实习报告
实习名称
电子工艺实习
学院
学生姓名
班级
学号
实习时间
实习地点
实
习
内
容
实习任务:
手工焊接技术的基本训练
简单的发光二极管交替闪烁电路的安装调试
智能小车的安装调试
实习进度安排:
9.1-9.3:
手工焊接技术的基本训练:
学习焊接相关知识,并通过大量练习熟练掌握手工焊接技术
9.4:
简单的发光二极管交替闪烁电路的焊接与调试
9.5:
完成智能小车的安装
9.6-9.10:
进行智能小车程序的编写与调试
9.11:
进行智能小车比赛,并总结实习过程,撰写实习报告
学生
实习
总结
(附页,不少于2000字)
见附页
实
习
成
绩
评
定
遵照实习大纲并根据以下三方面按五级分制(优秀、良好、中等、及格、不及格)综合评定成绩:
1、思想品德、实习态度、实习纪律等
2、技术业务考核、笔试、口试、实际操作等
3、实习报告、分析问题、解决问题的能力
实习评语:
实习成绩:
指导教师签名:
实习单位公章
年月日
学生实习总结
一、实习任务要求:
1、手工焊接技术的基本训练:
要求了解焊接用材料(焊料等)和焊接用工具(直热式电烙铁)的相关知识,熟悉二者的使用方法,并能够熟练掌握手工焊接技术,适当训练手工拆焊技术。
2、简单的发光二极管交替闪烁电路的安装调试:
能够根据相关电路图合理布线,焊接并完成简单的发光二极管交替闪烁电路。
3、智能小车的安装与调试:
要求能够实现定点停车,终点显示时间路程等功能。
2、手工焊接技术与的基本训练:
1、焊接工具和焊料:
焊接用工具:
电烙铁、吸锡器、烙铁架、尖嘴钳、剪刀、斜嘴钳、剥线钳、镊子、切刀等
焊接用材料:
焊料(铅锡焊料有熔点低、机械强度高、表面张力小、抗氧化性好的特点)
2、手工焊接步骤:
手工焊接的操作一般分五个步骤,称为手工焊五步操作法
步骤一:
准备施焊
左手拿焊丝,右手持电烙铁,电烙铁已经通电加热,可以随时施焊,并且要求烙铁头洁净无焊渣等氧化物,表面镀有一层焊锡。
步骤二:
加热焊件
将烙铁头放在被焊接的两焊件连接处,使两个焊件都与烙铁头相接触,同时加热两个焊件焊接面至一定温度,时间大约为1~2秒钟。
步骤三:
送入焊丝
焊件的焊接面被加热到一定温度时,焊锡丝从烙铁对面接触焊件,焊锡丝融化浸润两焊接面。
!
步骤四:
移开焊丝
当焊锡丝熔化一定的量,使焊接面布满液态焊锡后,立即向左上45°方向移开焊锡丝。
注意:
焊锡的量要适中,过量焊锡不但造成浪费,还增加了焊接时间,降低了工作速度,还容易造成焊点与焊点之间的短路。
而焊锡过少则焊件之间不能形成牢固结合,影响焊点的质量。
步骤五:
移开烙铁
焊锡丝移开后,融化的焊锡应同时也浸润焊件的施焊部位,此时应迅速将烙铁头贴刮着被焊接的焊件(元件引脚或导线)移离焊点,这样可以使焊点保持适当量的焊料。
从第三步开始到第五步结束,时间大约1~2s。
3、高质量的焊点特征:
可靠的电气连接、足够的机械强度、光洁整齐的外观。
三、简单的发光二极管交替闪烁电路的安装调测:
1、电路原理图如下图:
2、安装调试步骤:
A.根据电路规划焊接位置,合理布线。
先焊电阻再布线,最后焊其他元件。
B.实际安装焊接电路
C.仔细检查电路焊接情况,并根据电路原理图对整个电路的安装、连接关系进行检查,核对无误后,通电调试。
4、智能小车的安装与调试:
1、智能小车设计原理:
光电计数器
智能小车
计时器
→←
↓
定点停车,终点显示时间等路程等
测速等
↓
本组智能小车所用单片机型号为STC90C52RC。
单片机的计时器本质上是计数器,是对一个时间固定且已知的振荡源进行计数,通过计数值X振荡周期从而得出计时时长,相对而言是比较精确的。
通过此计时器即可得出小车的行驶时间。
单片机的光电计数器是利用单片机的两个外部中断,光电模块的脉冲触发中断来实现计数。
由光电模块测得的脉冲数可以求得车轮转动的圈数(圈数=脉冲数/20),通过公式求得车轮周长,即可得出求出小车的行驶路程(路程=周长*圈数)。
速度由一秒内的行驶路程得出。
定点停车是通过设定圈数来使小车停止,在程序里写一段选择语句即可实现。
而通过调节占空比来控制小车转速,使得小车有相同的速度,固定万向轮,即可实现直线行驶。
2、智能测速小车的安装调测:
以下为经过数次调试的最终程序代码:
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
#definet1
#definepi3.14
#definer0.03
ucharcodeseg_data[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//0~9的段码表,0x00为熄灭符
uchardatadisp_buf[7]={0x00,0x00,0x00,0x00,0x00,0x00,0x00};//显示缓冲区
sbitIN1=P1^3;
sbitIN2=P1^5;
sbitIN3=P1^2;
sbitIN4=P1^0;
sbitLED1=P2^6;
sbitLED2=P2^7;
sbitS1=P1^6;
sfrP4=0xe8;
sbitbeep=P4^4;
unsignedintcount=0;
unsignedinttime=0;
unsignedinttime1=0;
unsignedintRcount1=0,Rcount11=0,Rcount111=0;
unsignedintLcount1=0,Lcount11=0,Lcount111=0;
unsignedintdistance=0;
bitflag;
/********延时函数********/
voidDelay_ms(uintxms)//延时程序,xms是形式参数
{
uinti,j;
for(i=xms;i>0;i--)//i=xms,即延时xms,xms由实际参数传入一个值
for(j=115;j>0;j--);//此处分号不可少
}
/********显示函数********/
display1(count1)
{
P0=seg_data[count1%10];//显示毫秒位
P2=0xfe;//开个位显示(开第1只数码管)
Delay_ms(t);//延时10ms
P0=seg_data[(count1/10)%10];//显示毫秒百位
P2=0xfd;//开十位显示(开第2只数码管)
Delay_ms(t);
}
display2(count2)
{
P0=seg_data[count2%10];//显示秒位
P2=0xfb;//开个位显示(开第1只数码管)
Delay_ms(t);//延时10ms
P0=seg_data[(count2/10)%6];//显示秒十位
P2=0xf7;//开十位显示(开第2只数码管)
Delay_ms(t);
}
/*display3(count3)
{
P0=seg_data[count3%10];//显示分位
P2=0xef;//开个位显示(开第1只数码管)
Delay_ms(t);//延时10ms
P0=seg_data[(count3/10)%6];//显示分位
P2=0xdf;//开十位显示(开第2只数码管)
Delay_ms(t);
}*/
display4(uintd)
{
P0=seg_data[d%10];//计算脉冲数下面用此显示路程
P2=0x2f;
Delay_ms(t);
P0=seg_data[(d/10)%10];
P2=0x1f;
Delay_ms(t);
}
/*******显示速度函数******/
voidshowspeed()
{
display1(Rcount111/20*2*pi*r*100);//结果为右轮每秒转动的圈数
display4(Lcount111/20*2*pi*r*100);//结果为左轮每秒转动的圈数
}
/******显示路程函数******/
voidshowdistance()
{
display4(Rcount1/20*2*pi*r*10);
}
/*****外部中断函数*****/
voidtimer0()interrupt1
{
TH0=0xd8;
TL0=0xf0;
if(distance<5)
{
time++;
if(time==100)
{
time=0;
time1++;
Rcount111=Rcount1-Rcount11;//在过去1000ms中,右轮转的圈数(或脉冲数)
Lcount111=Lcount1-Lcount11;//在过去1000ms中,左轮转的圈数(或脉冲数)
Rcount11=Rcount1;//更新Rcount11
Lcount11=Lcount1;//更新Lcount11
}
}
}
/******外部中断(计光电模块脉冲数)********/
voidexint1()interrupt2
{
Rcount1++;//右轮转动圈数
}
voidexint0()interrupt0
{
Lcount1++;//左轮转动圈数
}
stop()
{
IN1=0;
IN2=0;
IN3=0;
IN4=0;
//Delay_ms(1000);
}
houtui()
{
IN1=1;
IN2=0;
IN3=0;
IN4=1;
}
qianjin()
{
IN1=0;
IN2=1;
IN3=1;
IN4=0;
}
/*********微调左转函数***********/
voidzuozhuan()
{
IN1=0;
IN2=1;
IN3=0;
IN4=0;
}
/**********微调右转函数***********/
voidyouzhuan()
{
IN1=0;
IN2=0;
IN3=1;
IN4=0;
}
//****************主程序******************//
voidmain()
{beep=0;
P0=0xff;
P2=0xff;
P1=0xff;
TMOD=0x01;//定时器T0方式1
EA=1;ET0=1;TR0=1;//开总中断,开定时器T0中断,启动定时器T0
IT1=1;EX1=1;IT0=1;EX0=1;
count=0;
while
(1)
{
LED1=0;
Delay_ms(t);
LED2=0;
Delay_ms(t);
display1(time);//显示秒表
display2(time1);
showdistance();
distance=Rcount1/20*2*3.14*0.03;
if(distance<5)
{
qianjin();
if(Rcount1>Lcount1)
{
youzhuan();
Delay_ms(15*t);
}
elseif(Rcount1{
zuozhuan();
//Delay_ms(5*t);
}
}
else
{
{
stop();
}
}
}
}
3、函数具体功能:
数码管显示函数:
定义4个显示函数来实现显示时间、行驶路程等功能。
其中display1()为在右边两块数码管显示毫秒数,display2()为在中间两块数码管显示秒数,display3()为显示分钟(但按要求并未显示),display4()为在左边两块数码管显示路程。
计时器:
单片机内部有T0,T1,T2三个定时器,我们采用T0作为定时器,在主函数内设置了TMOD=0x21;EA=1;ET0=1;TR0=0;定时时间为10ms,TH0=0xd8;TL0=0xf0;每过10ms,time加一,time的单位即是十毫秒,time每数100,time1加一。
即time1代表的是秒数。
(time/60为分钟数,根据要求,我们没有显示分钟数。
)
外部中断函数:
光电模块每挡光一次,发出一次脉冲,一个车轮有20个遮光处。
通过对脉冲计数,即可记录车轮转动的圈数。
此处需要用到单片机的外部中断,我们在主函数内设置了EA=1;IT1=1;EX1=1;IT0=1;EX0=1。
显示停车时间:
当行驶距离达到定点距离(5m)时,启动stop函数,小车停止,计时器停止,此时时间由左边四只数码管显示,精确至毫秒。
直线行驶:
通过左右微调函数进行调整。
若左轮转动圈数大于右轮,则启动微调左转函数,使小车左转进行调整。
反之亦然。
4、测试数据结果:
5米定点停车时间为10S左右
五、组内个人承担任务:
在本次电子工艺实习过程中,我与队友不断交流,齐心协力,最终圆满完成了任务。
两人的工作量基本上是相当的。
我个人在小车的安装过程、前期的程序架构讨论、后期的程序调试以及制作小车外壳等阶段承担了一部分工作,并主要撰写实习报告。
6、问题及解决:
1、开始时发现程序无法下载:
检查了焊接和元器件之后,我们最终发现导线的VCC接口与输入输出接口接错了。
2、编完微调程序发现小车还是无法直线行驶:
首先我们检查了车轮的安装情况,并固定了万向轮,后来发现作用不明显,于是修改了微调程序里的占空比,并根据实际行驶情况反复调整,最终基本保证能够实现直线行驶功能。
3、发现车头LED灯亮度不够:
经过检查发现是因为电压过低,改变相应电位参数,LED灯即可变亮
七、总结:
在本次电子工艺实习当中,我们通过实际操作熟练掌握了手工焊接技术,并在练习焊接过程中培养了自己的耐心和细心。
在智能小车的安装调试过程中,我们不断学习不断进步,学会使用一款以前从未接触过的软件,编写程序完成任务,并不断调试修正以求尽善尽美。
在制作最后的外壳时,我们根据图片自己动手设计裁剪卡纸,最终制作完成了漂亮的纸壳(照片见附录)。
在电子工艺实习这整个过程中,我们所学到的东西,所带来的满足与欣慰是不足为外人道的。
附录:
学习资料:
《MCS-51系列单片机应用系统设计》何立民编著北京航空航天大学出版社
《案例学单片机C语言开发》吴戈等著人民邮电出版社
”十天学会单片机“视频资料郭天祥讲解
智能车实物照片: