平衡车平衡原理 Arduino
平衡车控制系统设计

平衡车控制系统设计随着科技的发展,平衡车已经成为了人们生活中不可或缺的交通工具之一。
平衡车是一种通过人体重心移动来驱动车辆前进、后退、转弯的智能电动车辆,它具有轻巧便携、环保节能等优点,特别适合城市出行。
平衡车控制系统是平衡车的核心部件。
它通过运用传感器、控制器等技术制作而成,负责对平衡车的速度、方向、倾斜等参数进行监控和控制,让平衡车保持平衡并按照用户指令行驶。
本文将从平衡车控制系统的组成、原理、设计等多个方面进行探讨。
一、平衡车控制系统的组成1.传感器:平衡车控制系统中最核心的元件是传感器,主要有加速度传感器、陀螺仪传感器等。
传感器的功能是采集平衡车的姿态参数,将其通过模拟信号或数字信号传递给控制器。
2.控制器:控制器是平衡车控制系统的核心,主要包括CPU(中央处理器)、存储器、IO口等组成部分。
控制器通过编程,实现平衡车的控制逻辑,对传感器采集的数据进行处理,并根据处理结果控制电机转速和方向,改变平衡车的前进、后退和转向等状态。
3.电机:平衡车控制系统中的电机是平衡车的动力来源。
平衡车通常采用无刷直流电机,因为它具有高效、低噪音等优点。
电机通过控制器的调整,改变电机的转速和方向,从而带动平衡车的前进、后退和转向等行动。
4.电池:平衡车的电池是驱动电机、控制器的能量来源。
常见的电池有铅酸电池、镍氢电池、锂电池等。
锂电池是较为理想的选择,因为它具有能量密度高、重量轻、容量大等优点。
二、平衡车控制系统的工作原理1.倾斜控制:平衡车控制系统通过加速度传感器、陀螺仪传感器等传感器采集平衡车的倾斜角度,当平衡车倾斜时,控制器会通过PWM调整电机的转速和转向,使车辆重新保持平衡状态。
2.速度控制:平衡车控制系统通过编程对电机进行控制,调整电机的转速和方向。
平衡车的速度与电机的转速成正比,控制器通过PWM调整电机的占空比,控制电机的转速,并基于用户的要求对平衡车进行前进、后退、停止的控制。
3.转向控制:平衡车控制系统通过编程调整电机转速和方向,控制平衡车的转向。
平衡车的自动平衡原理

平衡车的自动平衡原理平衡车,也被称为电动平衡车或自平衡车,是近年来备受瞩目的个人交通工具之一。
它能够通过倾斜身体来控制机器人的前进、后退、转弯等动作,给人一种轻松、快捷的出行体验。
那么,平衡车是如何实现自动平衡的呢?本文将围绕这一问题展开论述。
一、陀螺仪原理平衡车的自动平衡原理的核心是陀螺仪。
陀螺仪是一种用来测量角速度的仪器,它基于角动量守恒定律的原理来工作。
平衡车内部搭载的陀螺仪会实时地感知车身的倾斜情况,并将得到的数据传输给中央处理器进行处理。
二、PID控制算法平衡车的自动平衡实现依赖于PID控制算法。
PID控制算法是一种常用的控制方法,它基于比例、积分、微分三个参数来调节输出的控制量,以使系统的误差逐渐趋于零。
在平衡车中,当陀螺仪感知到车身倾斜,控制器会根据具体的倾斜程度和方向,通过PID控制算法计算出适当的控制量,以使车身恢复平衡状态。
具体来说,比例项控制输出与误差成正比,积分项控制输出与误差的积分成正比,微分项控制输出与误差的变化速率成正比。
通过合理地调节比例、积分、微分三个参数,可以使平衡车的响应速度和稳定性达到较优的状态。
三、电机驱动系统平衡车的电机驱动系统是实现自动平衡的重要组成部分。
平衡车通常采用两个电机分别驱动左右轮,使其能够实现前进、后退、转弯等动作。
电机的转速和转向是通过控制器发送的电压信号来控制的。
当平衡车需要保持平衡时,控制器会根据陀螺仪的数据计算出电机的控制信号,使车轮的转速调整到合适的状态。
通过左右轮转速的差异,平衡车就能够实现向前或向后的运动。
当陀螺仪感知到车身倾斜时,控制器会及时调整电机的控制信号,使车轮产生适当的力矩,将车身拉回平衡状态。
四、能量供给平衡车的能量供给也是实现自动平衡的重要环节。
平衡车通常搭载的是锂电池或者锂离子电池,这些电池具有较高的能量密度和较小的体积,能够满足平衡车长时间运行的需求。
电池通过控制器提供电能给电机驱动系统,并通过充电器充电来维持电池的电量。
平衡车是什么原理

平衡车是什么原理平衡车,又称电动平衡车、电动独轮车,是一种个人电动代步工具,近年来在城市出行中越来越受到人们的青睐。
那么,平衡车是如何实现平衡的呢?它的原理是什么呢?接下来,我们就来探讨一下平衡车的工作原理。
首先,平衡车的核心部件是陀螺仪和加速度传感器。
陀螺仪是一种测量和维持方向稳定的设备,而加速度传感器则可以感知车辆的倾斜角度。
当骑手身体向前倾斜时,加速度传感器会感知到这一倾斜动作,并将信息传输给控制系统;控制系统再根据这一信息来调整车轮的转速,使车辆向前倾斜的方向运动,从而实现平衡。
其次,平衡车采用了动态稳定原理。
动态稳定是指在一定条件下,物体通过动态调整来保持平衡。
平衡车在行驶过程中,通过不断地调整车轮的转速和方向,来保持车身的平衡状态。
当骑手向前倾斜时,车轮会根据传感器的信号进行调整,使车身向前运动,从而保持平衡。
这种动态稳定的原理使得平衡车能够在骑手的控制下自如地行驶。
最后,平衡车还借鉴了人类的平衡原理。
人类在行走或骑行时,会不自觉地通过调整身体的重心来保持平衡。
平衡车也是通过模仿人体的平衡原理来实现自身的平衡。
当骑手向前倾斜时,平衡车就会向前移动,保持平衡状态;当骑手向后倾斜时,平衡车也会向后移动,保持平衡。
这种仿生学原理的应用使得平衡车更加智能、灵活。
综上所述,平衡车实现平衡的原理主要包括陀螺仪和加速度传感器的感知调节、动态稳定原理的应用以及仿生学原理的借鉴。
这些原理的综合作用,使得平衡车能够在骑手的控制下稳定行驶,成为一种便捷、环保的出行工具。
希望通过本文的介绍,能让大家对平衡车的工作原理有更深入的了解。
第二个Arduino小车 两轮自平衡

在积分控制中,控制器的输出与输入误差信号的积分成正比关系。对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(System with Steady-state Error)。为了消除稳态误差,在控制器中必须引入“积分项”。积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
myOutput = Output;
myInput = Input;
mySetpoint = Setpoint;
}
PID LIB的参数分别是这样的:
Input 输入值(这里输入卡尔曼融合获取的角度值)
Output PID计算的结果,供电机驱动的PWM使用
PID计算相关代码如下:
PID myPID(&Input, &Output, &Setpoint,2,5,1, DIRECT); //PID对象声明 setupPID(); //PID初始化
....
Kalman_Filter(Adxl_angle, Gyro_sensor); //卡尔曼融合获取angle
Setpoint 期望值(这里输入小车平衡点的角度值)
Kp、Ki、Kd 这是KPI的三个重要参数
这三个参数的详细说明我从网上摘录了一段:
比例(P)控制
比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例关系。当仅有比例控制时系统输出存在稳态误差(Steady-state error)。
平衡车的原理

平衡车的原理
平衡车的原理即是依靠陀螺效应来保持平衡。
陀螺效应是指当一个陀螺在转动时,由于转动惯量的作用,陀螺会抵抗外部力的影响而保持平衡。
平衡车内部配备了陀螺仪和加速度传感器。
陀螺仪通过检测车体的倾斜角度,以及角速度的变化,来判断车体是否处于平衡状态。
加速度传感器则用于检测车体的加速度,并根据检测到的结果对车体进行控制。
当乘客乘坐平衡车时,车体会根据乘客的重心位置来判断车体是否处于平衡状态。
如果乘客稍微偏向前方,车体会通过电机系统自动调整车轮的转速,使车体向后倾斜,将乘客的重心位置拉回到平衡点上。
这种自平衡的调整是通过车轮上的电机来完成的。
电机会根据陀螺仪和加速度传感器的反馈信息,实时调整车轮的转速,从而使车体保持平衡状态。
此外,平衡车还配备了一些安全机制,例如过载保护和防倾翻控制。
过载保护能够限制车体的最大倾斜角度,以防止乘客摔倒或发生意外。
防倾翻控制则能够监测车体的倾斜状态,并及时采取措施,避免车体发生翻倒。
总之,平衡车通过利用陀螺效应和相关的传感器技术,能够实现自动调整车体姿态,保持平衡状态,并提供安全的乘坐体验。
平衡车的自平衡原理与技术

平衡车的自平衡原理与技术平衡车是一种能够自主平衡并行驶的交通工具,它通过内置的传感器和控制系统实现自动调节重心,从而保持平稳的行驶状态。
在这篇文章中,我们将探讨平衡车的自平衡原理与技术。
自平衡是平衡车能够稳定行驶的关键。
要理解自平衡的原理,首先需要了解平衡车的基本组成部分。
平衡车通常由车身、车轮、电池、电机、传感器和控制系统等部分组成。
平衡车的自平衡原理基于倒立摆的控制原理。
倒立摆是一种经典的动力学系统,它由一个可以旋转的摆杆和一个质点组成。
摆杆可以在一个固定的轴上旋转。
当质点远离竖直位置时,地心引力对质点产生倾斜力矩,使摆杆产生旋转。
倒立摆的目标是通过调整摆杆的角度,使质点回到竖直位置并保持平衡。
平衡车通过传感器感知车身的倾斜角度,并将这些信号传送给控制系统。
控制系统通过处理这些信号,计算出平衡车车身的偏离角度,并控制电机产生适当的动力来调整车身的位置,实现自平衡。
当车身前倾时,控制系统会增加电机的输出动力,使车轮向前转动,从而使车身回到平衡位置。
同样地,当车身后倾时,控制系统会减少电机的输出动力,使车轮向后转动,保持平衡。
在控制自平衡的过程中,平衡车还需要考虑其他因素,如惯性、摩擦力和阻力。
为了保持平稳的行驶状态,控制系统需要根据这些因素进行动态调整。
当平衡车发生变速、转弯或遇到障碍物时,控制系统会相应地调整电机的输出动力,以确保平衡车的稳定性。
平衡车的传感器和控制系统起到关键的作用。
传感器通常包括加速度计和陀螺仪,它们能够准确地测量车身的加速度和角速度。
通过将这些测量值与预设的目标值进行比较,控制系统可以及时调整电机的输出,实现自平衡。
除了基本的自平衡原理,平衡车还使用了一些先进的技术来提高稳定性和操控性。
例如,一些平衡车采用了PID控制算法来实现动态控制。
PID控制算法通过比较目标值和实际值之间的差异,自动调整控制输出,以实现更精确的控制。
此外,一些平衡车还采用了倒立摆的扩展原理。
倒立摆的扩展原理是利用运动方程和能量守恒原理,通过计算机模拟和控制来实现平衡。
平衡车平衡原理 Arduino

(2)小车速度控制:使用PD(比例、微分)控制;
Outputs = ksi * (setp0 - positions) + ksp * (setp0 speeds_filter); //速度环控制 PI
(3)小车方向控制:使用PD(比例、微分)控制。
turnoutput = -turnout * ktp - Gyro_z * ktd;//旋转PD算法 控制 融合速度和Z轴旋转定位。
输出中,这样就会彻底消除速度控制误差。第二点,由于加入了速度 控制, 它可以补偿陀螺仪和重力加速度的漂移和误差。 所以此时重力 加速度传感器实际上没有必要了。 此时小车在控制启动的时候,需要保持小车的垂直状态。此时 陀螺仪的积分角度也初始化为0。当然如果电路中已经包括了重力加 速度传感器,也可以保留这部分,从而提高小车的稳定性。在后面的 最终给定的控制方案中,保留了这部分的控制回路。
图4 第二个问题可以通过角度控制给定值来解决。 给定小车直立控制 的设定值,在角度控制调节下,小车将会自动维持在一个角度。通过 前面小车直立控制算法可以知道,小车倾角最终是跟踪重力加速度Z 轴的角度。因此小车的倾角给定值与重力加速度Z轴角度相减,便可 以最终决定小车的倾角 第三个问题分析起来相对比较困难, 远比直观进行速度负反馈分 析复杂。首先对一个简单例子进行分析。假设小车开始保持静止,然 后增加给定速度, 为此需要小车往前倾斜以便获得加速度。 在小车直 立控制下,为了能够有一个往前的倾斜角度,车轮需要往后运动,这 样会引起车轮速度下降(因为车轮往负方向运动了)。由于负反馈, 使得小车往前倾角需要更大。如此循环,小车很快就会倾倒。原本利 用负反馈进行速度控制反而成了“正”反馈。 为什么负反馈控制在这儿失灵了呢?原来在直立控制下的小车
基于Arduino的平衡小车软件设计

TECHNOLOGY AND INFORMATION科学与信息化2022年1月上 111基于Arduino的平衡小车软件设计伍懿君 河源理工学校 广东 河源 517000摘 要 随着社会的发展,两轮自平衡车具有新能源概念、噪音小、占用空间小、控制简单、转换半径接近零等优点,它的应用为缓解目前城市中的拥堵问题起到了一定程度的作用。
本设计采用Arduino作为主控,结合加速度传感器、电机驱动模块完成硬件结构,以及结合PCB电路板,针对平衡小车的前进、后退、平衡运动等功能控制需求,编写了相应的控制代码,实现对上述功能的控制。
本设计合理,构思新颖,科学性强,使用更方便,成本较低,应用前景广泛。
关键词 陀螺仪;加速度计;平衡小车Arduino-Based Balancing Vehicle Software Design Wu Yi-junHeyuan Technology School, Heyuan 517000, Guangdong Province, ChinaAbstract With the development of society, two-wheeled self-balancing vehicle has the advantages of new energy concept, low noise, small occupied space, simple control, conversion radius close to zero and so on. Its application can alleviate the existing congestion problem in the city to a certain extent. In this study, Arduino is used as the main control, combined with the acceleration sensor and motor drive module to complete the hardware structure, and combined with the PCB circuit board, according to the functional control requirements of the balancing vehicle, such as forward, backward and balance movement, the corresponding control code is written to realize the control of the above functions. This design is reasonable, novel, strongly scientific, more convenient for use, with low cost and wide application prospect.Key words gyroscope; accelerometer; balancing vehicle引言 有关法律、法规要求汽车不得在人行道、广场、公园、游乐场和大型会场等类似的场所上行驶,而步行又累时,平衡车可以为人代步。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、全方案整合 通过上面介绍, 将车模直立行走主要的控制算法集中起来, 如图 5
图5
为了实现小车直立行走,需要采集如下信号: (1)小车倾角速度陀螺仪信号,获得小车的倾角和角速度。 (2) 重力加速度信号 (z轴信号),补偿陀螺仪的漂移。该信号可以省略,有速度控制替 代。 (3) 小车电机转速脉冲信号,获得小车运动速度,进行速度控制。 (4) 小车转动速度陀螺仪信号,获得小车转向角速度,进行方向控 制。 在小车控制中的直立、速度和方向控制三个环节中,都使用了比 例微分(PD)控制,这三种控制算法的输出量最终通过叠加通过电机 运动来完成。 (1)小车直立控制:使用小车倾角的PD(比例、微分)控制;
是 5 毫秒调用一次。 3.
speedpiout:小车速度控制函数。根据小车采集到的电机转速和速度设定值,计算电机
的控制量。该函数是 50 毫秒调用一次。 4.
turnspin:方向控制函数输出平滑函数。将方向控制的输出变化量平均分配到 2 步 5 毫秒
的控制周期中。 5.
pwma:电机输出量汇集函数。根据前面的直立控制、速度控制和方向控制所得到的控制
(2)小车速度控制:使用PD(比例、微分)控制;
Outputs = ksi * (setp0 - positions) + ksp * (setp0 speeds_filter); //速度环控制 PI
(3)小车方向控制:使用PD(比例、微分)控制。
turnoutput = -turnout * ktp - Gyro_z * ktd;//旋转PD算法 控制 融合速度和Z轴旋转定位。
速度与小车倾角之间传递函数具有非最小相位特性(在此省略了分 析),在反馈控制下容易造成系统的不稳定性。 这 为了保证系统稳定, 往往取的小车倾角控制时间常数Tz很大。 样便会引起系统产生两个共轭极点, 而且极点的实部变得很小, 使得 系统的速度控制会产生的震荡现象。 这个现象在实际参数整定的时候 可以观察到。那么如何消除速度控制过程中的震荡呢? 要解决控制震荡问题,在前面的小车角度控制中已经有了经验, 那就是在控制反馈中增加速度微分控制。 但由于车轮的速度反馈信号 中往往存在着噪声,对速度进行微分运算会进一步加大噪声的影响。 为此需要对上面控制方法进行改进。 原系统中倾角调整过程时间常数 往往很大, 因此可以将该系统近似为一个积分环节。 将原来的微分环 节和这个积分环节合并, 形成一个比例控制环节。 这样可以保持系统 控制传递函数不变,同时避免了微分计算。 但在控制反馈中, 只是使用反馈信号的比例和微分, 没有利误差 积分, 所以最终这个速度控制是有残差的控制。 但是直接引入误差积 分控制环节,会增加系统的复杂度,为此就不再增加积分控制,而是 通过与角度控制相结合后在进行改进。 要求小车在原地停止,速度为0。但是由于采用的是比例控制, 如果此时陀螺仪有漂移, 或者加速度传感器安装有误差, 最终小车倾 角不会最终调整到0,小车会朝着倾斜的方向恒速运行下去。注意此 时车模不会像没有速度控制那样加速运行了, 但是速度不会最终为0。 为了消除这个误差, 可以将小车倾角设定量直接积分补偿在角度控制
k1>g, (g 是重力加速度)那么回复力的方向便于位移方向相反了。 而为了让倒立摆能够尽快回到垂直位置稳定下来,还需要增加阻尼力。增 加的阻尼力与偏角的速度成正比,方向相反,因此公式1可改为: F = mg θ-mk1 θ -mk2 θ` 按照上述倒立摆的模型,可得出控制小车车轮加速度的算法: a =k1θ+k2θ` 式中θ为小车角度,θ`为角速度。k1 k2都是比例系数 根据上述内容,建立速度的比例微分负反馈控制,根据基本控制理论讨论 小车通过闭环控制保持稳定的条件(这里需要对控制理论有基本了解)。假设外
力干扰引起车模产生角加速度x(t)。沿着垂直于车模地盘方向进行受力分析,可 以得到车模倾角与车轮运动加速度以及外力干扰加速度a(t)x(t)之间的运动方 程。如图3所示。
图3
在角度反馈控制中, 与角度成比例的控制量是称为比例控制; 与 角速度成比例的控制量称为微分控制(角速度是角度的微分) 。因此 上面系数 k1,k2 分别称为比例和微分控制参数。 其中微分参数相当于 阻尼力, 可以有效抑制车模震荡。 通过微分抑制控制震荡的思想在后 面的速度和方向控制中也同样适用。 总结控制车模直立稳定的条件如下: (1)能够精确测量车模倾角θ的大小和角速度θ'的大小;
平衡原理
一、平衡小车原理
平衡小车是通过两个电机运动下实现小车不倒下直立行走的多功能智能小 车,在外力的推拉下,小车依然保持不倒下。这么一说可能还没有很直观的了解 究竟什么是平衡小车, 不过这个平衡小车实现的原理其实是在人们生活中的经验 得来的。如果通过简单的练习,一般人可以通过自己的手指把木棒直立而不倒的 放在指尖上, 所以练习的时候, 需要学会的两个条件: 一是放在指尖上可以移动, 二是通过眼睛观察木棒的倾斜角度和倾斜趋势(角速度) 。通过手指的移动去抵 消木棒倾斜的角度和趋势,使得木棒能直立不倒。这样的条件是不可以缺一的, 实际上加入这两个条件,控制过程中就是负反馈机制。 而世界上没有任何一个人可以蒙眼不看,就可以直立木棒的,因为没有眼睛 的负反馈,就不知道笔的倾斜角度和趋势。这整个过程可以用一个执行式表达:
平衡小车也是这样的过程,通过负反馈实现平衡。与上面保持木棒直立 比较则相对简单,因为小车有两个轮子着地,车体只会在轮子滚动的方向上发生 倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了。
所以根据上述的原理, 通过测量小车的倾角和倾角速度控制小车车轮的加 速度来消除小车的倾角。因此,小车倾角以及倾角速度的测量成为控制小车直立 的关键。我们的亚博智能平衡小车使用了测量倾角和倾角速度的集成传感器陀 螺仪-MPU6050(模块详细介绍在亚博智能平衡小车光盘资料3.硬件资料中)。
(2)可以控制车轮的加速度。 上述控制实际结果是小车与地面不是严格垂直, 而是存在一个对 应的倾角。在重力的作用下,小车会朝着一个方面加速前进。为了保 持小车的静止或者匀速运动需要消除这个安装误差。 在实际小车制作 过程中需要进行机械调整和软件参数设置。 另外需要通过软件中的速 度控制来实现速度的稳定性。在小车角度控制中出现的小车倾角偏 差, 使得小车在倾斜的方向上产生加速。 这个结果可以用来进行小车 的速度控制。下面将利用这个原理来调节小车的速度。
三、测速(物理模型 建立数学模型 传递函数 PD 算法) 假设小车在上面直立控制调节下已经能够保持平衡了, 但是由于 安装误差, 传感器实际测量的角度与车模角度有偏差, 因此小车实际 不是保持与地面垂直,而是存在一个倾角。在重力的作用下,小车就 会朝倾斜的方向加速前进。 控制速度只要通过控制小车的倾角就可以 实现了。具体实现需要解决三个问题: (1)如何测量小车速度? (2)如何通过小车直立控制实现小车倾角的改变? (3)如何根据速度误差控制小车倾角? 第一个问题可以通过安装在电机输出轴上的霍尔测速来测量得 到小车的车轮速度。如图 4 所示。利用控制单片机的外部中断 IO 口 在不间断测速,速度为脉冲信号的个数可以反映电机的转速。
四、转向控制(PD 算法) 通过左右电机速度差驱动小车转向消除小车距离道路中心的偏 差。通过调整小车的方向,再加上车前行运动,可以逐步消除小车距 离中心线的距离差别。 这个过程是一个积分过程, 因此小车差动控制 一般只需要进行简单的比例控制就可以完成小车方向控制。 但是由于 小车本身安装有电池等比较重的物体, 具有很大的转动惯量, 在调整 过程中会出现小车转向过冲现象, 如果不加以抑制, 会使得小车过度 转向而倒下。 根据前面角度和速度控制的经验, 为了消除小车方向控 制中的过冲,需要增加角度微分控制。
量进行叠加,分别得到左右两个电极的输出电压控制量。对叠加后的输出量进行饱和处理。 函数调用周期 5 毫秒。在此请大家注意速度控制量叠加的极性是负。
七、程序(只给出一部分内容)
(1) 时序总算法 void inter() { sei(); //开中断
由于 AVR 芯片的局限,无论进入任何中断,在对应中断函数中,芯 片会将总中断关闭,这样会影响 MPU 获取角度数据。所以在这里必 须进行开全局中断操作。但是在定时中断中,执行的代码不能超过 5ms,不然会破坏了整体的中断。 countpluse(); 加子函数 mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); MPU6050 六轴数据 ax ay az gx gy gz Angletest(); angle 角度和卡曼滤波 angleout(); PD 控制 turncount++; if (turncount > 2) 旋转控制 { turnspin(); 数 //旋转子函 //10ms 进入 //角度环 //获取 //IIC 获取 //脉冲叠
可通过单片机软件实现上述控制算法。 在上面控制过程中, 车模的角度控制和方向控制都是直接将输出电压 叠加后控制电机的转速实现的。 而车模的速度控制本质上是通过调节 车模的倾角实现的, 由于车模是一个非最小相位系统, 因此该反馈控 制如果比例和速度过大,很容易形成正反馈,使得车模失控,造成系 统的不稳定性。因此速度的调节过程需要非常缓慢和平滑。
输出中,这样就会彻底消除速度控制误差。第二点,由于加入了速度 控制, 它可以补偿陀螺仪和重力加速度的漂移和误差。 所以此时重力 加速度传感器实际上没有必要了。 此时小车在控制启动的时候,需要保持小车的垂直状态。此时 陀螺仪的积分角度也初始化为0。当然如果电路中已经包括了重力加 速度传感器,也可以保留这部分,从而提高小车的稳定性。在后面的 最终给定的控制方案中,保留了这部分的控制回路。
二、角度(物理分析 PD 算法)
图1
图2
控制平衡小车,使得它作加速运动。这样站在小车上(非惯性系,以车轮 作为坐标原点)分析倒立摆受力,它就会受到额外的惯性力,该力与车轮的加 速度方向相反,大小成正比。这样倒立摆(如图 2)所受到的回复力为:公式 1 F = mg sin θ-ma cos θ≈mg θ-mk1θ 式 1 中,由于θ很小,所以进行了线 性化。假设负反馈控制是车轮加速度 a 与偏角θ成正比,比例为 k1。如果比例