资源简介
基于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循迹小车源码
相关资源
- I2C读写AT24C02 基于STM32F103 cube116540
- 基于stm32f103ve的程序——跑马灯实验
- stm32f407上的两个can发送和接收例程
- STM32f103超声波模块例程
- stm32f103c8t6 4 oled.rar
- stm32f030 IAP Demo(原创)
- STM32F103 串口程序(完整版)
- STM32F103定时器中断程序
- [免费]基于stm32f103ze 的OLED驱动代码
- STM32F103RBT6驱动UC1698控制芯片的160160黑
- STM32F103 DS18B20 V3.5.0固件库驱动程序工
- STM32F103 CC2500完整驱动(模拟SPI)
- SX1280.rar
- STM32F103C8T6+NRF24l01无线通信
- 基于STM32F4x9的LCD显示
- VS1053B编解码器的VDR分布式声音采集卡
- stm32f103.SchDoc
- STM32F103 USART+DMA
- stm32f105-usart-DMA收发demo
- STM32F042F6P6 Uart12DMA;发送中断接收
- 基于STM32F103C8单片机的晶联讯电子JL
- stm32F4+w5300
- STM32F103实现OV7670摄像头显示
- STM32F207学习板例程
- STM32F103VCT6TR - High-density performance lin
- stm32f103 虚拟U盘,调试成功的
- 基于stm32F103vct6的SD卡FATFS文件系统移植
- STM32F030从机中断接收的iic代码,附带
- FreeModbus_Slave+STM32F407+USART2代码亲测可
- STM32F103启动文件HD;MD
评论
共有 条评论