协处理器对舵机的操作(Micro Servo 9g舵机)

舵机的用途很广泛,比如控制机器人的运动、摄像头和激光雷达的方向,工业领域的机械臂的动作等,那如何来熟悉和运用这个产品呢,本节将使用舵机驱动异步写指令来控制舵机。

本人入手的是SG90,Micro Servo 9g舵机

然后对于初次接触的伙伴们来说,想要快速了解这个东西是啥,我们可以问下百度的 文心一言

虽然跟ChatGPT4比较还有很大的差距,尤其是对语义的理解还差很远,不过成为你的一个小助手还是比较不错的,我们来看下它的回答:

问:SG90舵机的参数

答:SG90舵机的参数有:
工作电压:4.8V-6V。
使用温度:-30~~+60摄氏度。
死区设定:7us (7MHZ) 。
堵转扭矩:1.2-1.4公斤/厘米(4.8V)
正脉冲宽度:2ms。
PWM占空比:0.5~2.5ms 的正脉冲宽度。
尺寸:21.5mmX11.8mmX22.7mm 重量:9克 (1kg=1公斤=2斤) 。
无负载速度:0.12秒/60度(4.8V) 0.002s/度。
输入阻抗:50Ω。
转角线性度:2.5%

问:SG90舵机有哪些作用

答:SG90舵机的作用主要有以下几点:
实现各种电子设备的角度和位置控制。
作为一种基本的输出执行机构,应用于单片机系统中,实现简单的控制和输出。
在机器人机电控制系统中,作为关节的末端执行器,实现对机械臂等机械装置的精确控制。
应用于高档遥控玩具、飞机、潜艇模型、遥控机器人等领域,实现对特定角度的输出。
总之,SG90舵机在各种应用场景中都发挥着重要作用。

这两个回答还是挺不错的,也可以让你很快速的了解这个产品,而不需要去搜索然后找答案,大大提高了效率,节约了你的宝贵时间。

一般进行精确控制的都通过PWM(脉冲宽度调制,Pulse Width Modulation,或叫脉宽调制)是一种对模拟信号电平进行数字编码的方法,由于计算机不能输出模拟电压,只能输出0或5V 的的数字电压值,我们就通过使用高分辨率计数器,利用方波的占空比被调制的方法来对一个具体模拟信号的电平进行编码。

协处理器对舵机的操作(Micro Servo 9g舵机)_第1张图片

颜色对应插入即可:

协处理器对舵机的操作(Micro Servo 9g舵机)_第2张图片

PWM三个基本参数:1、脉冲宽度;2、脉冲周期(1秒内脉冲频率个数的倒数);3、电压高度(例如:0V-5V)

它的用途很广泛,比如调节光的亮度、电机的调速、声音的制作等等。这里我们是使用舵机,也就是控制旋转角度

因为舵机也是使用协处理器控制,我们将需要使用的包导入,然后创建实例并初始化。

import smbus
import time
bus = smbus.SMBus(1)
Servo_ADD = 0x1B

然后我们来控制舵机的角度

#将舵机摆动至中央位置
bus.write_i2c_block_data(Servo_ADD,3,[1,90])
#将舵机摆动至45度位置
bus.write_i2c_block_data(Servo_ADD,3,[1,45])
#将舵机摆动至180度位置(舵机编号为2)
bus.write_i2c_block_data(Servo_ADD,3,[2,180])

根据通讯协议给IIC发送数据,其中SMBus实例调用的方法为write_i2c_block_data

write_i2c_block_data(addr, cmd, [vals]),其中的参数,addr:协处理器地址,cmd:舵机寄存器地址, [vals]:[舵机编号,舵机角度]

其中协处理器地址和舵机寄存器地址是固定值,舵机编号1对应底板上的S1,2对应底板上的S2,舵机角度在0-180之间设置

从图中可以看到这块板子可以放两个舵机,S1,S2,可以分别独立控制。我们让它持续转动看下效果:

while True:
    i+=10
    bus.write_i2c_block_data(Servo_ADD,3,[1,i])
    time.sleep(0.2)
    bus.write_i2c_block_data(Servo_ADD,3,[1,i])
    time.sleep(0.2)

你可能感兴趣的:(ROS(机器人操作系统),9g舵机,PWM脉冲宽度调制,smbus.SMBus,协处理器地址,舵机寄存器地址)