平衡小车设计_1_系统组成

平衡小车设计_1_系统组成

系统框图

小车系统包括:主控制器、电机、编码盘、电机驱动模块、姿态识别模块、蓝牙串口模块主控制器:stm32(任一款均可,这里使用stm32f103rct6),主要是考虑到stm32具有编码器接口,便于使用编码盘测速,实际51和arduino也能作为平衡车的控制器

电机:使用带码盘的直流无刷电机(用步进电机能达到更好的效果,不过速度一般较慢)

电机驱动模块:常规的TB6612FNG。一般常用的小型驱动有L298N和TB6612FNG,L298N逻辑接口电平是5V,在这里使用stm32逻辑电平3.3V,用L298N需要有电平转换,且L298N体积较大、发热严重,这里不采用

姿态识别模块:MPU6050,内部集成陀螺仪和加速度计,这里使用正点原子的库

蓝牙串口模块:只作从机,HC-05、HC-06等均可

 

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
硬件选择与方案设计: 胶枪、电转、电表等耐用品工具的价格不计算在内,下列原件总共花了我大概450元吧。无意给淘宝商家做广告,所以请大家自动略过图片中的商家logo。 1. 控制板采用原子的STM32 MINI开发板,不带屏的话138元吧。遥控使用板上的红外接收器,当然理论上也可以使用板上的rf无线模块接口。 2. 方位传感器采用iic接口的9轴模块,花了我88大洋。包括加速度、角速度、气压、地磁传感器,主要是考虑到以后别的用途,如果采用6轴模块的话,应该可以降到50元以内吧。 自平衡小车需要使用到1个角速度分量和2个加速度分量,通过融合滤波得到较为准确的小倾斜角度值。查看网上几年前的小,都是使用3个独立ic搭建的,而且还是使用模拟量输入;查找网上资料,现在都是集成ic,接口主要有spi和iic,而且还有中断输入。我买的这个模块只有iic接口,而且没有中断输出,iic接口,故只能采用周期性查询方式;加速度传感器采用的是ADXL345,角速度传感器采用L3G4200D,这两个ic的手册资料是比较齐全的,便于学习。 3. 采用9v减速电机与铝合金支架、轮胎,指导价格98元。卖家给的资料有限,电机的参数不明,减速比都是自己测的。经过实测,电机的减速比大概为150。感觉小的力矩还是比较大的,但是反应速度不够快;采用减速比100的电机或是大轮胎,应该能够改善小的动力性能。电机有两个电源输入端口,通过改变电压的正负极,可以改变电机的转动方向;通过改变驱动电压的大小,可以改变电机的转速。 4. 电机驱动模块采用全隔离的L298N驱动板,抗干扰,30元。如果不是光耦隔离的话会便宜很多。卖家给的实物和照片不太一样,有一条pwm控制线5v有效,3.3v无效,说明商家卖出之前没完整的做过测试。我自己并了个电阻搞定了,也便没有跟卖家纠缠了。 模块有4个逻辑控制输入端口,接控制器的4个io口,控制2个电机的转向与停止;2个pwm输入,接控制器的pwm输出,控制2个电机的转速;1个逻辑电源输入接口,从stm32控制板上取电。驱动部分,2个电源输入端口,接聚合物锂电池,考虑到5v稳压模块从电池取电,减速电机又是9v的,建议采用9v以上的电池(我采用的是12v);4个驱动输出接2个减速电机的4个输入口。 5. 电池采用12v 3000mah的聚合物锂电池,65大洋,不包括充电器的价格。恒定放电电流可达4A,瞬间可达40A。不知道用9v的电池可不可以,当时怕电压太小,所以就没有买。据说普通的电池不能用在小上,因为电机的瞬间电流很大,普通电池无法提供。 6. 逻辑电路5V供电模块,采用LM2596降压模块从12v锂电池取电,6元。该模块的输出电压可调,我调整到了5v输出。 7. 测速码盘,1个18元。为了省钱省地方,我只用了1个,有了这个就可以得到电机的速度反馈,再通过控制调整小的速度、位置。小的动力部分其实不一定要使用减速电机,而可以使用步进电机,这样就可以省掉编码器,而且控制性能更加良好。但这样带来的是需要采用专门的步进电机控制板,还有成本的攀升。不差钱的同志可以考虑采用步进电机方案。 8. 铜柱、洞洞板、连接线等若干。
一、平衡小车原理: 自平衡小车是利用模自身动力使小保持相对的平衡,是一个动态平衡的过程。维持平衡的动力来自轮的运动,由两个直流电机驱动。对模的控制可以分解为三个控制任务: 1、控制小平衡:通过控制小轮正反转使小保持直立平衡。 2、控制小速度:通过控制小的倾角实现小前后运动和速度的控制,其实最终的仍是通过控制电机的转速实现。 3、控制小方向:通过控制小两个电机之间的转速差来实现转向控制。 分解为三个控制任务显得相对简单一点,但是在最终的控制过程中都归结为对一个控制量的控制,这样三个任务之间就会存在耦合,会相互干扰。三个任务中控制平衡是关键,所以对小的速度和方向控制应该尽量的平滑。 二、硬件方案设计的硬件分为三个部分,分别是主控部分、小姿态获取部分以及电机驱动部分。主控板采用目前常用的arduino UNO,同时也可以使用其他arduino通用控制板做主控。 小姿态获取可以有很多方案,使用最多的就是通过加速度计和陀螺仪获取小姿态。理论上只需要两轴加速度计(垂直方向Z轴和沿小运动方向X轴)和一个单轴陀螺仪(沿小轮轴方向,获取绕小轮轴的角速度)。陀螺仪通过角度积分可以获得小角度,但是经过积分会产生累计误差,并且会越来越大,X轴与Z轴加速度计的值也可以算出小的倾角,但是加速度计的瞬时误差较大,所以结合陀螺仪和加速度计两者获得的角度做数据融合可得真实角度。我们使用一个集成了三轴加速度计和三轴陀螺仪的集成芯片MPU6050,这样极大的简化了我们的传感器电路。 小通过两个直流电机驱动轮运动来获得动力,直流电机的驱动电路设计关系到整个系统的稳定性,因为电机反转时会产生反向电动势会干扰到电源系统内其他设备的运行。我们选用L298P做电机驱动器,它内部包含4通道逻辑驱动电路,可同时驱动两个直流电机,输出电流可达2.5A。 三、软件设计之小姿态获取---卡尔曼滤波 在开始之前应该对MPU6050进行设置,主要设置角速度以及加速度的量程,加速度量程有±2g、±4g±8g与±16g,角速度量程分别为±250、±500、±1000与±2000°/sec (dps),可准确的追踪快速动作与慢速动作。在使用之前先设置好量程以便后面的换算。我们小轮轴与传感器Y轴平行,即绕Y轴旋转则有: 那竖直方向弧度计算公式为: angle = atan2(x, z) //结果以弧度表示并介于 -pi 到 pi 之间(不包括 -pi) 如果要换算成具体角度: angle = atan2(x, z) *(180/3.14) 陀螺仪获取角速度积分得到角度公式为:anglen = anglen-1 + gyronn*dt ,式中anglen 为第N次采样的角度值,anglen-1 为第N-1次的角度值,gyronn为两次采样值之间的角速度值,dt为两次采样之间的时间。然后将换算后的两个角度数据进行卡尔曼滤波融合,可获得小真实角度,也可以采用更简单的互补滤波算法。 注意加速度计所得角度与陀螺仪积分角度的方向。 四、软件设计之小姿态调整---PID参数整定 小的姿态获取最终结果是一个角度,就是小偏离平衡位置的倾角。通过以小的这个倾角为变量进行PID控制,输出用于控制轮转速的PWM值,那么相当于小只有一个角度反馈环路,虽然能使小平衡,但是增加了控制难度,所以通常会使用带测速的电机,再加入一个小速度反馈环路,这样使得小更容易控制。关于PID的有下面一个简单易懂的描述: 假设我们想把一个小球稳定在一个光滑的坡顶,这显然是一个不平衡系统,稍有扰动小球就会滚下来。假设恰好平衡的位置坐标是L,我们可以测量到小球的位置是x,那么怎么给小球施加f(x)的力反馈,让它能够平衡呢? 最直观的想法就是f(x) =Kp*(L-x),简单的说就是你在左边我就向右推,你在右边我就向左推,这就是比例因子P; 现在考虑两种情况,同样是在x位置,小球静止和小球具有速度V这两种情况。很明显,如果V>0,我们只需要施加更小的力,因为小球自身的惯性会让它运动向平衡位置。所以可以修正f(x) = Kp*(L-x) – Kd*V。因为速度一般不容易测量,我们常常用位置的变化Δx除以测量的时间差Δt来计算速度,所以这就是微分因子D; 情况继续发生变化,上面考虑的是斜坡静止的情况,如果这个变态的斜坡是移动的怎么办呢?(例如两轮平衡机器人实际上是可以运动的,对于静止的磁悬浮来说,不需要考虑这个参数)这时候我们需要不断的累加并平均x值,来计算平衡位置的L,这个就是积分因子I; 当PID用在我们自平衡小车中时,我们使用角度PD环与速度PI环进行控制。 pwm=angle*k1+angle_dot*k2+range*k3+wheel_speed*k4; PID参数整定步奏如下: 1、将k1,k2,k3,k4均设为0; 2、逐步增大k1,使得小刚好能够来回摆动。 3、再逐步增大k2,使得小相对平稳,太大会使小发生抖动; 4、增大k3,使得小能够来回走动(不是摆动也不是抖动); 5、增大k4,使得小能稳定自平衡。 具体参数调整过程比较繁琐,需要自己体会每个参数的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值