Cubemx编写串级PID减速电机驱动。

TB6612使用

VM:12V电池电压输入,给电机供电

VCC:单片机5V,给单片机供电

STBY:一直用5V连接上去,才能正常工作

PWMA:3.3V的IO口,控制两个INPUT

PWMB:3.3V的IO口,控制两个OUTPUT

AIN1和AIN2:一个输入PWM一个输入低电平。(具体是哪个根据你要的正转反转设置)控制A电机

BIN1和BIN2:一个输入PWM一个输入低电平。(具体是哪个根据你要的正转反转设置)控制B电机


一共4个INPUT:AIN1和AIN2,BIN1和BIN2电机控制模式输入

一共4个OUTPUT:AO1和AO2,BO1和BO2电机驱动输出

两种控制电机方法。本篇使用第二种
1.可以使用一个PWM输入PWM控制,两个INPUT输入高低电平。
2.给PWM接入3.3V,两个INPUT输入PWM控制电机。

 三极管高电平时导通。既Q1,Q2,Q3,Q4为1时各个三极管才能导通。

注意:Q1,Q2或者Q3,Q4这两组都是不能同时为1导通的会产生短路

 我设置ENABLE始终为1。(接3.3V的高电平)

通过控制IN1和IN2来控制电机。并给它两个PWM高低电平调整转速。

可以自己分别给IN1和IN2值0或1来。自行走一遍电路就能看出。(IN1和IN2接了一个非门和一个与门)

Q1:1   Q4:1电机右转
Q3:1   Q2:1电机左转

以上是L298N或者TB6612控制一个电机的原理。

(这两个驱动模块可以控制2个电机,两个H桥 )


 CubeMx开发:

以开发板RCT6为例

定时器

1.用两个定时器获取编码器脉冲,使用Time3Time8(设置触发为上升沿下降沿都触发)如下

 

2.用两个定时器输出PWM,使用Time2的通道3通道4和Time4的通道3通道4.(因为要是输入IN1IN2所以每个定时器两个通道,因为两个电机所以两个定时器)

注:如果遇到与UART等冲突,可以用右下角搜索,找到复用引脚。

参数设置:预分频值,周期,自动使能设置。(都进行-1是因为从0开始计数)

 解释:主频72M,   72M/72=  1M/hz     1s内有1M/hz 的节拍,每个单位1微秒,1x1000=1毫秒。 现在计数器会从0计数到1000再回到0(既从低电平到高电平,再到高电平)。这样我们可以假如设置比较值为500,那么就是一半高电平一半电平。(假如正常输入是12V,那么现在就是6V).

 

3.最后再用两个定时器作为基础定时器Time6Time7,并打开设置优先级,优先级高的设置为1,低的为3

TIme7(设置20毫秒一个周期)

72000000➗7200➗200=50        1➗50=0.02    既20毫秒 

TIme7(设置1秒的中断)

72000000➗7200➗10000=1

 优先级

 

 

以上学习参考http://t.csdn.cn/KaZrq博主文章内容。在此感谢作者大大的开源分分享。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值