我现在使用的是HVDMC套件,前面几天研究了无传感器的电机矢量控制。
现在有一些困惑。
TI提供的无传感器例程中可以调节的变量是转矩和速度。请问如果我想要实现位置控制,该如何实现,有没有相关例程??
在包含传感器的例程中,我看了一下程序框图,可设置的变量也是速度和转矩,请问能不能通过控制θ角实现位置控制?位置控制是不是就不需要斜波发生器了?
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.
我现在使用的是HVDMC套件,前面几天研究了无传感器的电机矢量控制。
现在有一些困惑。
TI提供的无传感器例程中可以调节的变量是转矩和速度。请问如果我想要实现位置控制,该如何实现,有没有相关例程??
在包含传感器的例程中,我看了一下程序框图,可设置的变量也是速度和转矩,请问能不能通过控制θ角实现位置控制?位置控制是不是就不需要斜波发生器了?
谢谢您的回复:
对问1的补充:我观察的变量是qep1.ElecTheta,这个按理说是电机的电气角度,波形应该是一个斜波。
对于问2的补充: 我对我的目的换种说法。 我的想法是控制伺服电机就像控制步进电机一样,外部给一个脉冲,DSP就让伺服电机转动一个角度。因为我的系统需要对位置的精确控制,而且对速度有一定要求,所以我选择了伺服。 有些一些厂商做的伺服驱动控制方式就是跟步进电机一样,给一个脉冲转一个角度。 不知道这种控制方式是不是我想的那样,给定一个角度,让伺服停在那个角度。
有很多不懂的地方和不专业的地方希望您能够海涵,谢谢您的帮助。
Joey Mao 谢谢回答。
问1:补充,我看过寄存器的变化,寄存器的值在9990-10000之间变化,都没有出过这个范围。到10000并不清0。也没有从0-10000的变化过程。寄存器的值我也用图观察过,跟qep1.ElecTheta一样,也是一条横线。
问2:我晓得这个例子不是我描述的效果。只是我的研究目的是那个效果(给定一个角度电机就停在那里),请问我想要的哪种例程有吗?哪里可以找到?还是说只能自己修改实现?可不可以HVPM_Sensored_Servo这个为模版修改?
万分感谢。
您好,这两天又看了一下程序,主要是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.把母线电压接上,同时没有接电机。运行程序后,手动转动电机,实验结果和第二个实验一样,eQEP模块的计数器QPOSCNT能够正常计数。从0-10000正常加减,转一圈也计数是10000。
5.这个实验与第三个实验一样。接上电机后,让点击自动运行,通过隔离后示波器观察A相B相信号,有脉冲输出,只是由于不是高速隔离芯片(用的是低速光耦),所以只在很低的速度下才能检测到脉冲,设置的速度是speedref 0.01左右(高速运动时检测不到)。在低速情况下脉冲还是正常的。我已经购买了iso7220C来检测速度快的情况下的脉冲情况,等待芯片到了就可以测。
6.此时编码器的输出应该是正常的,QPOSCNT不正常,一直保持在9990-10000之间,偶尔会跳回0。(即使是在低速情况下,就是第五点的情况下,QPOSCNT还是不正常计数)。
7.我用示波器的探头测试了接上母线电源后的主板的地(示波器的地没有接),母线上的地是一个类似正弦波形的(不过没有参考量(即示波器的地没接),这个波形也没有太大意义)。
除了上述实验我有几点疑问:
1.软件方面的原因有没有? 是不是软件哪个地方设置的问题,我没有发现。
2.如果是硬件问题,我有什么渠道可以去修理硬件?
3.如果不能确定是什么问题,希望能继续帮助我发现问题的所在,谢谢你们的无私奉献。
--- 一个初出茅庐的电机驱动爱好者~~
您好
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开关电源的时候,在速度控制下电机直接停止不动了。编码器不能正常采集了。
这问题又变成不是整流电路惹得祸了?后级电路原件坏了?
求各位大神,参考考虑一下。
求各路大神指导啊。