平衡车平衡原理 Arduino 库函数

平衡车平衡原理 Arduino 库函数
平衡车平衡原理 Arduino 库函数

平衡原理

一、平衡小车原理

平衡小车是通过两个电机运动下实现小车不倒下直立行走的多功能智能小车,在外力的推拉下,小车依然保持不倒下。这么一说可能还没有很直观的了解究竟什么是平衡小车,不过这个平衡小车实现的原理其实是在人们生活中的经验得来的。如果通过简单的练习,一般人可以通过自己的手指把木棒直立而不倒的放在指尖上,所以练习的时候,需要学会的两个条件:一是放在指尖上可以移动,二是通过眼睛观察木棒的倾斜角度和倾斜趋势(角速度)。通过手指的移动去抵消木棒倾斜的角度和趋势,使得木棒能直立不倒。这样的条件是不可以缺一的,实际上加入这两个条件,控制过程中就是负反馈机制。

而世界上没有任何一个人可以蒙眼不看,就可以直立木棒的,因为没有眼睛的负反馈,就不知道笔的倾斜角度和趋势。这整个过程可以用一个执行式表达:

平衡小车也是这样的过程,通过负反馈实现平衡。与上面保持木棒直立比较则相对简单,因为小车有两个轮子着地,车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。

所以根据上述的原理,通过测量小车的倾角和倾角速度控制小车车轮的加

速度来消除小车的倾角。因此,小车倾角以及倾角速度的测量成为控制小车直立

的关键。我们的亚博智能平衡小车使用了测量倾角和倾角速度的集成传感器陀

螺仪-MPU6050(模块详细介绍在亚博智能平衡小车光盘资料3.硬件资料中)。

二、角度(物理分析 PD算法)

图1

图2

控制平衡小车,使得它作加速运动。这样站在小车上(非惯性系,以车轮

作为坐标原点)分析倒立摆受力,它就会受到额外的惯性力,该力与车轮的加

速度方向相反,大小成正比。这样倒立摆(如图2)所受到的回复力为:公式1 F = mg sin θ-ma cos θ≈mg θ-mk1θ 式1中,由于θ很小,所以进行了线

性化。假设负反馈控制是车轮加速度a与偏角θ成正比,比例为k1。如果比例

k1>g,(g是重力加速度)那么回复力的方向便于位移方向相反了。

而为了让倒立摆能够尽快回到垂直位置稳定下来,还需要增加阻尼力。增加的阻尼力与偏角的速度成正比,方向相反,因此公式1可改为:

F = mg θ-mk1 θ -mk2 θ`

按照上述倒立摆的模型,可得出控制小车车轮加速度的算法:

a =k1θ+k2θ` 式中θ为小车角度,θ`为角速度。k1 k2都是比例系数

根据上述内容,建立速度的比例微分负反馈控制,根据基本控制理论讨论小车通过闭环控制保持稳定的条件(这里需要对控制理论有基本了解)。假设外力干扰引起车模产生角加速度x(t)。沿着垂直于车模地盘方向进行受力分析,可以得到车模倾角与车轮运动加速度以及外力干扰加速度a(t)x(t)之间的运动方程。如图3所示。

图3

在角度反馈控制中,与角度成比例的控制量是称为比例控制;与角速度成比例的控制量称为微分控制(角速度是角度的微分)。因此上面系数k1,k2分别称为比例和微分控制参数。其中微分参数相当于阻尼力,可以有效抑制车模震荡。通过微分抑制控制震荡的思想在后面的速度和方向控制中也同样适用。

总结控制车模直立稳定的条件如下:

(1)能够精确测量车模倾角θ的大小和角速度θ'的大小;

(2)可以控制车轮的加速度。

上述控制实际结果是小车与地面不是严格垂直,而是存在一个对应的倾角。在重力的作用下,小车会朝着一个方面加速前进。为了保持小车的静止或者匀速运动需要消除这个安装误差。在实际小车制作过程中需要进行机械调整和软件参数设置。另外需要通过软件中的速度控制来实现速度的稳定性。在小车角度控制中出现的小车倾角偏差,使得小车在倾斜的方向上产生加速。这个结果可以用来进行小车的速度控制。下面将利用这个原理来调节小车的速度。

三、测速(物理模型建立数学模型传递函数 PD算法)

假设小车在上面直立控制调节下已经能够保持平衡了,但是由于安装误差,传感器实际测量的角度与车模角度有偏差,因此小车实际不是保持与地面垂直,而是存在一个倾角。在重力的作用下,小车就会朝倾斜的方向加速前进。控制速度只要通过控制小车的倾角就可以实现了。具体实现需要解决三个问题:

(1)如何测量小车速度?

(2)如何通过小车直立控制实现小车倾角的改变?

(3)如何根据速度误差控制小车倾角?

第一个问题可以通过安装在电机输出轴上的霍尔测速来测量得到小车的车轮速度。如图4所示。利用控制单片机的外部中断IO口在不间断测速,速度为脉冲信号的个数可以反映电机的转速。

图4

第二个问题可以通过角度控制给定值来解决。给定小车直立控制的设定值,在角度控制调节下,小车将会自动维持在一个角度。通过前面小车直立控制算法可以知道,小车倾角最终是跟踪重力加速度Z 轴的角度。因此小车的倾角给定值与重力加速度Z轴角度相减,便可以最终决定小车的倾角

第三个问题分析起来相对比较困难,远比直观进行速度负反馈分析复杂。首先对一个简单例子进行分析。假设小车开始保持静止,然后增加给定速度,为此需要小车往前倾斜以便获得加速度。在小车直立控制下,为了能够有一个往前的倾斜角度,车轮需要往后运动,这样会引起车轮速度下降(因为车轮往负方向运动了)。由于负反馈,使得小车往前倾角需要更大。如此循环,小车很快就会倾倒。原本利用负反馈进行速度控制反而成了“正”反馈。

为什么负反馈控制在这儿失灵了呢?原来在直立控制下的小车

速度与小车倾角之间传递函数具有非最小相位特性(在此省略了分析),在反馈控制下容易造成系统的不稳定性。

为了保证系统稳定,往往取的小车倾角控制时间常数Tz很大。这样便会引起系统产生两个共轭极点,而且极点的实部变得很小,使得系统的速度控制会产生的震荡现象。这个现象在实际参数整定的时候可以观察到。那么如何消除速度控制过程中的震荡呢?

要解决控制震荡问题,在前面的小车角度控制中已经有了经验,那就是在控制反馈中增加速度微分控制。但由于车轮的速度反馈信号中往往存在着噪声,对速度进行微分运算会进一步加大噪声的影响。为此需要对上面控制方法进行改进。原系统中倾角调整过程时间常数往往很大,因此可以将该系统近似为一个积分环节。将原来的微分环节和这个积分环节合并,形成一个比例控制环节。这样可以保持系统控制传递函数不变,同时避免了微分计算。

但在控制反馈中,只是使用反馈信号的比例和微分,没有利误差积分,所以最终这个速度控制是有残差的控制。但是直接引入误差积分控制环节,会增加系统的复杂度,为此就不再增加积分控制,而是通过与角度控制相结合后在进行改进。

要求小车在原地停止,速度为0。但是由于采用的是比例控制,如果此时陀螺仪有漂移,或者加速度传感器安装有误差,最终小车倾角不会最终调整到0,小车会朝着倾斜的方向恒速运行下去。注意此时车模不会像没有速度控制那样加速运行了,但是速度不会最终为0。为了消除这个误差,可以将小车倾角设定量直接积分补偿在角度控制

输出中,这样就会彻底消除速度控制误差。第二点,由于加入了速度控制,它可以补偿陀螺仪和重力加速度的漂移和误差。所以此时重力加速度传感器实际上没有必要了。

此时小车在控制启动的时候,需要保持小车的垂直状态。此时陀螺仪的积分角度也初始化为0。当然如果电路中已经包括了重力加速度传感器,也可以保留这部分,从而提高小车的稳定性。在后面的最终给定的控制方案中,保留了这部分的控制回路。

四、转向控制(PD算法)

通过左右电机速度差驱动小车转向消除小车距离道路中心的偏差。通过调整小车的方向,再加上车前行运动,可以逐步消除小车距离中心线的距离差别。这个过程是一个积分过程,因此小车差动控制一般只需要进行简单的比例控制就可以完成小车方向控制。但是由于小车本身安装有电池等比较重的物体,具有很大的转动惯量,在调整过程中会出现小车转向过冲现象,如果不加以抑制,会使得小车过度转向而倒下。根据前面角度和速度控制的经验,为了消除小车方向控制中的过冲,需要增加角度微分控制。

五、全方案整合

通过上面介绍,将车模直立行走主要的控制算法集中起来,如图5

图5

为了实现小车直立行走,需要采集如下信号:

(1)小车倾角速度陀螺仪信号,获得小车的倾角和角速度。

(2) 重力加速度信号

(z轴信号),补偿陀螺仪的漂移。该信号可以省略,有速度控制替代。

(3) 小车电机转速脉冲信号,获得小车运动速度,进行速度控制。(4)小车转动速度陀螺仪信号,获得小车转向角速度,进行方向控制。

在小车控制中的直立、速度和方向控制三个环节中,都使用了比例微分(PD)控制,这三种控制算法的输出量最终通过叠加通过电机运动来完成。

(1)小车直立控制:使用小车倾角的PD(比例、微分)控制;

mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

//IIC获取MPU6050六轴数据 ax ay az gx gy gz

Angletest(); //获取angle 角度和卡曼滤波 angleout(); //角度环 PD控制 //////////////////角度PD////////////////////

void angleout()

{

Output = kp * (angle + angle0) + kd * Gyro_x;

//PD 角度环控制

}

(2)小车速度控制:使用PD(比例、微分)控制;

Outputs = ksi * (setp0 - positions) + ksp * (setp0 - speeds_filter); //速度环控制 PI

(3)小车方向控制:使用PD(比例、微分)控制。

turnoutput = -turnout * ktp - Gyro_z * ktd;//旋转PD算法控制 融合速度和Z轴旋转定位。

可通过单片机软件实现上述控制算法。

在上面控制过程中,车模的角度控制和方向控制都是直接将输出电压叠加后控制电机的转速实现的。而车模的速度控制本质上是通过调节车模的倾角实现的,由于车模是一个非最小相位系统,因此该反馈控制如果比例和速度过大,很容易形成正反馈,使得车模失控,造成系统的不稳定性。因此速度的调节过程需要非常缓慢和平滑。

六、PID算法

图6

控制相关的软件函数包括:

1.

Angletest:小车倾角计算函数。根据采集到的陀螺仪和重力加速度传感器的数值计算小车角度和角速度。如果这部分的算法由外部一个运放实现,那么采集得到的直接是小车的角度和角速度,这部分算法可以省略。该函数是每5毫秒调用一次。

2.

angleout:小车直立控制函数。根据小车角度和角速度计算小车电机的控制量。直立控制是5毫秒调用一次。

3.

speedpiout:小车速度控制函数。根据小车采集到的电机转速和速度设定值,计算电机的控制量。该函数是50毫秒调用一次。

4.

turnspin:方向控制函数输出平滑函数。将方向控制的输出变化量平均分配到2步5毫秒的控制周期中。

5.

pwma:电机输出量汇集函数。根据前面的直立控制、速度控制和方向控制所得到的控制量进行叠加,分别得到左右两个电极的输出电压控制量。对叠加后的输出量进行饱和处理。函数调用周期5毫秒。在此请大家注意速度控制量叠加的极性是负。

七、程序(只给出一部分内容,程序使用的是库函数形式)

(1)时序总算法

inter()

void

{

sei();

countpluse(); //脉冲叠加子函数

mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); //IIC获取MPU6050六轴数据 ax ay az gx gy gz

kalmanfilter.Angletest(ax, ay, az, gx, gy, gz, dt, Q_angle, Q_gyro,R_ angle,C_0,K1); //获取angle 角度和卡曼滤波

angleout(); //角度环 PD控制

speedcc++;

if (speedcc >= 8) //50ms进入速度环控制

{

Outputs = balancecar.speedpiout(kp_speed,ki_speed,kd_speed,fron t,back,setp0);

speedcc = 0;

}

turncount++;

if (turncount > 2) //10ms进入旋转控制

{

turnoutput = balancecar.turnspin(turnl,turnr,spinl,spinr,kp_turn,k

d_turn,kalmanfilter.Gyro_z); //旋转子函数

turncount = 0;

}

balancecar.posture++;

balancecar.pwma(Outputs,turnoutput,kalmanfilter.angle,kalmanfilt er.angle6,turnl,turnr,spinl,spinr,front,back,kalmanfilter.accelz,IN1M, IN2M,IN3M,IN4M,PWMA,PWMB); //小车总PWM输出

}

(2)平衡程序

/////////////卡曼滤波计算角度,一阶滤波换算姿体///////////////

void Angletest()

{

//平衡参数

Angle = atan2(ay , az) * 57.3; //角度计算公式

Gyro_x = (gx - 128.1) / 131; //角度转换

Kalman_Filter(Angle, Gyro_x); //卡曼滤波

//旋转角度Z轴参数

if (gz > 32768) gz -= 65536; //强制转换2g 1g

Gyro_z = -gz / 131; //Z轴参数转换

//姿态识别

angleAx=atan2(ax,az)*180/PI;//计算与x轴夹角

Gyro_y=-gy/131.00;//计算角速度

Yijielvbo(angleAx,Gyro_y);//一阶滤波

}

///////////////////////////卡曼滤波计算角度//////////////////////////////////// ////////////////////////kalman/////////////////////////

void Kalman_Filter(double angle_m, double gyro_m)

{

angle += (gyro_m - q_bias) * dt;

angle_err = angle_m - angle;

Pdot[0] = Q_angle - P[0][1] - P[1][0];

Pdot[1] = - P[1][1];

Pdot[2] = - P[1][1];

Pdot[3] = Q_gyro;

P[0][0] += Pdot[0] * dt;

P[0][1] += Pdot[1] * dt;

P[1][0] += Pdot[2] * dt;

P[1][1] += Pdot[3] * dt;

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;

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/////////////////////////

//////////////////////////一阶滤波////////////////////

void Yijielvbo(float angle_m, float gyro_m)

{

angle6 = K1 * angle_m+ (1-K1) * (angle6 + gyro_m * dt); }

//////////////////速度PI////////////////////

void speedpiout()

{

speeds = (smal + smar) * 1.0;

//车速脉冲值

smar = smal = 0;

speeds_filterold *= 0.7;

//一阶互补滤波

speeds_filter = speeds_filterold + speeds * 0.3;

speeds_filterold = speeds_filter;

positions += speeds_filter;

positions += front; //全进控制量融合

positions += back;

//全进控制量融合

positions = constrain(positions, -16550, 16550); //抗积分饱和

Outputs = ksi * (setp0 - positions) + ksp * (setp0 -speeds_filter);

//速度环控制 PI

speedcc = 0;

}

////////////////////////////////////////pwm///////////////////////////////////

void pwma()

{

pwm1 = -Output - Outputs - turnoutput; //Left电机PWM输出值 pwm2 = -Output - Outputs + turnoutput;//Right电机PWM输出值

//幅度值限制

if (pwm1 > 255) pwm1 = 255;

if (pwm1 < -255) pwm1 = -255;

if (pwm2 > 255) pwm2 = 255;

if (pwm2 < -255) pwm2 = -255;

//角度过大,停止电机

if (angle > 30 || angle < -30)

{

pwm1 = 0;

pwm2 = 0;

}

//电机的正负输出判断左电机判断

if (pwm1 >= 0) {

digitalWrite(IN2M, 0);

digitalWrite(IN1M, 1);

analogWrite(PWMA, pwm1);

} else {

digitalWrite(IN2M, 1);

digitalWrite(IN1M, 0);

analogWrite(PWMA, -pwm1);

}

//电机的正负输出判断右电机判断if (pwm2 >= 0) {

digitalWrite(IN4M, 0);

digitalWrite(IN3M, 1);

analogWrite(PWMB, pwm2);

} else {

digitalWrite(IN4M, 1);

digitalWrite(IN3M, 0);

analogWrite(PWMB, -pwm2);

}

}

////////////////////////////////////////turn//////////////////////////////////

int turnmax = 10; //旋转输出幅值

int turnmin = -10; //旋转输出幅值

void turnspin()

{

float turnspp;

turnvert=0.9;

if (turnl == 1 || spinl == 1)//根据方向参数叠加

{

turnout += turnvert;

}

else if (turnr == 1 || spinr == 1)//根据方向参数叠加

{

turnout -= turnvert;

}

else turnout = 0;

if (turnout > turnmax) turnout = turnmax;//幅值最大值设置

if (turnout < turnmin) turnout = turnmin;//幅值最小值设置

turnoutput = -turnout * ktp - Gyro_z * ktd;//旋转PD算法控制融合速度和Z轴旋转定位。

}

(3)蓝牙

////////////////////////bluetooth//////////////////////

void kongzhi()

{

while (Serial.available()) //等待蓝牙数据

switch (Serial.read()) //读取蓝牙数据

{

case 0x01: front=600; break; //前进

case 0x02: back=-600; break; //后退

case 0x03: turnl=1; break;

线控两轮平衡车的建模与控制研究

线控两轮平衡车的建模 与控制研究 文稿归稿存档编号:[KKUY-KKIO69-OTM243-OLUI129-G00I-FDQS58-

线性系统理论 上机实验报告 题目:两轮平衡小车的建模与控制研究 完成时间:2016-11-29 1.研究背景及意义 现代社会人们活动范围已经大大延伸,交通对于每个人都十分重要。交通工具的选择则是重中之重,是全社会关注的焦点。 随着社会经济的发展,人民生活水平的提高,越来越多的小汽车走进了寻常百姓家。汽车快捷方便、省时省力,现代化程度高,种类繁多的个性化设计满足了不同人的需求。但它体积大、重量大、污染大、噪声大、耗油大、技术复杂、使用不便、价格贵、停放困难,效率不高,而且还会造成交通拥堵并带来安全隐患。相比之下,自行车是一种既经济又实用的交通工具。中国是自行车大国,短距离出行人们常选择骑自行车。自行车确实方便,但在使用之前需要先学会骑车,虽然看似简单,平衡能力差的人学起来却很困难,容易摔倒,造成人身伤害。另外,自行车毕竟不适宜长距离的行驶,遥远的路程会使人感到疲劳。 那么,究竟有没有这样一种交通工具,集两者的优点于一身呢?既能像汽车一样方便快捷又如自行车般经济简洁,而且操作易于掌握,易学又易用。两轮自平衡车概念就是在这样的背景下提出来的。 借鉴目前国内外两轮自平衡车的成功经验,本文提出的研究目标是设计一款新型的、结构简单、成本低的两轮自平衡车,使其能够很好地实现自平衡功能,同时设计结果通过MATLAB进行仿真验证。

2.研究内容 自平衡式两轮电动车是一个非线性、强耦合、欠驱动的自不稳定系统,对其控制策略的研究具有重大的理论意义。我们通过分析两轮平衡车的物理结构以及在平衡瞬间的力学关系,得到两轮车的力学平衡方程,并建立其数学模型。运用MATLAB 和SIMULINK 仿真系统的角度θ、角加速度? θ、位移x 和速度的? x 变化过程,对其利用外部控制器来控制其平衡。 3.系统建模 两轮平衡车的瞬时力平衡分析如图1所示。下面将分析归纳此时的力平衡方程[1-3],并逐步建立其数学模型。 对两轮平衡车的右轮进行力学分析,如图2所示。 依据图2对右轮进行受力分析,并建立其平衡方程: =R R R R M X f H ? - (1) R R R R J C f R ??? =- (2) 同理,对左轮进行受力分析,并建立其平衡方程: =R L L L M X f H ? - (3) L L L L J C f R ??? =- (4) 两轮平衡车摆杆的受力分析如图3所示,由图3可以得到水平和垂直方向的平衡方程以及转矩方程。 水平方向的平衡方程: H H x R L p m +=? ? (5) 其中θsin L x x m p +=,则有:

两轮自平衡小车控制系统的设计

两轮自平衡小车控制系统的设计 摘要:介绍了两轮自平衡小车控制系统的设计与实现,系统以飞思卡尔公司的16位微控制器MC9S12XS128MAL作为核心控制单元,利用加速度传感器MMA7361测量重力加速度的分量,即小车的实时倾角,以及利用陀螺仪ENC-03MB测量小车的实时角速度,并利用光电编码器采集小车的前进速度,实现了小车的平衡和速度控制。在小车可以保持两轮自平衡前提下,采用摄像头CCD-TSL1401作为路径识别传感器,实时采集赛道信息,并通过左右轮差速控制转弯,使小车始终沿着赛道中线运行。实验表明,该控制系统能较好地控制小车平衡快速地跟随跑道运行,具有一定的实用性。 关键词:控制;自平衡;实时性 近年来,随着经济的不断发展和城市人口的日益增长,城市交通阻塞以及耗能、污染问题成为了一个困扰人们的心病。新型交通工具的诞生显得尤为重要,两轮自平衡小车应运而生,其以行走灵活、便利、节能等特点得到了很大的发展。但是,昂贵的成本还是令人望而止步,成为它暂时无法广泛推广的一个重要原因。因此,开展对两轮自平衡车的深入研究,不仅对改善平衡车的性价比有着重要意义,同时也对提高我国在该领域的科研水平、扩展机器人的应用背景等具有重要的理论及现实意义。全国大学生飞思卡尔智能车竞赛与时俱进,第七届电磁组小车首次采用了两轮小车,模拟两轮自平衡电动智能车的运行机理。在此基础上,第八届光电组小车再次采用两轮小车作为控制系统的载体。小车设计内容涵盖了控制、模式识别、传感技术、汽车电子、电气、计算机、机械及能源等多个学科的知识。 1 小车控制系统总体方案 小车以16位单片机MC9S12XS128MAL作为中央控制单元,用陀螺仪和加速度传感器分别检测小车的加速度和倾斜角度[1],以线性CCD采集小车行走时的赛道信息,最终通过三者的数据融合,作为直流电机的输入量,从而驱动直流电机的差速运转,实现小车的自动循轨功能。同时,为了更方便、及时地观察小车行走时数据的变化,并且对数据作出正确的处理,本系统调试时需要无线模块和上位机的配合。小车控制系统总体架构。 2 小车控制系统自平衡原理 两轮小车能够实现自平衡功能,并且在受到一定外力的干扰下,仍能保持直立状态,是小车可以沿着赛道自动循线行走的先决条件。为了更好地控制小车的行走方式,得到最优的行走路径,需要对小车分模块分析与控制。 本控制系统维持小车直立和运行的动力都来自小车的两个轮子,轮子转动由两个直流电机驱动。小车作为一个控制对象,它的控制输入量是两个电机的转动速度。小车运动控制可以分解成以下3个基本控制任务。 (1)小车平衡控制:通过控制两个电机正反方向运动保持小车直立平衡状态; (2)小车速度控制:通过调节小车的倾斜角度来实现小车速度控制,本质上是通过控制电机的转速来实现小车速度的控制。 (3)小车方向控制:通过控制两个电机之间的转动差速实现小车转向控制。 2.1 小车平衡控制 要想实现小车的平衡控制,需要采取负反馈控制方式[2]。当小车偏离平衡点时,通过控制电机驱动电机实现加、减速,从而抵消小车倾斜的趋势,便可以保持车体平衡。即当小车有向前倾的趋势时,可以使电机正向加速,给小车一个向前的加速度,在回复力和阻尼力的作用下,小车不至于向前倾倒;当小车有向后倾的趋势时,可以使小车反向加速,给小车一个向后的加速度,从而不会让小车向后倾倒,。

两轮自平衡小车毕业设计毕业论文

两轮自平衡小车毕业设计毕业论文 目录 1.绪论 (1) 1.1研究背景与意义 (1) 1.2两轮自平衡车的关键技术 (2) 1.2.1系统设计 (2) 1.2.2数学建模 (2) 1.2.3姿态检测系统 (2) 1.2.4控制算法 (3) 1.3本文主要研究目标与容 (3) 1.4论文章节安排 (3) 2.系统原理分析 (5) 2.1控制系统要求分析 (5) 2.2平衡控制原理分析 (5) 2.3自平衡小车数学模型 (6) 2.3.1两轮自平衡小车受力分析 (6) 2.3.2自平衡小车运动微分方程 (9) 2.4 PID控制器设计 (10) 2.4.1 PID控制器原理 (10) 2.4.2 PID控制器设计 (11) 2.5姿态检测系统 (12) 2.5.1陀螺仪 (12) 2.5.2加速度计 (13) 2.5.3基于卡尔曼滤波的数据融合 (14) 2.6本章小结 (16) 3.系统硬件电路设计 (17) 3.1 MC9SXS128单片机介绍 (17) 3.2单片机最小系统设计 (19)

3.3 电源管理模块设计 (21) 3.4倾角传感器信号调理电路 (22) 3.4.1加速度计电路设计 (22) 3.4.2陀螺仪放大电路设计 (22) 3.5电机驱动电路设计 (23) 3.5.1驱动芯片介绍 (24) 3.5.2 驱动电路设计 (24) 3.6速度检测模块设计 (25) 3.6.1编码器介绍 (25) 3.6.2 编码器电路设计 (26) 3.7辅助调试电路 (27) 3.8本章小结 (27) 4.系统软件设计 (28) 4.1软件系统总体结构 (28) 4.2单片机初始化软件设计 (28) 4.2.1锁相环初始化 (28) 4.2.2模数转换模块(ATD)初始化 (29) 4.2.3串行通信模块(SCI)初始化设置 (30) 4.2.4测速模块初始化 (31) 4.2.5 PWM模块初始化 (32) 4.3姿态检测系统软件设计 (32) 4.3.1陀螺仪与加速度计输出值转换 (32) 4.3.2卡尔曼滤波器的软件实现 (34) 4.4平衡PID控制软件实现 (35) 4.5两轮自平衡车的运动控制 (37) 4.6本章小结 (39) 5. 系统调试 (40) 5.1系统调试工具 (40) 5.2系统硬件电路调试 (40) 5.3姿态检测系统调试 (41)

基于单片机的两轮自平衡车控制系统设计

基于单片机的两轮自平衡车控制系统设计 摘要 两轮自平衡车是一种高度不稳定的两轮机器人,就像传统的倒立摆一样,本质不稳定是两轮小车的特性,必须施加有效的控制手段才能使其稳定。本文提出了一种两轮自平衡小车的设计方案,采用重力加速度陀螺仪传感器MPU-6050检测小车姿态,使用互补滤波完成陀螺仪数据与加速度计数据的数据融合。系统选用STC 公司的8位单片机STC12C5A60S2为主控制器,根据从传感器中获取的数据,经过PID算法处理后,输出控制信号至电机驱动芯片TB6612FNG,以控制小车的两个电机,来使小车保持平衡状态。 整个系统制作完成后,小车可以在无人干预的条件下实现自主平衡,并且在引入适量干扰的情况下小车能够自主调整并迅速恢复至稳定状态。通过蓝牙,还可以控制小车前进,后退,左右转。 关键词:两轮自平衡小车加速度计陀螺仪数据融合滤波 PID算法 Design of Control System of Two-Wheel Self-Balance Vehicle based on Microcontroller Abstract Two-wheel self-balance vehicle is a kind of highly unstable two-wheel robot. The characteristic of two-wheel vehicle is the nature of the instability as traditional inverted pendulum, and effective control must be exerted if we need to make it stable. This paper presents a design scheme of two-wheel self-balance vehicle. We need using gravity accelerometer

卡尔曼滤波 平衡车

kalman滤波器 分类:CV相关2012-03-19 00:26 178人阅读评论(2) 收藏举报 卡尔曼是匈牙利当代著名数学家,Kalman滤波器源自于他的博士毕业论文和1960年发表的论文《A New Approach to Linear Filtering and Prediction Problems》(线性滤波与预测问题的新方法)。 卡尔曼滤波器是一个最优化自回归数据处理方法,它是一个时域滤波器,是通过对时域上包含噪声的有限测量数据,计算出最接近实际值的方法。这里说它是一种递归的估计,是指只要获得上一时刻的状态值以及当前的状态观测值就可以计算出当前状态的估计值,因此不需要记录观测或者估计的历史信息。既然是一个时域滤波器,也就无需像低通滤波器那样,需要在频域进行滤波器设计而需要再转换到时域来实现。卡尔曼滤波器的典型应用是从一组包含噪声的对无物体位置的观察序列中预测出物体的位置坐标和 速度,它的核心内容是5个计算公式,然而,仅仅给出5个计算公式显得过于抽象,不便于理解。这里,为了更加形象、更容易地理解卡尔曼滤波器,我给出网上摘取的一个例子来一步一步探索卡尔曼滤波器的原理。 一、举例说明卡尔曼滤波器的原理(该例子转载自网络) 假设被研究对象是某个房间内的温度(当然,这里假设该房间内各处的温度是相等的,房间内不存在空调、风扇、暖气等局部发热或散热的设备)。根据生活经验,你认为这个房间内的温度是恒定的。即,下一时刻的温度等于当前时刻的温度。但是,你的生活经验并不是绝对的准确,所以,你确信自己对房间内温度的估计存在上下几度的偏差。这个偏差在这里假设是高斯白噪声的,即:偏差跟时间没有关系而且是服从高斯分布的。另外,在房间内放置一个温度计,用于测量房间内的温度。但是,由于制造工艺等因素,温度计的测量值也不是绝对准确的,即:温度计的测量值与真实值之间也存在一定的偏差,这个偏差也假设是高斯白噪声的。那么,对于任意时刻,我们可以得到该房间的两个温度值:你根据生活经验得到的估计值(系统的预测值)和温度计的测量值(系统的测量值)。下面我们用这两个值结合他们各自的噪声来估算出房间的实际温度值。假如我们要估算k时刻的实际温度值。首先你要根据k-1时刻的温度值,来预测k时刻的温度。 (1)因为你相信温度是恒定的,所以你会得到k时刻的温度预测值是跟k-1时刻一样的,假设是23度,同时该值的高斯噪声的偏差是5度。(5是这样得到的:如果k-1

自动搜索平衡车的两种数学模型

一、研究背景及意义 自动搜索平衡车的两种数学模型。它是用小车及车上倒置的摆模拟控制火箭垂直起飞的装置。外力u(t)目的使摆保持与车身垂直。火箭起飞阶段必须维持与地面垂直,待到达指定速度和高度后才开始转弯。倘若火箭在起飞阶段受侧风干扰,火箭轴线偏离铅垂线一个小角度,则在重力作用下偏离角度会越来越大最终导致发射失败。为防止失败.在火箭轴线刚偏离垂直位置时,应启动发动机产生横向力校正火箭位置使其与地面垂直。为使问题简化,设车与摆只在平面内运动并忽略杆的质量,电机本身的惯性,摩擦,风力等因素,设摆球质量为m ,车质量为M ,摆长为l 。 二、建模机理 令H(t)和V(t)分别是小车通过铰链作用于杆也就是作用于摆球的水平分力和垂直分力。当然杆通过铰链作用于车的反作用力为—H(t)和—V(t)。应用牛顿定律得到:小车水平方向 )()()(y t H t u t M -=。。 (2-1) 摆水平方向 2 .. .. .. 22 )(sin cos ) sin ()(θθθθθml ml y m l y dt d m t H -+=+= (2-2) 摆垂直方向 )cos ()(22 θl dt d m mg t V =- 2 ... )(cos sin θθθθml ml --= (2-3)

力的分解 θ θ cos sin )()(=t V t H (2-4) 将式(2)带入式(1)得到 )()(sin cos )(2. ....t u ml ml y m M =-++θθθθ 将式(2-2)、(2-3)代入式(2-4)得到 θ θ θθθθθθθθcos sin )(cos sin )(sin cos .. 2 . .... 2 . .. = ---+l l g l l y 三、模型简化 上面两式均系非线性方程。该系统目的在于控制摆与地面垂直,可以认为θ(t)和 )(t 。θ都接近于零。在此假设下,取sin θ(t)≈θ(t),cos θ(t)≈l ,同时略去此θ(t),) (t 。 θ更高阶的无穷小量,经过如此线性化后得到 )(.. ..t u ml y m M =++θ) ( (2-5) 0.. .. =-+θθg l y (2-6) 对式(5)和式(6)等号两边分别取拉氏变换并令初始条件为零便求出由u (t )到y(t)的传递函数)(g s yu 和由u(t)到θ(t)的传递函数 )(s g u θ分别如下: ])([)(222g m M Mls s g ls s g yu +--= (2-7) g m M Mls s g u )(1 )(2+--=θ (2-8) 或者写为

读书报告:平衡车的原理及功能实现方法

读书报告:平衡车的原理及功能实现方法 载人平衡车是一种靠电能提供能源,能够载人直立平衡行走的交通工具。随着社会的发展,公共交通的拥堵也成为普片现象,越来越受到人们的关注。载人平衡车由于其体积小巧轻便,适用能力强,能够有效缓解交通压力。 两轮自平衡车是当今机器人研究领域的一个重要分支,它涵盖了电子、机械、自动控制与信号处理等多个学科。其结构类似于倒立摆,具有非线性、强耦合的特性。由电源、电动机构成其原动机模块;由机构件轮、轴构成其机械传动机模块;由控制芯片、陀螺仪构成其信息机模块。 平衡车模块简图 一.原动机模块 2个直流电动机安装在车体平台下面,驱动电机的H桥由4个N沟道功率MOS管AUIRFB4410组成[5j。采用IR公司的IR2184作为MOS的栅极驱动器,IR2184是一种双通道、高速高压型功率开关器件,具有自举浮动电源。在自举上作模式下,对自举电容和自举_极管的要求都较高。自举电容的耐压值仅为VCC的电压,但其容量由下列因素决定:驱动器电路的静态电流、电平转换器电流、MOSFET的栅源正向漏电流、MOSFET的栅极电容的大小、自举电容的漏电流的大小、以及上作的频率。 为了减少自举电容的漏电流,应尽量采用非电解电容,本系统中采用陶瓷电容。自举_极管必须能够承受干线上电压的反压,当开关频率较低时,要求电容保持电荷较民时间,一极管的高温反向漏电流尽量小。同样为了减少自举电容反馈进电源的电荷数量,_极管应选用超快恢复_极管。在本系统中自举_极管采用了快恢复一极管FR307,自举电容采用1 uF的陶瓷电容,完全满足本系统的需要。驱动电路中在栅极也串联了一个10 S2的小电阻,虽然这个电阻会影响一定的MOS开启速度,但可以减少栅极出现的振铃现象,减少EMI;为了加快MOS 管的关断速度,在设计电机驱动电路时在栅极电阻上反向并联了一个_极管;另外在栅极对地接了一个lOK的下拉电阻,这个电阻可以防比MOSFET被击穿;最后在电机的输出端对电源和地接了4个TVS管,一方而可以续流,另外还可以

自平衡车模型分析

自平衡车模型分析

一、 求解车体除两轮外部分动能 车体沿X 轴方向速度: R L V R L x 2 )(cos θθθθ&&&++= 车体沿Y 轴方向速度: R D L V R L y )(sin θθθ&&-= 车体沿Z 轴方向速度 θθsin &L V z = 车体沿过质心的Z 轴的转动惯量为: m yz J J J y z z ???++=d sin cos 22θθθ 由于假设车体关于ZY 平面对称,因此 0d =???m yz 因此 θθθ22sin cos y z z J J J += 则可以得到车体的平动动能: ??? ? ??+-+++=2221)sin ())(sin ()2)(cos 21θθθθθθθθθ&&&&&&L R D L R L E R L R L kp ( 车体的转动动能为: ??? ? ??+-+=22222 ))()(sin cos (21θθθθθ&&&x R L y z kp J R D J J E 则车体的总动能为: 21kp kp kp E E E += 二、 求解车轮动能 左车轮平动速度为:

R V L x w L θ&= 右车轮平动速度为 R V R x w R θ&= 两轮有同样的绕垂直于半径的转动速度: R D R L w )(θθω&&-= 则左车轮的动能为: 2 22)(2121)(21??? ? ??-++=D R J J R m E R L R L L kw L θθθθφ&&&& 则右车轮的动能为: 222)(2121)(21??? ? ??-++=D R J J R m E R L R R R kw R θθθθφ&&&& 三、 求解车体势能 由于在平地上行进,车轮势能不变。车体整体势能可变部分表示为: θcos g m E p p = 四、 拉格朗日函数的求解 得到最终的拉格朗日函数为: p kw kw kp kp E E E E E L L R -+++=21 依据拉格朗日动力学法求解,进行如下运算: R L M M L dt L d --=??-??θ θ& L L L M L dt L d =??-??θθ& R R R M L dt L d =??-??θθ& 得到动力学方程: 方程一: () R L R L z y p p R L p x p M M R D J J L m gL m R L m J L m --=??? ? ??--+--+++222 )(cos sin sin 2)(cos )θθθθθθθθθ&&&&&&&&(

智勇者平衡车

概述 智勇者(Braves)作为睿智飞讯公司旗下的高端品牌,以”智能科技、乐享生活“为使命,在运输机器人、家庭服务机器人以及智能家居电器的设计、研发等领域具有突出的竞争优势。智勇者思维车、平衡车是自主开发的一款利用动态平衡原理控制行驶的智能机器人。该产品已在全球多个国家销售,深受好评。 智勇者思维车平衡车简介 智勇者平衡车工作原理 电动平衡车也叫平衡车、体感车、思维车等,自动平衡运作原理主要是建立在一种被称为“动态稳定”(Dynamic Stabilization)的基本原理上,也就是车辆本身的自动平衡能力。以内置的精密固态陀螺仪(Solid-State Gyroscopes)来判断车身所处的姿势状态,透过精密且高速的中央微处理器计算出适当的指令后,驱动马达来做到平衡的效果。正确打开电源且能保持足够运作的电力,车上的人就不用担心有倾倒跌落的可能,这与一般需要靠驾驶人自己进行平衡的滑板车等交通工具大有不同 由于的思维车平衡车的两轮结构,使得它的重心在上、支点在下,故在非控制状态(或静态)下为一不稳定系统。然而,可以利用倒立摆系统的控制原理,通过微处理器的控制使它能够如倒立摆一样稳定在一个平衡位置处,并能在保持平衡的状态下按照使用者的指令要求正常运行。两轮自平衡电动车实际上是一级直线式倒立摆和旋转式倒立摆的结合体,它的控制原理与倒立摆系统的基本一致。更形象地说,自平衡电动车的工作原理更像人行走的过程。 对于人而言,当人体的重心向前倾斜并失去平衡时,人通过自身的感觉器官能够察觉到自己身体的倾斜(角度),于是他会做出一个反应——向前迈出一步来防止自己摔倒在地上。如果身体一直前倾,为了保持平衡,人就会一步又一步地往前走。因此,如果将两个由电机驱动的车轮看成人的双腿,再加上能够测量车体相对于水平面倾角大小和速度的传感器,最后通过微处理器的控制便能够实现车体自平衡的效果。因而当人站在车上时,只要将身体带动车体一起往前倾(或后倾)就可以实现电动车载人前进(或后退)智勇者思维车平衡车是新一代的节能、环保、便携的代步工具。充电2个小时,可以行驶25km,短途代步非常方便,可以代替公交和地铁。在环境污染日益严重的背景下,平衡车作为一种新型环保的代步工具,可以有效缓解资源的消耗和空气污染。 智勇者思维车平衡车同时也是户外休闲锻炼时理想工具。阳光、郊外、平衡车,快乐惬意,乐享生活。 主要产品型号

两轮平衡车说明书

双轮自平衡车 学校:德州学院 学生:唐文涛焦方磊李尧 指导老师:孟俊焕 时间:二О一四年7 月10日~10 月 6 日共12 周

中文摘要 两轮自平衡车是动态平衡机器人的一种。2008年我国奥运会的时候安全保卫工作使用过它,到今年两轮平衡车已经发展的相对成熟。在国家节能、降耗、环保、低碳、经济的方针政策下,两轮平衡车进行了资源整合、技术升级,在原来的两轮单轴式自平衡的基础上采取两轴双轮可折叠设计,两轮自平衡车具有运动灵活、智能控制、操作简单、驾驶姿势多样、节省能源、绿色环保、转弯半径为0等优点。适用于在狭小空间内运行,能够在大型购物中心、国际性会议或展览场所、体育场馆、办公大楼、大型公园及广场、生态旅游风景区、大学校园、城市中的生活住宅小区等各种室内或室外场合中作为人们的中、短距离代步工具。也是集娱乐、代步、炫酷为一体的,主打形象是汽车伴侣解决停车后几公里内的代步问题。 两轮自平衡车主要由驱动电机、锂电池组、车轮、车身等组成。其工作原理:车体内置的精密固态陀螺仪来判断车身所处的姿势状态,透过精密且高速的中央微处理器计算出适当的指令后,驱动马达来做到平衡的效果。 关键词:陀螺仪,动态稳定,折叠,驱动系统,平衡。 English abstract Two rounds of self-balancing vehicle is one of the dynamic balance of the robot. In 2008 the Olympic Games security work used it in our country, in the year to balance two rounds of car has developed relatively mature. In the national energy saving, consumption reduction, environmental protection, low carbon, economic policies and regulations, the two rounds of balance of resource integration, technology upgrades, in the original two rounds of single shaft type taken on the basis of self balancing two shaft double folding design, two rounds of self-balancing vehicle movement, flexible, intelligent control, simple operation and driving posture diversity, save energy, green environmental protection, the advantages of turning radius of 0. Apply to run in narrow space, can in a large shopping center, the international conference and exhibition venues, sports venues, office buildings, large parks and square, ecological tourism scenic spot, the university campus, city life in residential quarters and other indoor or outdoor situations as the medium and short distance transport of people. Is entertainment, walking, cool as a whole, the main image is car partner solve the problem of parking within a few kilometers after walking. Two rounds of self-balancing vehicle is mainly composed of drive motor, lithium battery pack, wheel, body, etc. Its working principle: the body's built-in precision solid-state gyroscope to judge the body's position, through sophisticated and high-speed central microprocessor

平衡车原理和扑街解释

平衡车原理和扑街解释 摘要: 说到仆街的原因或者原理,必须从平衡车的原理说起。本文为 buaa_dingo 原创一、自平衡基本原理所有前后方向具有自平衡功能的车辆,双轮或者独轮,都是基于倒立摆原理。自平衡车实际上是一个比较 ... 说到仆街的原因或者原理,必须从平衡车的原理说起。本文为buaa_dingo原创 一、自平衡基本原理 所有前后方向具有自平衡功能的车辆,双轮或者独轮,都是基于倒立摆原理。自平衡车实际上是一个比较简单的单级倒立摆系统,只是由于有驾驶员的操纵,为这个简单的单级倒立摆系统引入了一些非线性因素,但是也并不复杂。 简单文字描述如下: 1)最简单的自平衡车系统,包括控制器、姿态传感器和执行器(电机),以及必要的电源(电池)和结构零件(让小车组合在一起具备功能)。其中,控制器能够测量姿态传感器输出的姿态信息,并比较精确地控制电机运转;姿态传感器可以每秒输出100-500次姿态数据(俯仰、滚转、方向);执行器(电机)可以提供整车运动的动力。 2)当驾驶者向前倾斜身体时,会带动车子向前倾斜。此时控制器可通过姿态传感器感知到这个倾斜,并命令电机向前旋转。这样,驾驶者前倾的时候,车子也会往前走,从而“追上”打算往前倾倒的驾驶者,保持动态平衡。 3)当驾驶者身体向后仰时,会带动车子向后倾斜。此时控制器可通过姿态传感器感知到这个倾斜,并命令电机向后旋转。这样,驾驶者后仰的时候,车子也会往后走,从而“追上”打算向后倾倒的驾驶者,保持动态平衡。 4)控制器每秒钟执行100-500次2、3的过程,不停地测量车子姿态,不停地调整电机的转动方向和转速。这样就保持一个动态的平衡。不管驾驶者往前还是往后倾斜,车子都会自动“追上”驾驶者,保持平衡。 参考文献:

大学毕业设计---基于arm的两轮自平衡车模型系统设计课程

中北大学 课程设计说明书 学生姓名: *杰学号:* 学院: 仪器与电子学院 专业: * 题目: 基于ARM的两轮自平衡车模型系统设计 指导教师:李锦明职称: 副教授 2015 年1 月30 日

摘要 近年来,两轮自平衡车的研究与应用获得了迅猛发展。本文提出了一种两轮自平衡小车的设计方案,采用陀螺仪L3G4200以及MEMS加速度传感器MMA7260构成小车姿态检测装置,使用卡尔曼滤波完成陀螺仪数据与加速度计数据的数据融合。系统选用飞思卡尔32位单片机Kinetis K60为控制核心,通过滤波算法实现车身控制,人机交互等。 整个系统制作完成后,各个模块能够正常并协调工作,小车可以在无人干预条件下实现自主平衡。同时在引入适量干扰情况下小车能够自主调整并迅速恢复稳定状态。 关键词:两轮自平衡陀螺仪姿态检测卡尔曼滤波数据融合

目录 1 课程设计目的 (1) 2 设计内容和要求 (1) 2.1 设计要求 (1) 2.2 研究意义 (1) 2.3 研究内容 (2) 3 设计方案及实现情况 (2) 3.1 两轮平衡车的平衡原理 (2) 3.2 系统方案设计 (3) 3.3 系统最终方案 (6) 3.4 系统软件设计 (9) 3.5 电路调试 (16) 4 课程设计总结 (18) 参考文献 (19) 附录 (20) 致谢 (21)

1 课程设计目的 (1)掌握嵌入式系统的一般设计方法和设计流程; (2)学习嵌入式系统设计,掌握相关IDE开发环境的使用方法; (3)掌握ARM的应用; (4)学习掌握嵌入式系设计的全过程; 2 设计内容和要求 2.1 设计要求 (1)学习掌握基于ARM Cortex-M4内核的Kinetis K60系列单片机的工作原理及应用;(2)学习掌握加速度计、陀螺仪的工作原理及应用; (3)设计基于PID控制的两轮自平衡车模型系统的工作原理图及PCB版图; 2.2 研究意义 近年来,随着电子技术的发展与进步,移动机器人的研究不断深入,成为目前科 学研究最活跃的领域之一,移动机器人的应用范围越来越广泛,面临的环境和任务也 越来越复杂,这就要求移动机器人必须能够适应一些复杂的环境和任务。比如,户外 移动机器人需要在凹凸不平的地面上行走,有时环境中能够允许机器人运行的地方比 较狭窄等。如何解决机器人在这些环境中运行的问题,逐渐成为研究者关心的问题[1]。 两轮自平衡机器人的概念正是在这样一个背景下提出来的,这种机器人区别于其 他移动机器人的最显著的特点是:采用了两轮共轴、各自独立驱动的工作方式(这种驱 动方式又被称为差分式驱动方式),车身的重心位于车轮轴的上方,通过轮子的前后移 动来保持车身的平衡,并且还能够在直立平衡的情况下行驶。由于特殊的结构,其适 应地形变化能力强,运动灵活,可以胜任一些复杂环境里的工作。 两轮自平衡机器人自面世以来,一直受到世界各国机器人爱好者和研究者的关 注,这不仅是因为两轮自平衡机器人具有独特的外形和结构,更重要的是因为其自身 的本质不稳定性和非线性使它成为很好的验证控制理论和控制方法的平台,具有很高 的研究价值。

双轮自平衡车设计报告

双轮自平衡车设计报告 学院………….......... 班级…………………… 姓名………………..手机号…………………..姓名………………..手机号…………………..姓名………………..手机号…………………..

目录 一、双轮自平衡车原理 二、总体方案 三、电路和程序设计 四、算法分析及参数确定过程

一.双轮自平衡车原理 1.控制小车平衡的直观经验来自于人们日常生活经验。一般的人通过简单练习就可以让一个直木棒在手 指尖上保持直立。这需要两个条件:一个是托着木棒的手掌可以移动;另一个是眼睛可以观察到木棒的倾斜角度和倾斜趋势(角速度)。通过手掌移动抵消木棒的倾斜角度和趋势,从而保持木棒的直立。这两个条 件缺一不可,让木棒保持平衡的过程实际上就是控制中的负反馈控制。 图1 木棒控制原理图 2.小车的平衡和上面保持木棒平衡相比,要简单一些。因为小车是在一维上面保持平衡的,理想状态下,小车只需沿着轮胎方向前后移动保持平衡即可。 图2 平衡小车的三种状态 3.根据图2所示的平衡小车的三种状态,我们把小车偏离平衡位置的角度作为偏差;我们的目标是通过 负反馈控制,让这个偏差接近于零。用比较通俗的话描述就是:小车往前倾时车轮要往前运动,小车往后倾时车轮要往后运动,让小车保持平衡。 4.下面我们分析一下单摆模型,如图4所示。在重力作用下,单摆受到和角度成正比,运动方向相反的回复力。而且在空气中运动的单摆,由于受到空气的阻尼力,单摆最终会停止在垂直平衡位置。空气的阻尼力与单摆运动速度成正比,方向相反。 图4 单摆及其运动曲线

类比到我们的平衡小车,为了让小车能静止在平衡位置附近,我们不仅需要在电机上施加和倾角成正比的回复力,还需要增加和角速度成正比的阻尼力,阻尼力与运动方向相反。 5 平衡小车直立控制原理图 5.根据上面的分析,我们还可以总结得到一些调试的技巧:比例控制是引入了回复力;微分控制是引入了阻尼力,微分系数与转动惯量有关。 在小车质量一定的情况下,重心位置增高,因为需要的回复力减小,所以比例控制系数下降;转动惯量变大,所以微分控制系数增大。在小车重心位置一定的情况下,质量增大,因为需要的回复力增大,比例控制系数增大;转动惯量变大,所以微分控制系数增大。 二.总体方案 ■小车总框图

线控两轮平衡车的建模与控制研究

线性系统理论 上机实验报告 题目:两轮平衡小车的建模与控制研究 完成时间:2016-11-29 1.研究背景及意义 现代社会人们活动范围已经大大延伸,交通对于每个人都十分重要。交通工具的选择则是重中之重,是全社会关注的焦点。 随着社会经济的发展,人民生活水平的提高,越来越多的小汽车走进了寻常百姓家。汽车快捷方便、省时省力,现代化程度高,种类繁多的个性化设计满足了不同人的需求。但它体积大、重量大、污染大、噪声大、耗油大、技术复杂、使用不便、价格贵、停放困难,效率不高,而且还会造成交通拥堵并带来安全隐患。相比之下,自行车是一种既经济又实用的交通工具。中国是自行车大国,短距离出行人们常选择骑自行车。自行车确实方便,但在使用之前需要先学会骑车,虽然看似简单,平衡能力差的人学起来却很困难,容易摔倒,造成人身伤害。另外,自行车毕竟不适宜长距离的行驶,遥远的路程会使人感到疲劳。 那么,究竟有没有这样一种交通工具,集两者的优点于一身呢既能像汽车一样方便快捷又如自行车般经济简洁,而且操作易于掌握,易学又易用。两轮自平衡车概念就是在这样的背景下提出来的。 借鉴目前国内外两轮自平衡车的成功经验,本文提出的研究目标是设计一款新型的、结构简单、成本低的两轮自平衡车,使其能够很好地实现自平衡功能,同时设计结果通过MATLAB进行仿真验证。

2.研究内容 自平衡式两轮电动车是一个非线性、强耦合、欠驱动的自不稳定系统,对其控制策略的研究具有重大的理论意义。我们通过分析两轮平衡车的物理结构以及在平衡瞬间的力学关系,得到两轮车的力学平衡方程,并建立其数学模型。运用MATLAB 和SIMULINK 仿真系统的角度θ、角加速度? θ、位移x 和速度的? x 变化过程,对其利用外部控制器来控制其平衡。 3.系统建模 两轮平衡车的瞬时力平衡分析如图1所示。下面将分析归纳此时的力平衡方程[1-3],并逐步建立其数学模型。 对两轮平衡车的右轮进行力学分析,如图2所示。 依据图2对右轮进行受力分析,并建立其平衡方程: =R R R R M X f H ? - (1) R R R R J C f R ??? =- (2) 同理,对左轮进行受力分析,并建立其平衡方程: =R L L L M X f H ? - (3) L L L L J C f R ??? =- (4) 两轮平衡车摆杆的受力分析如图3所示,由图3可以得到水平和垂直方向的平衡方程以及转矩方程。 水平方向的平衡方程: H H x R L p m +=? ? (5) 其中θsin L x x m p +=,则有: ? ?? ?? ?*+*-=θθθθcos sin 2 L L x x m p (6)

自平衡车模型分析

自平衡车模型分析 设置各状态变量以及控制变量:

一、 求解车体除两轮外部分动能 车体沿X 轴方向速度: R L V R L x 2 )(cos θθθθ ++= 车体沿Y 轴方向速度: R D L V R L y )(sin θθθ -= 车体沿Z 轴方向速度 θθ sin L V z = 车体沿过质心的Z 轴的转动惯量为: m yz J J J y z z ???++=d sin cos 22θθθ 由于假设车体关于ZY 平面对称,因此 0d =???m yz 因此 θθθ22sin cos y z z J J J += 则可以得到车体的平动动能: ??? ? ??+-+++=2221)sin ())(sin ()2)(cos 21θθθθθθθθθ L R D L R L E R L R L kp ( 车体的转动动能为: ??? ? ??+-+=22222 ))()(sin cos (21θθθθθ x R L y z kp J R D J J E 则车体的总动能为: 21kp kp kp E E E += 二、 求解车轮动能 左车轮平动速度为: R V L x w L θ = 右车轮平动速度为

R V R x w R θ = 两轮有同样的绕垂直于半径的转动速度: R D R L w )(θθω -= 则左车轮的动能为: 2 22)(2121)(21??? ? ??-++=D R J J R m E R L R L L kw L θθθθφ 则右车轮的动能为: 222)(2121)(21??? ? ??-++=D R J J R m E R L R R R kw R θθθθφ 三、 求解车体势能 由于在平地上行进,车轮势能不变。车体整体势能可变部分表示为: θcos g m E p p = 四、 拉格朗日函数的求解 得到最终的拉格朗日函数为: p kw kw kp kp E E E E E L L R -+++=21 依据拉格朗日动力学法求解,进行如下运算: R L M M L dt L d --=??-??θθ L L L M L dt L d =??-??θθ R R R M L dt L d =??-??θθ 得到动力学方程: 方程一: () R L R L z y p p R L p x p M M R D J J L m gL m R L m J L m --=??? ? ??--+--+++2 22)(cos sin sin 2)(cos )θθθθθθθθθ ( 方程二:

两轮自平衡车

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

引用图片 (原文件名: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) 视频在这里https://www.360docs.net/doc/d72406755.html,/v_show/id_XMjM1OTQ3NzU2.html 现在还不是很稳,我想有两个原因,一个是参数没调到最佳,调了好久,先这样吧。再有就是电源太烂了,电机是额定6V的可实际电压空载的时候才打到5伏多一点,在平衡的时候没测,肯定更低了。 陀螺仪ENC-03是直接接AD输入端的,因为按照datasheet上边的参考电路有过冲问题,这个问题有个帖子已经讨论过,很多人都是 围绕怎么补救这个问题,我来算一下为什么这样子,呵呵~如下: 高通滤波脉冲响应(原文件名:QQ截图未命名.jpg) 因为有这个问题,会给倾角数据造成影响,所以我就去掉了滤波,直接接到AD。这样1deg/s有0.67mv,10位AD参考电压是3.36V,最小才能测到3.28mv,小于4.8deg时就测不到了。本来担心这个问题,但试了下KALMAN滤波,真是强啊!角度很精确,就这么用了。 车体研究了好久,没有用钢化玻璃的设备,就一直没动工。有天去打水突然看到旁边有个大的三合板,呵呵,于是乎。。

基于单片机的两轮自平衡车控制系统设计

基于单片机的两轮自平衡车控制系统设计 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]

基于单片机的两轮自平衡车控制系统设计 摘要 两轮自平衡车是一种高度不稳定的两轮机器人,就像传统的倒立摆一样,本质不稳定是两轮小车的特性,必须施加有效的控制手段才能使其稳定。本文提出了一种两轮自平衡小车的设计方案,采用重力加速度陀螺仪传感器MPU-6050检测小车姿态,使用互补滤波完成陀螺仪数据与加速度计数据的数据融合。系统选用STC公司的8位单片机STC12C5A60S2为主控制器,根据从传感器中获取的数据,经过PID算法处理后,输出控制信号至电机驱动芯片TB6612FNG,以控制小车的两个电机,来使小车保持平衡状态。 整个系统制作完成后,小车可以在无人干预的条件下实现自主平衡,并且在引入适量干扰的情况下小车能够自主调整并迅速恢复至稳定状态。通过蓝牙,还可以控制小车前进,后退,左右转。 关键词:两轮自平衡小车加速度计陀螺仪数据融合滤波 PID算法Design of Control System of Two-Wheel Self-Balance Vehicle based on Microcontroller Abstract Two-wheel self-balance vehicle is a kind of highly unstable two-wheel robot. The characteristic of two-wheel vehicle is the nature of the instability as traditional inverted pendulum, and effective control must be exerted if we need to make it stable. This paper presents a design scheme of two-wheel self-balance vehicle. We need using gravity

相关文档
最新文档