调试平衡小车过程中间遇到的问题
目录
定时器函数执行周期跟定时时间不一致?
drv8833这款驱动器可以制作平衡小车用吗?
电机编码器AB相无输出?
平衡小车的角度标定一定要准确
平衡小车前进后退的控制逻辑是什么?
定时器函数执行周期跟定时时间不一致?
定时器中断给的是5ms的中断时间,如下图:
结果在每个中断函数执行开始的程序里加上打印时间戳的语句,发现中断函数执行两次之间的时间差在50ms左右,这很明显使得平衡小车无法工作,但是是 什么原因呢?
是因为算力比较弱,所以进行计算的时候占用了时间吗?把源程序也上传上去(计算量一样),看看源程序是不是也是这样?
可以看到,源程序一样的计算量,但是人家中断函数是严格5ms执行一次的,也就是说不是算力的原因。
接着做实验,在源程序里面,中断函数的起始和结束都打印时间,然后发现周期就不正常了。
中断函数两次执行之间隔了9秒左右,程序头和末尾之间隔了2-4ms不等。这是什么情况呢?
难道串口输出对中断函数有影响吗?
然后,再把中断函数末尾的时间打印给删掉,又一切正常了。
怀疑:要么是串口打印函数影响了中断函数执行周期,要么是原本中断函数执行周期虽然是5ms,但是中断函数可能没执行到底,这个假设应该不成立,因为如果没执行到底,那么电机驱动函数就不会执行,小车就会跌倒?是这样吗?也不一定,因为这次的没执行到底,那么上次的pwm也可以用。先做实验看看吧。
然后,我又这样做了个实验,发现没有中断函数的时候,只是在loop函数里面打印时间戳,也是非常耗时的,周期在25ms左右。不知道时间都用在了哪里?
少打印一个时间戳,多打印一个字符,这样再看一下,周期是25ms左右,周期基本没变化。
怀疑是串口波特率太低,所以影响程序比较慢,所以我把波特率从9600调整到115200,然后再看这个程序,周期变成了2ms,就非常快了。那么也就证明了,如果波特率太低,就会严重影响程序运行速度,那么具体是如何影响的呢?
drv8833这款驱动器可以制作平衡小车用吗?
我买的平衡小车是用的tb6612fng这款直流电机驱动器,但是我自己做的小车驱动器是drv8833.
他们之间价格相差有十倍之多,TB6612fng这款驱动器售价现在在三十多块钱,而drv8833只有3块钱就能买到。
我买的平衡小车,我是想把他的驱动器从TB6612fng换成drv8833,然后看平衡小车是否还能正常工作,如果是依然可以正常工作,那么就说明这个驱动器是没问题的,可以用于制作平衡小车。如果不行的话,可能就是说drv8833这个驱动器的性能不行,制作平衡小车可能有些问题。
原先的引脚表
现在的引脚表
电机编码器AB相无输出?
在淘宝上购买的这种电机,有时候会遇到编码器的AB相没有电平变化的情况,这个时候一般是电机编码器只支持5V电源供电,但是我们提供的电源电压是3V。所以编码器没有正常工作。
平衡小车的角度标定一定要准确
平衡小车的角度标定一定要标定准确,否则调PID怎么也调不好的。
比如说平衡小车的平衡点是传感器角度为-1.5度,那么我们如果不进行标定,直接把0度作为小车的平衡点,这个就是不合适的,这样单纯调pid也是调不好的。因为平衡点是我们控制的期望值,如果期望不对,那么肯定达不到控制效果。
平衡小车前进后退的控制逻辑是什么?
通过阅读代码,我们可以看到,小车的前进和后退,是直接在小车速度环的积分上加或者减一个数来实现的。 从而改变了平衡小车的位置,达到前进和后退的效果。那么速度环的积分项就不为0,岂不是说速度环一直都有一个输出?
我们加上或者减去的这个数字, 其实是位置的一个期望,通过增加一个位置的期望,使得速度环有了输出,但是小车的速度环期望是0,所以为了使得速度环调整为0,所以小车运动越来越慢,运动过程中,速度的积分刚好与一开始我们加的积分相抵消,绝对值慢慢减小为0,使得小车的速度为0,但位置趋于我们的期望。
也就是说小车速度的期望是0,为了使小车速度为0,所以,小车继续运动,在运动过程中,小车速度的积分刚好跟我们输入的这个速度积分期望即位置抵消了。
调试平衡小车过程中间遇到的问题相关推荐
- 直立车各环的调试_平衡小车调试指南(直立环 速度环)
平衡小车之家出品 1 平衡小车调试指南 接下来将和大家一起以工程的思想去完成一个平衡小车的调试, 包括平衡小 车的直立环.速度环.转向环,一般我们是先调试直立环,再调试速度环,最好 调试转向环.另外需 ...
- 直立车各环的调试_平衡小车调试指南 直立环 速度环
平衡小车之家出品 1 平衡小车调试指南 接下来将和大家一起以工程的思想去完成一个平衡小车的调试, 包括平衡小 车的直立环.速度环.转向环,一般我们是先调试直立环,再调试速度环,最好 调试转向环.另外需 ...
- 我们用ESP32-Wrover-Kit做自平衡小车犯过的坑
我们用ESP32-Wrover-Kit做自平衡小车犯过的坑 关于ESP32(Wrover-Kit)本身的一些tips 关于智能(自平衡)小车的一些tips 因为一门叫做"智能系统设计&quo ...
- 基于stm32的两轮自平衡小车4(软件调试篇)
本篇是软件调试篇,接上一篇硬件篇:基于stm32的两轮自平衡小车3(硬件篇),本篇内容是对硬件部分的软件实现,具体模块详见目录.这里先上效果:转B站 目录 定时器PWM驱动程序 定时器编码器模式驱动程 ...
- 简单平衡小车制作过程中遇到的问题
本人最近做了一个平衡小车,过程中遇到不少问题,在这里总结一下,可能也会帮助到大家 文章目录 前言 一.嫖资料,找教程 二.小车结构 三.电子元件的组装 四.写程序时(改嫖到的程序)遇到的问题 总结 前 ...
- 平衡小车制作系列之三——stm32软件调试
文章目录 前言 一. STM32F103RCT6最小系统板 1.1 STlink程序烧录 1.1.1 模式选择 1.2 烧录功能测试 1.2 点亮一个LED灯 1.3 测试OLED 1.4 测试PWM ...
- Arduino平衡小车
Arduino平衡小车 1.概述 此Arduino平衡小车在主控方面由Arduino UNO R3和Arduino sensor shield v5.0传感器扩展板组成.采用TB6612FNG作为电源 ...
- 平衡小车PID,就该这么调!!!
上一篇文章:看完这篇文章,还不会做平衡小车,你来打我. 描述了平衡小车的制作过程,也开源了一部分设计资料. 在上篇文章留言中,有朋友说: 安排,必须安排! 1.PID 关于PID的概念,网上相关的帖子 ...
- 基于STM32-F401的平衡小车
目录 一.控制系统设计 1.1机械结构设计 1.2传感系统设计 1.3执行器设计 1.4控制算法设计 二.控制系统的制作与调试 2.1机械结构的制作与调试 2.2电路系统的制作与调试 2.3控制程序的 ...
最新文章
- 报名 | 第三期医工结合系列研讨会:科研领域的知识产权保护
- 【学无止境】ajax长循环,反向ajax初体会,不用ws实现即时聊天
- 学习前端html 设置样式
- ubuntu sendmail安装和使用具体实现[转]
- 【51Nod - 1094】和为k的连续区间 (前缀和,二分查找)
- 怎么做批注_BIM平台是什么?有何用?怎么用?
- 设计模式之:深入浅出 java 单例模式(Singleton)
- ajax的嵌套需要注意的问题
- 【C/C++】通过无类型指针实现泛型拷贝(内存拷贝)
- 树莓派装Aria2和YAAW实现无人值守远程离线下载服务
- html字间距怎么缩小,word字间距怎么缩小
- 夕四今晚加班到2点30,而王二还不打算走《打工人的那些事》
- 丢手帕问题 java_java基于双向环形链表解决丢手帕问题的方法示例
- 极验滑块验证码破解与研究(二):缺口图片还原
- Unified Batch All Triplet Loss for Visible-Infrared Person Re-identification
- 武汉烽火通信软件工程师-Android面试经历
- MySQL密码修改不成功_Mysql 修改密码不成功(不生效)的解决办法
- 【解决】GitHub 客户端下载后安装在哪里?
- java+web+股票图表_基于Echarts的股票K线图展示
- http://www.55zm.com/a/20120702/38037.html