久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1146|回復(fù): 2
收起左側(cè)

STM32F103C8T6單片機(jī)簡單速度環(huán)PID小車程序分享

[復(fù)制鏈接]
ID:1128526 發(fā)表于 2024-7-8 23:14 | 顯示全部樓層 |閱讀模式
#include "stm32f10x.h"
#include "PID.h"

int Speed_PID (int16_t target ,int16_t change)   //差速PID控制器        

{         
         float KP=0.405,KI=0.66,KD=0.62;
         float Bias,Pwm,jifen;
         static float Last_Bias;
         Bias=target-change;                                  //計(jì)算偏差
         jifen+=Bias;                                         //求出偏差的積分
         Pwm=KP*Bias+KI*jifen+KD*(Bias-Last_Bias);       //位置式PID控制器
         Last_Bias=Bias;   //保存上一次偏差
         if(Pwm>2000) Pwm=2000;
    if(Pwm<-2000) Pwm=-2000;
         //if(target==0&&change==0)Pwm=0;
         return Pwm;       //返回PWM值                                    
        
}


pid.h文件
  1. #ifndef __PID_H
  2. #define __PID_H
  3. #include "stm32f10x.h"                 

  4. int Speed_PID (int16_t target ,int16_t change) ;

  5. #endif

復(fù)制代碼


注意PID的調(diào)用一定不能放在主循環(huán)里面,因?yàn)橹餮h(huán)的周期會隨著代碼量增加而變
我是放在中斷里面。
int main(void)
{
        OLED_Init();
        Motor_Init();
        //hongwai_Init();
        TIM1_Init(1000,72);                //定時(shí)中斷初始化
        Encoder_Init_TIM4( );                //編碼器初始化
        Encoder_Init_TIM3( );
        
        /*顯示靜態(tài)字符串*/
        OLED_ShowString(1, 1, "Time:");                        //1行1列顯示字符串Num:
        OLED_ShowString(1, 8, ":");        
        OLED_ShowString(1, 11, ":");
        OLED_ShowString(2, 1, "Speed:");                //1行1列顯示字符串Speed:
        OLED_ShowString(3, 1, "path:");                //1行1列顯示字符串Speed:
        OLED_ShowString(3, 11, ".");        //1行1列顯示字符串Speed:        
        //Car_go();
        while (1)
        {
                OLED_ShowNum(1,12, miao, 2);                        //不斷刷新顯示Num變量
                OLED_ShowNum(1, 9, fen, 2);
                OLED_ShowNum(1, 6, shi, 2);
                OLED_ShowSignedNum(2, 7, Speed2, 4);        //不斷刷新顯示編碼器測得的最新速度
                OLED_ShowSignedNum(2, 12, Speed1,4);        //不斷刷新顯示編碼器測得的最新速度
                Car_go();
               
                OLED_ShowNum(3, 6, M, 5);        //不斷刷新顯示編碼器測得的最新速度
                OLED_ShowNum(3, 12, CM, 2);        //不斷刷新顯示編碼器測得的最新速度
                OLED_ShowNum(4,1,sensor[0],1);
                OLED_ShowNum(4,2,sensor[1],1);
                OLED_ShowNum(4,3,sensor[2],1);
                OLED_ShowNum(4,4,sensor[3],1);
                OLED_ShowSignedNum(4, 6, OUTPUT2,5);
                Speed1 = Encoder_Get_TIM4( );        
                Speed2= Encoder_Get_TIM3( );
                //read_sensor();
                if(yan == 0)
                {
                yan = Control();
                }
                //Car_leftstop();
                //Car_rightstop( );
        }
}

void TIM1_UP_IRQHandler(void)
{

                        static int8_t cnt = 0;
        if (TIM_GetITStatus(TIM1, TIM_IT_Update) != RESET)  //檢查TIM3更新中斷發(fā)生與否
                {                //判斷是否是TIM1的更新事件觸發(fā)的中斷
        {
                //if(yan == 0)
                cnt++;
                if(cnt == 100)
                {
                        cnt = 0;
                    miao++;                                                                                                //Num變量自增,用于測試定時(shí)中斷
                    if(miao>=60){miao=0;fen++;}
                    if(fen>=60){fen=0;shi++;}
             }
               
                OUTPUT2=Speed_PID (Speed2,Speed1);        //將差速PID控制器輸出的PWM值賦值給
                        
                        TIM_ClearITPendingBit(TIM1, TIM_IT_Update  );  //清除TIMx更新中斷標(biāo)志
                        /*寫入執(zhí)行的操作*/        
                }
        
}
}

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:1128526 發(fā)表于 2024-7-8 23:15 | 顯示全部樓層
直接復(fù)制上面代碼就行,下面的壓縮包只有PID.c和PID.h
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一级一级 | 99免费视频 | 天天草天天干天天 | 亚洲一区免费 | 中文字幕一区二区视频 | 欧美一区二区 | 欧美一级黄色片在线观看 | 久久久久久久一区 | 欧美日韩国产精品一区 | 亚洲精品乱码久久久久久久久 | 久久久久久国产精品 | 在线只有精品 | 美女福利视频一区 | 欧美成人专区 | 国产视频福利在线观看 | 日韩av电影在线观看 | 欧美一级大片免费看 | 中文字幕日韩欧美一区二区三区 | 成人午夜网站 | 香蕉一区二区 | 免费成人在线网站 | 午夜伦理影院 | 日日爱av| 日韩在线不卡视频 | 六月色婷 | 久久综合九九 | 91看片网 | 天天插天天搞 | 精品99在线 | 久久天天躁狠狠躁夜夜躁2014 | 国产区在线观看 | 国产精品美女久久久久久免费 | 一级在线观看 | 91精品国产色综合久久不卡蜜臀 | 久久久久久国产精品三区 | 一区二区三区四区不卡视频 | 97国产在线视频 | 成人国产在线观看 | 国产精品一区在线观看 | 91视频88av| 久草在线青青草 |