这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【原创】平衡小车--from文

共1条 1/1 1 跳转至

【原创】平衡小车--from文

工程师
2024-09-19 18:26:02     打赏

在学习了STM32相关知识以后,我萌生了做一个平衡车的想法,所以我看了网上的教程跟着做了一个,在淘宝买了各种配件,尽量控制好成本。

  首先需要主控芯片(STM32F103C8T6+电机驱动芯片(TB6612FNG,利用嘉立创EDEA进行打板,在淘宝买了小车框架:平衡车底盘、电机、轮子等小配件,用到的陀螺仪:MPU6050,检测倾斜角度,另外还有蓝牙模块,超声波模块,OLED显示屏。

图片2.png

1726741188272990.png

该平衡车各个模块原理图如图所示:

1726741229651349.png

1主控芯片STM32F103C8T6及周围电路结构如下:

1.STM32F103C8T648脚芯片)

2.8M晶振(STM32内部倍频至72MHz,产生供系统正常工作的稳定的脉冲信号),

3.复位电路(RST

4.启动模式选择电路(BOOT0BOOT1

5.去耦电容(3.3VGND之间加几个104电容)

6.烧写电路(SW

1726741315472806.png

2)电源电路

   电源采用5V锂电池供电,这里就不需要降压模块获取5V电压,直接通过AMS1117降至3.3V

1726741369224545.png

3)电机驱动芯片TB6612FNG

作用:驱动电机正常运行

PWM1——PA8

PWM2——PA11

电机1——PB12/PB13

电机2——PB14/PB15

1726741396963008.png

4)陀螺仪MPU6050

作用:检测倾斜角

MPU6050中断引脚——PB5

MPU6050所用I2C——PB3/PB4

1726741419224625.png

部分代码:

int velocity(int encoder_left,int encoder_right)

{      

 Static float Velocity,Encoder_Least,Encoder,Movement;

  static float Encoder_Integral,Target_Velocity;

    Encoder_Least =(encoder_left+encoder_right)-0;                      Encoder *= 0.7;                                                  

Encoder += Encoder_Least*0.3;                                       Encoder_Integral +=Encoder;                                         //Encoder_Integral=Encoder_Integral-Movement;                         if(Encoder_Integral>10000)   Encoder_Integral=10000;              if(Encoder_Integral<-10000) Encoder_Integral=-10000;                Velocity=Encoder*Velocity_Kp+Encoder_Integral*Velocity_Ki;          

return Velocity;

}

实物图展示:

1726741451135944.png


共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]