
麦克纳姆轮小车
简介
该工程在基础小车上进行延申至麦克纳姆轮小车,小车由简单的直行,进化为能够直线行驶、平移控制小车走直线,并将电源模块、主控模块、传感器模块以及通信模块集成一体缩小主控板空间。
简介:该工程在基础小车上进行延申至麦克纳姆轮小车,小车由简单的直行,进化为能够直线行驶、平移控制小车走直线,并将电源模块、主控模块、传感器模块以及通信模块集成一体缩小主控板空间。开源协议
:MIT
描述
题目要求
麦克纳姆轮小车在遥控的控制下进行平移和前进。
题目分析
该项目小车以STM32为主控,由麦克纳姆轮的运动分解使小车能够进行前进、后退以及平移。陀螺仪配合编码电机使得小车能走直线,驱动模块驱使小车运行,数传模块配合串口屏设计遥控控制小车的运行。遥控在集成板上集合供电模块以及稳压模块为串口屏供电。
原理图设计说明
STM32拓展板实物图:

稳压模块:
原理图:
工作原理:利用可调电阻将电源电压稳定在自己所需的电压值。
MPU6050:
原理图:
工作原理:陀螺仪的原理就是,一个旋转物体的旋转轴所指的方向在不受外力影响时,是不会改变的。人们根据这个道理,用它来保持方向。然后用多种方法读取轴所指示的方向,并自动将数据信号传给控制系统。
TB6612FNG:
原理图:
工作原理:TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机。
软件说明
sport_flag=0;
if(sport_flag==1)//
{
Motor_A=Incremental_PI1(Encoder_A,30+Turn_A);
Motor_B=Incremental_PI2(Encoder_B,30+Turn_B);
Motor_C=Incremental_PI3(Encoder_C,30+Turn_C);
Motor_D=Incremental_PI4(Encoder_D,30+Turn_D);
}
if(sport_flag==0)//
{
stop();
}
if(sport_flag==2)//
{
Motor_A=Incremental_PI1(Encoder_A,-30+Turn_A);
Motor_B=Incremental_PI2(Encoder_B,-30+Turn_B);
Motor_C=Incremental_PI3(Encoder_C,-30+Turn_C);
Motor_D=Incremental_PI4(Encoder_D,-30+Turn_D);
}
if(sport_flag==4)////右移
{
Motor_A=Incremental_PI1(Encoder_A,30+Turn_A);
Motor_B=Incremental_PI2(Encoder_B,-30+Turn_B);
Motor_C=Incremental_PI3(Encoder_C,-30+Turn_C);
Motor_D=Incremental_PI4(Encoder_D,30+Turn_D);
}
if(sport_flag==3)//
{
Motor_A=Incremental_PI1(Encoder_A,-30+Turn_A);
Motor_B=Incremental_PI2(Encoder_B,30+Turn_B);
Motor_C=Incremental_PI3(Encoder_C,30+Turn_C);
Motor_D=Incremental_PI4(Encoder_D,-30+Turn_D);
}
if(sport_flag==6)//右上
{
Motor_A=Incremental_PI1(Encoder_A,30+Turn_A);
Motor_B=0;
Motor_C=0;
Motor_D=Incremental_PI4(Encoder_D,30+Turn_D);
}
int Incremental_PI1 (int Encoder1,int Target1)
{
static float Bias1,PWM1;
Bias1=Target1-Encoder1; //计算偏差
PWM1+=Velocity_KP*(Bias1-Last_bias1)+Velocity_KI*Bias1; //增量式PI控制器
Last_bias1=Bias1; //保存上一次偏差
return PWM1; //增量输出
}
int Incremental_PI2 (int Encoder2,int Target2)
{
static float Bias2,PWM2;
Bias2=Target2-Encoder2; //计算偏差
PWM2+=Velocity_KP*(Bias2-Last_bias2)+Velocity_KI*Bias2; //增量式PI控制器
Last_bias2=Bias2; //保存上一次偏差
return PWM2; //增量输出
}
int Incremental_PI3 (int Encoder3,int Target3)
{
static float Bias3,PWM3;
Bias3=Target3-Encoder3; //计算偏差
PWM3+=Velocity_KP*(Bias3-Last_bias3)+Velocity_KI*Bias3; //增量式PI控制器
Last_bias3=Bias3; //保存上一次偏差
return PWM3; //增量输出
}
int Incremental_PI4 (int Encoder4,int Target4)
{
static float Bias4,PWM4;
Bias4=Target4-Encoder4; //计算偏差
PWM4+=Velocity_KP*(Bias4-Last_bias4)+Velocity_KI*Bias4; //增量式PI控制器
Last_bias4=Bias4; //保存上一次偏差
return PWM4; //增量输出
}
if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0){}//角度读取
printf("yaw=%.2f ",yaw);
实物展示说明
麦克纳姆轮小车实物图:

串口屏实物图:


注意事项
麦克纳姆轮小车由纯手工制作,编码电机较重,不能手提拓展板,防止小车零件脱落。
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。


评论