国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee

 找回密碼
 注冊
搜索

基于STM32的平衡小車PCB+原理圖+程序

[復制鏈接]
樓主
基于STM32的平衡小車、實現小車上電自動平穩、APP遙控前進左右后退、預留外接超聲波接口、可以實現超聲波避障功能
Altium Designer畫的原理圖和PCB圖如下:(附件中可下載工程文件)
基于STM32的平衡小車PCB+原理圖+程序 000601lmhbggbmydvr69gj.png 基于STM32的平衡小車PCB+原理圖+程序 1.png 部分源碼
  1. u8 Way_Angle=1;                             //獲取角度的算法,1:四元數  2:卡爾曼  3:互補濾波
  2. u8 Flag_Qian,Flag_Hou,Flag_Left,Flag_Right,Flag_sudu=2; //藍牙遙控相關的變量
  3. u8 Flag_Stop=1,Flag_Show=0;                 //停止標志位和 顯示標志位 默認停止 顯示打開
  4. int Encoder_Left,Encoder_Right;             //左右編碼器的脈沖計數
  5. int Moto1,Moto2;                            //電機PWM變量 應是Motor的 向Moto致敬        
  6. int Temperature;                            //顯示溫度
  7. int Voltage;                                //電池電壓采樣相關的變量
  8. float Angle_Balance,Gyro_Balance,Gyro_Turn; //平衡傾角 平衡陀螺儀 轉向陀螺儀
  9. float Show_Data_Mb;                         //全局顯示變量,用于顯示需要查看的數據
  10. u32 Distance;                               //超聲波測距
  11. u8 delay_50,delay_flag,Bi_zhang=0;          //默認情況下,不開啟避障功能,長按用戶按鍵2s以上可以進入避障模式
  12. float Acceleration_Z;                       //Z軸加速度計  
  13. int main(void)
  14. {
  15.         Stm32_Clock_Init(9);            //=====系統時鐘設置
  16.         delay_init(72);                 //=====延時初始化
  17.         JTAG_Set(JTAG_SWD_DISABLE);     //=====關閉JTAG接口
  18.         JTAG_Set(SWD_ENABLE);           //=====打開SWD接口 可以利用主板的SWD接口調試
  19.         LED_Init();                     //=====初始化與 LED 連接的硬件接口
  20.         KEY_Init();                     //=====按鍵初始化
  21.         OLED_Init();                    //=====OLED初始化
  22.         uart_init(72,128000);           //=====初始化串口1
  23.   uart3_init(36,9600);            //=====串口3初始化
  24.   MiniBalance_PWM_Init(7199,0);   //=====初始化PWM 10KHZ,用于驅動電機 如需初始化電調接口 改為MiniBalance_PWM_Init(9999,35) 200HZ
  25.         Encoder_Init_TIM2();            //=====編碼器接口
  26.         Encoder_Init_TIM4();            //=====初始化編碼器2
  27.         Adc_Init();                     //=====adc初始化
  28.         IIC_Init();                     //=====模擬IIC初始化
  29.   MPU6050_initialize();           //=====MPU6050初始化        
  30.   DMP_Init();                     //=====初始化DMP     
  31.         TIM3_Cap_Init(0XFFFF,72-1);            //=====超聲波初始化
  32.          EXTI_Init();                    //=====MPU6050 5ms定時中斷初始化
  33.         while(1)
  34.                 {     
  35.                                         if(Flag_Show==0)          //使用MiniBalanceV3.5 APP和OLED顯示屏
  36.                                         {
  37.                                                         APP_Show();        
  38.                                                         oled_show();          //===顯示屏打開
  39.                                         }
  40.                                         else                      //使用MiniBalanceV3.5上位機 上位機使用的時候需要嚴格的時序,故此時關閉app監控部分和OLED顯示屏
  41.                                         {
  42.                                       DataScope();          //開啟MiniBalanceV3.5上位機
  43.                                         }        
  44.                                   delay_flag=1;        
  45.                                         delay_50=0;
  46.                                         while(delay_flag);             //通過MPU6050的INT中斷實現的50ms精準延時                                
  47.                 }
  48. }
復制代碼

完整源碼和主控板原理圖pcb: 平衡小車原理圖pcb源碼.7z (11.45 MB, 售價: 3 E幣)
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規則

手機版|小黑屋|ELEOK |網站地圖

GMT+8, 2026-5-26 04:01

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回復 返回頂部 返回列表