课程设计(论文)-智能小车控制信号的FPGA实现.doc_第1页
课程设计(论文)-智能小车控制信号的FPGA实现.doc_第2页
课程设计(论文)-智能小车控制信号的FPGA实现.doc_第3页
课程设计(论文)-智能小车控制信号的FPGA实现.doc_第4页
课程设计(论文)-智能小车控制信号的FPGA实现.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HEFEI UNIVERSITY智能小车控制信号的FPGA实现课程 名称 现代电子技术课程实践 指导 教师 班 级 11电子二班 姓 名 学 号 日 期 2014/12/23 摘要基于FPGA(现场可编程门阵列)的智能小车实现对一些危险,环境恶劣,远程处理的一些施工场地或者研究的时候进行监测、控制、处理相关危险的紧急情况。可以帮助人类在无法生存的情况下完成一些检测任务。本论文是研究SOPC(片上可编程系统)的基础上,提出了基于FPGA的智能车能自动采集赛道信息进行跑动的方案。利用FPGA来实现各个模块所需要的信号。论文主要包括三个部分:在对整个智能车分析需要哪些信号的基础上,设计了相应的软件程序。通过Quarters编写相应的软件程序,第一部分是产生驱动CCD所需要的信号,这部分有一组PWM(脉冲宽度调制)波控制信号,A0(模拟电压输出)信号,SI(串行输入)输入信号,CLK(时钟信号);最核心的是CCD(电荷耦合元件)信号的处理,这部分如果解决就基本解决总的问题了。第二部分是电机驱动所需要的信号,这部分需要一组PWM波控制信号;第三部分是舵机信号所需要的信号,这部分需要一组PWM波控制信号。关键词:CCD, FPGA,PWM,Smart carABSTRACTBased FPGA (field programmable gate array) of the smart car to achieve some dangerous, harsh environment, some of the construction site or remote processing time study to monitor, control, dealing with emergency situations related hazards. You can help people complete the task in the case of some tests can not survive.This thesis is to study the SOPC (system-on-chip programmable), based on the proposed FPGA-based smart car can automatically collect information running track program. Using FPGA to achieve the desired signal for each module.Dissertation consists of three parts: in which signals the need for the smart car based on the analysis, design the corresponding software program. By Quarters preparation of the corresponding software program, the first part is to generate a signal required for driving the CCD, this part has a plurality of PWM (pulse width modulation) wave control signal, A0 (analog voltage output) signal, SI (serial input) of the input signal, CLK (clock signal); the core of the CCD(Charge-coupled device) signal processing poem, if this part of the total solved basically solved the problem of the second part is the signal required for driving the motor, this part requires a set PWM wave control signal; part III servo signal is the desired signal, this part requires a set PWM wave control signal.Keyword: CCD, FPGA,PWM,Smart car目录HEFEI UNIVERSITY1一、 绪论51.1 课题背景51.2 本课题研究的目的和意义51.3 课题系统框图6二、 课程设计任务及要求62.1 设计任务62.2 设计要求62.3 功能设计7三、 整体设计思想73.1设计细化框图7四、 详细设计84.1 TSL1401 CCD工作原理84.1.1 TSL1401引脚描述84.1.2 功能描述84.1.3 积分时间or曝光时间84.2 设计思路94.2.1 舵机94.2.2 驱动104.2.3 CCD12五、时序仿真波形125.1 舵机PWM1仿真图125.2 CCD PWM2仿真图135.3 电机驱动PWM3仿真图135.4 电机驱动PWM4仿真图145.5 AD驱动仿真波形14六、 设计总结14七、 参考文献目录15八、 附录(源程序)168.1 CCD驱动程序168.2 电机驱动程序178.3 舵机驱动程序188.4 AD驱动程序及仿真波形18一、 绪论1.1 课题背景随着进入现代高科技社会,人们生活中有越来越多全自动化的产品出现供我们使用,这使得我们的生活质量不断地提高,同时也提高了我们对生活质量的要求。从以往到现在,例如:以前使用的马车到现在的汽车,以前的人工通信到现在的移动电话,以前手洗衣服到现在的洗衣机等等。都给我们的生活带来了方便,而在一些未知的领域更需要探索,为了是我们自己冒风险小,工作更加的舒适,安全,所以需要一些智能的自动化的能够代替人类完成相应工作的小机器人一样智能车。智能车是一种智能化行进的小车,能够自动采集信息来前进,而这种智能车能够适应不同的恶劣环境,不受空间,辐射,磁场,重力,温度等条件的影响,可以进入人类无法进入的条件进行探测任务。从以前到现在,随着社会的不断发展,使得全自动化的智能的东西越来越需要,从以前只应用到军工的产品到现在能够民用,也是由于相关的技术越来越成熟,对这方面的研究更加深入。随着现代科技不断的发展,智能的东西应用越来越广泛,使得我们对于研究智能车应用的领域的扩展有以下发展的理由:(1)智能车可以代替人类进入太空进行探测,例如登录月球。(2)智能车可以在一些高温、有毒气体、排爆等危险工作情况中脱离出来,让其代之工作。(3)可以完成清洁工作,例如自动的吸尘器。1.2 本课题研究的目的和意义智能化的东西是现在社会不可缺的工具,而智能小车在经过一些改良的特殊设计后可以应用到更多广泛的领域,例如飞机的自动驾驶,吸尘器,恶劣环境的检测等。给我们的工作,日常生活,科学研究带来了更多的方便。同时在一些民用的,工业用的智能车都存在一些问题:一、系统功能单一比如探测智能车功能单一,而针对不同的探测对象要分别进行不同的专门设计,属于单一型,我们可以设计一个通用型的产品出来。二、操作控制复杂由于只智能车的控制器比较复杂,在不同的控制场合需要专门的操作人员来操控,这增加了成本以及复杂性。三、系统开发复杂现今好多同类型的智能车集成度不高,有的设计中很多分为器件组成的外围电路,这使得在应用的时候更加复杂,同时造成稳定性低。FPGA(Field Programmable Gate Array)现场可编程门阵列,通过FPGA解决了以上述问题,它是可编程逻辑器件,它的规模大,可以代替几千块IC芯片,随着技术的不断发展,采用FPGA来编程设计带来了许多便利,可以根据设计要求反复修改程序,能够直接写代码、调试和维护,这样就降低了成本。1.3 课题系统框图本系统框图如图1所示,主要分为三个大模块:CCD信号产生模块、舵机信号产生模和驱动信号产生模块。PWM1FPGA芯片PWM2PWM3舵机SICLKCCDPWM4驱动A0图1 自顶向下设计框图二、 课程设计任务及要求2.1 设计任务 用Quartus 写出设计的源程序; 用SignalTap 嵌入式逻辑分析仪测试所产生信号的波形; 使用逻辑分析仪或者示波器测试所产生信号的波形; 心得体会本次在实践课程中你的感受;你从实践课程中获得了哪些收益;本次实实践课程的成功之处;本次实践课程中还有待改进的地方;2.2 设计要求 熟练地运用数字系统的设计方法进行数字系统设计; 能使用FPGA芯片产生智能小车所需要的各路信号。2.3 功能设计 舵机的PWM波产生; 驱动的PWM波产生,使能端高电平; 线性CCD的PWM波产生,使能端高电平。三、 整体设计思想3.1设计细化框图:舵机的PWM波产生FPGA芯片产生PWM1波舵机图2 舵机PWM波产生框图:驱动的PWM波产生;FPGA芯片产生PWM2波驱动产生PWM3波图3 驱动PWM波产生框图:CCD的PWM波产生;A/D转换模块AD0809FPGA芯片SI信号CLOCKA0信号CCD图4 CCD信号产生框图四、 详细设计4.1 TSL1401 CCD工作原理4.1.1 TSL1401引脚描述TSL1401引脚如下表1所示:引脚名编号描述VCC1供电电源GND2地CLK3时钟输入GND4地SI5串行输入GND6地A07模拟电压输出GND8地表1 CCD集成模块引脚4.1.2 功能描述TSL1401线性CCD传感器包含128个线性排列的光电二极管。每个光电二极管都有各自的积分电路,以下我们将此电路统称为像素。每个像素所采集的图像灰度值与它所感知的光强和积分时间成正比。以上名词所对应的物理量纲为:(1)灰度值:输出电压Vout;(2)光强:器件对给定光波长在电压上的反应Ve;(Ve=V/(J/cm2)*W/cm2)(3)积分时间:即曝光时间,tint。4.1.3 积分时间or曝光时间 TSL1401曝光时间TSL1401技术文档中关于积分时间做了大量说明,其实归根结底可以由图4-2表示。图中第19个CLK到下一个SI开始的这段时间,就是CCD的积分时间,即曝光时间。之前的18个CLK的时间为积分器的复位时间。 关于曝光时间长短讨论根据TSL1401技术文档的提供的数据,该器件的最大曝光时间为100ms,即无论你实际曝光多长时间,只要超过100ms,其图像效果和100ms是一样的。那么如何选择合适的曝光时间,就成了需要面对的问题。即使是相同的物体,在不同的光线环境下得到的图像是不一样的。从理论上讲,在光线较暗的环境中,应该增加曝光时间,以换取亮度合适的图像;在光线较强的环境中,应该减少曝光时间,以防止图像出现饱和现象。其针对像素输出值AO的采集方法是一样的,如图5所示。使用者需要在SI持续高电平20ns后产生第1个CLK信号,并在每个CLK信号的下降沿时采集AO引脚的输出的电压值。在采集了128个像素后,还必须生成第129个CLK以结束本次采集。在第129个CLK之后到下一个SI信号之间的时间就是下次采集的曝光时间(这里说的曝光时间是忽略了第19到129个CLK之间的时间)。图5 操作波形图4.2 设计思路根据智能小车所需要的模块,系统设计采用自顶向下设计方法,由舵机部分、驱动部分、CCD部分三个部分组成,先编写各个模块的程序,通过仿真,实际测量。如果每个模块仿真和相应测量的信号与理论一样,那就算成功了。最后就是把每个模块的所需要的信号整合到一起。4.2.1 舵机 舵机是一个微型的伺服控制系统,具体的控制原理可以用下图6表示: 图6 舵机控制工作原理是控制电路接收信号源的控制脉冲,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。模拟舵机需要一个外部控制器(遥控器的接收机)产生脉宽调制信号来告诉舵机转动角度,脉冲宽度是舵机控制器所需的编码信息。舵机的控制脉冲周期20ms,脉宽从0.5ms-2.5ms,分别对应-90度到+90度的位置。如下图7所示: 图7 舵机打角原理由上图可以看出,可以给适合的PWM波信号就可以控制转动的角度。4.2.2 驱动模块特性 :一路电机驱动输出,单板典型最大电流68A,最小在50A; 增加总线驱动芯片74LVC245,提高信号驱动能力,同时隔离BTN7961和单片机,保护BTN7961和单片机芯片,防止BTN7961损坏后将电池电压直接输入到单片机,进而烧坏单片机控制引脚; 增加MIC5219电源芯片,为总线驱动芯片74LVC245提供电源,实现驱动芯片和单片机电平匹配。电流采样电路增加滤波电路,电流信号经过滤波处理后输入单片机,采集信号更精确; 电机输出端增加压敏电阻,防止电机瞬间换向产生峰值电压进而损坏其它芯片; 板子布线进过优化,过电流能力强;同时也更有利于散热; 驱动板工作电压范围:7V14V;最大不能超过16V;电机工作频率范围:025KHz;推荐驱动频率范围:3KHz8KHz;原装进口英飞凌芯片,该驱动模块贴片默认为BTN7971,兼容BTS7960B(默认)、 BTN7960B、BTS7970B、BTN7970B、BTN7971B;性能比其它芯片更优秀。 图8 驱动模块图9 驱动电路信号对应关系: Motor_In1对应IN1、Motor_In2对应IN2、Motor_Inh对应INH.其中INH作为芯片的使能信号使用。INH使能引脚,IN1PWM3,IN2PWM4,3.3V辅助电源。所以在驱动这一块主要是通过FPGA芯片上输出两路PWM波就可以了,外加上一个使能端口高电平。4.2.3 CCD主要是CCD这一块的处理,本次设计所用的CCD是TSL1401,CCD在驱动信号的作用下进行曝光,将采集到的模拟电压输出,其中在白色赛道的电压值要明显大于黑色赛道部分,本次设计是将所得的模拟电压经过A/D芯片得到相应的数字量,即0(黑)和1(白),最后通过处理这些信号控制小车轨迹。这里有曝光量、曝光时间和曝光周期三个概念,曝光量由曝光时间和曝光周期确定,曝光量越大,CCD输出的电压值越高,但电压太高就会导致CCD输出出现饱和,即在黑线和白线所得的电压一样,这种情况不利于赛道辨别。相反曝光时间太短,CCD输出的电压又很低,几乎接近于零,所以控制好曝光量对小车控制很重要。曝光周期就相当于CCD什么时候采集一次赛道信息,并将所得的信息转换为模拟电压,所以曝光周期不能太大,否则小车的反映速度会降低,本次设计我们去曝光周期在20ms左右,这样在程序中通过控制曝光时间就可以很好的控制曝光量,我们这次采用的是动态的曝光时间,当在光线强的时候是曝光时间较小,光线较弱的时候是曝光时间大,这样就可以很好的控制曝光量了。五、时序仿真波形5.1 舵机PWM1仿真图图10 舵机PWM波5.2 CCD PWM2仿真图图11CCD的PWM波5.3 电机驱动PWM3仿真图图12 电机驱动的PWM波5.4 电机驱动PWM4仿真图PWM4可以直接给低电平接地。5.5 AD驱动仿真波形图13 AD驱动仿真波形六、 设计总结本次课程设计是用FPGA产生智能小车的各种控制信号,和单片机相比,FPGA有着更快的时钟和运算速度,处理数据也变得更快,更精确。当然FPGA主要是应用于运算的,本次利用其控制智能车的驱动信号主要是为了从单片机到FPGA的一个过渡。通过我们组的努力,最终按要求产生了电机驱动信号,舵机驱动信号,CCD驱动信号,A/D驱动信号,并用Quartus 软件仿真出各个波形。CCD:CCD驱动程序程序的产生主要是利用时钟分频后,再计数判断产生,主要是SI信号、CLK信号,设计是要求产生128个CLK信号是SI信号翻转一个时钟,其中CLK时钟周期为1us,试验仿真所得结果和理论预期的一致。AD:AD驱动信号主要是用来处理CCD输出的AO信号,将其输出的模拟量转化为数字信号,这样处理起来更加简单,试验结果和理论预期一致。舵机:舵机驱动信号主要是用于控制小车行驶方向,周期为两毫秒,通过控制脉宽来其打角的方向和度数,本次只产生一个打零度角的信号,实际仿真波形和理论计算一致。电机:电机主要由两路PWM信号控制,其中一路给零,另外一路提供脉宽可调的PWM,频率设置为10Khz,本次设计要求脉宽为周期的10%,即为0.005ms,试验仿真波形和理论一致。在这过程中,我学到了很多知识,了解了FPGA的强大,因为我发现用FPGA几乎可以完成单片机的所有功能,并且我们所懂的还只是凤毛麟角,很多FPGA的功能我们都还不知道。不仅如此,本次的课程设计同时提高了我们对智能车控制方面的了解。之前有些不懂的地方从这次新学习后又明白了很多,对各个信号的作用有了更多的了解。在设计的过程中难免会遇到了一些问题,尤其是在CCD驱动信号的产生中起初并没有什么思路,后来在队友和老师的帮助下得到了解决,我在老师给予我的关于CCD的论文中得到了很多的启发,并最终得到我们所需的驱动信号。虽然本次课程设计将要结束,但是我对FPGA的学习会一直坚持下去,本次课程设计的也会对我今后的学习之路有着很大的帮助。七、 参考文献目录10 康光华,电子技术基础 数字部分M.北京.高教出版社.2006.111 潘松,EDA实用教程M.北京.科学出版社,2002.1012 潘松,EDA技术与VHDLM.北京.清华大学出版社,2005.713 候建军,郭勇.SOPC技术基础教程 M.北京.清华大学出版社,201314 周立功,SOPC嵌入式系统基础教程 M.北京.北京航空航天大学出版社,200615 卢杰,赖毅.VHDL与数字电路设计.北京:科学出版社,200116 王金明,杨吉斌.数字系统设计与Verilog HDL.北京:电子工业出版社,2002 17 张明.Verilog HDL实用教程.成都:电子科技大学出版社,199919 J.Bhasker著,徐振林等译.Verilog HDL硬件描述语言.北京:机械工业出版社,200020 刘明业,将敬旗,刁岚松等译.硬件描述语言Verilog.北京:清华大学出版社,2001八、 附录(源程序)8.1 CCD驱动程序 module ccd (clk,/50M系统时钟 clk_500,/clk驱动信号,周期为2ussi);/si驱动信号input clk;output si,clk_500;parameter count_128=8d128, DIV= 100;reg si,clk_500; /500ns reg 14:0 count1=0;reg 24:0 count;always (posedge clk)/得到clk驱动信号beginif( count = DIV)begincount = 0;clk_500= clk_500;endelsecount = count + 1b1;endalways(posedge clk_500 )/得到si驱动信号if(count1=count_128)begincount1=1;si=1;endelsebeginsi=0;count1=count1+1;/状态计数endendmodule8.2 电机驱动程序module duoji(clk,out,m,clk_1M);/clk为50M时钟,clk_1000为1M,out为输出信号,z和m分别为周期和脉宽input clk;/clk=50M=50 000 000input 7:0 m;/0.5ms-0度 1ms-45度 1.5ms90度 2ms135度 2.5ms180度output out,clk_1M; reg 15:0 count; /PMW脉宽计数,周期计数reg out;reg clk_1M;/1Mhzreg 24:0 count1; parameter z=8d100,/周期为0.1ms div=10d50; always (posedge clk)/分频得到子时钟beginif( count1 = div)begincount1 = 0;clk_1M= clk_1M;endelse count1 z) /打到周期预设定的数值,就清零 begin count=0; end if(countm) out=1; else out=0; end endmodule 8.3 舵机驱动程序module duoji(clk,out,m,clk_1000);/clk为50M时钟,clk_1000为1M,out为输出信 号,z和m分别为周期和脉宽input clk;/clk=50M=50 000 000input 7:0 m;/0.5ms-0度 1ms-45度 1.5ms90度 2ms135度 2.5ms180度output out,clk_1000; reg 15:0 count; /PMW脉宽计数,周期计数reg out;reg clk_1000;/50khzreg 24:0 count1; parameter z=8d20000,/周期为20ms div=10d50;always (posedge clk)/分频得到子时钟beginif( count1 = div)begincount1 = 0;clk_1000= clk_1000;endelse count1 z) /打到周期预设定的数值,就清零 begin count=0; end if(co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论