This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

伺服电机 位置控制

Other Parts Discussed in Thread: ISO7220C

我现在使用的是HVDMC套件,前面几天研究了无传感器的电机矢量控制。

现在有一些困惑。

TI提供的无传感器例程中可以调节的变量是转矩和速度。请问如果我想要实现位置控制,该如何实现,有没有相关例程?? 

在包含传感器的例程中,我看了一下程序框图,可设置的变量也是速度和转矩,请问能不能通过控制θ角实现位置控制?位置控制是不是就不需要斜波发生器了?

  •         实际上程序框图中显示,从Level 5开始就没有使用谐波发生器了,而是使用估算出来的角度值(即theta flux),之前的几步中使用谐波发生器是为了有一个稳定的输出,让电机运行相对稳定,然后可以根据反馈或估算出来的位置值形成一个位置闭环。

  • 谢谢回复。

    问1:我现在在运行HVPM_Sensored_Servo ,运行到level3的时候发现编码器输出不对,理论上说应该是斜波的,但是编码器输出的角度一直是1,我编码器已经接上了。 看下图,求问这是软件原因还是硬件原因,该怎么解决?

    问2:我又看到了带传感器的例程PDF上level 5,看到了有个positionref ,这个是不是自己输入角度然后电机就停止在那个角度??  是不是位置控制了?? 其实还是不知道怎么位置控制。由于level3问题,我就没往下测试了。

    说明:右上角是编码器输出的角度,为何始终是1?

    期待您的解答,谢谢。

  • 问1:你观察的这个为1的位置是哪个变量?

    问2:关于位置控制,其实应该叫位置闭环控制更合适,是在控制时形成一个位置闭环式控制更加精准。

    它和速度或扭矩控制不一样,不是按照固定的给定量输出,电机旋转位置是不停变化的,一般的电机控制应用是不会做成你说的那样的

  • 谢谢您的回复:

    对问1的补充:我观察的变量是qep1.ElecTheta,这个按理说是电机的电气角度,波形应该是一个斜波。

    对于问2的补充: 我对我的目的换种说法。 我的想法是控制伺服电机就像控制步进电机一样,外部给一个脉冲,DSP就让伺服电机转动一个角度。因为我的系统需要对位置的精确控制,而且对速度有一定要求,所以我选择了伺服。    有些一些厂商做的伺服驱动控制方式就是跟步进电机一样,给一个脉冲转一个角度。 不知道这种控制方式是不是我想的那样,给定一个角度,让伺服停在那个角度。  

    有很多不懂的地方和不专业的地方希望您能够海涵,谢谢您的帮助。

  • 请问员工还在不在啊?        我的问题需要一个答案啊~~~~~

  • 你好,

    问1:关于你观察的变量qep1.ElecTheta格式是Q24,来源是QEP_MACRO(m,v)函数,你可以到函数中去看看其变化过程是怎样

    的,值得范围是多少,总之是从QEP的QPOSCNT寄存器的值转化来的。

    问2:这里的这个例子实现的不是你描述的效果,而你说的这样控制伺服电机是可以实现的

  • Joey Mao 谢谢回答。

    问1:补充,我看过寄存器的变化,寄存器的值在9990-10000之间变化,都没有出过这个范围。到10000并不清0。也没有从0-10000的变化过程。寄存器的值我也用图观察过,跟qep1.ElecTheta一样,也是一条横线。

    问2:我晓得这个例子不是我描述的效果。只是我的研究目的是那个效果(给定一个角度电机就停在那里),请问我想要的哪种例程有吗?哪里可以找到?还是说只能自己修改实现?可不可以HVPM_Sensored_Servo这个为模版修改?

    万分感谢。

  • 你好。

    你先画一下QEP寄存器值的曲线吧,用Q0去画,看看变化是不是斜坡变化的。

  • 位置闭环控制肯定是需要光电编码器反馈位置信息的

    这样在输出位置信息和反馈位置信息之间做闭环控制和校正

  • 您好,这两天又看了一下程序,主要是EQEP的数据手册。例程的配置也大致了解没有什么问题。就是靠编码器C相脉冲(QEPI)来使QPOSCNT寄存器清零,QPOSCNT的计数为A相和B相的上下边沿都计数。

    还没有发现配置上有问题。

    下图就是我在正常运行的时候的QPOSCNT寄存器的图。QPOSCNT一直是10000左右 ,有时候会瞬间跳到0后又瞬间跳到10000左右,总之没有中间过程。

    后来我做了几个实验,

    1. 把电机的编码器接到自己板子上,给编码器单独供电,然后手动转动电机,测试了A相,B相,I相都是有输出,有波形。这实验证明编码器没有问题。

    2.将总线电源关掉,接上15VDC电源,编码器接到HVDMC上,这时编码器的电源5V还是有的。将上面的例程下进去之后,设置Enable= 1和Lsw = 1,由于总线电源没接,电机没电就不转了。但是程序还是在运行。这时DLOG_4CH_buff的图不能实时刷新了,所以我直接看寄存器的值。当我手动转动电机的时候,发现QPOSCNT的值,能够从0-10000变化,转一圈刚好是从0到10000,就是说变化是正常的。

    说明软件在不接总线的情况下,可以检测编码器的输出,并且可以正常计数和清零。

    3.于是我就想是不是总线电压的问题,我又买了隔离模块,在接上总线电压,自动运行电机的时候,用示波器通过隔离模块看编码器的输出,结果ABI相都是有脉冲输出的。说明在总线电压接上之后,编码器的输出还是有的。  

    经过上面三个实验,我就更加迷茫了,不知道问题出在哪里。为什么接上总线电压之后,QPOSCNT就不能正常的计数和清零呢。

    ps:以前做实验的时候,由于不小心,导致HVDMC短路过2次,直接跳闸过。在这之后,电机速度speedref能够正常控制,当电机的Iqref增加到0.3左右有时候出现电流保护(不知道正常是多少才会出电流保护)。

     

    希望能够得到耐心的解答。   消除我的一些疑问。谢谢了。大家都不容易啊。   

  • 你好。

    可否继续做实验呢?

    4. 母线电压加上后,不要接电机(这样做是为了电机还可以手动去转)。然后,与第2个实验相类似,手动转动电机,观察QPOScNT是否正常。

    5. 把电机接上,让电机转起来,用示波器看编码器的输出是否正常。

    6. 如果编码器输出仍正常,再看QPOSCNT是否正常。

  • 您好

    感谢您的回复

    我做了您说的以下实验

    4.把母线电压接上,同时没有接电机。运行程序后,手动转动电机,实验结果和第二个实验一样,eQEP模块的计数器QPOSCNT能够正常计数。从0-10000正常加减,转一圈也计数是10000。

    5.这个实验与第三个实验一样。接上电机后,让点击自动运行,通过隔离后示波器观察A相B相信号,有脉冲输出,只是由于不是高速隔离芯片(用的是低速光耦),所以只在很低的速度下才能检测到脉冲,设置的速度是speedref 0.01左右(高速运动时检测不到)。在低速情况下脉冲还是正常的。我已经购买了iso7220C来检测速度快的情况下的脉冲情况,等待芯片到了就可以测。

    6.此时编码器的输出应该是正常的,QPOSCNT不正常,一直保持在9990-10000之间,偶尔会跳回0。(即使是在低速情况下,就是第五点的情况下,QPOSCNT还是不正常计数)。

    7.我用示波器的探头测试了接上母线电源后的主板的地(示波器的地没有接),母线上的地是一个类似正弦波形的(不过没有参考量(即示波器的地没接),这个波形也没有太大意义)。

    除了上述实验我有几点疑问:

    1.软件方面的原因有没有?  是不是软件哪个地方设置的问题,我没有发现。

    2.如果是硬件问题,我有什么渠道可以去修理硬件?

    3.如果不能确定是什么问题,希望能继续帮助我发现问题的所在,谢谢你们的无私奉献。

     

    ---  一个初出茅庐的电机驱动爱好者~~

  • 你好。

    可否把QEP相关部分的电路图以及电机运行时的QEPA、QEPB、QEPI引脚上的波形发上来看看。

     

  • 您好

    1.QEP测试电路图如下:


    INVCC =  HVDMC上编码器对应的5V0

    INN1  = A/1或B/2或I/3  即编码器的输出

    VO和VGND为自己产生的5V和地  

    OUT1为示波器观察点

    由于是低速光耦,所以只能看速度较低的情况,我已经购买了ISO7220C,等到货后补上高速时候的情况。

    2.下面附上各种情况的波形

    2.1母线电压不接上 手转动电机


    2.2  接上母线电压,电机运行速度,运行时为电流环控制,SpeedRef = 0.01 

    这个时候电机转动不稳定,所以总体上编码器的周期在不断变化

    2.3  接上母线电压,电机运行速度,运行时为电流环控制,SpeedRef = 0.01   

     上图不能看出AB相的相位关系,又给出了示波器暂停时的波形


    2.4  接上母线电压,电机运行速度,运行时为电流环控制,SpeedRef = 0.01  

    下图是I相脉冲和A相脉冲的关系


    2.5  接上母线电压,电机运行速度,运行时为电流环控制,SpeedRef = 0.1

    速度快了啥都没了(只能等iso7220C了)

      


    2.6  后面我又测试了无传感器时速度环控制的图,速度设置到了0.03,和上面的图没有什么本质变化,就不再上传了。

    3.随后附上速度环控制时,0.03速度时软件中的响应图


    4幅图顺序:

    左上,QPOSCNT寄存器的值,不是1就是10000- -    (速度较快:如0.3的时候,就不是这样,0.3的时候的图在前面的帖子中给出,是一条直线)

    左下,smo1.theta

    右上,pi_spd.out

    右下,speed3.Estimatespeed

    说明,此时的编码器波形通过示波器是能够看到的。就跟上图一样。


    经过查询,我看到http://e2e.ti.com/support/microcontrollers/c2000/f/171/t/256094.aspx?pi307169=1 这个人的问题与我相似,说是母线电压的问题,仅供参考。不过最后也没得到本质解决。


    期待各位大神的帮助,你们的帮助让我看到了希望!


  • 1.我又买了一个自耦变压器,在输入交流电压降低到30-35V左右的时候,编码器的值能够被正常接收QPSCNT的波形也是斜波。

    但是一旦电压上升到40V ,QPSCNT的波形就变烂,不是斜波,不能正常运行

    2.在输入交流电压35V情况下,在测试HVPM_Sensored_Servo程序LEVEL4时,在速度为0.1时能够实现速度控制,就是说能正常运行。

    但是问题是速度调到0.15左右之后再往上调,实际速度加不上去了,原因是电压不够,但是电压一往上调编码器就不能正常采集了。

    3.在这些实验后,我考虑是整流电路的问题,所以,我在BS5和BS6之间直接接上开关电源输出的直流电压,在接36V开关电源的时候,电机能够运行,

    编码器采集正常,速度也能调到0.10,最多也就0.15左右,没有仔细测量。

    接52V开关电源的时候,在速度控制下电机直接停止不动了。编码器不能正常采集了。

    这问题又变成不是整流电路惹得祸了?后级电路原件坏了?

    求各位大神,参考考虑一下。

    求各路大神指导啊。

  • 你好,我也在研究这个问题,关于bldc带360线的精准位置控制方面的,目前是参考安捷伦的位置控制实现的,可能是没理解好,不知道你做的那个效果如何,或者说TI 的控制算法是怎么样的?