搜索
bottom↓
回复: 460
打印 上一主题 下一主题

我的两轮自平衡车基本做完,给大伙瞧瞧~

  [复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2011-1-10 15:42:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
首先特别感谢zlstone和feng_matrix两位!!谢谢你们的指点和资料!

算法:和大家的一样,一个倾角环,一个车速环。取得角度、角速度、车速、车位移四个量后经过运算送给PWM驱动电机。
硬件:
  主控:atmega16;
  角度传感器:角速度传感器(陀螺仪)ENC-03MB(直接接AD输入,未加硬件滤波)、加速度传感器MMA7260,二者kalman融合取得角度、角速度。PS:抄zlstone的,呵呵。
  电机速度传感器:每个电机两个霍尔传感器(AB相)。
  电机:型号不清楚,很常见的减速电机。额定电压6V,功率3W。
  电机驱动:L298N
  电源:变压器整流桥那种普通电源,几块钱一个。两个,电机、MCU分开供电。电机电源电压打到最高不接电机时15V多,接了电机5V多,汗。。
  显示器:LCD1602B
  遥控:电视红外遥控器


(原文件名:20110110_0101.jpg)


(原文件名:20110110_0102.jpg)


(原文件名:20110110_0103.jpg)


(原文件名:20110110_0104.jpg)
源代码 WINAVR20100110+AVRStudio4.18ourdev_610434C8FD1C.rar(文件大小:104K) (原文件名:Balance.rar)

原理图:
atmega16最小系统版ourdev_610214M89OEI.pdf(文件大小:30K) (原文件名:M16迷你板电路图.pdf)

上位机,带波形、数据显示ourdev_610318TY8G24.rar(文件大小:48K) (原文件名:串口调试.rar)

<center>
车速未滤波之前波形 (原文件名:车速未滤波之前波形.JPG)


车速10Hz低通滤波后波形 (原文件名:车速10Hz低通滤波后波形.JPG)

视频在这里http://v.youku.com/v_show/id_XMjM1OTQ3NzU2.html

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

2
 楼主| 发表于 2011-1-10 15:54:41 | 只看该作者
现在还不是很稳,我想有两个原因,一个是参数没调到最佳,调了好久,先这样吧。再有就是电源太烂了,电机是额定6V的可实际电压空载的时候才打到5伏多一点,在平衡的时候没测,肯定更低了。

陀螺仪ENC-03是直接接AD输入端的,因为按照datasheet上边的参考电路有过冲问题,这个问题有个帖子已经讨论过,很多人都是围绕怎么补救这个问题,我来算一下为什么这样子,呵呵~如下:

高通滤波脉冲响应 (原文件名:QQ截图未命名.jpg)

因为有这个问题,会给倾角数据造成影响,所以我就去掉了滤波,直接接到AD。这样1deg/s有0.67mv,10位AD参考电压是3.36V,最小才能测到3.28mv,小于4.8deg时就测不到了。本来担心这个问题,但试了下KALMAN滤波,真是强啊!角度很精确,就这么用了。

出0入0汤圆

3
发表于 2011-1-10 15:59:12 | 只看该作者
嘿嘿,不错。有时间我把我的也传上来看看。比LZ的好看。

出0入0汤圆

4
发表于 2011-1-10 16:08:43 | 只看该作者
是有刷电机还是无刷电机?有刷的可能难调点吧,呵呵,愚见!见谅

出0入0汤圆

5
发表于 2011-1-10 16:13:43 | 只看该作者
顶一个。不错!

出0入0汤圆

6
 楼主| 发表于 2011-1-10 16:23:37 | 只看该作者
回复【2楼】up101
-----------------------------------------------------------------------
发上来看下啊,呵呵。我做的不好,不怎么稳,啥时候换个开关电源再试试。我的是纯手工制作呵呵,看那一堆线。。。

回复【3楼】elf0228 毛边纸
-----------------------------------------------------------------------
有刷的,一个23元

出0入0汤圆

7
发表于 2011-1-10 16:26:10 | 只看该作者
车体跟我以前DIY的一样!嘿嘿~~~

出0入0汤圆

8
 楼主| 发表于 2011-1-10 16:34:40 | 只看该作者
回复【6楼】henangongda 阿勇
-----------------------------------------------------------------------

车体研究了好久,没有用钢化玻璃的设备,就一直没动工。有天去打水突然看到旁边有个大的三合板,呵呵,于是乎。。
感觉车体结构也是个难点啊,要算尺寸,要打孔(先用烙铁头扎,在用螺丝刀来回钻),挺费劲的。还有支架,试用很短的铜柱,一个一个摞起来的,所有能找到的铜柱都用上了,刚好够用。

出0入0汤圆

9
发表于 2011-1-10 16:39:48 | 只看该作者
回复【7楼】feng741 梦不落
-----------------------------------------------------------------------

用硬质的洞洞板!呵呵

出0入0汤圆

10
发表于 2011-1-10 16:41:52 | 只看该作者
这种车体的中间不能负重,重了后面俩轮就往外翻,当时是做打水机器人的,后来没有做完就over了~~~

出0入0汤圆

11
发表于 2011-1-10 16:43:38 | 只看该作者
我也正在做这个,学习中!

出0入0汤圆

12
 楼主| 发表于 2011-1-10 16:57:16 | 只看该作者
回复【8楼】henangongda 阿勇
-----------------------------------------------------------------------

也想过,但手里没有,要去网上买,还有点不太结实。

出0入21汤圆

13
发表于 2011-1-10 18:25:43 | 只看该作者
http://v.youku.com/v_show/id_XODg3MDIwMzY=.html
这个蛮好的。

出0入0汤圆

14
发表于 2011-1-10 18:50:22 | 只看该作者
很牛啊,硬件基本上符合我的期望了,不过我打算用stc的单片机试着做做,顶你了

出0入0汤圆

15
 楼主| 发表于 2011-1-10 19:08:06 | 只看该作者
回复【13楼】rezire199847 無ξ
-----------------------------------------------------------------------

不知道STC那种的,我只用过STC89C51那种的,呵呵。这个车要用很多片内外设的。
AIN0:陀螺仪输入
AIN1:加速度计输入
T0:采样周期定时,算法都在这里完成;
T1:两路PWM;
T2:用作霍尔传感器T法测速(要用码盘M法测速,不需要用)、红外脉冲定时;
INT0、INT1:接霍尔传感器,采集速度
INT2:红外接收头输入信号(遥控要用无线的话,也省了)

出0入0汤圆

16
发表于 2011-1-10 19:24:55 | 只看该作者
回复【5楼】feng741  梦不落
-----------------------------------------------------------------------

我的也是手工的,板子用锉刀打磨的比较规整,线不多。方案和你的差不多。

出0入0汤圆

17
发表于 2011-1-10 19:34:26 | 只看该作者
楼主的串口软件下载打开不了,缺少dll

出0入0汤圆

18
 楼主| 发表于 2011-1-10 19:48:20 | 只看该作者
回复【16楼】fzkqi
-----------------------------------------------------------------------
我发给我同学,能运行啊。我没有用到dll,应该是你那边的问题了,呵呵。

出0入0汤圆

19
发表于 2011-1-10 19:57:27 | 只看该作者
回复【16楼】fzkqi
-----------------------------------------------------------------------

少什么dll可以单独下个dll放进去就好了

出0入0汤圆

20
发表于 2011-1-10 19:59:46 | 只看该作者
回复【17楼】feng741 梦不落
-----------------------------------------------------------------------

话说你有电机驱动电路图没,让我参考一下,谢谢

出0入0汤圆

21
发表于 2011-1-10 20:25:22 | 只看该作者
回复【17楼】feng741 梦不落
-----------------------------------------------------------------------

缺dll不能运行。

出0入0汤圆

22
 楼主| 发表于 2011-1-10 20:26:57 | 只看该作者
驱动我买的模块20块,卖家没提供电路图。应该是和这个一样的http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1344216&bbs_page_no=1&bbs_id=1024。都是没加光耦直接接过去的。

出0入0汤圆

23
 楼主| 发表于 2011-1-10 20:29:24 | 只看该作者
回复【20楼】zhengrob
-----------------------------------------------------------------------

你也缺dll啊,dll文件名是什么?我系统是XP SP3你们的都是什么系统啊?动态链接库那块我还没学,可能解决不了问题。看大家能帮下不?要不像18楼找个dll。

出0入0汤圆

24
发表于 2011-1-10 20:41:14 | 只看该作者
顶楼主,这个作品真的相当不错,我们是同学嘛,基本都是看着他做过来的,全部都是自己手工做的。还有刚才那个串口调试软件我在我电脑上试了下能运行啊~~~~~~~~~

出0入0汤圆

25
 楼主| 发表于 2011-1-10 20:47:33 | 只看该作者
回复【23楼】kkalizee
-----------------------------------------------------------------------

我晕,叫你顶还真来顶了。。。

出0入0汤圆

26
 楼主| 发表于 2011-1-10 21:22:00 | 只看该作者
问题找到了,本来程序是Debug版本的,要改成正式发行版的,VC我只用了不久,是低级错误啦,呵呵。LZ位软件我重新改过了。
VC工程在这里。
上位机VC++工程源码ourdev_610317VUO0LN.rar(文件大小:4.99M) (原文件名:Curve1.rar)
写的有点乱,10.1假期写的,后边就没怎么更新了。两种显示,字符显示和调试助手相同,要用示波器的话,协议为:先发0xFD,再连续发两个字节数据,多个数据依次发下去。单片机中此段程序即为发送波形显示数据的格式:
        if(++ctr_pos==2)
        {
                ctr_pos=0;

                temp1=speed_filter*10+150;
                Putc(0xfd);
                Putc(temp1/256);
                Putc(temp1%256);
        }
数据发的不能太快(差不多要大于10ms),太快右侧字符频繁刷新界面,上位机会卡死,所以在界面上设置了禁止字符输出,用示波器时,最好选上。这个软件可以查看历史波形、数据。

出0入0汤圆

27
发表于 2011-1-10 21:28:33 | 只看该作者
好似看到棉被,那个不是楼主的床板吧,太简朴了,还写字

出0入0汤圆

28
发表于 2011-1-10 22:52:23 | 只看该作者
回复【25楼】feng741 梦不落
-----------------------------------------------------------------------

不错,感谢你的电路图,这样又让我了解了一种驱动电机的方法

出0入0汤圆

29
 楼主| 发表于 2011-1-11 13:51:34 | 只看该作者
自己顶一个,没人关注啦,大家对这个没什么兴趣?所有资料都有啊!~
我说下成本:
AVR最小系统版 45;
陀螺仪ENC-30MB:35;
加速度传感器MMA7260模块:48(5V/3.3V供电);
电机+轮子+联轴器两套:96;
霍尔传感器模块(两对,每对AB相):34;
电机驱动板:20;
遥控、显示看个人了。
45+35+48+96+34+20=278元。
所有的加一起300元吧。

出0入0汤圆

30
发表于 2011-1-12 10:11:01 | 只看该作者
300块还真够便宜的!再替你顶下!

出0入0汤圆

31
 楼主| 发表于 2011-1-16 14:11:01 | 只看该作者
哈哈,cool了!谢谢armok!
但是这个贴依然很冷清啊。。。大家在做自平衡车的,路过都顶下哈~~

此贴的价值:
1.车的成本相对来说很低;
2.所有代码,电路开源(都是模块插线,没有PCB的。。);
3.这个上位机真的很实用。没有示波器或者不方便用示波器时候,用它显示波形很爽的,并且可以保留历史波形哦!在做此车过程中,我先后用它看了角速度、加速度、陀螺仪积分的角度、KALMAN滤波的角度、车运行过程中的角度、电机空载速度、PI闭环的空载调速曲线(此车没用速度闭环)、车位移等曲线。很直观!发送数据的协议很简单,上面已经讲过。而且代码开源的,自己可以在此基础上增加、改善一些功能。

吹牛完毕,谢谢~

出0入0汤圆

32
发表于 2011-1-16 14:18:24 | 只看该作者
顶一顶,楼主照片里的木板子上刻的是秘笈吗?

出0入0汤圆

33
发表于 2011-1-16 22:37:49 | 只看该作者
mark

出0入0汤圆

34
发表于 2011-1-16 23:43:45 | 只看该作者
收藏一下,好东西,。

出0入0汤圆

35
发表于 2011-1-17 00:06:42 | 只看该作者
LZ的电机+轮子+联轴器在哪買呢??
可以給個地址嗎??

出0入0汤圆

36
发表于 2011-1-17 08:10:42 | 只看该作者
mark

出0入0汤圆

37
发表于 2011-1-17 08:50:34 | 只看该作者
mark

出0入0汤圆

38
 楼主| 发表于 2011-1-17 11:02:58 | 只看该作者
回复【34楼】largolun
-----------------------------------------------------------------------

不知道可不可以贴淘宝地址,有做广告的嫌疑啊。。。

都是一个店的 (原文件名:未命名.JPG)

出0入0汤圆

39
发表于 2011-1-17 11:56:33 | 只看该作者
LZ买的太贵了,MMA7260才13,ENC-03为18,我也买了许多元件,但AVR单片机不太懂,一直没敢开工。正在学习,刚设计了个实验板。另外驱动电路是自己做的,分立元件的,体积稍大,但效果很好。向楼主学下中。。。。。

出0入0汤圆

40
发表于 2011-1-17 12:24:24 | 只看该作者
哪个组织下器材的套件。。我定一套

出0入0汤圆

41
发表于 2011-1-17 12:39:33 | 只看该作者
学习中,

出0入0汤圆

42
 楼主| 发表于 2011-1-17 13:05:57 | 只看该作者
回复【39楼】dkld_720
-----------------------------------------------------------------------

是有点贵当初买的时候也看了其他店子,有像你说的很便宜的,但是你也要考虑邮费起码10元吧,那个MMA7260挺好的别看要48元,是已经做好的模块,而且有插针,可以直接插在万用版上的,你要是13块钱买个芯片的话,要是没风枪的话,不好焊吧,我是不会焊,呵呵。其他店类似的模块也要30多吧,再加个邮费也差不多了。但客观的讲,那个店确实有点点贵,但是所有东西一次性都买齐了。

做此车不是非要用AVR的,只要速度、外设够用就可以!需要的外设上边都有说。关键要懂算法!

出0入0汤圆

43
 楼主| 发表于 2011-1-17 13:13:10 | 只看该作者
回复【26楼】headline
-----------------------------------------------------------------------

回复【31楼】tedden
-----------------------------------------------------------------------

“告示:此铁门已坏,请同学们出门时,多多留意!”呵呵呵呵。此木板非本人床板,是用来做车底座的,垫在床上做实验的,床有点不平。。。

出0入0汤圆

44
发表于 2011-1-17 15:15:18 | 只看该作者
楼主你好,能不能具体说下卡尔曼滤波在算法,先谢过了

出0入0汤圆

45
发表于 2011-1-17 15:40:05 | 只看该作者
mark,天才哦,malar

出0入0汤圆

46
发表于 2011-1-18 10:19:52 | 只看该作者
請問lz車子的偏角是怎么算呢??
是用陀螺仪, 還是用兩個速度传感器算的呢??

真是要向牛師兄請教一下, 感謝感謝!!

出0入0汤圆

47
发表于 2011-1-18 13:54:10 | 只看该作者
回复【42楼】feng741 梦不落
-----------------------------------------------------------------------

我1元钱买了PCB空板,不过mma7260确实不好焊,我用热风枪吹了好几次才成功,我都担心把芯片烧坏,后来试一下没坏,其实还是买成品模块放心。刚把AVR实验板焊成,正在编程序学习。慢慢来吧,只有趁工作之余鼓捣一下,不过看你利用mma7260和ENC-03成功做成了小车,我就有信心了做了。

出0入0汤圆

48
 楼主| 发表于 2011-1-18 15:44:20 | 只看该作者
回复【44楼】lin1936 林鸿贵
-----------------------------------------------------------------------

其实我也是一知半解,给你推荐篇文章
卡尔曼滤波介绍中文版ourdev_611837OCLGOY.pdf(文件大小:540K) (原文件名:kalman_intro_chinese.pdf)
卡尔曼滤波介绍英文版ourdev_611838G0F5Z1.pdf(文件大小:173K) (原文件名:kalman_intro.pdf)
文章从头开始看,看完离散卡尔曼滤波那一节,就会理解很多。后面扩展卡尔曼我看不懂,最后面举了个例子,好好看下。

卡尔曼C语言ourdev_611839GC1Z3U.txt(文件大小:7K) (原文件名:kalman.txt) 再看下这个程序。和我用的结构差不多的(我的是抄zlstone的,他貌似也是复制的,呵呵,最难的就是卡尔曼)。 下面是我的:
void Kalman_Filter(float angle_m,float gyro_m)                        //gyro_m:gyro_measure
{
        angle+=(gyro_m-q_bias) * dt;//先验估计
       
        Pdot[0]=Q_angle - P[0][1] - P[1][0];// Pk-' 先验估计误差协方差的微分
        Pdot[1]=- P[1][1];
        Pdot[2]=- P[1][1];
        Pdot[3]=Q_gyro;
       
        P[0][0] += Pdot[0] * dt;// Pk- 先验估计误差协方差微分的积分 = 先验估计误差协方差
        P[0][1] += Pdot[1] * dt;
        P[1][0] += Pdot[2] * dt;
        P[1][1] += Pdot[3] * dt;
       
       
        angle_err = angle_m - angle;//zk-先验估计
       
       
        PCt_0 = C_0 * P[0][0];
        PCt_1 = C_0 * P[1][0];
       
        E = R_angle + C_0 * PCt_0;
       
        K_0 = PCt_0 / E;//Kk
        K_1 = PCt_1 / E;
       
        t_0 = PCt_0;
        t_1 = C_0 * P[0][1];

        P[0][0] -= K_0 * t_0;//后验估计误差协方差
        P[0][1] -= K_0 * t_1;
        P[1][0] -= K_1 * t_0;
        P[1][1] -= K_1 * t_1;
       
       
        angle        += K_0 * angle_err;//后验估计
        q_bias        += K_1 * angle_err;//后验估计
        angle_dot = gyro_m-q_bias;//输出值(后验估计)的微分 = 角速度
}

我只能帮这些了,我的方向是运动控制方面,KALMAN貌似在信号分析相关专业会学的,所以我也没细看了。上述程序我是直接复制过来的,只改了采样周期,剩下一点没动(还加了点注释,呵呵)。有关KALMAN的详细解释一般都是外国网站的,中国的都是扯淡。我做这个车的目的就是想搞下PID,怎么获取角度是次要的东西。

出0入0汤圆

49
 楼主| 发表于 2011-1-18 15:51:12 | 只看该作者
回复【46楼】largolun
-----------------------------------------------------------------------
需要两个传感器,角速度传感器(ENC-03MB)、加速度传感器(MMA7260)。AD测量并转换得两者数据,送KALMAN滤波,输出得到角度(angle)、角速度(angle_dot),就可以用了!

P.S.我不姓牛啊!

出0入0汤圆

50
发表于 2011-1-18 16:18:03 | 只看该作者
这么好的贴子,帮楼主顶一个,等我技术成熟了,也做一个玩玩

出0入0汤圆

51
发表于 2011-1-18 17:27:24 | 只看该作者
回复【49楼】feng741 梦不落
-----------------------------------------------------------------------

两个传感器得到的数据是什么呢??
是角度還是角速度呢??
我用了角速度传感器和加速度传感器得到傾角是沒問題的, 但對車子計算偏航的角度就出現問題了
因為加速度传感器沒法對角速度传感器進行誤差補償, 這方面lz是怎么解決呢??

牛師兄只是稱讚lz真牛...呵呵!!

出0入0汤圆

52
 楼主| 发表于 2011-1-18 17:34:02 | 只看该作者
回复【51楼】largolun
-----------------------------------------------------------------------

就是角速度和加速度啊!要得到角度需要卡尔曼(KALMAN)融合,可以活得很精确的角度。如果用我那段程序需要根据自己的采样周期修改dt的值,我的是6ms,所以dt=0.006。

出0入0汤圆

53
发表于 2011-1-18 17:53:50 | 只看该作者
回复【52楼】feng741 梦不落
-----------------------------------------------------------------------

用卡尔曼融合角速度传感器和加速度传感器的数据, 這里明白了, 也可以得到傾角, 因為有對地面的加速度是不變的, 也是1g
到了計算偏航的時候, 沒有了地心引力, 就頭痛了

偏航的也是角速度和加速度嗎? 角速度传感器的数据得到gyro_m, 但怎么把加速度得到的数据算成angle_m呢?
我還是不懂呢!!

出0入0汤圆

54
 楼主| 发表于 2011-1-18 18:59:07 | 只看该作者
回复【53楼】largolun
-----------------------------------------------------------------------

不好意思,我搞错了。送给KALMAN的数据应该是角速度、加速度计求得的角度而不是加速度。
        acc=acc-1650;//加速度测量数据-静态值
        acc=acc/800;//这里得到角度的正弦值
        if(acc>1)//算出的值可能大于1或小于-1,是错的,所以限下幅
                acc=1;
        else if(acc<-1)
                acc=-1;
        acc=180/3.1415*asin(acc);//asin求反正弦,得出的单位是弧度,*180/pi得到角度值
        w=(gyro-1178)/0.67;//角速度值
        Kalman_Filter(acc,w);//角度,角速度。函数原型:Kalman_Filter(float angle_m,float gyro_m)

加速度计反正弦求出的角度静止时是很精确的,但是在运动(偏航就是运动吧)时由于有除重力附加的加速度,所以算出的角度将不准。角速度积分求出的角度,因为是积分,所以在累加过程中又慢慢的累计误差,慢慢得出的角度也不准了,角速度传感器本身也有温漂问题,也会造成影响。融合之后很精确。

出0入0汤圆

55
发表于 2011-1-18 23:33:04 | 只看该作者
回复【54楼】feng741 梦不落
-----------------------------------------------------------------------

acc是加速度计是輸出, 這是一軸加速度計嗎? 就是說加速度計的方向軸是與車子的方向承直角, 這理解對嗎?

acc=acc-1650;//加速度测量数据-静态值  <---這是減去0g輸出的值
acc=acc/800;//这里得到角度的正弦值    <---800這值...不理解...>,<

之後的都理解了, asin後換成角度, w是處理角速度传感器的輸出

還有的是, lz主控的AD是多少位的? 我的是0-5V換成0-1024的, 所以静态值太約3XX.
其實這也不是問題, 主要的是800是怎么計算的呢??

請教了...

出0入0汤圆

56
发表于 2011-1-19 02:47:47 | 只看该作者
回复【54楼】feng741 梦不落
-----------------------------------------------------------------------

剛想到了一個問題, 車子向前左或前右轉的時間, 加速度計不是應該有兩個輸出嗎? 怎么只取acc一個呢?
想了想, 如果acc是與地平面承水平的話, 在asin的時候, 不會把別一個值成了1g(地心引力)吧? 那不是也在做傾角嗎??

出0入0汤圆

57
发表于 2011-1-19 08:20:04 | 只看该作者
看图片,貌似是科大的校友啊,厉害啊。

出0入0汤圆

58
发表于 2011-1-19 08:31:19 | 只看该作者
mark!

出0入0汤圆

59
 楼主| 发表于 2011-1-19 10:37:40 | 只看该作者
回复【55楼】largolun
-----------------------------------------------------------------------

800mv见数据手册:点击此处下载 ourdev_612056WR1X9S.pdf(文件大小:197K) (原文件名:MMA7260QT_NoRestriction.pdf)

(原文件名:QQ截图未命名3.jpg)

(原文件名:QQ截图未命名2.jpg)

除800mv得到的是多少g,假如0.2g,那么0.2g/g=0.2不就是正弦值么?然后再反正弦并把单位转成角度制。

我的AD用10位,参考电压用MMA7260模块自带的3.3V稳压电源(3.36v),参考电压越小越精确,但也别太小了。看下最大能测的加速度:(3360-1650)/800=2.1375,能测到2g多点,够用了。你用5V参考的话分辨率降低很多,也没有什么好处。MMA7260都是3.3V供电的吧,直接把电源线接到AD参考电压就行了。还有要考虑陀螺仪的量程,静态输出1.35V,由公式:
Output voltage = V0 + Sv x w [V]
V0 :Static output [V] (at angular velocity is 0 [deg/s])
Sv :Scale factor [mV/deg/s]
w : Angular velocity [angular velocity range : -90 to +90 [deg/s]
最大能测的w为 -90 to +90 极限电压为1350 + 0.67*90=1410.3,1350 - 0.67*90=1289.7,落在参考电压3.36V内,没有问题。
另外AD最小能分辨3360/1024=3.28125mv电压,对于小于此值时的角速度是无法测量的(其实挺小的),用KALMAN滤波之后的角度很精确的。

出0入0汤圆

60
发表于 2011-1-19 10:57:48 | 只看该作者
回复【59楼】feng741 梦不落
---------------------------------------------------------------------

在昨晚想到的, 車子向前左或前右轉的時間, 加速度計不是應該有兩個輸出嗎? 怎么只取acc一個呢?
想了想, 如果acc是與地平面承水平的話, 在正弦的時候, 那不是也在做傾角嗎??

這已猜到了是正弦了, 但是...
除800mv之前, 不是要把AD得到的数据換成電压值嗎? 例如我的主控AD是0-5V對應0-1023的, 先把AD值*5/1024 再除800m才對嗎?

傾角的計算(也就係除800mv後得到的是多少g, 再除1g的正弦)已經完成了
回到一直的問題, 是水平面的偏角, 如果z軸向天, 水平面就是xy面的角度變化, 沒有1g的參與, 這所以才令我頭痛了

出0入0汤圆

61
 楼主| 发表于 2011-1-19 11:01:35 | 只看该作者
回复【57楼】ww29613025
-----------------------------------------------------------------------

是辽宁科大,还是湖南科大啊?我都不是啊,,呵呵,我是工程学院的。

出0入0汤圆

62
发表于 2011-1-19 11:35:18 | 只看该作者
回复【59楼】feng741 梦不落
-----------------------------------------------------------------------

看懂了, 原來已經換成了電压,(3360mv-1650mv)/800mv=2.1375

但是xy面(z軸向天)的偏角還困擾著....

出0入0汤圆

63
发表于 2011-1-20 11:10:42 | 只看该作者
回复【59楼】feng741 梦不落
-----------------------------------------------------------------------

lz, 傾角的計算已經完成了
水平面的偏角有辦法解決嗎?? 感謝...

出0入0汤圆

64
 楼主| 发表于 2011-1-21 16:36:35 | 只看该作者
回复【63楼】largolun
-----------------------------------------------------------------------

不懂你的意思。。。
得到角度就行了呗,还算什么“水平面的偏角”啊?

出0入0汤圆

65
发表于 2011-1-21 22:37:48 | 只看该作者
回复【21楼】feng741  梦不落
驱动我买的模块20块,卖家没提供电路图。应该是和这个一样的http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=1344216&amp;bbs_page_no=1&amp;bbs_id=1024。都是没加光耦直接接过去的。
-----------------------------------------------------------------------
没加光耦直接接过去的,能驱动起来吗?我现在苦恼,我没接,但是电机没转,我是用STC12C5A60S2单片机,用PWM调速。请指导一下!

出0入0汤圆

66
 楼主| 发表于 2011-1-22 00:32:52 | 只看该作者
回复【65楼】flyinthesky
-----------------------------------------------------------------------
加光耦是为了隔离,跟“驱动”有什么关系啊?检查接线,测试各点电压、信号是否正常。

出0入0汤圆

67
发表于 2011-1-22 08:48:54 | 只看该作者
我来帮顶下。

出0入0汤圆

68
发表于 2011-1-22 10:36:43 | 只看该作者
你好,我现在也正在学习卡尔曼滤波,EKF,里面还有些细节不太明白,可以指点一下吗?

出0入0汤圆

69
发表于 2011-1-22 11:43:26 | 只看该作者
我得细看看,你是用的标准KF的,对吧

出0入0汤圆

70
发表于 2011-1-23 15:30:58 | 只看该作者
回复【66楼】feng741  梦不落
回复【65楼】flyinthesky
-----------------------------------------------------------------------
加光耦是为了隔离,跟“驱动”有什么关系啊?检查接线,测试各点电压、信号是否正常。
-----------------------------------------------------------------------

(原文件名:L298_motor.gif)
通常情况,OUT1,OUT2电压时多少啊,我IN1接高电平,IN2接低电平,STC12C5A60S2的p1.3直接接到EN A。

出0入0汤圆

71
发表于 2011-1-24 15:55:58 | 只看该作者
我做了一个月没头绪,感谢你帮理清了,重新做一个,哈哈,请多多指导啊,师傅

出0入0汤圆

72
发表于 2011-1-25 16:29:18 | 只看该作者
看了半天,楼主你用了PID了吗?

出0入0汤圆

73
发表于 2011-1-25 17:23:08 | 只看该作者
请问下楼主,光有7260传感器能使他平衡吗?

出0入0汤圆

74
 楼主| 发表于 2011-1-28 16:55:44 | 只看该作者
回复【70楼】flyinthesky
-----------------------------------------------------------------------

OUT1、OUT2间电压就是电机电源经过PWM斩波后的电压,你把ENA也进程高电平,就是占空比100%,这是OUT1、OUT2电压为电机电源电压回复【74楼】ZRYXY
-----------------------------------------------------------------------

7260是加速度传感器,在静止时测的是重力在相应坐标轴上的加速度分量,但是在频繁变速运动时在对应坐标轴上会有运动中的额外加速度,这就给获得真实角度带来干扰了,可能可以通过补偿获得角度吧,但是应该很困难了,呵呵,但是只用陀螺仪貌似可以的,乐高的就是只用的陀螺仪,也需要补偿了。
我用到了PID,PWM=ut=Kp1*角度+Kd1*角速度+Kp2*车速+Ki2*车位移。但是和传统的PID有点不太一样,一般PID就是单输入单输出,但这里给定为角度0和车位置0,输出为角度和车位置。其实用PID是最简洁、最粗糙的方法,效果好的话都用到了现代控制,我不怎么懂,呵呵。

出0入0汤圆

75
发表于 2011-1-28 18:32:45 | 只看该作者
回复【75楼】feng741  梦不落
-----------------------------------------------------------------------
哎!单片机的接地端,没有跟L298n的接地端接在一起!现在电机会转了!

出0入0汤圆

76
发表于 2011-1-31 03:57:19 | 只看该作者
feng741 梦不落
你这个程序有些难啊,能不能简化下,程序主要的只留AD采集、卡尔曼滤波和PID计算PWM输出就能跑的,不要外围的车速检测、红外遥控、液晶显示、和键盘什么的,只留加速度传感器和角速度传感器以及PWM输出还有电机正反转换,底子薄的人看的好辛苦啊,看了五天了,眼花了,呵呵,麻烦你啦,LZ!

出0入0汤圆

77
发表于 2011-1-31 08:15:45 | 只看该作者
mark

出0入0汤圆

78
发表于 2011-1-31 09:16:09 | 只看该作者
mark

出0入0汤圆

79
发表于 2011-1-31 12:14:22 | 只看该作者
mark

出0入0汤圆

80
发表于 2011-1-31 13:12:40 | 只看该作者
mark

出0入0汤圆

81
发表于 2011-2-1 00:58:31 | 只看该作者
NB,支持下。

出0入0汤圆

82
发表于 2011-2-2 22:03:29 | 只看该作者
记号

出0入0汤圆

83
发表于 2011-2-6 15:01:42 | 只看该作者
标记学习

出0入0汤圆

84
发表于 2011-2-8 18:21:53 | 只看该作者
人气又旺了

出0入0汤圆

85
发表于 2011-2-8 18:30:30 | 只看该作者
回复【77楼】ZRYXY
-----------------------------------------------------------------------

同感~~~~

出0入0汤圆

86
发表于 2011-2-11 20:07:50 | 只看该作者
回复【楼主位】feng741 梦不落
-----------------------------------------------------------------------

我一个硬件倒是早搞定了   控制算法上卡壳了  卡尔曼不太懂  PID没调好   电机好像和你的一样的  陀螺仪加速度传感器也一样  只是主控用的飞思卡尔的16位单片机  驱动用MOS管搭的  等弄好了之后  我也传来看看

出0入0汤圆

87
发表于 2011-2-11 20:10:01 | 只看该作者
用labview配合无线串口在调

出0入0汤圆

88
发表于 2011-2-12 20:10:09 | 只看该作者
寻人启示


寻找楼主  feng741 梦不落
你这个程序有些难啊,能不能简化下,程序主要的只留AD采集、卡尔曼滤波和PID计算PWM输出就能跑的,不要外围的车速检测、红外遥控、液晶显示、和键盘什么的,只留加速度传感器和角速度传感器以及PWM输出还有电机正反转换,底子薄的人看的好辛苦啊,看了五天了,眼花了,呵呵,麻烦你啦,LZ!

出0入0汤圆

89
发表于 2011-2-13 08:43:19 | 只看该作者
标记下呵呵

出0入0汤圆

90
发表于 2011-2-14 13:54:05 | 只看该作者
学习一下

出0入0汤圆

91
发表于 2011-2-14 21:46:04 | 只看该作者
回复【70楼】flyinthesky
-----------------------------------------------------------------------

留个邮箱呗,我用的也是这个芯片,我也学51的,不过不是很懂,以后交流一下,谢谢

出0入0汤圆

92
发表于 2011-2-14 22:33:26 | 只看该作者
mark

出0入0汤圆

93
发表于 2011-2-17 13:10:09 | 只看该作者
呵呵    真的做的不错哈     学习一个·~    回学校咯    也准备做一个哈     努力!~

出0入0汤圆

94
发表于 2011-2-20 02:48:29 | 只看该作者
回复【1楼】feng741 梦不落
-----------------------------------------------------------------------

东西看起来简单,程序太复杂了

出0入0汤圆

95
发表于 2011-2-20 15:46:18 | 只看该作者
晕死了,楼主给的1602液晶电路怎么调都不出数据

出0入0汤圆

96
发表于 2011-2-20 23:19:31 | 只看该作者
程序整个通不过,10个错误

出0入0汤圆

97
发表于 2011-2-21 08:53:12 | 只看该作者
我的也模仿成功了,效果还可以。下一步将小车美化一下,刚购买了十节镍氢电池,回头加在小车上,它就可以自由跑了。我调试时,将加速度获得的角度乘以3.5后才送入卡尔曼滤波的,不过还没理解卡尔曼滤波,在调试时发现小车对MMA7260反应偏小偏慢,所以就将其放大后才送入卡尔曼滤波的。

出0入0汤圆

98
 楼主| 发表于 2011-2-21 12:54:59 | 只看该作者
回复【98楼】dkld_720
-----------------------------------------------------------------------
恭喜恭喜!

回复【97楼】ZRYXY
-----------------------------------------------------------------------
程序没问题的,你可以把错误发上来看看。1602不出数据的话,先单独调下,要特别注意对比度调节信号!!

出0入0汤圆

99
发表于 2011-2-21 14:04:03 | 只看该作者
想学习kalman滤波算法,谢谢楼主分享!

出0入0汤圆

100
发表于 2011-2-21 15:54:09 | 只看该作者
神人终于出现了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 05:11

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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