久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32倒立擺程序源碼
[打印本頁]
作者:
17393161229
時間:
2019-9-9 18:51
標題:
STM32倒立擺程序源碼
這個是已經調好的倒立擺的程序、有需要的趕緊下載哦!
單片機源程序如下:
#include "MiniBalance.h"
#include "math.h"
#include "led.h"
#include "mpu6050.h"
#define PI 3.14159265
/**************************************************************************
函數功能:5MS定時中斷函數 5MS控制周期
入口參數:無
返回 值:無
作 者:Mini Balance
**************************************************************************/
int zhongzhi=1750;
int Balance_Pwm,Velocity_Pwm,Turn_Pwm;
void TIM1_UP_TIM16_IRQHandler(void)
{
if(TIM1->SR&0X0001)//5ms定時中斷
{
TIM1->SR&=~(1<<0); //===清除定時器1中斷標志位
readEncoder(); //===讀取編碼器的值
adc=Get_Adc(0);
Led_Flash(400); //===LED閃爍;
Get_battery_volt(); //===獲取電池電壓
key(100); //===掃描按鍵狀態
Balance_Pwm=balance(adc,zhongzhi);
Velocity_Pwm=velocity(Encoder_Left);
Moto1=Balance_Pwm-Velocity_Pwm; //===計算左輪電機最終PWM
Xianfu_Pwm(); //===PWM限幅
if(Turn_Off(adc,Voltage)==0) //===如果不存在異常
Set_Pwm(Moto1); //===賦值給PWM寄存器
}
}
/**************************************************************************
函數功能:直立PID控制
入口參數:角度、角速度
返回 值:直立控制PWM
作 者:Mini Balance
**************************************************************************/
int balance(int adc, int target)
{
static int Last_Bias;
int balance,Bias;
Bias=adc-target; //===求出平衡的角度中值 和機械相關
balance=15*Bias+50*(Bias-Last_Bias); //===計算平衡控制的電機PWM
Last_Bias=Bias;
return balance;
}
/**************************************************************************
函數功能:速度PI控制
入口參數:左輪編碼器、右輪編碼器
返回 值:速度控制PWM
作 者:Mini Balance
**************************************************************************/
int velocity(int encoder_left)
{
static int Velocity,Encoder_Least,Encoder,Movement;
static long Encoder_Integral;
//=============遙控前進后退部分=======================//
if(1==Flag_Qian) Movement=-900; //===如果前進標志位置1 位移為負
else if(1==Flag_Hou) Movement=900; //===如果后退標志位置1 位移為正
else Movement=0;
//=============速度PI控制器=======================//
Encoder_Least =Encoder_Left; //===獲取最新速度偏差
Encoder *= 0.4; //===一階低通濾波器
Encoder += Encoder_Least*0.6; //===一階低通濾波器
Encoder_Integral +=Encoder; //===積分出位移 積分時間:5ms
Encoder_Integral=Encoder_Integral-Movement; //===接收遙控器數據,控制前進后退
if(Encoder_Integral>500) Encoder_Integral=500; //===積分限幅
if(Encoder_Integral<-500) Encoder_Integral=-500; //===積分限幅
Velocity=Encoder*300+Encoder_Integral*10; //===速度控制
if(Turn_Off(Angle_Balance,Voltage)==1) Encoder_Integral=0; //===電機關閉后清除積分
return Velocity;
}
/**************************************************************************
函數功能:賦值給PWM寄存器
入口參數:左輪PWM、右輪PWM
返回 值:無
作 者:Mini Balance
**************************************************************************/
void Set_Pwm(int moto1)
{
PBout(3)=1;//===電機使能打開
if(moto1<0) PBout(5)=1, PBout(4)=0;
else PBout(5)=0, PBout(4)=1;
TIM4->CCR2=myabs(moto1);
}
/**************************************************************************
函數功能:讀取編碼器的數據并進行數據類型轉換
入口參數:無
返回 值:無
作 者:Mini Balance
**************************************************************************/
void readEncoder(void)
{
u16 Encoder_L; //===左右編碼器的脈沖計數
Encoder_L= TIM3 -> CNT; //===獲取正交解碼2數據
TIM3 -> CNT=0; //===計數器清零
if(Encoder_L>32768) Encoder_Left=Encoder_L-65000; else Encoder_Left=Encoder_L; //===數據類型轉換
}
/**************************************************************************
函數功能:限制PWM賦值
入口參數:無
返回 值:無
作 者:Mini Balance
**************************************************************************/
void Xianfu_Pwm(void)
{
int Amplitude=7100; //===PWM滿幅是7200 限制在7100
if(Moto1<-Amplitude) Moto1=-Amplitude;
if(Moto1>Amplitude) Moto1=Amplitude;
if(Moto2<-Amplitude) Moto2=-Amplitude;
if(Moto2>Amplitude) Moto2=Amplitude;
}
/**************************************************************************
函數功能:異常關閉電機
入口參數:傾角和電壓
返回 值:1:異常 0:正常
作 者:Mini Balance
**************************************************************************/
u8 Turn_Off(int adc, int voltage)
{
u8 temp;
if(adc<(zhongzhi-500)||adc>(zhongzhi+500)||1==Flag_Stop||Voltage<1110)//===電壓低于11.1V 關閉電機
{
temp=1;
PBout(3)=0;
PBout(12)=0;
PAout(15)=0;
PBout(4)=0;
PBout(5)=0;
}
else
temp=0;
return temp;
}
復制代碼
所有資料51hei提供下載:
倒立擺2.3.7z
(354.95 KB, 下載次數: 35)
2019-9-10 01:54 上傳
點擊文件名下載附件
下載
下載積分: 黑幣 -5
作者:
jiangkeqin_sy
時間:
2019-9-10 10:23
有圖片嗎?
作者:
撲撲
時間:
2019-9-12 08:58
贊一個
作者:
collapsar147
時間:
2019-9-12 15:44
有沒有接線圖?光有程序沒原理圖人家怎么看,簡單說明一下也好啊。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
久久99精品久久久久久琪琪
|
欧美日韩专区
|
91高清视频在线观看
|
在线色网
|
91看片网
|
国产精品久久久久久久久久久久
|
国产欧美在线一区二区
|
国产在线视频在线观看
|
日本中文字幕视频
|
免费观看黄色片视频
|
国产成人精品网站
|
日本一道本视频
|
亚洲精品视频免费
|
国产一区二区在线视频
|
国产免费自拍
|
国产精品美女久久久久久免费
|
亚洲人人
|
久在线
|
亚洲伊人精品酒店
|
高清黄色毛片
|
欧美日韩精品免费
|
欧美日韩在线视频一区二区
|
日韩精品激情
|
伊人爽
|
精品一二三区在线观看
|
久久精品中文
|
亚洲一区二区三
|
国产亚洲精品久久久久动
|
久久精品国产久精国产
|
久久国产亚洲精品
|
久久久无码精品亚洲日韩按摩
|
天天干视频网
|
性视频网
|
国产在线一区二区
|
国内在线视频
|
日韩视频91
|
亚洲国产精品久久久久
|
日本欧美在线观看视频
|
国产成人精品网站
|
欧美一二精品
|
91短视频网址
|