gHall_State_delta = gHall_PwmIndex[gHall_State] – gHall_PwmIndex[gHall_PrevState];
if((gHall_State_delta == -1) || (gHall_State_delta == 5))
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
这是lab11e中的一段程序,上面是变量地址的计算,目前是正转,我修改了gHall_State_delta = gHall_PwmIndex[gHall_PrevState] – gHall_PwmIndex[gHall_State];按照程序可以实现反转,但是还是正转,为什么呢?
user6024771:
回复 Green Deng:
在目前gMotorVars.SpeedRef_krpm为正的时候,运行比较平稳,但修改为负数,会出现过流现象,这是为什么呢?
gHall_State_delta = gHall_PwmIndex[gHall_State] – gHall_PwmIndex[gHall_PrevState];
if((gHall_State_delta == -1) || (gHall_State_delta == 5))
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
这是lab11e中的一段程序,上面是变量地址的计算,目前是正转,我修改了gHall_State_delta = gHall_PwmIndex[gHall_PrevState] – gHall_PwmIndex[gHall_State];按照程序可以实现反转,但是还是正转,为什么呢?
Green Deng:
回复 user6024771:
你有修改过其他参数或者程序吗?
gHall_State_delta = gHall_PwmIndex[gHall_State] – gHall_PwmIndex[gHall_PrevState];
if((gHall_State_delta == -1) || (gHall_State_delta == 5))
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
这是lab11e中的一段程序,上面是变量地址的计算,目前是正转,我修改了gHall_State_delta = gHall_PwmIndex[gHall_PrevState] – gHall_PwmIndex[gHall_State];按照程序可以实现反转,但是还是正转,为什么呢?
user6024771:
回复 Green Deng:
没有修改过其他参数
gHall_State_delta = gHall_PwmIndex[gHall_State] – gHall_PwmIndex[gHall_PrevState];
if((gHall_State_delta == -1) || (gHall_State_delta == 5))
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
这是lab11e中的一段程序,上面是变量地址的计算,目前是正转,我修改了gHall_State_delta = gHall_PwmIndex[gHall_PrevState] – gHall_PwmIndex[gHall_State];按照程序可以实现反转,但是还是正转,为什么呢?
K Mr:电机速度的参数修改为负数即可实现电机反转,但是出现过流是不是硬件上存在问题?
gHall_State_delta = gHall_PwmIndex[gHall_State] – gHall_PwmIndex[gHall_PrevState];
if((gHall_State_delta == -1) || (gHall_State_delta == 5))
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
这是lab11e中的一段程序,上面是变量地址的计算,目前是正转,我修改了gHall_State_delta = gHall_PwmIndex[gHall_PrevState] – gHall_PwmIndex[gHall_State];按照程序可以实现反转,但是还是正转,为什么呢?
user6024771:
回复 K Mr:
硬件也没有吧!它是28069m与8305的组合,接电源、三相、霍尔线,其他没有了
gHall_State_delta = gHall_PwmIndex[gHall_State] – gHall_PwmIndex[gHall_PrevState];
if((gHall_State_delta == -1) || (gHall_State_delta == 5))
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
这是lab11e中的一段程序,上面是变量地址的计算,目前是正转,我修改了gHall_State_delta = gHall_PwmIndex[gHall_PrevState] – gHall_PwmIndex[gHall_State];按照程序可以实现反转,但是还是正转,为什么呢?
Green Deng:
回复 user6024771:
过流有可能是hall角度估算错误引起的。
另外,建议你这边整理一下问题后在英文版的E2E上发帖咨询一下。那边有专门针对电机控制的工程师可以为你辅导。
gHall_State_delta = gHall_PwmIndex[gHall_State] – gHall_PwmIndex[gHall_PrevState];
if((gHall_State_delta == -1) || (gHall_State_delta == 5))
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
{
gHall_dir = 1; // positive direction
}
else if((gHall_State_delta == 1) || (gHall_State_delta == -5))
{
gHall_dir = 2; // negative direction
gHall_speed_fdb_pu = -gHall_speed_fdb_pu;
}
else
{
gHall_dir = 0; // direction change
}
这是lab11e中的一段程序,上面是变量地址的计算,目前是正转,我修改了gHall_State_delta = gHall_PwmIndex[gHall_PrevState] – gHall_PwmIndex[gHall_State];按照程序可以实现反转,但是还是正转,为什么呢?
user6024771:
回复 Green Deng:
使能了PWM就好了,之前的程序禁用PWM