简单平衡小车制作过程中遇到的问题

2023-05-16

本人最近做了一个平衡小车,过程中遇到不少问题,在这里总结一下,可能也会帮助到大家

 

文章目录

  • 前言
  • 一、嫖资料,找教程
  • 二、小车结构
  • 三、电子元件的组装
  • 四、写程序时(改嫖到的程序)遇到的问题
  • 总结


前言

          我的平衡车只是起平衡作用,那些循迹呀、遥控呀都没弄


提示:以下是本篇文章正文内容,下面案例可供参考

一、嫖资料、找教程

          平衡小车要学习PID算法、编码器、oled、mpu6050、tb6612当然最主要的时mpu6050和pid算法。我在微信上看到这样一篇文章非常非常有帮助,可以说我就是按着这篇文章做的平衡车。(大家可以微信关注公众号“果果小师弟”搜索“零基础一周完成平衡小车项目”查看这篇文章真的是满满的干货)pid算法的视频在腾讯视频app搜索“pid经典”可以搜到,特别经典,画质一般但是讲的特别好,我称之为最强(当然作者才疏学浅,没见过啥世面,嘿嘿)

        b站平衡小车的up主“天下行走ㅍ_ㅍ”讲的非常完美,保姆级教程,大家可以参考下。关于mpu6050的是,我是先看的正点原子的又看的野火的最后看的小马哥的(小马哥在“摩尔吧”这个网站里面)我觉得小马哥关于mpu6050的视频讲的较好一些,还有一些编码器、tb6612的知识在csdn上读的文章,不难,很好理解。

二、小车结构

        板子是作者自己焊的(要照着b站Up主的原理图焊,否则会出很大的麻烦,我就是随心所欲的焊的,结果改了很长时间),用了三个18650的3.7v电池来给tb6612和stm32供电(千万注意给stm32供电要接一个降压模块,我开始的时候直接用的一个电池给单片机3.3v供电,然后板子炸了,后来才知道电池充满电的电压是4点几伏,要是用电池给5v供电,怕供电不足,干脆一个降压模块下去全都解决了,降为5v之后给单片机和两个编码器供电,然后用单片机的3.3v给其他元件供电)三个电池大概是10v-11v左右,我给这个线接tb6612的时候加了个开关,可能是供电问题,如果不加开关,打开总开关后oled屏总是不亮,我怀疑是初始化总是不成功电池直接给两个器件供电,有点困难。我等oled屏亮了之后再打开接vm的开关,就十分完美。

        大家注意小车的结构重心要低,控制起来效果才好,我的小车开始时中心太高了总是调不好pid 后来我给他加了块石头,铜柱的距离也缩短了,调起参数来就好一点了。

三、电子元件的组装

        组装没啥好说的,如果自己焊的板子,焊的时候一定要仔细仔细再仔细,一个飞线飞错板子可能就会炸裂,建议焊板时给蓝牙留出一个位置来,可能以后突发奇想做个蓝牙遥控呢(本来在这已经弄完了,结果一个Ctrl+z,把我编辑的都取消了,害,再来一遍把,)

四、写程序时(改嫖到的程序)遇到的问题

        1、注意mpu6050的摆放位置不要太奇葩,我的就是和up主(天下行走ㅍ_ㅍ)的不一样,结果调参调了好久才发现,摆放位置不同,需要更改函数,对于我的程序,是把这个

Vertical_out=Vertical(Med_Angle,Pitch,gyroy);				//直立环

改为了

Vertical_out=Vertical(Med_Angle,Roll,gyrox);				//直立环

 起初时只是改了角度,没有改角速度(也就是把gyroy改为gyrox)调参调了好久都不行

        2、还遇到了,把程序下载到stm32里程序不能执行,但是软件调试一会后就可以正常运行了,原来是这个Use MicroLIB不小心给去了,这个一定要勾上,好像是和汇编语言转c语言有关,野火的初级篇视频有讲,我也没注意,反正一定要勾。

 


        3、还有就是up主的mpu6050的触发方式是外部中断,我也不知道怎么回事,我的外部中断总是不能触发(程序一模一样),我就给改成定时器3的定时器中断,5ms一次(因为dmp计算最少时间是5ms,小马哥视频里有讲,不过有的大神1ms一次,咱也无法解释)

        4、看的有的视频教程讲,dmp初始化一次可能不成功于是我加了个循环

while(mpu_dmp_init()!=0)
  {
	  PCout(13)=1;
		for(i=0;i<200;i++){}
		PCout(13)=0;
		for(i=0;i<200;i++){}
	
	}

如果不成功的话,灯就一直闪。(不同板子,灯的引脚可能不一样)

        5、两个轮子的极性特别特别重要,是调pid的基础,一定要把极性确定明白了,在后面注释上,再去调pid,(别问我是怎么知道的,调了一周都不对,回头才发现极性弄错了)。 

        6、调pid时按照up主的视频调,不要跳,极性!极性!极性!很重要。

        7、我把up主的程序从stm32c8t6移植到stm32rct6上后dmp初始化总是不成功,不知道为什么,(移植过程就时把芯片型号改一改把容量改了,晶振改成72兆,别的没动,是不是我移植的不对呢?欢迎大家给给建议)

        8、最近想弄弄蓝牙,但是总是无法通信,然后才发现没有对中断优先级分组、串口初始化(我真是个小可爱(大sb)),希望大家不要碰到和我一样的问题。

 希望可以帮到大家

总结

本人才疏学浅,刚刚接触32单片机,以上可能有不对的地方,希望大家不要责怪,我会虚心接受建议和批评,欢迎大家一起讨论问题。

最后附上几张我的平衡车照片吧,嘻嘻

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单平衡小车制作过程中遇到的问题 的相关文章

  • linux opendir(打开目录函数) readdir(读取目录函数) closedir(关闭目录函数)

    Linux下opendir readdir 和closedir 这三个函数主要用来遍历目录 在使用这三个函数前必须先包括以下两个头文件 xff1a include lt sys types h gt include lt dirent h
  • Cmakelists.txt 的基本框架

    执行 cmake 表示在当前目录下执行 cmake cmake 表示在前一级目录下执行 cmake make 在当前目录下执行 make 语法 1 设置 cmake 版本需求 cmake minimum required VERSION 2
  • UartAssist - 串口调试助手。

    由于项目需要用到串口 xff0c 所以我就找到一个简单易上手的串口调试助手 串口调试助手 1 助手界面 xff1a 2 设置串口 xff0c 点击 打开 3 设置发送区和接收区参数 4 输入发送内容 xff0c 点击 发送 即可
  • 网络摄像机rtsp地址详解。

    RTSP xff08 Real Time Streaming Protocol xff09 xff0c RFC2326 xff0c 实时流传输协议 xff0c 是TCP IP协议体系中的一个应用层协议 xff0c 由哥伦比亚大学 网景和Re
  • Qt 登陆界面实现

    简单的QT用户登录界面 一 项目描述 在登录界面输入用户名和密码正确之后才进入欢迎界面 用户名 xff1a xiaoxian 密码 xff1a 1240 二 效果图 三 源代码 loginform span class token punc
  • FFMPEG保存视频流数据至本地(rtsp转mp4)

    将rtsp流中的h264视频流在没解码之前获取下来 xff0c 并保存到本地文件mp4中的h264流中 xff0c h264 gt mp4 网络摄像机rtsp地址详解 流程图 xff1a 源码 xff1a span class token
  • Qt + FFmpeg实现播放器(FFmpeg可以解码的格式基本都可以播放)。

    一 开发环境的准备 Linux下移植ffmpeg开源库 二 代码实现播放功能 1 打开音视频流并获取音视频流信息 xff1b 2 查找视频流位置以及查找并打开视频解码器 xff1b 3 视频解码的同时处理图片像素数据 xff1b 4 最后要
  • SecureCRT 下的串口不能输入指令。

    1 在 SecureCRT 下的串口不能输入指令 解决方法 xff1a Session Options gt Connection gt Serial gt Flow Control xff0c 将原先默认选中的 RTS CTS取消掉即可
  • Qt实现简单密码登陆界面

    效果图 xff1a 代码实现 span class token macro property span class token directive hash span span class token directive keyword i
  • error: ‘uint8_t’,‘uint32_t’ does not name a type

    c 43 43 里用了c的代码 xff0c 确切的说 xff0c 是引用了c写的x264 h xff0c 结果报错了 xff1a 解决方法 xff1a span class token macro property span class t
  • gitlab 同时拉取整个项目

    一 xff1a 下载repo工具包 下载地址 xff1a GitHub NeutionWei repo unzip repo 刚下载的repo包解压 xff0c 其中的repo只是一个几百行的脚本 xff0c 需要repo init才可以获
  • CMakeLists.txt详解

    一 xff1a CMakeLists txt文件是cmake用来生成Makefile文件需要的一个描述编译链接的规则文件 学习cmake需要提前了解gcc等编译命令 xff0c 先来解释一条最简单的命令 gcc source c o bin
  • opencv估计两图的三维坐标变换矩阵

    cv estimateAffine3D MatFrom MatTo Transfrom inlier Transform得到的是重MatFrom到MatTo的变换矩阵 inlier给一个空矩阵就可以 MatFrom和MatTo都是点的矩阵
  • shell脚本详解

    通俗来讲shell脚本就是把shell命令放在一个 脚本 中 xff0c 脚本的第一行 xff01 bin bash 意思为这个脚本指定一款在 bin 下名叫bash的shell解释器 xff0c 来解释接下来的任何命令 xff0c 如果我
  • 车载以太网测试规范tc8下载地址

    网上只要搜到下载就要积分 xff0c VIP xff0c 其实他们也是从别处免费下载的 xff0c 拿到别处骗钱 xff0c 话不多说下载地址如下 xff1a Open Alliance 不用谢 xff01
  • ARP包解析及工作原理

    ARP数据包42字节 参照以下例子 xff1a 前12字节为以太网的目的地址 54 89 98 0f 2b be 和源地址 54 89 98 5b 5b 8a xff0c 当目的地址全为1时是以太网广播地址 xff0c 此时ARP还未建立缓
  • Jetson Xavier NX刷机安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(英伟达官方源安装,理论适用其它Jetson设备)

    一 准备工作 硬件 xff1a Jetson Xavier NX开发板 xff08 笔者购入为带128g内存条的EMMC版 xff09 跳线帽 xff08 杜邦线 xff09 microUSB转USB数据线 电源线 软件 xff1a Ubu
  • Hadoop伪分布搭建完整步骤

    1 新建虚拟机配置网络并测试网络连接 1 鼠标单击左侧虚拟机名称 xff0c 接着单击菜单栏 编辑 xff0c 在下拉菜单中选择 虚拟网络适配器 xff0c 如图 1 2 20 所示 4 在打开的 虚拟网络编辑器 对话框 xff0c 单击
  • linux--top命令查看系统所有详情

    Linux系统可以通过top 命令查看系统的CPU 内存 运行时间 交换分区 执行的线程等信息 通过top命令可以有效的发现系统的缺陷出在哪里 是内存不够 CPU处理能力不够 IO读写过高 一 top命令的第一行 top 19 56 47
  • OPENMV巡线

    将openmv图片划分成三个ROI区域 import sensor image time lcd from pyb import UART from pyb import LED ROIS 61 0 0 160 40 0 6 0 40 16

随机推荐

  • C++学习笔记

    一 一些重要的常见知识点 1 函数的分文件编写 xff1a h的头文件 xff08 写函数声明 xff09 cpp的源文件 xff08 写函数功能实现 xff09 2 空指针和野指针 xff1a 0 255的内存是系统所占有的 96 int
  • 使用XTDrone遇到的问题的解决

    在使用XTDrone时 xff0c 遇到了px4包找不到的问题 xff1a RLException mavros posix sitl launch is neither a launch file in package 使用官方配置文档h
  • 树莓派书籍全方位推荐

    相关书籍 python编程篇1 Python硬件开发树莓派从入门到实践 内容简介作者简介 2 Python树莓派开发从入门到精通内容简介编辑推荐 3 树莓派Python编程入门与实战书籍简介 4 树莓派Python编程指南内容简介作者简介
  • 总结几个比较常用的数学公式(新手入门)

    合理的公式可以帮助我们优化代码 xff0c 比如可以减少遍历的次数 xff0c 减少思考的难度 xff0c 提高算法效率 xff0c 此文章将持续更新 一 换底公式 Logab 61 logxb logxa 换底公式虽然不常用 xff0c
  • 【Linux/C/C++】面试题总结

    1 static关键字的作用 答 xff1a 在C语言中 xff0c 局部变量不会在诞生时被编译器自动初始化 xff0c 且生命周期终止于该变量所在的函数结束时 通过使用static关键字修饰局部变量 xff0c 可以使编译器自动为其赋初始
  • 匿名上位机V7与stm32通信协议

    一 xff0c 通信介绍 1 通信帧格式介绍 为了适应多种数据类型的传输 xff0c 保证高效的通信效率 xff0c 所有数据的通信 xff0c 均需要遵守本通信帧格式 本格式在 确保通信高效 源码简单 可移植性高的基础上 xff0c 实现
  • 酒店管理系统( JAVA)

    最近在学JAVA的数组学完之后做了一个简易的酒店管理系统 xff0c 酒店管理系统应该包含三部分 xff0c 第一部分是我们酒店管理系统的主题 xff0c 第二部分是我们酒店里的信息 xff0c 第三部分则是我们的房间信息 xff0c 具体
  • Ubuntu20.04下使用Qt5.15.2编译qgc源码

    下载QGC源码 可以在QGC官网按照教程根据自己的需求来下载源码QGC git clone recursive j8 https github com mavlink qgroundcontrol git git submodule upd
  • #ROS通讯机制:参数服务器

    参数服务器修改小海龟背景色 1 进入工作空间的src目录新建工作包 lzw08 64 ubuntu span class token operator span span class token operator span cd ros w
  • 9.19 GoogLeNet

    GoogLeNet GoogLeNet在2014年ImageNet图像识别挑战赛中大放异彩虽然NiN现在基本上没有被使用了 xff0c 但是GoogLeNet现在还是大量地被使用GoogLeNet是第一次做到快100层卷积层 xff08 第
  • react路由参数传递

    react路由的三种传参方式 1 向路由组件传递params参数 参数传递 在注册路由时接收参数 注意这里后面时冒号在前面的 在要展示的组件内接收params参数 2 第二种 xff0c 利用search传递参数 向路由组件传递参数 这种方
  • 链队列(详解)--->数据结构、C++实现

    问题引入 在数据结构中 xff0c 队列也是一种重要的线性结构 xff0c 常和栈放在一起进行学习 队列分为多种类型 xff0c 常见的如循环队列 链队列等 xff0c 如果此时此刻你对 链队列 感到困惑 xff0c 那就继续看下去 xff
  • Windows11正版下载和Windows10正版下载安装教程

    Windows11正版下载和Windows10正版下载 下载链接 xff1a https www microsoft com zh cn software download windows11 Windows11下载官网连接 https w
  • 2022-03-30 VsCode中使用clangd插件的各种设置

    最近尝试clang编译c 43 43 xff0c 所以用了clangd插件代替mscpp插件 xff0c 其中有不少问题 xff0c 都是通过各种搜索 xff0c 各种猜 xff0c 才能完善 xff0c 记录一下 xff0c 以便广大同仁
  • [Ubuntu]安装ifconfig

    apt install net tools
  • python3对接微信小程序蓝牙

    39 39 39 Created on 2019年10月15日 64 author lg 39 39 39 from Crypto Cipher import AES from binascii import b2a hex a2b hex
  • docker--Dockerfile操作指令

    docker Dockerfile操作指令 文章目录 docker Dockerfile操作指令一 FROM指令1 基本概述2 用法3 说明4 关于FROM scratch 二 RUN指令1 基本概述2 用法3 说明 三 ENV指令1 基本
  • 【监控】k8s部署prometheus + grafana

    k8s以Deployment方式部署prometheus 43 grafana xff1a 主机说明 xff1a 系统ip角色cpu内存hostnameCentOS 7 8192 168 30 128master gt 61 2 gt 61
  • 多线程以及在PYQT中的使用

    1 多线程 简单来说就是可以用多线程同时执行多个程序 在python中 xff0c 我们用的是 threading库 这个库包含了线程的方法和其他配套方法 xff08 比如锁 xff09 似乎 concurrent库会更方便更安全 xff0
  • 简单平衡小车制作过程中遇到的问题

    本人最近做了一个平衡小车 xff0c 过程中遇到不少问题 xff0c 在这里总结一下 xff0c 可能也会帮助到大家 文章目录 前言一 嫖资料 xff0c 找教程二 小车结构三 电子元件的组装四 写程序时 xff08 改嫖到的程序 xff0