您现在的位置: 晨光科技 >> 文章 >> 技术 >> 单片机 >> 正文  
  零成本学Arduino单片机之LabVIEW虚拟仪器           
零成本学Arduino单片机之LabVIEW虚拟仪器
[ 作者:佚名    转贴自:http://www.eefocus.com/zhang700309/blog/12-12/289415_4c0ce.html    点击数:35    更新时间:2018/5/10    文章录入:LA ]
[注:本站登载的某些文章并不代表本站支持或反对其观点或肯定其真实性]

 

    LabVIEW(Laboratory Virtual Instrumentation Engineering Workbench,实验室虚拟仪器工程平台)是由美国国家仪器(NI)公司所开发的图形化程序编译平台,发明者为杰夫·考度斯基(Jeff Kodosky),程序最初于1986年在苹果电脑上发表。LabVIEW早期是为了仪器自动控制所设计,至今转变成为一种逐渐成熟的高级编程语言。

  LabVIEW是一种用图标代替文本行创建应用程序的图形化编程语言。传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。VI指虚拟仪器,是LabVIEW的程序模块,类似于C和BASIC的子函数。

    LabVIEW提供很多外观与传统仪器(如示波器、万用表)类似的控件,可用来方便地创建用户界面。用户界面在LabVIEW中被称为前面板。使用图标和连线,可以通过编程对前面板上的对象进行控制。这就是图形化源代码,又称G代码。LabVIEW的图形化源代码在某种程度上类似于流程图,因此又被称作程序框图代码。

Labview官方中文网址:http://china.ni.com/

Labview中文门户网站:http://www.gsdzone.net/classroom.aspx

    美国国家仪器公司NI 通过LabVIEW软件平台率先引入了特别的虚拟仪表(VI)的概念,用户可通过人机界面直接控制,自行开发仪器。虚拟仪器的引入,引发了传统仪器领域的一场重大变革,使得计算机和网络技术得以长驱直入仪器领域,计算机技术和仪器技术结合起来,从而开创了“软件即是“仪器”的先河。

     虚拟仪器包括Labview图形化编程软件和模块化硬件采集设备,Labview提供了两者之间相互通信的多种协议,如VXI、GPIB,RS232和RS485等,其中最基本的通信协议就是RS232串口通信协议。因为Labview支持RS232协议,使得Labview与各种嵌入式微控制器的通信变得很容易实现,Arduino控制器作为嵌入式微控制器的一种,当然可行。Arduino控制器在处理I/O信号方面很在行,但是在人机界面方面的能力,却是软肋,正好Labview可以弥补Arduino这方面的不足。

    我的博客文章《基于Labview与Arduino的上下位机的蓝牙通信实验》,网址: http://www.eefocus.com/zhang700309/blog/12-06/280982_e03c3.html 。介绍了LabVIEW与Arduino结合,通过串口上下位机通信,制作出“温湿度”虚拟仪表,如下图。

 

Arduino如何在Proteus仿真环境下,与上位机串口通信,我刚刚写得两篇文章进行了详细介绍,这两篇文章为:《零成本学Arduino单片机之串行通讯》,网址: http://www.eefocus.com/zhang700309/blog/12-11/288957_ad4bb.html 。《零成本学Arduino单片机之Processing互动媒体》,网址:http://www.eefocus.com/zhang700309/blog/12-11/289203_1e7ce.html 。

      那么LabVIEW软件如何编写串口通信程序呢?看看这篇文章介绍的虚拟电压表项目,就知道了,该项目的全景图如下图所示。(所有图片可双击,放大观看!

   本篇文章的仿真项目任务是:在Proteus仿真图中,用鼠标调节电位计滑动抽头与地之间的电压,Arduino控制器采集这个电压值,正比转换后,通过串口通信,发送到上位机软件LabVIEW。LabVIEW再处理后,在LabVIEW前面板显示电压的数值和波形图。如视频所示。

 

双击网址,全屏看仿真实验现象,

http://www.tudou.com/v/AytwNvJpY3E/&rpid=96368873&resourceId=96368873_04_05_99/v.swf

   Labview虚拟仪器程序由前面板和框图程序组成,前面板是人机交互的界面,界面上有用户输入和显示输出两类控件;框图程序则是用户编制的程序源代码,以定义和控制在前面板上的控件输入和输出功能。下面分别为虚拟数字电压表的前面板和框图程序。

虚拟数字电压表的前面板

 

虚拟数字电压表的框图程序

      LabVIEW前面板的UI设计比较酷,但支撑它的后台框图程序,却很简单,花短短20分钟来设计这个程序足以。在这个框图程序中就包含了LabVIEW串口通信程序段。

    要编写串口通信程序,不仅要具备Labview软件,还必须另外安装NI_VISA串口通讯协议驱动。NI_VISA串口驱动是一个免费的Labview附加组件,可以在官网下载到,或者点击网址下载:ftp://ftp.ni.com/support/visa/drivers/win32/4.0/visa400full.exe

     安装完NI_VISA,在框图程序界面右击鼠标,出现函数工具库面板,再点击“仪表I/O”→“串口”,就会出现串口函数VI子面板,如下图。

 

   框图程序是采用NI_VISA“串口”函数来访问和控制串口的。VISA中的“串口”函数库里包含如上图所示的八个子函数VI。本设计用到的三个VISA串口子函数分别是VISA 配置串口、VISA读取和VISA关闭。

 

 

VISA 配置串口函数的作用是完成串口参数的初始化设置,包括了串口资源名称,波特率,奇偶校验、数据比特、是否启用终止符等,虚拟数字电压表的框图程序中该函数连接了两个输入变量,它们分别连在串口资源名称和波特率参数端子上,变量值由前面板上的相应控件来设定,另外该函数在“是否启用终止符”的端子上还连接了一个布尔常量,常量值为false,含义是不启用终止符,其它输入参数采用默认值。VISA串口配置函数有两个输出端子,它的图标上面输出端子输出的是串口资源名称,下面输出端子输出的是错误码,输出端子向下游函数传递信息。

    VISA读取函数有三个输入端子,图中VISA读取函数图标的上面输入端子是前面VISA 配置串口函数传递的串口资源名称,下面的输入端子传递的是错误码,意思是若前面的函数出错了,会往这里输入一个错误码,然后继续往下面传递,有错误码出现时程序是不会工作的。中间输入端子是每次从串口读取的字符串字节数,本文串口通信的字节数应设置为1。

   框图程序中VISA读取函数包含在一个While循环结构中,每20ms从串口读取一个字节,并从该函数的中间输出端子,以字符串的形式输出。VISA读取函数图标上面输出端子输出的是串口资源名称,下面的输出端子输出的是错误码,继续向下游函数传递信息。在前面板按下“EXIT”按钮,可结束While 循环。

    VISA关闭函数的作用是当程序停止时,必须要把所用到的串口设备关闭,若不关闭,其他程序就不能使用该设备。

     从VISA读取函数输出的字符串,通过“字符串至字符数组转换”函数把字符串转换为字符数组,这个字符数组里只有一个字节数据,可以通过“索引数组”函数的第0元素,把这个字节数据从字符数组中取出,它包含了电位计电压值信息,一个字节的数值范围是0~255,如果为0,则电压值为0V,如果为255,电压值就对应着5V。所以在框图程序里做个正比换算,就可以把读取的字节数据换算为0~5V电压值。

    然后把换算后的电压值,发送到数据和图形显示VI,显示在LabVIEW前面板上。

    谈完了上位机Lavbiew程序,接下来,下位机Arduino的程序如何设计?Arduino程序的任务有两点:一、把电位计的电压值采样出来,由于Arduino模拟采集数据范围为10位二进制数据,范围是0~1023,因此要通过正比换算,处理成8位字节数据,范围为0~255,以便Arduino以单字节形式上传给LabVIEW;二、把包含电位计电压信息的单字节数据,通过串口不断上传给上位机,以便上位机Labview程序实时显示电压信息。

Arduino程序:

/*任务:调节电位计滑动抽头与地之间的电压,并把

电压值采样到Arduino控制器,经数据换算后,通过串口,
发送到上位机软件处理。*/
int potpin = 0; //把电位计连在Arduino模拟端口0
//初始化 
void setup() 
{
  Serial.begin(9600);//启动串行通讯,波特率为9600b/s
}
//主程序
void loop() 
{
   //读取电位计的电压量采样值,采样值范围0-1023
  int sensorValue = analogRead(potpin);
  //把采样值正比转换为0-255字节值
  int data= sensorValue/4;
  Serial.print(data,BYTE); //发送到上位机处理    
  delay(20);  
}
Labview程序和Proteus原理图请下载:LabVIEW和Proteus程序下载.zip
结束语
    LabVIEW功能强大的图形编程语言能够成倍地提高生产率,人们亲切地称这种语言为G语言。使用传统的编程语言需要花费几周甚至几个月才能编写的程序,用LabVIEW只需几个小时就可以完成。因为LabVIEW是专为测量、数据分析并提交结果而设计的,且LabVIEW拥有如此功能众多的图形界面又易于编程,使得它对于仿真、结果显示、通用编程甚至讲授基本编程概念也同样是很理想的语言。
    与Arduino书籍奇缺不同,当当网已经有很多LabVIEW书籍,我介绍两本,大家看看,如下图。
  
    最近一口气,写了5篇有关通过Proteus仿真,来零硬件成本学习Arduino单片机的文章,到这里,先暂时停下来,以后会继续写这方法的文章,因为这种方法有利于在国内普及Arduino文化。
  • 上一篇文章: LabVIEW,32路舵机控制板和多自由度机械臂

  • 下一篇文章: 零成本学Arduino单片机之Processing互动媒体
  •    
    [注:标题搜索比内容搜索快]
    发表评论】【告诉好友】【打印此文】【关闭窗口
     最新5篇热点文章
  • 轨道钢承重计算公式及应用[109]

  • 【选型】如何为变频器选取阻值…[86]

  • AIS2023参展厂商名录[346]

  • AGV综合选型[170]

  • APIE 2023第4届亚太国际智能装…[138]

  •  
     最新5篇推荐文章
  • 外媒:正在唤醒中国的习近平[305]

  • 中国反伪科学运动背后的CIA黑手…[494]

  • [转载]袁隆平真言:中国最大的…[668]

  • 台专家:当年我们造IDF时 大陆…[572]

  • 旅日华人:中国严重误判日本民…[577]

  •  
     相 关 文 章
  • Arduino和STM32性能对比究竟谁…[26]

  • Labview及Proteus软件环境下单…[38]

  • 基于labview串口通讯的虚拟数字…[41]

  • AVR编程语言Arduino也可以用Pr…[47]

  • Arduino编程 PWM方法调节LED光…[37]


  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
        没有任何评论
    设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | 
    版权所有 Copyright© 2003 晨光科技        站长:璀璨星辰        页面执行时间:310.55毫秒
    Powered by:MyPower Ver3.5