• 大小: 6.56MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-23
  • 语言: 其他
  • 标签: 滚球  

资源简介

简易旋转倒立摆是以基于STM32f103c8t6为控制核心。通过角位移传感器的脉冲数及相应设计的的数学计算来测量角度信息,该信息被处理芯片STM32f103c8t6收集并处理以后,通过PID算法进行进一步的信息处理。从而得出电机应该做出相应的响应数据。最终STM32f103c8t6将得出的相应数据转换成PWM波及转向控制信号传递给LN298驱动器,从而驱动小型直流减速电机来进行位置矫正。矫正的信息通过角位移传感器转换成电信号再次传递给控制中心进行信息处理,信息再次传递给LN298进行电

资源截图

代码片段和文件信息

/**
  ******************************************************************************
  * @file    control.c
  * @author  张旺
  * @version V2.0
  * @date    2017-8-10
  * @brief   控制中心
  ******************************************************************************
  * @attention
  * 控制频率10ms因为串口mpu6050采样最频率100Hz
  ******************************************************************************
  */ 
#include “control.h“
#include “usart.h“
#include “usart3.h“
#include “math.h“
#include “pid.h“
#include “pwm.h“
#include “key.h“
#include “delay.h“
extern Pixy_Color Pixy;//结构体定义
extern PID_TypdDef M1_PID;
extern PID_TypdDef M2_PID;
extern u8 LOOP_100HZLOOP_20HZLOOP_2HZ;
extern u8 ad_set_Point[4];         //1   2   3   4   5   6   7   8   9
static u16 Target_X_position[] = {0236236236170170170105105105};
static u16 Target_Y_position[] = {0349816434981643498164};
static u16 ad_Target_X_position[] = {0203203203170203170138138138};
static u16 ad_Target_Y_position[] = {0669913166991316699131};
//static u16 ad_Target_X_position[] = {0236106236171171171106237106};
//static u16 ad_Target_Y_position[] = {0165993416599341649934};
u16 Set_position[4];
uint32_t MoveTimeCnt = 0;

/**************************************************************************
函数功能:所有的控制代码都在这里面
          TIM1控制的5ms定时中断 
**************************************************************************/
int TIM1_UP_IRQHandler(void)  //定时器1更新中断核心控制程序
{

 if(TIM_GetITStatus(TIM1TIM_IT_Update) != RESET) //检查TIM1是否发生更新中断
 {
 TIM_ClearITPendingBit(TIM1TIM_IT_Update);   //清除更新中断的标志
           LOOP_100HZ++;
       LOOP_20HZ++;  
//           LOOP_2HZ++;
 }
 
 return 0;


/**
  * @brief  完成基础部分第一个任务
  * @param  None
  * @retval None
  * @note 角度按正弦规律变化 y = Asin(2*pi/T*t+theta)
  */
void Mode_1(void)
{

int32_t M1_PWM = 0M2_PWM = 0;  //电机1和2的pwm
M1_PID.SetPoint = Target_X_position[2]; //设定区域2的x坐标 
M2_PID.SetPoint = Target_Y_position[2]; //设定区域2的y坐标 
// if((M1_PID.SetPoint-Pixy.Pixy_PosX)>15&&(M1_PID.SetPoint-Pixy.Pixy_PosX)<40)
// {
// M1_PID.Proportion = 1;
// M1_PID.Integral = 0.128;
// M1_PID.Derivative = 0;
// }
// else
// {
// M1_PID.Proportion =2.36 ;
// M1_PID.Integral = 0.125;
// M1_PID.Derivative = 18;
// }
M1_PWM = PID_PosLocCalc(&M1_PIDPixy.Pixy_PosX);     //PID计算出x轴目标设定位置所需PWM
M2_PWM = PID_PosLocCalc(&M2_PIDPixy.Pixy_PosY);         //PID计算出Y轴目标设定位置所需PWM
// printf(“当前位置:%d%d\r\n“Pixy.Pixy_PosXPixy.Pixy_PosY);
set_M1_PWM(M1_PWM);                         //x轴方向pwm输出
set_M2_PWM(-M2_PWM);                         //y轴方向pwm输出

}
void Mode_2(void)
{
int32_t M1_PWM = 0M2_PWM = 0;  //电机1和2的pwm
M1_PID.SetPoint = Target_X_position[5]; //设定区域5的x坐标 
M2_PID.SetPoint = Target_Y_position[5]; //设定区域5的y坐标 

M1_PWM = PID_PosLocCalc(&M1_PIDPixy.Pixy_PosX);     //PID计算出x轴目标设定位置所需PWM
M2_PWM = PID_PosLocCalc(&M2_PIDPixy.Pixy_PosY

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

     文件      10020  2017-08-17 14:21  摆球控制系统 - v1.2\CONTROL\control.c

     文件        358  2017-08-13 19:49  摆球控制系统 - v1.2\CONTROL\control.h

     文件       2711  2017-08-14 17:09  摆球控制系统 - v1.2\CONTROL\pid.c

     文件        796  2017-08-14 09:24  摆球控制系统 - v1.2\CONTROL\pid.h

     文件       2618  2017-07-14 11:23  摆球控制系统 - v1.2\CONTROL\show.c

     文件        217  2017-07-14 11:23  摆球控制系统 - v1.2\CONTROL\show.h

     文件      17273  2010-06-07 10:25  摆球控制系统 - v1.2\CORE\core_cm3.c

     文件      85714  2011-02-09 14:59  摆球控制系统 - v1.2\CORE\core_cm3.h

     文件      15503  2017-07-30 11:08  摆球控制系统 - v1.2\CORE\startup_stm32f10x_hd.s

     文件       1747  2017-08-08 10:20  摆球控制系统 - v1.2\Doc\readme.txt

     文件       2479  2017-07-22 21:16  摆球控制系统 - v1.2\HARDWARE\ADC\adc.c

     文件        533  2017-07-22 21:16  摆球控制系统 - v1.2\HARDWARE\ADC\adc.h

     文件       1049  2015-03-23 22:25  摆球控制系统 - v1.2\HARDWARE\BEEP\beep.c

     文件        651  2015-03-23 22:26  摆球控制系统 - v1.2\HARDWARE\BEEP\beep.h

     文件      19342  2012-12-14 11:16  摆球控制系统 - v1.2\HARDWARE\DMP\dmpKey.h

     文件       6765  2012-12-14 11:16  摆球控制系统 - v1.2\HARDWARE\DMP\dmpmap.h

     文件      84104  2015-07-09 14:05  摆球控制系统 - v1.2\HARDWARE\DMP\inv_mpu.c

     文件       4335  2015-07-09 14:05  摆球控制系统 - v1.2\HARDWARE\DMP\inv_mpu.h

     文件      57839  2015-07-09 14:05  摆球控制系统 - v1.2\HARDWARE\DMP\inv_mpu_dmp_motion_driver.c

     文件       3386  2015-07-09 14:05  摆球控制系统 - v1.2\HARDWARE\DMP\inv_mpu_dmp_motion_driver.h

     文件       5886  2017-07-20 21:38  摆球控制系统 - v1.2\HARDWARE\ENCODER\encoder.c

     文件        308  2017-07-09 14:02  摆球控制系统 - v1.2\HARDWARE\ENCODER\encoder.h

     文件       3445  2017-08-05 16:58  摆球控制系统 - v1.2\HARDWARE\EXTI\exti.c

     文件        122  2017-08-05 16:58  摆球控制系统 - v1.2\HARDWARE\EXTI\exti.h

     文件       2105  2015-12-07 15:52  摆球控制系统 - v1.2\HARDWARE\filter\filter.c

     文件        399  2015-12-07 15:52  摆球控制系统 - v1.2\HARDWARE\filter\filter.h

     文件       8378  2017-08-15 13:33  摆球控制系统 - v1.2\HARDWARE\KEY\key.c

     文件       1010  2017-08-14 20:02  摆球控制系统 - v1.2\HARDWARE\KEY\key.h

     文件       1046  2017-07-07 20:09  摆球控制系统 - v1.2\HARDWARE\LED\led.c

     文件        638  2015-03-23 22:26  摆球控制系统 - v1.2\HARDWARE\LED\led.h

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

评论

共有 条评论