一种平衡车的控制电路及其控制方法与流程

文档序号:16122673发布日期:2018-11-30 23:23阅读:1615来源:国知局

本发明涉及健身器材技术领域,特别是涉及一种平衡车的控制电路及其控制方法。

背景技术

两轮自平衡平衡车是一种常用的健身器材,它是由两轮共轴、独立驱动、车身中心位于车轮轴上方,通过运动保持平衡,可不借助外力直立行走。当锻炼者站在平衡车上时,可以有效锻炼自身的平衡能力,因为一旦站姿不正确,就容易导致平衡平衡车的水平平衡被破坏,使得平衡车的应急系统启动,令平衡车停止,平衡车的自动平衡运作原理主要是建立在一种被称为“动态稳定”(dynamicstabilization)的基本原理之上,也就是车辆本身的自动平衡能力。

但在现有技术中,由于有些路面的不平整,会导致平衡车发生小幅度的颠簸,而如果这种小颠簸也能造成平衡车制动,那么会显得平衡车过于“敏感”,现有技术中一般是通过在平衡车的车轮位置设置减震器来减小这种颠簸,然而减震器的减震效果是不稳定的,并且平衡车的体积较小,安装减震器会导致平衡车的重力平衡被打破,需要在制造时进行调节,这就增加了平衡车的制造成本以及降低了生产效率。



技术实现要素:

本发明所要解决的技术问题是针对上述的技术现状而提供一种能稳定调节平衡车小幅振动的控制电路及其控制方法。

为实现上述目的,本发明提供了如下技术方案:

一种平衡车的控制电路,包括了电源,在电源上耦接着功率驱动电路,所述功率驱动电路用于控制电源的启闭,在所述功率驱动电路上耦接着单片机、左电机和右电机,所述单片机用于处理信号,所述左电机用于控制左车轮的正转或反转以及转速,所述右电机用于控制右车轮的正转或反转以及转速,在所述左电机上连接着左电机编码器,在所述右电机上连接着右电机编码器,所述左电机编码器和右电机编码器均与所述单片机耦接,所述功率驱动电路包括了隔离芯片、电机驱动芯片和开关电源芯片,所述隔离芯片用于将单片机与电机驱动芯片隔离,所述电机驱动芯片用于接收单片机产生的pwm信号并发送给左电机和右电机,控制所述左电机、右电机的转向和转速,所述开关电源芯片用于为单片机提供稳定在5v的电源电压。

作为本发明的具体技术方案,所述单片机的型号为mcuxs128。

作为本发明的改进,在所述单片机上耦接着角度传感器,用于监测平衡车的转动角度。

作为本发明的进一步改进,在所述单片机上耦接着陀螺仪。

作为本发明的优选,所述隔离芯片的型号为74ls244,所述电机驱动芯片的型号为btn7971,所述开关电源芯片的型号为lm2596。

一种采用上述的控制电路对平衡车进行控制的方法,包括了如下步骤:

1)、启动电源,驱动左电机和右电机工作,由左电机带动左车轮、右电机带动右车轮转动,使得平衡车前进;

2)、由陀螺仪对平衡车的水平角度进行监测,当平衡车处于瞬时平衡状态时,两个电机处于相对静止状态,保持平衡车直立,如果平衡车的水平角度发生变化,即平衡车的平衡被破坏,则由陀螺仪将角度变化信号传递给角度传感器,再由角度传感器将纠偏信号传递给单片机;

3)、单片机根据纠偏信号的极性控制电机转向,车轮向后转动来纠正后仰,车轮向前转动来纠正前倾。

作为上述控制方法的改进,在步骤3)中,单片机接收到纠偏信号,然后在单片机中对纠偏信号进行卡尔曼滤波和平衡算法处理,得出姿态调整所需的车轮加速度值,换算为电机的控制量,通过导线发送到电机编码器,由电机编码器控制左右两个电机分别对左右车轮进行转向和转速调整。

与现有技术相比,本发明的优点在于:通过对两轮自平衡车的平衡原理、结构,软件设计及硬件设计部分进行改进,并通过设计关键程序段,所有程序都经调试、试运行,经实践证明硬件设计及软件设计正确合理。通过程序反复修改,硬件持续改进,最终实现了自平衡,平衡效果较好。

附图说明

图1为本发明实施例中平衡车的结构框图;

图2为图1中功率驱动电路的结构图;

图3为本发明实施例中平衡车的动态平衡原理图。

具体实施方式

以下结合附图实施例对本发明作进一步的详细描述。

如附图所示,本实施例先公开了一种平衡车的控制电路,包括了电源,在电源上耦接着功率驱动电路,功率驱动电路用于控制电源的启闭,在功率驱动电路上耦接着单片机、左电机和右电机,单片机用于处理信号,该单片机的型号为mcuxs128,xs128是freescle公司推出的s12系列增强型16位单片机,片内资源丰富,接口模块有spi、sci、ad、pwm等常见模块。因此,可以极大简化程序编写难度,其关键程序段如下:

初始化

#include<math.h>

#defineuintunsignedint

#defineucharunsignedchar

#defineacceleratd0dr0//角度ad转换数据

floatangle_mid,angle_last;//角度调整中值

floatadjust_up1,adjust_up2;//姿态传感器输出整定值

uintpwm_duty1,pwm_duty2;//pwm占空比输出

uintspeed_l,speed_r,speed;

ucharpit_isr_flg=0,i,j=0;

卡尔曼滤波

staticfloatangle,angle_dot;//外部需要引用的变量

staticconstfloatq_angle=0.001,q_gyro=0.003,r_an-

gle=0.5,dt=0.005;//注意:dt的取值为kalman滤波器采样时间;

staticfloatp[2][2]=

{

{1,0},

{0,1}

};

staticfloatpdot[4]={0,0,0,0};

staticconstcharc_0=1;

staticfloatq_bias=0,angle_err,pct_0,pct_1,e,k_0,

k_1,t_0,t_1;

voidkalman_filter(floatangle_m,floatgyro_m)//gyro_m:gyro_measure

{angle+=(gyro_m-q_bias)*dt;

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;

angle_err=angle_m-angle;

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;}。

上述的左电机是用于接收单片机的指令来控制左车轮的正转或反转以及转速,同理,上述的右电机是用于控制右车轮的正转或反转以及转速,在左电机上连接着左电机编码器,在右电机上连接着右电机编码器,左电机编码器和右电机编码器均与单片机耦接,用于将电机的转速等信息编码以编码信号的形式反馈给单片机。

功率驱动电路包括了隔离芯片、电机驱动芯片和开关电源芯片,所述隔离芯片用于将单片机与电机驱动芯片隔离,所述电机驱动芯片用于接收单片机产生的pwm信号并发送给左电机和右电机,控制所述左电机、右电机的转向和转速,所述开关电源芯片用于为单片机提供稳定在5v的电源电压,隔离芯片的型号为74ls244,所述电机驱动芯片的型号为btn7971,所述开关电源芯片的型号为lm2596。功率驱动电路的具体结构如图3所示,平衡车车轮电机的控制采用pwm脉冲宽度调制控制,控制信号通过pwm芯片btn7971b放大后直接控制电机速度和正反转,其具体放大程式如下:voidpwm_calculate(void)

{adjust_up1=angle_dot*0.02;

adjust_up2=angle*20;

if(angle>0)//加速度向前

{if(angle_dot>0)

{pwm_duty1=0-(int)adjust_up1+(int)adjust_up2+

0x06-(int)speed_last;

pwm_duty2=0x00;}

if(angle_dot<=0)

{pwm_duty1=0x06+(int)adjust_up2+(int)adjust_

up1-(int)speed_last;

pwm_duty2=0x00;}

}

elseif(angle<0)//加速度向后

{if(angle_dot<=0)

{pwm_duty1=0x00;

pwm_duty2=(int)adjust_up1-(int)adjust_up2+0x06

-(int)speed_last;}

if(angle_dot>0)

{pwm_duty1=0x00;pwm_duty2=0-(int)

adjust_up2+0x06-(int)adjust_up1-(int)speed_last;}

}

在单片机上耦接着角度传感器和陀螺仪,用于监测平衡车的转动角度。安装于平衡车车身的陀螺仪(陀螺仪的输出值是相对灵敏轴的角速率,角速率对时间积分即可得到周围灵敏轴旋转过的角度值)和加速度传感器实时采集数据,并传送至单片机。单片机进行卡尔曼滤波和平衡算法处理,得出姿态调整所需的车轮加速度值,换算为电机的控制量,通过串口发送到电机做姿态调整。安装于车轮的编码器得到实际速度和运行距离,反馈回单片机经由pid算法进行误差调整后再次将控制量发送到电机,形成一个闭环反馈。整个系统不断进行调整便可以维持平衡车的平衡。当平衡车处于瞬时平衡状态时,两个电机处于相对静止状态,保持平衡车直立(图2a);当出现扰动导致平衡车倾倒(以后仰为例),此时车轮行进方向为向前,角加速度方向向后,平衡车失去平衡(图2b);陀螺仪检测到这个变化配合角度传感器发送纠偏信号给单片机,单片机根据纠偏信号的极性控制电机转向,车轮向后转动来纠正后仰。

控制算法的编写是平衡控制的核心问题,也是最难解决的问题,涉及角度融合和电机控制两个部分。角度融合用于求出陀螺仪和加速度计的互补角度值;电机控制需要根据mcu算出的角度值控制pwm波占空比。具体控制算法编写原理是:首先,读取加速度传感器和陀螺仪的值,然后将其作卡尔曼融合,得到当前平衡车的姿态。再使用pid算法与设定姿态量比较,产生信号控制电机,核心控制单片机每秒300次的姿态反复调整,就能够达到比较完美的动态平衡。控制算法程序如下:

voidmain(void)

{

pll_init(60);//锁相环初始化

pwm_init();//pwm输出初始化

pit_init();//定时器初始化

ad_init();//ad初始化

enableinterrupts;//开总中断

while(1)

{

if(pit_isr_flg==1)

{

pwm_calculate();//pwm计算

pwm_value(pwm_duty1,pwm_duty2);//

pwm}

}

}

一种采用上述的控制电路对平衡车进行控制的方法,包括了如下步骤:

1)、启动电源,驱动左电机和右电机工作,由左电机带动左车轮、右电机带动右车轮转动,使得平衡车前进;

2)、由陀螺仪对平衡车的水平角度进行监测,当平衡车处于瞬时平衡状态时,两个电机处于相对静止状态,保持平衡车直立,如果平衡车的水平角度发生变化,即平衡车的平衡被破坏,则由陀螺仪将角度变化信号传递给角度传感器,再由角度传感器将纠偏信号传递给单片机;

3)、单片机根据纠偏信号的极性控制电机转向,车轮向后转动来纠正后仰,车轮向前转动来纠正前倾。

作为上述控制方法的改进,在步骤3)中,单片机接收到纠偏信号,然后在单片机中对纠偏信号进行卡尔曼滤波和平衡算法处理,得出姿态调整所需的车轮加速度值,换算为电机的控制量,通过导线发送到电机编码器,由电机编码器控制左右两个电机分别对左右车轮进行转向和转速调整。。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1