使用MSP430G2单片机控制舵机

  • 内容
  • 评论
  • 相关

MSP430是由TI(美国德州仪器)推出的16位的单片机,发展到现在MSP430已有多个系列共500多种型号。不同的MSP430系列集成了不同的外设,主要包括有Flash、RAM、定时器、GPIO、ADC、串行通信模块等。MSP430以低功耗而闻名,其低功耗水平在业界领先,非常适用于电池供电设备等对于功耗要求较高的领域。

MSP430G2xx的主要特性

MSP430G2xx系列在MSP430产品线中具有很高的性价比,最高主频可到16MHz,并集成了多种外设,包括GPIO、定时器、ADC、比较器、USCI串行通信、电容触摸等。

MSP430G2接口定义

msp40g2单片机接口定义

拿到MSP430G2 之后,首先看到板子分为上下两个区域。上边区域是板载仿真器,用于向单片机下载程序以及进行在线仿真;下边区域包括单片机主芯片MSP430G2553,左右两排插针分别对应单片机的20个引脚。左下方按钮连接单片机的P1.3口,可以由用户自定义编程,两个LED分别通过跳线帽连接P1.0和P1.6,如需断开LED只要拔掉跳线帽即可。芯片旁边还留出了外部晶振的焊盘,如果需要使用外部晶振,只要将包装中的晶振焊接到焊盘上即可。

舵机角度的控制原理

详见:秒懂舵机角度控制原理

 

MSP430G2控制舵机

MSP430G2连接舵机的电路图

在MSP430中,已经包含了预定义的PWM库文件,相应的函数已经在这些库中存在了,所以我们不必担心PWM的问题了,只需要把想要旋转角度放进去,其余的都由库文件和单片机来控制了。本例中我们使用的是PIN 6作为舵机的控制信号引脚,即MSP430G2板上的P1.4,它也是PWM 针脚。你也可以用其它针脚,因为在MSP430G2中舵机并不需要使用PWM引脚,因为所有的PWM控制功能都是在库文件中实现的,它就是“servo.h”。

我们使用Energia IDE来写代码。代码简单易懂,与Arduino IDE类似的,你可以在示例文件中找到代码。完整的代码如下,大家可以根据自己的需要编辑代码并上传至MSP430G2。

#include <Servo.h> 

Servo sg90servo;          // 创建舵机对象来控制舵机
int angle = 0;            // 变量来存储舵机的角度位置 
void setup() 
{ 
  Sg90servo.attach(4);    // 将引脚4与舵机对象连接
} 
void loop() 
{ 
  for(angle = 0; angle< 180; angle++)     // 从0度到180度 
  {                                       // 以1度为单位 
    Sg90servo.write(angle);               // 告诉舵机旋转到‘angle’位置
    delay(20);                            // 等待20ms待舵机转到指定位置
  } 
  for(angle = 180;angle>=1; angle--)      // 从180度到0度
  {                                
    Sg90servo.write(angle);              // 告诉舵机旋转到‘angle’位置
    delay(20);                           // 等待20ms待舵机转到指定位置
  } 
}

其它单片机控制舵机的文章:

通过Arduino和Wekinator使用滑块控制舵机

如何使用Arduino和joystick模块控制舵机

如何用Arduino同时控制多个舵机

利用MPU6050来控制舵机

利用Nodemcu控制SG90舵机

树莓派3 B+Servoblaster 舵机控制