发布时间: 2026-04-30
通过串口(UART)发送特定格式的指令,可以精确控制舵机旋转到指定角度。本文提供从硬件连接到指令格式、代码示例的完整操作路径,适用于TTL串口舵机和RS485串口舵机。
要实现串口控制舵机角度,你需要完成以下三个核心步骤:
1. 连接硬件:要把以串口方式运行的舵机的用于通信的引脚,和像PC、单片机这类的控制器的串口引脚,准确无误地连接起来。
2. 确定指令格式,查阅有关舵机的那数据手册伟创动力,从中去获取角度控制指令的帧格式,获取该指令字节,还要获取校验方式。
3. 发送指令:根据目标角度计算并组装指令,通过串口发送。
以下以最常见的TTL串口舵机为例,提供可直接使用的指令格式和代码示例。
串口舵机通常有三根或四根线:
关键验证步骤:
确认舵机工作电压与电源匹配,电压偏差不得超过±0.5V。
致使控制器串口的电平,必然得跟舵机的电平保持一致,而这里面多数的TTL舵机要么是3.3V,要么是5V,一旦电平出现不匹配的情况,那就需要运用电平转换模块来解决。
很多TTL串口舵机运用字节帧结构,典型指令格式是6至8字节,下面是最为通用的格式:
![]()
角度值计算公式(适用于0°~240°或0°~300°范围的舵机):
角度数值 = (目标角度 / 最大角度) × 1023 或 (目标角度 + 偏移量) × 系数
将舵机数据手册里的公式当作准则 ,对于常见的处于0°至240°范围的舵机来说。
数值范围:0 ~ 1023 对应 0°~240°
90°的那个角度所对应的数值,等于,90除以240,再乘以,1023,约等于,383,也就是,。
可以在上运行的代码,也能在Linux上运行,并且可以在macOS上运行,它运用库来发送指令。
time
class :
def (self, port, =, =1):
"""
初始化串口舵机
:param port: 串口端口,如COM3或/dev/
:param : 波特率,常见为9600、(以舵机手册为准)
:param : 舵机ID(默认1)
"""
self.ser = .(port, , =0.5)
self. =
def (self, , =240, =0, =1023):
"""
将角度转换为舵机内部数值(以0240°范围、01023数值为例)
请根据舵机手册替换此公式
"""
if < 0:
= 0
if > :
=
value = int(( / ) * ( ) + )
value
def (self, ):
"""
发送角度控制指令
"""
# 转换角度为数值
= self.()
# 组装指令帧(格式示例:帧头0x55 0x55 ID 长度 0x03 角度低字节 角度高字节)
cmd = ()
cmd.(0x55) # 帧头1
cmd.(0x55) # 帧头2
cmd.(self.) # ID
cmd.(0x05) # 指令长度(后续5字节)
cmd.(0x03) # 角度控制指令
cmd.( & 0xFF) # 角度低字节
cmd.(( >> 8) & 0xFF) # 角度高字节
# 计算校验和(累加和取低8位)
= sum(cmd[2:]) & 0xFF
cmd.()
# 发送指令
self.ser.write(cmd)
time.sleep(0.02) # 等待舵机响应
print(f"舵机ID{self.} 旋转至 {}°")
def close(self):
self.ser.close()
# 使用示例
if == "":
# 请根据实际串口端口和波特率修改
servo = (port='COM3', =, =1)
# 控制舵机到90度
servo.(90)
time.sleep(1)
# 控制舵机到180度
servo.(180)
time.sleep(1)
# 回到0度
servo.(0)
servo.close()
核心建议是,不管使用哪一种舵机,第一步都得是去下载并且阅读官方的数据手册,从而获取准确的这些内容:一是指令帧格式,二是角度—数值映射公式,三啊校验,四呢允许的串口波特率。
1. 使用串口调试助手手动发送指令
把舵机跟USB转TTL 模块(像、CH340这样的)进行连接,于PC之上将串口调试助手(类似sscom、)打开。
置定波特率为(或者舵机默认数值),以手动方式发送十六进制指令:55 55 01 05 03 80 01 84。
![]()
解读:身份标识等于零一,角度数值等于零x零一八零等于三百八十四,相应约摸九十度(按照零至二百四十度舵机进行计算)。
如果舵机旋转到90°附近,说明公式正确。
2. 逐个修改角度值并记录反馈
发出角度数值等于零的相关指令,发出角度数值等于五百一十二的关联指令,发出角度数值等于一千零二十三的对应指令,记录实际发生旋转的角度,反向推导出精确的映射公式指令的公式。
3. 编写代码并单步调试
逐个字节打印待发送的指令,与手动测试成功的指令逐字节比对。
串口对舵机角度进行控制,其本质在于,发送那种符合舵机协议的格式化指令,硬件连接要正确,指令格式需匹配,角度计算得准确,这三者当中缺少任何一个都不可以。
失败原因的百分之九十,是没有去查阅舵机数据手册,而是直接套用网络上的代码,并且不去验证角度计算公式以及校验方式。
需从手动串口调试起始来验证路径,要先借手动发送的办法明确舵机响应,之后再去编写自动化代码。
1. 立刻去拿到你手上舵机的那种官方的数据手册,于手册里头寻找到“Angle ”或者“ ”的章节。
2. 依据本文所提及的“从零开始的验证步骤”,借助手动调试的方式,去对指令格式以及角度范围予以确认。
3. 在手把手册里,把本文所给出的代码当中的函数,替换成手册里的公式,然后展开实际测试。
4. 倘若属于批量项目,那么建议挑选同一品牌的串口舵机,同时还要选择同一协议的串口舵机,并且要对波特率进行统一规划,另外也要对ID进行统一规划。
按上述步骤去操作,你会于30分钟里达成稳定的串口舵机角度控制。