集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 829|回复: 1

ZRtech Altera CycloneIV FPGA开发板--超声波测距

[复制链接]
羽蒙 发表于 2014-7-15 16:42:38 | 显示全部楼层 |阅读模式

本帖最后由 南盗 于 2014-7-9 20:09 编辑


前段时间幸运的抢到一块FPGA开发板,感谢版主,感谢论坛和zrtech。
之前本想写SDRAM的,发现之前有人写过,而我在测试的时候有一个字节不对,现在还在排查,先弄个超声波测距吧。
平台:ZRtechAltera CycloneIV FPGA开发板
开发环境:quartusII 11.1sp2
实现目标:利用超声波检测障碍物距离,然后用数码管显示。
一:超声波原理与FPGA设计
(1)超声波模块接线:     +5V接VCC
                     触发信号输入(10us的TTL脉冲) Trig,对应FPGA输出
                     回响信号输出(输出TTL电平信号,与射程成比例) echo 对应FPGA输入
                     OUT不接(也有些超声波没有这个引脚)
                     GND接地
注意:不要带电连接。
(2)超声波模块时序图
  
需要提供一个短期的10us脉冲触发信号。该模块内部将发出8个40Khz周期电平并检测回波。一旦检测到有回波信号则输出回响信号,它是一个脉冲的宽度成正比的距离对象,为了保证发射信号对回响信号的影响,触发信号的周期最好60ms,太小了有影响,太大了测的不准。
       即FPGA提供一个trig信号,周期为60ms左右,高电平为10us。
  

       然后就是检测echo信号了,设回响电平的宽度为某x us,计算为x /58,单位是cm,即将测得的回响电平的宽度(us单位),除以58,就得到了障碍物的距离。这个公式很好理解,其实就是我们在初中物理的一个回声的公式s=ct/2,
        
我这里用了一个distance_cnt来保存echo的高电平长度,echo的高电平长度=distance_cnt*1000/48(ns,晶振为50m),化为us,为distance_cnt/48,
然后计算距离就是s= distance_cnt/48/58= distance_cnt/2784,这里我就用了一个除法器了。
  
然后就是得到了结果就保存到distance里面了,这里超声波的测量距离只有几米,因为,distance真正有效的就是【8:0】,分别分离出来:
  
然后数码管显示就可以了:

二:仿真
由于distance不是output,要在modelsim中加入进行观察。。
  
验算:580/58=10cm,当然这里只测试了一次。
三:上板验证:
无遮挡,检测的应该是距离天花板的。。。
  

故意用纸张遮挡:
  
我在程序中设置了<30的时候,beep就一直响。
zhiweiqiang33 发表于 2014-7-15 17:11:18 | 显示全部楼层
Altera CycloneIV FPGA开发板
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-25 14:48 , Processed in 0.056111 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表