STM32Cubemx TB6612直流电机驱动

news2025/1/11 10:15:33

一、TB6612FNG

TB6612是一个支持双电机的驱动模块,支持PWM调速。PWMA、AIN1、AIN2 为一组控制引脚,PWMA 为 PWM 速度控制引脚,AIN1、AIN2 为方向控制引脚;PWMB、BIN1、BIN2 为一组控制引脚,PWMB 为 PWM 速度控制引脚,BIN1、BIN2 为方向控制引脚。

PA4 --> BIN1
PA5 --> BIN2
PA6 --> AIN2
PA7 --> AIN1
TIM2_CH2(PA1) --> PWMA
TIM2_CH3(PA2) --> PWMB

驱动电机的 PWM 频率一般 10kHz(0.0001ms)左右,72MHZ/72/100=72000000/7200=10000HZ=10KHZ

二、CUbeMX配置

SYS

RCC

 时钟树

GPIO配置

 定时器配置

生成工程

 生成代码

三、Keil代码

添加PWM电机驱动代码

/* USER CODE BEGIN 0 */
void motorControlL(uint8_t direction, uint16_t speed) {//左电机驱动
  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3);
    /* 根据方向设置 IN1 和 IN2 引脚 */
    HAL_GPIO_WritePin(GPIOA, BIN1_Pin, (direction & 0x01));
    HAL_GPIO_WritePin(GPIOA, BIN2_Pin, ((direction & 0x01) ^ 0x01));

    /* 设置 PWM 引脚以控制速度 */
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, speed);
}
void motorControlR(uint8_t direction, uint16_t speed) {//右电机驱动
		 HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);
    /* 根据方向设置 AIN1 和 IN2 引脚 */
    HAL_GPIO_WritePin(GPIOA, AIN2_Pin, (direction & 0x01));
    HAL_GPIO_WritePin(GPIOA, AIN1_Pin, ((direction & 0x01) ^ 0x01));

    /* 设置 PWM 引脚以控制速度 */
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_2, speed);
}
/* USER CODE END 0 */

 while循环中红外光电逻辑判断

/* USER CODE BEGIN WHILE */
  while (1)
  {		
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)== 1 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)== 1 ){ 
			motorControlL(1, 300); //第一个参数 0反向转  1正向转  第二个参数控制小车速度
			motorControlR(1, 300);
		}
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)==0 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)==0){
			motorControlL(0, 0); 
			motorControlR(0, 0);
		}
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)==0 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)==1){
			motorControlL(1, 180); 
			motorControlR(1, 300);
		}
		if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_8)==1 && HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9)==0){
			motorControlL(1, 300); 
			motorControlR(1, 180);
		}

    /* USER CODE END WHILE */

效果

car

 

链接: https://pan.baidu.com/s/1xOMmcG4KKbLN1cJ1ZK-zaQ?pwd=3h3k 提取码: 3h3k 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1464756.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一种基于动态水位值的Flink调度优化算法(flink1.5以前),等同于实现flink的Credit-based反压原理

优化flink反压 说明1 flink反压介绍1.1 介绍1.2 大数据系统反压现状1.4 flink task与task之间的反压1.5 netty水位机制作用分析 2 反压优化算法3 重点! 但是 可但是 flink1.5以后的反压过程。4 flink反压问题的查找瓶颈办法 说明 首先说明,偶然看了个论…

短剧小程序系统,重塑视频观看体验的科技革命

随着科技的飞速发展,人们对于数字化内容的消费需求也在不断增长。在这个大背景下,短剧小程序作为一种新型的视频观看方式,正逐渐受到大众的青睐。本文将探讨短剧小程序的发展背景、特点以及市场前景,分析其在重塑视频观看体验方面…

哪个牌子的护眼台灯比较好用?纯干货护眼台灯品牌推荐

有些家长陪孩子写作业的时候发现他们总是在揉眼睛,学习时间久了还会用力眨眼睛。其实无论是白天还是晚上,孩子在家学习,看书,搭积木等,如果灯光不给力,一定要用台灯来给孩子补光,避免因为光线环…

Linux系列讲解 —— 【Vim编辑器】在Ubuntu18.04中安装新版Vim

平时用的电脑系统是Ubuntu18.04,使用apt安装VIM的默认版本是8.0。如果想要安装新版的Vim编辑器,只能下载Vim源码后进行编译安装。 目录 1. 下载Vim源码2. 编译3. 安装4. 遇到的问题4.1 打开vim后,文本开头有乱码现象。4.2 在Vim编辑器中&…

测试环境搭建整套大数据系统(三:搭建集群zookeeper,hdfs,mapreduce,yarn,hive)

一:搭建zk https://blog.csdn.net/weixin_43446246/article/details/123327143 二:搭建hadoop,yarn,mapreduce。 1. 安装hadoop。 sudo tar -zxvf hadoop-3.2.4.tar.gz -C /opt2. 修改java配置路径。 cd /opt/hadoop-3.2.4/etc…

【Spring】SpringBoot 热部署

目 录 一.添加热部署框架支持二.Settings 开启项目自动编译三.设置运行项目中的热部署( idea 2021.2版本)四.使用 debug 方式运行项目代码示例&#xff1a; 一.添加热部署框架支持 <dependency><groupId>org.springframework.boot</groupId><artifactId&…

适合中国人体质的低成本创业项目,抖音小店抓住小钱到大钱的之路

大家好&#xff0c;我是电商花花。 人啊&#xff0c;这一辈子想要赚钱&#xff0c;想要脱贫致富&#xff0c;小钱靠勤&#xff0c;中财靠运&#xff0c;大富靠命。 我还依稀记得母亲说的一句话&#xff0c;小钱不勤不聚&#xff0c;还谈何赚大钱&#xff0c;所有的大钱也都是…

Unity3d Mesh篇(二)— 创建Unity Logo平面

文章目录 前言一、Mesh组成二、使用步骤GetVertices方法GetNormal方法GetTriangles方法OnDrawGizmos方法 三、效果四、总结 前言 本篇将使用C#脚本实现在Unity中创建平面&#xff0c;并通过调整顶点、UV坐标和三角形来生成Unity Logo 的效果。 一、Mesh组成 顶点&#xff08;…

了解红帽认证,看这篇就够了!

红帽公司成立于1993年&#xff0c;是全球首家收入超10亿美元的开源公司&#xff0c;总部位于美国&#xff0c;分支机构遍布全球。 红帽公司作为全球领先的开源和Linux系统提供商&#xff0c;其产品已被业界广泛认可并使用&#xff0c;尤其是RHEL系统在业内拥有超高的Linux系统…

css3d制作正方体

使用css3d技术 &#xff0c;制作一个可以动态动画的正方体模型 效果图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html> <head><style>/* 设置高度宽度100%并且左右居中、上下居中 */html,body {width: 100%;height: 100%;display: flex…

C#串口 Modbus通讯工具类

一、安装Modbus包 二、创建modbushelper类 1、打开串口 public bool IfCOMOpend; //用于实例内的COM口的状态 public SerialPort OpenedCOM;//用于手动输入的COM转成SERIAL PORT /// <summary> /// 打开串口 /// </summary> /// <param name="COMname&quo…

2-22算法习题总结

贪心问题 凌乱的yyy / 线段覆盖 题目背景 快 noip 了&#xff0c;yyy 很紧张&#xff01; 题目描述 现在各大 oj 上有 n n n 个比赛&#xff0c;每个比赛的开始、结束的时间点是知道的。 yyy 认为&#xff0c;参加越多的比赛&#xff0c;noip 就能考的越好&#xff08;假…

Day04-课后练习以及参考答案(流程控制语句_循环结构)

文章目录 巩固题1、5个一行输出1-100之间的偶数2、趣味折纸3、实现输出如下任一个数字三角形4、计算这一天是这一年的第几天 拔高题1、计算这一天是这一年的第几天2、计算这一天是在打鱼还是晒网3、打印『X』对称图形4、打印空心菱形 巩固题 1、5个一行输出1-100之间的偶数 &…

【更新】ARCGIS之成片区开发方案报备坐标txt格式批量导出工具(定制开发版)

序言 之前开发的成片区开发方案报备格式是按湖北省的标准定制的&#xff0c;目前&#xff0c;自然资源部又有了新的格式要求&#xff0c;现在新增国标版的成片区开发方案报备格式导出。 之前版本软件详见&#xff1a;软件介绍 一、软件简介 本软件是基于arcgis二次开发的工具&…

YOLOv9 | 利用YOLOv9训练自己的数据集 -> 推理、验证(源码解读 + 手撕结构图)

一、本文介绍 本文给大家带来的是全新的SOTA模型YOLOv9的基础使用教程&#xff0c;需要注意的是YOLOv9发布时间为2024年2月21日&#xff0c;截至最近的日期也没有过去几天&#xff0c;从其实验结果上来看&#xff0c;其效果无论是精度和参数量都要大于过去的一些实时检测模型&…

C++力扣题目 392--判断子序列 115--不同的子序列 583--两个字符串的删除操作 72--编辑操作

392.判断子序列 力扣题目链接(opens new window) 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;&quo…

中科大计网学习记录笔记(十三):UDP 套接字编程 | 传输层概述和传输层的服务

前言&#xff1a; 学习视频&#xff1a;中科大郑烇、杨坚全套《计算机网络&#xff08;自顶向下方法 第7版&#xff0c;James F.Kurose&#xff0c;Keith W.Ross&#xff09;》课程 该视频是B站非常著名的计网学习视频&#xff0c;但相信很多朋友和我一样在听完前面的部分发现信…

LangChain支持哔哩哔哩视频总结

是基于LangChain框架下的开发&#xff0c;所以最开始请先 pip install Langchain pip install bilibili-api-python 技术要点&#xff1a; 使用Langchain框架自带的Document loaders 修改BiliBiliLoader的源码&#xff0c;自带的并不支持当前b站的视频加载 源码文件修改&a…

Microsoft的PromptBench可以做啥?

目录 PromptBench简介 PromptBench的快速模型性能评估 PromptBench数据集介绍 PromptBench模型介绍 PromptBench模型加载遇到的问题 第一次在M1 Mac上加载模型 vicuna和llama系列模型 PromptBench各个模型加载情况总结 PromptBench的Prompt快速工程 chain of thought…

【Qt学习】QLineEdit 控件 属性与实例(登录界面,验证密码,正则表达式)

文章目录 1. 介绍2. 实例使用2.1 登录界面2.2 对比两次密码是否相同2.3 通过按钮显示当前输入的密码&#xff08;并对2.2进行优化&#xff09;2.4 结语 3. 正则表达式3.1 QRegExp3.2 验证输入内容 4. 资源代码 1. 介绍 关于 QLineEdit 的详细介绍&#xff0c;可以去查阅官方文…