资源简介
基于STM32F1全向轮小车控制(代码),可直接使用balance软件进行控制,包括MPU6050,CAN,PWM,I2C等模块
代码片段和文件信息
#include “control.h“
#include “filter.h“
/**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/
u8 Flag_TargetFlag_Change; //相关标志位
u8 temp1; //临时变量
float Voltage_CountVoltage_All; //电压采样相关变量
float Gyro_K=0.004; //陀螺仪比例系数
int j;
u8 Velocity_rxbuf[8]={111316202531380}; //用于解锁CAN控制的数组
#define X_PARAMETER (0.5f)
#define Y_PARAMETER (sqrt(3)/2.f)
#define L_PARAMETER (1.0f)
/**************************************************************************
函数功能:小车运动数学模型
入口参数:X Y Z 三轴速度或者位置
返回 值:无
**************************************************************************/
void Kinematic_Analysis(float Vxfloat Vyfloat Vz)
{
Target_A = Vx + L_PARAMETER*Vz+gyro[2]*Gyro_K;
Target_B = -X_PARAMETER*Vx + Y_PARAMETER*Vy + L_PARAMETER*Vz+gyro[2]*Gyro_K;
Target_C = -X_PARAMETER*Vx - Y_PARAMETER*Vy + L_PARAMETER*Vz+gyro[2]*Gyro_K;
}
/**************************************************************************
函数功能:获取位置控制过程速度值
入口参数:X Y Z 三轴位置变化量
返回 值:无
**************************************************************************/
void Kinematic_Analysis2(float Vxfloat Vyfloat Vz)
{
Rate_A = Vx + L_PARAMETER*Vz;
Rate_B =-X_PARAMETER*Vx + Y_PARAMETER*Vy + L_PARAMETER*Vz;
Rate_C =-X_PARAMETER*Vx - Y_PARAMETER*Vy + L_PARAMETER*Vz;
}
/**************************************************************************
函数功能:所有的控制代码都在这里面
5ms定时中断由MPU6050的INT引脚触发
严格保证采样和数据处理的时间同步
**************************************************************************/
int EXTI9_5_IRQHandler(void)
{
if(PBin(5)==0)
{
EXTI->PR=1<<5; //清除LINE5上的中断标志位
Flag_Target=!Flag_Target;
if(delay_flag==1)
{
if(++delay_50==10) delay_50=0delay_flag=0; //给主函数提供50ms的精准延时
}
if(Flag_Target==1) //5ms读取一次陀螺仪和加速度计的值
{
CAN1_SEND(); //CAN发送
if(Usart_Flag==0&&Usart_ON_Flag==1) memcpy(rxbufUrxbuf8*sizeof(u8)); //如果解锁了串口控制标志位,进入串口控制模式
Read_DMP(); //===更新姿态
Key();//扫描按键变化
for(j=0;j<=7;j++) //用于解锁CAN控制的起始语句
{
if(j==7)
{
RC_Velocity=rxbuf[j];
break;
}
if(rxbuf[j]!=Velocity_rxbuf[j]) //判断收到的CAN指令是否为起始或停止指令。
break;
}
return 0;
} //===10ms控制一次,为了保证M法测速的时间基准,首先读取编码器数据
Encoder_A=Read_Encoder(2);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 17203 2017-03-02 15:47 1.全向轮小车源码\BALANCE\CONTROL\control.c
文件 1140 2017-01-05 11:23 1.全向轮小车源码\BALANCE\CONTROL\control.h
文件 2891 2015-07-09 14:05 1.全向轮小车源码\BALANCE\DataScope_DP\DataScope_DP.C
文件 586 2015-07-09 14:05 1.全向轮小车源码\BALANCE\DataScope_DP\DataScope_DP.h
文件 19342 2012-12-14 11:16 1.全向轮小车源码\BALANCE\DMP\dmpKey.h
文件 6765 2012-12-14 11:16 1.全向轮小车源码\BALANCE\DMP\dmpmap.h
文件 84104 2015-07-09 14:05 1.全向轮小车源码\BALANCE\DMP\inv_mpu.c
文件 4335 2015-07-09 14:05 1.全向轮小车源码\BALANCE\DMP\inv_mpu.h
文件 57839 2015-07-09 14:05 1.全向轮小车源码\BALANCE\DMP\inv_mpu_dmp_motion_driver.c
文件 3386 2015-07-09 14:05 1.全向轮小车源码\BALANCE\DMP\inv_mpu_dmp_motion_driver.h
文件 2105 2015-12-07 15:52 1.全向轮小车源码\BALANCE\filter\filter.c
文件 399 2015-12-07 15:52 1.全向轮小车源码\BALANCE\filter\filter.h
文件 11128 2016-12-30 11:18 1.全向轮小车源码\BALANCE\MPU6050\MPU6050.c
文件 14762 2016-12-23 15:17 1.全向轮小车源码\BALANCE\MPU6050\mpu6050.h
文件 7859 2017-03-02 15:45 1.全向轮小车源码\BALANCE\show\show.c
文件 354 2016-01-06 14:35 1.全向轮小车源码\BALANCE\show\show.h
文件 2420 2016-12-27 15:41 1.全向轮小车源码\HARDWARE\ADC\adc.c
文件 189 2016-12-20 12:37 1.全向轮小车源码\HARDWARE\ADC\adc.h
文件 9530 2017-01-06 09:38 1.全向轮小车源码\HARDWARE\CAN\can.c
文件 740 2016-12-23 17:22 1.全向轮小车源码\HARDWARE\CAN\can.h
文件 2887 2015-06-07 00:48 1.全向轮小车源码\HARDWARE\DataScope_DP\DataScope_DP.C
文件 581 2015-05-04 12:37 1.全向轮小车源码\HARDWARE\DataScope_DP\DataScope_DP.h
文件 5247 2016-12-27 14:25 1.全向轮小车源码\HARDWARE\ENCODER\encoder.c
文件 590 2016-12-20 11:22 1.全向轮小车源码\HARDWARE\ENCODER\encoder.h
文件 759 2016-12-21 14:46 1.全向轮小车源码\HARDWARE\EXTI\exti.c
文件 442 2015-12-07 15:51 1.全向轮小车源码\HARDWARE\EXTI\exti.h
文件 10779 2015-12-07 15:46 1.全向轮小车源码\HARDWARE\IIC\IOI2C.c
文件 3118 2015-11-03 08:45 1.全向轮小车源码\HARDWARE\IIC\IOI2C.h
文件 2581 2017-01-06 15:20 1.全向轮小车源码\HARDWARE\KEY\key.c
文件 282 2017-01-06 15:20 1.全向轮小车源码\HARDWARE\KEY\key.h
............此处省略163个文件信息
- 上一篇:基于STM32F4控制步进电机代码
- 下一篇:基于STM32F1循迹小车源码
相关资源
- 基于STM32F1循迹小车源码
- 基于STM32F4控制步进电机代码
- 基于stm32f4zgt6超声波模块测距.rar
- 基于STM32F4、VGUS的电子称制作
- MLX90614(GY906)___STM32F407ZGT6
- 基于stm32f103的正弦波峰峰值.zip
- STM32F103OLED显示菜单实验
- 基于STM32F103C8T6超声波测距源码及接线
- STM32F103+W5500做的web服务
- STM32F1xx中文参考手册/STM32F103ZET6中文
- 嵌入式系统课程设计报告--多功能电子
- 嵌入式系统课程设计--多功能电子钟设
- 基于STM32F103的温湿度SI7021程序
- 基于STM32F103的ADS7828驱动程序
- STM32F103ZET6控制二维码模块GM65
- 基于stm32f103的lcd按键可修改时间闹钟
- 基于STM32F103单片机的RFID程序
- 三路超声波测距,亲测有用
- STM32F103C8T6按键调整参数断电保护,温
- STM32F407FreeRTOS开发手册V1_0
- STM32F401移植uCosIII
- STM32F4驱动人体红外传感器
- STM32F103+SPEEX做的对讲机原理图+源程序
- 基于STM32F407ZGT6库函数写的Modbus协议
- 基于STM32F407写的LoRa SX-1278源码
- 基于STM32F4的霍尔编码器解析程序
- SHT30 温度、湿度传感器 STM32F130ZET6
- stm32F767控制步进电机源程序
- STM32F103 Hal库 EV1527 433M解码
- STM32F4 EMWIN开发手册V3.0(正点原子)
评论
共有 条评论