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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5268|回復: 7
打印 上一主題 下一主題
收起左側

STM32F103C8T6單片機蹺蹺板平衡車程序,MPU6050,PID

  [復制鏈接]
跳轉到指定樓層
樓主
ID:587435 發表于 2019-7-21 15:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32F103C8T6,蹺蹺板平衡車,MPU6050,PID

元件清單:
OLED顯示屏
STM32F103C8T6最小系統
MPU6050陀螺儀
TB6612FNG驅動模塊
LM2596穩壓
12V鋰電池
直流減速電機帶編碼器*2
紅外循跡探頭*5
37mm直流減速電機固定座 鐵質*2
65mm輪胎*2
鐵質 連軸器*2
杜邦線若干
萬向輪
銅柱
洞洞板

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "sys.h"

  3. char x[10];//角度顯示緩沖數組
  4. u8 Tim[7]=  "Time : ";//時間顯示數組
  5. extern float Roll; //讀取到的6050角度值
  6. float Roll_1,Roll_2,Roll_3;//分別是最新時刻角度值,上一時刻角度值,以及積分角度值
  7. float power;//小車最終輸出動力
  8. float KP=8.0,KD=0.5,KI=0.02,PrevError_C =0;//PID參數
  9. u8 pid_flag=0;//分時刻讀取角度值的標志位
  10. extern u16 tim_flag;//計時標志位
  11. extern int tim;//秒計時,一秒加一
  12. double zz=0;//平衡計時
  13. int main()//主函數
  14. {
  15.         delay_init();//延時函數初始化
  16.         IIC_Init();//IIC初始化
  17.         MPU6050_initialize();//6050初始化
  18.         DMP_Init();//MPU6050內置DMP的初始化
  19.         OLED_Init();//OLED初始化
  20.         OLED_Clear();//OLED清屏
  21.         GPIO_INIT();//控制減速電機IO口初始化
  22.         HW_INIT();//紅外探頭使用IO口初始化
  23.         TIM3_INIT();//定時器初始化,用于放PWM波,控制車的速度
  24.         Qianjin();//使車向前跑(相對的)
  25.         TIM3->CCR1=80;//左輪動力80
  26.         TIM3->CCR2=80;//右輪動力80
  27.         OLED_ShowString(0,4, Tim);//OLED顯示不改變數組         
  28.         Read_DMP();//讀取一次角度值
  29.         while(1)//無限循環
  30.         {
  31.                 sprintf(x,"Angle: %0.2f",Roll);//此函數用于將數組加入可變參數
  32.                 OLED_ShowString(0,0,(u8*)x);//顯示上列數組
  33.                 if(tim>=99)tim=99;//計時上限99秒
  34.                 OLED_ShowNum(48,4,tim,3,12);//顯示時間,單位/秒
  35.                 OLED_ShowNum(0,6,zz,4,12);//顯示平衡時間
  36.                 OLED_ShowNum(32,6,power,4,12);//顯示當前動力值

  37. /***************************平衡PID算法********************************/
  38.                 pid_flag++;//運行時間標志
  39.                 if(pid_flag==1)//記錄1時刻角度值
  40.                 {
  41.                         Roll_1=Roll;
  42.                 }
  43.                 if(pid_flag==2)//記錄2時刻角度值
  44.                 {
  45.                         pid_flag=0;
  46.                         Roll_2=Roll;
  47.                         PrevError_C=Roll_2-Roll_1;//兩次角度的差值
  48.                 }
  49.                 Read_DMP();//讀取當前角度值
  50.                 Roll_3+=Roll;//積分值累加
  51.                 power=KP*abs(Roll)+KI*abs(Roll_3)+KD*PrevError_C;//PID計算當前合適的動力值
  52.                 if(power>90)        power=90;//動力值限幅
  53.                 if(Roll>1.7)//判斷角度值
  54.                 {               
  55.                         if(PrevError_C<-0.03)//預判是否需要后退
  56.                                 Qianjin();
  57.                         else                                                                 //不需要就繼續走
  58.                                 Houtui();
  59.                         TIM3->CCR1=power+30;
  60.                         TIM3->CCR2=power;
  61.                 }
  62.                 if(Roll<-1.7) //判斷角度值         
  63.                 {
  64.                         if(PrevError_C>0.03)//預判是否需要后退
  65.                                 Houtui();
  66.                         else                                                                 //不需要就繼續走
  67.                                 Qianjin();
  68.                         TIM3->CCR1=power+20;
  69.                         TIM3->CCR2=power;
  70.                 }
  71.                 if((Roll<=1.7)&&(Roll>=-1.7)&&(PrevError_C<0.03&&PrevError_C>-0.03))//平衡條件限定
  72.                 {
  73.                         Tingzhi();//停止
  74.                         TIM3->CCR1=0;//動力值為0
  75.                         TIM3->CCR2=0;
  76.                         Roll_3=0;        //積分清零
  77.                         zz++;//平衡計時
  78.                         if(zz>888)//達到平衡時間觀察
  79.                         {
  80.                                 while(1)
  81.                                 {
  82.                                         Qianjin();TIM3->CCR1=95;TIM3->CCR2=80;//勻速向前
  83.                                         if(HW5==0)//右后探頭檢測到黑線
  84.                                         {
  85.                                                         Tingzhi();//停止
  86.                                                         while(1)
  87.                                                         {
  88.                                                                 Tingzhi();
  89.                                                                 TIM3->CCR1=0;//動力為0
  90.                                                                 TIM3->CCR2=0;
  91.                                                         }
  92.                                         }
  93.                                 }
  94.                         }
  95.                 }
  96.         }
  97. }
復制代碼

所有資料51hei提供下載:
project+注釋.7z (68.97 KB, 下載次數: 183)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏10 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:511461 發表于 2019-7-23 10:09 | 只看該作者
學習一下
回復

使用道具 舉報

板凳
ID:425297 發表于 2019-7-24 12:48 | 只看該作者
親請問  有接線圖么
回復

使用道具 舉報

地板
ID:90358 發表于 2019-7-24 15:12 | 只看該作者
學習下,謝謝
回復

使用道具 舉報

5#
ID:259648 發表于 2021-4-17 13:40 來自手機 | 只看該作者
你好 ,可以發一下實物圖么?  看到可以與我聯系,非常感謝。
回復

使用道具 舉報

6#
ID:462629 發表于 2021-12-28 10:06 | 只看該作者
有電路原理圖,源碼嗎
回復

使用道具 舉報

7#
ID:1004880 發表于 2022-2-12 10:52 | 只看該作者
woyaodwn 發表于 2021-12-28 10:06
有電路原理圖,源碼嗎

找到源代碼了嗎
回復

使用道具 舉報

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

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 美女中文字幕视频 | 欧美亚洲视频在线观看 | 久久综合成人精品亚洲另类欧美 | 精品久久久久久久人人人人传媒 | 国产精品国产三级国产aⅴ无密码 | 黄视频国产 | 国产精品亚洲一区 | 国产精品久久久久久久久久久久午夜片 | 欧美成年人 | 在线免费观看日本 | 91中文字幕在线 | 日本一区二区三区四区 | 黄色亚洲网站 | 亚洲成人毛片 | 精品一区二区久久 | 久久精品91| 国产aⅴ| 欧美国产在线一区 | 国产一级片在线观看视频 | 一级毛片,一级毛片 | 久久精品国产亚洲一区二区三区 | 男女激情网站免费 | 国产一伦一伦一伦 | 精品国产一区二区三区免费 | 日韩www | 亚洲国产黄 | 四虎最新视频 | 91福利电影在线观看 | 亚洲国产精品99久久久久久久久 | 久久夜视频 | 精品久久精品 | 成人精品鲁一区一区二区 | 久久国内| 围产精品久久久久久久 | 欧美a在线看 | 国产精品视频入口 | 精品美女在线观看视频在线观看 | 在线观看国产视频 | 精品九九| 人人干人人草 | 性一交一乱一伦视频免费观看 |