你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32 遥控坦克

[复制链接]
STMCU小助手 发布时间:2023-3-7 15:00

STM32 遥控坦克

7 ~) t+ H& g  O) d3 o

拥有一辆属于自己的遥控坦克是很多人的梦想,能亲自动手制作一辆遥控坦克那就更棒了,年少时做不到的事,终于在成为硬件工程师后如愿以偿!


" ^! Y; w: |0 Y4 O

项目概述


9 J' \3 g2 A5 B! t$ A

坦克不同于一般的车辆,没有像汽车一样可以转向的车轮,其前进和转向都是通过左右两侧的两个履带实现,这就需要左右两侧的履带能够以不同的速度和方向转动。为了简化机械结构,我使用两个独立的电机来驱动左右两侧的履带。然后使用两个舵机制作一个 2 自由度的云台,安装到履带底盘上,用来模拟坦克炮塔的转动。

控制系统是我自己设计的一块 STM32开发板,搭载电机驱动模块、陀螺仪模块、无线通信模块和舵机驱动电路,通过OLED 显示屏显示基本的参数。遥控装置是一个无线手柄,外壳采用游戏手柄的外壳,内部是我自己设计的另外一个 STM32开发板。STM32 遥控坦克如图 1 所示。

  @$ m- L3 K' Y" j) l' n
微信图片_20230305152324.png
图1 STM32 遥控坦克

1 J2 ?* q& }9 Q/ s) D, a

机械结构

1 E) D$ l' V7 J4 R3 I2 J
履带底盘

先绘制好底盘结构件的图纸,如图2所示,然后使用 6061 铝合金板,通过激光切割、折弯、攻丝等工艺加工成我们需要的结构件。

& h; f, ^! H# y

微信图片_20230305152320.png
图2  底盘结构件图纸
! Q/ M3 \: L; Y* F2 C& u

拿到加工好的结构件后,我们使用螺丝、螺母、弹簧、铜柱等进行固定,把底盘组装起来,底盘如图3 所示。

3 ]. i9 d& u# ~" A" s: X" @

, m+ Y6 }2 i6 ^1 d/ ]$ F6 I
微信图片_20230305152315.png
1 @) L" Q' ?+ o" p9 K8 K) A3 n" [
' A/ [+ a7 ?; N( A

; M+ q8 a" R; C7 |( p0 e5 ~
图3  底盘

; f6 z& K0 U+ W. U* c4 I

9 t3 k0 i5 i; {8 p" B
然后将电机和舵机直接装上去,履带采用通用的工程塑料履带即可,图4 所示为底盘安装好履带的效果。
! c( d' y: o! m+ W4 h, a/ Z1 B8 f! E$ ~+ f
微信图片_20230305152312.png
' j$ V& W, j( |3 B, p# S
图4  底盘安装好履带的效果

- C2 {5 }( r6 B0 @, \+ P* K0 O
编码器电机

驱动履带车需要比较大的动力,常见电机一般转速较高,但扭矩较小,因此需要使用减速齿轮箱(见图5)对电机进行减速,同时大幅增大扭矩。这里使用的是减速比为1:30 的直流减速电机,如图6 所示,其额定电压下测试参数如附表所示。

0 Q- a3 M& j( ~6 l* W
微信图片_20230305152307.png
% _2 p9 H" Q( s9 I
4 d; a' R6 s: z  m2 l1 |: X
图5 减速齿轮箱
+ B  Q3 b& M0 O% `
微信图片_20230305152305.png
图6 直流减速电机

1 ]8 F) o3 g8 i0 s, i8 `
微信图片_20230305152300.png
  D3 P" O; ~/ l

电机的尾部有霍尔正交编码器,如图7 所示,可以用来测量电机的转速,反馈给控制系统。


7 L" ^9 v; a& ?  A" A' _+ T

微信图片_20230305152257.png
图7 霍尔正交编码器

3 V6 C2 v. M; Y+ q9 g4 s

正交编码器是一种用于测量旋转速度和方向的传感器,通过积分(累加)运算后,还可以用来计算距离。正交编码器工作原理示意图如图 8 所示,有两个输出信号:A 相和 B 相。正交来源于 A、B 两个信号的特征,一般情况下 A 相和 B 相的输出信号总是有 π/2 的相位差。


1 ^& \1 f( }0 P% }2 a# U$ }. A3 ?# I

微信图片_20230305152254.png
图8 正交编码器工作原理示意图


/ P# g9 j& P2 H3 g3 N: N' t& h! P( q

图 8 中 A 和 B 分别连接到两个传感器上,黑白相间的圆环称为栅格。图 9 所示为电机正转、反转时分别产生的脉冲波形。

$ N! R) f3 v* L: @# |

微信图片_20230305152251.png
图9 电机正转、反转时分别产生的脉冲波形

  b, n$ J5 u; G/ L; ?: q- V

3 j: @: D# P6 j& W$ Z  p+ m

电机正转的时候,信道 A 先输出信号,信道 B 后输出,A 相超前 B 相 90°。也可以看作 A 上升沿时,B 低电平;A 下降图 11 开发板接口   图 9 电机正转、反转时分别产生的脉冲波形沿时,B 高电平。

电机反转的时候,信道 B 先输出信号,信道 A 后输出,B 相超前 A 相 90°。也可以看作 A 上升沿时,B 高电平,A 下降沿时,B 低电平。

读取编码器的数据一般有 3 种方式:专用硬件模块、I/O 接口中断处理和普通 I/O 接口读取并处理。这 3 种方式占用的计算资源依次增大,通用性也依次增强。在 STM32 中常用第一种方式处理,使用定时器的编码器模式。


/ ^! x! q! b* H1 [% `) ~" L+ D

舵机云台

舵机云台如图 10 所示,由两个舵机驱动,水平方向可以转动 270°,垂直方向可以转动 180°。我们把云台嵌入履带底盘,用来模拟坦克的炮塔转动。

  ^' h  W- e# @  m& \# S* q
微信图片_20230305152248.png
图10 舵机云台
2 J3 ]1 |9 f0 A8 }! ]( L( c

4 |4 b7 a. S8 h! z# d

主控STM32开发板

, s: C* v$ z: F$ X: Z
设计目标

我使用STM32开发板控制坦克。为了便于这个开发板用于更多的项目,设计时需要尽可能多地增加它的功能。最终确定需要实现的功能包括:可以同时控制 8 个舵机和 2 个编码器电机,搭载 MPU9250 姿态传感器,自带功率为100mW 的无线模块,可实现远距离遥控、通信,支持 CAN 通信、USB 烧录 / 通信、串口通信等。稳压输出可以对外给树莓派供电,控制外部负载。具体开发板接口如图 11 所示。

' z# d5 i4 L6 C# [8 Y: ~! A, c
微信图片_20230305152244.png
图 11 开发板接口

3 ]% j3 A  Y2 c, ?- z) y- y1 O
电路设计

为了实现 STM32 坦克的所有功能,我们充分利用了每一个引脚,下面介绍一下主要的电路原理。STM32 单片机引脚分配如图 12 所示。


( }4 G2 ]. @3 D% ^# w7 V2 L+ p9 t

微信图片_20230305152242.png

图12 STM32 单片机引脚分配

( D0 l8 i9 s* T( Q5 ]2 X

无线部分,我使用 NRF24L01P 无线模块,无线模块电路如图 13 所示,模块自带功放芯片,发射功率为 100mW,通过SPI 总线与 STM32 通信,半双工模式可以接收数据,也可以发送数据。


) T* A% U$ u% E( q' T( W. Y

微信图片_20230305152239.png
图13 无线模块电路


3 j* H5 Y0 ]2 l  C! @0 m4 k

这里使用了 2 个 A4950 电机驱动模块,A4950 电机驱动电路如图 14 所示,STM32 单片机向 A4950 电机驱动模块发送 PWM 信号,即可驱动电机转动。


8 j6 ^; k  h8 C

微信图片_20230305152237.png

$ F% s4 {5 B! a' D: a5 n) g' V" D# S
. k" T- x4 ?# \% [
图14 A4950 电机驱动电路
% h: X& |* {; a. _; F

3 V- R% |8 {2 C( c

开发板上总共有 8 个 PWM 接口,在这个项目中,我们使用其中 2 个即可满足对云台的控制。PWM 输出电路如图 15 所示。


! w8 R2 C) V* m0 o8 p# i

微信图片_20230305152234.png

图 15 PWM 输出电路


1 D' L' L; B7 x/ P- N/ f

PCB设计

电路原理图完成之后,在嘉立创 EDA中 绘 制 PCB, 图16 所示为绘制完成的PCB。

! a/ W2 ]2 j7 |. u

微信图片_20230305152232.png

6 V+ |* }( e0 W4 V7 o! B. \" X; h  ^6 D: e- S' e
图16 绘制完成的 PCB
4 V0 H2 r' \, Y; n' j1 I


( p; S4 f2 \" w+ g1 z  x) b! v4 q

使用嘉立创 EDA 中的 3D 预览功能,查看电路板 3D 模型,如图17 所示,符合预期、确认没有问题之后交付板厂打样。


, ]: d1 Q: i% M% ~, a2 b& C

微信图片_20230305152229.png

图17 电路板 3D 模型

( b. @! U0 t# k, D! T: z3 d7 |

程序设计

A4950 电机驱动芯片的工作原理示意图如图 18 所示,当 IN1 输入高电平且 IN2 输入低电平时,电机正转;当 IN1 输入低电平且IN2 输入高电平时,电机反转。通过在 IN1 或IN2 上输入 PWM 信号,控制电机的转速。


0 Q* X' m4 `2 `5 E( H* j8 Q/ ~

微信图片_20230305152227.png

图 18 A4950 电机驱动芯片工作原理示意图

- R4 i$ E0 D. A; \( z/ c7 r5 c- f

电机控制实现如程序1 所示, 限定PWM 值范围为 0~1000,以其中 1 个电机为例。

4 y  a; u7 a- @
微信图片_20230305152223.jpg

" X, L; C1 v- G6 y* b- i1 ]' P

当电机旋转时,电机尾部的编码器会输出脉冲,每转动一周输出 330 个脉冲,根据单位时间内输出的脉冲数,可以得到电机的转速。如果有需要,可以根据电机的转速计算出坦克前进的速度和距离。程序 2 是使用中断方式读取编码器脉冲数。


; c6 I6 t1 A5 L
微信图片_20230305152220.jpg
- ?1 P" F1 V! {' j" q

云台由 2 个舵机驱动,通过改变输入的 PWM 信号控制舵机的旋转角度。舵机的 PWM 信号周期是 20ms,通过高电平持续的时间(脉宽)来表示需要转动的角度。脉宽取值范围为 500~2500μs,中值是1500μs。具体如程序 3 所示。

" h" {; G" b! B/ {0 }
微信图片_20230305152217.png
微信图片_20230305152214.jpg
# I% w; l+ d0 E7 ~9 t8 S1 O% F

STM32 开发板上的无线模块,可以接收手柄发来的数据。STM32 开发板需要解析手柄发送过来的数据,并转换成电机的转速和舵机的角度。我们用手柄右侧摇杆来控制坦克移动,向前推动摇杆,左右两侧电机同时正转,坦克前进;向后推摇杆,坦克后退;向左推动摇杆,左侧电机反转,右侧电机正转,坦克左转;反之亦然。手柄按键定义如图 19 所示,按下 L1 键,1 号舵机口的 PWM 信号减小,使 1 号舵机左转,按下 R1 键则 1 号舵机右转。同理,按下 L2 或 R2 键,使 2 号舵机正转或反转。具体如程序 4 所示。

) P5 t0 m% p' f- R) p' O8 t) ~2 U

微信图片_20230305152211.png
图19 手柄按键定义
. {" M1 V5 c( J
微信图片_20230305152206.png
微信图片_20230305152202.png
微信图片_20230305152159.png
8 R: N2 G  n' F) I

遥控手柄

( v# A! N( n- W/ Z& Z
电路设计

遥控手柄使用的 STM32 单片机和无线模块与主控开发板一致,无须赘述,我简要介绍一下摇杆的电路。遥控手柄上的摇杆电路如图 20 所示,摇杆由两个旋转电位器和一个按键组成,推动摇杆会使电位器阻值发生变化,进而使电位器分压发生变化。使用单片机内部 ADC 来测量出电位器的分压,即可计算摇杆的位置。摇杆内部的按键在被按下时,会产生电平的变化,进而被检测到。


4 ]. u: s3 S! M/ e

微信图片_20230305152157.png
图20 遥控手柄上的摇杆电路
) M* G, ^. N/ x4 R0 z/ a


% D/ H* Q. M( }+ {( u' M2 N# Z# @

PCB设计

根据电路图,我们绘制出遥控手柄的PCB,如图 21 所示,并交付板厂打样。


  ?: _$ X3 j) H' U+ ^$ p) _! E& B

微信图片_20230305152154.png
图21 遥控手柄的 PCB

9 |: v& L$ q1 C! y! D


$ j8 h2 E2 v$ V! C

电路板实物

打样完成后,对电路板进行焊接,焊接完成的手柄电路板如图 22 所示。

- n9 L# t8 _% }3 @6 }

微信图片_20230305152151.png
图22 焊接完成的手柄电路板
, K  N# P. s% U4 F5 `4 ^


  @% J) v  ~4 Y

程序设计

手柄的无线部分程序同主控 STM32开发板相同,不同的是手柄工作时需要读取 16 个按键的状态,并计算 2 个摇杆的位置。如程序 5 所示,第一行程序用来读取 1 个按键状态,然后获取摇杆电位器分压并计算摇杆水平位置。

; A2 H! d3 c2 t% [, D9 K
微信图片_20230305152148.jpg
微信图片_20230305152141.jpg
微信图片_20230305152135.png
- o9 J0 f  w9 Z2 A' ]" [8 e& O

联合调试


* V% Z( ?4 a$ k1 f" `$ p# @4 u

前边我们单独设计了 STM32 开发板和无线遥控手柄,现在需要使两者结合起来,确认功能是否符合预期。我们给开发板接上 8 个舵机和 2 个编码电机,使用手柄遥控,所有舵机和电机均可以正常工作。STM32 开发板与无线手柄联合调试如图23 所示,测试成功。调试完成后,我们把开发板、电机、舵机等安装到底盘上,就完成了对坦克的控制,制作完成的整体设备如图 24 所示。


: e2 _5 ?+ U) ~5 e2 q/ T
微信图片_20230305152130.png
图23 STM32 开发板与无线手柄联合调试

4 q4 t2 {& s4 V! R8 u
微信图片_20230305152127.png
图24 制作完成的整体设备
3 p* h- `* g3 R8 d& K

结语

* r5 x6 M; e# u/ ~3 M

本项目包含实现对电机和舵机的控制、摇杆的模拟采样,以及无线通信等。除了最核心的 STM32 单片机,还涉及多种芯片的选型和使用,需要有一定的经验和耐心。两个电路板的绘制,两套程序的开发、调试,软 / 硬件细节的打磨,机械部分硬件的多次改进……DIY 就是这样,因为热爱,所以坚持;因为坚持,所以总能收获自己想要的成果!

6 f! t# N6 Z3 s# P
4 q8 t# Z; d9 ]7 H" {
收藏 评论0 发布时间:2023-3-7 15:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版