双向控制舵机(树莓派版)

文章目录

  • 前言
  • 1、舵机参数
  • 2、功能测试
  • 参考文献

前言

为了实现垃圾分类和倾倒功能,于是购买了180度舵机
避坑提示:360度舵机无法像180度舵机一样控制角度,它只能控制旋转方向和速度,所以别买360度的舵机。

1、舵机参数

我买的舵机参数如下:
工作电压:3.5V-6V
接线:红线(接高电平)、棕线(接地)、橙线(信号线)

**工作原理:**舵机的控制信号为周期是20ms(频率就是50HZ)的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,直到给它提供一个另外宽度的脉冲信号,输出轴才会改变角度。

初始位置(0°) =>脉冲宽度 => 0.5ms => 占空比= 0.5ms / 20ms = 2.5%
中间位置(90°)=> 1.5 ms的脉冲宽度 => 占空比= 1.5ms / 20ms = 7.5%
最终位置(180°)=> 2.5 ms的脉冲宽度 => 占空比= 2.5ms / 20ms => 12.5%
所以占空比范围:2.5%~12.5%

角度angle和占空比dutyCycle的转换:dutyCycle = 2.5 + angle/180*10

2、功能测试

说明:

  1. servo_pin=17,针对是水平方向,输入一个度数,舵机转轴上的指针就水平转到对应的位置。
  2. servo_pin=18,针对是垂直方向,输入一个度数,舵机转轴上的指针就垂直转到对应的位置。

在这里插入图片描述
在这里插入图片描述

实现控制代码control.py

import RPi.GPIO as GPIO
from time import sleepGPIO.setmode(GPIO.BCM)  
GPIO.setwarnings(False)# servo_pin 舵机信号线接树莓派GPIO17
def complex_change(servo_pin):   GPIO.setup(servo_pin, GPIO.OUT, initial=False)p = GPIO.PWM(servo_pin, 50)    # 初始频率为50HZp.start(angleToDutyCycle(90))  # 舵机初始化角度为90sleep(0.5)p.ChangeDutyCycle(0)   # 清空当前占空比,使舵机停止抖动return p# 旋转角度转换到PWM占空比
def angleToDutyCycle(angle):return 2.5 + angle / 180.0 * 10if __name__ == '__main__':print('当前为90度')while True:angle = int(input('旋转度数:'))if angle >= 0 and angle <= 180:# 水平转动p=complex_change(17)p.ChangeDutyCycle(angleToDutyCycle(angle))# 垂直方向回正p=complex_change(18)p.ChangeDutyCycle(angleToDutyCycle(0))sleep(0.1)p.ChangeDutyCycle(0) # 清空当前占空比,使舵机停止抖动else:print('旋转度数在0-180之间!')

舵机初始角度为90度,你可以把转轴上面的指针调到垂直方向,表示90度

参考文献

  1. 【树莓派-网络监控(3)角度遥控】基于python3控制两自由度舵机,实现摄像头拍摄角度的遥控
  2. 树莓派 — 控制舵机

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/85838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ajax上传文件

背景 采用ajax传递表单内容和上传的文件 实现原理 使用FormData模拟表单数据&#xff0c;实现异步上传图片 代码 var formData new FormData(); formData.append("serviceId", param.serviceId); formData.append("keyId", param.keyId); formData.a…

194、SpringBoot -- 下载和安装 Erlang 、 RabbitMQ

本节要点&#xff1a; 一些命令&#xff1a; 小黑窗输入&#xff1a; rabbitmq-plugins enable rabbitmq_management 启动控制台插件 rabbitmq-server 启动rabbitMQ服务器 管理员启动小黑窗&#xff1a; rabbitmq-service install 添加rabbitMQ为本地服务 启动浏览器访问“h…

ffmpeg ffplay

gif -> jpg: ffmpeg -i 4.gif -r 25 -q:v 4 -pix_fmt yuv420p jpg2/frame%03d.jpg -y # ffplay ffplay [选项] [输入文件] option -x width 强制以 "width" 宽度显示 -y height 强制以 "height" 高度显示 -an 禁止音频 …

gym_unity学习笔记

最近学了一段时间gym_unity&#xff0c;把一些资料留在这里 实例 实例gym_unity训练RollerBall&#xff1a;https://blog.csdn.net/alibutter/article/details/120908687实例gyn_unity训练3DBall&#xff1a;https://zhuanlan.zhihu.com/p/554927641?utm_id0 源码&#xff1…

大二毕设.3-网盘系统-用户模块讲解

目录 模块功能介绍 具体实现讲解 constants层&#xff1a;存放用户模块常量类 entity层&#xff1a;存放实体类&#xff0c;与数据库中的属性值基本保持一致 mapper层&#xff1a;对数据库进行数据持久化操作 service层&#xff1a;业务逻辑层&#xff0c;主要是针对具体…

基于香橙派和SU-03T 使用Linux实现语音控制刷抖音

硬件介绍 SU-03T之前在小车的时候使用过&#xff0c;详见&#xff1a;语音小车---6 最终整合_mjmmm的博客-CSDN博客 按照下图进行接线&#xff1a; 项目需求 通过语音指令来控制安卓手机刷抖音&#xff0c;可以实现视频切换和点赞等功能&#xff1a; 1. 开机播报“你好&a…

Go 并发可视化解释 - sync.Mute

在学习 Go 编程语言时&#xff0c;您可能会遇到这句著名的格言&#xff1a;“不要通过共享内存来进行通信&#xff1b;相反&#xff0c;通过通信来共享内存。” 这句话构成了 Go 强大并发模型的基础&#xff0c;其中通道&#xff08;channels&#xff09;作为协程之间的主要通信…

6条优势,anzo capital昂首资本相信MT5替代MT4的原因

投资者都知道MT5是在MT4基础上升级换代的多资产平台&#xff0c;MT5于2010年6月首次发布。anzo capital昂首资本认为MT5将完全取代MT4&#xff0c;就像MT4取代之前版本一样&#xff0c;因为有以下6条优势&#xff1a; 一.市场深度(DOM)数据。在MT4中&#xff0c;DOM几乎没有用…

什么是生成对抗网络 (GAN)?

什么是生成对抗网络 &#xff08;GAN&#xff09;&#xff1f; 钦吉兹赛义德贝利 一、说明 GAN&#xff08;Generative Adversarial Network&#xff09;网络是一种深度学习模型&#xff0c;由两个神经网络——生成器和判别器组成。生成器负责生成虚假的数据&#xff0c;而判别…

yarn安装依赖时报错 error An unexpected error occurred:

一切起因是因为前一天安装了volta管理node&#xff0c;第二天启动项目&#xff0c; 显示error An unexpected error occurred: “https://registry.npmmirror.com/webpack-aliyun-oss/-/webpack-aliyun-oss-0.2.6.tgz: Request failed “404 Not Found””. 项目启动时发现报错…

【WSN】基于蚁群算法的WSN路由协议(最短路径)消耗节点能量研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

在 SQL Server 中,可以使用内置函数 NEWID() 来生成一个随机的 GUID(全局唯一标识符)。可以将此 GUID 作为字符串拼接到查询结果中。

以下是一个示例&#xff1a; SELECT Column1, Column2, CAST(NEWID() AS VARCHAR(36)) as random_string FROM your_table;这将在查询结果中添加一个名为 random_string 的列&#xff0c;其中包含一个随机生成的 GUID。请注意&#xff0c;由于 GUID 是随机生成的&#xff…

MySQL学习系列(9)-每天学习10个知识

目录 1. 临时表&#xff08;Temporary Tables&#xff09;的优点和缺点2. 使用GROUP BY进行聚合查询3. MySQL的索引设计4. NULL和默认值的区别和用途5. 使用LIKE和REGEXP进行模式匹配6. SQL标准的三个范式7. 视图和有效性约束8. 自连接&#xff08;Self Join&#xff09;的场景…

【虚拟化】虚拟机vcpu绑核物理机

文章目录 一、NUMA二、虚拟机xml配置解析 参考文章 第一篇&#xff1a;KVM虚拟化CPU技术总结 第二篇&#xff1a;虚机cpu和mem的配置&#xff08;cputune和numatune&#xff09; 第三篇&#xff1a;libvirt 中cpu, numa 的配置 第四篇&#xff1a;如何提高虚拟机性能&#xff1…

安全学习_开发相关_JavaEE过滤器监听器简单了解

文章目录 Web应用运行流程图 JavaEE-过滤器-Filter过滤器概述&作用过滤器相关安全测试场景 JavaEE-监听器-Listener监听器作用&#xff1a;监听器相关安全测试场景 过滤器和监听器&#xff0c;主要对安全测试有影响的是过滤器&#xff0c;监听器只是在对代码进行逻辑分析时…

民安智库(第三方社会评估调研公司)社区健康服务中心满意度提升方案

提升社区健康服务中心的满意度需要综合考虑医疗服务、员工表现、便利性和健康教育等多个方面。以下是一些提升社区健康服务中心满意度的方案和建议&#xff1a; 1. 提高医疗服务质量&#xff1a; 培训医疗专业人员&#xff0c;确保他们具备最新的医疗知识和技能。确保及时提供…

2020-2023中国高等级自动驾驶产业发展趋势研究-中国高等级自动驾驶发展近况

1.2 中国高等级自动驾驶发展近况 通过对中国高等级自动驾驶行业的观察和分析&#xff0c;亿欧汽车认为&#xff0c;除技术解决方案提供商外&#xff0c;如今的车企、政府、资本同样在产业链中扮演重要角色。此外&#xff0c;车路协同技术的发展也为高等级自动驾驶的发展提供了更…

Web自动化框架中验证码识别处理全攻略,让测试更得心应手!

前言&#xff1a; 随着Web应用程序的不断发展&#xff0c;自动化测试已成为项目开发中必不可少的一环。然而&#xff0c;验证码的出现却经常会使自动化测试变得更具挑战性。为了解决这个问题&#xff0c;我们需要一种方法来自动识别和处理验证码&#xff0c;从而提高自动化测试…

位图的实现与应用

目录 位图 实现思路 模拟实现 类模板 构造函数 set reset test twobitset 实现 成员变量 set is_once 布隆过滤器 成员变量与模板 set test 删除 位图 位图是哈希的另一种表现&#xff0c;与我们常用的 set map 的思想还是基本一样的&#xff0c;下面我们看一…

leetcode面试题0808有重复字符串的排列组合

描述 输入一个长度为 n 字符串&#xff0c;打印出该字符串中字符的所有排列&#xff0c;你可以以任意顺序返回这个字符串数组。 例如输入字符串ABC,则输出由字符A,B,C所能排列出来的所有字符串ABC,ACB,BAC,BCA,CBA和CAB。 数据范围&#xff1a;n<10 要求&#xff1a;空间复…