基于环境光照度和物体距离的数据采集系统设计

这篇具有很好参考价值的文章主要介绍了基于环境光照度和物体距离的数据采集系统设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

程序链接:通过百度网盘分享的文件:AP3216C传…
链接:https://pan.baidu.com/s/1vzvXr7dZvoATq2zyjmZ_AA?pwd=b4b4 
提取码:b4b4
复制这段内容打开「百度网盘APP 即可获取」

目录

基于环境光照度和物体距离的数据采集系统设计

第1章 绪论

1.1课题目的与现状

第2章 硬件平台基本概述及编程

2.1 实验平台简介

2.2 FPGA工作原理

2.3 AP3216C传感器

2.4 UART串行接口

2.5 USB

2.6 I2C协议

2.7 程序设计

2.6 本章小结

第3章 软件实现平台——LabVIEW

3.1 LabVIEW简介

3.2 VISA函数

3.2.1 VISA配置串口

3.2.2 VISA写入

3.2.3 VISA读取

3.2.4 VISA关闭

3.3 程序编程

3.3.1 AP3216C传感器实验(主模块)

3.3.2 VISA接收数据模块

3.3.3 读取数据转换模块

3.3.4 数据写入模块

3.4 本章小结

第4章 实验验证

4.1 FPGA管脚分配

4.2 连线

4.3 验证

4.4 本章小结

第5章 结论及展望

参考文献


 文章来源地址https://www.toymoban.com/news/detail-797470.html

基于环境光照度和物体距离的数据采集系统设计

摘要

        随着时代的发展和科技水平的提高,机器视觉领域得到迅猛发展,智能传感器已经可以代替人眼获得外部世界信息,渗透进人类生活的各个领域和各个方面。然而随着社会经济不断飞速健康地发展,需要处理的信息量变得越来越多,计算机等类似的平台在机器视觉领域处理的速度方面越来越不能满足需求,此时,FPGA芯片应运而生,它以它集成度高、容量大等特点迅速受到人们关注,并得到了越来越多的应用,本文主要利用FPGA来实现环境数据的采集设计。

       本次课程设计主要利用下位机FPGA开发板上自带的AP3216C传感器,采集测量环境光强度和距离的数值,并将采集到的环境数值通过UART串行接口传送至上位机即计算机,之后利用LabVIEW语言编程将采集到的实时数据通过LabVIEW软件,最终能用波形图表显示,并且实现数据的保存与打印,实现对环境光照度和物体距离信息的实时数据采集、无线传输与图表显示的功能,从而实现基于FPGA的环境数据采集系统设计。

       通过实验验证,本次设计可以实现简单环境下环境光照度和物体距离的一个基本监测,并实时在LabVIEW软件上显示数值图像,完成了对环境数据的监测。

关键词FPGA;LabVIEW;AP3216C传感器

第1章 绪论

1.1课题目的与现状

       随着时间的推移以及技术的不断积累和创新,人工智能对人类的生产生活产生了深远的影响,无论是智能机器人还是自动驾驶设备,这些创造推动了整个世纪的发展,取得了空前的进步,不断地吸引着来自世界各国的许多优秀的科学家和工程师等人进入这一领域[1]。眼睛是人类认识世界的窗户和平台,人类对外面世界的感知主要依赖于眼睛。科技的不断发展使得人类运用自己的智慧创造出许多可以代替人眼来监测和工作的智能产品,不但解放了劳动力,并且监测数据的准确度有时超越了人类的肉眼。故而,这类机器视觉产品受到了社会极高的认可度。如今,这些拥有“眼睛”的机器人或者控制设备广泛应用于在人们的生产、生活和工作中。尽管机器视觉是人工智能行业的一小部分,机器视觉却是一个极为重要的环节,在人工智能的发展过程中处于不可撼动的位置[2]。

ap3216c 毕业设计,fpga开发,嵌入式硬件

                                                      图1-1温室大棚环境监测

                                  Fig.1-1 Environmental monitoring of greenhouse.

ap3216c 毕业设计,fpga开发,嵌入式硬件

                                                  图1-2 机器参与生产制造

                                     Fig.1-2 Machine involved in manufacturing.
        在人工智能和互联网经济的不断飞速发展过程中,机器视觉应用从无到有,经历了许多阶段,未来还是有很大的发展前景。机器视觉是由计算机从外部设备收集的数据,来执行人眼可以达到的功能,如压缩、存储和处理计算机生成的数据等相关操作[3]。21世纪以来,随着计算机和智能技术的发展,计算机视觉已发生了迅速变化,并且在整个行业中得到了扩展,遍及农业、工业、军事等诸多领域,如图1-1、图1-2所示。

       在军事用途中,可以通过对敌机进行勘测,或者在水中使用设备对敌机识别追踪,为下一步的行动提供基础,例如在飞行过程中如果发现敌机存在不良行为,可以提前做好应对策略,以防出现不可挽回的损失。在工业制造领域中,机器人使用先进的技术来检查运动中的物体,以确保它们可以正常工作并快速定位物体。视觉系统可用于代替人眼以完成组装、质量控制等工作。这不仅解放了人的双手,而且提高了工作效率和产品质量。在现代农业、气象环保等领域中,经常需要对一些环境参数(例如光照度)进行监测,以做出相应处理,确保设备和系统运行在最佳状态[4]。最常见到的应用就是在温室大棚中,因为农作物对光强的依赖非常强。因此,本课题就是基于FPGA芯片上的AP3216C传感器设计出一种环境参数检测系统,实现对环境光照度和物体距离的数据采集,以期之后可以应用于一些特定的环境条件下。

       然而社会经济不断飞速健康发展,需要处理的信息量变得越来越多,计算机等类似的平台在机器视觉领域处理的速度方面越来越不能满足需求,此时,FPGA芯片应运而生,它以它集成度高、容量大等特点迅速受到人们关注,并得到了越来越多的应用,本文介绍的就是主要利用FPGA来实现环境数据采集设计。

      FPGA(Field-Programmable Gate Array)即现场可编程门阵列,它最开始问世是作为专用集成电路(ASIC)领域中的一种半定制电路,令人意外的是,它不但不存在定制电路的一些固有缺点,而且还有弥补原有可编程器件门电路数有限的不足的优势[6]。FPGA以其可编程灵活性高、开发周期短、并行计算可编程灵活性高等核心优点逐渐进入人们的视野。FPGA自问世以来,已经经过了几个不同的历史阶段。1984年,全球首个FPGA产品为赛灵思发明,那时还被称为“赛灵思XC2064”,直到1988年Actel才让FPGA这个词出现于人们的视野[7]。在发明时代,FPGA数量远远比用户的应用产品小得多。1991年,当Xilinx公司推出第三代FPGA产品---XC4000时,可编程技术开始出现在人们的视野中。1992年至1999年,FPGA进入扩展时代,IC代工厂逐渐发现它是推动工艺发展的理想选择,由此FPGA成为扫除工艺障碍的有力武器[8]。2000年以来,FPGA已成为数字系统中比较占有优势的通用器件,FPGA的设计特点发生了改变,单纯的实现逻辑已不能满足用户的需求,FPGA设计必须逐渐符合系统设计需求。2008年之后至今,FPGA进入了系统时代,更多地整合系统模块,结合高效的系统编程语言,推动着产业的发展。虽然没有夸张地像蒸汽机发明之时受尽嘲讽,但是FPGA在诞生阶段,毋庸置疑,还是会受到大家的质疑,对于那个年代来说,晶体管逻辑门资源非常宝贵,大家都不太敢随心所欲地使用,基本上都希望用的越少越好。此时,Xilinx公司创始人之一Ross Freeman没有与众人想法一致,他大胆预言预测:“在未来,晶体管将变得极为丰富从而可以‘免费’使用。”事实证明,他说的是正确的。

      传感器从定义来讲是“从一个系统接收功率,通常以另一种形式将功率送到第二个系统中的器件”。通俗来说,传感器就是一种检测器件,由敏感元件和转换元件组合来检测信息、感知外界信息,通过变换方式,让传感器中的数据转换成电信号或其他形式输出,满足信息处理、显示、控制等要求。传感器的发展大致经历了结构型传感器、固体传感器和智能传感器这三个阶段。特别是二十世纪八十年代发展起来的智能传感器是微型计算机与检测技术相结合的产物,具有自诊断、自适应的功能。如今,传感器使用率极高,已经广泛应用于社会发展及人类生活的方方面面,已经促进了传统产业的改造和更新换代。目前,消费级的感应器产品已大量流入市场,消费者现在都可以看得见,摸得着。甚至可以这么说,传感器已经家喻户晓,所有人、所有地方都可以感受到传感器的存在。

       本次课程设计主要利用下位机FPGA开发板上自带的AP3216C传感器,采集测量环境光强度和距离的数值,并将采集到的环境数值通过UART串行接口传送至上位机即计算机,之后利用LabVIEW语言编程将采集到的实时数据通过LabVIEW软件,最终能用波形图表显示,并且实现数据的保存与打印,实现对环境光照度和物体距离信息的实时数据采集、无线传输与图表显示的功能,从而实现基于FPGA的环境数据采集系统设计。其中,AP3216C传感器是敦南科技推出的一款包含数字环境光传感器(Ambient Light Sensor,ALS)、接近传感器(Proximity Sensor,PS)和一个红外LED(Infrared Radiation LED,IR LED)的三合一环境传感器。

       其中,环境光传感器是一种能够检测到周围环境中的光信号并能够将其转化为对应的输出电压信号的传感器。接近传感器是代替图像监控和其他接触类的检测方法,以无需接触检测对象进行检测为目的的一类传感器。因其功耗低、控制简单、尺寸较小而广泛应用于智能手机、电容式触摸屏、数码相机等领域。例如,这类传感器可以应用于智能手机上面检测环境光强度,用来实现自动背光控制,以及接近开关控制(听筒靠近耳朵,手机自动灭屏功能)。在系统检测元件的辅助下,经过换算处理,可以得到精准程度较高的距离变化幅度数据,借助传感器来判断物体位移以及物体间隔距离[9]。在设计整个传感器模组的过程中,最主要的内容还是关于距离传感器与环境光传感器的集成处理。经过全面的系统封装操作后,能够形成传感器的完整系统模组,使传感器模组能随时感知周边物体遮挡光线的角度以及距离[10]。

      FPGA和传感器领域的不断更新与创新,使得机器视觉领域有了更多研究的途径,不论是国内的发展,还是国外的发展,都将会给世界带来新的技术创造与革新,人类社会会继续向着智能化、科技化快速发展,这是我们共同的愿景。相信不久的将来,机器视觉领域会有广阔的发展方向与空间。

 

第2章 硬件平台基本概述及编程

2.1 实验平台简介

    本次设计所用到的硬件开发平台是新起点FPGA开发板,其外观结构如图2-1所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

图2-1 新起点FPGA开发板资源

Fig.2-1 Resource map of FPGA development board.

       从图2-1中可以看出,新起点FPGA开发板的外观精致、器件众多,同时扩充了许多的接口和功能模块,整个开发板看起来结构工整、美观。它的特点包括:

       1) 接口众多。FPGA开发板设有大量的标准外设接口,为后续的各种实验提供方便。

       2) 设计灵活。开发板上很多资源都可以灵活配置,以满足不同条件下的使用。其中芯片引出两排20*2扩展口,1个17*2扩展口,共104个扩展IO口。

      3) 资源充足。主控芯片采用自带414Kbit嵌入式RAM块的EP4CE10F17C8,并外扩256Mbit (32M字节)和64Kbit(8K字节)的EEPROM,面对大内存需要和大数据存储条件时可以游刃有余。同时开发板上载有 RTC实时时钟等其他接口和部件以满足各种不同实验的要求。

      4) 布局清晰。各个接口和部件都用方框划分且丝印标注,查找起来十分方便快捷;还有一些比较频繁使用的外设用更大的丝印指出,查找使用起来十分方便;资源分配较为合理,物尽其用。

 

2.2 FPGA工作原理

      FPGA是Field Programmable Gate Array的简称,也就是现场可编程门阵列。它是一种半导体数字集成电路,FPGA是一种高密度的可编程逻辑器件,它有一个独特的优势,就是其内部的大部分电路功能都可以随时更新。自从Xilinx公司在上个世纪八十年代设计出第一片FPGA以来,FPGA 的发展很快,它的集成密度和性能提高不断提高,其集成密度高达千万门/片以上。由于FPGA器件具有集成度高、方便 易用、开发和上市周期短的显著优势,故在数字设计和电子生产中得到迅速普及和应用,并一度在高密度的可编程逻辑器件领域中独占鳌头。

      FPGA运用了逻辑单元阵列LCA(Logic Cell Array)这样一个说法,内部囊括了可配置逻辑模块CLB(Configurable Logic Block)、输入输出模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。 现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。FPGA是利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。

2.3 AP3216C传感器

      AP3216C传感器是由敦南科技推出的一款整合型传感器,它内部集成了:环境光传感器(Ambient Light Sensor,ALS)、距离传感器(Proximity Sensor,PS)和一个红外LED(Infrared Radiation LED,IR LED)。其中,距离传感器具有10位的分辨率,环境光传感器具有16位的分辨率。AP3216C传感器能够支持多种工作模式,我们使用的是ALS+PS+IR模式,在该模式下AP3216C传感器可以连续采集环境光照强度和距离值。

       AP3216C传感器内部功能模块的框图如图2-2所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

图2-2 AP3216C功能框图

Fig.2-2 Function block diagram of AP3216C.

       当有物体靠近时,图 2-2中的红外发光二极管(IR_LED)发出的红外线碰撞到该物体后反射到红外光电二极管(PS)上,光电二极管将光信号转换成电流信号,并通过模数转换器(ADC) 将其转换成数字信号存储在寄存器中。物体离的越近,反射到PS上的红外光强度越高,模数转换后得到的数据就越大,从而实现感应物体距离远近的功能。同理,可见光光电二极管(ALS)感应环境光强度,并将其转化成数字信号,从而实现环境光强度的检测。

       开发板上AP3216C传感器接口部分的原理图如图2-3所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

图2-3 AP3216C接口原理图

Fig.2-3 Schematic diagram of AP3216C interface.

        AP3216C传感器作为I2C接口的从器件与EEPROM等模块统一挂接在开发板上的I2C总线上。LEDA是器件内部红外发光二极管(IR_LED)的阳极,LEDC作为阴极,一般连接到LED的驱动输出脚LDR。

ap3216c 毕业设计,fpga开发,嵌入式硬件

                                          图2-4 AP3216C相关寄存器及其说明

Fig.2-4 AP3216C related registers and their descriptions.

       其中所用到的AP3216C传感器相关寄存器如图2-4所示,图中地址0X00对应的是一个系统模式控制寄存器,我们在初始化的时候将它配置为“011”,开启ALS+PS+IR检测功能。剩下的6个寄存器为数据寄存器,分别寄存AP3216C传感器采集到的红外光强度、环境光强度以及距离值。

      AP3216C传感器采用I2C总线协议与控制器(FPGA)进行通信,因此我们通过I2C协议实现对AP3216C 传感器相关寄存器的配置和采集数据的读取。

2.4 UART串行接口

       串行通信有同步串行通信和异步串行通信两种方式。同步串行通信必须要求通信双方在接收和发送数据时时处于同一时钟的控制下;而异步串行通信是指通信双方在数据传输过程中各自使用各自的时钟。

      UART是一种采用异步串行通信方式的通用异步收发传输器(universal asynchronous receiver-transmitter),它在发送数据时将并行数据转换成串行数据来传输,在接收数据时将接收到的串行数据转换成并行数据。UART串口通信一般需要两根分别用于串口发送和串口接收的信号线来实现。

      异步通信的UART 口是以字符为单位进行数据传输的,如图2-5所示,即为每个字符的传输格式,我们把它们分别区分为线路空闲位(高电平)、起始位(低电平)、5~8位数据位、校验位(可选)和停止位(位数可以是1、1.5或2位)。因为UART内部有配置的寄存器,我们可以自己配置数据位数(5~8位)、是否有校验位和校验的类型以及停止位的位数(1位、1.5位或2位)等。其中,校验位分为奇校验和偶校验,用于检验数据在传输过程中是否出错。奇校验时,发送方应使数据位中1的个数与校验位中1的个数之和为奇数;接收方在接收数据时,对1的个数进行检查,若不为奇数,则说明数据在传输过程中出了差错。与之类似,偶校验则检查 1的个数是否为偶数。若不为偶数,则说明数据在传输过程中出了差错。

ap3216c 毕业设计,fpga开发,嵌入式硬件

图2-5 异步串行通信数据格式

Fig.2-5 Asynchronous serial communication data format.

        同时,用户可以在UART通信过程中自行设定数据格式及传输速率,为了使通信准确,收发双方应约定并遵循同样的设置。例如数据位,在平时实际应用中我们一般都选

        同时,用户可以在UART通信过程中自行设定数据格式及传输速率,为了使通信准确,收发双方应约定并遵循同样的设置。例如数据位,在平时实际应用中我们一般都选择8位数据位。串口通信的速率用波特率表示,它表示每秒传输二进制数据的位数,单位是bps(位/秒),常用的波特率有9600、19200、38400、57600以及115200等。

2.5 USB

     目前嵌入式系统用的都是UART接口,但是由于DB9接口类型的RS232串口占用存储空间较大,大多数电脑已经不再配置UART-DB9接口了,很多系统已经选择USB转TTL方案,所以只能实现USB总线转UART功能,通过Mini USB接口实现与上位机通信。USB串口原理图如图2-6所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

   图2-6 USB串口

Fig.2-6 USB serial port.

       由图2-6中可以看出,CH340_RXD和CH340_TXD分别是USB串口芯片的接收端和发送端,也就是说,CH340_RXD事实上对应的是FPGA引脚的串口发送端,CH340_TXD对应的是FPGA引脚的串口接收端。 同时,这个USB接口还可以给开发板提供电源,但是它提供的最大电流只能达到500mA,大家在做LCD显示实验或者高速AD/DA实验等对供电能力要求较高时,USB就不能满足这个需求了,这个时候,建议使用电源适配器来给开发板提供电源。

2.6 I2C协议

     I2C是集成电路总线(Inter-Integrated Circuit)的简称,它诞生于上世纪八十年代初,是由Philips半导体公司(现在的NXP 半导体公司)设计出来的一种简单、双向、二线制总线标准,一般多用于主机和从机在通信过程中信息量不大和传输距离较短的情况下。大多数情况下,主机启动总线,同时产生时钟用来传送数据,此时接收数据的器件就会被认为是从机。 I2C总线由数据线SDA和时钟线SCL构成的通信线路,既可用于发送数据,也可接收数据。在主控与被控之间数据可以进行双向传输,数据的传输速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s,各种被控器件均并联在总线上,通过器件地址识别。

      最开始传输数据之前,I2C总线还处于空闲状态中,此时,串行时钟线SCL和串行数据线SDA线因为上拉的缘故处于高电平状态。一旦接收到传输指令,主机(此处指FPGA)想即刻开始传输数据, 就要在SCL为高电平之时将SDA线拉低,产生一个起始信号,从机检测到起始信号后,准备开始接收数据,当数据传输完成后,主机再产生一个停止信号,在SCL为高电平时,SDA从低电平跳变到高电平,此时即为停止信号,从机知晓该停止接收,至此,停止接收数据。I2C 整体时序如图2-7所示,起始信号之前为空闲状态,两个串行线均为高电平,起始信号之后开始进入数据传输状态,一直到停止信号出现之前。因为数据传输过程中有双向数据线(SDA),所以,主机可以向从机发送数据,也可以读取从机输出的数据。停止信号出现之后,总线再次恢复到之前的空闲状态。

ap3216c 毕业设计,fpga开发,嵌入式硬件
图2-7 I2C整体时序图

Fig.2-7 I2C overall sequence diagram.

 

2.7 程序设计

       根据实验任务,我们可以大致规划出系统的控制流程:FPGA首先通过I2C总线读取AP3216C 采集的环境光及距离数据,然后将读到的距离值来用于控制4个LED灯的亮灭,以指示物体的远近;并将环境光照强度用数码管数值显示出来。由此画出系统的功能框图如图2-8所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

 

图2-8 AP3216C环境光、距离测试实验系统框图

Fig.2-8 Block diagram of AP3216C environmental light distance measurement experimental system.

        顶层模块(ap3216c_top):顶层模块例化出了I2C驱动模块(i2c_dri)、AP3216C数据采集模块(ap3216c)、LED显示模块(led_disp)、UART数据接收和发送模块(uart_recv 和uart_send)、8位转24位数据模块(bit8_to_bit24)、数据预处理模块(data_to_uart)。如图2-9为程序的顶层模块原理图。

ap3216c 毕业设计,fpga开发,嵌入式硬件

图2-9 程序的顶层模块原理图

Fig.2-9 The top module schematic diagram of the program.

     (1)I2C驱动模块(i2c_dri):由于AP3216C采用I2C协议与FPGA进行通信,所以需用I2C驱动模块实现FPGA与AP3216C信号的交互。

   (2)AP3216C数据采集模块(ap3216c):通过调用I2C驱动模块(i2c_dri)来实现对AP3216C采集数据的读取。将读到的环境光照强度数值als_data传递给数码管模块(seg_led)显示,将读到的距离值ps_data传递给led显示模块(led_disp),用于控制4个led灯的亮灭来指示物体的远近。

    (3)LED显示模块(led_disp):该模块由两个显示单元。第一个显示单元根据ps_data(距离值)的远近点亮LED灯的个数,距离越近,LED亮的个数越多,距离越远,LED亮的个数越少。第二个显现单元,根据als_data(环境光照强度数值) 的大小给予白色LED不同的亮度,该亮度由PWM(脉冲宽度调制)控制。

    (4)UART数据接收和发送模块(uart_recv 和uart_send):uart_recv用于接受上位机发送的开始采集命令;uart_send用于发送下位机采集到的数据。

    (5)8位转24位数据模块(bit8_to_bit24):上位机发送的开始采集命令由24位数据构成;因为,串口发送一次只能发送8位,24位数据要分3次传送,每次8位。该模块将数据恢复成24位的形式,并进行判断,若为真,则开始采集数据。

    (6)数据预处理模块(data_to_uart):将接收到的als_data和ps_data数值,转换成可供串口发送模块发送的数据类型,将传感器检测到的26位数据转换成6个8位数据。

2.6 本章小结

      本章主要介绍了本课题的硬件平台,主要有实验平台的基本结构、FPGA的基本结构和工作原理、AP3216C传感器的原理和设置、UART串口的原理、USB接口、I2C协议以及程序设计的各个模块的功能和程序设计。硬件实验平台主要负责采集环境光照度和距离数据通过UART串口将数据传递给上位机。

 

第3章 软件实现平台——LabVIEW

3.1 LabVIEW简介

      LabVIEW (Laboratory Virtual Instrument Engineering Workbench)是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了函数的执行顺序。

      LabVIEW软件是NI设计平台的核心,也是开发测量或控制的理想选择。使用LabVIEW功能强大的图形编程语言,能够提高编程效率。LabVIEW图形化的本质使得它理所当然地可以作为数据显示软件包,可以以任何我们想要的方式显示结果。由于LabVIEW具有数据管理、记录与报表生成的附加模块,例如,NI LabVIEW数据记录与监控模块,可以快速记录、管理、搜索采集的数据并将导出至第三方软件工具,适用于环境监测和数据整合,因此便成为了本次实验软件实现平台的最佳选择。

3.2 VISA函数

       虚拟仪器软件构架(Virtual Instruments Software Architecture,VISA)最开始是为了确保多厂商的仪器具有协同工作的能力而开发出来的。随着VISA的出现,使得一套仪器控制程序适用于多种硬件接口成为可能。通过VISA用户能与大多数仪器总线连接,包括GPIB、USB、串口等等,以下为此次设计所用到的VISA函数。

3.2.1 VISA配置串口

ap3216c 毕业设计,fpga开发,嵌入式硬件

                                                           图3-1 VISA配置串口

Fig.3-1 VISA configuration serial port.

       配置串口是进入串口通讯的门槛,只有配置成功,才能正确通讯。VISA配置串口程序框图代码如图3-1所示。

    (1)VISA资源名称:打开所连接的串口。

    (2)波特率是传输速率。这里使用115200。

    (3)数据位是输入数据的位数。这里使用8。

    (4)奇偶指定要传输或接收的每一帧使用的奇偶校验。


3.2.2 VISA写入

ap3216c 毕业设计,fpga开发,嵌入式硬件

       VISA写入程序框图代码如图3-2所示,本次设计在“写入缓冲”处写入“ F10E0D ”以便给予下位机开始采集的命令。


3.2.3 VISA读取

ap3216c 毕业设计,fpga开发,嵌入式硬件

       VISA读取程序框图代码如图3-3所示,从VISA资源名称指定的设备或接口中读取指定数量的字节,并使数据返回至读取缓冲区。本次设计将“字节总数”设置为6,每次从下位机接受6个字节的数据,每个字节8位,一共48位数据。

3.2.4 VISA关闭

       VISA关闭程序框图代码如图3-4所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件
图3-4 VISA关闭

Fig.3-4 VISA closed.

3.3 程序编程

        LabVIEW编程主要是想让下位机采集到的数据通过图表的形式表现出来,此次编程采用经典状态机模式编程,一共分为4个模块:AP3216C传感器实验(主模块)、VISA接收数据模块、读取数据转换模块、数据写入模块。

3.3.1 AP3216C传感器实验(主模块)

       该模块是由VISA函数以及相关子模块组成。各个模块采用经典状态机模式连接。其中,采用枚举型控件进行状态机的跳转。LabVIEW程序框图代码如图3-5所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

                                                            图3-5 传感器实验(主模块)

Fig.3-5 Sensor experiment (main module).

3.3.2 VISA接收数据模块

     VISA通常默认以ASCII形式发送与接收数据。但是,我们通常发送数据、处理接收的数据以HEX形式(16进制)进行。该模块可以将发送或者接收到的以ASCII显示的数据转换位以16进制来显示数据,方便后续处理。LabVIEW程序框图代码如图3-6所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

3.3.3 读取数据转换模块

      读取数据转换模块是将采集到的数据进行转换,以便后续图表呈现。因为这48位数据是由环境光数值和距离数值组合,环境光数值在data[23:0]的位置上,而距离数值在data[47:24] 位置上。该模块是将输入的48位数据进行重新组合,以便正常显示环境光数值和距离数值。每一个字节的高4位为位置位,低四位为数值位。
      例如,接收到的数据为A5_B1_C4_D5_E6_F5,则其中A5_B1_C4的数据为环境光数值,A代表个位,B代表十位,C代表百位,5、1、4代表每一个位的具体数值;同理,D5_E6_F5为距离数值,D代表个位,E代表十位,F代表百位,5、6、5代表每一个位的具体数值。LabVIEW程序框图代码如图3-7所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

3.3.4 数据写入模块

       数据写入模块的作用是将写入次数、时间、环境光照值、距离数值分别写入Excel对应的列上。LabVIEW程序框图代码如图3-8所示。

ap3216c 毕业设计,fpga开发,嵌入式硬件

 

3.4 本章小结

         本章主要介绍了LabVIEW的相关程序设计,介绍了本次设计会用到的VISA函数,并分别介绍了AP3216C传感器实验主模块、VISA接收数据模块、读取数据转换模块、数据写入模块以及程序语言,使得下位机采集到的数据通过LabVIEW软件显示出来。至此,硬件设计与软件设计都已结束,后续可以通过实验验证程序的可行性,并且不断调试与修改。

 

第4章 实验验证

4.1 FPGA管脚分配

       本次实验所采用的FPGA管脚分配如表4-1所示。

表4-1 管脚分配

Tab.4-1 Pin assignment.

信号名

方向

管脚

端口说明

sys_clk

input

E1

系统时钟,频率:50Mhz

sys_rst_n

input

M1

频率复位,低电平有效

led[0]

output

D11

LED0

led[1]

output

C11

LED1

led[2]

output

E10

LED2

led[3]

output

F9

LED3

Led_1

output

F3

显示亮度

iic_scl

output

D8

IIC时钟信号线

iic_sda

input

C8

IIC双向数据线

 

4.2 连线

ap3216c 毕业设计,fpga开发,嵌入式硬件

 

图4-1 实物连线图

Fig.4-1 Physical picture.

       本次实验所需连线如图4-1所示,包含UART串口连线、程序下载连线、白色LED连线。其中,黑线为UART串口连线(可以充当电源线),白线为程序下载线,白色LED通过杜邦线外接。

4.3 验证

       如图4-2所示,将手指紧贴AP3216C器件的时候,数码管的数值变为0,白LED灯微微发亮,曲线和数据显示区域的光照强度数值均为0(弱),和LED亮度可以相互应证。同时,距离数值变为最大,四个LED灯全部点亮(有一个灯损坏)。曲线和数据显示区域的距离均为1023(最大),由此可知距离的大小与LED灯的点亮个数可以相互应证。

                              

ap3216c 毕业设计,fpga开发,嵌入式硬件

ap3216c 毕业设计,fpga开发,嵌入式硬件

 

        如图4-3所示,将手机的手电筒朝AP3216C器件照耀时,白色LED灯亮度增加,曲线和数据显示区域的光照强度数值均为293(中等),和LED亮度增加相互应证。同时,距离数值变小,只有一个LED点亮,曲线和数据显示区域的距离均为76(小),由此可知距离的远近与LED灯的点亮个数可以相互应证。

4.4 本章小结

       本章主要通过上机验证,证明了程序设计的可执行性。四个小LED灯可以根据距离的远近,点亮对应的个数;同时,白色LED可以根据光照强度数值的强弱,发出不同明暗程度。并且,上位机发送的读取命令、数据的接收、数据的保存均可正常实现。最终,本课题基本实现了对环境光照度和物体距离的数据采集。至此,本次实验圆满结束。

 

第5章 结论及展望

       时代的飞速发展使得人们的生活水平逐渐提高,机器视觉的强大功能为人类的生活提供了巨大便利,自动监测系统减少了社会大量人力、物力的投入,更加精准、快速是时代进步阶段对自动监测系统提出的更高要求。

        本次课题设计基本上完成了对环境光照度和物体距离的数据采集系统设计。为了本次设计具体所做的工作如下:首先,查阅各种资料理解课题,查找文献,分析本课题的研究意义与研究现状,整理出自己的思路及解决步骤;再者,开始学习LabVIEW语言和硬件描述语言Verilog语言基础知识,为后续编程打好基础;然后,分模块整理思路,先做硬件部分,后做软件部分,分模块编程进行系统设计;最后,进行调试、测试和评价等。

       虽然本次课题设计基本实现了环境光照度的数据采集系统设计,能够在一个简单环境下实现对光照强度数据的采集,但是还是有一些难点未能克服,比如,在一个复杂的光照环境下,现有的光照强度对监测的光照强度有没有一些干扰,此时,显示出来的环境光照度值还能否作为准确参考,有待商榷。鉴于以上问题,对于复杂环境下的数据采集系统设计仍然值得进一步研究。

       FPGA和传感器领域的不断更新与创新,使得机器视觉领域有了更多研究的途径,不论是国内的发展,还是国外的发展,都将会给世界带来新的技术创造与革新,人类社会会继续向着智能化、科技化发展,这是我们共同的愿景。相信不久的将来,机器视觉领域会有广阔的发展方向与空间。

 

 

参考文献

  1.    张金,王文清.基于FPGA的多环境参数在线监测系统的设计[J].科技风,2021(03):101-103+178.
  2.    赵东哲,靳晔,张雷,等.基于FPGA和LabVIEW的RGV双目视觉识障设计[J].工业控制计算机,2020,33(12):77-79+82.
  3.    汪乐意. 基于FPGA的双目立体视觉图像采集及预处理系统的设计[D].西安科技大学,2019.
  4.    严鹤轩,袁卫.基于物室大棚环境监测系统设计[J].山西电子技术,2020(05):28-30+54.
  5.    杨晋,亢利军,胡程勇,等.基于室内环境多参量传感的监测系统设计与实现[J].工业控制计算机,2020,33(09):61-63+67.
  6.    简志景,梁昊.一种基于FPGA的多通道数据采集系统设计[J].信息技术与网络安全,2020,39(09):6-11.
  7.    Dandan Ding, Silong Wang, Zoe Liu, Qingshu Yuan. Real-Time H.265/HEVC Intra Encoding with a Configurable Architecture on FPGA Platform[J]. Chinese Journal of Electronics,2019,28(5).
  8.    Chao Peng, Weiheng He, Yue Song, Sha Zou. Design of a Novel Dual-core Ultrasonic Nondestructive Testing System Based on ARM and FPGA[A]. Institute of Management Science and Industrial Engineering. Proceedings of 2019 7th International Conference on Machinery, Materials and Computing Technology(ICMMCT 2019)[C].Institute of Management Science and Industrial Engineering:计算机科学与电子技术国际学会(Computer Science and Electronic Technology International Society),2019:8.
  9.    艾迈斯半导体推出小型环境和接近光传感器模块[J].单片机与嵌入式系统应用,2020,20(09):96
  10.    朱超. 基于物联网的温室大棚远程环境监测系统[D].南京信息工程大学,2019.
  11.    李旭辉.平板电脑的环境光感和距离传感器模组电路设计分析[J].中国新技术新产品,2020(20):26-27.
  12.    倪世煜,赵立明.平板电脑的环境光感和距离传感器模组电路设计[J].电子技术,2016,45(07):72-74+68.
  13.    曾兆麟.环境光传感器在智能终端中的应用软件设计[J].科技视界,2013(26):365-366.
  14.    杨乐. 基于FPGA的移动目标视觉检测技术[D].中北大学,2019.
  15.    常世龙,刘青云,郭燕.基于LabVIEW的土壤环境监测系统设计与实现[J].电子技术与软件工程,2021(09):34-35.
  16.    Le Nie, Limin Mao, Zhenghang Zhao. Design and Implementation of Visual System Based on FPGA[A]. Institute of Management Science and Industrial Engineering. Proceedings of 2019 2nd International Conference on Mechanical Engineering, Industrial Materials and Industrial Electronics(MEIMIE 2019)[C].Institute of Management Science and Industrial Engineering:计算机科学与电子技术国际学会(Computer Science and Electronic Technology International Society),

 

 

 

 

 

 

 

 

到了这里,关于基于环境光照度和物体距离的数据采集系统设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenCV测量图像中物体距离

    先注意 这不是双目摄像头的 测距哦~~ 计算物体之间的距离与计算图像中物体的大小算法思路非常相似——都是从参考对象开始的。我们将使用0.25美分作为我们的参考对象,它的宽度为0.955英寸。 并且我们还将0.25美分总是放在图片最左侧使其容易识别。这样它就满足了我们上

    2024年02月02日
    浏览(41)
  • 毕业设计 基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信

    选题之前,同学们要弄明白一件事情,做毕业设计是干什么用的! 这里我告诉大家,毕业设计对于你来说,不是让你去搞研究,掌握运用所学知识的,也不是让你去比谁做的毕业设计多么牛逼,多么厉害。 说白点,它的作用就是一个,让你顺利毕业,能够拿到学位证,毕业

    2023年04月08日
    浏览(179)
  • DirectX3D 虚拟现实项目 三维物体的光照及着色(五个不同着色效果的旋转茶壶)

    本篇文章是中国农业大学虚拟现实课程的一次作业内容,需要对五个茶壶模型使用不同的光照进行着色和渲染,然后旋转展示。 本人的代码也是在其他人的代码的基础上修改来的,主要用于服务下一届,没有商业用途,侵删。 代码包括CPP文件代码和FX(着色器文件)代码两部

    2024年02月05日
    浏览(56)
  • Unity计算2个物体之间距离 (2个三维向量之间)

        public float GetDistance(Vector3 startPoint, Vector3 endPoint)     {         float distance = (startPoint - endPoint). magnitude ;         return distance;     }     方法2     public double GetDistance(Vector3 startPoint, Vector3 endPoint)     {         double x = System.Math.Abs(endPoint.x - startPoint.x);         double y

    2024年02月08日
    浏览(52)
  • 基于等照度线和窗口匹配的图像修补算法

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处        图像修补的目的是基于已有的图像信息或数据库内信息,对缺失区域进行合理地修复。在诸多领域如电影、摄像、医疗等行业,有广泛的应用。        传统上,

    2024年02月04日
    浏览(45)
  • Unity光照相关知识和实践 (烘焙光照,环境光设置,全局光照)

    本文将会通过一个简单的场景搭建,介绍如何使用烘焙光照以及相关的注意事项。另外还介绍了Unity内全局光照(GI)的知识和GI实际在游戏内的表现效果。 Unity关于光照相关的参考文档地址:https://docs.unity.cn/cn/current/Manual/LightingOverview.html 下面是一些基本的概念 直接光照指的

    2024年02月15日
    浏览(39)
  • 【Unity脚本开源】记录鼠标按下的位置和移动的距离来进行物体的旋转,并在鼠标释放后将物体恢复到初始旋转位置

    ♥️作者:白日参商 🤵‍♂️个人主页:白日参商主页 ♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!! 🎈🎈加油! 加油! 加油! 加油 🎈欢迎评论 💬点赞👍🏻 收藏 📂加关注+! 提针对这个需求,以下是示例脚本代码: ♥️作者

    2024年02月12日
    浏览(44)
  • 【Unity细节】为什么按下移动键之后,物体还是会滑行一段距离(阻力都无穷大了)

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 为什么按下移动键之后,物体还是会滑行一段距离? 😶‍🌫️原因1:物体的阻力是不

    2024年02月03日
    浏览(65)
  • 第12章 STM32+BH1750光照传感器+OLED模块显示环境光照强度

    今天给大家介绍一块嵌入式毕设中也经常用到的一款传感器——BH1750光照传感器,如下图。 (该传感器的购买链接和代码我已放在资料里,想要资料的同学,评论区留下邮箱即可) 相比光敏传感器,它可以直接输出环境光照强度的数值(范围是0~65535lx),非常适合懒人党,

    2024年02月04日
    浏览(54)
  • 球谐函数实现环境光照漫反射实践

    该文章以及代码主要来自 图形学论文解析与复现:【论文复现】An Efficient Representation for Irradiance Environment Maps 作者:Monica的小甜甜 与原文的不同 : 对一些有问题的地方进行了修改 添加了注释 对有疑问的地方添加了疑问点 引入了其他一些Blog填充了原文中忽略的信息 首先根

    2024年02月09日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包