极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: wujingyu

低成本、低档自平衡小车历程(超声自平衡小车)

  [复制链接]
发表于 2015-1-31 09:29:19 | 显示全部楼层
请问你用的测速传感器是哪一种呢
回复 支持 反对

使用道具 举报

发表于 2015-1-31 10:28:42 | 显示全部楼层
D2S为外部中断0的接线选择我还是没看懂,亲可以解释一下嘛
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-31 13:44:48 | 显示全部楼层
简单侣图 发表于 2015-1-31 09:29
请问你用的测速传感器是哪一种呢

测速传感器用的就是一圈20个脉冲的码盘
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-1-31 13:47:22 | 显示全部楼层
简单侣图 发表于 2015-1-31 10:28
D2S为外部中断0的接线选择我还是没看懂,亲可以解释一下嘛

这个选择适合两种方案,一个是用6050的DMP功能,这时的外部中断0接6050模块;另一个方案是不用6050的DMP功能,这样就可将这个中断资源用于另一个轮子的测速码盘
回复 支持 反对

使用道具 举报

发表于 2015-1-31 15:40:36 | 显示全部楼层
wujingyu 发表于 2015-1-31 13:44
测速传感器用的就是一圈20个脉冲的码盘

我意思是传感器是哪一种类型的,不是码盘
回复 支持 反对

使用道具 举报

发表于 2015-2-2 11:38:50 | 显示全部楼层
收藏一下。。

以前用工仿照乐高的用地面灰度做的平衡车。
回复 支持 反对

使用道具 举报

发表于 2015-2-11 19:38:18 | 显示全部楼层
通过测速传感器检测左右电机的脉冲数目差如何换算成速度差呢
回复 支持 反对

使用道具 举报

发表于 2015-2-11 19:38:34 | 显示全部楼层
通过测速传感器检测左右电机的脉冲数目差如何换算成速度差呢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-11 19:52:06 | 显示全部楼层
简单侣图 发表于 2015-2-11 19:38
通过测速传感器检测左右电机的脉冲数目差如何换算成速度差呢

diff_speeds = count_left - count_right;
dspeeds += diff_speeds;
dspeeds += diff_speeds;
if(dspcount > 10) {
  dspeeds_all = dspeeds;
  dspeeds = 0;
}
........
PWM_left = Output - Kdsp * dspeeds_all;
PWM_right = Output + Kdsp * dspeeds_all;

见下面这个程序源代码:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2015-2-11 20:11:13 | 显示全部楼层
本帖最后由 简单侣图 于 2015-2-11 21:45 编辑

我的启动值60左右,停止值28左右,速差如何从你的测试程序里得出来呢,想不懂,可以解释一下嘛?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-11 20:34:35 | 显示全部楼层
简单侣图 发表于 2015-2-11 20:11
启动值和停止值应该就是就差1左右吧,速差如何从你的测试程序里得出来呢,想不懂,可以解释一下嘛?

你说的启动值和停止值是指电机的吗?每个电机是不一样的,负荷不同时也有差异。
    diff_speeds = count_left - count_right; //左电机码盘计数值 - 右电机码盘计数值
    dspeeds += diff_speeds;                       //必须将这个差值累加,因为TT马达的码盘只有20个孔,每次的差很小,几乎为零
    if(dspcount > 15) {                               //譬如累加15次,这个参数你可以将dspeeds_all通过输出观察速度差
      dspeeds_all = dspeeds;                       //看看是否能够明显的检测出速度差来,不合适就调整这个“次数”
      dspeeds = 0;
    }
回复 支持 反对

使用道具 举报

发表于 2015-2-11 22:14:29 | 显示全部楼层
wujingyu 发表于 2015-2-11 20:34
你说的启动值和停止值是指电机的吗?每个电机是不一样的,负荷不同时也有差异。
    diff_speeds = coun ...

我指的是电机,今晚用你给的WJY_DIY_test测试过了,不知道这程序中怎么得知你说的速度差而已,现在你说的这个程序我再看看吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-2-12 08:29:39 | 显示全部楼层
简单侣图 发表于 2015-2-11 22:14
我指的是电机,今晚用你给的WJY_DIY_test测试过了,不知道这程序中怎么得知你说的速度差而已,现在你说的 ...

WJY_DIY_test 这个程序仅用来测试电机的一个大概启动和停止值的。
关于平衡车的速度差是在运行过程中实时测量,并要加以修正的,这个速度差就是要通过测速传感器(配合码盘)来加以检测的。造成速度差的原因不仅是电机本身的差异,还涉及到小车运行地面环境的不断改变,譬如两轮与地面的阻力,某个轮子碰到微小的障碍物都会造成两轮的速度差。
回复 支持 反对

使用道具 举报

发表于 2015-2-12 16:29:29 | 显示全部楼层
wujingyu 发表于 2015-2-12 08:29
WJY_DIY_test 这个程序仅用来测试电机的一个大概启动和停止值的。
关于平衡车的速度差是在运行过程中实时 ...

嗯嗯,了解,我调试的时候注意下吧
回复 支持 反对

使用道具 举报

发表于 2015-2-13 18:43:08 | 显示全部楼层
float Angle0 = -13.3; //机械平衡角这个是怎么调的?是固定值吗?,我的小车就调了KP为20,其他为0,就是一直往后跑,不知道怎么解决。和MPU6050位置有关吗?需要怎么放比较稳定
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-27 15:33 , Processed in 0.045364 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表