anywill 发表于 2016-10-26 22:31:01

ARM®mbed OS入门开发 按键控制舵机旋转


【STM32 Mbed帖子大集合】

ARM®mbed OS入门开发按键控制舵机旋转

舵机是一种位置带齿轮减速的伺服驱动器,其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为20ms,宽度为1.5ms 的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。经由电路板上的IC 判断转动方向,再驱动无核心马达开始转动,透过减速齿轮将动力传至摆臂,同时由位置检测器送回信号,判断是否已经到达定位。适用于那些需要角度不断变化并可以保持的控制系统。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。一般舵机旋转的角度范围是0 度到180 度。舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准PWM(脉冲宽度调制)信号的周期固定为20ms(50Hz),理论上脉宽分布应在1ms到2ms 之间,但是,事实上脉宽可由0.5ms 到2.5ms 之间,脉宽和舵机的转角0°~180°相对应。

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。以180度角度伺服为例,那么对应的控制关系是这样的:0.5ms--------------0度;1.0ms------------45度;1.5ms------------90度;2.0ms-----------135度;2.5ms-----------180度;这只是一种参考数值,具体的参数,请参见舵机的技术参数。小型舵机的工作电压一般为4.8V或6V,转速也不是很快,一般为0.22/60度或0.18/60度,所以假如你更改角度控制脉冲的宽度太快时,舵机可能反应不过来。如果需要更快速的反应,就需要更高的转速了。本例程用的舵机型号为TOWER PROSG90的三根线分别用棕、红、橙三种颜色进行区分,棕色为接地线,红色为电源正极线,橙色为信号线。
本程序中将信号线接到D9引脚,模拟输出PWM信号。

//mbed+nucleo070
//按键控制舵机左右转,复位键舵机复位
#include "mbed.h"
#include "Servo.h"//mbed里simen的舵机库

Servo myservo(D9);//舵机控制引脚

DigitalOut myled(LED1);
DigitalOut myled1(LED2);
DigitalIn pb(USER_BUTTON);//用户键按下左转
DigitalIn pb1(D10);       //另一键按下右转,照片无此键
int button1=0;
int button2=0;
float servo=0;

// SPST Pushbutton demo using internal PullUp function
// no external PullUp resistor needed
// Pushbutton from P8 to GND.
int main()
{
      myservo=0;
      pb.mode(PullUp);
      pb1.mode(PullUp);
   while(1)
    {
   myled = pb;
   myled1 = pb1;
       if(pb==0)
      {
          myservo = myservo+0.1;
          wait(0.2);
      }
      else if(pb1==0)
      {
         myservo=myservo-0.1;
         wait(0.2);
      }
    }
}



anywill 发表于 2016-10-26 22:34:20

库作者Simon Ford

weigr 发表于 2016-10-26 23:03:12

有机会弄弄

zengyi703-16313 发表于 2016-10-27 08:06:09

支持一下。

笑鸟007 发表于 2016-10-27 09:57:38

支持一下!!:)

xyx365 发表于 2016-10-28 18:57:51

谢谢分享学习一下

一卡车龙眼仔z 发表于 2017-11-11 10:25:36

666,原来Mbed还有直接控制舵机的函数:lol

epochal 发表于 2017-11-11 12:07:37

支持!!!

carmelo 发表于 2018-11-19 14:46:06

Nicede 的帖子

单片机爱好者 发表于 2020-6-24 20:07:44

有导出的keil工程吗? 需要一个STM32F103C8T6的工程,自己导出来的编译错误太多了
页: [1]
查看完整版本: ARM®mbed OS入门开发 按键控制舵机旋转