資源簡介
簡易旋轉倒立擺是以基于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個文件信息
評論
共有 條評論