<2)在实验箱上或印刷电路板上安装、调试出所设计的电路;
<3)在EDA编程实验系统上完成硬件系统的功能仿真;
<4)写出设计、调试、总结报告。
3、课程设计的时间安排
1)方案设计;(1.5天>
根据设计任务书给定的技术指导和条件,进行调查研究、查阅参考文献,进行反复比较和可行性论证,确定出方案电路,画出主要单元电路,数据通道,输入、输出及重要控制信号概貌的框图。
2>电路设计:
(2天>
根据方案设计框图,并画出各单元电路的详细电路图及总体电路图。
3>电路仿真:
<2.5天)
熟悉EDA工具,在EDA软件平台上修改设计的电路,给出正确的仿真结果。
4>装配图设计:
(1天>
根据给定的元器件,结合逻辑电路图,设计出电路制作的具体装配图(即绘出组件数量,管脚号以及器件布置的实际位置>。
同时配以必要的文字说明。
5)电路制作:
(2天>
对选定的设计,按装配图进行装配,调试实验。
6>总结鉴定:
(1天>
考核样机是否全面达到现定的技术指标,能否长期可靠地工作,并写出设计总结报告。
2、整体方案及特点
1、智能小车循迹总体方案
2、设计的思路及其特点
在智能寻迹小车控制系统的设计中,以CPLD为核心,用L298N驱动两个减速电机,当产生信号驱动小车前进时,是通过寻迹模块里的红外对管是否寻到黑线产生的电平信号通过电压比较器LM339返回到CPLD,然后CPLD根据程序设计的要求做出相应的判断送给电机驱动模块,让小车来实现前进、左转、右转、停车等基本功能。
三、各组成部分的电路结构及工作原理
1、红外寻迹模块的设计
<1)电路结构
发射部分接收部分
<2)工作原理
该系统中的寻线模块我们采用的是红外传感器。
它有一个发射管<白色)和一个接收管<黑色),一般情况下接收管能收到发射管发送的红外光,但当遇到吸光介质<如黑色物体)时接收管便不能收到发射管的红外光。
因为传感器输出端得到的是模拟电压信号,所以在输出端增加了电压比较器LM339,先将输出电压与2.5V进行比较<检测到黑线时输出低电平,发光二极管不亮;检测到白线时输出高电平,发光二级管亮),再送给CPLD处理和控制。
本设计中,为使小车寻线稳定,最好选择差异较大的环境,例如在白地板上贴上黑线,可使红外寻线模块工作更加灵敏稳定。
2、电源模块的设计
利用L298稳压管输出一路电压,供给单片机和电机驱动,还供给寻迹模块。
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。
是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。
3、CPLD控制模块设计
此部分是整个小车运行的核心部件,起着控制小车所有的运行状态作用。
采用可编程逻辑期间CPLD作为控制器。
CPLD可以实现各种复杂的逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。
采用并行的输入输出方式,提高了系统的处理速度,适合作为大规模控制系统的控制核心
1>正常前进
当寻迹板中间两个传感器检测到白线,小车都正常前进。
2)左小拐弯
当只有左端第2个传感器检测到黑线,其余3个传感器检测到白色时,小车应左小拐弯。
3)左大拐弯
当只要左端第1个传感器检测到黑线,右端2个传感器检测到白色时,小车应左大拐弯。
4>右小拐弯
当只有右端第2个传感器检测到黑线,其余3个传感器检测到白色时,小车应右小拐弯。
5>右大拐弯
当只要右端第1个传感器检测到黑线,左端2个传感器检测到白色时,小车应右大拐弯。
6)停车
当4个传感器同时检测到黑线或其他情况,小车停车。
4、驱动模块设计
<1)电路图
<2)工作原理
从CPLD输出信号功率很弱,即使在没有其它外在负载是也无法带动电机,所以在实际电路中我们加入了电机驱动芯片提高输入电机信号的功率,从而能够根据需要控制电机转动。
根据驱动功率大小以及连接电路的简单化要求选择L298N为直流电机驱动芯片。
L298N是SGS公司的产品,内部包含4通道逻辑驱动电路,是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。
其引脚排列如下图所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。
L298N可驱动2个电机,OUTl、OUT2和OUT3、OUT4之间分别接2个电动机。
<5、10)、<7、12)脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。
L298N的逻辑功能如表1所示。
表1L298N逻辑功能表
ENA(B>
IN1(IN3)
IN2(IN4>
电机运行状况
H
H
L
正转
H
L
H
反转
H
同IN2(IN4>
同IN1(IN3)
快速停止
L
X
X
停止
其引脚图如图1所示:
引脚介绍:
第1、15脚:
可单独引出连接电流采样电阻器,形成电流传感信号,也可直接接地。
第2、3脚:
A电机输出端口。
第4脚:
接逻辑控制的+5V电源。
第6脚:
A桥使能端口。
第5、7脚:
输入标准TTL电点平对A桥的输出OUT1、OUT2进行控制。
第8脚:
接电源地。
第9脚:
接电机驱动电源,最高可达50V。
第11脚:
B桥使能端口。
第10、12脚:
输入标准TTL电平对B桥的输出OUT3、OUT4进行控制。
第13、14脚:
B电机输出端口。
5、直流电机
<1)实物图
<2)原理
因为一个驱动芯片L298N可驱动两个直流电机,可我们这次购买的小车有四个直流电机,所以我们采用两两并联的方法,即左侧两个并联,右侧两个并联。
这样就可以使每一侧的两个电机步调一致起来,便于控制。
4.系统硬件电路设计<各模块的硬件连接关系)
5.CPLD控制模块内各单元模块的设计
1、PWM<脉冲宽度调制)
(1>VHDL程序
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entitypwmisport(clk:
instd_logic。
a:
instd_logic_vector(3downto0>。
pwmout:
outstd_logic>。
endpwm。
architecturecondofpwmis
signalcount:
std_logic_vector(3downto0>。
begin
process(clk>
begin
if(rising_edge(clk>>then
if(count="1001">then
count<="0000"。
else
count<=count+1。
endif。
if(countthen
pwmout<='1'。
else
pwmout<='0'。
endif。
endif。
endprocess。
endcond。
(2>原理图
PWM是建立在十进制加减计数器上的分频结构,在CLK上升沿从0~9的范围内计数个数小于A时输出高电平‘1’,否则输出‘0’,其相当于速度控制单元。
(3>仿真波形
2、主要控制模块
(1)原理和功能
根据小车前面的四个红外传感器所检测到的信号控制两端电机的转速。
1)当小车需要正常前进时,左侧两个电机的转速应等于右侧两个电机的转速。
2)当小车需要左小拐时,左侧两个电机的转速应略小于右侧两个电机的转速。
3)当小车需要左大拐时,左侧两个电机的转速应比右侧两个电机的转速小得多。
4)当小车需要右小拐时,左侧两个电机的转速应略大于右侧两个电机的转速。
5)当小车需要右大拐时,左侧两个电机的转速应比右侧两个电机的转速大得多。
6)当小车需要停止时,左侧两个电机的转速和右侧两个电机的转速应都为零。
(2)VHDL程序
LIBRARYIEEE。
USEIEEE.STD_LOGIC_1164.ALL。
USEIEEE.STD_LOGIC_UNSIGNED.ALL。
USEIEEE.STD_LOGIC_ARITH.ALL。
ENTITYctlIS
PORT(p1,p2,p3,p4:
INSTD_LOGIC。
temp1,temp2:
OUTSTD_LOGIC_VECTOR(3DOWNTO0>
>。
ENDctl。
ARCHITECTUREbehaveOFctlIS
BEGIN
PROCESS(p1,p2,p3,p4>
VARIABLETEMP:
STD_LOGIC_VECTOR(3DOWNTO0>:
="0000"。
BEGIN
TEMP:
=p1&p2&p3&p4。
IF(TEMP="0000">THEN
temp1<="1000"。
temp2<="1000"。
ELSIF(TEMP="0010">THEN
temp1<="1000"。
temp2<="0011"。
ELSIF(TEMP=("0001">ORTEMP=("0011">>THEN
temp1<="1001"。
temp2<="0001"。
ELSIF(TEMP="0100">THEN
temp1<="0011"。
temp2<="1000"。
ELSIF(TEMP=("1000">ORTEMP=("1100">>THEN
temp1<="0001"。
temp2<="1001"。
ELSE
temp1<="0000"。
temp2<="0000"。
ENDIF。
ENDPROCESS。
ENDbehave。
(3)原理图
P1~P4分别对应小车从左到右四个传感器,‘1’电平表示压线‘0’表示正常,若左轮压线则右轮车速大于左轮,即TEMP2>TEMP1,通过程序给定的TEMP数值可以控制左右轮的相对速度大小,即实现循迹转弯。
(4)仿真波形
6、CPLD控制模块的顶层电路图
1、原理图
输入端接传感器的输入电平,输出端结控制速度单元模块即PWM,L和R分别控制小车左右侧电机。
例如当P1P2P3P4=0100时,表示左轮压线且需要往左小拐弯,这时TEMP1=0011,TEMP2=1000。
反应在PWM的作用为:
输出R的占空比大于L的,即8/3倍,也就是R与L的平均电压比。
这样也就实现了右侧轮的平均功率大于左侧平均功率,实现拐小弯。
2、仿真波形
7、系统总装配图
8、实验结果<照片)
9、实验结果分析
因为这次小车行驶的轨道的宽度有限,所以在速度上不能太快,否则很容易因为惯性大而冲出黑色跑道。
而且从前面仿真波形来看,小车作出判断有一定的延时性,故我们设计的程序还有待进一步的改进。
经调整传感器的灵敏度以及程序参数的调整,小车最终实现了预期的目的即通过控制小车左右轮相对速度大小从而拐小弯拐大弯实现自动循迹。
10、调试中出现问题的解决
小车在转弯的地方总会冲出跑道,因此要不断的对程序进行修改,而在这程序的修改时,要不断的从小车上取下CPLD集成块,再把程序通过串口下载到集成块后又要再次插入,这个过程虽然简单,但每次都必须小心的拔出并插入,以免把集成块插反而被烧坏。
在调试刚开始的时候,我们在检测到直线时用了100%的占空比,而在转弯时则把相对应的占空比进行改变,以便让小车能在转弯的时候顺利通过而不至于冲出跑道,在多次的测试后小车终于能顺利的沿着跑道跑了。
11、改进意见及收获体会
1、改进意见
<1)最大的不足:
驱动模块控制前进方向的插条被固定为一定的高低电平,只能前进而不能实现后退,也就不能实现大转弯<即一侧轮前进一侧轮后退)。
(2>再好的电路都应该考虑干扰问题,在编写程序时,我们都是想当然的在理想环境下,始终没有考虑硬件造成的干扰的问题。
事后,我认为应该考虑干扰问题,在程序中加入延时,使问题解决。
2、收获体会
通过本次课程设计,我学到了很多。
首先是掌握了用MAX+PLUS2软件设计电路的较为熟练的应用。
从最开始的源程序的输入,到波形图的生成与仿真,再到生成gdf格式的原件,最后应用层次化设计电路的思想调出已生成的元器件搭建总的电路图并编译模拟,最后在下载到CPLD集成块。
虽然以前实验课教过MAX+PLUS2软件但远没达到实际应用的地步。
这是我最大的收获。
其次是认识到自己缺乏发现问题解决问题的能力,归根到底就是平时学习时想的少,自己动手少。
刚开始下载完程序,装上集成块后小车并不是按原定程序运行而是不转动,自己当时就不知道是哪地方出了问题,经过一番茫无目的排查后最终才确定原来锁定管脚时CLK输入管脚没有锁定!
重新下载程序小车可以运行并循迹。
但也有不足,最大的不足是我只成功的编了一部分程序,有一部分是借鉴的。
遗憾的是明明感觉自己可以编出来虽然会费一些精力,但我却没有每一部分都亲自编。
这也就失去了一次很好的提升自己编程能力的机会。
时间很富余但自己却没有完全利用起来。
今后做类似的课程设计一定会注意到这一点。
十二、器材
1、CPLDEPM7128SLC84-6
2、FPGAEPF10K10
3、只读存储器EPROM2732A
4、稳压降压模块
5、小车
6、L298驱动板
7、红外传感器
8、测速码盘
9、施密特触发器74LS14
10、A/D转换器ADC0804、ADC0809
11、D/A转换器DAC0832
12、振荡分频器CD4060
13、石英晶体(4M、2M、32768HZ>
14、万能板
15、微动开关、拨盘开关、继电器、LED(红、绿、蓝>、电阻、电容、二极管、三极管、光敏二、三极管、导线……等。
16、工具(镊子、剪刀、万用表、电烙铁……>
十三、使用仪器设备
1、稳压电源(±5V,±15V>;
2、实验电路箱;
3、信号发生器;
4、示波器
5、数字万用表
6、PC机<装有MAX+PLUSII或QuartusII软件);
7、EDA编程系统实验箱等。
十四、参考文献
1、“模拟电子技术基础”和“数字电子技术基础”教材;
2、有关“电子技术课程设计指导书”;
3、“集成电路特性应用手册”;
4、EDA技术使用教程
5、VHDL数字系统设计