labview入门到出家11(补充)——基于单片机和labview开发的虚拟示波器
之前有小伙伴提到需要虚拟示波器的资料,有些库还有文件丢失了,直接给的工程跑不起来,这里我把关键的地方讲解一下,大家可以自行开发。其实开发不难,只是有些点会耗点时间。虚拟示波器,顾名思义就是非实物的示波器,但也还是硬件(便携的采集设备)和软件(在电脑上显示和操作)的结合,和数字示波器相比,本质上区别不大,现在贵一些的数字示波器从功能上看,也很像一台计算机了)。今天要讲的只是低配的,简易版的虚拟示波器(在下当年的毕业设计)。下位机是基于STM32的ADC采集实现的信号抓取,然后通过串口传到上位机中显示。单片机的ADC和串口传输,注定了这虚拟示波器采集的波形频率不会太高,之前能在上位机上还原得比较好的波形频率是25Khz以下,如果大家有其他更快的采集(DSP,FPGA,NI采集卡)和数据上传的方式(USB等),可以尝试一下,也期待你们的分享。下面大体对硬件(外围电路),单片机程序(STM32),和上位机程序(labview)三部分进行讲解。
1、硬件
硬件很简单,就是将输入到单片机的波形信号进行处理。因为我用的STM32的单片机,能检测到的电压值是0~3.3V,所以硬件部分就是把输入的交流信号先控制在-1.65V~1.65V之间,最后再通过电路将信号往上偏置1.65V就可以给单片机采集了。至于如何将信号放大放小,控制到可采集的电压范围呢,可以通过上位机发送串口数据给单片机,让单片机控制继电器(或者其他开关方式)切换运放端的电阻,达到更改运放倍数的方式,最后上位机呈现波形的时候加上放大缩小的倍数,就可以在上位机界面上还原波形信号了。我这里先采用了LM358的双电源运放芯片(交流信号,需要双电源运放芯片),后面因为LM358在高频输入的时候,运放输出的信号在零点处会失真,换了一款高频的运放芯片UA741,问题解决。双电源里面的负电压是通过LCL7660输出的。至于偏置电压,是我在multisim上面仿真出来的,实际测试后确实可以偏置,大家可以尝试使用1比1的运放后加偏置电压,也可以参考我的设计电路。附上完整电路图。
1-1:运放电路
这是直接用了毕业设计里面的图片,之前的文件不见了。应该能看懂吧 。运放采用的是最简单的负反馈放大电路。放大倍数Vout/Vin=R1/R2。
1-2:负电压电路
由于运放芯片想运放负极电压信号,需要采用双电源模式,必须为运放芯片提供负电压。所以本设计采用低功率,额定电压为5V的电源极性转换器ICL7660。ICL7660输入5V正电压,输出-5V电压。为LM358提供双电源。本设计采用ICL7660的基本负电压转换模式。
1-3:1.65V偏置电路(自己仿真实现的,实测可用)
2、单片机软件
这个直接用STM32的单片机ADC采集和串口例程,将数据分高4位和低8位的方式(单片机串口只能上传8位的数据),将12位的ADC数据通过串口分别传输给上位机,ADC采样率调到最高,串口通过DMA的方式,这样可以达到最高的采集速度。最后分别用两个for循环,循环往串口发送1000个低8位和1000个高4位数据。每次发送两组1000个数据的间隔你们可以自己定,我记得我应该间隔是100ms左右刷新一次数据,上位机整合两组数据后,一次显示1000个数据点。ADC和串口传输数据的可以在STM32的例程中找到,具体逻辑这里不再累述。不过还是附上当年写的几条程序吧。
1、连续读取1000个ADC数据;
2、拆分低8位和高4位;
3、向串口上传低8位数据;
4、向串口上传高4位数据;
3、上位机
上位机在整合两次接收的数据,直接调用Labview提供的信号分析函数,如单频测量函数,频谱测量函数以及幅值和电平测量函数。
3-1:读取串口数据
3-2:整合高4位,低8位位数据。右侧输出直接给到波形显示控件
3-3:波形控件
前面板->控件->新式->图形->波形图。
4、最终整合后的虚拟示波器效果
采集的信号范围为5HZ~25KHZ(STM32F1系列采样率最高为0.5MS/s),0.1V~16.5V的模拟信号;幅值误差低于5%,频率误差低于2%,能满足日常中大多信号/电压的信号采集与分析。希望对大家有所作用,也希望国内开源资源能越来越丰富吧。虽然一般技术不能给我们工程师带来多大的财富,但至少在某个年龄段,在追求一种引以为傲的技能的时候,能让我们感到充实,自豪,也是一种不错的人生体验呢!
原创不易,一键三连拉!
labview入门到出家11(补充)——基于单片机和labview开发的虚拟示波器相关推荐
- labview入门到出家5(进阶篇)——程序调试以及labview函数库的运用
跟了前面几章的操作流程,相信大家对labview有了一定的认识.其实只要了解了labview的编程思路,再熟悉地运用各个变量,函数以及属性,那么我们就可以打开labview的大门了.跟其他编程语言一样 ...
- labview入门到出家6(进阶篇)——移位寄存器的使用
前面介绍了如何熟悉和使用Labview自带的库函数以及调试方式,大家后期基本可以凭借这两个方式从入门到出家了,哈哈,后面就靠各位同仁99%的努力了.这篇为啥要讲移位寄存器呢,主要是之前做的项目和经验告 ...
- labview入门到出家9(进阶)——串口通讯
Labview在工控领域,如产线,实验室等环境用得较多,其中与仪器通讯控制的方式有串口(RS232,RS485,TTL),GPIB,网口,CAN等,其中串口在仪器还有单片机控制中用来调试居多.(很多开 ...
- 基于单片机和labview上位机智能小车设计
课程设计目的 课程设计题目及要求课程设计方案硬件模块设计选择主控模块(AT89c52)电机驱动模块红外循迹模块课程设计目的(1)掌握51单片机内部结构和应用(2)学习labview上位机程序设计和编写 ...
- 基于单片机的毕业设计推荐
** 2023基于单片机的毕业设计推荐: ** 1.基于51单片机的多功能门禁系统(低端.功能限制较大). 2.基于单片机的多功能实时时钟. 3.基于单片机的音乐播放器. 4.基于STM32单片机的多 ...
- 基于实践的LabVIEW零基础入门视频教程
原文地址::http://blog.eeecontrol.com/LabVIEW1/ <基于实践的LabVIEW零基础入门视频教程> 资料不在多,而在于精,资料太多,反而会迷失方向,学习最 ...
- 基于STM32单片机和Labview的温湿度波形实时显示串口助手(一)----手把手教学
基于STM32单片机和Labview的温湿度波形实时显示串口助手(一)----手把手教学 最近导师有个关于USRP的上位机系统需要找人做下,索性就把任务下发给我了.因为其它课题组有labview的正版 ...
- 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...
基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...
- NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示
2019独角兽企业重金招聘Python工程师标准>>> 前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目 ...
- 基于单片机的贪吃蛇游戏
绪论 1.1 研究背景与意义 随着社会的发展,人们生活的步调日益加快,越来越多的人加入了全球化的世界. 人们不再拘泥于--,J,块天地,加班,出差成了现代人不可避免的公务.而此时一款可以 随时随地娱乐 ...
最新文章
- keras.layers 各种层介绍
- mysql数据库表的基本操作
- 如何使用SQL Server 2008打开和关闭IDENTITY_INSERT?
- Debian下配置SSH服务器的方法
- 反击CobaltStrike
- 整理了十个Python自动化操作
- IDEA查看某个类的某个方法或该类在哪里被调用 / 引用
- android fragment 抽屉,android – 更改Fragment中的导航抽屉项目
- node服务成长之路
- Qt学习:QDomDocument
- android 7双排设置菜单,双排状态栏
- PPP协议基础与工作流程
- 祛除光盘上的小划痕/光盘的工作原理/光盘的正确使用方法
- Eclipse主题插件之DevStyle
- 节约里程法java代码,智慧职教: 在配送路线优化的节约里程法中有几个基本的假设前提条件,他们是()。...
- 空间三点定圆的解算过程
- 职场中如何与老板谈加薪
- 数据分析大数据面试题大杂烩02
- 南海将打造“区块链+”金融科技产业高地
- ubantu 18.04.4下载