一起玩儿平衡车(ESP32)——03 一边接线一边测试

news/2025/2/12 20:16:24/

摘要:本文介绍平衡车的接线与测试

在上一篇已经介绍了各个组件的固定位置以及接线方法,本文将对接线过程做一个详细的介绍,讲解其中的要点以及注意事项,确保整个接线工作可以顺利完成。

如果你是有经验的老手,可以保证可以顺利的完成接线工作,那么可以跳过本文,直接看下边的文章。否则,还是建议你,跟着我的步骤,一步一步的来完成接线工作,边接线,边测试,确保每一步的接线都是正确的。

首先就是电池保护模块的安装,安装方法在前面已经介绍过了,需要注意的是,这个模块在接好后,并不是立刻就有电压输出,而是需要使用充电器激活一下才可以向外放电。激活的办法是先将电池放入电池盒,然后给电池盒的正负极接到充电器的正负极或者8.4V电压的两端,给电池做一下充电的操作,很短的几秒钟就可以了,充放电保护模块就会被激活了,这时在电池盒的两端就有电压输出了。每次取出电池再放回去后,都需要做这样的工作,否则电池盒没有电压输出。

第二步是连接电池盒与LM2596S之间的连线,就是电池盒的2根输出线,连接到LM2596S的输入端,需要注意的是两根线的极性不要接反了,电池盒的正极要LM2596S模块的IN+端,电池盒的负极要接到LM2596S的IN-端。导线接好后,先用万用表测试一下看看有没有短路的地方,以及确认连接牢靠之后,就可以打开电池盒的电源了,然后调节LM2596S模块上的电位器,使LM2595两个输出引脚OUT+和OUT-的电压为6v。

第三步是用LM2596S给AMS1117供电,也就是将LM2596S的OUT+、OUT-分别与AMS1117稳压模块的VIN、GND相连,确保连接牢固且无短路之后,可以打开电池盒的开关,然后用万用表测量AMS1117模块的输出引脚VOUT和GND之间的电压是否为3.3V。在确认电压没有问题之后,可以进行下一步。

第四步是将电机与TB6612FNG相连接,将AO1、AO2与左电机的两个电源线相连,BO1、BO2与右电机的两个电源线相连,在这里不用考虑电机的哪个线接引脚1、哪个线接引脚2的问题,因为最后可以通过软件的调整来改变电机转动的方向。在这里,随便的接就好了。关键的是要确保AO1和AO2接一个电机、BO1和BO2接另一个电机。

第五步是给TB6612FNG模块连接供电,TB6612FNG模块需要2路供电,一路负责给电机供电,另一路负责给逻辑控制部分供电,两者是共地的。因此需要连接3根电源线。一根是把LM2596S的OUT+连接到TB6612FNG的VM,另一根是AMS1117模块的VOUT连接到TB6612FNG模块的VCC。最后是GND的连接,可以从LMS2596S的GND或者AMS1117的GND连接到TB6612FNG的GND。

第六步是将TB6612FNG的PWMA、PWMB、STBY引脚连接到一起,然后再与自身的VCC引脚相连。也就是让这三个引脚始终保持高电平。考虑到平衡车采用电池供电,如果将来想实现休眠或者低功耗运行,那么可以不将STBY引脚连接到VCC,而是连接到ESP32的GPIO引脚,由ESP32控制器来控制STBY的电平。在需要TB6612FNG驱动电机的时候,将STBY引脚设置为高电平,而在不需要驱动电机或者需要休眠的时候,则需要将STBY引脚设置为低电平。

在完成了以上所有的连接之后(确保STBY是高电平),就可以看一下TB6612FNG能否驱动电机运转了。先测试左电机,从AIN1、AIN2连接出两根导线,然后打开电池盒电源,将AIN1接VCC,AIN2接GND后,左电机应该开始转动了,AIN1接GND、AIN2接VCC后,左电机应该向相反方向转动了。右电机也要做同样的测试。如果,这左右电机都测试正常,那么恭喜你,接线的工作已经完成大半了。

第七步是将TB6612FNG模块的AIN1、AIN2、BIN1、BIN2连接到ESP32模块的空闲GPIO引脚上,可以按照上篇文章中给定的引脚连接,也可以根据自己的情况选择适当的引脚连接。这四根线接好之后,就是连接ESP32的电源线,将ESP32的3V3供电引脚和GND引脚分别与AMS1117模块的VOUT和GND相连。接下来就可以通过一个简单的程序来测试一下是否能够控制电机的正反转了。

代码如下所示:

// 默认控制引脚

#define R_IN1 25

#define R_IN2 27

#define L_IN1 32

#define L_IN2 17

void setup() {

  // put your setup code here, to run once:

  pinMode(L_IN1,OUTPUT);

  pinMode(L_IN2,OUTPUT);

  pinMode(R_IN1,OUTPUT);

  pinMode(R_IN2,OUTPUT);

}

void loop() {

  // put your main code here, to run repeatedly:

  digitalWrite(L_IN1,HIGH);

  digitalWrite(L_IN2,LOW);

  digitalWrite(R_IN1,HIGH);

  digitalWrite(R_IN2,LOW);

  delay(1000);

  digitalWrite(L_IN1,LOW);

  digitalWrite(L_IN2,HIGH);

  digitalWrite(R_IN1,LOW);

  digitalWrite(R_IN2,HIGH);

  delay(1000);

}

这个程序控制平衡小车的左、右轮同时向前转1秒钟,向后转1秒钟。如果不是同时朝一个方向转,请将左轮或者右轮的2个引脚调换一下。

最后一步就是连接MPU6050与ESP32的引脚连接到一起了,需要将MPU6050的VCC、GND分别与ESP32的3V3和GND相连接,MPU6050的SDA和SCL连接到ESP32的空闲GPIO。之后,可以使用MPU6050的示例程序测试一下MPU6050是否工作正常,关于MPU6050的测试和使用可以参照之前的文章。

如果MPU6050的测试也通过了,那么恭喜你!整个平衡车的接线和初步测试工作就完成了。接下来就是软件的开发和调试工作了。


http://www.ppmy.cn/news/1368984.html

相关文章

StarRocks实战——表设计规范与监控体系

目录 前言 一、StarRocks表设计 1.1 字段类型 1.2 分区分桶 1.2.1 分区规范 1.2.2 分桶规范 1.3 主键表 1.3.1 数据有冷热特征 1.3.2 大宽表 1.4 实际案例 1.4.1 案例一:主键表内存优化 1.4.2 案例一:Update内存超了,导致主键表导…

信息检索(七):Transformer Memory as a Differentiable Search Index

Transformer Memory as a Differentiable Search Index 摘要1. 引言2. 相关工作3. 可微搜索索引3.1 索引策略3.1.1 索引方法3.1.2 文档表示策略 3.2 用于检索的 Docids 表示3.3 训练和优化 4. 实验4.1 基线4.2 实验结果 5. 结论参考资料 原文链接:https://proceedin…

vscode+remote突然无法连接服务器以及ssh连接出问题时的排错方法

文章目录 设备描述状况描述解决方法当ssh连接出问题时的排错方法 设备描述 主机:win11,使用vscode的remote-ssh插件 服务器:阿里云的2C2GUbuntu 22.04 UFIE 状况描述 之前一直使用的是vscode的remote服务,都是能够正常连接服务…

Redis、Elasticsearch(ES)、RocketMQ和MYSql 持久化对比

在现代大数据和分布式系统中,数据持久化是一个至关重要的话题。本文将针对 Redis、Elasticsearch(ES)、 RocketMQ和MYSql 这四种常见的数据存储和消息队列系统进行持久化方面的对比分析,帮助读者更好地了解它们各自的特点和适用场…

Laravel Octane 和 Swoole 协程的使用分析

之前在工作中使用 Laravel Octane 的 concurrently 处理并发时,发现在队列和定时任务中不会触发并发效果。经过分析,作了如下猜测:队列和定时任务都属于一个独立的进程,与 Octane 服务无关,而 Octane concurrently 恰恰…

Java - 获取汉字大写首字母输出

背景 有个项目需要将一批字符串的拼音首字母输出并大写&#xff0c;写了个工具类。 实现 需要引入外部jar。 <dependency><groupId>com.belerweb</groupId><artifactId>pinyin4j</artifactId><version>2.5.1</version> </dep…

MyBatis 学习(六)之动态 SQL

目录 1 动态 SQL 介绍 2 if 标签 3 where 标签 4 set 标签 5 trim 标签 6 choose、when、otherwise 标签 7 foreach 标签 8 bind 标签 1 动态 SQL 介绍 动态 SQL 是 MyBatis 强大特性之一&#xff0c;极大的简化我们拼装 SQL 的操作。MyBatis 的动态 SQL 是基于 OGNL 的…