STM32用TB6612驱动电机(智能家居系列二)

这篇具有很好参考价值的文章主要介绍了STM32用TB6612驱动电机(智能家居系列二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        本篇文章主要讲解主控板为STM32,利用TB6612驱动来驱动电机的整个流程,看完点个赞吧!

        一、TB6612接线

PWMA---连接代码中的PB0口                                   VM------接10V以内电压

AIN2-----接代码中的PB3口                                       VCC-----接5V

AIN1-----接代码中的P7口                                         GND-----接地

STBY----连接5V                                                        A01-----连接电机1

BIN1---  接单片机I/O                                                 A02-----连接电机1

BIN2---- 接单片机I/O                                                B2------连接电机2

PWMB---接单片机PWM口                                       B1------连接电机2

GND-----接地                                                            GND----接地
 

        代码我们先放后面来讲吧,我们这里先讲如何接线的,我使用的是STM32C8T6,原理图具体看这个专栏的上一篇博客 《智能家居系列一》,这里不再附图啦。

          首先呢整个驱动需要接的口(对我使用的而言)是:PWMA ,AIN1,AIN2,STBY,VM ,VCC,A01, A02,三个GND(要与单片机共地!)

        我只使用了一个电机,所以咱们的PWA口直接接到单片机的随便一个PWM口就行,我接的是PB0口,也就是TIM3,CH3 定时器3通道3。然后AIN1,AIN2,这两个口是控制正反转的,随便接单片机的I/O口,然后进行初始化就行了,STBY口直接接5V口(STBY是使能,高电平电机才能转,低电平电机是不会转的,所以直接接电压即可),最后A01和A02接电机的两根正负线即可,接电机的正负无所谓,别把单片机接错就行啦!(如果要使用第二个电机,PWMB接PWM口,其他的照抄,只是序号变了)

STM32用TB6612驱动电机(智能家居系列二),智能家居系统,stm32,嵌入式硬件,单片机

        这是我使用的驱动

        然后我们看一下真值表,方便大家控制正反转

STM32用TB6612驱动电机(智能家居系列二),智能家居系统,stm32,嵌入式硬件,单片机

        二、STM32代码部分

MOTOR.C

#include "stm32f10x.h"
#include "MOTOR.h"
#include "sys.h" 
#include "delay.h"
void Motor_AIN(void)
 {
  GPIO_InitTypeDef GPIO_InitStructure;  
  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_7; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_ResetBits(GPIOB,GPIO_Pin_3|GPIO_Pin_7); 
 }

 
void Motor_ZHENG(void)           //风扇正转
{
 GPIO_SetBits(GPIOB,GPIO_Pin_7);
 GPIO_ResetBits(GPIOB,GPIO_Pin_3);
}


void Motor_OFF(void)           //风扇停止
{
 GPIO_ResetBits(GPIOB,GPIO_Pin_3);
 GPIO_ResetBits(GPIOB,GPIO_Pin_7);
}

MOTOR.h

#ifndef __MOTOR_H
#define __MOTOR_H	 
#include "sys.h"
		
void Motor_AIN(void);
void Motor_ZHENG(void);
void Motor_OFF(void);


#endif

time.c

#include "stm32f10x.h"
#include "stdlib.h"
#include "stm32f10x_tim.h"
#include "led.h"
#include "myiic.h"
#include "key.h"
#include "delay.h"
#include "usart.h"	 
#include "time.h"
int pwm_L,pwm_R,change_pwm,eco_counter;
float get_ang,now_ang;
u8 place_flag,choose_num1=0,choose_num2=0,cargo_num,stop_flag,go_where,Return_stopflag;
u8 MOD1=0,MOD2=0,MOD3=0,MOD4=0;

void TIM3_PWM_Init(u16 arr,u16 psc)///pwm
{
	GPIO_InitTypeDef GPIO_InitStrue;
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	TIM_OCInitTypeDef TIM_OCInitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

	GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
	GPIO_InitStrue.GPIO_Pin=GPIO_Pin_0;//PB0->CH3 
	GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStrue);
	
	TIM_TimeBaseStructure.TIM_Period = arr; 
	TIM_TimeBaseStructure.TIM_Prescaler =psc; 
	TIM_TimeBaseStructure.TIM_ClockDivision = 0; 
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); 
	
	TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;
	TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low ; 
	TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
	TIM_OC3Init(TIM3,&TIM_OCInitStructure);
	TIM_OC4Init(TIM3,&TIM_OCInitStructure);
	
	TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
	TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
	TIM_Cmd(TIM3,ENABLE);
}


time.h

#ifndef __TIME_H
#define __TIME_H	 
#include "sys.h"



extern int pwm_L,pwm_R,change_pwm;
extern float get_ang,now_ang;
extern u8 place_flag,choose_num1,choose_num2,cargo_num,MOD1,MOD2,MOD3,MOD4,stop_flag,go_where,Return_stopflag,go_where;
void Encoder_Init_TIM3(void);
int ReadLeft_Encoder(void);
int ReadRight_Encoder(void);
void TIM1_PWM_Init(u16 arr,u16 psc);
void TIM4_PWM_Init(u16 arr,u16 psc);
void TIM3_PWM_Init(u16 arr,u16 psc);		



#endif

mian.c

#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"	 
#include "time.h"
#include "myiic.h"
#include "oled.h"
#include "beep.h"
#include "SR602.h"
#include "dht11.h"
#include "MOTOR.h"
int i=0;
u8 string[30] = {0},string1[30] = {0};
 int main(void)
{	 	
		NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先
		delay_init();//延时函数初始化	
	
		TIM3_PWM_Init(999,71);//定时器3初始化
		Motor_AIN();//风扇I/O初始化
	 while(1)
	 {		    
		 		Motor_ZHENG();
				TIM_SetCompare3(TIM3,1000);//设置占空比

	 }
	}		

把这些代码加到工程里面去,电机就能转动啦,有问题欢迎大家评论区提问,谢谢大家的阅读。文章来源地址https://www.toymoban.com/news/detail-791656.html

到了这里,关于STM32用TB6612驱动电机(智能家居系列二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • K_A08_009 基于 STM32等单片机驱动TB6612模块按键控制直流电机正反转加减速启停

    目录 一、资源说明 二、基本参数         1、参数         2、引脚说明 三、驱动说明         TB6612模块驱动说明         对应程序:         ENA ENB输出PWM 四、部分代码说明         接线说明                 1、STC89C52RC+TB6612模块                 2、STM32F

    2024年02月15日
    浏览(25)
  • 一起玩儿物联网人工智能小车(ESP32)——41. 直流有刷电机驱动模块——L9110S、TB6612FNG和DRV8833简介

    摘要:本文介绍如何使用直流有刷电机驱动模块——L9110S、TB6612FNG和DRV8833 在前边很详细的介绍了直流有刷电机驱动模块L298N,该模块性能良好,输出功率大。但体积也是偏大,本篇文章介绍一下市场上另外几个常见的小型直流有刷电机驱动模块L9110S、TB6612FNG和DRV8833的使用方

    2024年02月21日
    浏览(28)
  • stm32平衡小车--(1)JGB-520减速电机+tb6612(附测试代码)

                                        这是我用的电机,红色框框中的就是 编码器 。 编码器是将信号(如比特流)或数据进行编制、转换为可用以通讯、传输和存储的信号形式的设备。编码器把角位移或直线位移转换成电信号,前者称为码盘,后者称为码尺。按照读出方

    2024年02月04日
    浏览(248)
  • STM32外设系列—TB6612FNG

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 本文涉及到定时器和串口的知识,详细内容可见博主STM32速成笔记专栏。 TB6612FNG是东芝半导体的一款驱动电机的IC。一个TB6612FNG可以驱动两个电机,每一个驱动都有两个逻辑

    2024年02月14日
    浏览(33)
  • STM32单片机PWM控制实现电机调速度(小车运动,STM32F103C8T6&TB6612&TT电机)

    作者:公子易平 时间:2023/6/6 前段时间做一个智能小车的相关项目时,发现很少有人能够将STM32的PWM控制讲清楚,故而书此文,希望对后来的学习者有所帮助。 STM32F103C8T6最小系统板 直流TT电机 电机驱动芯片(TB6612) 杜邦线若干 接线情况: TB6612引脚说明: STM32主控芯片与TB6612接

    2024年02月15日
    浏览(31)
  • 基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+

    ## **基于 STM32 的语音识别智能家居控制系统的设计(LD3320语音识别芯片+ESP8266 WIFI模块(阿里云 或ONENET或局域网)+DHT11温湿度采集+MQ系列 烟雾及可燃气体+蜂鸣器+步进电机模拟窗帘+OLED液晶显示+手机APP)** 本文采用LD3320语音识别芯片+ESP8266 WIFI模块+DHT11温湿度采集+MQ系列 烟雾及可

    2024年02月04日
    浏览(30)
  • 霍尔编码器电机与TB6612电机驱动相关学习

    简单粗暴的说下,电机-电机驱动-单片机该怎么连线。 先简单认识一下霍尔编码器电机 以上选用的平衡小车之家的,市面上基本都跟这个差不了多少。 电机线-+这两个引脚 与电机驱动相连接 来控制电机的正反转(自己的浅显理解)  编码器的AB相 连接单片机(定时器)  编

    2023年04月09日
    浏览(22)
  • DRV8833直流电机驱动模块代替 TB6612FNG电机驱动

    江科大自化协TB6612使用DRV8833代替,以及使用方法 购买了国产DRV8833模块驱动直流电机,单片机3.3V的GPIO口无法直接驱动直流电机,需要外接高电压的电源,使用驱动模块即可实现 DRV8833管脚说明以及驱动真值表 注意此处的空脚,DRV8833是没有单独的PWM接口的,从IN中的电平变化

    2024年02月11日
    浏览(31)
  • tb6612电机驱动与JGB37-520减速直流电机

    注意: TB6612中A和B各为驱动一组电机的输入端和输出端。 以下是TB6612 模块测试一个电机的接线图: VM直接接电池即可,VCC 是内部的逻辑供电,一般给3.3 或者5V 都行,模块的3 个GND 接任意一个即可,因为都是导通的,STBY置高模块才能正常工作。   完成上面的接线之后,我

    2024年02月13日
    浏览(29)
  • TB6612驱动和MG513P3012V电机

    用的是stm32f103c9t6 驱动的意义:实现将3.3v的pwm转换成更高电压比如12v的pwm,同时还可以控制pwm的极性是+12还是-12  vcc:原先的pwm电平 vm:转换后的pwm电平 pwma:输入pwm ain2,ain1:  stby:1正常工作,0待机 ao1-a02: 输出一路pwm连到电机线上,这个pwm的电压就是vm端所接的电压,比如这里就

    2024年02月02日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包