输出改变PWM时,电机一卡一卡的

2019-07-21 07:24发布

战舰3,电机驱动模块为TB6612FNG,电机为720空心杯额定电压3.7v
当我占空比(多大多小都OK)为固定的时候空心杯转得很稳
当我占空比为改变且超过1/3的占空比时,空心杯就开始一卡一卡地转动了,占空比越大一卡一卡的维持时间越长
我供给6612模块的电压是12V1A,所以我猜想会不会是占空比太大输出的电压大于空心杯的额定电压导致其一卡一卡地转动
当我把占空比降到1/5(输出电压已经蛮低的了)的时候明显有好转,但是时间一长又会开始一卡一卡了
程序为呼吸灯例程改的,频率从1k~40k都试过了,还是解决不了这个问题 三天了,很烦很迷茫

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
Xtiz
1楼-- · 2019-07-21 11:29
 精彩回答 2  元偷偷看……
Xtiz
2楼-- · 2019-07-21 16:55
定时器4的配置如下
Xtiz
3楼-- · 2019-07-21 18:24
fighter12138
4楼-- · 2019-07-21 20:46
哈哈哈,我也有过这个问题,改变占空比的时候,其实是重新配置了一下定时器,在配置的时候,系统会自动停止输出,所以占空比越来越大的时候停止输出的影响也越来越大。
更改方法,只配置一次,就可以了,改变占空比,用 TIM4->CCR1 = led0pwmval,CCR1是通道1以此类推,这样就不会重新配置定时器而改变占空比了。
Xtiz
5楼-- · 2019-07-22 00:50
fighter12138 发表于 2018-11-21 22:12
哈哈哈,我也有过这个问题,改变占空比的时候,其实是重新配置了一下定时器,在配置的时候,系统会自动停止 ...

TIM_SetCompare1(TIM4,led0pwmval);
           while(1)
        {         
                if(dir)led0pwmval+=20;
                else led0pwmval-=20;
                if(led0pwmval>450)dir=0;   
                if(led0pwmval==60)dir=1;                       
                       
                TIM4->CCR1 = led0pwmval;
                delay_ms(50);    //同一占空比维持时间
        }          
这样子吗? 可是还是一样啊,和原代码的情况差不多
Xtiz
6楼-- · 2019-07-22 05:16
 精彩回答 2  元偷偷看……

一周热门 更多>