python开发实例之TPYBoard控制舵机实验

樱木花道a 樱木花道a 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
0引言

大家应该都看到过机器人的手臂啊腿脚啊什么的一抽一抽的在动弹吧,是不是和机械舞一样的有节奏,现在很多机器人模型里面的动力器件都是舵机。

但是大家一般见到的动力器件都是像步进电机啊,直流电机啊这一类的动力器件了,应该对舵机比较陌生,下面就为大家介绍一下舵机的原理和使用方法吧。要想使用一个器件呢,必须要了解它的特性和原理。那下面就先来介绍一下原理吧。

先说一下舵机有什么优点:一是体积紧凑,便于安装;二是输出力矩大,稳定性好;三是控制简单,便于和数字系统接口。本文中使用的是sg90的舵机,个人感觉性能一般,但是比较稳定和耐造,个人做实验用还是比较不错的。

1.舵机基本介绍:

1.1舵机的组成与参数

先抄一段说明:舵机,又称伺服马达,是一种具有闭环控制系统的机电结构。舵机主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由控制器发出PWM(脉冲宽度调制)信号给舵机,经电路板上的IC处理后计算出转动方向,再驱动无核心马达转动,透过减速齿轮将动力传至摆臂,同时由位置检测器(电位器)返回位置信号,判断是否已经到达设定位置,一般舵机只能旋转180度。有的可以转到185度。


1.2舵机的接线

舵机有3根线,棕色为地,红色为电源正,橙色为信号线,但不同牌子的舵机,线的颜色可能不同。

1.3舵机的控制原理

舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比(1. 占空比是指高电平在一个周期之内所占的时间比率。2. 正脉冲的持续时间与脉冲总周期的比值,例如:正脉冲宽度1μs,信号周期10μs的脉冲序列占空比为0.1。即:脉冲的宽度除以脉冲的周期称为占空比。)来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms之间,但是,事实上脉宽可由0.5ms到2.5ms之间,脉宽和舵机的转角0度~180度相对应。

2.Python语言控制舵机的方法

其实说了以上这些呢,都是为了给大家介绍利用Python语言来控制舵机的转动角度,和普通单片机一样的,都是需要用不同宽度的脉冲来控制器转动的角度。说白了,我们需要做的就是使用Python语言来输出不同宽度的脉冲信号,来给到信号线里面去。现在一般的舵机脉宽呢都是在0.5ms到2.5ms之间,这就可以计算了,0.5MS-2.5MS这两毫秒里面呢可以控制转动到180度,这样算下来,转一度的脉冲时间大约就是2毫秒/180度=0.011毫秒/度,这样依次计算就可以了。剩下的就是写一个脉冲信号了,相信写脉冲信号的程序大家都很熟悉啦。

但是,在舵机里面有一些几点几的毫秒的延时脉冲,这个在Python语言里如果想要利用delay()函数来做延时的话,很难做到每个角度都可以转到,甚至说是很难做到转动到大多数的角度。所以,你需要找到一个比毫秒延时还要精确的延时函数来作为脉冲的计时延时函数。我现在用的是time.sleep(i)这个函数,这个函数里面的i,建议设置在0.0000-0.0035之间。不能说精确的转动到每个角度吧,但是百分之九十的角度都是可以转到。如果想让舵机进行循环摆动,一定要记得加上适当的延时,因为程序可以飞快的跑,但是舵机转动也是需要一点时间的。舵机转动时间肯定要比程序跑一遍的时间要长的多啦。

3、TPYBoard v102控制舵机实验

3.1实验目的

通过加速度传感器的X方向控制舵机的转动,让舵机随TPYBoard 的转动而转动

3.2实验材料

1、TPYBoard v102 开发板 1 块
2、sg90舵机 1个
3、杜邦线 若干

3.3实验线路图

这里电路图很简单,只需要给舵机接上VCC和GNG(这是最基本的,这个开发板上好多电源和地可以用)。然后把舵机的信号线接到任意一个GPIO口(后面程序里面要在这个GPIO往外输出脉冲的,我用了X1,还有很多其他的GPIO口可以用。)就可以了。先上一张原理图,只是一张模拟的结构图哈。

是不是很抽象?下面上一张图,大家可以秒懂啦。


3.4实验代码

注意:实验中用0做了x的分界点,有的开发板,x的范围可能在11-31不等,所以这个分界点,可以在实验中自己取值。

[code=python]import pyb
import time
from pyb import Pin
xlights = (pyb.LED(2), pyb.LED(3))
ylights = (pyb.LED(1), pyb.LED(4))
M0 = Pin('X1', Pin.OUT_PP)
accel = pyb.Accel()
i=0.0001
j=0.0000
while True:
x = accel.x()
print("x=")
print(x)
Y=x+20
M0.high()
time.sleep(i*Y)
M0.low()
time.sleep(i*Y)
pyb.delay(12)
if x > 0:
xlights[0].on()
xlights[1].off()
elif x < 0:
xlights[1].on()
xlights[0].off()
else:
xlights[0].off()
xlights[1].off()
[/code]
...全文

相关推荐

三相PWM整流器双闭环仿真(Simulink仿真实现)

内容概要:本文系统介绍了基于Simulink的三相PWM整流器双闭环控制系统的仿真实现方法,重点对比了模糊PID控制与传统PID控制在电力电子系统中的动态性能差异,涵盖系统建模、控制器设计、仿真搭建与结果分析等关键环节。同时拓展提供了丰富的科研仿真资源,覆盖无刷直流电机控制、智能优化算法、机器学习、图像处理、路径规划、通信与信号处理、电力系统管理等多个技术方向,形成面向科研与工程应用的综合性Matlab/Simulink仿真支持体系。; 适合人群:电气工程、自动化、控制科学与工程等相关专业的研究生及科研人员,具备一定Matlab/Simulink操作基础,正在开展电力电子变换、电机驱动控制或智能控制算法研究的技术工作者。; 使用场景及目标:①掌握三相PWM整流器双闭环系统的建模与仿真流程;②深入理解模糊PID相对于传统PID在抗扰动、响应速度和稳定性方面的优势;③借鉴文中提供的多样化仿真案例,推动智能算法在复杂系统控制中的创新应用与科研成果转化。; 阅读建议:建议结合文档中提供的网盘资源与公众号资料,按照目录结构循序渐进地学习各仿真模型的设计思路与实现细节,动手复现并调试代码,强化对控制策略本质与系统动态特性的理解,提升科研仿真能力。

荔枝科研社

WeVisOne-VL一套模型,把检测、分割、抠图和OCR都接到了一起

WeVisOne-VL 想解决的不是单点能力更强,而是把目标级理解和像素级理解放进同一套视觉语言模型里:从点、框,到 mask,再到连续 alpha matte,都能统一生成。 它覆盖检测、指代表达定位、计数、点选、OCR、分割和抠图,最大的看点是输出粒度可以按需求切换,而且遇到图里根本不存在的目标时,能直接返回 None,尽量避免“看错了还硬答”的幻觉。 技术上,它把任务统一写成结构化文本预测,再配一个只有 960 万参数的轻量像素解码器,不依赖 SAM,也能把框进一步细化成 mask 和 alpha matte。项目同时放出了 2B、4B 权重、推理包、Cookbooks、评测流程和 Gradio Demo;按仓库给出的结果,4B 版本在检测、指代定位、计数、OCR、分割和抠图等多项基准上都压过一批强开源基线。 更值得琢磨的是它背后的数据引擎:用知识图谱驱动概念发现,再结合专家模型与 VLM 校验,把框扩展到 mask 和高质量透明度标注,累计覆盖超过 1 亿张图像。这类工作真正有价值的地方,不只是又做出一个大模型,而是让“看见什么”和“精确到哪一层”第一次被放进一条顺滑的产品链路里。

一叶知秋yyds

用于非线性多载波卫星信道的多输入多输出符号速率信号数字预失真器DPD(Matlab代码实现)

内容概要:本文介绍了一种针对非线性多载波卫星信道的多输入多输出(MIMO)符号速率信号数字预失真器(DPD)的设计与实现方法,采用Matlab代码进行仿真验证。该DPD技术旨在有效补偿高功率放大器在多载波信号传输中引入的非线性失真,提升卫星通信系统的线性度与传输效率。方案聚焦于符号速率层面的处理,相较于传统的采样速率DPD,降低了计算复杂度,同时结合MIMO架构以适应现代宽带卫星通信的需求,具备良好的工程应用前景。文中提供了完整的Matlab实现代码,便于研究人员进行复现、测试与进一步优化。; 适合人群:从事通信系统设计、卫星通信、射频工程及相关领域的研究生、科研人员与工程师,具备一定的信号处理和Matlab编程基础;; 使用场景及目标:①研究非线性失真对多载波卫星通信系统的影响机制;②设计并验证适用于MIMO架构的低复杂度符号速率数字预失真算法;③通过Matlab仿真平台开展算法性能评估与优化,推动其在实际卫星通信系统中的应用落地;; 阅读建议:建议结合通信原理、非线性系统建模与数字信号处理相关理论同步学习,重点关注DPD结构选择、模型参数辨识方法及仿真结果分析,动手运行并调试所提供的Matlab代码以加深理解。

长安程序猿

无刷直流电机模糊神经网络PID-模糊PID-传统PID三种控制对比Simulink仿真

内容概要:本文围绕无刷直流电机(BLDCM)的控制策略,利用Simulink搭建了三种控制方法——传统PID、模糊PID与模糊神经网络PID的对比仿真模型,重点研究了无刷直流电机在转速电流双闭环控制下的性能表现。通过构建统一的系统模型,对三种控制算法进行了详细的建模与仿真实验,全面分析了它们在动态响应速度、稳态控制精度以及抗外部干扰能力等方面的差异。研究结果表明,相较于传统PID控制,模糊PID及模糊神经网络PID在抑制超调、加快响应和增强鲁棒性方面具有显著优势,尤其模糊神经网络PID结合了神经网络的自学习能力和模糊逻辑的推理能力,展现出更强的自适应调控性能。该资源还涵盖电力电子、微电网、路径规划、信号处理等多个领域的MATLAB/Simulink仿真案例,服务于科研与教学需求。; 适合人群:具备一定自动化、电气工程或控制理论基础,从事电机控制、电力电子或相关方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①掌握无刷直流电机的基本建模与转速电流双闭环控制原理;②深入理解并对比传统PID、模糊PID与模糊神经网络PID三种控制策略的设计思想与控制性能差异;③学习基于Simulink的电机控制系统仿真建模方法,掌握控制器参数整定与系统性能评估技巧,为科研项目、毕业设计或工程实践提供技术参考与解决方案支持。; 阅读建议:建议结合文中提供的仿真模型与参考文献,动手实践Simulink建模流程,重点关注不同控制器的参数调节过程与系统动态响应特性的关联性,通过对比实验深入理解各类控制算法的优缺点;同时可延伸学习文档中涉及的其他先进控制策略与仿真技术,以拓宽技术视野并提升综合实践能力。

长安程序猿

:撞击时间控制的非奇异滑动模式制导定律.zip

1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

海神之光
评论
收藏 已收藏
分享
返回顶部
樱木花道a
单片机/工控 27,522 成员 28,796 内容