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

STM32 遥控坦克

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

STM32 遥控坦克


: X3 W- T) U! J

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


8 ~5 j3 c$ C9 {2 z5 G) ?

项目概述


2 B# |; [( B% [0 l8 D

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

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

( i) r8 j8 S% N
微信图片_20230305152324.png
图1 STM32 遥控坦克
) }- c1 u( G$ G

机械结构

. ^; ~" H( Y* v/ g% r
履带底盘

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


+ ^: Z& R9 W8 [, z8 c" t, M/ a

微信图片_20230305152320.png
图2  底盘结构件图纸

( O4 Y4 W' x+ L' W" \5 G; \3 c

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

; K2 \# @  a# a9 `) x

4 k" E* A0 q! e0 S) T1 |/ H4 X
微信图片_20230305152315.png

1 G* ?" F) d% C7 M

1 n- Y8 D2 u3 _: ]. s

0 r; n, z0 z+ `* w
图3  底盘

, a1 {' D6 O3 J' X  I7 E
( q. Y) q$ C# K8 Z
然后将电机和舵机直接装上去,履带采用通用的工程塑料履带即可,图4 所示为底盘安装好履带的效果。1 @0 ]6 X( E2 |9 o% J
  N; ~, c0 ?4 n2 e4 V8 ^3 T$ S( S
微信图片_20230305152312.png
8 Z% M" E. c4 l6 j
图4  底盘安装好履带的效果
3 f4 o: I8 [5 _4 q
编码器电机

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

7 L, `2 ?& m" `& R8 r9 B
微信图片_20230305152307.png

3 k$ t+ }, K  J

  P  A6 {0 A/ }0 ^- l! J
图5 减速齿轮箱

4 {) O1 |. I/ m
微信图片_20230305152305.png
图6 直流减速电机

$ H" M/ n. F& c* [4 b* Z, ^
微信图片_20230305152300.png
6 n' H6 V# {' |; u: D6 B  l

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


! p# |: T( G* p: C, R. G

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

, S# o2 q& [' J7 Y1 Z: Y" F0 i

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


0 u5 p7 C, B7 y" y# W* V

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


9 Z/ F( ~" Y( q) o' }8 C

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

% c9 f( |) X! A; a3 [

微信图片_20230305152251.png
图9 电机正转、反转时分别产生的脉冲波形
( e6 O$ T0 O  z, e( U0 @7 F; B5 N

% \% L" z3 u( S7 R" Q9 H4 {

电机正转的时候,信道 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 中常用第一种方式处理,使用定时器的编码器模式。

6 Z6 L* {3 O: W& U" Z7 N3 j2 D

舵机云台

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

7 `* J8 T) g" Z) h( q1 x/ X$ w
微信图片_20230305152248.png
图10 舵机云台

1 b2 h8 X1 b: a9 i+ s" Z3 m! g

" w5 ]% R. j, W. t- g8 l2 t- |

主控STM32开发板


2 ~8 e3 T$ X  U5 Q4 x) A% W
设计目标

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

4 ?$ I; a1 i. Q  u. ]8 K( G! ?$ v
微信图片_20230305152244.png
图 11 开发板接口

3 ?0 n, g2 [" L
电路设计

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

6 n0 X& q7 G3 d! K( F4 I! v

微信图片_20230305152242.png

图12 STM32 单片机引脚分配


9 Q" t: f. n6 Z

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

8 x; M6 U9 v9 @) U8 B

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


2 Z* B3 k, f4 d/ g: K$ e

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

5 p4 P+ y* I  O. k) v% E  ?9 h* x

微信图片_20230305152237.png

5 h) W# a3 |" M% C, w/ R7 p* @" H, p: p6 p6 G/ R
图14 A4950 电机驱动电路

* P. I) ]4 @+ ~1 @0 J8 L


6 H5 E5 m0 D. l; O, ~1 n) C* W/ Y2 D

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


& y& I# r8 S0 x

微信图片_20230305152234.png

图 15 PWM 输出电路


' s- s/ |; Y3 S; b$ p

PCB设计

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

0 Q& q) F+ i/ ?; u& [

微信图片_20230305152232.png
( J# Z' n9 M& P

9 O8 g% [' Q2 `) n9 b
图16 绘制完成的 PCB
. O7 H6 C. P, o, J. U

. v& o: @$ @  i* @" s5 j

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


0 \& N+ D& l0 r  j1 S, v2 C- L4 W6 b

微信图片_20230305152229.png

图17 电路板 3D 模型


0 w5 @3 r" A3 L9 ^6 V" f

程序设计

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

+ G, }" A' P( B' U) X4 L

微信图片_20230305152227.png

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


* V' h# t; U1 V

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


/ O% Q/ e9 P! `7 X- g; H$ J  W
微信图片_20230305152223.jpg

& \2 B; N" M# l  d5 F/ x* I+ q6 R

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


2 H/ V; w- {% b' Y- o( ^1 }
微信图片_20230305152220.jpg
0 P7 H. V* ^/ R$ e  A, Z+ ]

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

; M) Z/ H9 V! Z0 R# R$ Q& ?3 ^
微信图片_20230305152217.png
微信图片_20230305152214.jpg

  `  q- M, D2 l8 N+ d" r. v

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


* ]3 b2 p5 M8 x: N

微信图片_20230305152211.png
图19 手柄按键定义
: S: ~9 Z2 f8 `  Z7 K5 D0 m4 M
微信图片_20230305152206.png
微信图片_20230305152202.png
微信图片_20230305152159.png
9 u7 e. T  ~0 |5 c9 b

遥控手柄

9 z# U5 @* W  r
电路设计

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


) V0 B8 W! X' H$ ]- W& m! D. f$ O; B  Q

微信图片_20230305152157.png
图20 遥控手柄上的摇杆电路
3 Z1 P7 ^+ W4 E& b, |

4 j. V4 \' r/ s1 C3 o- F

PCB设计

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

# q% v( K  P3 Q$ D; W

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

8 F0 [9 @$ O5 O% ?


! Z" a6 M3 B0 @0 |  y5 E: ]

电路板实物

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

2 }6 [4 R" \( i0 S9 d  ?# h& `' `' F/ \

微信图片_20230305152151.png
图22 焊接完成的手柄电路板

$ \% t4 d' V9 B" y6 G

# b+ Y5 w: `$ b5 K

程序设计

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

( [0 K0 {( O/ G& v/ n7 v
微信图片_20230305152148.jpg
微信图片_20230305152141.jpg
微信图片_20230305152135.png

% c7 O! h4 S5 ?; c2 Z* `$ I6 ~

联合调试

. h; v: a+ i5 V  `* P  G2 G. z

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

/ y/ n7 |6 d0 B
微信图片_20230305152130.png
图23 STM32 开发板与无线手柄联合调试

6 Y, f3 ^( K1 A* @
微信图片_20230305152127.png
图24 制作完成的整体设备
4 J3 {6 j9 ^1 P' f: Q

结语

2 l* ^4 _" V, @2 Z$ f1 f2 ^! W

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


; {1 k' e/ y- S1 h& T% L0 V9 V9 b. C1 Q7 m; E: s% y9 H
收藏 评论0 发布时间:2023-3-7 15:00

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版