找回密码
 立即注册
楼主: lcwswust

关于"STC-FOC"之我的猜想

[复制链接]
已绑定手机

7

主题

445

回帖

6692

积分

论坛元老

积分
6692
 楼主| 发表于 2026-8-25 13:16:50 | 显示全部楼层
QQ6243*** 发表于 2026-8-25 12:08
我操,怎么还在用N+P的功率管

N+P挺好啊,不需要自举,便于用分立元件驱动,成本低。
比如想做一节锂电池供电的手持风扇,这电路就挺好,若想用全NMOS,一般得加驱动芯片(如FD6288),且要考虑芯片的供电电压范围(如FD6288需要8V以上的供电)。
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
发表于 2026-10-9 12:22:53 | 显示全部楼层
FOC.zip (197.17 KB, 下载次数: 126)

能帮我看下吗,套的你的架构写的,一直检测不到过零,不知道哪里出了问题。这个驱动都快一年了,还没有驱动成功。麻烦你帮我看下哪里的问题

截图202610091227534885.jpg
过零进不去,一直超过过零角度退出过零检测
回复

使用道具 举报 送花

已绑定手机

7

主题

445

回帖

6692

积分

论坛元老

积分
6692
 楼主| 发表于 2026-10-9 17:19:12 | 显示全部楼层
QQ6243*** 发表于 2026-10-9 12:22
能帮我看下吗,套的你的架构写的,一直检测不到过零,不知道哪里出了问题。这个驱动都快一年了,还没有驱 ...

大概看了下代码,比较高端(复杂),使用了函数指针、功能较多、代码也较多。
使用了HSPWM,关键是我没用过HSPWM、不了解。
你能解释一下这句吗:
DianJiaoDu = (unsigned long)mot_vp*360/65535 ;
看你是用DianJiaoDu 作为下标去查表,但你的表(如SPWMA[])是256个元素,
DianJiaoDu 的范围就超了,估计你连SPWM都没正常产生。

建议:
1.若能不用HSPWM就别用HSPWM;
2.示波器测一下PWM中断的周期;
3.做一个RC滤波器(如1k欧+0.1uf),便于示波器观察PWM输出波形的平均电压,看开环阶段的PWM是不是正弦规律;
4.去掉不相关功能(如休眠、通信、EEPROM等),让电机上电就自动启动就行。
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
发表于 2026-10-9 18:23:58 | 显示全部楼层
lcws*** 发表于 2026-10-9 17:19
大概看了下代码,比较高端(复杂),使用了函数指针、功能较多、代码也较多。
使用了HSPWM,关键是我没用 ...

截图202610091813031751.jpg

表格是360个元素

HSPWMA(PWMA_BKR,0x84);这个只是寄存器赋值,我时钟设置成144MHZ,都是cpu只有36MHZ,用CPU去写PWM和能导致速度过快写入失败
所以使用HSPWM写入

DianJiaoDu = (unsigned long)mot_vp*360/65535 ;把累计的角度量化成unsigned int形,也就是用16位变量65536代表360度

我现在确定了就是累计角度有问题,会超,转起来之后超出累计范围导致过零检测失败

https://www.stcaimcu.com/thread-25713-1-1.html按照我这个思路帮我重新设计个累积算法,其他功能都是正常的
现在的现象是能转起来,有时能转很久,但绝大多数情况过零检测失败,以我的判断就是累积角度算法有问题
我重新发的贴子,里面有上位机使用方法


回复

使用道具 举报 送花

已绑定手机

7

主题

445

回帖

6692

积分

论坛元老

积分
6692
 楼主| 发表于 2026-10-9 21:58:22 | 显示全部楼层
QQ6243*** 发表于 2026-10-9 18:23
表格是360个元素

HSPWMA(PWMA_BKR,0x84);这个只是寄存器赋值,我时钟设置成144MHZ,都是cpu只有36MHZ ...

哦,抱歉,我弄错了,确实是360个元素,我让AI助手数的,它说是256个,看来还是不能太相信AI。
那么,我发现了两个问题:
1.mot_vp的范围是0~65535,当它为65535时,DianJiaoDu = (unsigned long)mot_vp*360/65535就会=360,
  但数组下标最大359,所以会越界。
建议:限制mot_vp的范围,如:
    mot_vp=(mot_vp+mot_speed)%36000;DianJiaoDu =mot_vp/100;
  或:
    mot_vp=(mot_vp+mot_speed)%46080;DianJiaoDu =mot_vp>>7;//360*128=46080,>>7就相当于除128
2.关于DEGSET,我是以256为周期,而你以360为周期,所以需作相应的修改。


傲游截图20261009214111.png


回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
发表于 2026-10-10 06:37:43 | 显示全部楼层
lcws*** 发表于 2026-10-9 21:58
哦,抱歉,我弄错了,确实是360个元素,我让AI助手数的,它说是256个,看来还是不能太相信AI。
那么,我 ...

还是不行,反倒是连启动也不转了,会有高频咆哮
你帮我调试下吧
回复

使用道具 举报 送花

已绑定手机

7

主题

445

回帖

6692

积分

论坛元老

积分
6692
 楼主| 发表于 2026-10-10 10:22:30 | 显示全部楼层
QQ6243*** 发表于 2026-10-10 06:37
还是不行,反倒是连启动也不转了,会有高频咆哮
你帮我调试下吧

这样吧,你按我在52#的建议,代码尽量精简(别用函数指针),能不用HSPWM就不用HSPWM、只保留电机相关的代码、上电自动运转;
然后代码传上来我帮你看看。
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
发表于 2026-10-10 13:40:36 | 显示全部楼层
lcws*** 发表于 2026-10-10 10:22
这样吧,你按我在52#的建议,代码尽量精简(别用函数指针),能不用HSPWM就不用HSPWM、只保留电机相关的 ...

FOC.zip (196.61 KB, 下载次数: 145)


cd9597d9-c1ae-401e-8aab-948900badc5f.png


PWM在这里修改
HSPWMA真没关系,先不考虑这个,目前都是正常的
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
发表于 2026-10-10 13:53:58 | 显示全部楼层
lcws*** 发表于 2026-10-10 10:22
这样吧,你按我在52#的建议,代码尽量精简(别用函数指针),能不用HSPWM就不用HSPWM、只保留电机相关的 ...

FOC - 副本.zip (186.66 KB, 下载次数: 131)


截图202610101352594475.jpg
PWM在这里修改
重新做了,其他代码都没编译进去
回复

使用道具 举报 送花

已绑定手机

307

主题

584

回帖

2961

积分

金牌会员

积分
2961
发表于 2026-10-10 16:49:07 | 显示全部楼层
lcws*** 发表于 2026-10-10 10:22
这样吧,你按我在52#的建议,代码尽量精简(别用函数指针),能不用HSPWM就不用HSPWM、只保留电机相关的 ...

忘了说了,下载频率12MHZ
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-8 01:35 , Processed in 0.077450 second(s), 87 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表