找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1569|回复: 1
打印 上一主题 下一主题
收起左侧

求PID控制倒立摆平衡的代码

[复制链接]
楼主
ID:243507 发表于 2018-12-27 02:47 | 显示全部楼层
这是基于stm32F103的倒立摆,只要读懂代码算法,移植到F7不难

单片机源程序如下:
  1. #include "main.h"
  2. u8 Way_Angle=1;                             //获取角度的算法,1:四元数  2:卡尔曼  3:互补滤波
  3. u8 Flag_Qian,Flag_Hou,Flag_Left,Flag_Right; //蓝牙遥控相关的变量
  4. u8 Flag_Stop=1,Flag_Show=1;                 //停止标志位和 显示标志位 默认停止 显示打开
  5. int Encoder_Left,Encoder_Right;             //左右编码器的脉冲计数
  6. int Moto1,Moto2;                            //电机PWM变量 应是Motor的 向Moto致敬       
  7. int adc;                            //显示温度
  8. int Voltage;                                //电池电压采样相关的变量
  9. float Angle_Balance,Gyro_Balance,Gyro_Turn; //平衡倾角 平衡陀螺仪 转向陀螺仪
  10. float Show_Data_Mb;                         //全局显示变量,用于显示需要查看的数据

  11. /**************************************************************************
  12. 函数功能:主函数 初始化系统和外设
  13. 作    者:Mini Balance
  14. **************************************************************************/
  15. int main(void)
  16. {
  17.         SystemInit();                   //=====系统初始化
  18.         delay_init(72);                 //=====延时函数
  19.         usart1_init();                  //=====串口1初始化 波特率:115200
  20.         uart3_init(72,9600);            //=====串口3初始化 波特率:9600
  21.         JTAG_Set(JTAG_SWD_DISABLE);     //=====关闭JTAG接口
  22.         JTAG_Set(SWD_ENABLE);           //=====打开SWD接口 可以利用主板的SWD接口调试
  23.   led_init();                     //=====LED初始化
  24.         KEY_Init();                     //=====按键初始化
  25.         Adc_Init();                            //=====初始化ADC模块
  26.         MiniBalance_PWM_Init(7199,0);   //=====初始化PWM
  27.         OLED_Init();                          //=====初始化OLED  
  28.         Encoder_Init();                 //=====初始化编码器1
  29.         delay_ms(200);                  //=====延时等待稳定               
  30.         Timer1_Init(49,7199);           //=====5MS进一次中断服务函数 中断服务函数在minibalance.c里面
  31.   while(1)
  32.   {

  33.                                         if(1==Flag_Show)                oled_show(); //===显示屏打开
  34.                                         else                      DataScope(); //===显示屏关闭 打开上位机                       
  35.         }       
  36. }
复制代码

所有资料51hei提供下载:
旋转倒立摆.7z (357.29 KB, 下载次数: 23)



评分

参与人数 1黑币 +100 收起 理由
admin + 100 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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