涡轮流量计系统系统软件设计全面解析
1、下位机软件设计:
1.1、系统主程序的流程:
图 4.1 系统软件流程图
2、流量一周期信号测量的流程:
信号经低通滤波电路,预处理放大后,输入至整形电路 1,经整形电路 1 处理后,产生同频率的方波信号,再将该方波信号连接到 ATMEGA16 单片机的 PB0脚。由第二章的分析可知,流量计输出信号频率较低,适合采用周期法测量以获得较高的测量精度。具体软件流程如图 4.2 所示。
图 4.2 一周期测量模块软件流程图
2.1、流量半周期信号测量的流程:
本模块基于测周法原理,采用T/C1 捕捉功能实现流量信号的半周期测量。具体是:T/C1 初始化后,在T/C1 输入捕捉中断服务中需要读取两个 ICR1 的值。个时间值就是第 0 次下降沿触发时得到的 ICR1 的时间印记;而第二个值是第 1 次下降沿触发时得到的时间印记。当第二个值被记录下来时立即禁止T/C1 的所有中断。在测频子程序中需要对前后得到的两个 ICR1 值进行判断并将它们进行减法运算得到差值。下一步需要判断第二个值是否溢出。此处的溢出条件是当第2个读取到的值大于第1个读取到的值并且TCNT1的值出现过从65536到 0 的变化情况。如果判断到溢出了就说明前后两次的差值超过了 16 位定时计数器T/C1 的长度,T/C1 的长度 65536。在已经溢出的情况下,需要记录溢出次数。另外,为了降低被测频率的下限值也需要记录溢出的次数,具体可以在T/C1 的溢出中断中设置一个标志位负责溢出次数的记录,该溢出次数的值可以用于频率的计算频。具体软件流程如图 4.3 所示[2]。
图 4.3 半周期测量程序流程图
2.2、流量信号 1/4 周期测量的流程:
ATmega16 自带 AD 转换模块。ADC 次转换时序,如图 4.4 所示。由手册知道 ADC 转换模块工作时首先需要初始化 ADC,所以次 ADC 转换需要 25 个 ADC 时钟周期 ( ADCSRA 寄存器的 ADEN 置位) 。正常转换需要13 个 ADC 时钟周期,如图 4.4 所示[32]。
图 4.4 ADC 次转换时序图
图 4.5 ADC 连续正常转换时序图
ATMEGA16 有多种 AD 转换模式,不同的模式下,所需的转换时间不同。如表所示[32]。
表 4.1 ADC 转换和采用保持时间
图 4.7 ADC 控制和状态寄存器
本设计中,为了测量 1/4 周期,软件方面采用 ATmega16 单片机自带的 10位 ADC 转换模块和外部中断 INT0 及定时器 T2 相结合的方式完成测量。电路方面采集信号经滤波,放大后的模拟信号,一路信号经整形电路 2 处理后产生所需要中断信号 INT0;一路信号输入至单片机的 ADC0 口,作为 AD 转换的单端模拟输入信号。
设计中需要注意的地方。1、因为该单片机的 ADC 转换模块在 50 k Hz 至 200k Hz 输入时钟的条件下,可以得到***好的转换精度,又因为本系统时钟为3.2MHZ,所以需要 16 分频产生所需 200KHZ 的 ADC 时钟。2、ADC 读数采用默认右对齐。读数据时先读取了 ADCL,那么必须紧接着读取一次 ADCH。3、ADC 输入电压范围为 0 至+5V;参考电压采用 ADC 内部 AVCC;4、通过外部中断源 INT0 控制 ADC 转换的启动和关闭[2]。
具体过程如图 4.8 所示。
图 4.8 四分之一周期测量程序流程图 1
图 4.8 四分之一周期测量程序流程图 2
3、通讯模块的流程:
在设计串口程序之前需要先简要说明一下 ATMEGA16 的 USART(同步和异步串行接收器和发送器),以及USART传输数据需要满足的格式。ATMEGA16自带的全双工的 USART,是一个使用方便、功能强大的串行通讯模块。主要特点为:
1) 能处于全双工工作模式
2) 可以同步或异步通信
3) 主,从时钟的同步信息
4) 具有生成多种波特率的波特率发生器
5) 在 XTAL 低频率下有高的波特率
6) 8 位或 9 位数据
7) 噪声滤波
8) 超越误差的检测
9) 帧错误探测
10) 错误起始位的检测
11) 三个独立的中断
在异步串行通信中发送方和接收方要实现正常的通信必须采用相同的约定。首先,约定的***底层的协议。比如需要采用相同的传输波特率和相同格式的数据帧。通信双方,如果所使用的波特率和数据帧格式不一样那么通信就不能实现。本系统采用 ATMEGA16 自有的 USART 模块[18]。
本系统中虽然通讯协议选择的是 485 通讯,但和 232 串口通讯的工作模式基本相同。本系统串行口通信方式使用异步正常工作方式;设置波特率为9600bps;数据帧的传输格式设置为 8 位数据位、1 位起始位、1 位停止位、无奇偶校验位。首先,需要初始化异步串口通信,内容包括确定串口工作的方式(编程寄存器为 UCSRA、UCSRB 、 UCSRC)和设定串口工作的波特率(编程寄存器为 UBBRRH、 UBBRRL)。
在具体程序设计中,串口采用中断方式接收数据;串口采用查询方式发送数据。下位机串行接收数据时,为了保证数据接收的完整性,每次需要连续接收8bit 数据。串口收发数据程序具体流程图如图 4.9 所示。
图 4.9 串口通讯程序流程图
4、涡轮流量计显示模块的流程:
由于本设计所需显示内容不是很多,在满足显示要求的基础上,应该尽量减少器件成本,因此在本系统设计中选择太阳人电子有限公司的 1602 字符型液晶显示屏,该模块显示容量为 16×2。 1602LCD 的时序在第四章显示模块设计有详细的说明。模块读操作时序如图 4.10 和模块写操作时序如图 4.11 所示[2]。
图 4.10 读操作时序图
图 4.11 写操作时序图
图 4.12 涡轮流量计显示模块软件流程图
5、涡轮流量计按键模块的流程:
按键由四个键组成,分别是设置键、UP 键、DOWN 键 、MOVE 键。程序的逻辑为,当按下四个按键中的任意一键就进入按键处理程序中,然后判断按下的按键类型,如果是设置键则显示 K 值并且较低位闪烁,这时可以通过按上键和下键进行数值设置,上键为当前数值+1,左键为当前数值-1,当再次按下设置键后保存返回。若一开始是按上键或者下键或者 MOVE 键而不是进入设置程序后才按的话,只会显示当前 K 值,再按下别的键无响应。通过 MOVE 键和 UP 键组合键可以向左移动闪烁位置。通过 MOVE 键和 DOWN 键组合可以向右移动闪烁位置。具体操作是先按住 MOVE 键不松开,再按下 UP 键或者 DOWN 键,就可以移动闪烁位置。软件流程图如图 4.13。
图 4.13 涡轮流量计按键程序流程图
6、涡轮流量计软件抗干扰措施:
基于软件解决干扰的方法,都属于软件抗干扰。该方法具有使用灵活,不增加硬件成本的优点。基本思想是,如果某外界因素干扰到系统的正常工作,内部程序可以自动让系统恢复到稳定状态。或者对受干扰的输入信号进行软件处理后,能满足系统的输入要求。又或者是保护软件系统可靠工作的软件辅助方法。
由于在涡轮流量计实际工作环境中,存在很多不确定的干扰信号。所以在硬件抗干扰措施的基础上需要增加软件抗干扰技术,以便增强系统的整体性能。本系统主要采取了以下几种软件抗干扰措施。
(1) 系统初始化。在系统上电时,程序会对单片机和各器件芯片的寄存器进行初始化设置。初始化以后,电路中所有需要设置的芯片都回到了***初的默认设置状态。这样就保证了设备复位以后能立即回到正常的工作状态。上电初始化还可以防止内存程序跑飞的突发故障。事实证明,无论是手动初始化还是自动初始化都能够在较大程度上增强系统抗干扰的性能。
(2) 数字滤波抗干扰技术。在程序中可以通过对 ADC 模块采集的数据进行平均值滤波处理,可以有效的去除系统的突发性脉冲干扰。具体可以先去掉 N个数据中的***大值和***小值再计算 N-2 个数据的算术平均值。为了加快测量速度,一般 N 取 4。其软件流程图如图 4.14 所示。
(3) 防止抖动技术。通过软件延时和多次判断的方式能够避免键盘开关信号的抖动。在单片机键盘的处理程序中,为防止四个按键抖动和弹跳产生的干扰,采用按键延时检测和多次检测的方式加以规避[[11][21]。
本文小结:
本章详细叙述了涡轮流量计系统软件部分的设计。首先概述了软件设计,然后分别介绍了下位机各个模块软件设计,并给出了软件流程图。同时,设计的软件抗干扰措施,可以在一定程度上提高系统的可靠性。