梁工
发表于 2024-4-22 14:50:17
本帖最后由 梁工 于 2024-4-22 15:03 编辑
顾红军 发表于 2024-4-22 13:21
梁工你好!
“/******************* 强制电机启动函数 ***************************/
void StartMotor(void ...
你怎么觉得会有问题?无数的用户验证过,没有问题滴!
if(timer < 40)return; 这一句,只要timer小于40就会返回。如果条件不满足,你用break不是一样出不去,永远循环?
timer -= timer /16; 这一句,timer值每循坏一次就减小一次,如果不退出,最终值为15,我退出条件为小于40,远比15大。
顾红军
发表于 2024-4-22 16:15:37
不好意思可能我没有描述好疑问,重新梳理一下,从开机,初始化到main再到“while(1)”在这里如果检测油门大于设定门限,则执行
强制电机启动模式即进入第二个“while(1)”那么程序就在这个循环体执行,它是跳不出来。如果TM4中断了条件成立也会执行一次换相step++;返回到第二个“while(1)”循环体也会执行step++; 假设,转动油门,“PWW_Set”值是无法更新,只看到换相在“case 4: ”有读取AD值,但没看到哪里更新“PWW_Set”的值。
疑问就是第二个“while(1)”循环体怎么跳出来的。然后在去执行正常运转函数体的。没有理解第二个“while(1)”循环体
顾红军
发表于 2024-4-22 16:27:23
我把你那个用此方法验证
第一种:“return”
voidmain()
{
while(1)
{
LED1=0;//点亮LED1
if(!KEY1) return;
}
LED1=1;//关闭LED1证明跳出循环体
while(1)
{
LED2!=LED2;
delay_MS(500);
}
}
以上试验跳不出循环体
第二种用“break”
voidmain()
{
while(1)
{
LED1=0;//点亮LED1
if(!KEY1) break;
}
LED1=1;//关闭LED1证明跳出循环体//成功跳出
while(1)
{
LED2!=LED2;//成功
delay_MS(500);
}
}
顾红军
发表于 2024-4-22 16:29:33
用“KEY1”模拟这个“if(timer < 40)”条件成立情况
梁工
发表于 2024-4-22 16:31:11
本帖最后由 梁工 于 2024-4-22 16:32 编辑
顾红军 发表于 2024-4-22 16:15
不好意思可能我没有描述好疑问,重新梳理一下,从开机,初始化到main再到“while(1)”在这里如果检测油门大 ...
我上面已经解释得很清楚了,你再仔细看看吧。
不知道你是实际测试电机时出问题,还是只是在看程序?
你可以看看相关的视频,我的电机是真的能转起来的,转得还很好,PID控制也都很好,不骗你的。我还装在四轴飞行器测试过,还驱动过各种水泵、风扇、螺旋桨。。。。
顾红军
发表于 2024-4-22 17:33:17
好吧!
huxiaoxin
发表于 2024-4-25 18:14:44
悬赏贴 QQ1352445949
梁工和各位大佬们下午好,我按照梁工大功率原理图和代码。在实测中发现电流在1.3A之前无刷电机正常运行,但是在拧电位器到1.3A后无刷电机就会出现卡顿(也还在转),电位器拧到最大时无刷电机特别卡顿,也不转了。请教各位大佬和梁工,这样的现象是什么问题造成的,可有解决办法。
梁工
发表于 2024-4-25 19:11:53
huxiaoxin 发表于 2024-4-25 18:14
悬赏贴 QQ1352445949
梁工和各位大佬们下午好,我按照梁工大功率原理图和代码。在实测中发现电流在1.3A之 ...
示波器测量一个电枢的波形贴上来。
huxiaoxin
发表于 2024-4-25 19:54:14
test_tmp 发表于 2024-3-10 10:46
梁工,请教一下,这个无刷电调可以支持到多高的转速。我参考您的方案,做了一款无刷电调,各方面都挺正常。 ...
你好,你的这个问题解决了吗?
huxiaoxin
发表于 2024-4-26 15:38:34
梁工 发表于 2024-4-25 19:11
示波器测量一个电枢的波形贴上来。
是测UVW任意一项的波形吗?