基于FPGA的智能小车设计

来源:电子设计工程 作者:—— 时间:2011-04-07 14:01

智能监控机器人是近年来机器人应用工程中一项前沿性的题目,智能化探测小车是智能行走机器人的一种。智能监控机器小车就是针对上述情况,在参考了目前大多数智能机器人的基础上,以降低成本为原则设计的。小车具备温湿度和环境监测、无线通信、躲避障碍物以及无线遥控等功能。此智能监控机器小车与目前已有的同类设计相比,有性价比高、操作方便、可靠性好、功耗小等优点。

1 系统结构及硬件设计
    整个系统由发送端(智能小车部分)和接收端(控制台:控制和显示部分)组成,如图1所示。系统由传感器系统、动力及转向系统、CCD图像传感器模块、LCD显示、温度和湿度测量电路和供电系统等组成,整个系统的控制核心以2片Altera公司的EP2C20F484为核心,在Altera公司的QuartusⅡ和SoPC Builder开发环境中完成。根据系统硬件结构添加所需要的外围模块并生成NiosⅡCPU。

a.JPG


1.1 供电系统
    小车安装了两块充电电池,分别为FPGA开发板(FPGA控制电路)和小车运动提供能量,电池置于车身底部。
1.2 传感器系统
    系统采用了6个红外对射传感器,通过FPGA配置的NiosⅡCPU来检测传感器信号实现小车躲避障碍物的功能。漫反射型红外对射传感器也称光电开关,是一种集发射器和接收器于一体的传感器,多用于检测障碍物。原理是由光电开关辐射出来的调制红外光束被检测物体反射回来,红外线经同步选通接收,由电子开关线路驱动回路,从而来检测物体的有或无。当被检测物体的表面光亮或其反光率极高时,漫反射式的光电开关是首选的检测模式。这种电路模块体积小,信号容易转化为标准电平。

1.3 动力及转向系统
    本小车有左右轮两个电机及龟机驱动。驱动电路采用了CT Microelecttonics公司的大功率直流电机驱动芯片L298,最高支持50 V电压,最大电流为5 A,满足大功率电动机的要求,外围电路简单,同时,由于该芯片为双路结构,分别控制左右电动机,增加了电路的可靠性,减少了复杂性。电机控制采用PWM脉冲宽度调制方式来控制汽车的前进速度。由NiosⅡCPU写入控制字,可得到不同占空比的PWM驱动信号,此PWM信号送入电机驱动芯片的控制端来调节速度。
1.4 小车自动避障系统
    小车自动避障系统采用Verilog HDL语言编写驱动电路。该模块(见图2中的MOTOR)和一个数据选择器(见图2中的select_2)相连来实现自动避障与人工遥控之间的切换。当小车上NiosⅡCPU的SEL管脚输出低电平时,数据选择器将把该模块的输出作为电机的控制指令。这样设计的好处在于设计具有响应迅速,不需要NiosⅡCPU参与,提高了CPU处理湿度、温度数据并控制无线模块收发数据的效率。该逻辑电路的工作原理是根据红外传感器发回来的数据,经过逻辑判断来控制电机的工作状态。

b.JPG


1.5 小车的人工控制
    小车的人工控制和自动避障之间的转换由一个数据选择器控制,当小车上NiosⅡCPU的SEL管脚输出高电平时,数据选择器将把无线模块所发送过来的指令作为电机的控制指令,实现了对小车的无线控制。
1.6 温度和湿度测量
    在温度测量系统中,采用抗干扰能力强的新型数字温度传感器DS18B20,该系统设计中将DS18B20的1,3引脚分别接于FPGA板的GND和+3.3 V管脚,2引脚接FPGA的I/O脚,传输控制及数据信号。DS18B20最高可用12位表示温度值,最高5位为符号位。
    采用HS1101湿度传感器,具有响应速度快,工作温区宽(-40~+100℃),测量范围大(0%~100%RH),可靠性高,稳定性好,功耗低,外围电路简单等优点。
    工作原理为:用HS1101传感器与TLC555构成多谐振荡器,HS1101传感器内部电容会随湿度的变化而变化,从而使输出频率发生变化。编写VHDL程序在FPGA设计一个频率计可精确的测出频率值,通过输出频率与湿度的关系便可得到湿度值。
1.7 无线收发系统
    系统采用PTR4000无线嵌入式模块,工作频率为2.4 GHz,最高工作速率可达1 Mb/s,高效GMSK调制,且有CRC检错功能。具有低功耗,抗干扰能力强,体积小等优点。主要有三种工作模式,分别为:配置模式、ShockBurst发送模式和ShockBurst接收模式。

2 软件设计和调试
    采用NiosⅡ进行C语言编程。NiosⅡ集成开发环境(IDE)是NlosⅡ系列嵌入式处理器的基本软件开发工具。所有软件开发任务都可以在NiosⅡIDE下完成,包括编辑、编译和调试程序。NiosⅡIDE是基于开放式的、可扩展Eclipse IDE project工程以及EclipseC/C++开发工具(CDT)工程,NiosⅡIDE为GCC编译器提供了一个图形化用户界面,可以支持标准C。NiosⅡIDE编译环境自动地生成一个基于用户特定系统配置(SoPC Builder生成的SoPC文件)的makefile,有利于程序的开发。

  NiosⅡIDE包含一个强大的、在GNU调试器基础之上的软件调试器——GDB。完成软件代码的编写后,可以对代码进行仿真和调试。Nios-ⅡIDE提供了一个方便的闪存编程方法。任何连接到FPGA的兼容通用闪存接口(CFI)的闪存器件都可以通过NiosⅡIDE闪存编程器来烧结。针对本设计及应用,编写了系统控制程序和LCD显示程序。流程图如图3所示。

c.JPG



3 系统调试
    小车系统需要测试能否准确接收控制台发送的指令并控制小车运动或停止,以及向前、后、左、右转向。还要测试主控机能否准确接收小车采集到的温度以及湿度信息,能否正确显示。经过多次测试,发现由于系统程序是采用收发循环转换的模式,为了让两个系统能够收到对方发的信息,对小车的遥控与自动部分进行简单的分化。自动情况下,控制台为主要接收端,小车为主要发送端,一般情况下小车发送数据到控制台,需要自动到遥控的转换时,通过在延时时间内进行中断来实行从自动到遥控的转换;在遥控状态下,控制台为主要发射端,小车为接收端,一般情况下控制台发送小车行进指令到小车,需要采集数据时,通过温度、湿度采集按键来对小车进行收发转换,同时小车发出采集数据指令,之后再次转为接收模式。这样做之后使小车与控制台的软件部分清晰明了,小车的行进以及采集显示数据能够实时的进行。
    湿度测量系统需要测试是否能够精准输出频率值。采用芯片LM555手册上推荐的电路,由于元件的误差,使输出的频率并不精确,经过与标准的湿度仪进行比对,通过参数调整,用直线做近似,最后得到的频率值误差在几赫兹(频率范围是6 008~7 314Hz),经过预算得到很准确的湿度值。开始求湿度值时用的是解一元三次方程的方法,由于计算量大,对小车的行进会有很大影响,后来在小车端只是把小车采集到的频率值通过红外天线传输到主控端,并将原先的小车自动避障由NiosⅡCPU控制改为由Verilog编写的硬件模块控制,最后在控制台做湿度值的计算。这样的更改既减少了小车NiosⅡCPU的工作量,同时由于小车的自动避障改为由独立的Verilog模块控制,运行起来很流畅。
    对于无线收发系统,要测试其可靠性以及发送或接收的信息的准确性。测试方法是单独设计了一个软核下载到SoPC中,并编写一段程序用于测试是否正确写入配置控制字,是否能够进行ShockBurst模式的接收或发送。问题是对天线各模式时序的把握,一开始写的程序总是不能正确写入配置字,反复调试,并用数字示波器观察写入配置字的瞬间过程以及各延时的时间,最后测试成功,并把发送或接收的状态用LED显示出来,每发送或接收到一个数据包就让LED闪一下。

4 结语
    本设计以FPGA嵌入NiosⅡ软核处理器为核心,辅以必要的外围电路,构成了高度集成化的片上系统。另外,SoPC系统的柔性配置,使得可以基于此系统扩展片外存储器和多路输出。设计的小车具有较强的避障能力,且能通过接收端对其进行方便的控制,温度和湿度采集均达了较高的精度,并且能实现动态显示,无线收发模块的有效范围最远可达300 m,可应用于较为恶劣的环境,可代替人进行温度和湿度的实地检测。

资讯排行榜

  • 每日排行
  • 每周排行
  • 每月排行

华强资讯微信号

关注方法:
· 使用微信扫一扫二维码
· 搜索微信号:华强微电子