工控网首页
>

应用设计

>

基于FPGA直流伺服电机控制器设计

基于FPGA直流伺服电机控制器设计

2007/12/12 16:01:00
摘要:利用VHDL硬件描述语言在FPGA中设计直流伺服电机控制器。其含4路PWM控制器,每个控制器均分配一个ID,当地址线Address选中某个ID时,表明对该PWM控制器操作。利用ALE、WR信号将地址线信号锁存。电机编码器捕获单元则获得电机码盘信号,再通过总线控制器送给MPU读取,由此判断电机转动速度。 0 引言 直流伺服电机处理器,如单片机、DSP具有产生PWM信号和捕获电机编码器信号的能力,但对IC产生PWM信号的通道数目和电机编码器捕获通道数日有限。对多个直流电机的伺服控制很难满足要求。故设计基于FPGA直流伺服电机控制器。 1 控制器构成 在Cyclone EP2C5T FPGA内部设计各4路PWM发生器和编码器脉冲捕获单元。其PWM信号通道和编码器脉冲捕获单元数目可基于VHDL硬件描述语言按需调整。如图1,包括总线和4路PWM控制器、4路脉冲捕获单元、分频器1,分频器2。总线控制器根据WR、RD、ALE信号完成FPGA内部地址锁存及8位OUTPUT总线、8位INPUT总线的控制。FPGA外接20MHz有源晶振,时钟信号经分频器1分频后得到20kHz占空比为50%的方波信号。4路PWM控制器以该信号为基准,产生频率为20kHz,占空比可调的4路PWM信号。4路PWM信号可依4位地址线独立控制。4路脉冲捕获单元用于对电机编码器脉冲信号进行捕获。通过总线控制器将脉冲捕获值读出到8位I/O口上。 分频器2将20kHz方波信号20000分频得到1Hz占空比为50%的方波信号,直接驱动LED灯,指示系统状态。EP2C5FPGA内部逻辑在QuartusⅡ6.0环境下使用VHDL硬件描述语言实现。
2 VHDL设计伺服电机控制器 2.1 总线控制器设计 写入伺服电机控制器是PWM调节值,读出的是电机编码器数值。因此,需设计总线控制器完成上述过程。基于FPGA的直流伺服电机控制器为外部处理器(如单片机等)提供总线接口。类似8051的MCU地址线、数据线复用的特点设计了总线控制器。控制总线包括WR、RD、ALE:数据/地址总线为8位I/O。 总线控制器逻辑电路如图2,使用2片74244实现。WR、RD信号使输入/输出总线交替进入高阻态,实现伺服电机控制器数据的写入或读出。
2.2 PWM控制器设计 PWM控制器的VHDL硬件描述语言如下: ARCHITECTURE BEHAVIOR OF PWMCONTROLlER IS signal count:STD_LOGIC_VECTOR(7DOWNTO0); signal value:STD_LOGIC_VECTOR(7DOWNTO0); signal databUS:std_logic_vector(7 downto 0); //数据线 signal Address:std_logic_vector(3 downto 0); //地址线 Signal setAddress:std_logic_vector(3 downto 0); //ID SIGNAL PWM0:STD_LOGIC;//PWM信号输出 begin setAddress<=Addset3&Addset2&Addsetl&Addset0; EN<=1; P1:process(ALE,WR,P27,P26,P25,P24) begin if(ALE=1)then Address<=P27&P26&P25&P24: elsif(WR=0 and Addtess=setAddress)then databus<=P07&P06&P05&P04&P03&P02&P01&P00; end if; end process P1; P2:process(clk) //clk为20KHz方波信号 begin if(clkEVENT and clk=1)then count<=count+1; if(count<=databus)then PWM0<=1;//PWM信号输出高 else PWM0<=0; //PWM信号输出低 end if; if(databUS="00000000")then PWM0<=0; end if; end if; end process P2; PWM<=PWM0; END BEHAVIOR; 因设计中有4路PWM控制器,为每个控制器分配一个ID。上面程序中setAddress为该PWM控制器的ID,当地址线Address选中该ID时,表明对该PWM控制器操作。利用ALE、WR信号将地址线信号锁存。每个clk信号上升沿到来时将count加1处理。比较count与databus的值,实现PWM信号占空比的调整。并可根据需要在FPGA资源允许前提下,任意增加PWM控制器。 2.3 电机编码器捕获单元设计 电机编码器捕获单元获得电机码盘信号后,通过总线控制器送给MPU读取,来判断电机的转动速度。VHDL硬件描述语言的程序源码如下: ARCHITECTURE BEHAVIOR OF counter IS signal countL:STD_LOGIC_VECTOR(7 DOWNTO 0); signal countH:STD_LOGIC_VECTOR(7 DOWNTO 0); signal Port0:std_logic_vector(7 downto 0); //数据线 signal Address:std_logic_vector(3 downto 0); //地址线 signal setAddressL:std_logic_vector(3 downto 0); //IDL signal setAddressH:std_logic_vector(3 downto 0);//IDH Signal databus:std_logic_vector(7 downto 0); signal pulse:std_logic; begin setAddressL<=Addset3L&Addset2L&AddsetlL&AddsetOL; setAddressH<=Addset3H&Addset2H&AddsetlH&AddsetOH; pulse<=CHAF xor CHBF; //CHAF和CHBF双通道编码器脉冲输入信号 //CHAF与CHBF异或后得到pulse信号 p1:process(pulse,CLRCOUNTER) begin if(CLRCOUNTER=0)then countL<="00000000"; countH<="00000000"; elsif(pulseEVENT and pulse=1)then if(countL>=255)then countL<="00000000"; countH<=countH+1;//脉冲计数高位 else countL<=countL+1;//脉冲计数低位 end if; end if; end process p1; p2:process(RD,ALE) begin if(ALE=1)then //地址锁存 Addtess<=P27&P26&P25&P24; elsif(RD=0 and Address=setAddressL)then databus<=countL; //低位数据送总线 elsif(RD=0 and Address=setAddressH)then databus<=countH; //高位数据送总线 else databus<="ZZZZZZZZ"; //进入高阻态 end if; end process p2; P07<=databus(7);P06<=databus(6); P05<=databus(5);P04<=darabus(4); P03<=databus(3);P02<=databus(2); P01<=databus(1);P00<=databus(0); end BEHAVIOR; 多个编码器用setAddtessL、setAddressH定义每个编码器的地址。当Address与setAddressL、setAddressH相同时选中该编码器捕获单元。同时用RD、ALE控制将捕获的数据传到总线上。 2.4 分频器1设计 FPGA EP2C5T全局时钟中信号外接20MHz有源晶振,为得到20kHz的PWM信号,在EP2C5T内用VHDL设计了分频器。VHDL程序如下: ARCHITECTURE BEHAVIOR OF表FENPIN4 IS signal count:STD_LOGIC_VECTOR(3DOWNTO0); begin process(CLKIN) //CLK 为20MH2的时钟信号 begin if(CLKINEVENT and CLKIN=1)then if(count<=2) then count<=count+1; elsif(count>=3) then count<="0000"; end if; if(count<2) then CLKOUT<=1; elsif(count>=2) then CLKOUT<=0; end if; end if; end process; end BEHAVIOR; 分频器2的原理与分频器1相同。将20kHz方波信号20000分频得到1Hz的方波信号。 3 结语 利用VHDL硬件描述语言在FPGA中设计的直流伺服电机控制器,可满足对多路直流电机的伺服控制。该控制器在4路直流伺服电机控制系统中可稳定可靠的运行。
投诉建议

提交

查看更多评论
其他资讯

查看更多

智光节能内蒙古阿拉善左旗瀛海建材余热发电机组首次启动成功

智光电气台州电厂给水泵系统节能改造项目成功投运

智光节能荣登2014年度全国节能服务公司百强榜第五位

索引程序编程凸轮表

奥越信300系列PLC手册