基于fpga的直流电机伺服系统的设计与实现内容摘要:

的实现步骤: (1):对输入和输出值进行分配 第一个输入: 位置误差 E 设定量化论域 E={10, „ „ ,10},模糊语言子集 E 为 {NB(负大 )、 NM(负中 )、 NS(负小 )、ZE(零 )、 PS(正小 )、 PM(正中 )、 PB(正大 )}。 第二个输入:位移误差变化量 设定量化论域 EC={1,0,1}, EC 模糊语言子集取 {N (负 )、 ZE (零 )、 P(正 )}。 输出: PWM 波控制信号 设定量化论域 U={10, „ „ ,10},模糊语言子集也为 {NB(负大 )、 NM(负中 )、 NS(负小 )、ZE(零 )、 PS(正小 )、 PM(正中 )、 PB(正大 )}。 11 (2):模糊控制规则 表:模糊控制规则 E Ec NB NM NS ZE PS PM PB N NB NB NM NS ZE PM PB ZE NB NB NS ZE PS PB PB P NB NM ZE PS PM PB PB (3): 模糊控制表的编制 1),求总的模糊关系 2),制备模糊编制表 (4): 模糊量跟确定量之间的转换 要对系统实现有效的控制就需要有个准确的清晰量,这 个 时候就需要对模糊量进行去模糊化的操作。 12 第四章 系统硬件 结构概况 因为本设计对硬件电路设计要求 比较低 ,主要做软件功能实现及时序仿真,所以在此附上 少量的硬件电路设计模块来加强对系统的了解。 硬件电路结构 伺服电机的硬件电路主要由 FPGA 控制器,驱动电路,数据采集电路,过流保护电路以及隔离电路等模块组成,并且各个模块在 FPGA(现场可编程门阵列 )的一致控制下协调的工作。 图 为 整个硬件系统的结构图。 驱动电路 在本设计中驱动电路采用的是单极可逆式驱动电路并有 MOSFET 构成 H 桥来控制电机的正反转。 FPGA 指令信号 指令信号 数据采集 器 AD1674 AD1674 ADC0809 系统控制器 隔离电路 驱动电路 执行机构 被控对象 位置检测传感器 电流检测传感器 图 整个硬件系统的结构图 13 此中采用单极受限式的 PWM 波控制两组 NMOS 跟 PMOS 互补电路来驱动直流电机 并分别驱动电机的正和反转。 当其中 的一组 MOSFET 工作时,另一组 MOSFET 截止。 而且 只有当电机换向时才会有两组 MOSFET 同时 导通的问题,这个问题就是 PWM 波的死区问题,所以来适当的调节死区,从而来避免可能因两组 MOSFET 同时导通而导致的过流情况。 FPGA 控制电路 本设计中采用的是 EPF10K10LC844,它是 ALTERA 公司的 FLEX10K 系列中的一种。 FLEX10K 是工业界中诞生的第一个嵌入式可编程逻辑器件。 它采用可重构的 CMOS SRAM 工艺,在其中把连续的快速通道互相连接与独特的 嵌入式相结合。 在其内部有 10W 门级电路,课实现复杂的数据运算跟逻辑运算。 在 FLEX10K 系列器件中,主要是由逻辑阵块,嵌入式阵块, I/O 单元及快速通道互连这四个部分构成的。 隔离电路 由于直流电机驱动部分对控制那部分的电路存在干扰,可以采用光电隔离式电路来对系统电路进行隔离,以此来提高系统的稳定性。 本设计使用光耦 6N173 实现隔离作用。 图 PWM1, PWM2, PWM3, PWM4 是 FPGA 生成的 PWM 信号经过电平变换之后的输入信号。 14 调理电路模块 在 PWM波加到驱动电路上时,需要对其进行调整,即需要调理电路来进行调整,来使它适合后面的驱动电路的要求。 光耦隔离后的信号经过调理电路后,作为驱动电路 MOSFET的栅极驱动电压。 PWM2 +5 PWM1 R12 390 R11 390 R10 390 R9 390 8 7 6 5 2 3 4 1 8 7 6 5 1 2 3 4 8 7 6 5 1 2 3 4 8 7 6 5 1 2 3 4 330 R6 PWM4 PWM3 Nc Vcc LED+ EN LED OUT NC GND Nc Vcc LED+ EN LED OUT NC GND Nc Vcc LED+ EN LED OUT NC GND 330 R6 330 R6 330 R6 Nc Vcc LED+ EN LED OUT NC GND 图 隔离电路原理图 15 第五章 系统软件设计原理 VHDL 语言 的 简介 VHDL 的全称 它的全称 (VeryHighSpeed Integrated Circuit Hardware Description Language)始 于 1982 年。 VHDL 语言的特点: (1)VHDL 语言功能强大,设计方式多样 它 具有 很 强大的语言结构,只需用简单的 VHDL 语言程序就可以描述 很 复杂的硬件电路 功能。 同时,它还有多层次电路设计 及电路 描述功能。 VHDL 语言能够同时支持同步、异步和随机电路的设计 与 实现,这是其他硬件描述语言所 无法 比拟的。 它的 设计方法灵活多变 ,既支持 由 顶向下的设计 模式 ,也支持 由 底向上的设计 模式,同时并兼 模块化 及 层次化设计方法。 (2)VHDL 语言含有强大的硬件描述功能 它 具有多层次电路设计 及 描述功能,既可描述系统级电路, 同时 也可以描述门级电路。 它还 支持惯性 及 传输延迟,这样 能 准确 地建立硬件电路的模型。 它 的强大描述能力还体现在 其 具有丰富的数据类型 ,它不仅 支持标准定义的数据类型, 还 支持用户 自 定义的数据类型,这样会给硬件 的 描述带来 很 大的自由 性。 (3) VHDL 语言有强大的可移植能力 它 的 可 移植 性 主要体现在: 对于 具有 同一个硬件电路 系统而言 ,它 的相同部分的代码 可以从一个模拟器移到另一个上、从一个综合器移到另一个上或从一个工作平台移到另一个上去执行。 (4) VHDL 语言的设计描述与器件无关 采用 它 描述硬件电路时,设计人员不需要先选择进行设计的器件 ,这样做可以使设计人员集中精力进行电路 设计的优化 , 不需要考虑 别 的问题 , 当硬件电路的设计描述完成 之后, 它 允许采用多种不同的器件来实现。 (5) VHDL 语言程序便于复用与共享 16 它是 基于库 library 的设计方法 , 在设计 时 设计人员可以建立 多个 可 重复 利用的模块。 一个大规模硬件电路的设计 , 不可能从 一个个 门级电路开始进行设计,而是一些 不同 模块的累加。 这些模块可以 是 预先设计 好的,也可以 使用以前设计中的模块,将这些 常用的 模块存放在库中,就可以在以后的设计中进行 重复使用。 由于 它 是一 个 描述、优化、综合、模拟 及 布线的标准 的 硬件描述语言,因此它可以使设计者的 设计 成果在 不同的 设计人员之间方便 的 进行共享, 以此减小硬件电路设计的工作量。 Quartus II 简介 它 是 Altera 公司 的综合性 PLD 开发 软件,它 支持原理图 , VHDL, VerilogHDL 及 AHDL等多种设计输入形式, 自带 综合器 和时序 仿真器。 它 可以完成设计输入到硬件配置的完整的 PLD设计流程。 Quartus II 的特点 它具有友好的用户界面,便捷的使用方式,强大的功能,是一个完全集成化的可编程逻辑的设计环境,是一款先进的 EDA 工具软件。 它可以在多个系统上使用例如 XP 和 LINUXL, 除了可以使用 TCL 脚本完成设计流程以外,它还提供给用户完善的用户图形界面设计模式。 Quartus II 对第三方 EDA工具的支持 它对第三方 EDA工具的支持能更便于用户在设计时使用自己熟悉的第三方 EDA 工具。 Altera 的 Quartus II 是属于第四代 PLD 开发平台的可编程逻辑软件。 它支持一个工作组环境下的设计要求。 Quartus 与 Synopsys、 Cadence、 Synplicity 等 EDA 的开发工具相兼容。 增加了 FastFit 编辑选项,推进了网络的编辑性能并且提升了调试能力。 17 软件框图组成 图 系统的软件框图 否 否 否 是 是 否 是 否 是 是 开始 控制 ADC0809进行转换 控制 AD1674进行转换 进行数字滤波 电机是否过流 误差是否 1V 是否溢出 PI 控制 模糊控制 计算前馈量与反馈量之和 是否溢出 对溢出数据归类 判断电机正、反转,产生 PWM波控制信号 输出 返回 对溢出数据进行归类 反馈误差及计算 指令 控制 AD1674进行转换 计算机指令 二 次差值 计算机前馈控制量 计算机指令一次差值 是否溢出 误差滤波 生成 PWM 波屏蔽 信号 生成 PWM 波使能信号 对溢出数据进行归类 18 图 Quartus II软件绘制出整体软件原理图。 图 系统的整体软件设计原理图 19 软件系统主要控制模块 在 FPGA 中,采用 VHDL 语言进行编程。 VHDL 是一种采取自上而下设计方法的语言,我们利用其优秀的 EDA平台的通用性及优秀的可移植性和具有硬件结构无关性等等的特点,来实现系统的软件模块设计。 ADC0809 控制模块 FPGA 中使用的是一种 Moore 型的有限状态机,产生时序对 ADC0809 的模数装换进行控制,以此来完成对电流量的采样。 图 为 软件设计中 ADC0809 控制模块电路器件图。 D [7. .0]clkeocalestartoeclk nq[ 7. .0]ad c08 09 ctrlinst 图 ADC0809 控制模块电路器件图 ADC0809 代码 : library ieee。 use。 entity adc0809ctrl is port(D:in std_logic_vector(7 downto 0)。 8 位输入信号 ; clk,eoc:in std_logic。 状态机时钟和状态信号 ; ale,start,oe:out std_logic。 ADC0809 控制信号 ; clkn:out std_logic。 内部锁存信号 LOCK 的测试端 ; q:out std_logic_vector(7 downto 0))。 锁存数据输出 ; end entity adc0809ctrl。 architecture one of adc0809ctrl is type states is (st0,st1,st2,st3,st4,st5,st6)。 signal current_ state , next_state:states := st0。 状态机转换及信号控制进程 ; signal reg1:std_logic_vector(7 downto 0)。 20 signal lock:std_logic。 转换后数据输出锁存时钟信号 ; begin pro : process( current_state , eoc) 状态转换及信号控制进程 ; begin case current_state is when st0=ale=39。 0 39。 start=39。 039。 oe=39。 039。 lock=39。 039。 clkn=39。 039。 next_state = st1。 初始化; when st1=ale=39。 139。 start=39。 0 39。 oe=。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。