搜索
查看: 6064|回复: 6

[求助] 关于STM32 PWM控制直流电机问题

[复制链接]

该用户从未签到

2

主题

3

帖子

0

蝴蝶豆

初级会员

最后登录
2019-8-12
发表于 2016-6-24 14:14:46 | 显示全部楼层 |阅读模式


        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, 下载次数: 271, 下载积分: ST金币 -1

回复

使用道具 举报

该用户从未签到

0

主题

9

帖子

0

蝴蝶豆

中级会员

最后登录
2018-5-16
发表于 2017-8-18 09:12:56 | 显示全部楼层
应该是用另外的IO控制方向,zz()和fz()应该有写。硬件上也许用了逻辑门。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

6

主题

170

帖子

0

蝴蝶豆

高级会员

最后登录
2019-9-18
发表于 2017-8-18 09:22:54 | 显示全部楼层
我映像中是电机驱动芯片有个IO是控制方向的,比如置0正传,置1是反转;
编码器通过AB相哪个在前判断方向;

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

82

主题

718

帖子

121

蝴蝶豆

版主

最后登录
2021-1-2
发表于 2017-8-18 10:29:39 | 显示全部楼层
实际上不知道硬件电路,只看软件代码只能估计。如果是单路控制那么应该是硬件上有反向PWM输出实现全桥,否则像开关量控制电机效率较低。控制方向应该有专门的IO口或电路或有编码器就够了,控制方向就知道正反、编码器也可以得到方向。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2189

帖子

397

蝴蝶豆

论坛元老

最后登录
2021-12-8
发表于 2017-8-18 12:48:27 | 显示全部楼层
楼主你要看看 zz() 和 fz() 这两个函数,
里面应该是控制另外两个通道的。

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

21

主题

379

帖子

158

蝴蝶豆

版主

最后登录
2020-9-21
发表于 2017-8-20 09:00:23 来自手机 | 显示全部楼层
一般平衡车驱动都是用IR2104,这个一路PWM输入就会输出2路互补带死区的PWM波,这样就可以驱动H桥了,从而驱动直流电机

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

19

主题

1734

帖子

7

蝴蝶豆

论坛元老

最后登录
2021-5-10
发表于 2017-8-21 07:56:45 | 显示全部楼层
不错不错收藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 07:52 , Processed in 1.209662 second(s), 51 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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