DIY编程器网

标题: 基于HID协议的工控自定义键盘接口设计 [打印本页]

作者: admin    时间: 2015-4-27 23:28
标题: 基于HID协议的工控自定义键盘接口设计
当电机在汽车传动应用中使用时,最令人感兴趣的特性之一是它们还能用作发电机,因而在刹车时可以给汽车电池充电。Roboteq公司的电机控制器可以通过方便地编程充分利用这个特性以受控和渐进的方式实现再生制动。
       
        本文讨论了使用电机速度检测这种简单且非常高效的技术背后的原理,并介绍了使用与Roboteq控制器连接的无刷电机的一个实际例子。
       
        既是电动机又是发电机
       
        电机的简化模型是一个电阻串联一个电感和一个电压发生器。电阻和电感就是电机内部电磁部件的电阻和电感。电压发生器代表电机在转动时由电机本身产生的电压,一般称为反向电动势,简写为BEMF.BEMF电压是一个固定的电压转速比值(V/RPM)。
         
       
        能够使用Roboteq无刷电机控制器实现渐进式再生制动的实验性电动踏板车。
         
       
        图1:电动机模型。
       
        当给处于机械锁定状态的电机加电时,模型实际上可以简化为一个两端连接电池的电阻,测得的电流值为I=VBat/Rm.电感只是影响电压加上瞬间的电流,如果电压保持恒定这种影响会消失。
         
       
        图2:当电机停转时的等效电路。
       
        如果电机允许旋转,那么它将产生正比于旋转速度的BEMF电压。此时的模型是一个电阻加上分别位于电阻两端的发电器。电阻上的最终电压等于电池电压减去BEMF,电流则为I = (VBat - VBemf) / Rm.在实际应用中,这意味着随着电机转速的提高,电流会减小。
         
       
        图3:加速状态。
       
        如果电机转速可以足够快到BEMF等于电池电压,两个电压源将相互抵消,电阻上的等效电压为0,此时电池将没有电流流出。在实际应用中这种情况是不会发生的,因为这意味着电机没有一点扭矩,而克服摩擦力总是需要一定的扭矩。
         
       
        图4:无负载或摩擦力时的稳定速度。
       
        在实际应用中,当BEMF达到产生扭矩的电池电流足以克服摩擦力和电机机械负载时电机速度将趋于稳定。
       
        然而,如果电机被外力驱动(例如汽车下坡),旋转会导致实际的BEMF等于VBat,此时不会有一点电流流动。如果此时电机以更快速度旋转,BEMF会变得大于电池电压,我们将看到电流从电机流向电池,这时系统就处于重新发电(再生)状态。
         
       
        图5:再生制动状态。
       
        PWM开关型电压源效应
       
        目前为止我们假设是用一个固定电压电池直接连到电机上,从中我们可以看出,在恒定负载情况下,可以通过改变电池电压来控制速度。
       
        在现代控制器中,改变电压是通过使用呈半桥(单向)或全桥(双向)结构的功率MOSFET晶体管并以近20kHz的很快速度开关电机电源来实现的。这种桥有一个底部的MOSFET和一个顶部的开关,它们以互补的方式(底部导通时顶部断开,底部断开时顶部导通)正常工作。
       
        当与电机的电感结合在一起时,这种开关会使得控制器行为就像一个数值正比于开关导通/断开占空比的可调电压源。例如,当一半时间导通一半时间断开时,电路等效于一半电池电压的发电机。
         
       
        图6:50% PWM的步降转换。
       
        这个效应在相反方向也成立。如果没有连接电池,同时电机又被驱动产生电压,那么PWM开关和电机电感在50% PWM时将作为升压器使电压翻倍。这种升压效应很好地解释了为何电机转速很慢而BEMF又小于电池电压时再生现象是如何发生的。
         
       
        图7:50% PWM时的步升转换。
       
        控制再生制动的数量
       
        我们已经知道,由于BEMF的原因,对任何供电电压来说电机总有一个转速使它不吸取一点电流。BEMF/RPM比值是一个常数,有时在电机数据手册中会找到。通过以已知速度旋转空载电机并在其引线处测量电压也可以很容易得到这个比值。
       
        然后,在电机速度可以测量的前提下,控制器就可以计算电机产生的BEMF并完成以下任意事项:
       
        ●匹配电机的BEMF,在这种情况下电机既不加速也不制动。如果原来处于停止状态就仍保持停止。如果已经在转动,它将保持这个速度。
       
        ●超过电机的BEMF,此时电机将加速旋转。
       
        ●低于电机的BEMF,此时电机将制动并再生电流。
       
        电机BEMF和控制器输出电压之差越大,再生和制动也越强。
       
        假设电池电压保持得相当稳定,那么还可以通过计算控制器的PWM输出功率电平与该电平下的速度比值进一步简化上述理论。
       
        使用调速PWM的实际例子
       
        Roboteq电机控制器能够检测电机的旋转速度。对无刷电机来说,不需要任何额外硬件,通过监视电机的霍尔传感器的变化就能实现。对有刷直流电机来说,可以使用安装在电机轴上的光学编码器来测速。施加50%的功率并记录无负载电机的转速可以让我们了解功率电平多大才能接近电机的BEMF.
         
       
        图8:Roboteq电机控制器的电机连接。
         
         
        我们可以利用控制器的Microbasic脚本描述语言轻松地写出这样的脚本,它能用来测量电机的当前速度,并计算用于加速、制动或保持当前速度所必须输出的功率电平。
       
        举例来说,考虑在50% PWM时进行测量的汽车情况,当车轮不接触地面时电机以2500RPM速度旋转。
       
        现在如果汽车处在一个斜坡上,电机转速为2500 RPM,控制器将测量这个转速,然后施加50%的功率,因此实际上电机不消耗电流(在这个速度下电流将是无负载电流)。这是因为在斜坡上时将使电机以2500转速自然运行,此时的机电状态与车轮不接触地面时完全一样。
       
        现在,如果在电机转速已经是2500 RPM时我们施加超过50%的功率,这将给予额外的功率,电机将以更快速度运行。
       
        如果在2500 RPM时我们施加小于50%的功率,那将发生再生制动。控制器输出功率低于50%越多,制动效果越明显。
       
        因此这种技术可以让控制器测量速度、计算要施加的输出功率以便在这个RPM条件下实现加速或制动。然后使用油门命令提高或降低功率值来进行加速或制动。
       
        下面的脚本是实现受控再生所需的完整清单。它使用一条用户命令进行加速和制动。这个脚本只能以前进方向操作电机。
       
        option explicit
       
        dim RPMat50pct as integer '平台测试中在50%功率电平点测得的转速
       
        dim CommandStrenghtPct as integer '想要达到的加速和制动强度
       
        dim MeasuredSpeed as integer '测量得到的MeasuredSpeed
       
        dim NeutralPower as integer '计算得出的功率电平,此时电机既不加速也不减速
       
        dim AppliedPower as integer '将要施加于电机上的功率
       
        dim ThrottleCommand as integer '用户命令
       
        '修改这些常数以满足你的要求
       
        RPMat50pct = 6000 '在50%功率电平和无负载情况下测得的转速
       
        CommandStrenghtPct = 50 '以百分数表示的油门和刹车强度
       
        top:
       
        '从控制器读到的工作值
       
        ThrottleCommand = getvalue(_CIA,1) '从1号模拟操纵杆读取用户命令
       
        '根据电机类型和传感器对以下两行做出反注释
       
        MeasuredSpeed = getvalue(_BS,1) '使用霍尔传感器测量当前速度
       
        'MeasuredSpeed = getvalue(_S,1) '使用编码器测量当前速度
       
        '计算维持当前速度所需的功率电平
       
        NeutralPower = (MeasuredSpeed * 500) / RPMat50pct
       
        '增加功率进行加速,或撤除功率进行减速
       
        AppliedPower = NeutralPower + ((ThrottleCommand * CommandStrenghtPct) / 100)
       
        '只允许正向命令,并且最大值为+1000
       
        if (AppliedPower 1000)
       
        AppliedPower = 1000
       
        end if
       
        setcommand(_G,1,AppliedPower) '给电机施加功率
       
        '在控制台上打印的用于监视或调试的可选记录
       
        print("C= ",ThrottleCommand,"\tS= ",MeasuredSpeed,"\tN= ",NeutralPower,"\tP= ",AppliedPower,"\r")
       
        wait(10) '等待10ms
       
        goto top '不断重复循环
       
        配置、测试和改进脚本
       
        为了使用这个脚本,首先必须测量由控制器在50%功率电平时报告的转速。然后在脚本顶部输入作为常数的这个值。接着保持命令操纵杆置中以及脚本运行,电机将保持空闲状态。手工旋转电机轴将产生施加于电机的功率,并且在前进方向上几乎没有阻力。
       
        然后应用前进方向的操纵杆命令,电机将加速。当操纵杆处于反方向时电机将制动。对于给定操纵杆位置,加速和制动的数量可以通过改变脚本中的另外一个常数进行调整。
       
        脚本假设电池提供稳定的电压,因此给定的功率电平总是导致相同的等效输出电压。例如电池电压为24V时,50% RPM将在电机上呈现12V电压。如果预料到电池电压波动会很严重,那么应该修改脚本将电池的当前电压考虑进去。例如,当电池电压为18V而不是24V时如果仍想在电机上有12V电压,那么功率电平必须调整为75%而不是50%.
       
        上述脚本还可以方便地修改成使用独立的油门和刹车踏板,方法是捕获两个模拟输入,根据每个踏板压下的力量大小计算得出结果命令,并且使刹车优先于油门。制动强度也可以做到高于或低于加速的强度。
       
        然后当需要很强的制动时,可以通过修改脚本激活与控制器数字输出之一连接的机电式刹车。
       
        较之其它受控再生制动技术的好处
       
        实际上,使用测量到的电机实际速度来计算BEMF的这种技术所导致的驱动特征类似于扭矩模式驱动,即控制器尝试以恒定电流馈送电机。
       
        与扭矩模式相比,本文介绍的方法更加精确,因为测量转速通常比测量电机电流更简单更精确。包括Roboteq产品在内的大多数电机控制器测量电池电流,而实际上这是在扭矩模式下必须调节的电机电流。实际电机电流接近于测量到的电机电流,但在低功率电平时很不精确。当功率电平为0时电机电流无法测量。
       
        另外,在扭矩模式下,控制器需要使用调节器(通常是比例-积分-微分控制器(PID))连续调整功率电平才能将被测电流调节到理想的值。PID需要调整,而在交通运输应用中电机负载变化非常强烈,这使得PID调整并不容易。控制环路连续“猜测”的速度或精度都没有从测得的转速立即计算出电机BEMF高。




欢迎光临 DIY编程器网 (http://diybcq.com/) Powered by Discuz! X3.2