嵌入式领域中电机控制应用的可编程片上系统(PSoC)
无论是小到手持设备还是大到机械机床,在当今的嵌入式和工业应用中,控制系统的基本要素仍然占据着举足轻重的地位。大多数自动控制系统都采用负反馈机制来控制物理参数,如位置、速度、扭矩、电压、电流以及强度等。在此,需要控制的参数均由适当的变换器进行感测,之后再反馈回输入与参考值进行比较。将经采样的输出信号与参考输入相减,即是所谓的负反馈。差异信号(“误差”)放大后会驱动系统(激励),让输出接近参考值。换言之,系统可最小化误差信号,因而是一种闭环控制系统。电子机械系统在传统控制系统中占绝大多数,而电机控制则是一种常见的应用。
图1:控制电机速度的闭环系统 一般说来,可将电机控制系统分为各种不同的子系统,如速度、位置或方向控制系统等。我们首先看一下构造简单的速度控制系统,其电机采用常量电压(V)。在默认情况下,电机在特定的供电电压(V)下具有特定的转速(x)。如果向电机施加相同电压(V)的负载,那么其转速可能下降(y)。这样,我们就不能控制电机的速度,也就是说不能确保转速不受任何外部因素的影响。这是一种开环系统,因而我们要采取一定的反馈机制,以便能感应电机的速度并对有关因素进行补偿。 图1显示了闭环电机控制系统。这里,运动控制器将来自反馈系统的信号与实际输入进行比较,以获得误差信号,然后将其放大后提供给电机。在此系统中,向电机馈送校正因数的“运动控制器”和“放大器”模块可一起由混合信号控制器实现,而光学转动编码器则作为传感器,因为我们能通过控制器轻松对该组件的输出信号进行解码。下文将对上述各个系统的模块做进一步地阐述。 DC和步进电机简介 电机就是可将电能转换为机械能的设备。下列给出了不同领域常用的一些电机类型: (Ⅰ) DC电机:最简单的DC电机就是在轴上加线圈绕组,固定永磁铁(见图2)。在将电压(V)施加给线圈时,电流(i)通过线圈。由于已有磁场(B),会有力(F)作用在线圈上(弗莱明右手法则)使其转动。 一旦线圈达到永磁铁的磁极之一,就会受到斥力并向另一磁极运动,从而形成持续转动,速度由所施加的DC电压决定。
图2:DC电机的工作原理 (Ⅱ) 步进电机:永磁步进电机由永磁转子、线圈绕组和磁传导定子组成。 为线圈绕组施加电压会产生电磁场,出现南北极。定子承载着磁场。通过顺序通电或“步进”定子线圈,能改变磁场,进而生成旋转运动。图2描述了双相电机的工作情况。在第一步中,为双相定子的A相施加电压,就会将转子磁锁在如图所示的位置,这是因为异性相吸;在第二步中,关闭A相打开B相,让转子顺时针旋转90度;在第三步中,B相打开,极性与第一步相反,又产生90度旋转;在第四步中,A相关闭,B相打开,极性与第二步相反。重复上述序列会让转子每次以90度步进顺时针旋转。 在步进电机中,电机旋转的速度取决于第一步到第四步的执行速度。
旋转编码器简介及其分类 电机控制系统的下一个部分就是能感应电机状态并将状态馈送回控制器的反馈传感器。如前所述,旋转编码器可发挥反馈传感器的作用。 旋转编码器是一种非常简单的电磁器件,其能为轴上的每一步旋转生成适当的脉冲。可将其归为两类:绝对编码器和增量编码器。 (Ⅰ) 绝对编码器 绝对编码器可为电机轴的每个位置提供固定输出。例如,如果编码器能检测0度(固定)、45度、90度、135度、180度、225度、270度、315度角的轴位置(共8个位置 - 45度的分辨率),则可为每个位置分配一个3位值,如从000到111。 (Ⅱ) 增量编码器 就增量编码器而言,仅能确定电机的相对位置(即仅能确定相对于上一个位置的转动方向和角度)。增量编码器给出A和B两个信号,它们在不转动的情况下都具有默认值,假设为逻辑0和逻辑1。在轴上出现较小角度的旋转时,信号A和B都会在短时期内转换为其它逻辑,随后又返回默认值。根据旋转方向,A会转到B或B会转到A。对于每次这种旋转来说,信号A和B都会发生这种转变。图4同时给出了顺时针和逆时针旋转情况下信号A和B的转变情况。
图4:信号A和B的转变 此外,旋转编码器还可根据使用的工作原理做进一步细分,包括: (Ⅰ) 机械编码器:相继趋近接触金属接地(逻辑0)时信号A和B发生转变; (Ⅱ) 磁性编码器:转子随轴转动,在此情况下南北两极间距一致且互变。传感器根据通量线路的方向检测位置的微量偏移和转动方向; (Ⅲ) 光学编码器:发光二极管的光束通过连接在轴上且有透明和不透明部分的圆盘。两个光检测器(传感器A和B)检测到光束,随后生成正交相位脉冲A和B。 图5显示了机械编码器示例。
图5:机械旋转编码器 速度测量设备 目前,转速表被广泛用于测量电机的转速。可将电机的轴连接到类似于DC生成器的转速表(即,用机械能生成电能)上,其输出的DC电压与电机转速成正比。转速表生成的电压可用于实现进一步处理。 如今,众多设计人员都纷纷转而采用旋转编码器,每次转动生成数字输出。另外,这不会像转速表那样出现磨损问题。将旋转编码器的输出馈送给微控制器,就能直接监控以旋转编码器作为传感器的电机转速。
图6:通过接口将旋转编码器与DC电机相连 运动控制器模块 我们在系统中需要一个运动控制器模块来比较参考速度和实际速度,并将误差信号馈送回电机。由于上述旋转编码器返回两个正交相位信号A和B,我们需要实施可对信号解码的逻辑,从而感应电机的电流速度。通过计算传感速度和实际速度之差,我们就能向电机馈送校正因数,从而获得所需的速度。由于控制到电机的电源能控制其转速,因而馈送的校正因数需要就给定的供电电压实现适当的电压校正。 我们将在以下章节详细介绍PSoC 3/5作为运动控制器的速度控制应用。PSoC是一种名符其实的可编程嵌入式片上系统,其在单颗芯片上高度集成了可配置的模拟与数字外设功能、存储器和微控制器。其采用的极度灵活的视觉嵌入式设计方法包含预配置的用户定义外设和层级原理图条目等元素。其它特性还包括高精度可编程模拟模块,如12到20位Δ-Σ ADC、带几十种插入式外设的数字逻辑库、业界最佳的电源管理以及适用于电机控制应用的丰富连接资源等。
如何应用可实现电机控制的旋转编码器 既然我们已经了解了电机和旋转编码器的使用和工作原理,下面我们将讨论三种器件如何在实际应用中实现彼此互连。如果我们要对旋转编码器的信号进行解码并实施进一步处理,那么通常情况下我们必须在正常的微控制器中采用中断例程,并在中断例程过程中避免执行其它功能。若采用PSoC 3和5等可编程片上系统器件,微控制器就会有单独的数字模块/硬件模块来解码正交相位信号(A和B),并存储电流计数值,即自动递增和递减。 在反馈环路中,如果我们通过电机适配器将电机轴(速度待测)和旋转编码器的轴(这可能给电机造成负载)连接,那么编码器轴的转速就会与电机相同。编码器的输出可馈送给PSoC 3/5中的正交解码器模块做进一步处理,从而全面实现典型的电机控制系统。 电机控制应用示例 在与电机相关的应用中,“测速”是常见的要求之一。如前所述,可在解码器模块中存储电流计数值。由于电机的速度通常是根据每分钟的旋转次数来测量的,因而我们可通过每分钟对计数值进行测量来测得电机速度。例如,在每一分钟后,我们都能重设计数值,也能使用计数值差额进行计算。事实上,不用等待每分钟都做计算,我们可测量每秒钟的计数值并乘以60,但这种方法的准确度会低于每分钟测量到的情况。那么,电机的速度计算如下:
例如,我们假定步进电机的速度需保持在6000rpm上。就开环系统而言,我们可让控制器向步进电机输出方波信号,让它保持一个方向的转速为6000rpm。但是,如果我们为电机添加负载,电机的速度就会低于它应有的实际值,从而造成我们无法实现所需的速度,而且还没办法做出调整。 无论电机负载如何变化,为了确保电机的速度保持在特定值上,我们需要遵循闭环系统的原则。为了感测和反馈电流转速,如前所述,我们采用旋转编码器。我们对编码器的选择取决于所需的转速和速度准确度。旋转编码器的信号通过使用PSoC Creator工具提供的正交解码器模块进行编码。 可将适合的时钟频率路由到正交解码器模块,具体取决于每分钟的最大转速。例如,如果最大转速为9000rpm,那就相当于每秒150转。如果编码器每次完成旋转需要4个脉冲(编码器特征),那么解码器模块所需的时钟频率就是150*4*10 = 6kHz(信号A和B频率的10倍)。由于我们每秒钟都要跟踪计数值,因此我们能够采用每秒钟一次的中断。在中断服务例程中,我们能捕获计数寄存器的值并将其清空(从而能测量下一秒的速度),并用方程式1计算电机的速度。 以下两个案例中列出的电源适用于DC电机以及可对其进行控制的逻辑。 案例一:DC电机还使用相同的PSoC 3/5通过电流缓冲驱动 例如,DC电机规范要求在无负载条件下5V供电电压的流耗为88mA,我们可通过如图7所示的电流驱动电路将PSoC 3/5输出接口连接到DC电机。 在该例中,我们给出了常量DC供电电压,电机全速转动,即9000rpm。现在光学旋转编码器和电机转速相同,编码器输出采用PSoC 3/5中的解码器测量。这时,微控制器检测到9000rpm的转速,并将其与所需值进行比较(例如,所需值为6000rpm,也就是实际速度的三分之二)。那么校正响应为-3000rpm,即当前施加给电机的电压应减少三分之一。
图7:通过PSoC驱动的DC电机 我们可使用PWM来实施电压差。通过改变PWM的占空比,可改变平均电压。PSoC Creator提供拖放式PWM模块。反馈至PWM模块的时钟频率取决于应用所需的速度分辨率。
这里:
这里所需的占空比为三分之二。每周期PWM模块的平均输出电压为5*2/3 = 3.33V。PWM模块的输出提供给可连接至DC电机的电流驱动电路。DC电机现在能实现6000rpm的所需转速。旋转编码器再次感测速度,检测到6000rpm,并将其反馈回控制器。现在的误差因素为0。PWM保持此前的状态且电机保持其速度。 假设向电机添加了负载。虽然占空比保持在2/3,但电机速度下降为5000rpm。现在旋转编码器感测速度,并将误差因数(即 1000rpm)馈送给控制器。PWM的占空比为1/9。通过函数将该因数写入中断中的PWM函数: 案例二:通过另一控制器为DC电机供电 如果通过另一个控制器为DC电机供电,那么PSoC控制器可用来通过I2C等接口将电机状态馈送给另一个控制器。如果DC电机通过外部电池供电,那么如图8所示的逻辑能够轻松控制其速度。可将PSoC的PWM输出馈送给打开后能为电机供电的开关,电机采用特定占空比以便能如前所述满足相同的标准。
图8:通过外部电源(不是PSoC)供电的DC电机 定位控制等其它应用: 对于定位控制等其它电机控制应用而言,我们能采用绝对旋转编码器,因为其能给出电机的当前位置。也可将这种输出馈送回控制器,找出与实际信号的偏差,并通过短时期脉冲确保电机达到目标位置。 |