完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
测速模块程序如下,
void speed_frq_calc(SPEED_MEAS_QEP *v) [ _iq Tmp1; // Differentiator // Synchronous speed computation if ((v->ElecTheta < _IQ(0.9))&(v->ElecTheta > _IQ(0.1)))为什么要有这个限制? // Q21 = Q21*(GLOBAL_Q-GLOBAL_Q) Tmp1 = _IQmpy(v->K1,(v->ElecTheta - v->OldElecTheta)); else Tmp1 = _IQtoIQ21(v->Speed);这句话说不满足0.1-0.9之间的转速就等于原来的转速,为什么啊? // Low-pass filter // Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21 Tmp1 = _IQmpy(v->K2,_IQtoIQ21(v->Speed))+_IQmpy(v->K3,Tmp1);这句话什么意思?注解说是滤波,滤什么波? if (Tmp1>_IQ21(1)) v->Speed = _IQ(1); else if (Tmp1<_IQ21(-1)) v->Speed = _IQ(-1); else v->Speed = _IQ21toIQ(Tmp1); // Update the electrical angle v->OldElecTheta = v->ElecTheta; // Change motor speed from pu value to rpm value (GLOBAL_Q -> Q0) // Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q v->SpeedRpm = _IQmpy(v->BaseRpm,v->Speed); ] |
|
相关推荐
8 个讨论
|
|
你好。
测速模块程序如下, void speed_frq_calc(SPEED_MEAS_QEP *v) [ _iq Tmp1; // Differentiator // Synchronous speed computation if ((v->ElecTheta < _IQ(0.9))&(v->ElecTheta > _IQ(0.1)))为什么要有这个限制? // 在角度0.9到0.1的过程中会有一个过零过程,过零时,转速计算不能按下面这个公式直接计算。 // Q21 = Q21*(GLOBAL_Q-GLOBAL_Q) Tmp1 = _IQmpy(v->K1,(v->ElecTheta - v->OldElecTheta)); else Tmp1 = _IQtoIQ21(v->Speed);这句话说不满足0.1-0.9之间的转速就等于原来的转速,为什么啊? // 这是一种比较简单的处理办法,你也可以根据自己的需要来修改。 // Low-pass filter // Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21 Tmp1 = _IQmpy(v->K2,_IQtoIQ21(v->Speed))+_IQmpy(v->K3,Tmp1);这句话什么意思?注解说是滤波,滤什么波? // 这里滤波滤的是转速波形,为了转速能够比较平滑一些,不会因为某一次角度的误差引起较大波动。 if (Tmp1>_IQ21(1)) v->Speed = _IQ(1); else if (Tmp1<_IQ21(-1)) v->Speed = _IQ(-1); else v->Speed = _IQ21toIQ(Tmp1); // Update the electrical angle v->OldElecTheta = v->ElecTheta; // Change motor speed from pu value to rpm value (GLOBAL_Q -> Q0) // Q0 = Q0*GLOBAL_Q => _IQXmpy(), X = GLOBAL_Q v->SpeedRpm = _IQmpy(v->BaseRpm,v->Speed); ] |
|
|
|
|
|
// 在角度0.9到0.1的过程中会有一个过零过程,过零时,转速计算不能按下面这个公式直接计算。
但是有没有可能角度从0.8过零然后变到0.2呢? 这个可以通过电机的最大转速来判断,即在一个控制周期中,电机的电角度最大可能变化量为多少,如果不超过0.2的话,那么例程<0.1/>0.9的判断就不会有问题。 // 这是一种比较简单的处理办法,你也可以根据自己的需要来修改。 也就是说这是让过零时的速度等于原来的速度来近似以免算出负的速度对吧。 是的。因为电机的机械时间常数一般比电时间常数长好多,0.2的电角度变化范围内,转速不会变大很大。 |
|
|
|
|
|
if (Tmp1>_IQ21(1)) //以下限定了速度的运行范围!相当于速度值的限幅?
v->Speed = _IQ(1); //当速度值超过正转时的基准值时,把基准值赋值给速度 else if (Tmp1<_iq21(-1)) v-="">Speed = _IQ(-1); //当速度值超过反向旋转的基准值时,把反向的基准值赋值给速度 else v->Speed = _IQ21toIQ(Tmp1);//在运行范围内取计算值 请问,以上程序中,为什么要对速度进行限幅??? 如果电机速度的运行范围超过这个速度标么值1,则怎么处理??? |
|
|
|
|
|
/ Low-pass filter // Q21 = GLOBAL_Q*Q21 + GLOBAL_Q*Q21Tmp1 = _IQmpy(v->K2,_IQtoIQ21(v->Speed))+_IQmpy(v->K3,Tmp1);这句话什么意思?注解说是滤波,滤什么波?// 这里滤波滤的是转速波形,为了转速能够比较平滑一些,不会因为某一次角度的误差引起较大波动。jay,你是我的偶像。这个滤波用的什么知识点?为什么电角度滤波就能得到速度? kaikaixinxinxuedianzi |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
697 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
607 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1069 浏览 1 评论
763 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
531 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
175浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
136浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
130浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
126浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
72浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 23:42 , Processed in 1.059774 second(s), Total 71, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号