图片展示

基于FPGA的直流电机PWM控制-音曼顿

作者:音曼顿 浏览: 发表时间:2022-05-27 09:23:52


直流电机是日常生活中常见的能量转换装置,应用广泛,功能强大,在生产生活中占有重要地位。直流电机的控制方法多种多样,控制系统的组成也多种多样。本文将使用现场可编辑的门阵列FPGA实现直流电机的控制,为实现电机数字控制提供了新的方法。在论文中,我们简要介绍了控制系统的硬件电路,详细介绍了使用的芯片功能和参数,使整个系统的设计理念更加清晰。我们使用软件QuartusII软件及VHDL语言完成本设计的程序部分。VHDL语言编程,通过连接每个功能模块,生成每个功能模块,形成整个直流电机控制系统。将设计好的软件系统下载到实验箱中,通过实验箱上的按钮控制直流电机。


直流电机由永磁铁、电枢和换向器组成。上下为两个固定永久磁铁,分别是N极,S极。abcd是一个可旋转的导体,即电枢。ab端与cd两个不接触的半圆形金属片分别连接到端部,即换向器。


换向器工作时AB上正下负直流电压加在两端,电流由a到b,由c到d,磁线的方向是自上而下。左手定则,ab向左移动,cd向右移动,电枢旋转逆时针。由于换向器与电枢连接,也会随电枢逆时针旋转。


当电枢转过180°,cd在上,ab在下。电流由d到c,由b到a。左手定则,cd向左移动,ab向右移动,电枢将继续逆时针旋转。当转动180时°回到图2-1a情况。这样,电机就可以转动了。


若改变A、B原理上,电机将顺时针旋转。

直流电机的旋转原理


控制方式就是对逆变电路开关器件的通断进行控制,使输出端得到一系列幅值相等的脉冲,这种脉冲被称为PWM 信号。通过调整PWM的周期、PWM的占空比便可以达到控制充电电流的目的。


近年来,随着计算机进入控制领域,以及新型的电力电子功率元器件的不断出现,使采用全控型的开关功率元件进行脉宽调制控制方式已成为主流。这种方式很容易在微机控制中实现,这正是直流电机控制数字化的契机。


直流电机的速度控制有对励磁磁通进行控制的励磁控制法和对电枢电压进行控制的电枢控制法。由于励磁控制法受到的限制较多,因此本次设计中将采用电枢控制法。现在绝大多数直流电机采用开关驱动方式,通过脉宽调制PWM就可以控制电枢电压,进而实现调速。


在转矩不变的情况下,电机转速跟供电电压成正比,所以通过改变占空比就可以实现对控制的速度。


在PWM调速时,可以通过以下3种方法改变占空比:

(1)定宽调频法。T1保持不变,只改变t2,周期T(或频率f)也随之改变。

(2)调宽调频法。T2保持不变,只改变t1,周期T(或频率f)也随之改变。

(3)定频调宽法。周期T(或频率f)保持不变,同时改变t1和t2。


由于前两种方法在调速时,将改变PWM的周期,进而改变PWM的频率。当PWM的频率与机械固有频率接近时,将引起震荡。因此,现在多采用第三种方法。


主板上还设计有电机测速电路,这样可以进行闭环调试实验。测试电路采用槽型光电开关,当电机转动时,安装在电机转轴上的转盘将从槽型光电开关转过。转盘上均匀分布有4个孔,电机转动一周,光电开关工作4次,则在DCMotorSpeed输入引脚上会出现4个低脉冲。检测1S内DCMotorSpeed上低脉冲的个数除以4即可得到电机每秒转速。U14为施密特触发器,用于对光电开关输出信号进行整形处理,LED19是对外的逻辑分析仪测试点及接口。


本次设计要求使用FPGA实现对直流电机的启停、加减速、正反转的控制。用FPGA控制直流电机,能够将大量逻辑功能集成于一个单片IC中,节省资源,实现在线编程。擦除,使设计更灵活,可靠度更高,且系统结构极为紧凑。在整个设计过程中,只要将适当的程序导入实验箱内的芯片,并锁定直流电机电路的所需引脚即可完成对直流电机的初步控制。


整个系统共包含4个按键。这4个按键是电机控制系统的控制端。分别是启停键、正反转键、加速键、减速键。当按下任意一个按键时,电机将根据按键产生相应的变化。


除此之外,为了更好的检验对电机的控制能力,同时丰富设计内容,这次设计中将额外加入测速模块,利用该模块可以对电机一周期内的转动圈数进行计数,并将计数结果显示在七段数码管上。


当系统工作时,时钟信号导入PWM模块,模块内部计数器将进行计数,之后将计数结果与设定值比较,根据比较的不同结果,输出端会输出高低两种电平信号,从而产生占空比可调的PWM信号。


设定值通过按键控制其加减,起始值为默认的0。因此通过按键调节设定值的大小,可以对PWM信号的占空比进行调节。在这次设计中,PWM信号只有0和1两个值,随着PWM信号导入控制模块,在控制模块输出的电压也将呈现无电压与额定电压之间的不断转换。当通断电时间足够短时,电机的停顿将无法被人眼识别,电机的速度由此得到有效控制。

前文已经提到,实验箱上的测速电路采用槽型光电开关。电机每转动一圈,均会在MotorSpeed端口输出4个低电平脉冲。因此若要实现对电机的测速,只需对输出脉冲信号中的低电平进行计数,经过适当运算处理即可实现。


由于最终结果将在七段数码管上显示,因此在计数时应采用十进制计数,这样,计数结果将为“8421BCD码”,再将各位上的BCD码按位分别导入显示电路,就可以轻易完成数码管显示。如果直接采用二进制计数,最终的计数结果需要转换为十进制数,在按位显示,将大大增加运算量,增大显示难度,除此之外,在之后的程序编辑时,也极容易产生逻辑混乱,实现其应有功能。


这次设计将使用七段数码管显示两位计数结果。但是受到实验箱硬件的限制,每次只有一个数码管可以正常显示。为了克服实验箱的硬件限制,我们将在程序上进行一定调整,使用状态机来让两个数码管进行轮流显示。如果两个数码管的切换频率足够快,利用人眼的视觉暂留,就可以产生两位数同时显示的错觉,从而顺利实现数码管十进制显示。

在程序上实现从二进制数到数码管十进制显示的转换并不难,只要知道如何控制数码管的各段即可。


状态机及其设计技术是实用数字系统设计中的重要组成部分,也是实现高效率高可靠逻辑控制的重要途径。用VHDL语言可以设计不同的表达方式和不同实用功能的状态机,然而它们都有相对固定的语句和程序表达方式,只要把握了这些固定的语句表达部分,就能根据实际需要写出各种不同风格和实用目的的VHDL状态机。因此,掌握和应用状态机是很有必要,并且不难实现的。


利用VHDL设计的实用逻辑系统中,有许多可以利用状态机的设计方案来描述和实现。无论与基于VHDL的其他设计方案相比,还是与可完成相似功能的CPU相比,状态机都有其难以超越的优越性。


首先,状态机的工作方式是根据控制信号按照预先设定的状态进行顺序运行,因此可以克服纯硬件数字系统顺序方式控制不灵活的特点。


第二,状态机容易构成性能良好的同步时序逻辑模块,这对于对付大规模逻辑电路设计中令人深感棘手的竞争冒险现象是一个上佳选择。


第三,与VHDL的其他描述方式相比,状态的VHDL表述丰富多样,程序层次分明,结构清晰,易读易懂。在排错、修改和模块移植方面也有其独到的好处。


第四,在高速运算和控制方面,状态机更有其巨大的优势。由于在VHDL中,一个状态机可以由多个进程构成,一个结构体中可以包含多个状态机,而一个单独的状态机以顺序方式所能完成的运算和控制方面的工作与一个CPU的功能类似。因此,一个设计实体的功能便类似于一个含有并行运行的多CPU的高性能微处理器的功能。而多CPU的微处理器早已在通信、工控和军事等领域有了广泛应用。


第五,状态机在可靠性方面具有明显优势。CPU本身的结构特点与执行软件指令的工作方式决定了任何CPU都不可能获得圆满的容错保障。


因此,在要求高可靠性的特殊环境中的电子系统中,CPU就难以满足要求。而状态机就不同了,它由纯硬件电路构成,并且拥有各种完整的容错技术。除此之外,即使状态机进入了非法状态,它也可以在极短的时间内跳出,这不足以对系统造成伤害。


用VHDL语言设计的状态机有多种形式,从状态机的信号输出方式上可以分为Mealy型和Moore型两种状态机;从结构上分,有单进程状态机和多进程状态机;从状态表达方式上分,有符号化状态机和确定状态编码状态机;从编码方式上分,有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。然而,最一般和最常用的状态机通常包含说明部分、主控时序进程、主控组合进程、辅助进程几个部分,这也是状态机易于操作的原因之一。


这次设计中,我们将使用Mealy型状态机。Mealy型状态机的输出是当前状态和输入信号的函数,也就是说,当输入信号发生变化时,它的输出将立即发生相应的变化,而不完全依赖时钟信号。这次的显示模块需要实时显示电机所转的圈数,因此必须使用Mealy型状态机。


PWM信号是整个电机控制系统的基础,没有PWM信号,就无常实现对电机的正常控制,因此PWM模块设计的好坏会直接影响设计的最终效果能否让人满意。


该模块的输入端,至少应有时钟信号输入端、与比较值输入端两个。时钟信号输入后,触发模块内部计数器,对时钟脉

冲进行计数。之后与比较值输入端输入的输入值进行比较,决定输出端的输出信号。在此,我们加入一个PWM_EN的使能端,当使能端输入为0时,不论比较结果如何,PWM模块的输出端始终是0;当使能端输入为1时,输出端根据比较结果正常输出。PWM模块的输出将输入到主控模块,并最终影响电机运行状态,加入这个使能端,可以在PWM模块里实现对电机的启停控制,这样系统控制的精确性有较高保障,同时可以减小主控模块的体积,降低内部程序的复杂度,在后期的维护与纠错中,可以保证我们更快的找到问题所在。


在PWM模块的输出端设计上,我们有两种选择。第一,采用双输出,即输出端根据比较结果同时输出0和1。第二,采用单输出,即输出端根据比较结果,按一定周期分别输出0和1。这次设计所用实验箱里的直流电机电路为双输入(MotorA与MotorB),因此,在PWM模块采用双输出可以说是有一定道理的。但整个控制系统所要实现的功能是多样且复杂的,双输出虽然直接易懂,但并不利于系统控制与程序编译。而单输出则不同,虽然无法实现对直流电机的直接控制,但是可以将输出信号输入到主控模块中,并在主控模块中经过适当的处理,实现对直流电机的有效控制。显然,采用这种方法稳定性更好,程序上也更加简单易懂。


主控模块是整个直流电机控制系统的核心,它是直接与直流电机端口相连的模块。由于加减速控制已经通过PWM模块与按键计数模块实现,所以在主控模块中只需要实现启停信号与正反转信号的产生,并在最后输出时与PWM信号进行整合就可以实现对直流电机运行状态的控制。


在模块的输入端,需要有两个按键输入,它们分别对应直流电机的启停键与正反转键。除此之外,还需要有一个PWM信号输入端,用于接收由PWM模块产生的PWM信号。在输出端,主控模块是与直流电机电路相连的,因此要有两个连接直流电机的输出端口。同时,还要有一个PWM信号使能信号输出端,将使能信号输入到PWM模块中。当使能信号为1时,允许PWM模块正常输出PWM信号;当使能信号为0时,使PWM模块只能输出0,从而实现对直流电机的启停控制。


对于直流电机的启停控制,也可以通过在模块内部设定控制信号的方式来实现。即在模块内设定一个只有高低位的脉冲信号,在最后的输出时,与输出信号相整合,这样也可以实现直流电机的启停控制。不过采用这种方法,会使最终用于整合的信号多出一个,这无疑会使程序看起来更加繁琐,不利于纠错与改进,因此最终我们放弃了这一方案。



为了丰富设计内容,扩展整个直流电机控制系统的功能,我们在基础功能之外加入了测速功能。通过这一功能,可以使用户直观的看到直流电机在一个运行周期内所转动的圈数。


实现这一功能需要使用实验箱上的MotorSpeed端口,该端口是直流电机电路中的一个输出端口,它功能与其他两个端口相互独立,互不干扰。因此这部分功能将独立于之前的控制模块之外,两个模块互不影响。同时,这个功能也将充分利用直流电机电路中的一个未使用端口,增加实验箱的使用率。



针对这种情况,我们在测速模块内部设置了双计数系统。即当低电平脉冲到来时,计数器1由0开始计数,当计数器1的结果为4时,计数器2才加一。而计数器1将清零并重新开始计数,如此循环,最终我们将得到电机转动圈数的二进制表示结果。显然,采用这种方法,对于直流电机所转圈数的计数是可以顺利实现的。


但这种方法也有一个缺陷。由于计数结果是二进制数,而最终的显示方式是基于七段数码管的十进制显示。如果结果是一位数,实现起来并不难。但由于直流电机的转速非常快,显示电路至少要使用两位数七段码管,这无疑就十分困难了。二进制数与十进制数之间进行转换,并且将转换结果按照数位分别输出,利用VHDL语言几乎是不可能实现的,即使实现,也将使用大量的程序语句。对于一个系统来说,简单易懂,方便执行是十分重要的,因此,我们决定在计数方式上加以改进。


改进方法如下:计数器1的工作方式不变,依旧对低电平脉冲计数,当计数结果为4时,计数器1清零,计数器2加一。当计数器2的计数结果为“1010”时,计数器2清零,计数器3加一。在最后输出时,计数器2将对应最终计数结果的个位,而计数器3将对应输出结果的十位。采用这种方案,在显示模块时进行的数值转换将十分容易,而且这种位对位的方式也大大提高了稳定性与准确性。


直流电动机是一种常用的动力装置,广泛应用于伺服控制、数控机床、机器人等领域,随着现代工业的快速发展对直流电机控制系统的性能要求不断提高。这次设计是基于FPGA技术进行的,与传统控制方法相比,采用这种方法在电路集成度上具有明显的优势,因此,如果把这种方法应用于实际,在芯片功耗与体积上的优势也必然是其他控制方式无法比拟的。


直流电机的运行状态由其两个端口的高、低位状态共同决定,如果对直流电机两个端口进行直接控制,程序的复杂度将大大增加,而且容易发生冲突,在日后的维护,改良上也必将遇到巨大困难,这次设计采用PWM间接控制方式正是出于对这种问题的考虑。使用PWM进行控制,整个系统直观,简洁,从设计成果也可以看出,整个系统的核心就只有PWM模块和主控模块两个模块,而且每个模块只有区区几十行,简单易懂,逻辑清楚,显然符合设计要求。


这次虽然已经实现了对直流电机的基本控制功能,并且实现了对直流电机转动的基本计数功能,但是也有许多明显的不足。由于实验箱略显陈旧,并没有在硬件上对按键抖动加以处理,因此在程序上还需要加入按键消抖模块,由于所要使用的按键较多,导致了程序体积增大,对各个模块的连线有一定影响。


除此之外,在测速模块中,由于只设置了个位与十位两位,在计数上有较大限制,当直流电机的转速较快时,测速电路基本失去了其应有的作用,这个将在日后的设计中加以改进。


同时,由于时间仓促和硬件限制,这次设计并没有涉及到直流电机定速功能,定速功能是一个智能化较高,应用范围极广的功能,在这方面的空白不能不说是一大遗憾。就控制系统的应用而言,只对直流电机进行控制,而没有对更复杂一点的电机进行控制,这也是一个缺陷。


在未来的研究和学习中,我们将尽力弥补现在的不足,填补领域的空白,深化所学知识,锻炼应用能力,从而更好的适应多变的社会环境与日新月异的现代科技。




文章推荐


网站首页    |    企业简介    |    产品中心   |    应用案例   

新闻资讯    |    加入我们    |    联系我们   |    网站地图

    蓝先生:15875597825 

    黄先生:18270691939

    地址:深圳市西乡街道共乐社区共和工业路35号309

微信公众号

Copyright @ 2022  版权所有 深圳音曼顿科技有限公司    ICP备案号180006020号-3

添加微信好友,详细了解产品
使用企业微信
“扫一扫”加入群聊
复制成功
添加微信好友,详细了解产品
我知道了