lgh050706 发表于 2010-12-2 22:43:49

“yangyh75”前辈请进!

大哥!我知道你对无刷直流电机非常熟悉!我现在工作中正是遇到这个问题!如何实现“闭环控制”啊!请前辈指点!能否留下你的QQ号码啊!酬谢!谢谢!

yangyh75 发表于 2010-12-3 09:53:23

这是armok大哥搞的技术论坛,从中受益匪浅,酬谢就不敢当。我搞无刷电调一年了,只是有所了解。这个东西要转起来简单,要求性能就得多多费心。对于有hill无刷,我的做法是上电有就检测一次hill状态,中断的时候再检测hill的状态变化,这样IGBT的通断逻辑就确定了,至于转不转还要看油门。如果使用开环控制,由于电机的转动有死区,并不是一给PWM他就会转动,你可能需要30%的PWM电机才会转动,减小PWM到20%以后它才会停转。这样电机实际上不可能工作在太低的转速,你控制它开始转动的时候可能就已经超过你的要求转速了,这时你通过减小PWM来小转速时,电机可能就停转了,如果带负载这种情况就会更加明显。我试过采用转速闭环+PID来控制,会把控制转速搞到一个更小的值。要控制电机到一个较小的转速,除了控制器外,还需要看电机本身的特性,仅通过控制器是不完全够的。如果电机的极对数多的话,相对来说转速可以控制得低一些。通过控制器的转速闭环来降低控制转速时,有一定限度,太大了可能转矩脉动会明显增加。这个脉动在控制时多取决于油门的刷新率和转速的采样。这个转速闭环的简单过程如下:
P=V_设定-V_采样;
I+=P;
D=V_采样新-V_采样旧;
油门=kp*P+ki*I+kd*D;

这种控制,只要转速低于设定值时,控制器就增加油门来增加转速,而实际的脉宽并不需要关心,它会根据你的负载自动变化。实际上这个通过控制器来降低电机的最低转速的方法,就是对电机的间断做功,不可避免要产生转矩脉动。只是一定范围内这种脉动并不会很明显。因此如果你非得需要很小转速的话,还是要使用减速齿轮。
另外,请注意,大负载的转速闭环,要检测好电流,否则,很容易烧毁功率管的。
——以上是个人灼见,欢迎拍砖。

121212 发表于 2010-12-3 10:29:47

高手就是高手!顶ls

lgh050706 发表于 2010-12-3 10:36:29

感谢前辈的回贴!因为是第一次搞无刷直流电机,所以有很多的不了解。前辈上面所说的:
P=V_设定-V_采样; ---------------------P是什么? V_设定表示是什么?V_采样表示什么?
I+=P;             ---------------------I是指电流吗???
D=V_采样新-V_采样旧; ----------------D代表什么?
油门=kp*P+ki*I+kd*D; ----------------油门,kp,ki,kd分别代表什么!


请前辈明示?????小的感谢!

lgh050706 发表于 2010-12-3 10:39:26

还有IGBT是指点什么啊!请前辈指点一下!因为这个项目已经拖了很久啦,所以请前辈就当做个好心人吧!帮一下我吧!我会记在心中的,感谢!!

feng_matrix 发表于 2010-12-3 10:52:34

PID是误差闭环控制算法,输入误差量可以是多种,无刷电机控制方面一般是:电流、转速、位置三环,能把这三闭环控制好一般项目都能搞定了。

lgh050706 发表于 2010-12-3 11:08:56

回复【5楼】feng_matrix 悟
pid是误差闭环控制算法,输入误差量可以是多种,无刷电机控制方面一般是:电流、转速、位置三环,能把这三闭环控制好一般项目都能搞定了。
-----------------------------------------------------------------------

你所说的“电流、转速、位置”我应该如何来控制!请指点一下好吗!

lgh050706 发表于 2010-12-3 11:14:22

回复【3楼】lgh050706
感谢前辈的回贴!因为是第一次搞无刷直流电机,所以有很多的不了解。前辈上面所说的:
p=v_设定-v_采样; ---------------------p是什么? v_设定表示是什么?v_采样表示什么?
i+=p;             ---------------------i是指电流吗???
d=v_采样新-v_采样旧; ----------------d代表什么?
油门=kp*p+ki*i+kd*d; ----------------油门,kp,ki,kd分别代表什么!
请前辈明示?????小的感谢!

-----------------------------------------------------------------------

 PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。其输入e (t)与输出u (t)的关系为   u(t)=kp(e(t)+1/TI∫e(t)dt+TD*de(t)/dt) 式中积分的上下限分别是0和t   因此它的传递函数为:G(s)=U(s)/E(s)=kp(1+1/(TI*s)+TD*s)   其中kp为比例系数; TI为积分时间常数; TD为微分时间常数

feng_matrix 发表于 2010-12-3 11:36:23

回复【6楼】lgh050706
回复【5楼】feng_matrix 悟
pid是误差闭环控制算法,输入误差量可以是多种,无刷电机控制方面一般是:电流、转速、位置三环,能把这三闭环控制好一般项目都能搞定了。
-----------------------------------------------------------------------
你所说的“电流、转速、位置”我应该如何来控制!请指点一下好吗!
-----------------------------------------------------------------------

以转速环为例,假设没有减速箱,目标是让电机稳定在500rpm,电机输入占空比是A
而实际光电编码器检测转速是400rpm,那么误差就是ERROR=100rpm
用PID算法,对ERROR×P参数+SUM(ERROR)×I参数+(本次ERROR-上次ERROR)×D参数得到一个反馈纠正量
然后换算成占空比增加量,在当前电机占空比A的基础上增加纠正量,然后再测量,如此反复转速最终会稳定到控制目标。

电流、位置闭环也是同样原理,只是反馈方式与控制参数不同而以。
PID过程广泛存在于生活里各种控制过程中,比如热水器水温、空调温度、电炉、伺服系统等等
甚至人的神经及肌肉控制里也有类似的过程,只是控制参数更先进有自学习过程。

eefans 发表于 2010-12-3 11:39:00

回复【1楼】yangyh75
-----------------------------------------------------------------------

1楼说的很好。

稍微更正一下,霍尔信号的英文是HALL。还有,死区(DEADTIME)在电机控制里面有特定的含义,主要是为防止同一桥臂上下两个开关管同时导通,而令导通管延迟导通的那个时间间隔,一般不做“电机的转动有死区”这样的说法,可以换成静摩擦,最小启动力矩等说法。

关于低转速运行方面,简单的方波换相不可能做的很低,因为没有电流环力矩调节,但是用磁场定向+空间矢量SVPWM的方法,可以让同一电机的速度降低一到两个数量级都没有问题的。

feng_matrix 发表于 2010-12-3 12:18:27

回复【9楼】eefans
回复【1楼】yangyh75
-----------------------------------------------------------------------
1楼说的很好。
稍微更正一下,霍尔信号的英文是hall。还有,死区(deadtime)在电机控制里面有特定的含义,主要是为防止同一桥臂上下两个开关管同时导通,而令导通管延迟导通的那个时间间隔,一般不做“电机的转动有死区”这样的说法,可以换成静摩擦,最小启动力矩等说法。
关于低转速运行方面,简单的方波换相不可能做的很低,因为没有电流环力矩调节,但是用磁场定向+空间矢量svpwm的方法,可以让同一电机的速度降低一到两个数量级都没有问题的。
-----------------------------------------------------------------------

低转速与方波驱动还是SVPWM驱动没关系,方波驱动一样可以很低转速,低到每秒1度甚至堵转后力拒平衡都可以。

lgh050706 发表于 2010-12-3 13:43:09

回复【10楼】feng_matrix 悟
-----------------------------------------------------------------------

我想问一下,一般所说的“单闭环”与“双闭环”是不是就是说在:“电流、转速、位置”这三个条件中任意控制一个就叫做“单闭环”而任意控制两个就叫做“双闭环”是吗!

feng_matrix 发表于 2010-12-3 13:51:05

输入电压固定时,电流环一般是最内环,转速环、位置环都建立在其基础上,最终都要通过改变电流去控制功率。
从这个角度讲,这些控制闭环是嵌套关系,不是并列关系

lgh050706 发表于 2010-12-3 13:57:57

那像我现在这种情况,光利用检测“转速”来实现PID行吗?因为硬件现在已经定了下来,假如要检测电流,那是不是要利用外围电路啊!

feng_matrix 发表于 2010-12-3 14:00:58

晕,不控制电流你怎么调速?回复【13楼】lgh050706
那像我现在这种情况,光利用检测“转速”来实现pid行吗?因为硬件现在已经定了下来,假如要检测电流,那是不是要利用外围电路啊!
-----------------------------------------------------------------------

晕,只做转速PID当然可以,问题是你不控制电流你怎么调速?

eefans 发表于 2010-12-3 14:04:20

回复【10楼】feng_matrix 悟
-----------------------------------------------------------------------

你所说的方波驱动,是根据hall信号换相两两导通的方波控制么?还是什么原理的方波驱动?

lgh050706 发表于 2010-12-3 14:10:26

回复【14楼】feng_matrix 悟
晕,不控制电流你怎么调速?回复【13楼】lgh050706
那像我现在这种情况,光利用检测“转速”来实现pid行吗?因为硬件现在已经定了下来,假如要检测电流,那是不是要利用外围电路啊!
-----------------------------------------------------------------------
晕,只做转速pid当然可以,问题是你不控制电流你怎么调速?
-----------------------------------------------------------------------

我的意思是:检测到转速然后就根据转速去控制PWM寄存器的那个值就可以了是吗????

lgh050706 发表于 2010-12-3 14:17:06

那电流就不用检测了是不是这样啊!

yangyh75 发表于 2010-12-3 14:20:05

【9楼】 eefan——的死区(deadtime)的专业定义确实很准确,我1楼描述哪个算是个电机特性的自定义(就是feng_matrix 悟
说的“可以换成静摩擦,最小启动力矩等说法”)。——在此对专业定义的这个死区发表点个人观点:
对于120度hall的无刷电机如果采用上下管同步PWM控制的话,我认为是没有必要插入死期时间的。因为上下管同步PWM在转子上只有感应电动势,因为上下管同步开关,并不会形成感应电流,不需要泄流下管。120°的6步控制法,从控制逻辑来看,同一端的上下管要隔一步才会导通,所以,因为脉冲的不完全对齐是不会导致上下管直通的。

p=v_设定-v_采样; ---------------------p是指的是PID控制的比例部分; v_设定表示你要求电机的转动速度;v_采样表示你转速反馈回来的实际电机转速。

i+=p;             ---------------------i是指对转差积分。
d=v_采样新-v_采样旧; ----------------d代表转差微分。(v_采样新-v_采样旧)就是这一次采样的转速与上次采样的转速的差值。

油门=kp*p+ki*i+kd*d; ----------------油门,kp,ki,kd分别代表什么!——油门就是你控制器的PWM宽度。

这是个简单的PID控制,上述只包含了转速环。feng_matrix 悟——提到了“电流、转速、位置等,能把这三闭环控制好一般项目都能搞定了”。——所以还是那句,搞转无刷简单,要求性能就太难了。

lgh050706 发表于 2010-12-3 14:27:58

回复【18楼】yangyh75
【9楼】 eefan——的死区(deadtime)的专业定义确实很准确,我1楼描述哪个算是个电机特性的自定义(就是feng_matrix 悟
说的“可以换成静摩擦,最小启动力矩等说法”)。——在此对专业定义的这个死区发表点个人观点:
对于120度hall的无刷电机如果采用上下管同步pwm控制的话,我认为是没有必要插入死期时间的。因为上下管同步pwm在转子上只有感应电动势,因为上下管同步开关,并不会形成感应电流,不需要泄流下管。120°的6步控制法,从控制逻辑来看,同一端的上下管要隔一步才会导通,所以,因为脉冲的不完全对齐是不会导致上下管直通的。
p=v_设定-v_采样; ---------------------p是指的是pid控制的比例部分; v_设定表示你要求电机的转动速度;v_采样表示你转速反馈回来的实际电机转速。
   
i+=p;             ------......
-----------------------------------------------------------------------

回复【13楼】lgh050706
那像我现在这种情况,光利用检测“转速”来实现pid行吗?因为硬件现在已经定了下来,假如要检测电流,那是不是要利用外围电路啊!
-----------------------------------------------------------------------

回复【16楼】lgh050706
回复【14楼】feng_matrix 悟
晕,不控制电流你怎么调速?回复【13楼】lgh050706   
那像我现在这种情况,光利用检测“转速”来实现pid行吗?因为硬件现在已经定了下来,假如要检测电流,那是不是要利用外围电路啊!
-----------------------------------------------------------------------
晕,只做转速pid当然可以,问题是你不控制电流你怎么调速?
-----------------------------------------------------------------------
我的意思是:检测到转速然后就根据转速去控制pwm寄存器的那个值就可以了是吗????
-----------------------------------------------------------------------










高手!你终于来啦!你帮我看一下我的这种“构思”能不能成立吗!谢谢!

lgh050706 发表于 2010-12-3 15:20:08

经过大家的技术指导之后,我有以下的几个问题:
第g

lgh050706 发表于 2010-12-3 15:32:13

回复【楼主位】lgh050706
大家好!我要控制一台“重负载”的有感无刷直流电机。我想利用电平变化中断来检测霍尔信号的变化,从而进行换相,但是因为负载比较大;而且在底速的情况下运行,所以惯性比较小,所以霍尔信号的变化很容易就会消息,从而导致于电机很容易就停了下来。请问大家,有什么更好的办法可以解决换相这个问题啊!谢谢!
-----------------------------------------------------------------------

经过大家的技术指导之后,现在对闭环有了一点的了解,但是还有以下的几种疑问:
第一:在从底速到高速变化的过程序要进行闭环控制吗?因为电机的速度是不停地在变的。
第二:在均速的情况下,我想用一相HALL高电平或者低电平去的时间作为转子的转速,这样可以吗!
页: [1]
查看完整版本: “yangyh75”前辈请进!