糊涂塔克学习笔记02 Arduino+Labview (下)

大家好,上次我们学习了用Labview为Arduino开发的Interface开发简单的温度计,这次我来教大家用另外一种方法来开发温度计,这次我们使用Arduino控制DS18b20来读取温度。



这个方法相比较之前讲的Labview Interface for Arduino 的方法优点是:可以控制的传感器更多,主要是通过控制串口来控制Arduino;小缺点是:相比较Interface的方法稍微复杂一些。



关于Labview和Arduino之间的互动开发,大家也可以去参考一下宜昌城老张的博客

http://www.eefocus.com/zhang700309/blog/cate_5113_0.html



言归正传,对于还没有安装好Labview程序和相关插件的请参考我之前的帖子中第一部分:准备

糊涂塔克学习笔记02 Arduino+Labview(上)



好的,现在我们假设已经把相关的程序和插件都安装好了,现在我们要正式开始做温度计。



一、原理介绍



这次我们需要用到的函数叫VISA函数,VISA函数是Labview里主要用于处理串口通信的函数,也就是说我们可以通过VISA函数和Arduino通信,这样我们就可以用Labview给串口传指令,然后通过VISA把这个指令传给Arduino,Arduino再根据之前自己编好的程序驱动相关的传感器。大家可以发现,这样一来相比较Labview Interface for Arduino 的那个方法,用VISA串口通信的方法的扩展性要高得多。



二、Labview 编程


  1. 让我们先打开Labview2011,点击 新建VI

捕获13.PNG

2012-6-26 09:32 上传
(275.22 KB)




  1. 选择程序框图,为了方便编程我们把程序框图最大化,在最上面的菜单栏里我们点开 查看-->函数面板,找到

    VISA配置串口,这个函数在 仪器I/O-->VISA-->高级VISA-->总线/接口配置-->串口-->VISA配置串口。

捕获.PNG

2012-6-26 09:47 上传
(111.81 KB)





找到后我们把它拖到程序框图里。


  1. 然后我们再找一个函数:VISA读取,这个函数在 仪器I/O-->VISA-->VISA读取

捕获2.PNG

2012-6-26 09:54 上传
(111.3 KB)





同样我们把它拖到程序框图里。


  1. 接着我们开始开始给这两个函数添加控件,我们先来看看这两个函数的介绍

捕获3.PNG

2012-6-26 09:57 上传
(38.46 KB)





我们可以看到这个函数主要是用来初始化串口的,需要设置的参数里比较重要的是三个:

(1)VISA资源名称,这个主要是用来设置哪个COM口的。

(2)波特率(9600),这个是设置和Arduino通信的频率,一般默认是9600。

(3)数据比特(8),这个是设定的变量的位数,一般只是传输一些简单的数据或者指令的话,设到8位就够用了。



其他的一些控件参数我们并不一定会用到,不设也可以


捕获4.PNG

2012-6-26 10:05 上传
(19.07 KB)





这个函数主要的功能是读取从Arduino那里发过来的数据,并显示到前面板上去,这里我们同样要设置三个控件参数:

(1)VISA资源名称,这个和前一个函数的VISA资源名称相连,里面设置的还是COM口

(2)字节总数,参考前一个函数中的数据比特,我们把字节总数也设到8

(3)读取缓冲区,这个其实是一个输出控件,把读取到的值显示出来,注意这里显示的格式是字符串



OK,现在我们通过即时帮助知道了这两个函数是怎么定义的了,我们开始给他们添加控件和参数,添加的方法同样在

糊涂塔克学习笔记02 Arduino+Labview(上)里有详细描述。


捕获5.PNG

2012-6-26 10:22 上传
(9.28 KB)




  1. 定义完控件参数后,我们照例给函数加一个While循环(编程-->结构-->While循环)和简易错误处理器(编程-->对话框与用户界面-->简易错误处理器

捕获6.PNG

2012-6-26 10:32 上传
(14.66 KB)




  1. 现在我们把VISA资源线(粉红色)和错误线(土黄色)连接起来

捕获7.PNG

2012-6-26 10:36 上传
(14.23 KB)




  1. 这样Labview端的程序就编写完了,其实还是挺简单的,那让我们来看看前面板

捕获8.PNG

2012-6-26 10:38 上传
(56.51 KB)





我们可以看到,用户可以输入哪个COM口还有通信的比特率,温度显示的结果用数值显示出来


  1. 如果我们想给这个小仪器加一些小功能,用曲线来显示温度的话我们可以加一个画图函数,这里需要注意的是VISA读取这个函数输出的是一个字符串,如果我们想作图我们需要一个字符串转数值的函数,然后再用一个作图函数画出曲线,具体的程序就是这样的

捕获9.PNG

2012-6-26 10:54 上传
(17.68 KB)




  1. 最后我们把前面板美化一下就大功告成了

捕获10.PNG

2012-6-26 10:57 上传
(64.05 KB)





三、Arduino部分

  1. 硬件,我们需要一块Arduino开发板,没有型号要求,一块DS18b20温度传感器芯片(购自奥松机器人)

ArduinoUno_r2_front450px.jpg

2012-6-26 11:13 上传
(120.08 KB)

T1aZ0EXetbXXb4Uofb_095431.jpg_310x310.jpg

2012-6-26 11:13 上传
(11.35 KB)





接线方面 5V GND PIN12


  1. 程序ARDUINO 代码复制打印
    #include <DallasTemperature.h>DallasTemperature tempSensor;void setup(void) {Serial.begin(9600);tempSensor.begin(12); // DS18B20接在数字I/O第12号引脚上}void loop(void) {  // 检查温度传感器是否正常工作  switch(tempSensor.isValid())  {  case 1:    Serial.println("Invalid CRC");    tempSensor.reset(); // 重置温度传感器    return;  case 2:    Serial.println("Not a valid device");    tempSensor.reset(); // 重置温度传感器    return;  }// 从DS18B20读取温度值Serial.print(tempSensor.getTemperature());Serial.print("C");Serial.println();}
    #include <DallasTemperature.h>



    DallasTemperature tempSensor;



    void setup(void) {

    Serial.begin(9600);

    tempSensor.begin(12); // DS18B20接在数字I/O第12号引脚上

    }



    void loop(void) {

    // 检查温度传感器是否正常工作

    switch(tempSensor.isValid())

    {

    case 1:

    Serial.println("Invalid CRC");

    tempSensor.reset(); // 重置温度传感器

    return;

    case 2:

    Serial.println("Not a valid device");

    tempSensor.reset(); // 重置温度传感器

    return;

    }



    // 从DS18B20读取温度值

    Serial.print(tempSensor.getTemperature());

    Serial.print("C");

    Serial.println();

    }
四、小结

到此 糊涂塔克的Arduino+Labview的学习笔记就到此结束了,仔细看一下的话其实发现做一个小设备其实还是不难的,特别是学会了VISA函数后,就发现用Labview控制Arduino和以前用Serior Monitor控制Arduino是一样的。希望这个教程能帮助初学者快速入门。谢谢大家~
via - 极客工坊

标签: Arduino教程