调试平衡小车过程中间遇到的问题

news/2024/11/24 2:06:06/

目录

定时器函数执行周期跟定时时间不一致?

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,所以,小车继续运动,在运动过程中,小车速度的积分刚好跟我们输入的这个速度积分期望即位置抵消了。


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

相关文章

Arduino平衡小车

Arduino平衡小车 1.概述 此Arduino平衡小车在主控方面由Arduino UNO R3和Arduino sensor shield v5.0传感器扩展板组成。采用TB6612FNG作为电源和电机之间的中介给带编码器的直流电机供电以及传送PWM信号。采用六轴MPU6050进行角度采集并传给Arduino由Arduino计算角度偏差以及…

乘法器介绍

阵列乘法器 实现乘法的比较常用的方法是类似与手工计算乘法的方式: 对应的硬件结构就是阵列乘法器(array multiplier)它有三个功能:产生部分积,累加部分积和最终相加。 阵列乘法器的关键路径为(下图标出了两条可能的关…

小希的数表

题目描述 【问题描述】 Gardon 昨天给小希布置了一道作业&#xff0c;即根据一张由不超过 5000 的 N(3<N<100)个正整数组成的数表两两相加得到 N*(N-1)/2 个和&#xff0c;然后再将它们排序。例如&#xff0c;如果数表里含有四个数 1&#xff0c;3&#xff0c;4&#x…

小希的迷宫

小希的迷宫 上次Gardon的迷宫城堡小希玩了很久&#xff08;见Problem B&#xff09;&#xff0c;现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样&#xff0c;首先她认为所有的通道都应该是双向连通的&#xff0c;就是说如果有一个通道连通了房间A和B&#…

小希的

小希的迷宫-杭电地址 小希的迷宫Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 65877 Accepted Submission(s): 20676 problem Description 上次Gardon的迷宫城堡小希玩了很久&#xff08;见Problem B&#xff09;…

小希的新工作

【问题描述】 小希最近找到了大公司的客户经理的新工作&#xff0c;每天工作时间为 L 分钟&#xff0c;他主要为 n 个固定的高端客人服务&#xff0c;第 i 个客人会在第 ti 分钟到来&#xff0c;他需要为其服务 li 分钟&#xff0c;在此期间不会有其他客人到来。 他喜欢在工作的…

小希练打字

实验八 字符串—小希练打字 【问题描述】 小希打字太慢了&#xff0c;因此他在苦练打字技巧。他用了一个教学 App&#xff0c;可以一个个显示自己打出来的英文单词。 当小希输入一个词时&#xff0c;他需要花0.2 秒输入第一个字母。而对于接下来的每个字母&#xff0c;如果在标…

小希与火车

【问题描述】 春节期间小希计划乘坐火车去旅行。开始时&#xff0c;火车位于位置1&#xff0c;目的地在位置L。火车的速度是1单位长度/分钟&#xff08;也就是第1分钟火车在位置1&#xff0c;第2分钟在位置2&#xff0c;等等&#xff09;。中国人过年都喜欢挂灯笼&#xff0c;在…