This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MSP430G2 LaunchPad控制舵机的方法

Other Parts Discussed in Thread: ENERGIA

伺服电机包含了直流电机、位置控制系统和转动机构。伺服电机在现代世界有很多应用,因此它们有不同的形状和尺寸。我们将在本篇文章中使用的是SG90伺服电机,它是最流行且最便宜的电机之一。 SG90是一款180度伺服器。所以用这个伺服我们可以将轴从0-180度定位。

伺服电机主要有三根导线,一个用于电源,另一个用于接地,最后一个用于位置设置。红线连接到电源,棕线连接到地,黄线(或白)连接到信号。

每个伺服电机都运行在不同的PWM频率上(本教程中使用的最常用频率为50HZ),因此请获取电机的数据表以检查伺服电机工作在哪个PWM周期。

PWM(脉宽调制)信号的频率可以根据伺服电机的类型而变化。这里重要的是PWM信号的DUTY RATIO。根据这个DUTY RATION,控制电子装置调整轴。

如下图所示,对于要移动到9o时钟的轴,开启电源必须为1 / 18.ie。在18ms信号中1ms的ON时间和17ms的OFF时间。

高电平t占整个周期T(20ms)的时间
  
  舵机旋转的角度
  
  0.5ms
  
  0
  
  1ms
  
  45
  
  1.5ms
  
  90
  
  2ms
  
  135
  
  2.5ms
  
  180

在MSP430中,我们有预定义的库和PWM函数已经写入这些库中,所以我们不必担心PWM值。您只需放置想要旋转轴的角度,然后通过这些库和微控制器进行操作。

在这里,我们使用PIN 6,即P1.4,它是MSP430的PWM引脚。但是你可以使用任何引脚号。因为所有PWM函数都写入库本身,所以不需要使用PWM引脚进行伺服。

用于控制伺服的头文件是“servo.h”。

我们将使用Energia IDE编写我们的代码。代码简单易懂。它与Arduino相同,可以在示例菜单中找到。下面给出完整的代码,您可以根据需要编辑代码并将其上传到MSP430开发板。

#include <Servo.h> 

Servo sg90servo;    // create servo object to control a servo 
int angle = 0;    // variable to store the servo position 
void setup() 
{ 
  Sg90servo.attach(4);  // attaches the servo on pin 4 to the servo object 
} 
void loop() 
{ 
  for(angle = 0; angle< 180; angle++)  // goes from 0 degrees to 180 degrees 
  {                                       // in steps of 1 degree 
    Sg90servo.write(angle);              // tell servo to go to position in variable 'angle’ 
    delay(20);                       // waits 20ms for the servo to reach the position 
  } 
  for(angle = 180;angle>=1; angle--)     // goes from 180 degrees to 0 degrees 
  {                                
    Sg90servo.write(angle);              // tell servo to go to position in variable 'angle' 
    delay(20);                       // waits 20ms for the servo to reach the position 
  } 
}