基于ZYNQ7100的AD7606电压实时监测系统,过压蜂鸣器报警
开发环境如下:
开发板:米联客ZYNQ7100,MZ7100FA开发板;
AD7606模块:米联客的AD7606,串行输出模式,这里只有通道1有输入,所以只需要输出通道1;
EDA:VIVADO2019.2;
硬件连接实物如图:
设计框图如下:
AD7606的FPGA采集部分请看我前面的文章https://blog.csdn.net/qq_41667729/article/details/124061910
不同的是,为了配合zynq使用,我把源码封装成了自定义IP,如下:
IP配置如下:
大概原理:
稳压电源输出一个电压到AD7606模块,zynq7100的PL采集数据,并做16位的并行输出;
调用一个AXI GPIO的IP,BANK1设置为输入,16位,用于连接PL采集到的6位的并行数据,BANK2设置为输出,1位,用于控制蜂鸣器,蜂鸣器是有源的,给高电平触发,AXI GPIO配置如下:
最后,导出bit,加载SDK,在SDK里做浮点运算,算出实时采集到的电压值,再做比较,若采集到的电压值大于阈值,则蜂鸣器响。
BD如下图:
AD7606输入电压值得算法如下:
我的采集用的是±10V模式,在verilog代码里有,如图:
AD7606模块使用的是内部参考电压2.5V,所以公式中的REF/2.5V=1;
所以,根据公式自然可以得出,VIN=CODE*10/32768;其中CODE就是采集到的通道1的16位采集数据;
SDK主函数如下:
int main()
{init_platform();u16 ad7606;float V;XGpioCfg = XGpio_LookupConfig(GPIO_BUZZER_DEVICE_ID);XGpio_CfgInitialize(&buzzer, XGpioCfg, XGpioCfg->BaseAddress);XGpio_SetDataDirection(&buzzer, XGPIO_BANK1, 1); //inXGpio_SetDataDirection(&buzzer, XGPIO_BANK2, 0); //outXGpio_DiscreteWrite(&buzzer, XGPIO_BANK2, 0); //buzzer not workwhile(1){ad7606=XGpio_DiscreteRead(&buzzer, XGPIO_BANK1);V=(float)ad7606*10/32768;if(V>=6.2){ //threshold=6.2VXGpio_DiscreteWrite(&buzzer, XGPIO_BANK2, 1); //buzzer not work}else XGpio_DiscreteWrite(&buzzer, XGPIO_BANK2, 0); //buzzer not work//sleep(1);//printf("V=%f",V);}cleanup_platform();return 0;
}
我们来DEBUG一下看看效果:
先将电源输出设置为6.125,如下:
看看此时的采集到的值:
此时采集到的电压不足6.2V,再单步运行,程序跳到了蜂鸣器不工作的语句,如下:
现在把电源输出调到6.5246,如下:
再来看看DEBUG,
此时采集到的电压超过阈值6.2V,再单步运行,程序跳到了蜂鸣器工作的语句,如下:
注意事项:
1、AD7606采集的verilog代码,一定要认真读官方数据手册里面的几个时序图,特别是几个关键信号的持续时间,不然采集失败,不过还好,因为我已经帮你们做好了,工程拿去直接用就是,代码里也有注释,不过请原谅我数学老师教的英语注释;
2、电源输入时一定要注意电源地要和信号地共地,不然采集到的数据是乱的;
3、浮点运算时要把采集到的数据强制转换为浮点型,我不是专业搞软件的,最开始没注意,所以算出过总是没有小数点;
最后:整个源代码并未给出,目的是给兄弟们一个练手的机会,,如果你在自身尝试的基础上,实在搞不出来,可以加我VX要工程源码:(hllsq22) 我也可以给你适当的技术支持,教你怎么写。
基于ZYNQ7100的AD7606电压实时监测系统,过压蜂鸣器报警相关推荐
- 基于PaddlePaddle的智慧课堂实时监测系统
项目基于 PaddlePaddle 和 EasyDL 平台,以教务处和学工为一级用户,高校教师为二级用户,针对提升整体课堂教学质量为目的开发的一款实时课堂监测系统. 本项目主要监测课堂的出勤人数.学生 ...
- 基于改进YOLOv7&OpenCV的行人过马路速度与交通灯实时监测系统(源码&教程)
1.研究背景 横穿马路的行人运动速度太快.太慢或者突变都可能影响驾驶者的判断,从而导致交通事故.车载辅助系统应能够在交通路口为驾驶者提供异常行人的速度预判信息.文献[1-2]通过对不同红绿灯情形进行建 ...
- 实战 | 基于OpenCV的停车场空余车位实时监测系统(详细步骤 + 源码)
导 读 本文主要介绍如何使用Python和OpenCV实现一个停车场空余车位实时监测系统,并包含详细步骤和源码. 背景介绍 介绍实现步骤之前,先来看看测试视频(小型停车场实时监控画面): ,时长00 ...
- 基于云平台服务器的数据处理方法及系统,基于云平台的有毒有害气体监测系统解决方案...
原标题:基于云平台的有毒有害气体监测系统解决方案 一.方案背景 有毒有害气体检测仪是常用于检测有毒有害气体泄露的方法,但是,现有的气体检测仪存在诸多问题,如:品牌众多.良莠不齐.安装地点相对分散等问题 ...
- 基于大数据的公共建筑能耗监测系统的应用探究
摘要:为了解决当前公共建筑能耗居高不下的突出问题,借助当前信息化技术手段,围绕公共建筑能耗监测系统中的大数据应用,从监测系统的总设计框架入手,分别就物联网中数据采集器设计方式.数据传输技术.数据库部署 ...
- 基于边缘计算的森林火警监测系统
基于边缘计算的森林火警监测系统 张科1,叶影1,张红2 1 浙江省林业技术推广总站(浙江省林业信息宣传中心),浙江 杭州 310020 2 北京航天泰坦科技股份有限公司,北京 100071 摘要: ...
- 北斗形变监测系统_一款基于北斗卫星定位边坡表面位移监测系统
一款基于北斗卫星定位边坡表面位移监测系统 来源:网络 21世纪以来,我国公路建设的飞速发展大家有目共睹,公路基础设施的综合防护需求也是越来越大.而我国山地丘陵较多,地质灾害时有发生,有效的边坡安全监测 ...
- 智慧工地安全施工实时监测系统解决方案
背景介绍 随着经济的发展,混凝土搅拌车数量有很大增长,但是其超速.超载等原因造成了很多交通事故,给交通安全带来隐患,也给企业造成损失,严重影响了和谐城市建设的进程. 中国电子科技集团第52研究所经过 ...
- 工业物联网案例:船舶航行安全实时监测系统
对于航运公司来说,如何对船舶以及进行安全及时和高效的管理是一个难题.传统的管理模式依赖有经验的员工进行巡查巡检,无法实时掌握船舶航行的有关信息,从而影响到决策的制定与实施. 船舶航行安全实时监测系统, ...
最新文章
- 奥巴马表示10天内债务谈判出结果 债务违约可能性底
- 统一认证服务CAS 5安装
- JavaScript 技术篇-js获取document的几种方式,js获取dom元素的常用方法。
- 面积积分_被积函数的奇偶性问题(定积分、重积分、线积分、面积分)
- 正则去除html行内样式,Android-富文本处理-html字符串去掉内部样式,统一添加body、style,统一支持换行等...
- 设计灵感|没有素材时,如何用排版取胜?
- 旋转立方体(opengl)
- 使用Java的代理机制进行日志输出
- Hive Cli 和 Beeline
- linux下面桌面的安装
- jQuery 效果函数
- 统计学从数据到结论(第四版) pdf
- JSP中通过checkbook实现批量管理
- Web3在新加坡,叩开世界的大门
- windows mingw 64,SDL ,devil,glfw,opengl,qt环境搭建
- 腾讯bugly接入详解
- 智能音箱里小度、小爱、天猫精灵哪个更加好?(下)
- ASP.NET Core 认证与授权[3]:OAuth OpenID Connect认证
- python format输入你的身高和体重,输出你的BMI值,以及你的胖瘦情况
- 要怎么在计算机里清除桌面内存,怎么清理电脑内存 最全电脑内存清理方法
热门文章
- java 打印指定日期时间段内的每一天
- linux 包括CentOS ubuntu 国内下载源/版本选择/如何下载老版本
- 虹科案例 | Dimetix 激光测距传感器: 纸(布)卷直径与宽度的自动测量
- 基于SylixOS的中断浅析
- C盘空间清理 - C:\Windows\SoftwareDistribution\Download 下的大文件是否可删除
- 正规可靠、令人安心省心的物联网卡公司长啥样?
- 《杜拉拉升职记3》读书笔记
- Python——n-gram实现
- WLAN基础 无线局域网配置方法 旁挂三层组网隧道转发方式配置
- 新浪微博站内应用开发(网站类)