18340262113 发表于 2023-5-12 16:21:04

梁工 发表于 2023-5-11 13:43
到下面连接的帖子下载,里面有例程,修改切换即可。

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


谢了梁工{:4_196:}

fisholive 发表于 2023-5-22 19:53:43

梁工,好!

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

梁工 发表于 2023-5-22 22:27:48

fisholive 发表于 2023-5-22 19:53
梁工,好!

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

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

dong97512 发表于 2023-5-26 13:41:49

梁工,有个新案子,无霍尔,需要计数转动圈 数,好计算吗

梁工 发表于 2023-5-26 13:58:51

dong97512 发表于 2023-5-26 13:41
梁工,有个新案子,无霍尔,需要计数转动圈 数,好计算吗

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

dong97512 发表于 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位?

谢谢!

fisholive 发表于 2023-6-13 09:08:05

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

梁工 发表于 2023-6-13 15:57:09

fisholive 发表于 2023-6-13 09:08
梁工,好~
   我用STC8H不太熟练, 手上还剩余几千个STC15F408芯片,我就把STC8H 程序移植到 408as上面, ...

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


fisholive 发表于 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;





梁工 发表于 2023-6-15 15:38:29

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

换相函数最后有一句:
if(B_start)                CMPCR1 = 0x8C;        // 启动时禁止下降沿和上升沿中断
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: BLDC三相无刷直流电机驱动-8H系列/32G系列-无HALL, 12万转, 视频讲解,改进启动算法