智能平衡移动机器人-平台硬件电路

news2024/11/19 1:28:27

目录

硬件电路主要模块包括:

主控制器

TMS320F28069数字信号处理器

电池

电机驱动电路

直流电机的驱动

 编码器

传感器与外设模块

APP


为了使智能平衡移动机器人达到更好的平衡控制效果,机器人的本体设计更为轻便、集中。机器人的硬件电路也进行集中化设计,整个机器人本体使用一块控制底板Forest S1,使其功能外设都能通过这块控制底板引出,这样大大地提升了整车的集成度和控制的灵巧性。移动机器人控制底板Forest S1的原理图与安装示意图分别如右图所示。

硬件电路主要模块包括:

主控制器电路(包含了仿真电路)负责运行控制程序以及实现控制信号的输出与外部电平信号的采集,电源管理电路将锂电池的电压转换到主芯片、驱动芯片及其他传感器合适的工作电压,电机驱动电路驱动电机运行,传感器电路用于自身姿态和周围环境信息的采集以及其他拓展接口电路。

主控制器

主要包括了仿真电路与主控芯片电路,使得主控制板在脱离其他模块的时候也能够独立进行仿真与程序的运行,所有需要的功能引脚通过Forest S1主控板的引脚引出,主控制板的独立设计使得移动机器人的元器件集成度更高,便于机器人移动时的平衡控制,其主控制板电路结构如右图所示。

TMS320F28069数字信号处理器

通常在实时数字信号处理中,高层处理算法的特点是所处理的数据量相比较低层算法的数据量少,但算法结构复杂,可以使用运算速度快、寻址方式灵活、通信机制强大的DSP芯片来实现。由于智能平衡式机器人本身结构上具有的不稳定性,要求姿态检测与相关控制量的计算能够达到一定的频率来实现更稳定的控制,为了实现更好的控制效率控制器采用德州仪器C2000系列DSP控制芯片TMS320F28069数字信号处理器,作为一种高效率32 位浮点CPU,其独特拥有的eQEP功能即正交解码单元使得读取编码器信号变得简单,使得电机的速度与位置信号能够被准确采集,其余外设功能丰富,具体特性如下所示。

由于系统较为复杂,各模块供电电压也有所区别,需要利用电源模块来实现各部分硬件电路的不同电压供给,因此电源模块中包含多个电压转化电路。供电电池采用移动电源(充电宝)的原理简单,在外部电源供应的场合预先为内置的电池充电,即输入电能,并以化学能形式预先存储起来,当需要即由电池提供能量及产生电能,以电压转换器达至所需电压,电量约为 10000mAh 满电压约为 5.0V,使用 XL2596S 将 12V 转化为 5V,使用 TLV1117LV33 将 5V 转化为 3.3V 用于主控板供电及其他电路的外接设备供电。

电池

选用锂电池作为外部电源,因为锂电池没有记忆效应,充放电的次数较多,能量密度大,安全性较高,充放电性能也更好。锂电池或锂离子聚合物电池不管以重量计算或以体积计算,能量密度都是最高的。此外,锂电池或锂离子聚合物电池在充电及放电过程中的效率也较高。但是锂电池过充或过放很容易使电池永久损坏,所以需要有较精密的电子线路控制其充放电。而且锂电池会在高温下会自燃,安全及稳定性极为重要,需要提供可靠的安全保护电路防止任何导致超温的情况出现。 锂电池有硬的外壳,锂离子聚合物电池则没有,所以锂电池理论上会轻微略重,而锂离子聚合物电池由于没有硬壳,便于制成特定尺寸以配合外观,但锂离子聚合物电池在充满电后体积会略为膨胀变大,需要在设计时预留空间,免得电池内压力过大而造成危险。

电机驱动电路

电池电压由电阻分压,在AD0处采集到的电压为实际电池电压的1/11,将采样值代入式进行计算(本文中ADC采样精度为 12 位)。 Battery_Voltage=Get_Battery×3.3×11/4096       再根据判断标准对测得的电量变量 Battery_Voltage 进行判断,当电量低于阈值时,设置蜂鸣器工作从而实现电量不足的报警。

直流电机的驱动

结合有刷直流电机的原理,小车采用的是TI公司的DRV8833系列的有刷直流电机驱动芯片。DRV8833电机驱动芯片有两个全桥电路可以同时驱动两个直流无刷电机,其一个简单的PWM接口便可以方便地对控制器电路进行接口。 本实验设置DRV8833工作在PWM输入模式,其原理图如下图所示:

 编码器

DSP28069有两路eQEP模块,每个模块有2个引脚,分别是:QEPA和QEPB。这两个引脚被使用在正交时钟模式或者直接计数模式。         本实验采用EQEP1和EQEP2模块获取左右轮编码器正交信息。其中EQEP1的QEP1A和QEP1B引脚分别连接到电机编码器1的A相和B相,EQEP2的QEP2A和QEP2B引脚分别连接到电机编码器2的A相和B相。本实验的原理图如下:

传感器与外设模块

为了完成小车的直立控制需要测量小车的倾角和角速度。而InvenSense公司推出的MPU6050就集成了三轴加速度计,可以通过IIC接口同时输出三个方向上的加速度信号,同时MPU6050里面也集成了三轴陀螺仪,可以同时输出三个方向的陀螺仪信号,同时MPU6050内部也置入了一个温度传感器。MPU6050是全球首例9轴运动处理传感器。它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。

APP

实验是基于平衡控制进阶实验为基础,利用美国 TI 公司 CC2541 芯片的蓝牙模块实现手机与平衡车的通信,进而实现手机控制平衡车的功能。如下图所示。该 CC2541 蓝牙模块主要用于短距离的数据无线传输领域,可以方便的和 PC 机的蓝牙设备相连,也可以两个模块之间的数据互通,避免繁琐的线缆连接,能直接替代串口线。

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

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

相关文章

课设实验-数据结构-单链表-文教文化用品品牌

题目&#xff1a; 代码&#xff1a; 正解&#xff1a; #include<stdio.h> #include<stdlib.h> #include<string.h> #define MaxSize 10 //定义顺序表最大长度static int result; //字符串比较结果 static int i; //循环初始值 static bool flag; //记录结…

Typora使用与Markdown语法详细教程

Typora 基本介绍 Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器。Markdown 是一种 轻量级标记语言&#xff0c;它允许人们使用易读易写的纯文本格式编写文档&#xff0c;然后转换成有效的 XHTML&#xff08;或者 HTML&#xff09;文档。 安装 下载地址&#xff…

C语言 getchar 函数完全解析:掌握字符输入的关键

前言 在C语言中&#xff0c;getchar 是一个非常实用的函数&#xff0c;用于从标准输入流&#xff08;通常是键盘&#xff09;读取单个字符。这对于处理文本输入非常有用&#xff0c;尤其是在需要逐个字符处理的情况下。本文将深入探讨 getchar 函数的用法和特点&#xff0c;并…

开放式耳机是什么意思?哪个品牌好?开放式蓝牙耳机测评分享

开放式耳机是目前比较流行的一种蓝牙耳机类型&#xff0c;它凭借佩戴舒适、安全性高、透气性好以及健康卫生等等特点成为了很多人的耳机选择。但其实并没有太多人了解开放式耳机&#xff0c;不知道什么是开放式耳机、开放式耳机是否比封闭式耳机强、什么样的人适合开放式耳机以…

Optiver股票大赛Top2开源!

Optiver股票大赛Top2开源&#xff01; ↑↑↑关注后"星标"kaggle竞赛宝典 作者&#xff1a;杰少 Optiver第二名方案解读 简介 Optiver竞赛已经于今天结束了&#xff0c;竞赛也出现了极端情况&#xff0c;中间断崖式的情况&#xff0c;在Kaggle过往的竞赛中&#…

【电路基础 · 1】电路模型和电路定律(自用)

总览 1.电路和电路模型 2.电流和电压参考方向 3.电功率和能量 4.电路元件 5.电阻元件 6.电压源和电流源 7.受控电源 8.基尔霍夫定律 重点&#xff1a; 1.电压、电流的参考方向 2.电阻元件、电源元件的特性 3.基尔霍夫定律&#xff08;基尔霍夫电流定律KCL、基尔霍夫电压定律K…

【办公类-48-03】20240930每月电子屏台账汇总成docx-3(三园区合并EXCLE,批量生成3份word)

背景需求&#xff1a; 前期电子屏汇总是“总园”用“”问卷星”、“一分园”用“腾讯文档”&#xff0c;二分园“用“手写word”” 【办公类-48-02】20240407每月电子屏台账汇总成docx-2&#xff08;腾讯文档xlsx导入docx&#xff0c;每页20条&#xff09;【办公类-48-02】20…

C语言 | Leetcode C语言题解之题451题根据字符出现频率排序

题目&#xff1a; 题解&#xff1a; #define HASH_FIND_CHAR(head, findint, out) HASH_FIND(hh, head, findint, sizeof(char), out) #define HASH_ADD_CHAR(head, intfield, add) HASH_ADD(hh, head, intfield, sizeof(char), add)struct HashTable {char key;int val;UT_ha…

基于小程序+Vue + Spring Boot的进销存库存出库入库统计分析管理系统

目录 一、项目背景及需求分析 1. 项目背景 2. 需求分析 二、系统架构设计 1. 技术选型 2. 模块划分 三、数据库设计数据库表结构 四、前端实现 五、后端实现 1. RESTful API设计 2. 数据库操作 六、安全性和性能优化 1. 安全性 2. 性能优化 七、测试与部署 1. …

Unity之寻找子物体的8种方式

废话不多说&#xff0c;举个例子&#xff1a; 当前的transform是Cube1物体&#xff0c;所以。。。。 寻找子物体的方式有以下几个&#xff1a; 1.transform.Find("go2/go3") 好处&#xff1a;可以快速通过路径定位对应的子物体&#xff0c;甚至是子子子物体。 2.t…

UG NX二次开发(C++)-建模-采用NXOpen获取拉伸特征的信息

文章目录 1、前言2、创建一个特征3 采用NXOpen来实现拉伸特征信息的获取1、前言 UG NX二次开发过程中,大部分初学者喜欢用UFun函数来实现UG NX二次开发的功能,因为相较于NXOpen,UFun函数简单易懂;但是有时UFun函数如果初始值设置不好,出现的错误也比较难排查。比如对于拉…

L4 KNN 算法

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 KNN 算法用于约会数据集分类 在这周中&#xff0c;学习如何使用 K 近邻&#xff08;K-Nearest Neighbors, KNN&#xff09;算法对一个约会数据集进行分类。KN…

SpringGateway(网关)微服务

一.启动nacos 1.查看linux的nacos是否启动 docker ps2.查看是否安装了nacos 前面是你的版本&#xff0c;后面的names是你自己的&#xff0c;我们下面要启动的就是这里的名字。 docker ps -a3.启动nacos并查看是否启动成功 二.创建网关项目 1.创建idea的maven项目 2.向pom.x…

路由器WAN口和LAN口的区别

一.路由器WAN口和LAN口的区别简单来说&#xff1a;LAN口输出&#xff08;内网&#xff09;&#xff0c;WAN口输入&#xff08;互联网&#xff09;&#xff0c;接线方法"光猫网口"——>"路由器WAN口"&#xff0c;"路由器LAN口"——>"打…

SD-WebUI forge支持flux模型。算力互联forge镜像使用教程

SD-WebUI Forge运行截图&#xff1a; 以下为教程&#xff1a; 启动SD 首先要选择使用我的镜像创建容器实例 1.进入Jupyter 2.双击打开左边main.ipynb&#xff0c;打开脚本 3.选中运行的代码&#xff0c;点击上面的运行符号 4.出现7860端口开放&#xff0c;说明运行成功了 …

C++入门基础知识95——【关于C++ 自增自减运算符】

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于C 自增自减运算符的相关内容&#xff01…

Difference of Convex Relaxation (DC)

问题背景 minimize ⁡ m ∥ m ∥ 2 s u b j e c t t o ∥ m H h k e ∥ 2 ≥ 1 , ∀ k . \begin{aligned}&\underset{m}{\operatorname*{minimize}}\quad\|\boldsymbol{m}\|^2\\&\mathrm{subject~to}\quad\|\boldsymbol{m}^\mathsf{H}\boldsymbol{h}_k^e\|^2\geq1,\for…

Java | Leetcode Java题解之第450题删除二叉搜索树中的节点

题目&#xff1a; 题解&#xff1a; class Solution {public TreeNode deleteNode(TreeNode root, int key) {TreeNode cur root, curParent null;while (cur ! null && cur.val ! key) {curParent cur;if (cur.val > key) {cur cur.left;} else {cur cur.rig…

问题解决实录 | bash 中 tmux 颜色显示不全

点我进入博客 如下图&#xff0c;tmux 中颜色显示不全: echo $TERM输出的是 screen 但在 bash 里面输出的是 xterm-256 color 在 bash 里面输入&#xff1a; touch ~/.tmux.conf vim ~/.tmux.conf set -g default-terminal "xterm-256color"使之生效 source …

【学习笔记】手写 Tomcat 八

目录 一、NIO 1. 创建 Tomcat NIO 类 2. 启动 Tomcat 3. 测试 二、解析请求信息 三、响应数据 创建响应类 修改调用的响应类 四、完整代码 五、测试 六、总结 七、获取全部用户的功能 POJO 生成 POJO 1. 在 Dao 层定义接口 2. 获取用户数据 3. 在 Service 层定…