wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32自平衡小車源代碼

[復制鏈接]
跳轉到指定樓層
樓主
平衡小車代碼

全部源碼下載:
STM32自平衡小車源代碼.7z (231.18 KB, 下載次數: 100)


部分代碼預覽:
  1. #include "stm32f10x.h"
  2. #include "MPU6050.h"
  3. #include "motor.h"
  4. #include "control.h"
  5. #include <math.h>
  6. //******角度參數************

  7. float Gyro_y;        //Y軸陀螺儀數據暫存
  8. float Angle_gy;      //由角速度計算的傾斜角度
  9. float Accel_x;             //X軸加速度值暫存
  10. float Angle_ax;      //由加速度計算的傾斜角度
  11. float Angle;         //小車最終傾斜角度

  12. //******PWM參數*************

  13. int   speed_mr;                 //右電機轉速
  14. int   speed_ml;                 //左電機轉速
  15. float PWM;           //綜合PWM計算
  16. //******電機參數*************

  17. float speed_r_l;        //電機轉速
  18. float speed;        //電機轉速濾波
  19. //******卡爾曼參數************
  20.                
  21. const float Q_angle=0.001;  
  22. const float Q_gyro=0.003;
  23. const float R_angle=0.5;
  24. const float dt=0.01;                          //dt為kalman濾波器采樣時間;
  25. const char  C_0 = 1;
  26. float Q_bias, Angle_err;
  27. float PCt_0, PCt_1, E;
  28. float K_0, K_1, t_0, t_1;
  29. float Pdot[4] ={0,0,0,0};
  30. float PP[2][2] = { { 1, 0 },{ 0, 1 } };

  31. static const float Kp  = 35.0;                                //PID參數
  32. static const float Kd  = 2.5;                                        //PID參數
  33. static const float Ksp = 10.0;                                //PID參數

  34. void TIM4_Configuration(void)
  35. {
  36.   TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//定義一個定時器結構體變量

  37.   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//使能定時器4
  38.   
  39.   TIM_TimeBaseStructure.TIM_Period = (10000 - 1);        //計數10000次,因為從0開始,所以減1
  40.   TIM_TimeBaseStructure.TIM_Prescaler = (72 - 1);        //時鐘72分頻,因為0不分頻,所以減1
  41.   TIM_TimeBaseStructure.TIM_ClockDivision = 0;        // 使用的采樣頻率之間的分頻比例
  42.    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;        //向上計數
  43.   TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);        //初始化定時器4

  44.   TIM_ClearITPendingBit(TIM4, TIM_IT_Update);                //清除定時器4中斷標志位
  45.   TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);                //打開定時器4中斷

  46.   TIM_Cmd(TIM4, ENABLE);  //計數器使能,開始計數
  47. }

  48. void NVIC_Configuration(void)
  49. {
  50.   NVIC_InitTypeDef NVIC_InitStructure;
  51.   
  52.   NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);
  53.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

  54. /********************注冊定時器4中斷處理函數***********************/

  55.   NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
  56.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
  57.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  58.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  59.   NVIC_Init(&NVIC_InitStructure);

  60. /******************注冊串口1中斷服務函數************************/
  61.         NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//配置串口中斷
  62.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//占先式優先級設置為0
  63.         NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //副優先級設置為0
  64.         NVIC_InitStructure.NVIC_IRQChannelCmd = DISABLE;//中斷禁止
  65.         NVIC_Init(&NVIC_InitStructure);//中斷初始化


  66. }
  67. void Control_Init(void)
  68. {
  69.         TIM4_Configuration();
  70.         NVIC_Configuration();
  71. }
  72. /****************定時器4中斷服務函數***************************************/
  73. void TIM4_IRQHandler(void)
  74. {
  75.         if (TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
  76.   {
  77.                 TIM_ClearITPendingBit(TIM4, TIM_IT_Update);

  78.                 Angle_Calculate();// 車體傾角計算
  79.                 Speed_Calculate();//車速計算
  80.                 PWM_Calculate();//電機PWM值計算
  81.                 Motor_Control(PWM);//調節電機參數

  82.         }
  83. }

  84. /*****************卡爾曼濾波**************************************************/
  85. void Kalman_Filter(float Accel,float Gyro)               
  86. {
  87.         Angle+=(Gyro - Q_bias) * dt; //先驗估計
  88.         
  89.         Pdot[0]=Q_angle - PP[0][1] - PP[1][0]; // Pk-先驗估計誤差協方差的微分

  90.         Pdot[1]= -PP[1][1];
  91.         Pdot[2]= -PP[1][1];
  92.         Pdot[3]=Q_gyro;
  93.         
  94.         PP[0][0] += Pdot[0] * dt;   // Pk-先驗估計誤差協方差微分的積分
  95.         PP[0][1] += Pdot[1] * dt;   // =先驗估計誤差協方差
  96.         PP[1][0] += Pdot[2] * dt;
  97.         PP[1][1] += Pdot[3] * dt;
  98.                
  99.         Angle_err = Accel - Angle;        //zk-先驗估計
  100.         
  101.         PCt_0 = C_0 * PP[0][0];
  102.         PCt_1 = C_0 * PP[1][0];
  103.         
  104.         E = R_angle + C_0 * PCt_0;
  105.         
  106.         K_0 = PCt_0 / E;
  107.         K_1 = PCt_1 / E;
  108.         
  109.         t_0 = PCt_0;
  110.         t_1 = C_0 * PP[0][1];

  111.         PP[0][0] -= K_0 * t_0;                 //后驗估計誤差協方差
  112.         PP[0][1] -= K_0 * t_1;
  113.         PP[1][0] -= K_1 * t_0;
  114.         PP[1][1] -= K_1 * t_1;
  115.                
  116.         Angle        += K_0 * Angle_err;         //后驗估計
  117.         Q_bias        += K_1 * Angle_err;         //后驗估計
  118.         Gyro_y   = Gyro - Q_bias;         //輸出值(后驗估計)的微分=角速度

  119. }
  120. void Angle_Calculate(void)
  121. {
  122.         static        uint8_t DataBuffer[2];        //數據緩存

  123. /****************************加速度****************************************/
  124.         I2C_ReadBuffer(DataBuffer, ACCEL_XOUT_H, 2);
  125.         Accel_x  = (short)((DataBuffer[0]<<8)+DataBuffer[1]);          //讀取X軸加速度
  126.         Angle_ax = (Accel_x +220) /16384;   //去除零點偏移,計算得到角度(弧度)
  127.         Angle_ax = Angle_ax*1.2*180/3.14;     //弧度轉換為度,

  128. /****************************角速度****************************************/
  129.         I2C_ReadBuffer(DataBuffer, GYRO_YOUT_H, 2);
  130.         Gyro_y = (short)((DataBuffer[0]<<8)+DataBuffer[1]);              //靜止時角速度Y軸輸出為-18左右
  131.         Gyro_y = (Gyro_y + 18)/16.4;         //去除零點偏移,計算角速度值
  132.         //Angle_gy = Angle_gy + Gyro_y*0.01;  //角速度積分得到傾斜角度,因為卡爾曼計算帶有時間dt,所以此處不用積分

  133. /***************************卡爾曼融合*************************************/
  134.         Kalman_Filter(Angle_ax,Gyro_y);       //卡爾曼濾波計算傾角
  135.         
  136. /****************************互補濾波****************************************/

  137.         /***補償原理是取當前傾角和加速度獲得傾角差值進行放大,然后與
  138. ****陀螺儀角速度疊加后再積分,從而使傾角最跟蹤為加速度獲得的
  139. ****角度 0.5為放大倍數,可調節補償度;0.01為系統周期10ms        
  140. *************************************************************/

  141. //        Angle = Angle + (((Angle_ax-Angle)*0.5 + Gyro_y)*0.01);                //因為加或不加此語句處理效果一樣,故省略,原因搞不清楚。。。

  142. }
  143. void Speed_Calculate(void)
  144. {
  145.                 speed_mr=TIM_GetCounter(TIM2)-0x7fff;
  146.                 speed_ml=TIM_GetCounter(TIM3)-0x7fff;                //讀取編碼器寄存器計數值,并減去中間值,得到速度矢量
  147.                 TIM_SetCounter(TIM2, 0x7fff);
  148.                 TIM_SetCounter(TIM3, 0x7fff);                                                //重置編碼器計數值

  149.                 speed_r_l =(speed_mr + speed_ml)*0.5;
  150.                 speed *= 0.7;                                                          //車輪速度濾波
  151.                 speed += speed_r_l*0.3;        
  152.         
  153. }
  154. void PWM_Calculate(void)
  155. {
  156.                 if(Angle<-40||Angle>40)                //傾角過大就關閉電機,進入死循環,直到復位
  157.                 {
  158.                         Motor_Stop();
  159.                         while(1);
  160.                 }               
  161.                 PWM  = (short)(Kp*Angle + Kd*Gyro_y);          //PID:角速度和角度調節
  162.                  PWM += Ksp*speed;                                                                                                      //PID:車速度調節
  163. }
復制代碼


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:187303 發表于 2017-4-24 08:35 | 只看該作者
平衡車的代碼夠復雜的 初學者就不用考慮了
回復

使用道具 舉報

板凳
ID:258573 發表于 2017-12-7 12:17 | 只看該作者
沒錢下載啊。
回復

使用道具 舉報

地板
ID:87193 發表于 2017-12-7 14:51 | 只看該作者
只有代碼嗎
回復

使用道具 舉報

5#
ID:250019 發表于 2017-12-11 13:35 | 只看該作者
有人可以說一下有原理圖嗎?
回復

使用道具 舉報

6#
ID:215629 發表于 2018-5-17 16:41 | 只看該作者
濾波原理
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
欧美大香线蕉线伊人久久国产精品 | 春意影院普通入口| 大胆人体一区| 国产欧美一区二区精品性| 97精品一区二区视频在线观看| 国产精品久久久久野外| av电影不卡在线观看| 日韩精品免费一区二区在线观看 | 国产亚洲欧美精品久久久久久| 最新在线观看av网站| 免费观看久久久4p| 欧美黑人一级爽快片淫片高清| 一区二区三区四区影院| 蜜桃传媒在线| 国产乱码一区二区三区| 国产精品一香蕉国产线看观看| 福利一区二区三区四区| 日本蜜桃在线观看视频| 亚洲国产精品麻豆| 一级特黄录像免费播放全99| 性欧美极品另类| 久久久久久久久久久妇女| 日韩精品中文在线观看| 好吊视频在线观看| 神马午夜伦理不卡 | 亚洲青色在线| 欧美怡红院视频一区二区三区| 国产一级视频在线播放| 毛片在线网站| 欧美性xxxx极品hd满灌| 日本不卡在线观看视频| 国产精品三级a三级三级午夜| 青娱乐精品在线视频| 91精品成人久久| 日韩美女黄色片| 日韩综合久久| 日韩欧美亚洲国产精品字幕久久久 | 深夜福利视频一区| 99re热视频精品| 成人黄色片视频网站| 亚洲av片一区二区三区| 日韩精品网站| 51精品在线观看| 国产裸体永久免费无遮挡| 亚洲精品3区| 午夜精品久久久久久久久久久久| 97人妻精品一区二区三区| 欧美重口另类| 中文字幕日韩av电影| 久久这里只有精品免费| 福利视频亚洲| 日韩久久免费电影| 美女视频黄免费| 欧洲一区在线| 亚洲无限av看| 成人午夜视频在线播放| 国产精品嫩模av在线| 午夜欧美不卡精品aaaaa| 国产精品午夜一区二区| 99九九热只有国产精品| 国产一区私人高清影院| 影音先锋男人资源站在线观看| 国产一区日韩一区| 精品国产免费人成电影在线观...| 色偷偷网友自拍| 久久新电视剧免费观看| 精品久久久久久久免费人妻| 国产在线91| 欧美精品色一区二区三区| a级在线免费观看| 福利在线一区| 欧美在线性爱视频 | 老司机精品视频导航| 热这里只有精品| 中文av资源在线| 色偷偷88888欧美精品久久久| 国产黄色片免费观看| 国产v日产∨综合v精品视频| 美女网站免费观看视频| 伊人久久大香伊蕉在人线观看热v| 26uuu亚洲伊人春色| 免费电影网站在线观看| 午夜精品久久一牛影视| 国产精品自拍视频一区| 模特精品在线| 免费无码国产v片在线观看| 男男gaygays亚洲| 欧美精品免费在线| 乳奴隷乳フ辱julia在线观看| 亚洲国产精品久久不卡毛片| 乱子伦一区二区| 激情中国色综合| 7777精品久久久大香线蕉小说| 手机亚洲第一页| 欧美成人一区二区三区片免费| 成人无码一区二区三区| 久久久久国产精品麻豆| 国产一区第一页| 免费成人av资源网| 黄色免费网址大全| 免费欧美视频| 成人综合视频在线| 老司机aⅴ在线精品导航| 性欧美大战久久久久久久免费观看 | 欧美色图中文字幕| 欧美性色欧美a在线播放| 女人18毛片水真多18精品| 亚洲日穴在线视频| 国产精品无码在线播放| 亚洲欧洲中文日韩久久av乱码| 日韩综合在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲日本韩国在线| 亚洲国产成人自拍| 国产免费不卡av| 一区二区三区在线视频播放| 在线免费观看视频网站| 一区二区三区在线观看视频| 中文字幕男人天堂| 亚洲性感美女99在线| 91亚洲一线产区二线产区| 羞羞视频在线观看欧美| 精品无码一区二区三区| 蜜桃一区二区三区四区| 影音先锋男人资源在线观看| 久久这里只有精品6| 午夜影院免费在线观看| 亚洲天堂精品在线观看| 成人av无码一区二区三区| 亚洲图片自拍偷拍| 午夜小视频在线播放| 日韩欧美一区在线观看| 国产香蕉免费精品视频| 亚洲免费影视第一页| 97影视在线观看| 欧美黑人xxxx| 欧美1—12sexvideos| 日韩欧美视频第二区| 日韩精品午夜| 国产精品密蕾丝袜| 久久久蜜臀国产一区二区| 99久久精品无免国产免费| 欧美日韩dvd在线观看| eeuss影影院www在线播放| 欧美激情女人20p| 女同一区二区免费aⅴ| 欧美一区1区三区3区公司| 久久大胆人体视频| 美女被艹视频网站| 91网页版在线| 思思99热久久精品在线6| 久久天天躁狠狠躁夜夜躁2014| 9i精品一二三区| 激情小说综合网| 伊人久久大香线蕉| 极品白嫩的小少妇| 国产午夜精品在线观看| 亚洲人的天堂男人爽爽爽| 一本色道久久综合狠狠躁篇怎么玩| 国产色在线观看| 99色这里只有精品| 国产大陆精品国产| 四虎影视免费看电影| 国内自拍欧美激情| 日韩三级一区| 亚洲综合网在线观看| 精品久久久久久亚洲精品| 高清毛片aaaaaaaa**| 欧美精品v日韩精品v国产精品| 狠狠入ady亚洲精品| 一二三区在线播放| 亚洲人成毛片在线播放| 国产伦精品一区二区三区视频金莲| 欧洲黄色一级视频| 久久久99精品久久| 先锋影音av资源网| 九九九热999| 三级精品在线观看| 最好看更新中文字幕| 国产日韩换脸av一区在线观看| 国产欧美一区| 中文字幕日本最新乱码视频| 国产成人精品影院| 亚洲欧美日韩成人网| 国产在线精品自拍| 一区二区国产精品| 亚洲三区在线观看无套内射| 日产精品99久久久久久| 日韩免费视频| 亚洲xxxx天美| 国产精品嫩草影院久久久| 久久在线视频| 中文字幕一区二区人妻| 欧美精品一二区| 国内精品久久久久久久影视简单| 久久久精品国产sm调教| 色偷偷88888欧美精品久久久| 里番精品3d一二三区| 亚洲 日本 欧美 中文幕| 欧美激情国产精品| 欧美激情第8页| 日日悠悠久久| 少妇特黄a一区二区三区| 成人自拍视频在线| 在线一区观看| 国内自拍偷拍视频| 精品国产乱码久久久久久久 | 深夜宅男网站免费进入| 成年人午夜免费视频| 成人av电影免费观看| 最近最新中文字幕在线| 国产无遮挡猛进猛出免费软件| 色狠狠综合天天综合综合| 播放一区二区| 中国a一片一级一片| 亚洲最大成人免费视频| 成人性生交大片| 亚洲视频在线观看一区二区 | 一区二区在线视频| 五月天久久久| 日本成址在线观看| 国产精品视频分类| 精品国产123| 91精品国产91久久久久久黑人| 国产色在线播放| 欧美日韩亚洲一| 7777精品伊人久久久大香线蕉最新版 | 欧美成人做性视频在线播放| 91九色国产ts另类人妖| 欧美性猛交xxxx乱大交3| 高清精品视频| 在线观看制服搞黄视频| 中文字幕网av| 亚洲图中文字幕| 麻豆一区二区在线| 成人在线高清视频| 日韩欧美成人一区二区三区| av日韩中文字幕| 亚洲国产精品视频| 国产欧美三级电影| 欧美色黄视频| av在线天堂网| 欧美在线性爱视频| 亚洲欧洲www| 亚洲精品高潮| 美美女免费毛片| 国产老头和老头xxxx×| 午夜精品美女自拍福到在线| av影院午夜一区| 成人国产精品入口免费视频| 骚虎黄色影院| aaaaa一级片| 成人在线国产精品| 色狠狠色噜噜噜综合网| 亚洲国产老妈| 青青草视频免费在线观看| 国产精品亚洲欧美导航| 亚洲美女淫视频| 亚洲女娇小黑人粗硬| 狠狠色一日本高清视频| 精品一级少妇久久久久久久| 日韩在线电影一区| 精品视频在线播放| 成人小视频免费在线观看| 欧美一级免费| 先锋影音av资源在线| 久草免费在线视频观看| 亚洲成人午夜在线| 色偷偷综合社区| 欧美国产欧美亚州国产日韩mv天天看完整 | 欧美xxxxxxxxx| 韩国女主播成人在线观看| 成人av免费电影网站| www.天堂在线观看| 久久一级黄色片| 丝袜老师办公室里做好紧好爽| 欧美在线视频在线播放完整版免费观看| 亚洲主播在线播放| 在线亚洲一区| 狠狠久久综合| 一个人看的www一区| 黑人操亚洲女人| 亚洲午夜久久久久久久久红桃 | 最新在线地址| 美女把腿扒开让男人桶免费 | 国产中文一区二区| 亚洲精品久久久一区二区三区| 久久久久久久久伊人| 亚洲激情中文| 成人1区2区| 四虎影视精品成人| 亚洲国产成人在人网站天堂| 免费在线观看黄视频| 91极品视频在线观看| 国产精品日本一区二区| 深夜福利国产精品| 日韩视频在线一区二区三区 | 国产精品igao激情视频| 日韩免费在线看| 精品国一区二区三区| 亚洲一区二区av电影| 风流少妇一区二区| 亚洲第一在线| 午夜精品影视国产一区在线麻豆| 91女主播在线观看| av天在线播放| 久久亚洲国产中v天仙www| 在线免费观看视频网站| 日韩免费av一区| 日韩成人av免费| 国内自拍中文字幕| 精品免费国产| 国产91色在线免费| 久久综合免费视频影院| 亚洲成年网站在线观看| 在线观看不卡一区| 亚洲欧洲日韩在线| 99国产精品视频免费观看| 日本午夜一区二区| 亚洲国产日韩欧美一区二区三区| 欧美丝袜足交| 欧美一区 二区| 4438五月综合| 99久久精品一区二区成人| 午夜小视频在线观看| 调教在线观看| 亚色视频在线播放| 99热99在线| jizz视频18| 狠狠色噜噜狠狠| 影音四色91| 国产91中文| 色先锋av男人资源先锋影院| 黄色av免费观看| 超碰在线观看av| 国产美女免费视频| 国产91免费在线观看| 国产精品久久久久久免费| 99视频免费看| 天堂在线资源库| 精品极品三级久久久久| 国产你懂的在线观看| 91精品国产福利尤物| 草莓视频性福宝| 午夜精彩视频| 天堂在线中文| 精品国产丝袜高跟鞋| www在线免费观看视频| 欧美一卡二卡| 99久久精品一区二区成人| 超碰成人免费| 国产精品国产一区| 亚洲免费黄色| 免费av成人在线| 久久影院电视剧免费观看| 国产精品无码永久免费888| 亚洲一区在线观看免费| 欧美日韩国产不卡| 这里只有精品丝袜| 日韩av快播网址| 久久国产精品一区二区三区四区 | 国产主播精品在线| 日本午夜精品一区二区| 久久久性生活视频| 1314成人网| 久草视频免费在线| 亚洲男女视频在线观看| 美女喷水白浆| 福利在线播放| 国产精品黄色片| 午夜精品毛片| 国产成人精品免费在线| 亚洲一区二区综合| 亚洲精品一区二区三区不| 欧美一区二区视频97| 亚洲欧美精品在线观看| www午夜视频| www.av麻豆| 欧美激情性xxxxx| 在线资源av| a'aaa级片在线观看| 蜜桃精品wwwmitaows| 蜜桃视频在线一区| 亚洲午夜电影网| 欧美成人在线免费| 欧美一区二区在线| www.四虎精品| 国产毛片在线视频| 成人18免费| 成人激情综合| 日韩午夜免费| 亚洲一区在线电影| 久久影院在线观看| 亚洲一区二区三区精品动漫| 手机在线看片日韩| 亚洲色图偷窥| 18视频在线观看| 欧美日韩91| 亚洲伊人色欲综合网| 欧美日韩国产999|