1、天水师范学院基于EDA的小车控制器的设计实践报告学院: 物理与信息科学学院 专业: 电子信息科学与技术 班级: 11 级电信二班 姓名: 尹天林 倪波波 学号: 2023年12月30日目 录摘要11 引言11.1 选题背景11.1.1 智能小车简介11.1.2 FPGA在控制方面的应用21.2 本课题研究目的及意义31.2.1 研究目的31.2.2 研究意义32 总体方案说明32.1 设计目的32.2方案概述43 软件设计53.1 VHDL语言介绍53.2 Quartus II软件介绍63.3 分频器模块73.3.1 分频器的功能73.3.2 分频器的设计73.4 周期运营控制模块83.4.1
2、 周期运营控制模块实现的功能83.4.2 状态机简介83.4.3 周期运营控制模块的设计93.5 避障模块113.5.1避障模块实现的的功能113.5.2 避障模块的设计113.6 遥控模块123.6.1 遥控模块的功能123.6.2 遥控模块的设计123.7循迹模块123.8驱动模块153.8.1 驱动模块的功能153.8.2 脉冲宽度调制调速基本原理153.8.3驱动模块的设计153.9模式选择模块163.10顶层图设计174 硬件设计184.2 检测电路184.3 遥控接受电路204.4 驱动电路214.4.1 直流电机驱动原理214.4.2 L298N电机驱动芯片及驱动电路224.5
3、模式选择电路235 设计结果235.1 硬件组装235.2 软硬件联合测试245.2.1 测试准备246 总结与展望25附录A27摘 要:现场可编程逻辑阵列(FPGA)具有可在线反复编程,开发周期短,并行解决,运算速度快,集成度高,可靠性高等特点,广泛应用于数字信号解决,工业控制,通信等各个领域。基于FPGA设计控制器,可以把一些外设和逻辑器件集成起来,从而缩小体积,减少电路的走线,减少功耗,提高可靠性,同时可以通过在线编程来修改和扩充控制器功能,缩短了开发周期,也使系统的使用变的灵活,扩展方便。由于FPGA可以实现真正的并行解决,并且运算速度快,用它实现复杂的控制算法可以提高算法运算速度,满
4、足实时控制规定。本设计是典型的软件和硬件结合的设计产品,基于EPM570T100C5型FPGA芯片设计了一个较为通用的小车控制器。通过数字量输入/输出通道连接了障碍检测模块无线接受模块;电机驱动模块;模式选择模块等。采用硬件描述语言(Verilog HDL)实现了对各个功能模块的编程、仿真、编程下载、功能测试。并在Quartus II开发环境下搭建了一个基于FPGA的小车控制器研究平台,用Verilog HDL语言实现了整个系统的设计和仿真,使小车控制器系统实现了周期运营、避障、循迹、遥控等功能。通过此方法可在软件中嵌入不同的控制算法,扩展多种控制性能,实现各种硬件功能,这种基于FPGA的电子
5、设计的开发方法可根据需要随时增长扩展用户需要的功能,具有很大的开发潜力,在工业控制中有一定的推广应用价值。1引言1.1选题背景1.1.1智能小车简介工业的发展对生产的自动化限度和产品精度规定越来越高,传统的人工很难适应产业升级带来的挑战;科技的进步使得人类的探索范围越来越大,亟需一种可以在恶劣的环境替代人类完毕任务的智能装置。智能机器人控制系统应运而生。工业机器人和探测机器人的发展成为了当下机器人发展的重要方向,智能小车是机器人的一种,又称轮式机器人,在工业和探测两个领域均有广泛应用。智能小车控制器的设计具有极强的可移植性和易扩展性,可应用于替代一些单调枯燥简朴反复的岗位。同时,配合传感器等数
6、据采集装置,小车可以作为一个独立运动单元自主执行一些规定更高的任务。在军事上,现代战争的复杂限度越来越高,需要在复杂恶劣的环境中完毕各种侦察或作战任务,增长了作战人员的危险性;在工业、民用、社会公共设施等诸多领域上,比如在恶劣环境下进行的科学研究、在危险地段作业、危险品排除等诸多场合需要人们冒着巨大的风险;在影视剧拍摄、家庭服务、智能化家居、康复医疗等多种应用领域,为了保证工作人员的安全性,提高舒适性,都急需一种可以替代人完毕这些任务的机器人。智能小车控制系统为人类突破这些限制提供了条件。这种智能小车可以适应不同环境,不受温度、大气、重力、强辐射等外界条件的影响,在人类不适宜的工作环境或者技术
7、含量较低的高强度任务中有效地替代人类完毕工作,提高效率。从机器人诞生至今,随着科学技术的不断发展,机器人应用已经从制造领域向非制造领域发展,原先只是在航空军事领域中才使用的机器人也开始走进人们的平常生活。机器人的发展经历了三代,第一代机器人属于示教再现型,第二代则具有了一定的环境感知能力,第三代机器人是智能型机器人,它除了具有感觉能力之外,还具有独立辨别和自主运动能力。它上面装有多种环境感应设备,是人工智能技术发展到高级阶段的产物。随着计算机、网络、微电子等领域迅速发展,人类活动领域的不断扩大,智能小车的应用领域也不断扩大,有了客观的发展理由:a. 智能小车系统可以把人从有毒有害、缺氧、高压、
8、高温等危险的环境中解放出来。比如,发电厂的高温环境的设备检修,煤气管道的修复,易燃易爆危险品排除装置等。b. 智能小车系统可以进入到人类无法生存或无法进入的区域代替人类工作,例如可以把智能小车送入太空,探测火星;或者潜入海底,勘探资源等。c. 随着经济的不断增长及互联网的迅速普及,人们的生活水平和质量不断提高,智能化家居生活开始推广开来,人们可以通过网络远程控制家中的智能小车完毕特定的任务,比如整理房间、远程监控等。1.1.2FPGA在控制方面的应用FPGA是英文Field Programmable GateArray的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础
9、上通过进一步发展的产物。出现至今历经30年的发展,FPGA已由当初的1200门发展成为今天的百万门级。FPGA一般是基于SRAM工艺,基本结构是基于查找表加寄存器结构。FPGA采用了逻辑单元阵列LCA(LogicCell Array),内部涉及可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(Input Output Block)和内部连线(InterConnect)三个部分。FPGA是由存放在片内RAM中的程序来设立其工作状态的,因此,在其工作时需要对片内的RAM进行编程。用户可以根据不同的模式进行配置,并可以采用不同的方式进行编程。FPGA芯片在控制
10、方面可实现的优点:a. 采用FPGA芯片设计ASIC电路,不需要大量生产,就能得到合用的芯片;b. FPGA芯片可做其它全定制或半定制ASIC电路的中试样片;c. FPGA芯片内部有丰富的触发器和I/O引脚;d. FPGA芯片设计周期最短、开发费用低、风险小;e. FPGA芯片采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。基于以上特点,可以说FPGA芯片是小批量系统提高系统集成度、可靠性是实现小车控制的最佳选择之一。1.2本课题研究目的及意义1.2.1研究目的为了适应工业和科技的快速发展产生的新规定,使生产达成较高的自动化水平和效率及实现产品精度的提高,基于FPGA的小车控制
11、系统应运而生。本设计旨在设计一种设计具有较强可移植性的小车控制器,经改善可应用于替代一些单调枯燥简朴反复的岗位,如流水线、仓储物流等。设计功能涉及周期运营、自动避障、循迹、遥控运营,这些功能具有很强的使用意义,正常状态下小车可以自主周期运营完毕设定的任务,碰到障碍物可以自行规避,在一些突发情况下可以人工干预小车的运营。本次设计旨在用来检查这学期专业知识的学习情况,通过综合知识运用锻炼解决问题的能力,通过软硬件设计锻炼实践能力,通过对设计全局的把握哺育系统观念。1.2.2研究意义本课题以FPGA芯片为控制器设计了智能小车控制系统,意义如下:a. 基于FPGA开发的控制器具有运算速度快,体积小,修
12、改方便,集成度高,可靠性高,易扩展等优点。b. 用FPGA实现智能算法可以提高算法的运算速度,满足实时控制的规定。本文在基于FPGA实现复杂的智能算法方面作了一些探索性的工作,为以后进一步嵌入其它复杂算法打下了基础。c. 搭建了智能小车控制系统的实验平台,为将来进一步研究和开发智能小车控制器做了基础性工作。d. 对这学期所学的专业知识进行系统梳理、综合运用。2总体方案说明2.1 设计目的本课题基于EDA技术,使用Altera公司的的EDA软件开发工具Quartus II进行设计准备、设计输入、功能仿真、设计解决、时序仿真和器件编程及测试,以可编辑逻辑器件FPGA为核心部件,基于FPGA核心开发
13、板进行扩展做出硬件,重要涉及以下各项:a. 掌握运用Verilog HDL设计智能小车控制器的原理、方法;b. 运用芯片内部时钟进行分段定期周期直线运动;c. 小车外接光电传感器检测障碍物并做出相应反映;d. 人工干预遥控运营;e. 在FPGA开发板上,针对FPGA芯片的特点进行系统配置并验证功能的实现,并做出扩展硬件;2.2 方案概述本设计是基于FPGA芯片,采用Verilog HDL语言进行的EDA设计,是软硬件协同设计,分为软件和硬件设计两部分。一方面进行软件的设计输入、功能仿真、设计解决,然后下载到FPGA芯片内配合外围电路进行硬件测试。图2.1 小车控制器原理框图其具体功能是实现自主
14、的周期运营,通过光电传感器检测障碍物进行避障运动,除此之外又加入了遥控功能,其原理框图如图2.1所示。光电传感器模块是芯片外接的三个光电传感器,当传感器检测到障碍时其输出电平信号发生变化,输入电平信号经程序解决后发送到FPGA芯片,向驱动模块发出相应的信号,使小车做出适当的规避动作。遥控模块是实现遥控运营功能的模块,涉及硬件的信号接受装置和软件解决模块。遥控器以无线信号的形式从发射端发出不同的指令信号,经无线接受电路解决之后输出并行信号,FPGA芯片根据程序设定向驱动模块发出信号,小车做出相应的动作。周期运营控制程序存储在FPGA芯片中,使用状态机进行状态循环,并在不同状态下向驱动模块发送不同
15、的驱动信号,使小车实现周期运营。驱动模块是接受FPGA芯片输出信号进行电机驱动的模块,由驱动程序和外围的驱动芯片两部分构成,在接受以上各模块的输出信号之后,进行解决之后输出控制信号驱动直流电机的运营。以上各模块综合起来实现智能小车控制器的所有功能,其流程图如图2.2所示。程序按照此流程设计完毕之后下载进FPGA芯片中,完毕外设电路之后再软硬件联合测试,以实现设计规定。图2.2 小车控制器流程图3软件设计小车控制器的软件程序设计采用Verilog HDL语言,运用Altera公司的EDA开发软件QuartusII进行设计。软件部分由原理图和模块程序两部分组成,涉及模式选择模块、分频器模块、电机驱
16、动模块、周期控制模块、障碍检测模块遥控模块。以及下文将具体介绍介绍各个功能块的功能及实现方法,并给出仿真波形。3.1VHDL语言介绍VHDL 的英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言,被认为是标准的硬件描述语言,有专家认为,在新世纪中,VHDL与Verilog HDL语言将承担起几乎所有的数字系统设计任务。VHDL 重要用于描述数字系统的结构、行为、功能和接口。除了具有许多具有硬件特性的语句外,VHDL 的语言形式和描述风格与句法十分类似于一般的计算机高级语言。VH
17、DL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件、一个电路模块或一个系统)提成外部(或称可视部分,即端口)和内部(或称不可视部分),即设计实体的内部功能和算法完毕部分。在对一个设计实体定义了外部界面后,一旦内部开发完毕后,其他的设计可以直接调用这个实体。这种将设计实体提成内外部分的概念是VHDL 系统设计的基本点。VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。VHDL还支持各种设计方法,既支持自底向上的设
18、计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。此外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员可以方便地创建高层次的系统模型。设计人员用VHDL进行设计时,不需要一方面考虑选择完毕设计的器件,就可以集中精力进行设计的优化。当设计描述完毕后,可以用多种不同的器件结构来实现其功能。VHDL是一种标准化的硬件描述语言,同一个设计描
19、述可以被不同的工具所支持,使得设计描述的移植成为也许。基于以上种种优点,VHDL作为IEEE的工业标准硬件描述语言,得到众多EDA公司支持,在电子工程领域,已成为事实上的通用硬件描述语言。3.2QuartusII软件介绍Max+plus II作为Altera的上一代PLD设计软件,由于其杰出的易用性而得到了广泛的应用。目前Altera已经停止了对Max+plus II的更新支持。Quartus II是Altera公司继Max+plus II之后开发的一种针对其公司生产的系列CPLD/FPGA器件的综合性开发软件,它的版本不断升级,目前已经发布了13.0版本,该软件有如下几个显著的特点:该软件界
20、面和谐,使用便捷,功能强大,是一个完全集成化的可编程逻辑设计环境,是先进的EDA工具软件。该软件具有开放性、与结构无关、多平台、完全集成化、丰富的设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌有综合器以及仿真器,可以完毕从设计输入到硬件配置的完整PLD、FPGA设计流程。Quartus II可以在Windows、Linux以及Unix上使用,除了可以使用TCL脚本完毕设计流程外,提供了完善的用户图形界面设计方式。具有运营速度快,界面统一,功能集中,易学易用等特点
21、。Quartus II支持Altera公司的MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘积项器件。支持MAX II CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充足运用成熟的模块,简化了设计的复杂性、加快了设计速度。此外,Quartus II 通过和DSP Builder工具与Matlab/
22、Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。3.3 分频器模块3.3.1 分频器的功能在接口电路中,时钟信号的作用至关重要。一般的FPGA开发板或最小系统板附带的晶振频率过高,达成20MHz甚至50MHz,但是这种时钟脉冲不适合直接接入程序工作,所以需要引入时钟分频电路,即分频器,将晶振输出的脉冲分频。分频之后的时钟信号适合接入电路工作。分频器模块就是用软件方法实现分频器的功能。时钟信号一般有两种功能,计数和选通。对于周期运营控制模块来说,每个状态都需要进
23、行计时,所以需要接入较低频率的时钟脉冲,便于对计时器赋值。驱动模块需要进行调速,而小直流电机需要通过调节驱动脉冲的占空比进行调速,在调节占空比时就需要进行计数运算,也就需要一个合适的时钟信号。障碍检测模块和遥控模块输入的是并行电平信号,在电平忽然改变时,由于电平跃变或信号传输的延迟产生竞争冒险现象,在输出端产生尖脉冲的毛刺,从而产生误操作。为了解决这一问题,需要接入一个选通控制信号。竞争冒险一般发生在输入信号变化瞬间,若选通信号在这期间将输出关闭,等到输入信号稳定后再将输出启动,就可以消除竞争险象。选通信号也是由分频器输出的时钟信号。3.3.2 分频器的设计分频器是将较高的频率进行分频,从而得
24、到较低的频率。需要用到计数器,高频率输入之后,触发计数器进行计数运算同时输出电平保持不变,当计数器到达一个限值时输出电平翻转。分频系数是输入频率和输出频率之比,计数上限就等于分频系数除以2再减去1。本设计输入晶振频率是50MHz,为了方便计数和选通,输出频率设定为100Hz,计数上限为249999。分频器模块如图3.1所示,CLK是50MHz晶振频率输入,CLK100是100Hz时钟频率输出。图3.1模块设计完毕之后,对程序进行功能仿真,设立CLK输入接口的频率为50MHz,得到如图3.2所示的仿真波形图。由于Quartus II软件只不适合长时间的仿真,在此截止时间设立40ms,此图只截取了
25、一个完整周期。图3.2分频器仿真波形由于50MHz的频率太高导致上升下降沿过密,所以在图中显示为一条黑色粗线,但是从时间上看波形还是对的的,在10ms时,输出端CLK_OUT100完毕1个周期输出。3.4 周期运营控制模块3.4.1 周期运营控制模块实现的功能周期运营控制模块用于实现小车的周期运营功能,通过计时器加状态机进行状态设立和状态转换。在本设计中周期运营控制模块将完毕如下周期运营的控制,功能块使能之后进行周期运动。一个运动周期涉及高速前进4S,停止2S,低速前进4S,停止2S,高速后退4S,停止2S,低速后退4S。之后进入下一周期再次高速前进4S。3.4.2 状态机简介本设计使用了状态
26、机进行设计,在此先对状态机进行简要的介绍。有限状态机简称状态机,是表达有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机及其设计技术是使用数字逻辑设计的重要组成部分,状态机是实现高效率、高可靠性的控制逻辑的重要途径。运用状态机进行逻辑系统设计无论是与基于VHDL的其他设计方法相比还是与完毕相似功能的CPU相比,都有其独到的优点。状态机克服了纯硬件数字系统控制不灵活的缺陷,可以按照输入信号的控制和预先设定的执行程序在各个状态之间顺序地执行切换,可以很好地执行顺序逻辑。状态机实现方式简朴,设计方案相对固定。采用状态机设计易于构成良好的同步时序逻辑,有助于消除大规模逻辑电路中常见的竞争
27、冒险现象。状态机与VHDL其他描述方法相比,层次分明、结构清楚、易懂好读,在模块化修改、优化、移植方面有优势。在VHDL语言中,状态机有多种实现方式。从输出方式上分为Mealy(米里)型和Moore(莫尔)型状态机。Mealy型状态机属于同步时钟状态机,他的输出是当前状态和所有输入信号的函数,其输出是在输入变化后立即发生的,不依赖时钟同步。Moore型状态机属于异步输出状态机,他的输出仅为当前状态的函数,在输入发生变化后,还必须等待时钟上升沿的到来,才干导致输出的改变。3.4.3 周期运营控制模块的设计为了实现周期运营控制的功能,在该模块使用状态机进行设计。一方面将周期中各个运营状态在状态机中
28、进行定义,高速前进4S、停止2S、低速前进4S、停止2S、高速后退4S、停止2S、低速后退4S分别定义为s0、s5、s1、s2 、s3、s6,S4。由此可以得到状态转换图,如图3.3所示。图3.3 周期运营状态转换图很明显,该状态机属于Moore型状态机,没有其他外部输入口,在使能之后进行顺序状态装换。每个状态在计数的同时像驱动模块发出使能信号、方向和速度控制信号。各状态相应的输出控制信号见表3.1。表3.1 运营状态信号输出对照运营状态电机使能转动速度转动方向S0高高速正向S5低停止停止S1中低速正向S2低停止停止S3高高速反向s6S4低中停止低速停止反向程序编译完毕之后创建如图3.4所示的
29、模块文献。图3.4周期运营控制模块图在该模块中,ENB输入端是模块的使能信号,CLK输入端是从分频器接入的100Hz的时钟脉冲。EN是电机驱动模块的使能控制信号输出端,ZF是电机正反转的控制信号输出端,SP是小车速度控制信号输出端。当ENB为低电平时该模块使能,当ENB为高电平时模块不工作。在模块使能之后,状态机直接进入s0状态,计数器在时钟脉冲上升沿时进行0到399的累加计数,同时EN端输出高电平使能信号,ZF端输出高电平正转信号,SP端输出高电平高速信号,此时小车前进。当计数器计数到399时,4S计数器清零,状态机跳转到下一状态s5。在状态s5中,计数器从0到199计数,计数周期为2S,在
30、此期间EN端输出低电平非使能信号,ZF端输出低电平反转信号,SP端输出低电平低速运营信号,此时小车停止。当计数器计数到199时,2S计数器清零,状态机跳转到下一状态s1.当s1状态时计数器在此进行和s0相同的计数,同时EN端继续输出高电平使能信号,ZF端继续输出高电平正转信号,SP端输出低电平低速运动信号,此时小车低速前进。当计数器再次计数到399时,4S计数器再次清零,状态机跳转到下一状态s2。在状态s2中,计数器从0到199计数,计数周期为2S,在此期间EN端输出低电平非使能信号,ZF端输出低电平反转信号,SP端输出低电平低速运营信号,此时小车停止。当计数器计数到199时,2S计数器清零,
31、状态机跳转到下一状态s3.在s3状态,除了ZF端输出低电平反方向运营信号之外其余输入输出量与s0相同。此状态下,小车高速反方向运营4S。当计数器再次计数至399时,又一次清零跳转到s6状态。在s6状态下,停止2S,又一次清零转到S4,此时ZF输出低电平反方向运营信号,其余输出同s1,此时小车低速反向运动。4S计数周期结束之后,计数器清零,状态机跳转到状态s0,开始下一周期的运营。如图3.5所示,在使能信号输入低电平之后,EN、SP、ZF端输出相应值,并且计数周期对的。在使能信号高电平时,所有输出端口复位到低电平,待到使能端低电平时继续周期循环。图3.5周期运营控制模块仿真波形3.5 避障模块3
32、.5.1避障模块实现的的功能避障模块接受外围电路4个光电传感器所发出的4位并行数字信号,经解决之后向驱动模块输出使能信号、正反方向信号,实现小车的障碍检测和规避障碍的功能。3.5.2 避障模块的设计由于光电传感器在没有障碍物阻挡的情况下输入的是高电平1,当传感器前方检测到障碍物时输入的是低电平0。由此可以列出小车规避障碍动作与传感器输入到FPGA芯片的电平状态对照表,见表3.2。在表中列出了传感器输入状态的所有也许情况,并给出小车相应的规避动作。表3.2 传感器输入状态与小车规避动作对照表传感器输入状态小车动作传感器输入状态小车动作0000停止0100左转0001直行0101直行0010右转0
33、110右转00111000100110101011直行后退直行右转直行01111100110111101111直行左转直行右转直行根据以上分析设计出避障模块的程序,编译仿真之后创建模块文献。如图3.6避障模块图图3.6所示。DIN20,DIN21,DIN22,DIN23分别为小车前方中、右、左,后四个光电传感器的输入信号,ENE端为模块使能信号输入。Zuo1,zuo2为左轮的两路输入,you1,you2为右轮的两路输入,en1,en2分别为左轮和右轮的使能。当ENE输入信号为低电平时,避障模块使能,此时输入的传感器信号经模块解决之后,输出端输出相应信号,实现对障碍的规避。编译之后进行模块的功能
34、仿真,得到如图3.7所示的波形。从波形上可以看出,以上设计功能所有实现。图3.7避障模块仿真波形3.6 遥控模块3.6.1 遥控模块的功能遥控模块是实现遥控功能的一个功能模块,遥控器发出的指令信号经接受电路解决之后输入到FPGA芯片中,遥控模块接受到信号之后向驱动模块输出控制信号,实现与遥控信号相应的动作。3.6.2 遥控模块的设计遥控器发射的信号经接受电路解决之后,输入到FPGA芯片中的是四位并行信号。遥控器按键相应的并行信号与小车动作见表3.3。本次设计的是模拟消防车灭火,小车是两前轮驱动,依靠车轮反向转动进行转向,并同时发出警报和七彩LED指示灯闪,所以设定遥控器上的四个按键组合进行操作
35、。表3.3 遥控器按键与小车动作对照表遥控器按键并行输入信号小车动作A0001右转B0010后退C0100前进DA和B10000011左转停止并启动风扇其他按键组合停止根据以上设定编写模块程序,编译之后生成模块文献,如图3.8所示。CLK接入系统时钟信号,key4.1是经遥控接受电路解决之后的四位并行信号,ENA是模块使能信号输入端。Zuo1,zuo2为左轮的两路输入,you1,you2为右轮的两路输入,en1,en2分别为左轮和右轮的使能。Feng是控制风扇的输入端,beep是控制蜂鸣器,led1是七彩LED指示灯的控制端。当ENA输入信号为低电平时,遥控模块使能,此时输入的4位并行信号经模
36、块解决之后,输出端输出相应信号,实现遥控运营。图3.8遥控模块图程序编写完毕之后验证其是否实现了设计功能,编译之后进行功能仿真,得到如图3.9所示波形。图3.9 遥控模块仿真波形从图上可以看出,该模块完全达成设计规定。3.7 循迹模块循迹模块接受外围电路4个光电传感器所发出的4位并行数字信号,经解决之后向驱动模块输出使能信号、正反方向信号,实现小车的寻黑线的功能。由于光电传感器属于红外线反射探测,因此目的的反射率和形状是探测距离的关键。其中黑色探测距离最小,白色最大;在没有障碍物阻挡的情况下输入的是高电平1,相称于前面挡了张黑纸,当传感器前方检测到障碍物时输入的是低电平0,相称于前面挡了张白纸
37、。由此可以列出小车循迹动作与传感器输入到FPGA芯片的电平状态对照表,见表3.4。在表中列出了传感器输入状态的所有也许情况,并给出小车相应的规避动作。表3.4 传感器输入状态与小车规避动作对照表传感器输入状态小车动作传感器输入状态小车动作0000直行0100右转0001左转0101停止0010左转0110直行00111000100110101011左转右转停止停止停止01111100110111101111左转右转停止右转直行根据以上分析设计出避障模块的程序,编译仿真之后创建模块文献。如图3.10循迹模块图图3.10所示。Clk2是系统时钟脉冲,DIN 0,DIN 1,DIN 2,DIN 3分
38、别为小车左,中,中,右四个光电传感器的输入信号,ENC端为模块使能信号输入。Zuo1,zuo2为左轮的两路输入,you1,you2为右轮的两路输入,en1,en2分别为左轮和右轮的使能,由于循迹速度太快,现象不明显,这里给使能进行了PWM调速,速度减慢,效果才好。当ENC输入信号为低电平时,循迹模块使能,此时输入的传感器信号经模块解决之后,输出端输出相应信号,实现对黑线的循迹。编译之后进行模块的功能仿真,得到如图3.11所示的波形。从波形上可以看出,以上设计功能所有实现。图3.11循迹模块仿真波形3.8驱动模块3.8.1驱动模块的功能驱动模块是本设计的基本模块之一,是将以上各模块的逻辑操作转化
39、到实际运动的一个模块。该模块输入上述几个功能模块输出的使能、正反和速度控制信号,再将其转化为直流电机驱动信号输出到外围驱动电路中,控制小车车轮的运营。由于本设计中出现了速度的变化,且使用的是直流电机,需要引入脉冲宽度调制(PWM)进行调速。3.8.2脉冲宽度调制调速基本原理脉冲宽度调制,英文是“Pulse Width Modulation”,缩写PWM,简称脉宽调制,是运用微解决器的数字输出来对模拟电路进行控制的一种非常有效的技术。PWM是常用的一种调速方法,其基本原理是用改变电机接通和断开的时间比(占空比)来控制电机的速度,在脉宽凋速系统中,当电机通电时,其速度增长;电机断电时,其速度减低。
40、只要按照一定的规律改变通、断电的时间,即可调整电机的速度。在传统的PWM调速系统中一般采用硬件作为脉冲发生器的方式,应用的元器件较多,同样会增长电路的复杂限度,随着电子技术和大规模可编程逻辑器件的发展,PWM采用软件的方法来实现调速过程,具有更大的灵活性,实现了硬件设计软件化。3.8.3驱动模块的设计周期运营模块向驱动模块输出使能信号、正反方向信号、速度信号。速度控制是本模块在程序结构上区别于其他模块的地方。分为高速挡和低速挡,将高速模式设立为将直流电直接接到直流电机上,低速档使用PWM调速脉冲驱动。由于本设计没有精确的速度规定,将低速档位的速度能与高速挡位的速度区别开即可。按此规定完毕程序设
41、计,编译之后创建块文献,如图3.12所示。图3.12 驱动模块图Clk1为系统时钟脉冲,EN为模块使能信号输入端,ZF输入端连接的是周期模块输出的正反方向控制信号,SP输入端是周期模块输入的速度控制信号。Zuo1,zuo2为左轮的两路输入,you1,you2为右轮的两路输入,en1,en2分别为左轮和右轮的使能。使能信号为高电平时,电机驱动模块开始工作。ZF输入为高电平时,电机正向转动;ZF输入为低电平时,电机反向转动。SP输入为高电平时,电机加速转动;SP输入为低电平时,电机低速转动。计数器在clk1时钟脉冲上升沿的触发下进行0到200的循环加法计数。在计数值在0到80区间中时,en1,en
42、2输出低电平;计数值大于80时,en1,en2输出高电平。对程序进行功能仿真之后得到图3.13所示波形,从图上可以看出,输图3.13 驱动模块仿真波形入输出波形完全达成设计规定。3.9 模式选择模块由于本设计之中包含周期运营、自主避障运营、遥控运营、魔手运营、循迹运营五种功能,功能之间的切换依靠五个自锁开关进行切换。模式选择模块的作用是为了防止自锁开关的误操作,保证当且仅当只有一个自锁开关使接通状态时向对图3.14 模式选择模块图应模块输出使能信号。程序设计完毕,编译之后创建块文献,如图3.14所示。EN_BIZHANG1,EN_YAOKONG,EN_CYCLE,EN_XUNJI,EN_BIZ
43、HANG分别相应五个自锁开关,当其中只有一个输入低电平时相应的输出端向相应能块输出低电平使能信号,并在数码管上显示数字指示第几个开关打开,其功能仿真波形如图3.15所示。图3.15 模式选择模块仿真波形3.10顶层图设计以上各个功能模块设计完毕之后需要建立一个顶层原理图文献,将以上模块综合起来,并按照逻辑功能连接模块之间的接线。这些工作完毕之后就得到图3.16所示的顶层图文献。图3.16 小车控制器程序顶层图资源占用情况:该程序运营周期过长,而QuartusII软件提供的仿真环境不适合长时间的功能仿真,故在此不进行全局仿真。4.硬件设计硬件设计的目的完毕软件程序设计功能的硬件载体。涉及FPGA
44、芯片选取,电源模块设计,模式选择开关电路的设计,输入信号采集的光电传感器障碍检测电路、无线信号接受电路和输出信号控制的驱动电路的实现。4.2检测电路检测电路涉及3个光电传感器进行障碍检测,和一个以LM339四电压比较器为核心的中控电路。本设计选用的光电传感器是NPN型光电开关。外接3条引线,分别是电源、接地、信号输出。正常状态下发射端发出红外信号,接受端没有接到发射回来的红外信号,此时感应信号输出高电平。当检测到障碍物时,发射端发出的红外信号经障碍物反射,接受端接受到红外信号,此时感应信号输出低电平。光电传感器有效探测距离3至80cm可调,本次设计通过调节滑动变阻器将探测距离设立为30cm。是
45、NPN型光电开关是NPN型光电开关是NPN型光电开关中控板以LM339为核心,对传感器集中供电,并接受传感器的反馈信号,经解决输出到FPGA芯片。LM339内部涉及有四个独立的电压比较器,在很宽的电源电压范围内合用于双电源工作模式,也合用于单电源工作模式。在方波发生器、时间延时器、脉冲发生器、A/D转换器等广泛应用。光电传感器信号输入到LM339中经电压比较器图4.7 一路光电传感器与电压比较器原理图解决之后,向FPGA芯片输入端发送数字信号。当传感器未检测到障碍时,中控电路相应的发光二极管常亮,向芯片发送低电平;当检测到障碍时,相应发光二极管熄灭,向芯片发送高电平。一路光电传感器和原理如图4
46、.7所示。将三路信号输出端接入FPGA芯片,作为避障模块的输入。图4.9 感应电路中控板图4.8光电传感器图4.8和图4.9所示为光电传感器和中控板实物。4.3 遥控接受电路图4.10 SC2272无线接受模块原理图遥控接受电路采用SC2272-M4解码电路,又名5V高频超再生四路解码接受模块。工作电压为DC5V;静态电流为4.5mA;调幅调制;接受灵敏度为-105dB;工作频率315433.92MHz;编码方式是焊盘编码(固定码);工作方式为点动,按住不放输出,放开停止输出。超再生接受模块采用LC振荡电路,内含放大整形,输出的数据信号为解码后的高电平信号,使用极为方便,并且价格低廉,所以被广泛使用。遥控接受电路原理如图4.10所示,VT是无线接受状态输出端,D3至D1是四位并行信号输出17。图4.12 无线信号发送模块图4.11 SC2272无线信号接受模块图4.11和图4.12所示为无线信号收发模块。4.4 驱动电路4.4.1直流电机驱动原理直流电机的驱动方法是H桥驱动,电路得名 “H桥驱动电路”是由于它形似字母H。图4.13中所示为一个典型的直流电机驱动电路。如图所示,H桥式电机驱动电路涉及4个三极管和一个直流电机。要使得直流电机运转,须导通对角线上的一对三极管,形成电势