基于FPGA的电机测速系统设计
扫描二维码
随时随地手机看文章
摘要:研究的是基于FPGA的电机测速系统设计。该设计以有源晶振来产生时基信号,利用欧姆龙光电编码器E682-CWZ6C360P/R将转速信号转变为频率信号,采用数码管动态显示来显示测量所得的数值。FPGA模块的编写是基于Altera公司的Quartus II软件进行编写的,采用的芯片型号为EP2C5T144C8N。FPGA模块是利用VHDL语言进行编写,利用Quartus II软件自带的仿真软件进行仿真,通过观察仿真波形来验证模块是否正确。本设计可以实现小数值的方波频率测量和电机转速测量。
关键词:FPGA;电机测速;VHDL;模块化设计
随着电子设备及电子产品逐渐向低功耗、小体积、多功能和快速更新的方向发展,使得电子设计自动化(EDA)技术快速发展。由于成本和功耗的进一步降低,在许多的领域运用到了可编程门阵列即FPGA,它在通信、仪器、网络、数据处理、工业控制、军事和航空航天等众多领域有着广泛的应用。
现场可编程门阵列即FPGA(Field Programmable Gate Array),是从EPLD、PAL、GAL等这些可编程器件的基础上进一步发展起来的。作为专业集成电路领域中的半定制电路而出现的FPGA,不但解决了定制电路的不足,而且克服了原有可编程器件因门电路数有限的而产生的缺点。FPGA的使用十分的灵活,同一片FPGA只要使用不同的程序就能够达到不同的电路功能。现在FPGA在通信、仪器、网络、数据处理、工业控制、军事和航空航天等众多领域有着广泛的应用。随着成本和功耗的进一步降低,将在更多的领域运用FPGA。
基于FPGA的电机测速系统设计,以Quartus II为设计平台,采用硬件描述语言VHDL和模块化设计的方式,并通过数码管驱动电路动态显示测量的结果。本设计具有外围电路少,集成度高,可靠性强等特点,可以用来测量电机的转速值。
1 外围电路设计
传感器将电机转速的模拟信号转换成数字脉冲信号送入FPGA模块。同时由基准时钟电路产生准确的时钟信号和复位电路产生的复位信号送入FPGA模块。再由FPGA模块产生分频电路、十进制计数器电路、数据处理电路和显示译码电路。由分频电路将送入的基准时钟信号进行分频,得到一个闸门信号,作为十进制计数器的使能信号。数据处理电路的作用是将十进制计数器得到的数据进行相应的处理后,再送入显示译码电路进行转换译码。电机测速系统的总体框图如图1所示。外围电路分为:基准时基电路,复位电路,传感器测量电路和显示电路。
1.1 基准时基电路设计
基准时基电路采用50 MHz的有源晶振,3.3 V电源通过FB5接入有源晶振的VCC端口,同时通过C10和C11滤去高频干扰信号。从OUT端口输出50 MHz的时钟信号。晶振电路如图2所示。
1.2 复位按键的设计
按键作为嵌入式智能控制系统中人机交互的常用接口,我们通常会通过按键向系统输入各种信息,调整各种参数或者发出控制指令,按键的处理是一个很重要的功能模块,它关系到整个系统的交互性能,同时也影响系统的稳定性。在本次设计中,通过按键实现了FPGA模块的手动复位。复位按键如图3所示。
1.3 传感器电路的设计
若要测量转速信号,需要先将其转换为电信号,所以就需要用到光电脉冲传感器。本次设计所选用的光电编码器为欧姆龙编码器E682-CWZ6C360P/R。
1.4 显示电路的设计
在本次设计中我们用到的显示电路如图4所示。
由数码管显示电路可以知道,这是共阳极数码管。当在位选端SE1~SE4输入低电平时,三极管导通,从而D1~D4接入高电平。由a到DP端输入数码管显示码,就可以得到我们所需要的数字,由位选端让数码管选择导通。
2 FPGA模块设计
FPGA模块的设计主要是实现将由光电编码器转换得到的电信号转换成转速值,通过数码管显示。因此本次设计的模块主要有分频模块、计数模块、锁存模块、数据处理模块和动态显示模块等组成。
2.1 分频模块的设计
在本次设计中我们需要得到的是转速值,而测量的根本原理就是将转速信号转换为频率信号,同过测量频率信号从而算出转速值。由于外部时钟提供的是50 MHz的时钟信号,此信号送入FPGA模块,通过程序将其进行分频,设计需要的是1 s的闸门脉冲,来统计被测信号的个数,从而计算出被测信号的频率。
分频模块的设计流程图如图5所示。
2.2 四位十进制计数
四位十进制计数模块是通过复位信号和闸门信号来控制模块对外部被测信号的十进制计数。当复位信号为高电平时,b1、b2、b3、b4四位计数信号都为0。当复位信号为低电平,并且闸门信号为高电平时,计数模块开始统计外部信号clk1的个数,b4为最高位,b1为最低位。
计数模块流程图如图6所示。
start为复位信号,当为0时系统复位。
b4、b3、b2、b1为计数信号,依次代表千位到个位,每一位最大计数。
2.3 锁存模块的设计
锁存模块具有存储1 s it数完时,所计数的数据和提供自动复位信号的功能。而且,在按下复位信号时,清除计数数据。当闸门信号en为下降沿时,就将计数模块所得到的数值存入锁存模块。当闸门信号en为‘0’时,程序就输出一个低电平的复位信号,反之则输出高电平的信号。
2.4 动态显示模块的设计
动态显示译码是所有数码管共用数据通道,由位选端选通,每位依次导通。由于人眼具有视觉延迟性,所以观察到的数码管为每一位显示不同的数据,同时显示。
设计利用外部时钟50 MHz分频来实现延迟,延迟系数为62 499。则clock上升沿个数为62 499个时,位选信号加1,下一位导通显示数据。数码管的显示需要将0到9的BCD码转换为七段数码管显示。与分频模块类似,由于时间较长,设计将延迟系数62 499改为8,则clock每8个上升沿则数码管显示下一位。
动态显示模块仿真如图7所示。
2.5 数据处理模块的设计
本次实验是为了完成电机转速的测量,而测量的原理是利用传感器将转速信号变为电脉冲信号,通过测量脉冲信号的频率值,带入公式从而计算出转速值。数据处理模块就是利用VHDL语言编写程序进行数据的运算,将会运用到加减乘除这4种运算。
通过推理可以得出电脉冲的个数N与电机的转速n的关系式如式(1)所示。
N——电脉冲个数
n——电机转速(单位为:转每分钟)
Z——光电编码器倍增数(此设计中为360)
t——测量时间(单位为:秒)
通过式(1)可以推出电机转速值n的计算公式如式(2)所示。
f——测量频率
由式(3),程序在运算模块中将会编写的模块有数据相加模块、乘60模块、除360模块和数据分解模块。运算模块流程图如图8所示。
数据相加模块是为了将频率计所得到的四位数值乘以相应的倍数,再将其相加后得到一个整体的二进制数,以便于进行下面的运算。又因为电脉冲的个数单位为个每秒,而电机转速的单位为转每分钟,所以存在60 s的转换值。利用程序将之前得到的数据乘以60。使用的传感器是欧姆龙编码器E6B2-CWZ6C360P/R,所以倍增数是360,所以在运算模块中我们要除去360。在运算得出转速值后,还需要一个将这个二进制数值分解的模块,因为数码管显示模块是将个十百千位单独显示的,所以要先将每一位分解出来,再送入数码管显示。
3 结束语
本次设计是基于FPGA的电机测速系统设计,利用的是Altera公司开发的Quartus II软件作为设计平台,可以在FPGA开发板上实现测量由传感器转换得到的脉冲信号,并且通过计算得到电机转速值。
在本次设计中,还可以进行一些扩展,可以添加报警电路,设定一个报警值,当测量的转速值大于这个报警值时,就可以让蜂鸣器报警或数码管点亮。