1、双轮自平衡车设计报告学院班级姓名手机号姓名手机号姓名手机号目录一、 双轮自平衡车原理二、 总体方案三、 电路和程序设计四、 算法分析及参数确定过程一. 双轮自平衡车原理1.控制小车平衡的直观经验来自于人们日常生活经验。一般的人通过简单练习就可以让一个直木棒在手指尖上保持直立。这需要两个条件:一个是托着木棒的手掌可以移动;另一个是眼睛可以观察到木棒的倾斜角度和倾斜趋势(角速度) 。通过手掌移动抵消木棒的倾斜角度和趋势,从而保持木棒的直立。这两个条件缺一不可,让木棒保持平衡的过程实际上就是控制中的负反馈控制。图 1 木棒控制原理图2.小车的平衡和上面保持木棒平衡相比,要简单一些。因为小车是在一维上
2、面保持平衡的,理想状态下,小车只需沿着轮胎方向前后移动保持平衡即可。图 2 平衡小车的三种状态3.根据图 2 所示的平衡小车的三种状态,我们把小车偏离平衡位置的角度作为偏差;我们的目标是通过负反馈控制,让这个偏差接近于零。用比较通俗的话描述就是:小车往前倾时车轮要往前运动,小车往后倾时车轮要往后运动,让小车保持平衡。4.下面我们分析一下单摆模型,如图 4 所示。在重力作用下,单摆受到和角度成正比,运动方向相反的回复力。而且在空气中运动的单摆,由于受到空气的阻尼力,单摆最终会停止在垂直平衡位置。空气的阻尼力与单摆运动速度成正比,方向相反。图 4 单摆及其运动曲线类比到我们的平衡小车,为了让小车能
3、静止在平衡位置附近,我们不仅需要在电机上施加和倾角成正比的回复力,还需要增加和角速度成正比的阻尼力,阻尼力与运动方向相反。5 平衡小车直立控制原理图 5.根据上面的分析,我们还可以总结得到一些调试的技巧:比例控制是引入了回复力;微分控制是引入了阻尼力,微分系数与转动惯量有关。在小车质量一定的情况下,重心位置增高,因为需要的回复力减小,所以比例控制系数下降;转动惯量变大,所以微分控制系数增大。在小车重心位置一定的情况下,质量增大,因为需要的回复力增大,比例控制系数增大;转动惯量变大,所以微分控制系数增大。二. 总体方案小车总框图 三电路和程序设计1.主要元器件选型A. STM32F103RCT6
4、 最小核心板小容量增强型,32 位基于 ARM 核心的带 16 或 32K 字节闪存的微控制器 USB、CAN、6 个定时器、2 个ADC 、 6 个通信接口功能。 内核:ARM 32 位的 Cortex-M3 CPU 最高 72MHz 工作频率,在存储器的 0 等待周期访问时可达 1.25DMips/MHz(Dhrystone2.1)。 单周期乘法和硬件除法。 存储器 从 16K 到 32K 字节的闪存程序存储器。 从 6K 到 10K 字节的 SRAM。 时钟、复位和电源管理 2.03.6 伏供电和 I/O 引脚。 上电/断电复位(POR/PDR) 、可编程电压监测器(PVD)。 416M
5、Hz 晶体振荡器。 内嵌经出厂调校的 8MHz 的 RC 振荡器。 产生 CPU 时钟的 PLL 带校准功能的 32kHz RTC 振荡器 低功耗 睡眠、停机和待机模式 VBAT 为 RTC 和后备寄存器供电 2 个 12 位模数转换器,1 s 转换时间(多达 16 个输入通道) 转换范围:0 至 3.6V 双采样和保持功能 温度传感器 DMA: 7 通道 DMA 控制器 支持的外设:定时器、 ADC、SPI、I2C 和 USART 多达 80 个快速 I/O 端口 26/37/51 个 I/O 口,所有 I/O 口可以映像到 16 个外部中断;几乎所有端口均可容忍 5V 信号B. L298N
6、 双直流电机驱动模块板载一个 L298N 马达控制芯片和一个 7805 稳压芯片。模块可以同时驱动 2 个直流电机或者一个五线四相式步进电机。模块输入电压 612V常用的电机驱动 功能够用 切资料也很好找。C.传感器 MPU6050 模块此六轴模块采用先进的数字滤波技术(卡尔曼滤波) ,能有效降低测量噪声,提高测量精度。模块内部集成了运动引擎 DMP,获取四元数得到当前姿态。姿态测量精度 0.01 度,稳定性极高,性能甚至优于某些专业的倾角仪!采用高精度的陀螺加速度计 MPU6050 通过 IIC 协议输出保证数据的准确性。电压:3V6V 。电流:10000) Encoder_Integral
7、=10000; /积分限幅if(Encoder_Integral-10000) Encoder_Integral=-10000; /限制遥控最大速度Velocity=Encoder*kp+Encoder_Integral*ki; /速度控制if(Turn_Off(Angle_Balance,Voltage)=1) Encoder_Integral=0; /电机关闭后清除积分return Velocity;关于这个包括了遥控前进后退的速度控制函数,做如下解析:1.在 usart3.c 中的串口 3 接收中断函数,改变 Flag_Qian 和 Flag_Hou,进而遥控小车。2.Encoder_I
8、ntegral=Encoder_Integral-Movement; 遥控的速度通过积分融入速度控制器,减缓了速度突变对直立控制的影响。3.积分限幅是增加了遥控之后必不可少的,如果没有积分限幅,就无法限制小车的最大前进速度。这样在遥控的过程中,小车很容易倒下。换句话说积分的最大赋值决定了小车的最大前进速度,而 Movement 值决定了小车的给定速度。平衡小车转向控制调试小车转向环使用 P(比例)控制器或者 P(比例)D(微分)控制器,我们前面说过,一般的控制系统单纯的 P 控制或者 PI 控制就可以了,转向环就是这种“一般的控制系统” ,对响应要求不高,所以我们只使用 P 控制即可。其实转向
9、信息可以通过编码器和陀螺仪获取,所以转向环有多种控制方式。总结如下:用左右轮编码器数据之差的积分值作为偏差,以 Z 轴陀螺仪作为微分控制的输入进行 PD 控制,目标是保持转向角为设定值。优点是算法比较科学,引入微分控制可以增大比例控制系数以提高系统的响应。缺点是较复杂,积分项影响用户体验、编码器对车轮滑动无法检测、陀螺仪存在漂移。 Z 轴陀螺仪的数据积分得到转向角作为偏差,以 Z 轴陀螺仪作为微分控制的输入进行 PD 控制,目标是保持转向角为设定值。优点是避免了编码器对车轮滑动无法检测现象,引入微分控制可以增大比例控制系数以提高系统的响应。缺点是陀螺仪的漂移长时间积分导致系统误差增大。使用左右
10、轮编码器数据之差作为转向速度偏差进行 P 控制,目标是保持转向速度为设定值。优点是简单,缺点是编码器对车轮滑动无法检测,对编码器精度有较高要求。使用 Z 轴陀螺仪的数据作为转向速度偏差进行 P 控制,目标是保持转向速度为设定值。优点是算法简单、避免了编码器对车轮滑动无法检测现象、陀螺仪漂移等问题,缺点是陀螺仪对高频信号采样失真。我们本次调试使用了简单可靠的第 4 套方案。在平衡小车里面,相比于直立环和速度环,转向环是最不重要的,如果缺少了直立环和速度环,小车无法长时间保持直立。转向环的作用是使小车行驶的过程中,跟随我们给定的 Z 轴角速度,具体来说,如果我们设定的 Z 轴目标角速度为零,那么小
11、车应该走一个直线,这也是我们本次实验需要完成的目标。调试过程包括确定 kp 极性和大小。确定 kp 的极性为了方便本小节的实验,我们先关闭之前调试好的直立环和速度环。我们得到的 MPU6050 输出的陀螺仪的原始数据,通过观察数据,我们发现最大值不会超过 4 位数(正常应用在平衡小车上的时候) ,再根据 7200 代表占空比 100%,所以我们估算 kp 值应该在 02 之间。先设定 kp=-0.6,我们可以看到,当我们把小车摁在地上旋转的时候,我们可以很轻易的转动小车,说明目前小车没有通过负反馈把目标角速度控制在零附近,而是通过正反馈帮助我们旋转小车,说明了这个时候小车的转向系统是正反馈的。
12、然后我们设定 kp=0.6,这个时候我们把小车摁在地上旋转会发现使用很大的力也难以转动小车,小车会反抗我们,并通过电机保持角速度为零,这就是典型的角速度负反馈效果,也是我们需要看到的效果。确定 kp 的大小下面我们进行平衡小车转向控制 kp 值的整定,此时需要打开直立环和速度环。 首先设定 kp=0.2,这个时候我们可以看到,小车的转向控制比较弱,走直线的偏差非常大。设定 kp=0.6,这个时候我们可以看到,小车的角速度控制的响应有所加快,但是走直线还不是特别理想。设定 kp=1,这个时候我们可以看到,小车走直线的效果已经很不错了,我们接下来尝试加大 kp 值看一下效果。设定 kp=1.6 这
13、个时候我们可以看到,小车虽然走直线的效果更好了,但是小车在急停的时候有剧烈的抖动。所以这组参数不可取。我们可以确定得到 kp=1 是转向控制 P 参数的理想值。至此,转向控制调试部分就告一段落了,如果要加入遥控转功能的话,转向控制函数应该改成如下所示(其中加粗部分为是实现遥控功能的代码):int turn(int encoder_left,int encoder_right,float gyro)float Turn,Kp=1,Bias;if(1=Flag_Left) Turn_Amplitude=1100;else if(1=Flag_Right) Turn_Amplitude=-1100;
14、else Turn_Amplitude=0;Bias=gyro-0;Turn=-Bias*Kp;Turn+=Amplitude;return Turn;关于这个包括了遥控左右转向的转向控制函数,做如下解析:1.在 usart3.c 中的串口 3 接收中断函数,改变 Flag_Left 和 Flag_Right,进而遥控小车。1. Turn+=Amplitude; 转向遥控叠加在转向控制里面。附录 1.双轮自平衡车物料清单:部分 名称 个数 价格底 座 铝合金底座 1电 机 带编码器和减速器电机带轮胎 2电机驱动 L298N 双直流电机驱动 1传感器模块 MPU6050 传感器 GY-87 1超声波模块 HC-SR04 超声波模块 2降压模块 LM2596 DC-DC 降压 可调 1电源 12V 可充电电池带充电器 1核心控制板 STM32F103RCT6 最小核心板 1STM 下载器 ST-LINK V2 1蓝牙模块 A09 HC-05 主从机一体蓝牙模块 1Wifi 模块 ESP8266 串口 wifi 模块 CH-340 1万能板 7*9 万能版 3电源座及插头 5.5*2.1 2导线和杜邦线 导线 母对母杜邦线 若干铜柱及螺丝 普通 若干附录 2摘要 1、STM32F103RCT6 芯片资料2、买模块自带的资料。3、飞思卡尔设计的方案。