生工单片机课程设计报告.docx
- 文档编号:26483662
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:25
- 大小:597.78KB
生工单片机课程设计报告.docx
《生工单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《生工单片机课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
生工单片机课程设计报告
课程设计报告
课程名称:
单片机原理及接口技术
课题题目:
智能循迹小车
专业:
生物医学工程
姓名:
学号:
指导教师:
目录
第1章前言3
第2章智能循迹小车的硬件设计4
第3章硬件电路制作及调试11
第4章智能小车的软件设计12
第5章软硬件联合调试14
第6章总结15
致谢15
附录智能循迹小车程序15
第1章
前言
1.1智能循迹小车设计背景
随着控制技术及计算机技术的发展,智能车系统将在未来工业生产和日常生活中扮演重要的角色,是以后的发展方向。
智能小车的巡线功能在生产生活中都有着广泛的用途。
例如:
可以用在大的生产车间的物流系统中,按照预先设定的路线来传输货物;可以用在赛车比赛中能够按照轨道行驶,从而更加安全;还可以用在导航系统中等等。
国内高校间年年举办的机器人大赛大多选择以小车为载体来实现特定功能,小车这种简单而又常见的玩具得到了越来越多的应用。
随着大学期间知识的积累,所学的东西完全可以在程控小车这个项目上得到实现。
本次设计的简易智能小车采用STC12C5A60S2单片机为小车的检测和控制核心,辅以L298等器件构成的外围电路能够实现对直流电机的控制。
在此基础上安装红外对管组成的探测系统,可以把反馈的信号送入单片机,然后把编程语言的导入,及多次的调试,使单片机按照预定的工作模式控制小车沿着设置的黑线行驶,便完成了循迹的功能。
本设计结构简单,较容易实现,一定程度上体现了智能化。
而智能化医疗仪器更是现代科技发展的趋势。
这次智能循迹小车的设计也为本专业的学生将来进行医疗仪器设计打下一定基础。
1.2智能循迹小车设计目的及意义
利用电路绘制软件、电路板焊接技术制作硬件电路,及编程软件Uvison4设计控制程序,掌握智能循迹小车的设计。
从而初步了解智能化医疗仪器的设计思路和所需掌握的硬件、软件设计的基本实践技能。
1.3智能循迹小车设计要求
在老师所发的小车模型(包含:
单片机最小系统模块1块(含LM298电机驱动模块)、车轮+轴连器2套、底盘1个、电机2个)的基础上,制作红外检测电路,编程并导入单片机,控制小车沿着设置的黑线快速平稳行走,便实现智能循迹功能。
第2章
智能循迹小车的硬件设计
2.1系统分析
2.1.1红外传感器模块分析
方案的论证与实现该智能小车在画有黑线的白纸“路面”上行驶由于黑线和白纸对光线的反射系数不同,可根据接收到的反射光的强弱来判断“道路”——黑线.判断信号可通过单片机控制驱动模块修正前进方向,以使其保持沿着黑线行进。
所用的黑线宽度大约为2cm,判断黑线的方案采用红外反对管作为传感器。
传感器电路方案:
3个传感器:
中间一个在车轮前方,左右两边各一,略低于中间的,距离较大,向左或向右转圈。
由于转弯的速度过大等原因,中间传感器几乎不起作用,若距离过小,则直走时会左右摇摆,行进速度很慢。
5个传感器:
各传感器之间距离水平距离均小于黑线宽带。
但两边的距离略低于中间的,打转,或仅有右半部分传感器起作用,布线也较复杂。
4个传感器:
中间两个传感器在万向轮两侧,且距离略大于黑线距离,方便直走,较大速度下也不容易打转,最左和最右的传感器与其相邻传感器距离略小于和等于黑线距离。
四个红外对管并排放置于小车的前部进行线路跟踪,电开关脱离轨道时,等待外面任意一只检测到黑线后,做出相应的转向调整,直到没有光电开关重新检测到黑线(即回到轨道)再恢复正向行驶。
本设计采用4个传感器的方案。
电路图见2.9传感器电路原理图
2.1.2L298N电机驱动模块分析
L298N是ST公司生产的一种高电压、大电流电机驱动芯片。
该芯片采用15脚封装。
主要特点是:
工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A;额定功率25W。
内含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载;采用标准逻辑电平信号控制;具有两个使能控制端,在不受输入信号影响的情况下允许或禁止器件工作有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作;可以外接检测电阻,将变化量反馈给控制电路。
使用L298N芯片驱动电机,该芯片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
L298N的技术参数:
一、尺寸:
80mmX45mm
二、主要芯片:
L298N、光电耦合器
三、工作电压:
控制信号直流5V;电机电压直流3V~46V(建议使用36伏以下)
四、4、具有过电压和过电流保护
五、最大工作电流:
2.5A
六、额定功率:
25W
特点:
1、具有信号指示。
2、转速可调
3、抗干扰能力强
4、
5、可单独控制两台直流电机
6、可单独控制一台步进电机
7、PWM脉宽平滑调速
8、可实现正反转
9、采用光电隔离
图2.1L298N管脚电路图如下
表2.1L298引脚功能表
引脚
符号
功能
1
15
SENSINGA
SENSINGB
此两端与地连接电流检测电阻,并向驱动芯片反馈检测到的信号
2
3
OUT1
OUT2
此两脚是全桥式驱动器A的两个输出端,用来连接负载
4
Vs
电机驱动电源输入端
5
7
IN1
IN2
输入标准的TTL逻辑电平信号,用来控制全桥式驱动器A的开关
6
11
ENABLEA
ENABLEB
使能控制端.输入标准TTL逻辑电平信号;低电平时全桥式驱动器禁止工作。
8
GND
接地端,芯片本身的散热片与8脚相通
9
Vss
逻辑控制部分的电源输人端口
10
12
IN3
IN4
输入标准的TTL逻辑电平信号,用来控制全桥式驱动器B的开关
13
14
OUT3
OUT4
此两脚是全桥式驱动器B的两个输出端,用来连接负载
表2.2L298的运行参数
参数
符号
测试环境
最小值
典型值
最大值
单位
驱动电源电压
Vs
持续工作时
2.5
—
46
V
逻辑电源电压
Vss
—
4.5
5
7
V
输入低电平电压
ViL
—
-0.3
—
1.5
V
输入高电平电压
ViH
—
2.3
—
Vss
V
使能端低电平电压
Ven=L
—
-0.3
—
1.5
V
使能端高电平电压
Ven=H
—
2.3
—
Vss
V
全桥式驱动器总的
电压降(每一路)
VcE〔sat)
IL=1A
IL=2A
1.8
—
3.2
4.9
V
V
检测电压1,15脚
Vsen
—
-1
—
2
V
L298的逻辑控制
图2.2L298N逻辑管脚图
表2.3L298N逻辑控制模块
ENAIn1In2运转状态
0XX停止
101正转
110反转
111刹停
100停止
表2.4电机转动状态编码
左电机
右电机
左电机
右电机
小车运行状态
IN1
IN2
IN3
IN4
0
1
0
1
正转
正转
前行
0
0
0
1
正转
停止
以右轮为中心原地左转
0
1
0
0
停止
正转
以左轮为中心原地右转
1
0
1
0
反转
反转
后退
2.1.3PWM调速模块分析
电机调速,我们采用了PWM调速方法。
其原理就是开关管在一个周期内的导通时间为t,周期为T,则电机两端的平均电压U=Vcc*(t/T)=aVcc。
其中,a=t/T(占空比),Vcc是电源电压。
电机的转速与电机两端电压成正比。
而电机两端电压与控制波形的占空比成正比,因而电机的速度与占空比成正比。
PWM占空比的控制有三种方式:
(1)自带PWM器
(2)软件延时
(3)定时器
本设计采用了方式
(1)自带PWM器
2.1.4STC12C5A60S2单片机最小系统模块分析
STC12C5A60S2系列单片机的内部结构
STC12C5A60S2单片机中包含中央处理器(CPU)、程序存储器(Flash)、数据存储器(SRAM)、定时/计数器、UART串口、串口2、I/O接口、高速A/D转换、SPI接口、PCA、看门狗及片内R/C振荡器和外部晶体振荡电路等模块。
STC12C5A60S2系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可称得上一个片上系统。
其内部结构和功能和我们学习的51系列单片机类似。
RESETSTC12C5A60S2系列单片机具有在系统可编程(ISP)特性,ISP的好处是:
省去购买通用编程器,单片机在用户系统上即可下载/烧录用户程序,而无须将单片机从已生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。
有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市场的速度,减小了新产品由于软件缺陷带来的风险。
由于可以在用户的目标系统上将程序直接下载进单片机看运行结果对错,故无须仿真器。
STC12系列单片机内部固化有ISP系统引导固件,配合PC端的控制程序即可将用户的程序代
码下载进单片机内部,故无须编程器(速度比通用编程器快,几秒一片)。
如何获得及使用STC提供的ISP下载工具(STC-ISP.exe软件):
(1).获得STC提供的ISP下载工具(软件)
登陆www.STCMCU.com网站,从STC半导体专栏下载PC(电脑)端的ISP程序,然后将其自
解压,再安装即可(执行setup.exe),注意随时更新软件。
(2).使用STC-ISP下载工具(软件),请随时更新,目前已到Ver4.86版本以上,
支持*.bin,*.hex(Intel16进制格式)文件,少数*.hex文件不支持的话,请转换成*.bin文
件,注意升级PC(电脑)端的STC-ISP.EXE程序。
(3).STC12系列单片机出厂时就已完全加密。
需要单片机内部的电放光后上电复位(冷起动)才
运行系统ISP程序,如从P3.0检测到合法的下载命令流就下载用户程序,如检测不到就复位到
用户程序区,运行用户程序。
(4).如果用户板上P3.0,P3.1接了RS-485等电路,下载时需要将其断开。
用户系统接了RS-485
等通信电路,推荐在选项中选择“下次冷启动时需P1.0/P1.1=0/0才可以下载程序”
下载界面如下:
图2.5STC单片机程序下载界面
2.2硬件系统总体方案设计
2.2.1硬件系统总体结构框图
图2.6硬件系统总体结构框图
2.2.2硬件系统原理图
图2.7STC12C5A60S2单片机各管脚接线原理图
图2.8L298N电路原理图
图2.9传感器电路原理图
(注:
以上电路图中JP11、JP21、JP31、JP41都连接着红外传感器、八个管脚的插槽接的是LM393比较器)
第3章
硬件电路制作及调试
3.1红外传感器电路制作及调试
(1)传感器电路板焊接与检查:
检测电路时先用探针小电表检查电源线、地线与各器件是否连接好,再检测有极性的器件是否连接正确,如果解决了电路这两部分的问题,电路还有故障,就有可能是元器件出现故障。
(2)调试中所遇到问题及原因分析和解决法:
1.发光二极管接反,原因是从旧电路板上拆下来时没区分好极性,要注意连接电路时区分其极性;
2.滑动变阻器的调节端与接电源端短接,不起作用,原因:
焊盘间距太小,焊接变阻器时把这连个端口压到一块了;注意滑动变阻器的焊盘间距和焊盘大小,测量时注意调节变阻器;
3.3、4号发光二极管的同时亮灭,原因:
二极管输出端的飞线的接触不良,注意飞线尽量不要交叉和靠得太近;
4.电源线和地线尽量不要飞线,因为这两根线上的电流很大;
5.PCB布线时通常电源线1.5mm,地线1.8mm,信号线1.2mm
6.布线时尽量不要在每根线上连续点击,要坚决果断,否则电路板上的铜线工作性能不稳定,布线要横平竖直,转弯有45度角,信号线相互平行,尽量往同一个方向走向,保持一定间距。
布线清晰、焊接容易,检查轻松。
7.布线时两焊盘之间距离不要靠得太近,否则焊接时容易短路,电路出故障时也难以排查。
8.原理图上的地线尽量不要连接在一起,否则PCB布线时会出现很多交叉的预拉线。
第4章
智能循迹小车的软件设计
4.1系统主程序工作流程图
图4.1系统主程序工作流程图
4.2红外传感器模块工作流程图
图4.2红外传感器模块工作流程图
4.3L298N驱动模块工作流程图
4.3L298N驱动模块工作流程图
4.4PWM调速模块工作流程图
图4.4PWM调速模块工作流程图
4.5程序设计方案:
(1)模块化程序:
写头文件、子程序、添加到一个工程,变量定义等需要挺多c语言知识,工作量较大,检测起来较难。
且尚未学习,自学的话,需要找相关资料和问同学、老师。
开始试着自学时,驱动程序可以在小车实现了,但后面添加了小车的声光显示电路模块后,程序的头文件定义,和延时函数等出现问题,由于时间紧急,一时没有解决,就舍弃了模块化程序。
(2)基本程序:
主函数语句较多,但各功能模块的程序设计思路简单;实施起来简洁方便。
本设计中采用了基本程序。
4.6程序编写、编译、链接、调试中发现的问题
1.数组定义时要有变量类型:
如uncharPwm_On[]={0,1,2,3};
2.中断服务子程序内不能有while函数;
3.函数声明要放在main函数前面。
第5章
软硬件联合调试
5.1软件介绍
本设计用附录的程序实现小车的智能循迹,程序见附录。
5.2软硬件调试过程
出现问题及原因分析
(1)小车原地打转:
1.传感器不起作用,2.程序问题
解决方法:
重新检查传感器,没发现问题;再检查程序,驱动程序的前进转弯等是否定义正确,速度设置是否合理。
(2)小车只往前走:
左右两边的传感器不起作用,扫描时间间隔短,直走的惯性时间大于转弯的反应时间
解决方法:
调节转弯的速度,加快转弯的反应时间。
5.3软硬件调试结果
经过多次调试小车的软硬件,小车顺利地循迹了。
第6章
总结
本次设计中,我们除了在知识和技能上的收获外,还培养了一定的能力,如发现问题,解决问题的思维能力和实践能力,切身领悟到科学研究对严谨细心、吃苦耐劳的精神严格要求。
同时也明白了在高效运转的现代社会中,要在短时间内有一定成就,必须要团队协作精神。
个人摸索式的学习效率很低、进步也很慢。
高效率的团队合作对成功至关重要。
参考文献
【1】吴建平.传感器原理及应用.第2版.机械工业出版社2012.9
【2】王远.模拟电子技术基础.第3版.机械工业出版社2007.6
【3】李全利.单片机原理及接口技术[M].第2版.北京:
高等教学出版社,2009.
【4】姚永平.STC12C5A60S2系列单片机器件手册
致谢
衷心感谢在本次设计提供帮助的老师,同学们,以及参考文献的作者们、XX文库的贡献者等!
附录智能循迹小车程序
/*************************头文件包含区******************************/
#include"reg51.H"
/*************************常量定义区**********************************/
CMOD=0X00;//SetupPCATIMER
CL=0X00;
CH=0X00;
CCAP0L=0X00;//SetuptheinitialvaluesameasCCAP0H
CCAP0H=0X00;//0%DutyCycle
CCAPM0=0X42;
CCAP1L=0X00;//SetuptheinitialvaluesameasCCAP1H
CCAP1H=0X00;//0%DutyCycle
CCAPM1=0X42;//0100,0010SetupPCAmodule0inPWMmode
CR=1;
/*************************公有变量定义区**********************************/
voidpwm_init()
{
CMOD=0X00;//SetupPCATIMER
CL=0X00;
CH=0X00;
CCAP0L=0X00;//SetuptheinitialvaluesameasCCAP0H
CCAP0H=0X00;//0%DutyCycle
CCAPM0=0X42;
CCAP1L=0X00;//SetuptheinitialvaluesameasCCAP1H
CCAP1H=0X00;//0%DutyCycle
CCAPM1=0X42;//0100,0010SetupPCAmodule0inPWMmode
CR=1;//StartPCATimer
}
/******************************************************************************
**函数名称:
set_pwm1
**函数功能:
设定PWM的捕获值,产生中断
**入口参数:
无
**出口参数:
无
**说明:
**范例:
******************************************************************************/
voidset_pwm1(unsignedcharpwm1_duty)//设置PWM0的占空比
{
CCAP0H=pwm1_duty;
}
voidset_pwm2(unsignedcharpwm2_duty)
{
CCAP1H=pwm2_duty;
}
/*************************私有定义区******************************/
voidMotoDrvInit(void);
voidCarGoAhead(void);
voidCarGoBack(void);
voidCarGoLeft(void);
voidCarGoRight(void);
voidDelay(intdelaytime);
sbitL298ENA=P1^3;//一个电机的使能端
sbitL298ENB=P1^4;//另一个电机的使能端
sbitL298IN1=P2^4;//方向控制端口
sbitL298IN2=P2^5;
sbitL298IN3=P2^6;
sbitL298IN4=P2^7;
sbitzuileft=P0^1;
sbitleft=P0^2;
sbitright=P0^3;
sbitzuiright=P0^4;
/*************************私有函数声明区******************************/
/**********************************************************
**函数名称:
MotoDrvInit
**函数功能:
电机驱动芯片初始化程序,使能电机驱动
**入口参数:
无
**出口参数:
无
*********************************************************/
voidMotoDrvInit(void)
{
L298ENA=1;//使能一个电机
L298ENB=1;//使能另一个电机
L298IN1=0;//先让机不转
L298IN2=0;
L298IN3=0;
L298IN4=0;
}
/**********************************************************
**函数名称:
CarGoAhead
**函数功能:
小车前进
**入口参数:
无
**出口参数:
无
**********************************************************/
voidcarGoAhead(void)
{
L298IN1=0;
L298IN2=1;
L298IN3=0;
L298IN4=1;
}
/**********************************************************
**函数名称:
CarGoBack
**函数功能:
小车后退
**入口参数:
无
**出口参数:
无
**********************************************************/
voidcarGoBack(void)
{
L298IN1=1;
L298IN2=0;
L298IN3=1;
L298IN4=0;
}
/**********************************************************
**函数名称:
CarGoLeft
**函数功能:
小车
**入口参数:
无
**出口参数:
无
**********************************************************/
voidcarGoLeft(void)
{
L298IN1=0;
L298IN2=0;
L298IN3=0;
L298IN4=1;
}
/**********************************************************
**函数名称:
CarGoRight
**函数功能:
小车左转
**入口参数:
无
**出口参数:
无
**********************************************************/
voidcarGoRight(void)
{
L298IN1=0;
L298IN2=1;
L298IN3=0;
L298IN4=0;
}
/**********************************************************
**函数名称:
CarGoRight
**函数功能:
小车右转
**入口参数:
无
**出口参数:
无
******
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)