树莓派——舵机

树莓派——舵机

舵机

介绍

舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。
舵机是一种俗称,其实是一种伺服马达。可以旋转到 0 到 180 度之间的任何角度,然后根据您的指令精确停止,因此适用于需要角度变化和保持的控制系统。舵机是一个不专业的名称,实际上它是一种伺服电机,一套自动控制装置,由直流电机,减速齿轮组,传感器和控制电路组成。 什么是自动控制? 所谓的自动控制 - 通过使用闭环反馈控制电路不断调整输出偏差 - 使系统输出恒定。
舵机是一种伺服马达,在0到180度之间进行旋转。英文名为micro servo。

工作原理

舵机控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为 20ms,宽度为 1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为 0,电机停止转动。舵机具有最大旋转角度,中间位置是指从该位置到最小角度的体积,并且最大角度完全相同。 最重要的部分,最大旋转角度随着不同的转向齿轮而变化,但中间位置的带宽是确定的,即 1.5 毫秒。
有一个基准电路,产生周期为 20ms,宽度为 1.5ms 的基准信号,与输入信号进行对比,正负决定正反转。

控制

舵机的控制一般需要一个 20ms 左右的时基脉冲,该脉冲的高电平部分一般为 0.5ms~2.5ms 范围内的角度控制脉冲部分。以 180 度角度伺服为例,那么对应的控制关系是这样的:
⚫ 0.5ms--------------0 度;
⚫ 1.0ms------------45 度;
⚫ 1.5ms------------90 度;
⚫ 2.0ms-----------135 度;
⚫ 2.5ms-----------180 度

旋转角度由来自控制线的连续脉冲产生。 该方法称为脉冲调制。 脉冲长度决定了转向器的旋转角度。
在这里插入图片描述
当舵机接收到小于 1.5ms 的脉冲时,输出轴将作为标准中间位置,逆时针旋转一定角度; 当接收
脉冲大于 1.5ms 时,输出轴顺时针旋转。 不同品牌的转向器,甚至同一品牌的不同转向器,最大值和最小值可能不同。
在这里插入图片描述
舵机的旋转由脉冲来控制。对于数字和模拟的舵机来说,其控制方式还有些区别

树莓派使用

一般来说,舵机由三根线进行控制,电源线,地线,信号线,实际上舵机的只由信号线进行控制。
红色线是电源线,棕色线是底线,橙色线是信号线。

IO模拟使用(使用GPIO模拟pwm控制舵机旋转)

接线方式如下:
在这里插入图片描述
代码:
其实就是使用io空输出一个0.5ms到2.5ms的周期为20ms的脉冲,但是总感觉控制不太准确,可能是io模拟的原因。
映射关系:

时间(ms)角度(°)
0.50
1.045
1.590
2.0135
2.5180

#include <stdio.h>
#include <string.h>
#include <wiringPi.h>
#include <wiringSerial.h>

int cyc = 20000;
int pwmPin = 28;
int value;

/**
 * @brief 将0~180°映射到0.5ms到2.5ms的一次脉冲(周期为20ms)
 * 
 * @param temp 
 */
void pwm_fun(int temp)
{
    digitalWrite(pwmPin, HIGH);
    delayMicroseconds(500 + temp * 500 / 45);
    digitalWrite(pwmPin, 0);
    delayMicroseconds((cyc - (500 + temp * 500 / 45)));
}
int main()
{
    wiringPiSetup();
    pinMode(pwmPin, OUTPUT);
    for (int i = 0; i <= 180; i += 10)
    {
        pwm_fun(i);
    }

    int angle;
    while (1)
    {
        printf("Please the angle of spin [0,180]:\n");
        scanf("%d",&angle);
        printf("The angle is %d\n",angle);
        pwm_fun(angle);

    }
}

SG90

我手中的这个SG90是模拟的、360°的,只能控制它的旋转速度和方向。也就是说在工作范围内(0.5-2.5),当脉冲在中间值1.5ms的时候是停止的,中间值两边旋转的方向不一样,和中间值的差值越大,旋转速度越快(或者说一次脉冲的旋转方向越大)。
在这里插入图片描述

MG90S

还有一个数字的mg90s,是180°的,这个时侯的脉冲相当于直接控制舵机的角度,如0.5ms的脉冲控制舵机转到0°位置,2.5ms的脉冲控制舵机转到180°位置,这个数字的只需要一次脉冲就可以。
在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值