SG90 9g舵机实验

时间:2023-01-14 08:57:38

1.模块准备

1.1 硬件

(1)烧录好的树莓派4B开发板

(2)数据线一条(为树莓派供电)

(3)SG90 9g舵机(带支架)1个

SG90 9g舵机实验


1.2 舵机相关参数与控制原理

SG90 9g舵机实验

接线

  • 棕色线(GND,地线)
  • 红色线(VCC,电源线,接5V)
  • 黄色线(信号线,接GPIO信号端口,脉冲输入)

其它参考参数

  • 扭 矩:1.5kg/cm
  • 扭矩的物理意义
  • 使物体发生转动的一种特殊的力矩
  • 力矩等于力与力臂的乘积,国际单位:牛·米(N·m)
  • 1N=1kg×1m/s2
  • 工 作 电 压:4.2-6V
  • 温 度 范 围:0℃--55℃
  • 运 行 速 度:0.3秒/60度

基本控制原理

  • 脉冲(信号)
  • • 脉冲通常是指电子(计算机)技术中的一种像脉搏似的短暂起伏的电冲击(电压或电流)。主要特性有波形、幅度、宽度和重复频率。
  • 瞬间突然变化,作用时间极短的电压或电流称为脉冲信号,计算机内的信号就是脉冲信号,又叫数字信号。脉冲信号可以是周期性重复的,也可以是非周期性的或单次的,它是一种离散信号,形状多种多样,与普通模拟信号(如正弦波)相比,波形之间在时间轴不连续(如图)。

SG90 9g舵机实验

脉冲信号图(来源:百度百科)

  • 脉冲信号控制原理
  • 舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
  • 舵机的具体工作原理在这里不细究(本人也不熟悉),可以大概了解一下其流程:脉冲控制信号进入信号调制芯片--->舵机获得直流偏置电压(其内部的一个基准电路产生周期为 20ms,宽度为 1.5ms 的基准信号)--->将获得的直流偏置电压与电位器的电压比较--->获得电压差输出--->电压差的正负输出到电机驱动芯片控制电机的正反转(电压差为 0时电机停止转动)。
  • (重点了解,后续的编码控制有关)舵机的控制一般需要一个 20ms 左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms 范围内的角度控制脉冲部分。若是 180 度角度舵机,其对应的控制关系如下:
  • 0.5ms--------------0 度
  • 1.0ms------------45 度
  • 1.5ms------------90 度
  • 2.0ms-----------135 度
  • 2.5ms-----------180 度
  • 本实验使用树莓派输出脉宽调制(PWM)信号控制舵机的转动,PWM是指通过微处理器的数字输出以实现对模拟电路的控制,是一种对模拟信号电平进行数字编码的方法。PWM的一个重要参数是占空比(脉冲高电平部分的占比)


1.3 模块连接

SG90 9g舵机实验

注:本实验编程将使用BOARD编码模式,此时GPIO4对应的引脚号为16。

SG90 9g舵机实验


2. 实验源码和实验效果

2.1 单个舵机控制测试源码

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD)
channel = 16
GPIO.setup(channel, GPIO.OUT)
p = GPIO.PWM(channel, 20) # 20 是频率
p.start(10) # p.start(dc) dc 代表占空比 0.0 ~ 20.0

try:
dc = 1
while dc <= 5:
print(dc)
p.start(dc)
time.sleep(1)
dc += 0.5
p.start(0)
except KeyboardInterrupt:
pass
p.stop()
GPIO.cleanup()
print('over')


2.2 实验效果

SG90 9g舵机实验


3. 实验小结

      本实验所用舵机转动角度不止180度,实际上,要精确的控制舵机并没有那么容易,许多舵机的位置等级有 1024 个,其控制的角度精度可以约 0.2度,从时间上看其实要求的脉宽控制精度为 2000/1024us 约 2us。

     舵机虽小,但多个组合、组装在在一起可以有许多应用,本实验原想组合多个舵机组装成一个小型机械臂,以抓取轻型物体,但还未实现,后续有时间会去尝试一下。(想法如下图)

SG90 9g舵机实验

(已有实物)

SG90 9g舵机实验

(一种机械臂,来源:百度图片)