原始方案计划
一、应用背景
在一般的工业控制应用项目中,都需要涉及到数据采集部分,即利用各种传感器将不同的环境变量(数字量、电压、电流、温度、湿度、压力、方向和距离等)采集,并送至控制器进行转换处理。控制器对得到的相关信息进行判断后,进行相应的控制处理。在进行控制处理的过程中,有些需要人工进行干预,这就要求各种传感器的信息必须在一定的界面(液晶屏、串口终端、上位机界面)上进行实时显示。
二、功能说明
本方案计划实现一种基于LABVIEW上位机界面的STM32F0 DISCOVERY 多路数据采集系统,利用STM32F0 DISCOVERY 板载芯片STM32F051R8T6上的12位ADC实现高精度数据采集,并将采集到的数据发送至LABVIEW上位机界面显示。
1、STM32F051R8T6 ADC模块具有16路外部通道和3路内部通道,在此方案中,利用普通电位器产生电压来模拟各种环境变量的信号。增加DS18B20温度传感器模块。
2、上位机界面除正常的波形数据显示界面外,视情况增加一些额外演示功能。增加控制板载LED灯闪烁效果,将采集到的数据发送TXT文件中保存功能。
3、利用LABVIEW自带的VISA串口实现和STM32F0 DISCOVERY板子的通信。
三、工具说明
硬件:STM32F0 DISCOVERY 开发板
软件:LABVIEW8.2 or LABVIEW8.6
方案实施进度表 1、拿到STM32F0--开发板硬件--(2012-10-29 10点43分收到开发板) 2、解决STM32FO开发板和开发环境的调试--(2012-10-29 16点55分完成板载LED闪灯程序测试)。 3、解决STM32FO--串口通信模块和ADC模块。--(2012-10-30 17点10分完成串口模块调试,2012-11-01 17点22分完成ADC模块调试) 4、解决STM32FO--DS18B20温度传感器模块程序移植。(2012-11-02 16点56分完成程序测试)。 5、解决LABVIEW开发环境调试(2012-11-06 11点20分完成程序测试)。 6、解决LABVIEW串口通信模块调试(2012-11-09 17点10分完成程序测试)。 7、解决ADC数据的载入并计算显示波形。(2012-11-13 17点20分完成程序测试)。 8、解决ADC数据的TXT文件保存功能(2012-11-16 增加TXT文件保存功能)。 9、解决开关按钮控制STM32F0 DISCOVERY--板载LED的演示功能。(2012-11-14 16点34分完成程序测试)。 10、增加额外功能或修改并美化系统界面(2012-11-20 完成系统界面设计)。
方案设计
一、硬件设计
由于该方案采用STM32F0 DISCOVERY进行开发,硬件设计并不复杂。内容见附件。
二、系统软件设计
该方案的主要工作在于系统软件的代码设计,包括下位机驱动设计和LABVIEW上位机界面的程序设计。由于本人对STM32了解较少,故先编写了一部分驱动文件,包括USART串口驱动,SYSTICK系统定时器、NVIC中断管理、DS18B20(移植MSP430和LM3S系列)和ADC(DMA方式驱动)。考虑到时间问题,和LABVIEW的串口通信通讯采用简单的软件查询方式实现,也没有增加复杂的控制协议,比如(帧头+数据+校验码)的方式,这种在工业通信中应用比较普遍。
上位机软件的详细使用,见文档《LABVIEW上位机软件说明书V1.0.pdf》。 由于串口通信采用8位数据方式,对非STM32产品来讲,总线都是8位方式,而对于STM32来说,是16位方式,这样就需要在串口通信时,将DS18B20或ADC采集的数据16位数据拆分成两个8位数据分别发送,发送后再进行一些处理。这对于一些刚接触LABVIEW的新手来讲,可能也是一个问题吧。 方案点评
对于工业应用或一般项目应用的数据采集来讲,该方案仅仅是提供了一个框架或思路,还有很多需要改进或优化的方向,实际中的项目远比此复杂的多,通信数据的解析和算法的处理也不是一两个VI程序就能完善的,为了更加直观,本人的VI已项目文件方式实现,目的是让自己和相关的人形成一个良好的习惯,就像写MCU的驱动一样,分成了很多小模块。
在此提出一些改进或优化的方向,留给感兴趣的人研究。
1、LED灯的延时控制在上位机界面中实现调整。 2、串口通信协议可以增加帧头、帧尾和校验。 3、ADC数据采集保存方式—合并到一个文件中,见文档《LABVIEW上位机软件说明书V1.0.pdf》。
进程贴链接:
视频播放:
|