树莓派-Pico控制舵机

news/2024/11/9 0:32:48/

目录

  • 前言
  • 一、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.ppmy.cn/news/1278486.html

相关文章

web网页端使用webSocket实现语音通话功能(SpringBoot+VUE)

写在前面 最近在写一个web项目,需要实现web客户端之间的语音通话,期望能够借助webSocket全双工通信的方式来实现,但是网上没有发现可以正确使用的代码。网上能找到的一个代码使用之后只能听到“嘀嘀嘀”的杂音 解决方案:使用Jso…

ubuntu20.04下安装pcl_ubuntu安装pcl

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

第一部分 数理逻辑

目录 什么是命题 注意: 例1 下列句子中那些是命题? 联结词 例2 将下列命题符号化. 注意: 例4 设 p:天冷,q:小王穿羽绒服,将下列命题符号化 例5 求下列复合命题的真值 例如 真值表: 例&#xff1…

hadoop01_完全分布式搭建

hadoop完全分布式搭建 1 完全分布式介绍 Hadoop运行模式包括:本地模式(计算的数据存在Linux本地,在一台服务器上 自己测试)、伪分布式模式(和集群接轨 HDFS yarn,在一台服务器上执行)、完全分…

人工智能对网络安全的影响

技术的快速发展带来了不断增长的威胁环境,网络犯罪分子和恶意行为者利用我们互联世界中的漏洞。在这个数字时代,数据泄露和网络攻击呈上升趋势,仅靠传统的安全措施已经不够了。人工智能 (AI) 的进步彻底改变了网络安全…

c++11特新:弱引用智能指针

弱引用智能指针std::weak_ptr可以看做是shared_ptr的助手,它不管理shared_ptr内部的指针。std::weak_ptr没有重载操作符*和->,因为它不共享指针,不能操作资源,所以它的构造不会增加引用计数,析构也不会减少引用计数…

分子生成工具 - ResGen 评测

ResGen 模型是浙江大学药学院侯廷军老师课题组2023年发表在nature machine intelligence期刊上文章Nature Machine Intelligence | Volume 5 | September 2023 | 1020–1030,题目为:《ResGen is a pocket-aware 3D molecular generation model based on …

【电路笔记】-串联电容器

串联电容器 文章目录 串联电容器1、概述2、示例13、示例34、总结 当电容器以菊花链方式连接在一条线上时,它们就串联在一起。 1、概述 对于串联电容器,流过电容器的充电电流 ( i C i_C iC​ ) 对于所有电容器来说都是相同的,因为它只有一条…