OpenHarmony Neptune开发板PWM驱动SG90 伺服舵机 原创 精华

远道可思
发布于 2021-9-1 13:30
浏览
4收藏

本文介绍如何在Neptune开发板上,使用openHarmony IoT硬件子系统的PWM接口 驱动SG90 伺服舵机。
1、环境准备
1.1 开发环境、编译环境搭建,参考官方文档,参考链接如下:
Neptune开发板的环境搭建及使用
1.2 Neptune开发板 openharmony V1.1.0 LTS 版本获取:
git clone https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot.git
2、材料准备

1、Neptune HarmonyOS物联网 IOT模组

2、SG90 伺服舵机

3、杜邦线若干
3、接线方法
$\color{brown}{棕色线}$===>GND

$\color{yellow}{黄色线}$===>PB0

$\color{red}{红色线}$===>5V

4、相关基础知识介绍

鸿蒙系统IoT硬件子系统提供了一些外设相关的接口,目录位于:
base/iot_hardware/peripheral/interfaces/kits
PWM相关接口,接口头文件为iot_pwm.h,其中用PWM输出方波的API:
unsigned int IoTPwmStart(unsigned int port, unsigned short duty, unsigned int freq);
接口参数介绍:
freq:IoTPwmStart接口中freq参数就是PWM实际输出的方波频率$\color{red}{频率范围0-65535}$;
duty:IoTPwmStart接口的duty参数是控制输出方波的占空比的参数,占空比是指PWM输出的方波波形的高电平时间占整个方波周期的比例,具体占空比值是 duty /256的比值,,例如想要输出占空比50%的方波信号,那么duty填的值就要是128;

5、SG90 伺服舵机驱动原理
舵机的控制一般需要一个20ms的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分
需要产生一个20ms的时基脉冲所需的频率为50HZ
(f=1/T,二者成反比(其中f为频率,T为周期)。频率是单位时间内完成周期性变化的次数,是描述周期运动频繁程度的量。周期,物体作往复运动或物理量作周而复始的变化时,重复一次所经历的时间)
占空比 = t / T 相关参数如下:
t = 0.5ms------0 °
t = 1.0ms------45°
t = 1.5ms------90°
t = 2.0ms------135°
t = 2.5ms------180°
PWM占空比是指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比,由于PWM周期为20ms,所以(以舵机会转动 45°为例),占空比就应该为1ms/20ms = 5%

6.编写代码
有了以上知识,我们就可以编写代码了,关键代码如下:

void Servo_Angle_Control(uint32_t angle)//舵机角度控制函数
{
  float time=0; 
  float dutytime=0;
  uint16_t duty=0;
  time=angle/9;                         //计算角度所对应时间
  dutytime=(time+5)/200;                //公式(angle/90+0.5)/20
  duty=256*dutytime;                    //计算占空比
  //printf("angle:%d\n",angle);
  //printf("duty:%0.1f%%\n",dutytime*100);
  IoTPwmStart(0,duty,50);
}

static void PWMTask(void *arg)
{
    osDelay(20);
    (void)arg;
    int t=5;
    while (t--)
    {
    Servo_Angle_Control(0);
    osDelay(200);
    Servo_Angle_Control(45);
    osDelay(200);
    Servo_Angle_Control(90);
    osDelay(200);
    Servo_Angle_Control(135);
    osDelay(200);
    Servo_Angle_Control(180);
    osDelay(200); 
    }
    return NULL;
}

7、编译、烧录,并测试最后的完成效果。
OpenHarmony Neptune开发板PWM驱动SG90 伺服舵机-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
pwm_servo_demo.rar 902B 100次下载
已于2021-9-1 13:30:31修改
4
收藏 4
回复
举报
回复
    相关推荐