IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> stm32传感器连续采集系统程序笔记 -> 正文阅读

[嵌入式]stm32传感器连续采集系统程序笔记

CSDN话题挑战赛第2期
参赛话题:学习笔记

学习之路,长路漫漫,写学习笔记的过程就是把知识讲给自己听的过程。这个过程中,我们去记录思考的过程,便于日后复习,梳理自己的思路。学习之乐,独乐乐,不如众乐乐,把知识讲给更多的人听,何乐而不为呢?

博客写作背景----项目中解决的问题

最近遇到一个使用stm32单片机多路采集信号的项目,还需要在上位机进行波形的查看,信号算法的处理,初步定为使用labview编写上位机程序进行处理。为啥用labview呢,概括地说,LabVIEW作为测试软件开发平台有如下特点和优点。
(1)图形化编程环境
LabVIEW的基本编程单元是图标,不同的图标表示不同的功能模块。用LabVIEW编写程序的过程也就是将多个图标用线连起来的过程,连线表示功能模块之间存在数据的传递。被连接的对象之间的数据流控制执行顺序,并允许有多个数据通路同步运行。其编程过程近似人的思维过程,直观易学,编程效率高,无须编写任何文本格式的代码,易为多数工程技术人员接受。
(2)可重用性高
LabVIEW继承并发展了结构化和模块化程序设计概念,使测试程序能够很好地体现分层性、模块化,即可以把任意一个测试程序当做顶层程序,也可将其当做其他测试程序的子程序,这样,用户就可以把一个复杂的应用任务分解为一系列、多层次的子任务。通过为每个子任务设置不同的功能,并将这些测试子程序进行适当的组合、修改、交叉和合并等,就可以在顶层最终建成一个包括所有应用功能的测试系统。
(3)开发功能高效、通用
LabVIEW是一个带有扩展功能库和子程序库的通用程序设计系统,提供数百种功能模块(类似其他计算机语言的子程序或函数),包括算术运算、函数运算、信号采集、信号输出、数据存取、信号分析处理、数据通信等功能模块,涵盖了测试的各个环节,用户通过拖放及简单的连线,就可以在极短的时间内设计好一个高效而实用的测试软件,再配以相应的硬件就可完成各种测试任务,既节约了时间,又可提高测试的可控制性及测试速度。
(4)支持多种仪器和数据采集硬件的驱动
LabVIEW提供了数百种仪器的源码级驱动程序,包括DAQ、GPIB(IEEE488)、PXI、VXI、RS232,根据需要还可以在LabVIEW中自行开发各种硬件驱动程序,也可通过动态链接库(DLL)利用其他语言开发驱动函数库,从而进一步扩展其功能。
下面是我最近写程序的一些知识,进行了部分的整理,发出来和大家一起分享,也方便我以后查找自己的编程过程。

编程知识点–做题思路

连续采集是指使用一个或多个通道,以一定的采样率进行持续的数据采集。在许多数据采集任务中,并不能事先确定需要采集的数据长度,此时连续采集就显得格外实用。

易用VI是基于中级VI构建的,打开其内部程序框图就可发现每一个易用VI都包含了AI Config、AI Start、AI Read、AI Clear等中级VI,这样每一步循环都会在循环间隔将采集任务清除并重启一遍,这在高速采集时将是很重的资源负担,无法保证采集的连续性。

正确的方法应该是将必要的AI Read和简单的数据处理过程放在循环中,而在循环外放置那些只需运行一遍的AI Config、AI Start、AI Clear等中级VI。

引用LabVIEW自带例程中的连续采集例子“Cont Acq&Chart(buffered).vi”进行说明,可在例程中daq分类下找到该例程序
在这里插入图片描述
(1)连续采集需要缓冲区作为数据暂存处,AI Config的buffer size参数指定了该缓冲区的大小(以采样点数计),缓冲区过小会造成数据的溢出,旧数据未来得及读取就被新数据覆盖,缓冲区过大则会加重内存资源的消耗,因此,应结合计算机性能和实际运行情况选择缓冲区大小。
(2)AI Start的number of scans to acquire参数需要设定为0,表示连续采集。
(3)AI Read的输出参数scan backlog表示在执行完一次该VI进行读取后缓存区中剩余的样本个数,可用来观察数据读取速度是否跟得上数据采集速度。
如果该值不断增加,表示缓存中剩余的未读数据越来越多,读取数据速度不够快,将来有可能丢失有效数据。
(4)必要的数据处理和分析过程可放在AI Read之后执行,如本例中的My Data Processing.vi,但不宜编写得太过复杂,因为它是放在循环间隔中进行的,若消耗资源太多,不利于数据采集的连续性。

备注:采集的电压范围是指ADC进行模数转换的最高电压和最低电压。许多数据采集设备支持单极性和双极性两种模式下的多种电压范围,单极性是指0V~+xV的电压范围,双极性是指-xV~+xV的电压范围。如果信号电压能够确定一个大致的变化范围,应该尽量选择与该范围最接近的电压范围,这样能够减小量化误差。
在-10V~+10V的双极性电压范围下使用3位ADC测量一个信号,其量化误差最小为[10-(-10)]÷8=2.5V,而根据信号电压范围改用单极性的0~+10V的电压范围后,量化误差可以变为[0-(-10)]÷8=1.25V,缩小了一倍。因此,合理选择电压范围是非常重要的。

在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 01:07:48  更:2022-09-30 01:09:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 20:49:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码