你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32 PWM控制直流电机问题

[复制链接]
鲜花绽放的色泽 提问时间:2016-6-24 14:14 /


        if (PWM_duty_left>0)                                                //电机1正转
        {         zz();
            if(PWM_duty_left>300) {PWM_duty_left=300;}
        TIM_SetCompare1(TIM3,PWM_duty_left+0);                //tm3 ch1
                              

        }
        else                                                                           //电机1反转
        {        
            if(PWM_duty_left<-300) PWM_duty_left=-300;        
                    PWM_duty_left=-PWM_duty_left;
                        fz();           
                TIM_SetCompare1(TIM3,PWM_duty_left+0);
        }
        if (PWM_duty_right>0)                                           //电机2正转
        {
            if(PWM_duty_right >300) PWM_duty_right =300;
                 zz();
            TIM_SetCompare2(TIM3,PWM_duty_right-0);
   
        }
        else                                                                                 //电机2反转
        {
            if(PWM_duty_right <-300) PWM_duty_right = -300;
                PWM_duty_right=-PWM_duty_right;
                fz();
            TIM_SetCompare2(TIM3,PWM_duty_right-0);
        }        
}
   这个是平衡小车的两个电机控制程序,其中语句 TIM_SetCompare1(TIM3,PWM_duty_left+0);和TIM_SetCompare2(TIM3,PWM_duty_right-0); 就能实现电机的正反控制,这是为什么?按这个语句的说法就是用TIM3的通道1 2 这个两个口来控制的电机的,但是我就搞不明白了 控制电机不是有IN 1-4吗  IN12控制一个电机 IN1和IN2的PWM差别越大不是速度越快吗?这样的话应该用四个通道(口)来控制两个电机,而他只用了两个通道(口)。顺便传个附件。




自 (蓝牙) 4(好用).zip

下载

6.4 MB, 下载次数: 270, 下载积分: ST金币 -1

收藏 评论6 发布时间:2016-6-24 14:14

举报

6个回答
irvn 回答时间:2017-8-18 09:12:56
应该是用另外的IO控制方向,zz()和fz()应该有写。硬件上也许用了逻辑门。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

gujiamao 回答时间:2017-8-18 09:22:54
我映像中是电机驱动芯片有个IO是控制方向的,比如置0正传,置1是反转;
编码器通过AB相哪个在前判断方向;

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

zhjb1 回答时间:2017-8-18 10:29:39
实际上不知道硬件电路,只看软件代码只能估计。如果是单路控制那么应该是硬件上有反向PWM输出实现全桥,否则像开关量控制电机效率较低。控制方向应该有专门的IO口或电路或有编码器就够了,控制方向就知道正反、编码器也可以得到方向。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

无薪税绵 回答时间:2017-8-18 12:48:27
楼主你要看看 zz() 和 fz() 这两个函数,
里面应该是控制另外两个通道的。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

努力的人 回答时间:2017-8-20 09:00:23
一般平衡车驱动都是用IR2104,这个一路PWM输入就会输出2路互补带死区的PWM波,这样就可以驱动H桥了,从而驱动直流电机

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

五哥1 回答时间:2017-8-21 07:56:45
不错不错收藏了

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版