• 大小: 8.19MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-25
  • 语言: 其他
  • 标签: aa  

资源简介

平衡小车之家--风力摆源码

资源截图

代码片段和文件信息

#include “control.h“	
#include “filter.h“
  /**************************************************************************
作者:平衡小车之家
我的淘宝小店:http://shop114407458.taobao.com/
**************************************************************************/

u8 Flag_TargetFlag_Change;  //相关标志位
float Voltage_CountVoltage_All;  //电压采样相关变量
float Gyro_K=0.004;       //陀螺仪比例系数
int jsum;
#define Period 1630       //单摆周期(ms)一般在1.3~1.6s之间


/**************************************************************************
函数功能:所有的控制代码都在这里面
         5ms定时中断由MPU6050的INT引脚触发
         严格保证采样和数据处理的时间同步  
**************************************************************************/
int EXTI9_5_IRQHandler(void) 
{
if(INT==0) //PB6  接6050 INT

  EXTI->PR=1<<6; //清除LINE1上的中断标志位  
if((++delay_50==10)&&delay_flag)  delay_50=0delay_flag=0;  //给主函数提供50ms的精准延时
Read_DMP();        //===更新姿态
        TimeCnt+=5;        //运行时间定时器  用于角度计算
if(Flag_Zero==0)   //零点读取成功
{
Get_RC();      //获取控制状态
Alpha=(float)TimeCnt/Period*2*PI;      //float不可省略,单摆周期处理成三角函数2π周期
Target_X=Amplitude_x*sin(Alpha);       //X方向目标值函数
Target_Y=Amplitude_y*sin(Alpha+Phase); //Y方向目标值函数
// Read_DMP();    //===更新姿态
Measure_X=(float)tan((Roll-ZHONGZHI_B)/180*2*PI)*Height;        //角度弧度换算与距离计算
Measure_Y=(float)tan((Pitch-ZHONGZHI_A)/180*2*PI)*Height;       //角度弧度换算与距离计算
Motor_X=Position_PID_X(Measure_XTarget_X);
Motor_Y=Position_PID_Y(Measure_Y Target_Y);
Xianfu_Pwm(5800);//限幅5800,满占空比5800,避免出现异常  
   Led_Flash(100);  //===LED闪烁;常规模式 1s改变一次指示灯的状态
}
Key();           //扫描按键变化
if(Turn_Off()==0)   Set_Pwm(Motor_XMotor_Y);     //===如无异常,赋值给PWM寄存器  
 }
 return 0;  

/**************************************************************************
函数功能:赋值给PWM寄存器
入口参数:PWM
返回  值:无
**************************************************************************/
void Set_Pwm(int Motor_Xint Motor_Y)
{
   if(Motor_X>0) PWMA1=Motor_X
                    PWMC1=0;
else              PWMA1=0
                        PWMC1=-Motor_X;

   if(Motor_Y>0) PWMB1=0
                    PWMD1=Motor_Y;
else              PWMB1=-Motor_Y
                        PWMD1=0;

}
/**************************************************************************
函数功能:限制PWM赋值 
入口参数:幅值
返回  值:无
**************************************************************************/
void Xianfu_Pwm(int amplitude)
{
    if(Motor_X<-amplitude) Motor_X=-amplitude;
if(Motor_X>amplitude)  Motor_X=amplitude;
  if(Motor_Y<-amplitude) Motor_Y=-amplitude;
if(Motor_Y>amplitude)  Motor_Y=amplitude;
}

/**************************************************************************
函数功能:按键修改小车运行状态 
入口参数:无
返回  值:无
**************************************************************************/
void Key(void)
{
u8 tmp;
tmp=click_N_Double(120); 
if(tmp==1)  Flag_Stop=1;          //单击控制电机停
    if(tmp==2)  Flag_Show=!Flag_Show; //双击

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        399  2011-04-23 10:24  1.风力摆源码\keilkilll.bat

     文件       8520  2019-08-02 10:40  1.风力摆源码\MiniBalance\CONTROL\control.c

     文件        906  2019-05-15 08:34  1.风力摆源码\MiniBalance\CONTROL\control.h

     文件       2891  2015-07-09 14:05  1.风力摆源码\MiniBalance\DataScope_DP\DataScope_DP.C

     文件        602  2019-05-14 10:03  1.风力摆源码\MiniBalance\DataScope_DP\DataScope_DP.h

     文件      19342  2012-12-14 11:16  1.风力摆源码\MiniBalance\DMP\dmpKey.h

     文件       6765  2012-12-14 11:16  1.风力摆源码\MiniBalance\DMP\dmpmap.h

     文件      84104  2015-07-09 14:05  1.风力摆源码\MiniBalance\DMP\inv_mpu.c

     文件       4335  2015-07-09 14:05  1.风力摆源码\MiniBalance\DMP\inv_mpu.h

     文件      57839  2015-07-09 14:05  1.风力摆源码\MiniBalance\DMP\inv_mpu_dmp_motion_driver.c

     文件       3386  2015-07-09 14:05  1.风力摆源码\MiniBalance\DMP\inv_mpu_dmp_motion_driver.h

     文件       2105  2015-12-07 15:52  1.风力摆源码\MiniBalance\filter\filter.c

     文件        399  2016-04-06 14:10  1.风力摆源码\MiniBalance\filter\filter.h

     文件      11649  2019-08-01 19:59  1.风力摆源码\MiniBalance\MPU6050\MPU6050.c

     文件      14810  2019-05-20 15:34  1.风力摆源码\MiniBalance\MPU6050\mpu6050.h

     文件       9075  2019-05-20 16:20  1.风力摆源码\MiniBalance\show\show.c

     文件        356  2019-05-14 10:00  1.风力摆源码\MiniBalance\show\show.h

     文件      17273  2010-06-07 10:25  1.风力摆源码\MiniBalance_COER\core_cm3.c

     文件      85714  2011-02-09 14:59  1.风力摆源码\MiniBalance_COER\core_cm3.h

     文件      15503  2011-03-10 10:52  1.风力摆源码\MiniBalance_COER\startup_stm32f10x_hd.s

     文件       2469  2019-05-12 21:12  1.风力摆源码\MiniBalance_HARDWARE\ADC\adc.c

     文件        271  2019-05-12 21:12  1.风力摆源码\MiniBalance_HARDWARE\ADC\adc.h

     文件       9673  2019-02-18 21:22  1.风力摆源码\MiniBalance_HARDWARE\CAN\can.c

     文件        740  2018-12-05 20:53  1.风力摆源码\MiniBalance_HARDWARE\CAN\can.h

     文件      19342  2012-12-14 11:16  1.风力摆源码\MiniBalance_HARDWARE\DMP\dmpKey.h

     文件       6765  2012-12-14 11:16  1.风力摆源码\MiniBalance_HARDWARE\DMP\dmpmap.h

     文件      84104  2015-07-09 14:05  1.风力摆源码\MiniBalance_HARDWARE\DMP\inv_mpu.c

     文件       4335  2015-07-09 14:05  1.风力摆源码\MiniBalance_HARDWARE\DMP\inv_mpu.h

     文件      57839  2015-07-09 14:05  1.风力摆源码\MiniBalance_HARDWARE\DMP\inv_mpu_dmp_motion_driver.c

     文件       3386  2015-07-09 14:05  1.风力摆源码\MiniBalance_HARDWARE\DMP\inv_mpu_dmp_motion_driver.h

............此处省略298个文件信息

评论

共有 条评论