我提个问题哈,STC32G12K128 ,这款芯片拿来玩FOC, 必须是是-24A的是吧? 像早起的BETA,或者没有-24A ,单纯的STC32G12K128 丝印的芯片,还能玩梁工开源的那些FOC吗? {:4_167:} 因为手头上就这些芯片核心板子
一样的
DebugLab 发表于 2025-8-14 10:01
STC-FOC 库,完整项目程序,在 下一楼层附件 下载
STC-FOC车规-24万转-小功率原理图-20250910,提供程序支 ...
版主,中功率板适用的电机,推荐一个购买链接。小风扇最好,自己可以享用一下
lcwswust 发表于 2025-11-14 09:25
首先感谢楼主提供的电路、程序(库)。
等我有空了一定要弄一下。
前面几个视频只能看第一个,其它的只有声 ...
FOC全称是定向磁场控制,我这个里面使用了SVPWM,确实可以做到定向磁场控制
并且这个控制也是有闭环同步的,叫FOC没什么问题
相电流也可以实际观测到,确实是正弦波
不过原理确实和传统FOC不大一样就是了,没有使用电流传感器,相对而言比较取巧
王昱顺 发表于 2025-11-27 17:03
FOC全称是定向磁场控制,我这个里面使用了SVPWM,确实可以做到定向磁场控制
并且这个控制也是有闭环同步 ...
谢谢王工。
目前遇到一个问题请指教:
我用的芯片是EG2133,LIN是反相的,已改PWM初始化代码:
PWMA_CCER1 = PWMA_CCER2 = 0xDD;//PWMxN低有效
开环启动能转,但随后会刹车,问题在于所有PWM引脚输出低电平导致低端MOS管是处于
导通状态,请问需要怎么改?(Io_Init中对P2赋值不起作用,估计仍受PWM控制)
估计未检测到反电势而停转时引脚是受库函数 pwm_off() 控制?
lcwswust 发表于 2025-11-28 09:53
谢谢王工。
目前遇到一个问题请指教:
我用的芯片是EG2133,LIN是反相的,已改PWM初始化代码:
是的,虽然引出了引脚的宏定义,但是对于关断时刻的控制电平还是固定的
今天我修改一下库的内容,使其pwm_off可传参,到时候你更改一下传入参数使其极性改变即可
王昱顺 发表于 2025-11-28 10:20
是的,虽然引出了引脚的宏定义,但是对于关断时刻的控制电平还是固定的
今天我修改一下库的内容,使其pwm ...
好的谢谢,建议根据PWMA_CCER1\2中的极性来处理。
目前程序并未运行到主函数中调用pwm_off(),估计是PWM中断里处理的,开环启动后未检测到反电势自动停转的处理。
lcwswust 发表于 2025-11-28 10:43
好的谢谢,建议根据PWMA_CCER1\2中的极性来处理。
目前程序并未运行到主函数中调用pwm_off(),估计是PWM中 ...
已更新,可以试试,空闲电平逻辑通过PWMA_OISR设置实现
文档内有详细的操作说明
王昱顺 发表于 2025-9-18 10:00
当前电压和电流需要用户自行添加,程序内不做多余处理,仅保留电机驱动部分功能。
堵转保护由电机算法自 ...
2025-11-28版本的有几个问题,P36,37打开上拉电阻后开环不能启动,在闭环里转有顿挫现象,串口输出转速和电角度数值不稳定!
void Io_Init(void)
{
P2M0 |= 0x3f; P2M1 &= ~0x3f; //P20~P25切换为推挽输出,PWM输出
P3M0 &= ~0xc0; P3M1 |= 0xc0; //P36、P37切换为高阻输入,CMP采样
P2SR &= ~0x3f; //P20~P25电平转换速度设置为最快
P2DR &= ~0x3f; //P20~P25输出电流设置为最大
P3M0 &= ~0x1c; P3M1 |= 0x1c; //使用P32~P34三个按键
P3PU |= 0x1c; //打开P32~P34上拉电阻
P1M0 &= ~0x03; P1M1 |= 0x03;//P10、P11切换为高阻输入
// P3PU |= 0xc0; //打开P36~P37上拉电阻
P5M0 &= ~0x10; P5M1 |= 0x10; //P54切换为高阻输入
P5PU = 0x10; //打开P54上拉电阻
P3M0 &= ~0x13; P3M1 &= ~0x13; //P30、P31设置为准双向口,串口使用
}
串口输出信息
接收←set_duty:830,erpm:-1,rpm:0
接收←set_duty:830,erpm:-1,rpm:0
接收←set_duty:830,erpm:-1,rpm:0
接收←set_duty:830,erpm:-1,rpm:0
接收←set_duty:830,erpm:11888,rpm:1698
接收←set_duty:830,erpm:-1,rpm:0
接收←set_duty:830,erpm:8919,rpm:1274
接收←set_duty:830,erpm:11841,rpm:1691
接收←set_duty:830,erpm:-1,rpm:0
接收←set_duty:830,erpm:8910,rpm:1272
接收←set_duty:830,erpm:-1,rpm:0
王昱顺 发表于 2025-11-28 22:21
已更新,可以试试,空闲电平逻辑通过PWMA_OISR设置实现
文档内有详细的操作说明 ...
好的,谢谢王工。