树莓派-Pico控制舵机

目录

  • 前言
  • 一、SG90舵机是什么?
    • 参数介绍
    • 工作原理
  • 二、与舵机信号线的接线图
  • 三、给树莓派Pico注入灵魂(代码)
  • 总结


前言

这价格便宜的树莓派Pico总觉得应该拿来做点什么,它总不能只用来点亮几个灯就没别的用途了吧,所以就找了些文章研究了如何用树莓派Pico控制SG90舵机。


一、SG90舵机是什么?

SG90舵机,常用在小型机器人、智能小车、机械臂、固定翼等小型模型上,因为内部的齿轮多数为塑料的,承受不了太大的扭力。
SG90舵机

舵机类型又分为两种,一种是模拟舵机,另一种是数字舵机,像SG90就是模拟舵机。
模拟舵机和数字舵机的区别

转动角度为360°的舵机与转动角度为90°/180°的舵机工作的方式又是不一样的,360°的舵机相当于是无极变速的减速电机,只能控制转动的速度和转动的方向,不能控制转动到想要的角度,但控制的方式和一般舵机的控制信号相同。

参数介绍

型号SG90
重量9g
工作扭矩1.6kg/cm
反应速度0.12-0.13s/60°
建议使用温度-30° ~ +60°
死区设定5us
转动角度90°/180°(与程序的写法有关)
舵机类型模拟舵机
使用电压3 ~ 7.2V(推荐用5V)
结构材质塑料齿

工作原理

舵机的工作原理

控制电路板接受来自信号线的控制信号,控制电机转动,电机带动一系列齿轮组,减速后传动至输出舵盘。舵机的输出轴和位置反馈电位计是相连的,舵盘转动的同时,带动位置反馈电位计,电位计将输出一个电压信号到控制电路板,进行反馈,然后控制电路板根据所在位置决定电机的转动方向和速度,从而达到目标停止。

舵机的控制信号

舵机的控制信号为周期是20ms的脉宽调制(PWM)信号,其中脉冲宽度从0.5ms-2.5ms,相对应舵盘的位置为0-180度,呈线性变化。也就是说,给它提供一定的脉宽,它的输出轴就会保持在一个相对应的角度上,无论外界转矩怎样改变,直到给它提供一个另外宽度的脉冲信号,它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路,产生周期20ms,宽度1.5ms的基准信号,有一个比较器,将外加信号与基准信号相比较,判断出方向和大小,从而产生电机的转动信号。

二、与舵机信号线的接线图

本人是控制两个舵机,所以用到了两个端口,GP0和GP1。
在这里插入图片描述

三、给树莓派Pico注入灵魂(代码)

注入的灵魂如下(示例):

'''
该程序为树莓派pico控制180°舵机
使用的端口:0和1  用了两个舵机,上面的用0端口,下面的用1端口
'''import machine, time, urandom
from machine import Pinp1=machine.PWM(Pin(0))
p2=machine.PWM(Pin(1))p1.freq(50)#50Hz频率下周期为20ms
p2.freq(50)#50Hz频率下周期为20msp1.duty_u16(1638)#角度控制,1638-8192之间实现0度到180度转动
p2.duty_u16(1638)#角度控制,1638-8192之间实现0度到180度转动time.sleep(0.5)
numder = [5, 15, 19, 31, 57]def kk(ttime):  # 步长间隔,可以控制转动的速度和角度精确程度for i in range(1638, 8193, ttime):p1.duty_u16(i)#角度控制,1638-8192之间实现0度到180度转动p2.duty_u16(i)#角度控制,1638-8192之间实现0度到180度转动time.sleep(0.01)# print(i)# time.sleep(1)for j in range(8192, 1638, -ttime):p1.duty_u16(j)#角度控制,1638-8192之间实现0度到180度转动p2.duty_u16(j)#角度控制,1638-8192之间实现0度到180度转动time.sleep(0.01)# print(j)while 1:random_float = urandom.choice(numder)print('当前速度为:',random_float)kk(random_float)

提示:
稍微注意一下,该代码中是让舵机云台一直左右摇摆或上下摇摆,但是转动的速度是随机的,应该说是转动的精准度是随机的,因为随机抽取的是步长,而不是时间。


如果想用键盘来控制舵机云台的转动,MicroPython中有一个名为"machine"的库,它提供了与硬件交互的功能,包括检测键盘的能力。你可以使用"machine"库中的"Pin"类来检测键盘按键的状态。但本人还没能去研究如何实现用键盘来控制舵机云台的转动
想试的话,可以看看下面的代码做参考。

from machine import Pin# 设置键盘引脚
keyboard_pin = Pin(0, Pin.IN)# 检测键盘按键状态
while True:if keyboard_pin.value() == 1:print("键盘按键被按下")else:print("键盘按键未被按下")

总结

目前只是初步研究了一下树莓派pico怎么控制舵机转动,还没到真正使用起来的地步,好歹能让树莓派pico控制三个舵机组成的机械臂吧。
该文章若对你有帮助,不妨点个赞噢~


2023.12.22写
有写得不好、写得不对的地方还请各位指出,谢谢!

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

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

相关文章

C++ Qt开发:Charts绘图组件概述

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QCharts二维绘图组件的常用方法及灵活运用。 …

Redis 6 性能大揭秘:如何优化缓存命中率?

Redis 6的性能优化,特别是关于如何优化缓存命中率。 这篇文章会包含10个代码示例,帮助深入理解和应用相关的技巧 1、 监控缓存命中率 在优化之前,首先要了解当前的缓存命中率。Redis提供了INFO命令来查看性能指标,包括命中率。…

NVMe介绍

NVMe介绍 1 概述2 操作原理2.1 Queue基本原理2.2 Admin与I/O Queue2.3 Submission与Completion Queue2.4 Submission与Completion Queue对应关系 3 多路径I/O和命名空间共享3.1 1Port1Controller3.2 1Port2Controller3.3 2Port2Controller3.4 SR-IOV 本文属于《 NVMe协议基础系…

Echarts饼图tooltip渐变色,内部legend百分比保留整数方法

业务场景:1、tooltip的背景需要渐变色,写 html 标签, 2、饼图内部的百分比需要保留整数 ,使用formatter, export function genChartPieOption(pieData) {const res {replaceMerge: [series,], // 解决刷新之后y轴丢失…

web前端游戏项目-堆木头游戏【附源码】

web前端游戏项目-堆木头游戏 《堆木头》游戏玩法简单,通过鼠标点击放木头的按钮,叠加在一起,构建出各种结构。游戏适合所有年龄段的孩子,可以锻炼孩子的动手能力和手眼协调能力,激发孩子的创造力和想象力 运行效果 …

一分钟学会“沉浸式翻译”插件的安装与使用

一、安装 安装地址:https://immersivetranslate.com/ 选择对应的浏览器进入安装即可 二、简单的翻译使用方法 第一次安装需要先刷新界面才可以达到翻译效果 核心需要修改的地方在以下三个: 第一处:设置翻译服务,免费版的可以直接…

MES管理系统哪些功能帮助印刷企业提高产品质量

随着市场竞争的日益激烈,产品质量已经成为企业生存和发展的关键因素。对于印刷企业来说,产品质量不仅关系到企业的声誉,更直接影响到企业经济效益。因此,如何提高产品质量成为印刷企业亟待解决的问题。MES管理系统作为一种先进的企…

左值右值引用,完美转发

1.c98/03,类模板和函数模板只能含固定数量的模板参数,c11的新特性可以创建接受可变参数的函数模板和类模板 //Args是一个模板参数包,args是一个函数形参参数包 //声明一个参数包Args… args,这个参数包可以包括0到任意个模板参数 template&l…

NLP论文阅读记录 - 2022 sota | 校准序列似然改善条件语言生成

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作强化学习方法两阶段重新排名方法具有序列级损失的多任务学习 三.本文方法3.1 相似度函数3.2 校准损失3.3正则化损失3.4 候选解码方法 四 实验效果4.1数据集4.2 对比模型4.3实施细节4.…

ToB还是ToC?工业级与消费级AR眼镜都能干什么?

来源:虹科数字化与AR 虹科分享 | ToB还是ToC?工业级与消费级AR眼镜都能干什么? 原文链接:https://mp.weixin.qq.com/s/lyTASoKm29woIbfcKBtMvQ 欢迎关注虹科,为您提供最新资讯! 随着科技的飞速发展&#…

智能优化算法应用:基于冠状病毒群体免疫算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于冠状病毒群体免疫算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于冠状病毒群体免疫算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.冠状病毒群体免疫算法4.…

【Amazon 实验③】Amazon WAF功能增强之追踪 Amazon WAF RequestID,排查误杀原因

文章目录 1. 方案介绍2. 架构图3. 操作演示 本实验将介绍如何利用 Amazon LambdaEdge,在 Amazon CloudFront 自定义错误页面 上展示每个由 Amazon WAF 返回的“403 Forbidden”错误的 Request ID。通过这个唯一的 WAF Request ID,网站运维工程师能够快速…

swing快速入门(二十四)绘画板-可调色

注释很详细,直接上代码 上一篇 Look here~ 听我说完再继续看更容易理解: 如果说用之前的绘图方法写一个绘画板你会怎么做?重绘会让之前的内容消失呀,用各种数据结构记录每个像素点的位置或颜色?嘶,感觉很麻…

HFish蜜罐搭建及简单使用

一、HFish蜜罐 HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷感知和威胁情报领域的…

<蓝桥杯软件赛>零基础备赛20周--第11周--贪心

报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周。 在QQ群上答疑&#x…

Java网络编程---TCP

服务端 import java.io.DataInputStream; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket;public class Server2 {public static void main(String[] args) throws Exception{System.out.println("------------服务端启动---------…

josef约瑟 DB-1电压回路断相闭锁继电器100V 5A 嵌入式安装

DB-1电压回路断相闭锁继电器 1 用途 DB-1型闭锁继电器,是在电压回路发生断路而可能引起继电保护误动作时,用以闭锁继电器。 2 结构和工作原理 DB-1型断相闭锁继电器的原理线路图见图1。 图1 DB-1原理接线图 断相闭锁继电器线路由零序电压过滤器(三个容量…

ubuntu20.04下安装pcl_ubuntu安装pcl

pcl点云数据库,用来进行3D信息的获取与处理,和opencv相比较,opencv是用来处理二维信息,他是学术界与工业界针对点云最全的库,且网络上相关的资料很多。以下是pcl的安装步骤以及遇到的问题。 提前说明,本人…

Shell三剑客:awk(格式化输出)

一、格式符 %d 十进制有符号整数 %u 十进制无符号整数 %f 浮点数 %s 字符串 %c 单个字符 %p 指针的值 %e 指数形式的浮点数 %x %X 无符号以十六进制表示的整数 %o 无符号以八进制表示的整数 %g 自动选择合适的表示法 % % 显示%自身 # [.#] 第一个数…

10分钟创建AIGC应用,腾讯云推出高性能应用服务HAI

降低AIGC应用开发门槛,才能更快发现下一个AIGC现象级应用。 12月18日,腾讯云宣布推出高性能应用服务(Hyper Application Inventor,HAI),用户无需复杂配置,最快10分钟即可创建自己的AI应用。 HAI能够提供即插即用的算…