智能车学习(十四)——舵机学习

一、舵机基础知识

1、定义

     舵机简单的说就是集成了直流电机、电机控制器和减速器等,并封装在一个便于安装的外壳里的伺服单元。能够利用简单的输入信号比较精确的转动给定角度的电机系统。

     舵机安装了一个电位器(或其它角度传感器)检测输出轴转动角度,控制板根据电位器的信息能比较精确的控制和保持输出轴的角度。这样的直流电机控制方式叫闭环控制,所以舵机更准确的说是伺服马达,英文servo。

2、舵机组成

image

3、工作原理

      控制电路接收信号源的控制信号,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度然后控制舵机转动到目标角度或保持在目标角度。

二、舵机的规格

1、转速:

(1)定义:转速由舵机无负载的情况下转过60°角所需时间来衡量。

(2)一般在0.11S/60°~0.21S/60°之间。

2、转矩

(1)定义:舵机扭矩的单位是KG·CM,这是一个扭矩单位。可以理解为在舵盘上距舵机轴中心水平距离1CM处,舵机能够带动的物体重量。

3、电压

     厂商提供的速度、转矩数据和测试电压有关,在4.8V和6V两种测试电压下这两个参数有比较大的差别。如Futaba S-9001 在 4.8V 时扭力为 3.9kg、速度为 0.22 秒,在 6.0V 时扭力为 5.2kg、速度为 0.18 秒。若无特别注明,JR 的舵机都是以 4.8V 为测试电压,Futaba则是以 6.0V 作为测试电压。

三、模拟舵机及其控制原理

image

1、工作原理

     工作原理是控制电路接收信号源的控制脉冲,并驱动电机转动;齿轮组将电机的速度成大倍数缩小,并将电机的输出扭矩放大响应倍数,然后输出;电位器和齿轮组的末级一起转动,测量舵机轴转动角度;电路板检测并根据电位器判断舵机转动角度,然后控制舵机转动到目标角度或保持在目标角度。

2、控制信号

舵机的控制脉冲周期20ms脉宽从0.5ms-2.5ms,分别对应-90度到+90度的位置。如下图所示:

image

四、使用PWM控制舵机输出

在main函数中的测试代码

#include "include.h"
#include "init.h"
#include "OLED.h"
#include "menu.h"
#include "keySquare.h"


void main()
{
  
  DisableInterrupts;
  system_init();
  EnableInterrupts;
  
  u16 duty = 450;
  FTM_PWM_init(FTM2,CH0,50,duty);
  OLED_Write_Int(0,0,duty);

  while(1)
  {
    if(keyBoard_get() == Keynum1)
    {
      time_delay_ms(100);
      if(keyBoard_get() == Keynum1)
      {
         duty += 10;
         FTM_PWM_Duty(FTM2,CH0,duty);
         
         OLED_Clear();
         OLED_Write_Int(0,0,duty);
         time_delay_ms(100);
      }
    }
  
    if(keyBoard_get() == Keynum2)
    {
      time_delay_ms(100);
      if(keyBoard_get() == Keynum2)
      {
         duty -= 10;
         FTM_PWM_Duty(FTM2,CH0,duty);
  
         OLED_Clear();
         OLED_Write_Int(0,0,duty);
         time_delay_ms(100);
        

      }
    }
  }
}
原文地址:https://www.cnblogs.com/BlueMountain-HaggenDazs/p/5025908.html