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

STM32 遥控坦克

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

STM32 遥控坦克

' R+ ]$ ?0 B8 z; E  u3 X

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

5 F" Z1 J# _& J. p$ C! B% Q  w0 e& w

项目概述

2 X7 a+ ?4 a( z6 p& ~& y

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

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


/ s: W* M+ }% l" _: q
微信图片_20230305152324.png
图1 STM32 遥控坦克

! I5 R% a. w# n) X2 T

机械结构


0 ]  P$ ^& z) |2 s
履带底盘

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


+ I! B4 Z% a" c0 d& _: z

微信图片_20230305152320.png
图2  底盘结构件图纸
8 A9 C. H7 @' \; x; ^8 L8 ^

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


: [5 ~2 Q7 }6 V7 F  p5 N/ A# B
0 J1 c9 \: I, E( D  z0 S
微信图片_20230305152315.png

& D2 M! T+ B$ G* m. G

2 E$ M; D1 A+ ~/ X3 Z  M$ {
' N: k7 t7 G" p6 e9 Q
图3  底盘
" m% E/ [5 _8 g; }" K/ O5 W/ B
6 t' F2 }# J7 g9 n! h; }& Q
然后将电机和舵机直接装上去,履带采用通用的工程塑料履带即可,图4 所示为底盘安装好履带的效果。- p/ ]4 Z% I$ I, I% N- G8 k
, w9 ]  C  a  h" n' r$ @: f
微信图片_20230305152312.png
6 h5 l* \" E4 G9 A; c( n
图4  底盘安装好履带的效果

+ o7 z3 r, v! c# C! p
编码器电机

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


5 S' z+ x1 I; `
微信图片_20230305152307.png

! ~2 l3 I( f  u! v4 J. l3 p6 Q
- R5 h0 _1 R; o
图5 减速齿轮箱
  c) J) N: J7 n
微信图片_20230305152305.png
图6 直流减速电机
) ?* k- M5 Q3 b, F
微信图片_20230305152300.png
" G6 }8 [; }; p

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

2 ]  R) y$ y) |/ X. C

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

" j5 @0 @0 `- L  a3 K$ ]

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


2 v% j3 ]  K; f

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

( q) t8 W7 i! C+ M: a8 v

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

5 J7 ^# r, w, y& U4 W

微信图片_20230305152251.png
图9 电机正转、反转时分别产生的脉冲波形
: p, z' F9 n, o

$ G3 `* i3 P9 M7 T- V

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


  z: e, e% o2 u' a" U9 n! j3 n

舵机云台

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


, ~1 R3 M% M7 x" j
微信图片_20230305152248.png
图10 舵机云台
) E* ^% J, ~6 a. R; M" G, l

0 J& o0 \- m7 E6 R. X; p# S6 X4 A

主控STM32开发板


5 f: J1 A( {! Q- `3 k
设计目标

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


+ s* G" B4 H' ]5 ]' R/ A
微信图片_20230305152244.png
图 11 开发板接口
- ?2 _3 t; G8 r- ~( S# _  w$ l
电路设计

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


: T8 P; h) t" `! L8 X

微信图片_20230305152242.png

图12 STM32 单片机引脚分配

7 ?1 Z; s. t- p9 @- q; q9 C" {2 w

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


2 L+ D% f/ O3 C2 |2 I0 [  W

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

( T, y7 {4 ?) \# H3 f! a$ o

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


% n7 ?! O' t2 c( a( {. R& R

微信图片_20230305152237.png
* X- _0 y7 R1 z/ y

6 j$ |4 m6 d0 h2 x$ w/ q  {9 q& \. I
图14 A4950 电机驱动电路

- |. s" m4 ^0 s4 I( W! K' D% _


& v0 `  ?6 C. Y7 E' I* C, |$ O

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

7 W3 u/ X# k7 ], U

微信图片_20230305152234.png

图 15 PWM 输出电路


" @: }! E2 a7 q$ R1 o  }( Y! E

PCB设计

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


1 [0 q% N5 T9 P6 T2 _

微信图片_20230305152232.png
; I, N$ J/ g4 u( x, E* B

5 ^6 J& M9 q' |8 H
图16 绘制完成的 PCB

! b, w* e1 z* }3 T


8 _# [5 o6 S0 X) L; |/ P. {/ l

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

" l" Q$ S3 m) f- R

微信图片_20230305152229.png

图17 电路板 3D 模型


" d! l9 Z0 X; S$ L

程序设计

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

. k# S6 \1 S! [

微信图片_20230305152227.png

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


. s! G& j- A+ H; _$ e

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


. r- I4 J, n! N
微信图片_20230305152223.jpg
4 x5 e0 @7 Y/ J# a: h, ^4 L

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

2 g' |. o, ~' l2 A
微信图片_20230305152220.jpg

- X! g% X. d! Q" d6 l- k) R* H

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


9 d5 S# q# ^+ E. t7 [& D
微信图片_20230305152217.png
微信图片_20230305152214.jpg
; J4 j: P% Z; M* e

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

2 F' O- n$ _7 V0 F5 g9 v

微信图片_20230305152211.png
图19 手柄按键定义
: n0 _4 K1 E1 k0 b2 ^
微信图片_20230305152206.png
微信图片_20230305152202.png
微信图片_20230305152159.png
& `! Z4 a1 E/ v( s% N# B  d6 J

遥控手柄


3 }, e6 d+ f" T: Z5 I
电路设计

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


; n8 u. a8 W  B/ W! C

微信图片_20230305152157.png
图20 遥控手柄上的摇杆电路

3 w( t8 z% ]7 S& R* {

; L7 ?% ?( _( M# T) J

PCB设计

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


( o. R! f( e& c3 _" O4 X

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

- H/ b; j9 ^9 a- V' n+ \" u& J

& b% j% e: F+ A

电路板实物

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

2 l) d& n: x$ E+ d# l" p: p

微信图片_20230305152151.png
图22 焊接完成的手柄电路板
1 P4 _2 `' S; [& P

6 h3 q+ h( K/ o2 r" P

程序设计

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


9 l0 B8 x) P9 i: A( I
微信图片_20230305152148.jpg
微信图片_20230305152141.jpg
微信图片_20230305152135.png
! m4 W. {* T8 R& y# J8 q7 n, Z

联合调试

4 G# a0 B6 Z+ Y3 `6 \

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


+ z, u. a# ?" m: Q! L/ i
微信图片_20230305152130.png
图23 STM32 开发板与无线手柄联合调试

  ^! T8 l' Y) o3 F+ F+ E6 T
微信图片_20230305152127.png
图24 制作完成的整体设备

2 k! J& q. Q1 E5 Y

结语


0 I$ F# Z: e: N3 Z

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


" R+ I5 I4 l; |2 C) t3 Z' P" B" K5 A& e. P( l& _2 @! P1 J% U* W
赞 收藏 评论0 发布时间:2023-3-7 15:00

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版