找回密码
 注册

QQ登录

只需一步,快速开始

搜索

基于STM32的平衡小车PCB+原理图+程序

[复制链接]
山海致远 发表于 2020-5-24 16:26:38 | 显示全部楼层 |阅读模式
基于STM32的平衡小车、实现小车上电自动平稳、APP遥控前进左右后退、预留外接超声波接口、可以实现超声波避障功能
Altium Designer画的原理图和PCB图如下:(附件中可下载工程文件)
000601lmhbggbmydvr69gj.png 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币)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|ELEOK |网站地图

GMT+8, 2024-12-20 07:14

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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