最近遇到一个使用Arduino Uno控制板的项目,利用热敏电阻和LIAT中的热敏电阻函数节点,通过Arduino Uno控制板的模拟端口采集与热敏电阻串联电阻的分压值上传给LabVIEW软件,并除以温度系数以获得温度值,实现一个温度计的功能。
为啥用labview呢,因为LabVIEW是NI的数据采集创新软件产品,其全称是实验室虚拟仪器工程平台(Laboratory Virtual Instrument Engineering Workbench),是一种基于图形语言(Graphics Language,图形化编程语言)的测试系统软件开发平台。LabVIEW并不局限于虚拟仪器的开发,它的作用是为大型复杂测试系统提供通用的软件开发平台。目前,LabVIEW已经成为测试领域应用最广泛和最有前途的软件开发平台之一。
Arduino Uno是Arduino的典型控制器,拥有Arduino所有的基本功能,使用最为广泛,而且本书的应用篇和项目篇都是基于Arduino Uno来设计的,所以接下来重点介绍Arduino Uno的硬件部分,其他型号Arduino控制板硬件介绍可以参考Arduino官方网站:www.arduino.cc。
1.控制器
❑处理器:ATmega328
❑工作电压:5V
❑输入电压:(推荐)7~12V
❑输入电压:(范围)6~20V
❑数字I/O接口:14路(其中6路作为PWM输出)
❑模拟输入接口:6路
❑I/O接口直流电流:40mA
❑3.3V接口直流电流:50mA
❑Flash Memory:32KB(ATmega328,其中0.5KB用于Bootloader)
❑SRAM:2KB(ATmega328)
❑EEPROM:1KB(ATmega328)
❑工作时钟:16MHz
2.电源
Arduino Uno可以通过3种方式供电,而且能自动选择供电方式。
❑外部直流电源通过电源插座供电。
❑电池连接电源连接器的GND和VIN引脚。
❑USB接口直接供电。
电源引脚说明:
❑VIN:当外部直流电源接入电源插座时,可以通过VIN向外部供电;也可以通过此引脚向Uno直接供电;VIN有电时将忽略从USB或者其他引脚接入的电源。
❑5V:通过稳压器或USB输出的5V电压,为Uno上的5V芯片供电。
❑3.3V:通过稳压器产生的3.3V电压,最大驱动电流50mA。
❑GND:电源负极。
3.存储器
ATmega328拥有片上32KB Flash,其中0.5KB用于Bootloader,同时还有2KB SRAM和1KB EEPROM。通常情况下,Arduino的存储空间即其主控芯片所集成的存储空间,也可以通过使用外设芯片的方式扩展Arduino的存储空间。
❑Flash:32KB。其中0.5KB分作BOOT区,用于储存引导程序,实现串口下载程序的功能,另外的31.5KB作为用户存储程序的空间,可以满足一般的应用设计。
❑SRAM:2KB。SRAM相当于计算机的内存,在CPU运算时,需要在其中开辟一定的存储空间。当Arduino断电或者复位后,其中的数据都会丢失。
❑EEPROM:1KB。EEPROM全称为电可擦写可编程只读存储器,是一种用户可更改的只读存储器,特点是Arduino断电或者复位后,其中的数据不会丢失。
4.输入/输出
❑14路数字输入/输出接口:工作电压为5V,每一路输出或输入的最大电流为40mA。每一路配置了20~50kΩ的内部上拉电阻(默认不连接)。除此之外,有些引脚有特定的功能,具体说明如下:
串口信号RX(0号)和TX(1号):与内部ATmega16U2USB-to-TTL芯片相连,提供TTL电压水平的串口接收信号。
外部中断(2号和3号):触发中断引脚,可设成上升沿、下降沿或同时触发。
脉冲宽度调制PWM(3、5、6、9、10、11):提供6路8位PWM输出。
❑6路模拟输入A0~A5:每一路具有10位的分辨率(即输入有1024个不同值),默认输入信号范围为0~5V,可以通过AREF调整输入上限。除此之外,有些引脚有特定功能。
○TWI接口(SDA A4和SCL A5):支持通信接口(兼容I2C总线)。
❑AREF:模拟输入信号的参考电压。
❑Reset:信号为低时复位单片机芯片。
5.通信接口
❑串口:ATmega328内置的UART可以通过数字口0(RX)和1(TX)与外部实现串口通信;ATmega16U2可以通过访问数字口0和1实现USB上的虚拟串口。
❑TWI(兼容I2C)接口:A4(SDA)、A5(SCL),可用于TWI通信,兼容I2C通信。
❑SPI接口:10(SS)、11(MOSI)、12(MISO)、13(SCK),可用于SPI通信。
(1)项目最终效果
利用热敏电阻和LIAT中的热敏电阻函数节点,通过Arduino Uno控制板的模拟端口采集与热敏电阻串联电阻的分压值上传给LabVIEW软件,并除以温度系数以获得温度值,实现一个温度计的功能。
(2)硬件连接
将热敏电阻与10kΩ电阻串联起来,热敏电阻另一端接至Arduino Uno控制板上的+5V,10kΩ电阻另一端接至Arduino Uno控制板上的GND上,将热敏电阻与10kΩ电阻的连接处接至模拟引脚A2上,如图所示。
(3)程序设计
LabVIEW的前面板和程序框图如图1和图2所示。
LabVIEW程序首先通过设置的串口号与Arduino Uno控制板建立连接,然后进入While循环中,在循环中不断调用热敏电阻专用的Thermistor Read函数节点来读取温度值。最后,断开与Arduino Uno控制板的连接。
(4)实验与演示
点击运行按钮,LabVIEW程序开始执行,在Analog Pin选择A2,可以看到前面板上的温度计显示当前的温度。