曾想上 发表于 2025-10-17 22:18:35

王昱顺 发表于 2025-9-8 12:45
2025年10月15日 新 更新 STC-FOC库,提供完整的项目程序




王工,STC32G12K128,如何实现正弦、余弦等浮点运算阿?
我在尝试跟着DENGfoc开源代码,复刻效果。但目前浮点运算结果很奇怪,没得到正常的结果,然后目前单独Debug测试,发觉出不了正确的结果。但想到你们既然能实现FOC控制,那理应STC32G12K128应该是可以实现浮点运算。能给个实现浮点运算的示例代码?或者给个实现步骤,需要引用哪些?定义什么?设置什么?才能使用浮点的加减乘除、正弦余弦等。

目前我根据手册35.8 示例代码,debug单步运算,没看到正确值【有可能是我设置不对,但没找到原因】。

#include "intrins.h"
#include <math.h>   // 引入数学库

float cf1 = 3.9f;
float cf2 = 5.1f;
float cf3 = 0;

void test() {   
    // 基本算术运算
    cf3 = cf1 * cf2;
    cf3 = cf1 * 0.0f;
    cf3 = (cf1 / cf2) - cf3;
    cf3 = (cf1 * cf2) + cf3;

    // 使用数学函数库的运算
    // 注意:sin, cos, tan等函数的参数是弧度
    cf3 = (cf1 / cf2) * sin(cf3);
    cf3 = (cf1 / cf2) * cos(cf3);
    cf3 = (cf1 / cf2) * tan(cf3);
    cf3 = (cf1 / cf2) * sqrt(cf3);
    cf3 = (cf1 / cf2) * atan(cf3);
}

王昱顺 发表于 2025-10-18 09:45:44

曾想上 发表于 2025-10-17 22:18
王工,STC32G12K128,如何实现正弦、余弦等浮点运算阿?
我在尝试跟着DENGfoc开源代码,复刻效果。但目前 ...

我的库中使用的是纯整数定点计算,没有用到浮点
32g12k128没有浮点加速单元,所以浮点只能模拟运算,比较慢
至于你仿真看到的结果不对,大概是你用了模拟仿真,而非真实的硬件仿真,这部分请查看论坛里面的仿真教程

jun4052 发表于 2025-10-18 10:27:42

王工,你好!代码中Zero_Angle_Start对齐零点这个数据引用不了,报错 ERROR L128:
另外用了这个电机驱动库串口就用不了,能不把串口功能也调好?

yf_gao 发表于 2025-10-18 15:08:11

王昱顺 发表于 2025-9-12 16:07
可以的,用phasetime的数据即可,
单位是0.5us,使用60除以当前的换向时间,就是每分钟的转速的,
这是如 ...

1500us是怎么算出的?具体指点一下

HUHUhuhu 发表于 2025-10-18 15:28:50

王工你好,我在自己添加程序的过程中发现调用26号中断,就会出现错误,请问是怎么回事?这是输入捕获中断

ct1000 发表于 2025-10-18 15:54:05

王工,我测试了油烟机电机310V在不带扇叶的时候转动声音很安静,在装上扇叶后,感觉转动起来声音很响,抖动厉害,有卡顿感觉,在哪里设置参数吗,我用其他FOC驱动板测试很安静,

王昱顺 发表于 2025-10-18 16:17:50

HUHUhuhu 发表于 2025-10-18 15:28
王工你好,我在自己添加程序的过程中发现调用26号中断,就会出现错误,请问是怎么回事?这是输入捕获中断 ...

PWMB的中断号是27,26是PWMA的中断,已经被FOC程序占用了

王昱顺 发表于 2025-10-18 16:18:27

ct1000 发表于 2025-10-18 15:54
王工,我测试了油烟机电机310V在不带扇叶的时候转动声音很安静,在装上扇叶后,感觉转动起来声音很响,抖动 ...
可能是由于转动惯量太大导致的,增加一些占空比试试
低速时会反复重同步,所以会有一些噪声

王昱顺 发表于 2025-10-18 16:22:30

jun4052 发表于 2025-10-18 10:27
王工,你好!代码中Zero_Angle_Start对齐零点这个数据引用不了,报错 ERROR L128:
另外用了这个电机驱动库 ...

请更新最新版本的FOC库,FOC例程中的程序编译是没问题的

程序中对于串口没有操作,是不影响其他串口程序的

王昱顺 发表于 2025-10-18 16:25:22

yf_gao 发表于 2025-10-18 15:08
1500us是怎么算出的?具体指点一下

是这样的,应该是变量为3000的时候,换向时间为1500us
是之前写错了,单位仍然是0.5us
已经将之前的内容更改过来了,感谢您的指正
页: 19 20 21 22 23 24 25 26 27 28 [29] 30 31 32 33 34 35 36 37
查看完整版本: 最便宜的 车规-FOC,24万转@STC32G12K128-24A车规,STC-FOC 新算法库,9/8