TB6612FNG直流电机驱动
定义:
TB6612FNG是一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机。
TB6612FNG每通道输出最高1.2 A的连续驱动电流,启动峰值电流达2A/3.2 A(连续脉冲/单脉冲);
4种电机控制模式:
正转/反转/制动/停止;PWM支持频率高达100 kHz;
功能引脚图:
**
逻辑真值表
使用说明:
TB6612FNG的主要引脚功能:AINl/AIN2、BIN1/BIN2、PWMA/PWMB为控制信号输入端;
:这里的几个引脚接stm32开发板上的GPIO口
即将GPIO口初始化为输出,并通过定时器输出两路pwm接到6612上。
AO1/A02、B01/B02为2路电机控制输出端;
;:A,B两路分别控制两个直流电机
STBY为正常工作/待机状态控制引脚;
VM(4.5~15 V)和VCC(2.7~5.5 V)分别为电机驱动电压输入和逻辑电平输入端。
:VM引脚接12v直流电源,VCC接stm32板上的VCC。
**
实物图
基于上述内容,我画了一个计算机电机单元控制图,如下:
**
软件实现部分
接下来就开始着手连接Stm32与TB6612模块:
首先我们需要完成软件上的支持,即控制stm32输出pwm信号与驱动电机信号。我用的是keil5来编写程序。
通过查阅资料,pwm信号可以通过GPIOB端口的pb6和pb7输出,因此我选择了用GPIOB口做为输出。用pb1,pb2,pb3,pb4做为控制电机驱动信号。以下是代码实现:
void tim4_pwm_init(u16 arr,u16 psc)
{ RCC->APB1ENR |= 1<<2; //时钟复位TIM4TIM4->CR1=0x0080; //ARPE 使能,Timx_ARR寄存器被装入缓冲器TIM4->CR1|=0x01; //使能定时器 4RCC->APB2ENR |= 1<<3; //时钟使能GPIOB 由电路图知GPIO6和TIM4的通道一复用 GPIOB->CRL&=0X00F00000;GPIOB->CRL|=0XBB033333; //pb6 7复用功能输出 PB6输出ch1,pb7输出ch2TIM4->ARR = arr; //设置计数器自动重装载值TIM4->PSC = psc; //预分频器设计TIM4->CCMR1 =0X6060; //配置Tim4输入捕获模式TIM4->CCMR1|=1<<3; //CH1 预装载使能 TIM4->CCMR1|=1<<11; //CH 2 预装载使能TIM4->CCER |=1<<0; //OC1 输出使能 TIM4->CCER |=1<<4; //OC2 输出使能}
这里用到的寄存器全部可以在stm32中文手册里查到。
将GPIOB口和TIM4定时器配置完后,然后写了电机的驱动函数,如下:
```void go(int pwmnum)
{GPIOB->ODR&=(~1<<3);//pb3GPIOB->ODR|=1<<2;//pb2GPIOB->ODR&=~(1<<1); //pb1 GPIOB->ODR|=1<<4; //pb4MOTOR_Pwm_Valu=pwmnum;MOTOR_Pwm_Valu2=pwmnum;
}
至此基本代码编写已经完成,我们只需要在主函数里调用go()函数,用过改变pwmnum的值就可以改变电机速度了。
#include "sys.h"
#include "pwm.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"int main(void)
{ Stm32_Clock_Init(9);//系统时钟设置delay_init(72); //延时初始化uart_init(72,9600); //串口初始化 LED_Init(); //初始化与LED连接的硬件接口tim4_pwm_init(899,0);KEY_Init();LED0=0; //点亮LEDwhile(1){go(5000);//在这里改变参数值}
}
成果图
还请大佬们指出不足之处。
TB6612FNG直流电机驱动相关推荐
- 《Arduino开发实战指南:机器人卷》一3.3 直流电机驱动电路原理
本节书摘来华章计算机<Arduino开发实战指南:机器人卷>一书中的第3章 ,第3.3节,黄文恺 伍冯洁 陈 虹 编著更多章节内容可以访问云栖社区"华章计算机"公众号查 ...
- 九、51单片机之直流电机驱动
目录 1.什么是电机 2.常见电机 2.1.交流电机 2.2.交流电机补充(可跳过) 2.3.直流电机 2.4.步进电机.伺服电机 3.直流电机驱动 1.什么是电机 (1)电机的全称是电动机,把电能转 ...
- linux 直流电机驱动设计,嵌入式Linux直流电机驱动.PPT
嵌入式Linux直流电机驱动.PPT 嵌入式Linux直流电机驱动实验 开发平台中直流电机驱动的实现 S3C2410芯片自带定时器,所以控制部分省去了三角波产生电路.脉冲调制电路和PWM信号延迟及信号 ...
- 一种简单的MOS管直流电机驱动电路
如图所示,用2个PMOS和4个NMOS可以组成只需要一个控制端的直流电机驱动电路. 工作原理: 当Q6输入为低电平时,Q6的GS不导通,Q5的G级为高电平,Q5导通,所以R2左侧为低,Q1导通,Q6的 ...
- Easy EDA #学习笔记06# | L9110S H桥2路直流电机驱动板设计(附.4056 充电、过充过放保护电路设计)
一.L9110S 概述 L9110S是一块直流电机驱动电路,该产品为电池供电的玩具.低压或电池供电的控制应用提供了一种集成直流马达驱动的解决方案.电路内部集成了采用MOS管设计的H桥驱动电路,主要应用 ...
- 嵌入式课程---嵌入式Linux的直流电机驱动开发
文章目录 实验环境准备 步骤简要说明: 第一步:测试三个系统是否连通 第二步:编写并编译好驱动程序和测试驱动的程序 编写直流电机驱动程序dc_motor.c 编写驱动程序的Makefile文件 编写驱 ...
- BTS7960大功率直流电机驱动(含原理图+PCB)
BTS7960大功率直流电机驱动 [简要说明] 一.尺寸:长76mmX宽65mmX高28mm 二.主要芯片:BTS7960.lm2576 三.工作电压:控制信号直流3V至12V;驱动电机电压6V至27 ...
- L9110/HR9110(1.2A玩具单通道直流电机驱动IC)
描述 泛海微HR9110是应用于直流电机方案的单通道H桥驱动器芯片.HR9110的H桥驱动部分采用低导通电阻的PMOS和NMOS功率管.低导通电阻保证芯片低的功率损耗,使得芯片安全工作更长时间.此外H ...
- 直流电机驱动电路应用
一.在直流电机驱动电路根据实际需要选择驱动电路的类型: 1,单向的,用一个大功率的三极管或者场效应管或者继电器就可以了 2,需要调速的,用PWM控制 3,双向的,用H桥电路驱动 这里着重介绍H桥驱动电 ...
最新文章
- # NVIDIA Jetson系列系统镜像备份烧录指南
- 解决网站搬家windows下解压图片文件名乱码问题的利器:Bandizip
- 如何从代码层面优化系统性能
- Highcharts X轴名称太长,如何设置下面这种样式
- RedOffice教你DIY环保小日历
- Leetcode题库 172.阶乘后的零(C实现)
- Conversations
- 安卓学习-界面-View的自定义
- 「深入浅出」主流前端框架更新批处理方式
- 基于Spring安全角色的访问授权示例
- ImageMagick---import(截图)
- linux安装yum报错Unable to locate package yum
- OpenCV基础——IplImage中的widthStep
- 大华存储服务器系统,大华重磅推出64盘位网络视频存储服务器
- HDLBITS 练习 卡诺图化简部分
- 计算机感染病毒正确处理方法,【安徽新华】计算机感染了病毒解决方法
- Cura切片3d打印设置
- python3通过request多进程获取驾校一点通试题库
- pycharm运行tensorflow报错
- sis、sisx文件解压 SISWare