基于PIC18F452的宽量程频率监测系统的设计与实现
Design and Implementation of Wide Range Frequency Monitoring System Based on PIC18F452
DOI: 10.12677/SEA.2021.103027, PDF, HTML, XML, 下载: 575  浏览: 867 
作者: 徐颖捷*, 鲍 佳:浙江理工大学启新学院、创业学院,浙江 杭州
关键词: PIC单片机USART频率监测数据传输一主多从PIC MCU USART Frequency Monitoring Data Transmission One Master and Many Slaves
摘要: 本设计以PIC18F452单片机为核心,采用测频法实现对周期矩形方波和周期正弦波的频率测量,并在测量10 kHz以上高频信号时,通过多级硬件计数器分频和单片机内部输入捕获模块的硬件分频达到最大能够测量500 MHz信号频率的水平。同时,该系统通过USART通信接口实现了一主多从的频率监测系统,能够在主机进行频率监测的时候,与从机进行数据传输,使从机显示频率信息,并可通过TM1638模块进行从机切换。
Abstract: This design takes PIC18F452 monolithic integrated circuit as the core, uses the frequency meas-urement method to realize to the periodic rectangle square wave and the periodic sine wave fre-quency measurement, and in the measurement of high frequency signal above 10 kHz, through the multi-stage hardware counter frequency division and MCU internal input capture module hardware frequency division to achieve a maximum of 500 MHz signal frequency measurement level. At the same time, the system realizes a multi-slave frequency monitoring system through USART communication interface and can switch between slaves and computer through TM1638 module.
文章引用:徐颖捷, 鲍佳. 基于PIC18F452的宽量程频率监测系统的设计与实现[J]. 软件工程与应用, 2021, 10(3): 234-245. https://doi.org/10.12677/SEA.2021.103027

1. 引言

数字频率计是数字显示被测信号频率的仪器,被测信号可以是正弦波、方波或其它周期性变化的信号 [1]。频率计采用测频法时,其脉冲计数最大绝对误差为±1,采用测周法测量频率时,误差取决于单片机机器周期(最终取决于晶振相对误差)。现有基于单片机的、以此两种方式实现的频率计,其精度难以保证,频率测量范围窄,多为0.5 Hz~5 MHz [2],且很大一部分不具有远程信号监测功能,无法实现远程频率监测系统的部署。同时,一般的实现宽量程的频率计大多使用编程复杂且成本较高的FPGA作为核心。本设计以成本低廉且应用较多的PIC18F452作为主控芯片,设计了一种数字式宽量程频率监测系统。该系统主机可以测量10 Hz至500 MHz频率范围内的周期矩形方波和周期正弦波,同时可以通过USART通信接口与多个从机进行数据通信,并且主机与从机均能把相关数据信息显示在LCD1602模块上。除此之外,主机还可以通过TM1638模块进行通信从机的切换与频率计量程的多档切换。

2. 频率监测系统的总体设计

1) 主机电路部分

首先在信号输入端设计了一个使用TLP250光耦制作的一个光电耦合器,能够将输入的正弦信号转变成脉冲信号,同时也可通过短接帽将该模块短路,变成方波输入模式。然后通过CD4040 12位2进制计数器和CD4017 10进制计数器构成的硬件分频电路,实现对输入信号的分频,提高检测信号的测量范围,其中由TM1638模块按键进行测频倍数的设置。最后将输入信号传送给PIC18F452。其中通过PIC18F452单片机内部自带的输入捕获模块的三种定时器分频模式,使用测频法测频率的方式设置了三种不同的分频的模式:① 1分频模式,此测量精度最高为1 Hz,±1误差最小。② 4分频模式,测量分辨率为4 Hz,能测得比1分频模式下频率更高的信号。③ 16分频模式,测量分辨率为16 Hz,能测得比4分频模式下更高频率的信号。其模式的切换由TM1638模块按键进行设置。同时能够将单片机主机测得的频率信号等数据显示在LCD1602上面。

2) 从机电路部分

通过USART实现主机与两个从机之间的通信,并且能够通过与主机相连的TM1638模块按键进行通信从机的切换,让主机实现与任意一台从机设备之间的通信。从机接受到的数据等信息可以通过LCD1602进行显示。

系统的总体结构如图1所示。

Figure 1. System block diagram

图1. 系统总体框图

3. 设计方案选择

3.1. 相关方案简要原理

3.1.1. PIC18F452单片机

PIC18F452是一款哈弗结构的高性能精简指令集单片机,其具有16位宽度指令和8位宽度数据,指令兼容PIC16系列和PIC17系列单片机 [3]。内部自带32 K大小的FLASH以及1.5K大小的RAM,且其支持最大40 MHz的时钟频率,最大指令执行速度为10 MIPS [4]。其内部自带8通道10位A/D,采样速率高(可编程),同时具有上电复位,电压跌落侦测复位(可编程),上电延时,SPI,I2C,USART等功能。其内部FLASH典型可擦写10万次,内部EEPROM典型可擦写100万次,FLASH和EEPROM的数据可保存至少40年 [3]。除此之外,其内部自带4个8位或16位定时器,且部分I/O口具有外部中断功能。其最小系统电路如图2所示。

Figure 2. PIC18F452 minimum system circuit diagram

图2. PIC18F452最小系统电路图

3.1.2. TLP250光耦驱动电路(正弦波信号整型为方波信号)

Figure 3. TLP250 optocoupler driving circuit diagram

图3. TLP250光耦驱动电路图

TLP250是由日本东芝公司生产的一款光耦隔离芯片,包含一个Ga Al As光发射二极管和一个集成光探测器,可直接驱动功率IGBT,其驱动电流可1.5 A。TLP250光耦隔离芯片主要特点:输入阈值电流IF = 5 mA (max);电源电流ICC = 11 mA (max);电源电压VCC = 10~35 V;输出电流IO = ±0.5 A (min);开关时间tp LH/tp HL=0.5 us (max) [4]。其光耦驱动电路如图3所示。因为一般输入信号是比较小的,也即输入信号驱动TLP250的电流很小,故在中间级加一个三极管放大输入信号。电路正常工作时,当输入信号为正幅值输入,光耦内部的光发射二极管会立即通电而发光,对应的集成光探测器因此会检测到光信号,使得TLP250的6号管脚输出VCC,反之当输入信号为负幅值输入时,则6脚输出0 V。

3.1.3. 普通4 × 4按键原理

Figure 4. Normal 4 × 4 keystroke diagram

图4. 普通4 × 4按键示意图

图4所示,RD0~RD3端口用来进行列扫描,RD4~RD7端口用来进行行扫描。RD4~RD7各自通过一个上拉电阻接到电源上,并分别与RD0~RD3端口通过一个按键连接起来。

当一个按键按下时,对应的行输入口的电平变为通过按键连接的列输入端口的电平。普通状态下,4条列端口的电平全为高。当开始进行按键扫描时,4条列端口的电平依次变低(有且只有一条列端口为低电平),每次变低的同时还检测行端口电平,如果行端口电平为低,则可以确定是哪一个按键按下。

3.1.4. TM1638八位数码管16按键原理

Figure 5. The circuit diagram of the TM1638 module used

图5. 所使用的TM1638模块电路图

TM1638是带键盘扫描接口的LED驱动控制专用芯片。该芯片内部集成MCU数字接口、数据锁存器、LED高压驱动和键盘扫描等电路。TM1638可以同时驱动8个共阴极数码管,可扫描24个矩阵式按键 [5]。TM1638典型电路如图5所示,该模块与PIC单片机使用软件模拟SPI通讯的方式进行通信,并且要特别注意其DIO端口要外接一个10 k欧姆的上拉电阻到电源。其通信时序如图6所示。特别注意的是读取数据的时候,从串行时钟CLK的第8个上升沿开始设置指令到CLK下降沿读数据之间需要一个等待时间Twait(最小1 μs)。

Figure 6. TM1638 communication sequence diagram

图6. TM1638通信时序图

3.1.5. LCD1602显示原理

液晶显示器在控制显示面板中应用非常广泛,英文名是Liquid Crystal Display,简称LCD。液晶显示器具备显示器件体积小、重量轻、功耗低,性价比高等优点,所以LCD日渐成为各种便携式电子产品的理想显示器。1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,它有若干个5 × 7或5 × 11点阵字符位组成,每个点阵字符位都可以显示一个字符。

LCD1602可以显示2行16个字符,有8位数据总线D0-D7,和RS、R/W、EN三个控制端口,工作电压为5V,并且带有字符对比度调节和背光。除此之外,LCD1602液晶显示模块可以只用D4-D7端口作为两次四位数据传送。这样的话,可以节省MCU的I/O口资源。其典型应用如图7所示。

Figure 7. Schematic diagram of the connection between MCU and LCD1602

图7. 单片机与LCD1602连线示意图

3.1.6. USART通信原理

USART接口一般通过三个引脚与其他设备连接在一起,并且任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。

RX:接收数据串行输入。通过采样技术来区别数据和噪音,从而恢复数据。

TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。

当发送器被激活,并且不发送数据时,TX引脚处于高电平,并且总线在发送或接收前应处于空闲状态。一帧数据结构一般为1个起始位,一个数据字(8或9位,最低有效位在前)和1或2个停止位。

传送速率用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送格式位的数目来表示,称之为波特率(band rate)。每秒传送一个格式位就是1波特。常用的波特率有:4800、9600、19,200、115,200波特。1波特 = 1 bps (位/秒)。USART的数据发送与接受过程如图8所示。

Figure 8. Principle diagram of USART serial port communication

图8. USART串口通信原理图

3.1.7. USART多机通信原理

1) 硬件方案

在多机通信中,主机必须要能对多个从机进行识别,在PIC18F452单片机中可以通过修改RCSTA2寄存器的ADDEN位与RX9位来实现。当RX9为1时,串口接收的每一帧数据信息都是9位,其中第9位是数据可编程位,通过给ADDEN置1或置0来区别地址帧和数据帧,当该位为1时,接收地址帧;该位为0时,接收数据帧。在多机通信过程中,主机先发送某一从机的地址,再等待从机的应答。当所有的从机接收到地址帧后与本机地址进行比较,若相同,则从机将ADDEN置0准备接收数据;若不同,则丢弃当前数据,ADDEN位不变。

2) 软件方案

通过软件中设置主机发送数据前的不同标志位与发送数据后的截止位,再在从机接收软件当中设定数据接收判断语句,如果判断到接收到的第一个标志位与该从机的标志位相同,则接收该帧数据截止位前的所有数据,否则丢弃该数据。并且不同的从机,其标志位均不同。

3.1.8. 外部硬件分频电路

1) CD4017

CD4017是一种十进制计数器/脉冲分配器。CD4017是5位Johnson计数器,具有10个译码输出端,CP、CR、INH输入端。时钟输入端的斯密特触发器具有脉冲整形功能,对输入时钟脉冲上升和下降时间无限制。其典型电路如图9所示。

Figure 9. CD4017 circuit diagram

图9. CD4017电路图

2) CD4040

CD4040是12位二进制串行计数器,所有计数器位为主从触发器。计数器在时钟下降沿进行计数,CR为高电平时,对计数器进行清零。其典型电路如图10所示。

3.1.9. 测频方法

1) 测频法原理

若某一周期信号在时间间隔T内,计得重复变化了N次,则根据频率的定义,该信号的频率为

f x = N T #(1)

Figure 10. CD4040 circuit diagram

图10. CD4040电路图

T——通常取1 s或其它十进时间,如10 s,0.1 s,0.01 s等。

2) 测周法原理

把被测信号的周期Tx作为闸门时间,把标准频率脉冲作为计数脉冲,测出Tx。该信号的周期为

T X = N T 0 #(2)

则利用信号与频率的换算公式,测出信号频率为 [6]

f x = 1 T X #(3)

3.2. 方案讨论

3.2.1. 测频方法比较

测频法测频在实际测试当中比测周法测频具有更高的精确度。因为测周法适合测量频率较低的频率,而本系统需测量较高频率的信号,并且受限于PIC18F452单片机性能与中断运行所需时间,测周法测得的周期误差比较大,并且在STM32F334C8T6上进行测周法测频与测频法测频两种不同方法的验证时,无论是在测量低频还是在测量高频情况下,测频法的误差基本上都是±1测量分辨率。而测周法在被测信号频率高于500 Hz时开始出现较为明显的偏差。

3.2.2. LCD1602显示

LCD1602显示字符方便,易控制,成本低,并且网上资料教程也多,数据手册不是很厚,易查阅。但是LCD1602显示的字体有大小限制,不能显示图形和曲线,并且占用较多I/O口。

3.2.3. 16按键方案比较

普通的4 × 4矩阵键盘具有成本低,编程资料多,易控制的优点,但是其占用了8个I/O口。

TM1638模块只需占用3个I/O口,并且还带有8位数码管显示,能够实现按键按下的提示,方便用户使用,但是其编程较为复杂,且数码管刷新显示时,会对供电电源产生一定的噪声干扰,需要独立对其供电,以消除对单片机电源的噪声影响。

3.2.4. 多机通信

硬件方案的多机通信具有易控制,稳定性最优的特点,但是网上资料与教程很少,编程与相关寄存器配置较为复杂。

软件方案的多机通信相较于硬件方案,只是在原有的USART主从通信的基础上添加了1个标志位与一个截止位,其实现判断的代码很简单,并且测试时的效果也很好。

3.3. 最终方案

综合上面原理与方案的对比讨论,最终选择了所有量程全都使用测频法测频,使用LCD1602进行数据显示,使用TM1638模块提供16按键功能和使用软件方案实现多机通信。

4. 频率监测系统的软件设计

频率计的软件设计工具选用MPLAB IDE,使用C语言设计,整体采用模块化设计方法 [7]。

4.1. 主机软件设计

主机软件的主要功能就是设置相关的功能模块来配合硬件实现频率的采集与数据传输,为了达到实时采集的目的,CCP模块使用中断方式进行捕捉 [8],并设定闸门时间为1 S,每1 S结束后更新频率信息并显示在LCD1602上面。主机运行时,通过TM1638不同的按键输入来执行相应的量程切换与通信从机切换。主机软件流程如图11所示。

Figure 11. Host software flowchart

图11. 主机软件流程图

4.2. 从机软件设计

从机软件的主要功能是设置好USART模块与LCD1602模块的相关参数,并在主循环当中设置判断程序,判断接受到的帧信息标志位是否与从机标志位一致,若一致则接收该帧截止位前的所有信息,并更新相关信息显示在LCD1602上面,否则剔除该帧信息,重新接收下轮帧信息。从机软件流程如图12所示。

Figure 12. Slave software flowchart

图12. 从机软件流程图

5. 测试方案与结果

测试当中采用16 MHz外部无源晶振作为单片机时钟,并在正常室温条件下对信号发生器产生的方波信号进行测频,方波幅值为4 VP-P,偏移量为+ 2 V。

1) 宽量程频率信号测量结果如表1所示。

Table 1. Measurement result

表1. 测量结果

2) 100 kHz频率信号下通信测试如图13图14所示。

Figure 13. No. 1 slave communication test diagram

图13. 1号从机通信测试图

Figure 14. No. 2 slave communication test diagram

图14. 2号从机通信测试图

3) 硬件整体实物图如图15所示。

Figure 15. Physical picture of the overall circuit

图15. 整体电路实物图

从测量结果可以看出,在1 kHz至500 MHz频率范围内,频率测量精度很高,且误差范围均控制在0.2%以下。与一般的单片机实现的频率计相比,本设计实现的频率计测量范围更大,同时还能进行一主多从通信,实现频率远程监测。

6. 结论

数字频率计作为一种基本的测量仪器,在多种场合中都有应用;而单片机具有体积小、较强的功能和低廉的价格 [9]。本文给出的宽量程频率监测系统的设计方法,可以在保证一定精度的情况下测量高达500 MHz的高频周期信号,同时实现一主多从的USART数据通信与从机切换。本设计简单、稳定性高、实现成本低,具有较高的实用价值。

参考文献

[1] 李家旺, 李志华. 基于51单片机宽量程数字频率计的设计与实现[J]. 电子世界, 2019(24): 127-128+131.
[2] 岳志明. 基于单片机的宽量程高精度频率计[J]. 工业控制计算机, 2014, 27(5): 129+131.
[3] 陈育斌. PIC18F452 单片机原理及编程实践[M]. 北京: 人民邮电出版社, 2016.
[4] 杜坤, 王克鸿, 吴统立. 基于TLP250的超音频IGBT驱动电路的设计[J]. 机械制造与自动化, 2017, 46(5): 194-197.
[5] 张吉祥, 陈惠明. 一种基于TM1638的智能仪表键盘显示电路设计[J]. 物联网技术, 2011, 1(9): 67-68+72.
[6] 高礼忠, 杨吉祥. 电子测量技术基础[M]. 第2版. 南京: 东南大学出版社, 2015.
[7] 孙安青. PIC单片机实用C语言程序设计与典型实例[M]. 北京: 中国电力出版社, 2008.
[8] 许光, 李雪宝, 郑艳芳, 杨画桔, 李志. 基于PIC18F452的测频仪设计[J]. 现代电子技术, 2011, 34(19): 120-123.
[9] 齐宣, 邵玉斌, 杨道福. 基于STC15单片机的高精度频率计设计[J]. 软件, 2017, 38(12): 220-222.