网站开发技术难度,什么是c2c模式,系统学做网站,自己电脑做网站好吗目录 前言一、SG90舵机是什么#xff1f;参数介绍工作原理 二、与舵机信号线的接线图三、给树莓派Pico注入灵魂#xff08;代码#xff09;总结 前言
这价格便宜的树莓派Pico总觉得应该拿来做点什么#xff0c;它总不能只用来点亮几个灯就没别的用途了吧#xff0c;所以就… 目录 前言一、SG90舵机是什么参数介绍工作原理 二、与舵机信号线的接线图三、给树莓派Pico注入灵魂代码总结 前言
这价格便宜的树莓派Pico总觉得应该拿来做点什么它总不能只用来点亮几个灯就没别的用途了吧所以就找了些文章研究了如何用树莓派Pico控制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相对应舵盘的位置为0180度呈线性变化。也就是说给它提供一定的脉宽它的输出轴就会保持在一个相对应的角度上无论外界转矩怎样改变直到给它提供一个另外宽度的脉冲信号它才会改变输出角度到新的对应的位置上。舵机内部有一个基准电路产生周期20ms宽度1.5ms的基准信号有一个比较器将外加信号与基准信号相比较判断出方向和大小从而产生电机的转动信号。 二、与舵机信号线的接线图
本人是控制两个舵机所以用到了两个端口GP0和GP1。
三、给树莓派Pico注入灵魂代码
注入的灵魂如下示例 该程序为树莓派pico控制180°舵机
使用的端口0和1 用了两个舵机上面的用0端口下面的用1端口
import machine, time, urandom
from machine import Pinp1machine.PWM(Pin(0))
p2machine.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写 有写得不好、写得不对的地方还请各位指出谢谢