FPGA驱动传感器
大部分FPGA入门的第一个实验是点亮LED灯和流水灯,我们不妨试试通过驱动传感器来学习FPGA,本系列文章通过驱动传感器做有趣的小实验来学习FPGA。与 单片机驱动传感器相比,单片机需要一系列的库函数和库文件,而FPGA驱动传感器则更需要了解传感器的原理,而且在多传感器的使用时,FPGA可并行控制,使用效率高。
一、基础实验
传感器介绍
水位传感器:Water Sensor 模块通过测量电导率指示传感器是否干燥,潮湿或完全浸入水中。传感器走线使用 1MΩ 上拉电阻。电阻将拉高传感器的数值,直到水将传感器的信号线短接到地。裸导线上有水时,得到 LOW。否则,将是 HIGH。
巡线避障传感器:Grove-Line finder 为线跟随机器人设计,具有红外发射 LED 和红外敏感光电晶体管。它可以将数字信号输出到微控制器,检测到黑色时为高电平,检测到白色时为低电平,这样机器人可以稳定地跟随白色背景上的黑线,反之亦然。
振动传感器:Grove - Vibra tion Sensor是一个高敏感度的非定向的振动传感器。当模块处于稳定状态下, 电路被打开且输出处于高电平状态。当出现移动或是振动时,电路会短暂地断开且输出变低。并且可根据需求将模块的灵敏度设置调高或者调低。
硬件连接:
Runber FPGA 开发板与底板按照对应的接口连接,底板上的grove接口与传感器和LED灯连接,传感器的输出信号引脚为SIG引脚。查看Runber FPGA开发板与底板的原理图,找到传感器输出和LED灯所连接的FPGA引脚。FPGA模块通过引脚分配,使FPGA模块中的输入输出信号与硬件连接的引脚对应起来。
设计思路:
FPGA驱动水位、巡线、振动传感器等这一类数字传感器实验,主要是帮助初学者学习输入数字信号识别和控制信号输出。FPGA输入引脚与传感器连接后接收来自传感器的信号,通过判断输入信号电平的高低,控制与LED灯连接的输出引脚输出高电平或低电平信号。在本文中用到的水位传感器、巡线避障传感器和振动传感器的例程在FPGA代码设计原理上基本相同,通过FPGA识别传感器输出的电平,根据电平高低决定FPGA输出控制信号电平的高低,各传感器在不同条件下输出信号的高低电平情况可参考上表。
以水位传感器为例,FPGA识别传感器的输出信号,水位传感器裸导线干燥时传感器信号为高电平,FPGA输出低电平LED控制信号,LED灯处于熄灭状态;水位传感器裸导线遇水时传感器信号为低电平,FPGA输出高电平LED控制信号,LED灯被点亮。
实验源码
FPGA识别水位传感器的输出信号water的电平,通过判断water电平的高低来控制LED指示灯的点亮和熄灭。当water为高电平时LED点亮,当water为低电平时LED熄灭。(以下源码同样适用于水位、巡线、振动传感器)
实验效果展示:
1、 水位传感器
FPGA识别水位传感器的输出信号的电平,通过判断water电平的高低来决定输出信号的高低电平,控制LED指示灯的点亮和熄灭。当裸导线遇水,输出低电平时LED点亮,当裸导线干燥,输出高电平时LED熄灭。
2、 巡线避障传感器
FPGA识别巡线避障传感器的输出信号line的电平,通过判断line电平的高低来决定输出信号的高低电平,控制LED指示灯的点亮和熄灭。当检测到黑线输出高电平时LED点亮,当检测到白色背景输出为低电平时LED熄灭。
3、 振动传感器
FPGA识别振动传感器的输出信号line的电平,通过判断line电平的高低来决定输出信号的高低电平,控制LED指示灯的点亮和熄灭。振动传感器在稳定状态时输出高电平信号,LED熄灭,在发生振动时输出短暂低电平信号,LED灯短暂点亮。
|