找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2468|回复: 1
收起左侧

自平衡自行车软件硬件原理图+STM32源程序

[复制链接]
ID:515496 发表于 2019-4-18 15:08 | 显示全部楼层 |阅读模式
自平衡自行车是用一个平衡轮的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, 下载次数: 67)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1091382 发表于 2023-8-27 00:07 | 显示全部楼层
实物图呢、至少给张图片吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表