介绍基于FPGA的步进电机控制器设计,基于对逐步操作原理的分析,以及分层设计方案和VHDL程序,仿真结果由Quartus II和仿真结果它使用FPGA作为主要器件,大大减少了外围组件的使用。此同时,使用VHDL语言的控制可以改变根据模块的程序不像步进电机,其可以控制不同类型的步进电动机,其是用于有利的设置步进电机的广泛应用。进电机;控制器;用户可编程逻辑门网络;硬件描述语言图分类号:TP29文献代码:B文章编号:1004-373X(2009)01-148-03步进电机控制器的FPGA实现到pasPAN道,程Gengguo(科学大学武汉,武汉430081)摘要:本文介绍了基于FPGA的步进电机控制器设计,分析了步进电机原理,VHDL代码和仿真结果。过Quartus II。此同时,使用VHDL语言控制,以便能够作用于马达的差异一步一步变化参数的程序模块也可以实现为步进电机控制步骤不同的模型,它是有益的一步一步电机应用广泛。键词:步进电机,控制器,现场可编程门阵列,VHDL简介步进电机广泛应用于数字控制系统中作为伺服元件,步进电机的特点是灵活性和实时性。求更高。此,如何以灵活有效的方式控制步进电机的运行成为研究的主要方向。里,现场可编程门阵列(FPGA)用于通过VHDL编程控制四相步进电机。FPGA设计的使用具有以下优点:硬件设计软件的开发FPGA开发可以在功能级EDA软件上用软件模拟。功能正确时,可以设计硬件映射。后,将EDA软件生成的设计编程文件下载到配置设备进行在线调试。果结果与要求不一致,则可以立即修改设计软件并将其编程到配置芯片中,而无需更改外部硬件电路。计分层模块后,系统设计变得更加简单,大大提高了实时性和灵活性,有利于步进电机的运动控制。度集成,高工作频率通用FPGA在室内集成了数百万个逻辑门,可在内部调度多个模块,与传统的小型嵌入式设备相当。外,通用FPGA包括PLL倍频器和分频器电路模块,因此可以在外部使用低频晶体振荡器来获得更高频率的时钟,从而解决了这些问题。磁干扰和电磁兼容性。进电机工作原理步进电机是一种自动运行组件,当与数字系统结合使用时,恒温阀芯可将脉冲数转换为角位移,以实现正向旋转,反向旋转,手动和自动控制。相步进电机有两组线圈A和B.A和B两组垂直定位线圈的电流方向最多可产生8个磁场方向,即0° ,45°,90°,135°,180°,225°,270°,315°。1显示了四相步进电机的八个方向与电流和电压信号之间的关系。相电动机具有三种类型的励磁:单相励磁:当目标角度是90°的整数倍时,使用该方法。相激励法:当目标角度为45°,135°,225°和315°的整数倍时使用该方法。相励磁方式:即根据表1中列出的信号顺序。进电机定位控制器的一般设计步进电机定位控制器系统主要由一个步进电机转向调节电路模块,步进电机定位和步进控制模块,以及代码输出模块。两个模块完成电机旋转方向,激励模式和定位角度转换的调整,最后一个模块用于编码和传输转换后的角度值。
统原理图如图1所示.VHDL语言设计与仿真步进电机定位控制器的总体结构(1)根据步进电机定位控制器的功能图,输入和输出端口可以设置:reset:IN STD_LOGIC;导游:IN STD_LOGIC; clk:IN STD_LOGIC; Ini:IN STD_LOGIC;方式:IN STD_LOGIC_VECTOR(1从0到0); angle:IN INTEGER范围255从0到0; baBA:OUT STD_LOGIC_VECTOR(3从0到0)(2)中间变量的初始化定义如下:信号数:INTEGER从0到7; cntinc信号:INTEGER范围-2到2;角signalDnCount:INTEGER范围255为0(3)的定位马达控制器步步的上级电路的VHDL的程序代码:单个计数器操作模式中的下一个程序考虑(DIR = 0)Beginstep_motor_direction:步进电机方向定义电路模块,beginprocess(dir,way,angle)begin-if ini =’1’hencc – 单相激励计数<= 0; cntini <= 0; cntinc <= 2; angleDnCntDec – 两相激励计数<= 7; cntini <= – 1; cntinc <= 2; angleDnCntDec – 两相激励计数<= 0; cntini <= 0; cntinc <= 1; angleDnCntDec -manner =“00”autodétectif(角度rem 2)= 1然后激励计数在两个阶段<= 7; cntini <= – 1; cntinc <= 2; angleDnCntDec <= 2; – “10”弹性单相激励计数<= 0; cntini <= 0; cntinc <= 2; angleDnCntDec <= 2; – “10”;如果; – 快速案件; – 人员过程; pas_motor_moving:步进电机单元步进运动控制模块和定位counting_reset:过程(复位,INI CLK角)beginif复位= '1' thountount <= 0; angleDnCount <= 0; elsif clk'event和clk ='1'ithif ini ='0'这个数字<= 0 cntini; angleDnCount <=角度; elsecou Nt angleDnCntDec thenangleDnCount <= angleDnCount-angleDnCntDec; elseangleDnCount <= 0;如果;如果;如果;最后的过程; table_mapping:输出模块编码块巴巴 = 7;精细步进电机;步进电机方向模块设计该模块的功能是定义步进电机的旋转方向(逆时针旋转)并设置初始值和积累/发动机在前进/逆时针方向上所需的减量。顺时针方向相反的方向上指定操作模式的技术规则和模拟输出(ini =初始值,当ini = 1时开始计数)。果方式= 00,则自动判断如果角度角为偶数(角度设置可以被90整除),则电路采用相位激励方法和值初始计数为000(cntini <= 0)。2,否则电路采用两相激励法,计数初始值为111(cntini <= 111),每次加2; angleDnCntDec每次递减2。

获得的模拟结果在图2中示出。2示出了当模块在不同激励模式下输出时为每个初始值和累积/减量值定义的真值的表。动控制模块和所述发动机定位的设计步进这个模块的主要功能是使用INI初始值的值传输到模块和使用输入CLK作为同步控制信号以执行控制步进电机的运动和定位。机定位功能步骤由减法器进行的:在CLK脉冲的每个上升沿,桨距角被定义angleDnCount的倍数,并且从在不同设置的累加器计数angleDnCntDec值中减去激励模式确定差值小于疲劳值在倒计时期间,步进电机以预定角度旋转以停止从控制端口输出的信号以实现功能定位。码输出模块该模块的主要功能是对count和angleDnCount生成的值进行编码,然后通过baBA将其传送到步进电机来控制发动机。模块仿真图示于图2.假设复位= 1,设置计数和angleDnCount 0假设复位= 0,clk为触发和INI = 0的上升沿,初始值设定(cntini和angle)分配给count和angleDnCount信号终端,即(count <= 0 cntini)和angleDnCount <= angle)。设reset = 0,clk是上升沿和ini = 1的触发器,则count被添加到cntini,结果保存为count。

后确定angleDnCount的值是否大于angleDnCntDec。果它更大,使用angleDnCount减小angleDnCntDec并将结果保存为angleDnCount; angleDnCount否则设置为0(因为该值小于angleDnCount angleDnCntDec在那个时候,它意味着发动机已经达到限定的位置,所以它并不需要继续转动)。BaBA [3..0]对count和angleDnCount生成的值进行编码,并将其传递给四相步进电机端口。Quartus II仿真结果上述程序是在ALTERA提供的Quartus II环境中编译的,改编的FPGA器件是FLEX10K10。到的系统仿真图和所生成的系统模块的符号图分别在图3和4中示出。

位是自动复位内部信号系统,dir是步进电机向前和向后的方向控制,clk为从外部提供的时钟信号,INI与值使能开关初始和themann [1..0]是激励模式。择开关(00:自动检测角度输入,确定激励模式,01:单相激励,10:两相激励,11:单相和两相激励);角度[7..0]是俯仰角的倍数。字是一个引脚; baBA [3..0]是系统输出信号的主轴,它是对内部计数器的[3..0]计数值进行编码的结果。为数字伺服电机,步进电机具有以下优点:结构简单,运行可靠,控制方便,控制性能好,但步进电机控制实际上更加复杂。里设计的步进电机控制器很简单,支持三种激励模式:四相步进电机和正向和反向操作。
种基于FPGA的设计过程可以加快同类产品的开发速度并节省投资。且取决于步进电机之间的差,层模块的VHDL程序设置可以被修改以允许马达控制步进不同的模型,其是用于步进电机的一个广阔的应用有益不在实际应用中。

本文转载自
恒温阀芯 https://www.wisdom-thermostats.com
