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



 (原文件名: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) 

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

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


视频在这里v.youku/v_show/id_XMjM1OTQ3NzU2.html
现在还不是很稳,我想有两个原因,一个是参数没调到最佳,调了好久,先这样吧。再有就是电源太烂了,电机是额定6V的可实际电压空载的时候才打到5伏多一点,在平衡的时候没测,肯定更低了。

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

幼儿园保健计划高通滤波脉冲响应 (原文件名:QQ截图未命名.jpg) 
会计证怎么考取需要什么条件

因为有这个问题,会给倾角数据造成影响,所以我就去掉了滤波,直接接到AD。这样1deg/s0.67mv10AD参考电压是3.36V,最小才能测到3.28mv,小于4.8deg时就测不到了。本来担心这个问题,但试了下KALMAN滤波,真是强啊!角度很精确,就这么用了。
车体研究了好久,没有用钢化玻璃的设备,就一直没动工。有天去打水突然看到旁边有个大的三合板,呵呵,于是乎。。
感觉车体结构也是个难点啊,要算尺寸,要打孔(先用烙铁头扎,在用螺丝刀来回钻),挺费劲的。还有支架,试用很短的铜柱,一个一个摞起来的,所有能到的铜柱都用上了,刚好够用。
这种车体的中间不能负重,重了后面俩轮就往外翻,当时是做打水机器人的,后来没有做完就over~~~
不知道STC那种的,我只用过STC89C51那种的,呵呵。这个车要用很多片内外设的。
AIN0:陀螺仪输入
AIN1:加速度计输入
T0:采样周期定时,算法都在这里完成;
T1:两路PWM;
T2:用作霍尔传感器T法测速(要用码盘M法测速,不需要用)、红外脉冲定时;
INT0、INT1:接霍尔传感器,采集速度
INT2:红外接收头输入信号(遥控要用无线的话,也省了)
电机驱动电路图
驱动我买的模块20块,卖家没提供电路图。应该是和这个一样的www.ourdev/bbs/bbs_content.jsp?bbs_sn=1344216&bbs_page_no=1&bbs_id=1024。都是没加光耦直接接过去的。
这个图完全能用,我已经焊接好这个电路,驱动小车。就是要大一点的散热片,普通散热片太小太烫了。
L298偏偏是没有,PCB上还要额外放8个高速二极管是很让人吐血的一件事情……
小功率版的L293是有二极管的,用起来方便多了。
问题到了,本来程序是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),太快右侧字符频繁刷新界面,上位机会卡死,所以在界面上设置了禁止字符输出,用示波器时,最好选上。这个软件可以查看历史波形、数据。
自己顶一个,没人关注啦,大家对这个没什么兴趣?所有资料都有啊!~
我说下成本:
AVR最小系统版 45;
陀螺仪ENC-30MB:35;
加速度传感器MMA7260模块:48(5V/3.3V供电);
电机+轮子+联轴器两套:96;
霍尔传感器模块(两对,每对AB相):34;
电机驱动板:20;
遥控、显示看个人了。
45+35+48+96+34+20=278元。
所有的加一起300元吧。
此贴的价值:
1.车的成本相对来说很低;
2.所有代码,电路开源(都是模块插线,没有PCB的。。);
3.这个上位机真的很实用。没有示波器或者不方便用示波器时候,用它显示波形很爽的,并且可以保留历史波形哦!在做此车过程中,我先后用它看了角速度、加速度、陀螺仪积分的角度、KALMAN滤波的角度、车运行过程中的角度、电机空载速度、PI闭环的空载调速曲线(此车没用速度闭环)、车位移等曲线。很直观!发送数据的协议很简单,上面已经讲过。而且代码开源的,自己可以在此基础上增加、改善一些功能。
知道可不可以贴淘宝地址,有做广告的嫌疑啊。。。
LZ买的太贵了,MMA726013ENC-0318,我也买了许多元件,但AVR单片机不太懂,
一直没敢开工。正在学习,刚设计了个实验板。另外驱动电路是自己做的,分立元件的,体积稍大,但效果很好。向楼主学下中。。。。。
是有点贵当初买的时候也看了其他店子,有像你说的很便宜的,但是你也要考虑邮费起码10元吧,那个MMA7260挺好的别看要48元,是已经做好的模块,而且有插针,可以直接插在万用版上的,你要是13块钱买个芯片的话,要是没风的话,不好焊吧,我是不会焊,呵呵。其他店类似的模块也要30多吧,再加个邮费也差不多了。但客观的讲,那个店确实有点点贵,但是所有东西一次性都买齐了。

做此车不是非要用AVR的,只要速度、外设够用就可以!需要的外设上边都有说。关键要懂算法!
其实我也是一知半解,给你推荐篇文章
卡尔曼滤波介绍中文版ourdev_611837OCLGOY.pdf(文件大小:540K) (原文件名:kalman_intro_chinese.pdf) 
卡尔曼滤波介绍英文版ourdev_611838G0F5Z1.pdf(文件大小:173K) (原文件名:kalman_intr
o.pdf) 
文章从头开始看,看完离散卡尔曼滤波那一节,就会理解很多。后面扩展卡尔曼我看不懂,最后面举了个例子,好好看下。

卡尔曼C语言(文件大小:7K) (原文件名:) 再看下这个程序。和我用的结构差不多的(我的是抄野外拓展训练心得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,怎么获取角度是次要的东西。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。