基于FPGA 的电机测速系统设计

2013-10-21 00:53王靖
电子设计工程 2013年12期
关键词:数码管流程图计数

王靖

(东南大学 电子科学与工程学院,江苏 南京 210096)

随着电子设备及电子产品逐渐向低功耗、小体积、多功能和快速更新的方向发展,使得电子设计自动化(EDA)技术快速发展。由于成本和功耗的进一步降低,在许多的领域运用到了可编程门阵列即FPGA,它在通信、仪器、网络、数据处理、工业控制、军事和航空航天等众多领域有着广泛的应用[1]。

现场可编程门阵列即FPGA(Field Programmable Gate Array),是从EPLD、PAL、GAL 等这些可编程器件的基础上进一步发展起来的。作为专业集成电路领域中的半定制电路而出现的FPGA,不但解决了定制电路的不足,而且克服了原有可编程器件因门电路数有限的而产生的缺点。FPGA 的使用十分的灵活,同一片FPGA 只要使用不同的程序就能够达到不同的电路功能。现在FPGA 在通信、仪器、网络、数据处理、工业控制、军事和航空航天等众多领域有着广泛的应用。随着成本和功耗的进一步降低,将在更多的领域运用FPGA。

基于FPGA 的电机测速系统设计,以Quartus II为设计平台,采用硬件描述语言VHDL 和模块化设计的方式,并通过数码管驱动电路动态显示测量的结果。本设计具有外围电路少,集成度高,可靠性强等特点,可以用来测量电机的转速值。

1 外围电路设计

传感器将电机转速的模拟信号转换成数字脉冲信号送入FPGA 模块。同时由基准时钟电路产生准确的时钟信号和复位电路产生的复位信号送入FPGA 模块。再由FPGA 模块产生分频电路、十进制计数器电路、数据处理电路和显示译码电路。由分频电路将送入的基准时钟信号进行分频,得到一个闸门信号,作为十进制计数器的使能信号。数据处理电路的作用是将十进制计数器得到的数据进行相应的处理后,再送入显示译码电路进行转换译码[2]。电机测速系统的总体框图如图1 所示。外围电路分为:基准时基电路,复位电路,传感器测量电路和显示电路。

1.1 基准时基电路设计

基准时基电路采用50 MHz 的有源晶振,3.3 V 电源通过FB5 接入有源晶振的VCC 端口,同时通过C10 和C11 滤去高频干扰信号[3]。从OUT 端口输出50 MHz 的时钟信号。晶振电路如图2 所示。

图1 电机测速系统的总体框图Fig.1 Chart of the motor speed measurement system

图2 有源晶振电路图Fig.2 Circuit of the active crystal oscillator

1.2 复位按键的设计

按键作为嵌入式智能控制系统中人机交互的常用接口,我们通常会通过按键向系统输入各种信息,调整各种参数或者发出控制指令,按键的处理是一个很重要的功能模块,它关系到整个系统的交互性能,同时也影响系统的稳定性。在本次设计中,通过按键实现了FPGA 模块的手动复位。复位按键如图3 所示。

图3 复位按键电路图Fig.3 Circuit of the reset button

1.3 传感器电路的设计

若要测量转速信号,需要先将其转换为电信号,所以就需要用到光电脉冲传感器。本次设计所选用的光电编码器为欧姆龙编码器E6B2-CWZ6C360P/R。

1.4 显示电路的设计

在本次设计中我们用到的显示电路如图4 所示。

由数码管显示电路可以知道,这是共阳极数码管。当在位选端SE1~SE4 输入低电平时,三极管导通,从而D1~D4 接入高电平。由a 到DP 端输入数码管显示码,就可以得到我们所需要的数字,由位选端让数码管选择导通。

2 FPGA 模块设计

FPGA 模块的设计主要是实现将由光电编码器转换得到的电信号转换成转速值,通过数码管显示。因此本次设计的模块主要有分频模块、计数模块、锁存模块、数据处理模块和动态显示模块等组成。

图4 数码管显示电路Fig.4 Circuit of the digitron display

2.1 分频模块的设计

在本次设计中我们需要得到的是转速值,而测量的根本原理就是将转速信号转换为频率信号,同过测量频率信号从而算出转速值。由于外部时钟提供的是50 MHz 的时钟信号,此信号送入FPGA 模块,通过程序将其进行分频,设计需要的是1 s 的闸门脉冲,来统计被测信号的个数,从而计算出被测信号的频率[4]。

分频模块的设计流程图如图5 所示。

图5 分频程序流程图Fig.5 Chart of the frequency division

2.2 四位十进制计数

四位十进制计数模块是通过复位信号和闸门信号来控制模块对外部被测信号的十进制计数。当复位信号为高电平时,b1、b2、b3、b4 四位计数信号都为0。当复位信号为低电平,并且闸门信号为高电平时,计数模块开始统计外部信号clk1 的个数,b4为最高位,b1为最低位[5]。

计数模块流程图如图6 所示。

图6 计数程序流程图Fig.6 Chart of the count program

start为复位信号,当为0 时系统复位。

b4、b3、b2、b1为计数信号,依次代表千位到个位,每一位最大计数

2.3 锁存模块的设计

锁存模块具有存储1 s 计数完时,所计数的数据和提供自动复位信号的功能。而且,在按下复位信号时,清除计数数据。当闸门信号en为下降沿时,就将计数模块所得到的数值存入锁存模块。当闸门信号en为‘0’时,程序就输出一个低电平的复位信号,反之则输出高电平的信号。

2.4 动态显示模块的设计

动态显示译码是所有数码管共用数据通道,由位选端选通,每位依次导通。由于人眼具有视觉延迟性,所以观察到的数码管为每一位显示不同的数据,同时显示[6]。

设计利用外部时钟50 MHz 分频来实现延迟,延迟系数为62 499。则clock 上升沿个数为62 499个时,位选信号加1,下一位导通显示数据。数码管的显示需要将0 到9 的BCD码转换为七段数码管显示。与分频模块类似,由于时间较长,设计将延迟系数62 499 改为8,则clock 每8个上升沿则数码管显示下一位。

动态显示模块仿真如图7 所示。

图7 动态显示模块仿真Fig.7 Simulation of the module of dynamic display

2.5 数据处理模块的设计

本次实验是为了完成电机转速的测量,而测量的原理是利用传感器将转速信号变为电脉冲信号,通过测量脉冲信号的频率值,带入公式从而计算出转速值。数据处理模块就是利用VHDL 语言编写程序进行数据的运算,将会运用到加减乘除这4 种运算。

通过推理可以得出电脉冲的个数N 与电机的转速n 的关系式如式(1)所示。

N—电脉冲个数

n—电机转速(单位为:转每分钟)

Z—光电编码器倍增数(此设计中为360)

t—测量时间(单位为:秒)

通过式(1)可以推出电机转速值n 的计算公式如式(2)所示。

而电脉冲个数N 与测量时间t 的比值等于测量频率,所以式(2)可以转换为式(3)所示。

f—测量频率

由式(3),程序在运算模块中将会编写的模块有数据相加模块、乘60 模块、除360 模块和数据分解模块。运算模块流程图如图8 所示。

图8 运算模块流程图Fig.8 Chart of the calculate module

数据相加模块是为了将频率计所得到的四位数值乘以相应的倍数,再将其相加后得到一个整体的二进制数,以便于进行下面的运算。又因为电脉冲的个数单位为个每秒,而电机转速的单位为转每分钟,所以存在60 s 的转换值。利用程序将之前得到的数据乘以60。使用的传感器是欧姆龙编码器E6B2-CWZ6C360P/R,所以倍增数是360,所以在运算模块中我们要除去360。在运算得出转速值后,还需要一个将这个二进制数值分解的模块,因为数码管显示模块是将个十百千位单独显示的[7],所以要先将每一位分解出来,再送入数码管显示。

3 结束语

本次设计是基于FPGA 的电机测速系统设计,利用的是Altera 公司开发的Quartus II 软件作为设计平台,可以在FPGA 开发板上实现测量由传感器转换得到的脉冲信号,并且通过计算得到电机转速值。

在本次设计中,还可以进行一些扩展,可以添加报警电路,设定一个报警值,当测量的转速值大于这个报警值时,就可以让蜂鸣器报警或数码管点亮。

[1]潘松.EDA技术实用教程[M].4版.北京:科学出版社,2010(6):1-2.

[2]黄智伟.FPGA系统设计与实践[M].北京:电子工业出版社,2005(1):336-341.

[3]赵艳华.基于Quartus II的FPGA/CPLD设计与应用[M].北京:电子工业出版社,2009.

[4]周梦然.CPLD/FPGA的开发与应用[M].北京:中国矿业大学出版社,2007.

[5]黄智宇,李彦,等.基于Verilog HDL的FPGA设计与工程应用[M].北京:人民邮电出版社,2009.

[6]张洪润,张亚凡.FPGA/CPLD应用设计200例(上册)[M].北京:北京航空航天大学出版社,2009.

[7]周维国.汽轮发电机组振动在线监测系统失真原因分析及处理[J].陕西电力,2011(9):78-82.ZHOU Wei-guo.Cause analysis and treatment of distortion in turbine vibration online monitoring system[J].Shaanxi Electric Power,2011(9):78-82.

猜你喜欢
数码管流程图计数
古人计数
微课教学设计之“数码管动态显示”
递归计数的六种方式
古代的计数方法
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
这样“计数”不恼人
专利申请审批流程图
专利申请审批流程图