找回密码
 立即注册
楼主: 梁***

BLDC, 三相无刷直流电机驱动-STC8/STC32-无HALL, 12万转, 视频讲解

 火.. [复制链接]

该用户从未签到

46

主题

3043

回帖

6859

积分

超级版主

积分
6859
 楼主| 发表于 2024-1-25 16:57:17 | 显示全部楼层
dong97512 发表于 2024-1-25 16:05
梁工, 有个方案,电机有弹簧拉着,每次启动都需要扭力不小,看看你这个启动过程中,扭力可以做到足够大。  ...

如果没有减速机构,用带霍尔的比较好。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

0

主题

13

回帖

52

积分

注册会员

积分
52
发表于 2024-1-26 14:23:54 | 显示全部楼层
梁工:我最近把您开源的STC8H1K28作为主控的无感无刷电机控制方案研习了一遍,对消磁、换相等概念算是比较了解了,然后我把您的程序移植到了STC8H1K08这款芯片上。用的是SOP16那款。电机能启动,但是始终无法进入正常的中断控制运行阶段。然后做了几个变量作为调试标记,用逻辑分析仪进行了捕捉。发现6步换相中,只有第1步(即AC相)可以进入比较器中断,其他步都无法进入比较器中断,即使是换相续流引起的电动势变化也无法进入比较器中断。不知道是什么问题。我使用的ADC口,分别是0,1,13.      梁工能帮忙指条路嘛

点评

请仔细核对我的例程。比较器一旦启动允许中断,只要有比较结果变化,就会进中断的。  详情 回复 发表于 2024-1-26 14:48
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3043

回帖

6859

积分

超级版主

积分
6859
 楼主| 发表于 2024-1-26 14:48:23 | 显示全部楼层
Sangzhenhua2010 发表于 2024-1-26 14:23
梁工:我最近把您开源的STC8H1K28作为主控的无感无刷电机控制方案研习了一遍,对消磁、换相等概念算是比较 ...

请仔细核对我的例程。比较器一旦启动允许中断,只要有比较结果变化,就会进中断的。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

0

主题

13

回帖

52

积分

注册会员

积分
52
发表于 2024-1-26 17:52:12 | 显示全部楼层
本帖最后由 Sangzhenhua2010 于 2024-1-26 17:54 编辑
梁工 发表于 2024-1-26 14:48
请仔细核对我的例程。比较器一旦启动允许中断,只要有比较结果变化,就会进中断的。 ...

file:///C:/Users/a/Desktop/IMG_20240126_173720.jpg

梁工,我现在比较器中断有些问题,我先测试了启动阶段的波形。我让电机多转了一会儿,以1ms为周期进行换相。得到的电枢波形,和您的不太一样,梯形两侧的斜率怎么是反的,梁工帮忙看看

启动1ms换相周期电枢波形

启动1ms换相周期电枢波形
IMG_20240126_173720.jpg

点评

换相时刻不对造成的。  详情 回复 发表于 2024-1-26 23:18
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3043

回帖

6859

积分

超级版主

积分
6859
 楼主| 发表于 2024-1-26 23:18:52 | 显示全部楼层
Sangzhenhua2010 发表于 2024-1-26 17:52
梁工,我现在比较器中断有些问题,我先测试了启动阶段的波形。我让电机多转了一会儿,以1ms为周期进行换 ...

换相时刻不对造成的。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

0

主题

13

回帖

52

积分

注册会员

积分
52
发表于 2024-1-30 10:26:16 | 显示全部楼层
fisholive 发表于 2023-10-7 21:59
梁工,

     我在试产发现,这个程序1/10概率不能正常启动, 不得已写了下面重启程序(遇到异常,让马达重 ...

消磁时间我觉得可以根据换相时间动态调整,和换相时间关联起来
回复 支持 反对 送花

使用道具 举报

该用户从未签到

0

主题

13

回帖

52

积分

注册会员

积分
52
发表于 2024-1-30 11:05:33 | 显示全部楼层
fisholive 发表于 2023-10-7 21:59
梁工,

     我在试产发现,这个程序1/10概率不能正常启动, 不得已写了下面重启程序(遇到异常,让马达重 ...

换相时间数组的初值和启动阶段的换相时间是两个概念。
启动阶段的换相时间是完全的人为延时拖动。
而换相时间取得是两个过零点之间的时间。          我在测试中,发现这个初值也是从梁工原来的8000数值改到400,都差别不大,启动到进入比较器换相闭环运行,都或多或少有一些磕碰
回复 支持 反对 送花

使用道具 举报

该用户从未签到

0

主题

13

回帖

52

积分

注册会员

积分
52
发表于 2024-1-31 13:09:28 | 显示全部楼层
梁工 发表于 2024-1-26 23:18
换相时刻不对造成的。

梁工,我想问一下。这个程序,是适用于很多款电机(比如测试了多款电机),还是说需要根据每款电机的不同,修改启动或者比较器中断函数内参数?

点评

性能差别很大的电机,改下启动的时间参数,以及堵转限时的时间参数即可,程序逻辑不用改动。  详情 回复 发表于 2024-1-31 15:54
回复 支持 反对 送花

使用道具 举报

该用户从未签到

46

主题

3043

回帖

6859

积分

超级版主

积分
6859
 楼主| 发表于 2024-1-31 15:54:28 | 显示全部楼层
Sangzhenhua2010 发表于 2024-1-31 13:09
梁工,我想问一下。这个程序,是适用于很多款电机(比如测试了多款电机),还是说需要根据每款电机的不同 ...

性能差别很大的电机,改下启动的时间参数,以及堵转限时的时间参数即可,程序逻辑不用改动。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

0

主题

13

回帖

52

积分

注册会员

积分
52
发表于 2024-2-2 11:20:46 | 显示全部楼层
                之前在浏览STC官网的时候,看到梁工开源的无刷电调方案,就排在了DIY计划上。
     真正开始实施,是从2023年12月开始的。前前后后打了十多块板子,终于在最后做出了比较满意的电调板子。
     实现的功能:1、上电唱歌,输入信号正常后再次唱歌(这部分迁移的萝莉的无刷电调方案);2、外接接收机油门通道PWM信号,实现平滑调速

下面把自己一步步的学习过程分享给大家,大佬们不喜勿喷
1、        首先拿到了STC梁工的开源方案,利用两个星期的闲暇时间,把代码通读了一遍。包括里面涉及到的以前不曾了解的知识。比如,换相步骤、比较器的应用,重点是为什么需要消磁?过零检测后为什么需要延时30电角度等较难理解的问题。在自认为把梁工的方案原理上吃透之后,就开始实施复刻了。但是实际遇到的问题却并不是理论通了就可以很顺利的。
2、        首先根据梁工的方案和原理图,我自己又结合了自己之前做过的一些DIY,将电路减缓了。由于我之前使用STC8H1K08芯片比较多,而梁工采用的是STC8H1K28主控。两者都是8H系列的芯片,所以我先把代码重新整合,改写成适用于STC8H1K08芯片的代码。之后是打板买原件。大约一周后,收到了板子,焊接完成后,上电。电机能够启动,但是无法进入正常的比较器中断闭环运行,或者说是不能够稳定进入。在大油门状态下,MOS发热也比较严重。然后试着更改比较器中断函数里面的一些消磁延时和过零延时的参数。但是效果不理想。最后试着试着,MOS就烧掉了。很是郁闷。
3、        有了上次的失败后,我有点怀疑这个方案是否具有通用性。然后我又打了一版萝莉大佬的无刷电调开源方案。在板子收到之前,我把萝莉大佬的无刷电调代码,也通读了一遍。发下萝莉大佬的方案里面有一些优点和缺点。
优点在于,萝莉大佬在调试电调的过程中,插入了很多调试引脚输出。也就是通过空闲的引脚,在程序的某些位置,来观测程序的运行情况。这个方法非常好,后来我也采用了这种方法,才发现了自己代码中的一些问题。
缺点是,萝莉大佬在调试代码时,可能急于求成,搞得比较器中断服务函数中的代码及其混乱。这时候才感觉到梁工的代码真的非常工整,逻辑清除。所以萝莉大佬的代码比较器中断服务函数中的部分,可读性很差。
不过惊奇的是,在收到板子后,焊接上电,竟然一次性就可以运行成功。真的感叹萝莉的调试能力。但是同时也发现萝莉无刷电调方案的一些问题:①电调运行起来mos发热比较严重,该问题可能和换相时刻不合适有关;②电调无法在进入低速运转区域,这是代码里面设置的结果,代码中设定了电调运行过程中的最低占空比。我在试着将该占空比调低后,运行变得不稳定。
4、        有了以上两次经验之后,我又重新设计了基于STC8H1K08芯片的STC梁工无刷电调电路板,其中的一些驱动部分,改用了萝莉的无刷电调电路,因为萝莉的无刷电调电路较为简洁,也是经过实际验证的。同时也开始逛逛论坛,寻求一些思路。
5、        收到第二版STC8H1K08电调板,就开始调试了,这次调试算是比较认真和深入的。
首先采用了萝莉的启动方案,改了一些启动参数,然后在将电机拉动后,再继续让电机以1ms的换相时间运行一段时间,以此来观察电枢电压。如下图

人为拖动运转的电枢电压

人为拖动运转的电枢电压
这是第一次捕捉电枢波形,论坛上让梁工看了看,说是换相时刻不合适引起的波形两侧斜率不正确。这个是很好理解的,因为是固定延时换相,并不是通过比较器测量过零点,也没有经过比较精确的30电角度延时,所以导致波形虽然对称,但是两侧的斜率不正常。另外可以从波形上明显观察到空闲相续流引起的尖峰。
对无刷电调的理解是一点点深入的,调试也是一点点进步的,至少这次可以实现稳定的拖动运转,说明驱动电路和换步函数都是正确的。
第二步,捕捉比较器中断和换相时刻,进行时间对比。方法很简单,采用萝莉那种在程序中插入引脚输出。并使用逻辑分析仪进行捕捉。
得到的结果是这样的,其中0通道是进入比较器中断函数的标记,0通道是换相函数标记。

比较器标记

比较器标记
可以看出,只有一相进入了比较器中断。这让我很郁闷,也不得其解。难道芯片的比较器坏了?
然后又开始浏览论坛,把STC论坛中,无刷电调的帖子都看了一遍。发现一个比较重要的信息。就是电动势反馈电路的电阻选取的问题。

比较器负极电压

比较器负极电压
原贴是这样的,主要意思是,分压电阻的选择,要尽量保证给到比较器负极的电压在3V左右。这样是反思自己的电路,确实是有问题的,我原来采用的是10k与1.5k的分压电路,使用2S锂电池供电,那么到达比较器负极的电压可能只有7.4*1.5/(10+1.5)=0.96V,与3V差距较大,所以我将电路改成10K与4.7K分压。这样到达比较器负极的电压差不多就能达到7.4*4.7/(10+4.7)=2.36V
更换电阻之后,再次用逻辑分析仪进行捕捉,波形忘记保存了。但是结果我还记得,就是一个周期内,6步换相,可以得到3个比较器中断标记了。有效果,但是还没有全部活捉到。
然后我又试着把滤波电容,由原来的10nf,换成了100nf。再次测试,终于能够将所有的比较器中断都捕获到了。

反馈电路

反馈电路
然后调整了一些程序参数,电机可以比较稳定的运行了。但是在大油门的情况下,电机速度上不去。我估计和电容选大了有关系,需要在程序中补偿以下。但是再次测试时,又试着加大油门,竟然把mos烧了。估计还是换相时刻不合适,导致发热严重。其实心里也清除,换成大点的电容,本身就比较牵强。
6、        再次静下心来思考,莫非是强行移植程序,导致的问题?还是STC8H1K08芯片的比较器功能有缺陷?
抱着不死心的精神,不能放弃,得从头再来。于是采用梁工原版的程序和原版的芯片,STC8H1K28,再次打板。因为实在是觉得已经把整个原理吃透了,实在是步甘心止步于萝莉的方案,毕竟萝莉的方案也存在一些问题。
一周后,收到板子,原版程序,上电启动,启动抖动,无法进入闭环运行,不成功。
忘记其中的过程了。调了一些参数可以启动了。但是经过测试,无法在大油门的情况下进入高转速。
于是把100nf电容,重新换成了10nf电容,效果是大油门可以进入高转速,但是容易丢失过零检测比较器中断,导致电机转动有“电波”声,观察调试端口输出,存在过零检测丢失现象。通过细致分析,是换相过后的消磁时间把进入比较器的中断躲过去了。然后再分析,发现,其实换相续流引起的反电动势尖峰,在高速情况下,是产生不了比较器中断的,也就是是说高速情况下是无需消磁延时的。于是果断取消消磁延时,奇迹就出现了,使用1306电机,基本上可以稳定启动,并调速云畅,大油门下,也可以高速运转,捕捉高速情况下的换相间隔能小于100us,实际上可能可以更小。
此次DIY还没有结束,还需要再调试。先把自己的经验记下来。

上面的内容可以不看,我再次把关键点总结以下:
1、        分压电阻选取要合适,保证进入比较器负极的电压在3V左右
2、        滤波电容要选择得当,不能太大。
3、        调试时,可以使用调试引脚输出,用逻辑分析仪观测,效率比较高,我觉得比用示波器观察方便(主要我对示波器使用不够熟练)
4、        想要学习,尽量先从原版入手,即使是想要移植,应该先验证完全后再开展

点评

进步可喜可贺! 我的程序是比较通用的,我买了超过10种电机,从10mm的到平衡车的200mm电机,速度从3万转到600转,都可以驱动,但是启动速度和一些时间参数要适当调整,我发布的程序是比较合适2212电机或与之近似特性  详情 回复 发表于 2024-2-4 12:26
回复 支持 反对 送花

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 09:23 , Processed in 0.075266 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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