標題: 自平衡自行車軟件硬件原理圖+STM32源程序 [打印本頁]

作者: ihooihoo    時間: 2019-4-18 15:08
標題: 自平衡自行車軟件硬件原理圖+STM32源程序
自平衡自行車是用一個平衡輪的PID火算法控制加減速來得到校正力的方案。懂的人看看就知道了

單片機源程序如下:
  1. #include "sys.h"
  2. u8 Flag_Stop=1,Flag_Show=0,Flag_Direction;         //停止標志位和 顯示標志位 默認停止 顯示打開
  3. float Encoder_Balance,Encoder_Walk,Target_Walk;          //編碼器的脈沖計數(shù)            
  4. float Motor_Balance,Motor_Walk,Motor_Turn,Velocity=70;      //電機PWM變量
  5. int Voltage;                              //電池電壓采樣相關的變量                       
  6. u8 delay_50,delay_flag,PID_Send;          //延時相關變量
  7. float Pitch,Roll,Yaw;   //三軸角度和XYZ軸目標速度
  8. float        Balance_KP=1800,Balance_KD=8,Position_KP=100,Position_KI=2;  //位置控制PID參數(shù)
  9. float Adjust,Middle;
  10. int main(void)
  11. {
  12.         Stm32_Clock_Init(9);            //=====系統(tǒng)時鐘設置
  13.         delay_init(72);                 //=====延時初始化
  14.         JTAG_Set(JTAG_SWD_DISABLE);     //=====關閉JTAG接口
  15.         JTAG_Set(SWD_ENABLE);           //=====打開SWD接口 可以利用主板的SWD接口調(diào)試
  16.         MiniBalance_PWM_Init();         //=====初始化PWM 10KHZ,用于驅(qū)動電機
  17.         LED_Init();                     //=====初始化與 LED 連接的硬件接口
  18.         KEY_Init();                     //=====按鍵初始化
  19.         OLED_Init();                    //=====OLED初始化
  20.         uart_init(72,128000);           //=====初始化串口1
  21.         uart2_init(36,9600);            //=====串口3初始化
  22.         Encoder_Init_TIM2();            //=====編碼器接口
  23.         Encoder_Init_TIM3();            //=====初始化編碼器C
  24.         Adc_Init();                     //=====adc初始化
  25.         delay_ms(500);                  //=====延時
  26.         IIC_Init();                     //=====IIC初始化
  27.   MPU6050_initialize();           //=====MPU6050初始化       
  28.   DMP_Init();                     //=====初始化DMP     
  29.   EXTI_Init();                    //=====MPU6050 5ms定時中斷初始化
  30.         while(1)
  31.                 {       
  32.             if(Flag_Show==0)          //使用MiniBalance APP和OLED顯示屏
  33.                         {
  34.                                 APP_Show();       
  35.                                 oled_show();          //===顯示屏打開
  36.             }
  37.             else                    //使用MiniBalance 上位機 上位機使用的時候需要嚴格的時序,故此時關閉app監(jiān)控部分和OLED顯示屏
  38.                   {
  39.                                 DataScope();          //開啟MiniBalance上位機
  40.                         }
  41.                         delay_flag=1;       
  42.                         delay_50=0;
  43.                         while(delay_flag);             //通過MPU6050的INT中斷實現(xiàn)的50ms精準延時                               
  44.                 }
  45. }
復制代碼

所有資料51hei提供下載:
平衡自行車.7z (5.93 MB, 下載次數(shù): 68)





作者: 一心湯    時間: 2023-8-27 00:07
實物圖呢、至少給張圖片吧




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1