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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

兩輪自平衡小車設計資料大全 含源碼

[復制鏈接]
跳轉到指定樓層
樓主
平衡小車資料大全


單片機源程序如下:
  1. #include "sys.h"
  2. #include "usart.h"               
  3. //#include "delay.h"       

  4. // 編碼器:100線;電機減速比:150

  5. #include "ofme_led.h"


  6. #include "ofme_filter.h"
  7. #include "ofme_iic.h"
  8. #include "ofme_iic_dev.h"
  9. #include "ofme_pwm.h"
  10. #include "ofme_pid.h"
  11. #include "ofme_encoder.h"
  12. #include "ofme_io.h"
  13. #include "ofme_time.h"
  14. #include "ofme_ir_nec.h"

  15. #define PI (3.14159265)
  16. // 度數表示的角速度*1000
  17. #define MDPS (70)
  18. // 弧度表示的角速度
  19. #define RADPS ((float)MDPS*PI/180000)
  20. // 每個查詢周期改變的角度
  21. #define RADPT (RADPS/(-100))


  22. // 平衡的角度范圍;+-60度(由于角度計算采用一階展開,實際值約為46度)
  23. #define ANGLE_RANGE_MAX (60*PI/180)
  24. #define ANGLE_RANGE_MIN (-60*PI/180)

  25. // 全局變量
  26. pid_s sPID;                                        // PID控制參數結構體
  27. float radian_filted=0;                // 濾波后的弧度
  28. accelerometer_s acc;                // 加速度結構體,包含3維變量
  29. gyroscope_s gyr;                        // 角速度結構體,包含3維變量
  30. int speed=0, distance=0;        // 小車移動的速度,距離
  31. int tick_flag = 0;                        // 定時中斷標志
  32. int pwm_speed = 0;                        // 電機pwm控制的偏置值,兩個電機的大小、正負相同,使小車以一定的速度前進
  33. int pwm_turn = 0;                        // 電機pwm控制的差異值,兩個電機的大小相同,正負相反,使小車左、右轉向
  34. float angle_balance = 0;        // 小車的平衡角度。由于小車重心的偏移,小車的平衡角度不一定是radian_filted為零的時候


  35. // 定時器周期中斷,10ms
  36. void sys_tick_proc(void)
  37. {
  38.         static unsigned int i = 0;

  39.         tick_flag++;

  40.         i++;
  41.         if(i>=100) i=0;

  42.         if(i==0)                   // 綠燈的閃爍周期為1秒
  43.         {
  44.                 LED1_OFF();
  45.         }
  46.         else if(i==50)
  47.         {
  48.                 LED1_ON();
  49.         }
  50. }

  51. void control_proc(void)
  52. {
  53.         int i = ir_key_proc(); // 將紅外接收到的按鍵值,轉換為小車控制的相應按鍵值。

  54.         switch(i)
  55.         {
  56.                 case KEY_TURN_LEFT:
  57.                         if(pwm_turn<500) pwm_turn += 50;
  58.                         break;
  59.                 case KEY_TURN_RIGHT:
  60.                         if(pwm_turn>-500) pwm_turn -= 50;
  61.                         break;
  62.                 case KEY_TURN_STOP:
  63.                         pwm_turn = 0;
  64.                         distance = 0;
  65.                         pwm_speed = 0;
  66.                         break;
  67.                 case KEY_SPEED_UP:
  68.                         if(pwm_speed<500) pwm_speed+=100;
  69.                         break;
  70.                 case KEY_SPEED_DOWN:
  71.                         if(pwm_speed>-500) pwm_speed-=100;
  72.                         break;
  73.                 case KEY_SPEED_0:
  74.                         pwm_speed = 0;
  75.                         break;
  76.                 case KEY_SPEED_F1:
  77.                         pwm_speed = 150;
  78.                         break;
  79.                 case KEY_SPEED_F2:
  80.                         pwm_speed = 300;
  81.                         break;
  82.                 case KEY_SPEED_F3:
  83.                         pwm_speed = 450;
  84.                         break;
  85.                 case KEY_SPEED_F4:
  86.                         pwm_speed = 600;
  87.                         break;
  88.                 case KEY_SPEED_F5:
  89.                         pwm_speed = 750;
  90.                         break;
  91.                 case KEY_SPEED_F6:
  92.                         pwm_speed = 900;
  93.                         break;
  94.                 case KEY_SPEED_B1:
  95.                         pwm_speed = -150;
  96.                 case KEY_SPEED_B2:
  97.                         pwm_speed = -300;
  98.                 case KEY_SPEED_B3:
  99.                         pwm_speed = -450;
  100.                         break;
  101.                 default:
  102.                         break;
  103.         }

  104.         pwm_turn *= 0.9;        // pwm_turn的值以0.9的比例衰減,使小車在接收到一個轉向信號后只轉動一定的時間后停止轉動。


  105.         speed = speed*0.7 +0.3*(encoder_read());        // 定周期(10ms)讀取編碼器數值得到實時速度,再對速度進行平滑濾波
  106.         if(speed!=0)
  107.         {
  108.                 printf("speed: %d, dst: %d, pwm: %d \r\n", speed,distance,(int)(speed*6+distance*0.1));
  109.         }



  110.         encoder_write(0);                                                        // 編碼器值重新設為0

  111.         distance += speed;                                                        // 對速度進行積分,得到移動距離

  112.         if(distance>6000) distance = 6000;                        // 減少小車懸空、空轉對控制的影響
  113.         else if(distance<-6000) distance = -6000;

  114. }

  115. void balance_proc(void)
  116. {
  117.         static unsigned int err_cnt=0;

  118. //        float tFloat;
  119.         int pwm_balance;
  120. //        static float angle;
  121. //        float angle_t;
  122.         float radian, radian_pt;          // 當前弧度及弧度的微分(角速度,角度值用弧度表示)

  123.         adxl345_read(&acc);                        // 讀取當前加速度。由于傳感器按照的位置原因,傳感器的值在函數內部經過處理,變為小車的虛擬坐標系。
  124.         l3g4200d_read(&gyr);                // 讀取當前角速度。同樣經過坐標系變換。


  125. // 此段程序用于傳感器出錯時停止小車
  126.         err_cnt = err_cnt*115>>7;        // err_cnt以0.9的比例系數衰減(115>>7的值約為0.9,避免浮點數,提高速度)
  127.         if(acc.flag != 0x0F || gyr.flag != 0x0F)   // 讀取的角度、角速度值有誤。可能是電磁干擾、iic線太長等導致出錯。
  128.         {
  129.                 LED0_ON();                // 亮紅燈
  130.                 err_cnt +=100;        // 等比數列,比例系數0.9(115>>7),常數項100;根據公式,連續10項的和約為657
  131.                 if(err_cnt>657) goto err;        // 當連續發生約10次(約0.1秒)錯誤則超過657而溢出。
  132.         }


  133. // 此段程序用于倒立或失重時停止小車
  134.         if(acc.z<=0)
  135.         {
  136.                 goto err;
  137.         }


  138. // 小車的虛擬x軸方向為小車前進方向,虛擬y軸為小車左邊,虛擬z軸為小車上升方向。
  139. // 前傾角度為負,后傾角度為正。
  140.         // 通過計算加速度分量,得到小車傾斜弧度(未濾波)
  141.         radian = (float)(acc.x)/acc.z;        //  一階展開:Q =f(x)=x-x^3/3+x^5/5+...+(-1)^k*x^(2k+1)/(2k+1)+...
  142.         // 通過角速度傳感器,得到小車的角速度(單位為 弧度/秒)
  143.         radian_pt = gyr.y*RADPT;
  144.         radian_filted = ofme_filter(radian_filted, radian, radian_pt);                // 互補濾波得到小車的傾斜角度

  145. // 此段程序用于小車傾斜角度過大時,停止小車
  146.         if(radian_filted> ANGLE_RANGE_MAX || radian_filted<ANGLE_RANGE_MIN)
  147.         {
  148.                 goto err;
  149.         }

  150. // 通過PID計算,得到保持小車角度為零所需要的電機pwm輸出
  151.         pwm_balance = pid_proc(&sPID, radian_filted, radian_pt);
  152.         //        printf("%d\r\n",speed);
  153. // 通過小車移動速度與移動距離,調整小車平衡所需的pwm輸出
  154.         pwm_balance += (speed*6+distance*0.1);

  155. // 在pwm_balance的基礎上,加上速度分量與轉動分量,調整小車兩個電機的轉速。
  156.         pwm_control(pwm_balance+pwm_speed+pwm_turn, pwm_balance+pwm_speed-pwm_turn);

  157. // 如果pwm超出有效值,紅燈亮。用于調試,了解系統狀態。
  158.         if(pwm_balance>=1000||pwm_balance<=-1000) LED1_ON();
  159.         LED0_OFF();
  160.         return;
  161. err:
  162.         puts("balance error.\r\n");
  163.         pwm_control(0, 0);                                   // 關閉電機
  164.         return;
  165. }


  166. int main(void)
  167. {
  168. //        int i=0, t;
  169. //        int pwm;
  170. //        float radian, radian_pt;

  171.           Stm32_Clock_Init(9);//系統時鐘設置
  172.         uart_init(72,57600); //串口1初始化   
  173.         hw_tick_start();   // 定時器周期性中斷,用于提供系統脈搏
  174. ////////////////////////////////////////////////////////////////////////////////
  175.         led_init();
  176.         pwm_init();
  177.         iic_init();
  178.         adxl345_init(&acc);
  179.         l3g4200d_init(&gyr);
  180.         hw_ir_init();
  181.         encoder_init();
  182.         while(0)
  183.         {
  184.                 if(tick_flag>100)
  185.                 {
  186.                         tick_flag = 0;
  187.                         printf("count: %d\r\n",encoder_read());

  188.                 }
  189.         }



  190. ////////////////////////////////////////////////////////////////////////////////
  191. //        pid_init(&sPID, 4500,0,-300);6000--350        ;8000--350;11000--350;
  192. //        pid_init(&sPID, 6000,0,-35000);
  193.         pid_init(&sPID, 7500,0,-35000);          // 調節PID參數,后3個形參分別為:比例系數P,積分系數I,微分系數D
  194.         sPID.target = -3.5*PI/180;

  195.         radian_filted = 0;
  196.         adxl345_init(&acc);
  197.         l3g4200d_init(&gyr);
  198.         while(1)
  199.         {
  200.                 if(tick_flag)
  201.                 {
  202.                         tick_flag = 0;
  203.                         balance_proc();        // 調節小車,保持平衡
  204.                         control_proc();        // 根據遙控接收到的數據,調整電機輸出參數
  205.                 }
  206.         }
  207. }
復制代碼

所有資料51hei提供下載:
兩輪自平衡小車資料 源碼.rar (8.27 MB, 下載次數: 51)


評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
欧美日韩和欧美的一区二区| 国产乱码精品一区二区三区日韩精品 | 欧美一区三区二区| av中文字幕不卡| 极品美女一区二区三区| 黄色羞羞视频在线观看| 四虎免费av| 顶级嫩模一区二区三区| 欧美bbbbbbbbbbbb精品| 国产伦精品一区二区三区妓女下载| 日本一区免费在线观看| 国产91免费观看| 亚洲午夜精品久久久久久久久久久久| 高跟丝袜一区二区三区| 99re这里只有精品首页| 先锋影音久久久| 亚洲精品中文字幕99999| 高清在线视频不卡| 国产系列电影在线播放网址| 精品久久九九| www.国产黄色| 青青国产在线观看| 毛片aaaaaa| 怡红院亚洲色图| 一二三四中文字幕| 久久国产精品99久久久久久丝袜| 青草青草久热精品视频在线网站| 亚洲视频999| 欧美大片日本大片免费观看| 亚洲国产cao| 中文字幕av不卡| 成人免费视频免费观看| 亚洲自啪免费| 欧美区日韩区| 手机亚洲手机国产手机日韩| 麻豆一区二区| 日本成人精品| 婷婷久久免费视频| 不卡一二三区| 18aaaa精品欧美大片h| av资源种子在线观看| 美女的诞生在线观看高清免费完整版中文| 熟年交尾五十路视频在线播放| 乱中年女人av三区中文字幕| 国产女人爽到高潮a毛片| 久久青青草原亚洲av无码麻豆| 成人做爰视频网站| 中文字幕被公侵犯的漂亮人妻| 手机av在线网站| 美女在线免费视频| 日本婷婷久久久久久久久一区二区| 91精品黄色| 日韩av电影中文字幕| 久久久免费观看| 国产亚洲一级| 成人av激情人伦小说| 国产精品毛片久久久久久久久久99999999| 超碰caoporn久久| 午夜视频在线看| 黄页网址大全在线播放| 成人嫩草影院免费观看| 好看的av网站| 黑料不打烊so导航| 国产精品18久久久久久久久久 | 亚洲丝袜精品| 欧美69xxx| 色欧美激情视频在线| freemovies性欧美| 免费不卡视频| 国产深夜视频在线观看| 91色在线看| 在线天堂新版最新版在线8| 这里有精品可以观看| 亚洲午夜天堂| 曰本一区二区| 一区二区三区高清在线观看| 日韩激情欧美| 久久精品国产亚洲5555| 欧美日韩导航| 久久国产精品亚洲人一区二区三区| 久久99国内| 911久久香蕉国产线看观看| 亚洲一区二区日韩| 国产欧美二区| 老司机午夜精品| 国产91在线观看丝袜| 99久久99久久久精品齐齐| 国产欧美一区二区精品忘忧草| 国产精品久久久久影院亚瑟 | 跑男十一季在线观看免费| 最近免费中文字幕大全免费第三页| 一本久道久久综合多人| 国产精品久久久亚洲第一牛牛| 91短视频推广| 毛片视频免费观看| 国产黄色免费在线观看| 久草在线资源站资源站| 九九热线视频只有这里最精品| 欧一区二区三区| 三上亚洲一区二区| 亚洲一区二区免费看| 国产高清亚洲一区| 中文字幕亚洲一区二区va在线| 亚洲高清视频在线| 欧美一区二区三区白人| 国产精品一级二级三级| 国产精品538一区二区在线| 国产欧美精品区一区二区三区 | 久热国产精品视频一区二区三区| 手机在线视频你懂的| 免费黄色特级片| 中出视频在线观看| 国产性xxxx高清| 蜜桃91麻豆精品一二三区| 国产一二三区精品视频| 四虎av网址| 国产在线播放av| 亚洲人免费短视频| 精品国产91乱码一区二区三区四区| 99国产精品| 91美女在线观看| 欧美午夜电影在线| 亚洲系列中文字幕| 国产精品美女久久久久久免费| 欧美久久在线| 无码人妻丰满熟妇区毛片| 偷拍女澡堂一区二区三区| 日韩乱码一区二区| 男人天堂影院| 欧美变态视频| 成人香蕉视频| 久久密一区二区三区| 国产一区二区久久| 亚洲成av人影院| 日韩久久精品成人| 国产女精品视频网站免费| 黄色网址在线免费看| 337p日本欧洲亚洲大胆张筱雨| 精品在线视频免费| 性欧美性free| 一级黄色在线| 少妇精品视频在线观看| 在线日韩中文| 中文一区二区完整视频在线观看| 欧美人妖巨大在线| 韩国日本不卡在线| 中文字幕综合在线观看| 国产ts在线观看| 一级片在线观看免费| 国产精品剧情一区二区三区| 成年在线观看免费人视频| 国产精品视频首页| 丝袜亚洲另类欧美综合| 亚洲综合一区在线| 中文亚洲视频在线| 国产一区自拍视频| 在线一区二区不卡| 999视频在线| 九九视频在线播放| 91精选在线| 国产精品福利在线观看播放| 久久久久久久久久久黄色| 欧美成人高清电影在线| 91精品在线播放| 91成人性视频| 一级做a爰片久久| 无码一区二区三区在线| 亚洲小说春色综合另类网蜜桃| 在线观看免费毛片| 老司机凹凸av亚洲导航| 国产成人免费在线| 日韩欧美卡一卡二| 成人网欧美在线视频| 成人日韩在线视频| 夜夜嗨aⅴ一区二区三区| 69日小视频在线观看| 999精品嫩草久久久久久99| 精品一区二区三区免费视频| 欧美午夜理伦三级在线观看| 日韩美女视频免费在线观看| 久久久精品在线视频| 毛片在线免费视频| 男人资源网站| 中文字幕久久精品一区二区| 国产一区不卡在线| 亚洲成色777777女色窝| 欧美18视频| 久久久久久久麻豆| 九九热视频免费观看| 亚洲日本在线观看视频| 加勒比av一区二区| 亚洲成人精品av| 欧洲高清一区二区| 韩国一级黄色录像| 色在线视频播放| 欧美亚洲人成在线| 99久久综合99久久综合网站| 亚洲视频在线观看网站| 警花观音坐莲激情销魂小说| 韩国av免费观看| 国产无遮挡在线视频免费观看| 开心激情综合| 综合自拍亚洲综合图不卡区| 久久久久久久电影一区| 国产精品亚洲a| 亚洲国产精品二区| 香蕉成人app免费看片| 久久国产精品亚洲77777| 91精品国产综合久久婷婷香蕉| 国产精品推荐精品| 午夜激情福利电影| eeuss影院95999部| 国产99久久| 精品色蜜蜜精品视频在线观看| 国产精品久久久亚洲| yy1111111| 五月天色网站| 成人另类视频| 亚洲精品五月天| 国产精品一区二区三区毛片淫片| aaaa黄色片| 人人干人人草| 日韩在线影视| 疯狂做受xxxx欧美肥白少妇| av资源站久久亚洲| 老湿机69福利| 国产免费嫩草影院| 国产真实生活伦对白| 国产免费av一区二区三区| 午夜久久久久久| 国产日韩欧美精品| www.av视频在线观看| 丝袜+亚洲+另类+欧美+变态| 日韩视频一区| 亚洲美女激情视频| 激情视频综合网| 久热精品免费视频| 精品国产乱子伦一区二区| 亚洲午夜电影在线| 国产美女精品在线观看| 六月丁香在线视频| 成人黄色在线电影| 成人美女在线视频| 日本久久久久久久久久久| 免费看黄色的视频| 天堂影视av| 中文一区二区| 在线性视频日韩欧美| 亚洲av无日韩毛片久久| 青青操在线观看视频| 日韩免费一区| 精品乱人伦一区二区三区| 激情小视频网站| 野外性xxxxfreexxxxx欧美| 91精品导航| 色一情一伦一子一伦一区| 一区二区免费在线视频| 亚洲精品视频网| 先锋影音网一区二区| 亚洲国产精品麻豆| 亚洲一区二区三区乱码 | www 日韩| 成人午夜视频在线| 国产精品久久77777| 亚洲精品久久久久久国| 91在线导航| 成人国产视频在线观看| 国产精品一区二区三区毛片淫片 | 中文字幕中文在线不卡住| 成人免费91在线看| 国产www在线| 美女高潮在线观看| 亚洲欧洲无码一区二区三区| 国产亚洲精品美女久久久m| 中文人妻av久久人妻18| sese综合| 婷婷久久综合九色综合伊人色| 亚欧洲精品在线视频免费观看| 免费观看黄一级视频| 久久久久九九精品影院| 欧美日韩国产一区| 日日碰狠狠躁久久躁婷婷| 一个人看的www视频免费观看| 午夜久久免费观看| 中文字幕久热精品视频在线| 手机av免费看| 欧美r级在线| 综合色中文字幕| 曰韩不卡视频| 国产又白又嫩又爽又黄| 超碰成人福利网| 日韩—二三区免费观看av| 97超碰国产精品女人人人爽 | 中文字幕视频在线| 国产宾馆实践打屁股91| 亚洲最大福利视频网| 91久久久久久久久久久久| 精品三级久久久| 欧美α欧美αv大片| 年下总裁被打光屁股sp| 酒色婷婷桃色成人免费av网| 久久久久久久精| 亚洲午夜精品久久久中文影院av | 国产在线成人精品午夜| 中文在线免费二区三区| 日韩欧中文字幕| 污污网站免费看| 中文字幕视频免费在线观看| 久久综合成人精品亚洲另类欧美| 国产一区二区免费电影| 中文字幕2区| 国产精品二区影院| 欧美一级电影免费在线观看| 高潮毛片又色又爽免费| 国产精品毛片视频| 一区二区成人精品| 暗呦丨小u女国产精品| 88xx成人免费观看视频库 | 成品网站w灬+源码1688网页| 日韩高清不卡在线| 国产精品入口免费| 国产专区自拍| 麻豆精品蜜桃视频网站| 国产精品免费一区二区| 欧美色图影院| 日本欧美在线观看| 国产成人福利av| 免费在线黄网| 亚洲一区二区蜜桃| 亚洲熟女毛茸茸| 激情都市亚洲| 欧美精品日日鲁夜夜添| 欧美一区二区三区影院| fc2在线中文字幕| 午夜精品久久久久久久久久| 国产情侣av自拍| 成人免费在线电影| 五月天亚洲婷婷| 国产chinesehd精品露脸| 黄色网址在线免费观看| 欧美视频一二三| 免费不卡的av| 色戒汤唯在线观看| 精品电影一区二区三区| 亚洲欧美另类日本| 麻豆精品在线| 久热精品视频在线免费观看| 潘金莲一级淫片aaaaaa播放| 欧美综合久久| 国产精品久久久久久久久久尿| 欧美特级特黄aaaaaa在线看| 国产亚洲福利| 欧美视频观看一区| 99视频资源网| 一区二区三区欧美| 久久九九热免费视频| 国产乡下妇女三片| 91超碰成人| 51国产成人精品午夜福中文下载| 国产原创在线| www.亚洲色图.com| 夫妻免费无码v看片| 免费在线看黄网站| 日韩欧美不卡一区| 日韩女优在线观看| 久久久久亚洲| 国产精品久久亚洲| eeuss影院eeuss最新直达| 中文字幕中文字幕在线一区| 日韩精品aaa| 欧美日韩视频免费观看| 亚洲无亚洲人成网站77777| 一级黄色大片免费观看| 夜夜精品视频| 视频一区免费观看| 一本大道香蕉8中文在线视频| 欧美日韩亚洲网| 日韩精品一区二区三区在线视频| 国产精品超碰| 国产精品视频网| 人与牲动交xxxxbbb| 国产精品国产精品国产专区不蜜 | 日本精品视频在线播放| 欧美精品另类| 2020国产精品| 99久久综合网| 9999久久久久| 国产精品三级久久久久久电影| 天堂网在线.www天堂在线视频| 国产精品丝袜一区| 国产真实乱人偷精品| 大伊香蕉精品在线品播放| 国产精品美女www爽爽爽视频| 色视频免费观看| 一区二区日韩电影| 我要看黄色一级片| 欧美日本久久| 可以免费看的黄色网址| 亚洲小说区图片区都市| 在线视频日本亚洲性|