zwf33335 发表于 2024-11-4 18:04:53

梁工您好!
      这是我用EC11编码器调速在您的调速程序上改动的程序,出现的现象:就是换挡时,要停顿一下,然后启动效果就不好了,那种方法或函数可以让换挡时不停顿一下,连续换挡哪,请梁工指教帮助为盼       

                     if(B_RUN)        //正在运行中
                        {   ///*******************编码器EC11型   调速**********************************
//                                if(PWM_Value < PWW_Set) ADC11_Duty = PWM_Value+150;//PWM_Value++;        //加速油门跟随电位器   
//                                       
//                                if(PWM_Value > PWW_Set)        PWM_Value--;//减速油门跟随电位器
//======================rotate编码器档位数值==============================================================
                                  if(rotate==0)    //关闭第0挡   
                                                {
                                                        adc11 = 0;
                                                        B_RUN = 0;
                                                        PWM_Value = 0;
                                                        CMPCR1 = 0x8C;        // 关比较器中断
                                                        PWMA_ENO= 0;
                                                        PWMA_CCR1L = 0;       
                                                        PWMA_CCR2L = 0;       
                                                        PWMA_CCR3L = 0;
                                                        PWM1_L=0;
                                                        PWM2_L=0;
                                                        PWM3_L=0;                       
                                                }
                                                if(rotate==1)   //启动 第1挡速度
                                                {   
                                                        PWM_Value++;                                               
                                                        adc11 = ((adc11 *7)>>3) + PWM_Value+200;       
            if(PWM_Value>40)
                                                        PWM_Value = 40;                                                       
                                                }
                                                if(rotate==2)   //第2挡速度
                                                {   
                                                        PWM_Value++;                                               
                                                        adc11 = ((adc11 *7)>>3) + PWM_Value+200;       
            if(PWM_Value>80)
                                                        PWM_Value = 80;                                                       
                                                }
                                                if(rotate==3)    //第3挡速度
                                                {   
                                                        PWM_Value++;                                               
                                                        adc11 = ((adc11 *7)>>3) + PWM_Value+200;       
            if(PWM_Value>120)
                                                        PWM_Value = 120;                                                       
                                                }
                                                if(rotate==4)    //第4挡速度
                                                {   
                                                        PWM_Value++;                                               
                                                        adc11 = ((adc11 *7)>>3) + PWM_Value+200;       
            if(PWM_Value>160)
                                                        PWM_Value = 160;                                                       
                                                }
                                          if(rotate==5)    //第5挡速度
                                                {   
                                                        PWM_Value++;                                               
                                                        adc11 = ((adc11 *7)>>3) + PWM_Value+200;       
            if(PWM_Value>200)
                                                        PWM_Value = 200;                                                       
                                                }
                                                if(rotate==6)    //第6挡速度
                                                {   
                                                        PWM_Value++;                                               
                                                        adc11 = ((adc11 *7)>>3) + PWM_Value+200;       
            if(PWM_Value>255)
                                                        PWM_Value = 255;                                                       
                                                }
                                               
//===================================================================================                               
                                if(PWM_Value < (D_START_PWM-10))          //停转, 停转占空比 比 启动占空比 小10/256
                                {
                                        B_RUN = 0;
                                        PWM_Value = 0;
                                        CMPCR1 = 0x8C;        // 关比较器中断
                                        PWMA_ENO= 0;
                                        PWMA_CCR1L = 0;       
                                        PWMA_CCR2L = 0;       
                                        PWMA_CCR3L = 0;
                                        PWM1_L=0;
                                        PWM2_L=0;
                                        PWM3_L=0;
                                }
                                else
                                {
                                        PWMA_CCR1L = PWM_Value;
                                        PWMA_CCR2L = PWM_Value;
                                        PWMA_CCR3L = PWM_Value;
                                }
                        }
                        else    //启动
                                {
                                        if(rotate==1 )
                                        {                                                
                                                //PWM_Value = 40;       
                                                adc11 = ((adc11 *7)>>3) + PWM_Value+200;//Get_ADC10bitResult(11);//ADC11输出数据                                                                  
                                          
                                        }       //直接用数据代替,就直接启动,数值要Get_ADC10bitResult(11)=200 以上
                                       
                                }                  
                                j = adc11;
                                if(j != adc11)       
                                        j = adc11;
                                PWW_Set = (u8)(j >> 5);        //油门是8位的
                后附视频

zwf33335 发表于 2024-11-4 18:10:41

本帖最后由 zwf33335 于 2024-11-4 18:11 编辑

梁工您好!这是三相无刷无感直流风机视频机调速程序部分视频

zwf33335 发表于 2024-11-4 20:05:34

21cnxin 发表于 2023-4-15 17:18
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=2051&extra=

冲哥淘宝店, 有售套件,亲们自己 ...

冲哥你好,能否把你的编码器调速程序分享一下,谢谢

hande5 发表于 2024-11-5 09:13:29

学习

zwf33335 发表于 2024-11-6 21:12:27

梁工你好!
      我按您开源的电路和程序做的三相无刷无感直流风机已经做好了,转速很高,但就是启动时,方向总是不固定,有时顺时针启动,有时逆时针启动,怎么回事啊?请指导如何调整参数

zwf33335 发表于 2024-11-6 21:13:39

梁工你好!
      我按您开源的电路和程序做的三相无刷无感直流风机已经做好了,转速很高,但就是启动时,方向总是不固定,有时顺时针启动,有时逆时针启动,怎么回事啊?请指导如何调整参数。附视频

梁工 发表于 2024-11-7 00:47:41

zwf33335 发表于 2024-11-6 21:13
梁工你好!
      我按您开源的电路和程序做的三相无刷无感直流风机已经做好了,转速很高,但就是启动 ...

没有你的实物测试,我不知道原因。

zwf33335 发表于 2024-11-7 03:12:50

{:cry:}{:cry:}{:cry:}

QQ624353765 发表于 2024-11-11 15:37:03

小刺猬 发表于 2024-7-23 16:38
梁工,六步换相代码里500nS延时是有什么作用?

死区时间

ackye 发表于 2024-11-12 15:12:40

梁工 我遇到了很诡异的问题
高速下没大问题,但是低速情况下启动后有概率 电机振动厉害 但是能转起来(感觉像是驱动相和当前电机的相是错位的,但是电机被强制推动了),有时候运行着运行着 就突然卡到正确的相里就正常工作了
页: 42 43 44 45 46 47 48 49 50 51 [52] 53 54 55 56 57 58 59 60 61
查看完整版本: BLDC三相无刷直流电机驱动-8H系列/32G系列-无HALL, 12万转, 视频讲解,改进启动算法