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

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

 火.. [复制链接]

该用户从未签到

2

主题

17

回帖

62

积分

注册会员

积分
62
发表于 2023-5-12 16:21:04 | 显示全部楼层
梁工 发表于 2023-5-11 13:43
到下面连接的帖子下载,里面有例程,修改切换即可。

STC8H系列-高级PWM范例程序下载

谢了梁工
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

25

回帖

173

积分

注册会员

积分
173
发表于 2023-5-22 19:53:43 | 显示全部楼层
梁工,好!

     我按照您的建议改成3N+3P mos管驱动, 烧录后发现有时IO电平不受控制,大概每隔17s,蜂鸣器&红灯,黄灯同时响或亮3s,我一直没有找到原因。我直接用你的原始无霍尔程序烧录进去,发现烧录后蜂鸣器和红,黄灯长亮。应该都是持续高电平。这个可能第一次手板双N mos管烧机原理,我自己研究了一下,双N mos, N+P控制逻辑应该都是相同,高电平打开 电源的mos管,低电平关掉。
    这个外围电路用在STC15W408AS 验证过很多次没有问题,可能会是哪里问题会是持续高电平或间接不受控制,外围电路的影响吗?
不胜感激!
47[KU}LDLMMZ]S_9VJ7DU7I.png
20230521_211148.jpg

Schematic Prints.pdf

77.46 KB, 下载次数: 50

stc8h-bldc-12 - .zip

6.53 KB, 下载次数: 44

点评

如果按照我的电路打的板,不应该有问题,我打板测试过多种电机的,也有好多人打板测试过的。 你没有说直接下载我的程序电机驱动的情况,如果你用别的IO,由于我的程序没有用到,输出高电平是正常的。  详情 回复 发表于 2023-5-22 22:27
回复 支持 反对 送花

使用道具 举报

该用户从未签到

45

主题

2920

回帖

6564

积分

超级版主

积分
6564
 楼主| 发表于 2023-5-22 22:27:48 | 显示全部楼层
fisholive 发表于 2023-5-22 19:53
梁工,好!

     我按照您的建议改成3N+3P mos管驱动, 烧录后发现有时IO电平不受控制,大概每隔17s,蜂鸣 ...

如果按照我的电路打的板,不应该有问题,我打板测试过多种电机的,也有好多人打板测试过的。
你没有说直接下载我的程序电机驱动的情况,如果你用别的IO,由于我的程序没有用到,输出高电平是正常的。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

37

回帖

131

积分

注册会员

积分
131
发表于 2023-5-26 13:41:49 来自手机 | 显示全部楼层
梁工,有个新案子,无霍尔,需要计数转动圈 数,好计算吗

点评

无感无刷,方波PWM驱动,启动之后进入闭环才能精确计数圈数,启动时无法精确计数。使用FOC方式可以的,但是这个我还么有例子。  详情 回复 发表于 2023-5-26 13:58
回复 支持 反对 送花

使用道具 举报

该用户从未签到

45

主题

2920

回帖

6564

积分

超级版主

积分
6564
 楼主| 发表于 2023-5-26 13:58:51 | 显示全部楼层
dong97512 发表于 2023-5-26 13:41
梁工,有个新案子,无霍尔,需要计数转动圈 数,好计算吗

无感无刷,方波PWM驱动,启动之后进入闭环才能精确计数圈数,启动时无法精确计数。使用FOC方式可以的,但是这个我还么有例子。
回复 支持 反对 送花

使用道具 举报

该用户从未签到

1

主题

37

回帖

131

积分

注册会员

积分
131
发表于 2023-5-30 10:49:43 | 显示全部楼层
本帖最后由 dong97512 于 2023-6-1 21:51 编辑
twttwt1 发表于 2023-4-27 20:23
能实现正反转、刹车吗

梁工,你好!正反转数字调整,上升,下降沿更换好就行了。看到后面有个程序段没理解,帮忙介绍一下不?

                        {
                                adc11 = ((adc11 *7)>>3) + Get_ADC10bitResult(11);   //为何要*7 移3位  ,最终结果是啥?
                        }
                       
                        j = adc11;
                        if(j != adc11)        j = adc11;
                        PWW_Set = (u8)(j >> 5);        //油门是8位的    //ADC 是10位数据的吗?为何要移5位?

谢谢!
回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

25

回帖

173

积分

注册会员

积分
173
发表于 2023-6-13 09:08:05 | 显示全部楼层
梁工,好~
     我用STC8H不太熟练, 手上还剩余几千个STC15F408芯片,我就把STC8H 程序移植到 408as上面,修改前电路我用0.1uf 做比较器滤波电容,能正常启动。
现在改为10nf 滤波电容。T0做为换相计数用,T2作为延迟30度换相。但是修改后,一致不能启动,颤动很大。换相30度T2 和 比较器波形也奇怪(中断内部都放入一个LED测试波形,如 Yell_LED=~Yell_LED;)
帮忙看下会是什么问题,不甚感激。
1.png

延迟30度与比较器中断波形

延迟30度与比较器中断波形

原理图.pdf

129.12 KB, 下载次数: 38

原理图

main-V20 20230613.c

12.58 KB, 下载次数: 36

程序

点评

波形明显不对,可能是你换相的时机不对。下面是正常驱动时某一相的驱动波形。低电平是拉低时间为2t,第一个高脉冲是电机电感突然断开驱动的反电动势时间(俗称退磁时间)t,之后上升区间是反电动势叠加PWM的波形,时  详情 回复 发表于 2023-6-13 15:57
回复 支持 反对 送花

使用道具 举报

该用户从未签到

45

主题

2920

回帖

6564

积分

超级版主

积分
6564
 楼主| 发表于 2023-6-13 15:57:09 | 显示全部楼层
fisholive 发表于 2023-6-13 09:08
梁工,好~
     我用STC8H不太熟练, 手上还剩余几千个STC15F408芯片,我就把STC8H 程序移植到 408as上面, ...

波形明显不对,可能是你换相的时机不对。下面是正常驱动时某一相的驱动波形。低电平是拉低时间为2t,第一个高脉冲是电机电感突然断开驱动的反电动势时间(俗称退磁时间)t,之后上升区间是反电动势叠加PWM的波形,时间为t,接着是PWM驱动波形,时间为2t,然后下降区间是反电动势叠加PWM的波形,最后是拉低,另一个换相周期开始。
占空比60%驱动-反电动势波形图.JPG

回复 支持 反对 送花

使用道具 举报

该用户从未签到

3

主题

25

回帖

173

积分

注册会员

积分
173
发表于 2023-6-15 14:23:04 | 显示全部楼层


梁工,我的起始波形非常奇怪,正常应该其实step=0;位置不能重复进去比较器中断(定义初始位置),但是我的起始时间重复进入比较器中断,然后有时就启动不起来。
即使前面有 DISABLE_CMP_INT;        这句话禁止比较器中断。 但是运行完Step = 0;        StepXL():
调用switch 语句中,case 0:;语句仍然再次会打开比较中断 CMPCR1 = 0x9C;               
延迟10ms时间 仍然会重复进入比较器中断,波形就很乱。



u8 StartMotor(void)
{
        u16 timer,i;
        DISABLE_CMP_INT;        // 禁止比较器中断
        PWM_Value = 30;                // 初始占空比=16/256=6%
        Step = 0;
        StepXL();                        // 初始位置
        Delay_n_ms(5);//delay_ms(5);
        timer = 300;

1.png



点评

换相函数最后有一句: if(B_start) CMPCR1 = 0x8C; // 启动时禁止下降沿和上升沿中断  详情 回复 发表于 2023-6-15 15:38
回复 支持 反对 送花

使用道具 举报

该用户从未签到

45

主题

2920

回帖

6564

积分

超级版主

积分
6564
 楼主| 发表于 2023-6-15 15:38:29 | 显示全部楼层
fisholive 发表于 2023-6-15 14:23
梁工,我的起始波形非常奇怪,正常应该其实step=0;位置不能重复进去比较器中断(定义初始位置),但是我 ...

换相函数最后有一句:
if(B_start)                CMPCR1 = 0x8C;        // 启动时禁止下降沿和上升沿中断
回复 支持 反对 送花

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 23:13 , Processed in 0.073258 second(s), 67 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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