资源简介
简易旋转倒立摆是以基于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个文件信息
评论
共有 条评论