标题: 自平衡自行车软件硬件原理图+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;          //编码器的脉冲计数            
  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参数
  9. float Adjust,Middle;
  10. int main(void)
  11. {
  12.         Stm32_Clock_Init(9);            //=====系统时钟设置
  13.         delay_init(72);                 //=====延时初始化
  14.         JTAG_Set(JTAG_SWD_DISABLE);     //=====关闭JTAG接口
  15.         JTAG_Set(SWD_ENABLE);           //=====打开SWD接口 可以利用主板的SWD接口调试
  16.         MiniBalance_PWM_Init();         //=====初始化PWM 10KHZ,用于驱动电机
  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监控部分和OLED显示屏
  38.                   {
  39.                                 DataScope();          //开启MiniBalance上位机
  40.                         }
  41.                         delay_flag=1;       
  42.                         delay_50=0;
  43.                         while(delay_flag);             //通过MPU6050的INT中断实现的50ms精准延时                               
  44.                 }
  45. }
复制代码

所有资料51hei提供下载:
平衡自行车.7z (5.93 MB, 下载次数: 68)





作者: 一心汤    时间: 2023-8-27 00:07
实物图呢、至少给张图片吧




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1