OpenHarmonyNeptune开发板PWM驱动SG90伺服舵机

想了解更多内容,请访问:

成都创新互联是专业的安陆网站建设公司,安陆接单;提供成都网站设计、网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行安陆网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

和华为官方合作共建的鸿蒙技术社区

https://harmonyos.

本文介绍如何在Neptune开发板上,使用openHarmony IoT硬件子系统的PWM接口 驱动SG90 伺服舵机。

一、环境准备

1.1 开发环境、编译环境搭建,参考官方文档,参考链接如下:

Neptune开发板的环境搭建及使用

1.2 Neptune开发板 openharmony V1.1.0 LTS 版本获取:

git clone https://gitee.com/hihopeorg_group/neptune-harmony-os1.1-iot.git

二、材料准备

1、Neptune HarmonyOS物联网 IOT模组

2、SG90 伺服舵机

3、杜邦线若干

三、接线方法

  • \color{brown}{棕色线}棕色线===>GND
  • \color{yellow}{黄色线}黄色线===>PB0
  • \color{red}{红色线}红色线===>5V

4、相关基础知识介绍

鸿蒙系统IoT硬件子系统提供了一些外设相关的接口,目录位于:

 
 
 
 
  1. base/iot_hardware/peripheral/interfaces/kits 

PWM相关接口,接口头文件为iot_pwm.h,其中用PWM输出方波的API:

 
 
 
 
  1. unsigned int IoTPwmStart(unsigned int port, unsigned short duty, unsigned int freq); 

接口参数介绍:

freq:IoTPwmStart接口中freq参数就是PWM实际输出的方波频率\color{red}{频率范围0-65535}频率范围0−65535;

duty:IoTPwmStart接口的duty参数是控制输出方波的占空比的参数,占空比是指PWM输出的方波波形的高电平时间占整个方波周期的比例,具体占空比值是 duty /256的比值,,例如想要输出占空比50%的方波信号,那么duty填的值就要是128;

五、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%

六.编写代码

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

void Servo_Angle_Control(uint32_t angle)//舵机角度控制函数

 
 
 
 
  1. void Servo_Angle_Control(uint32_t angle)//舵机角度控制函数 
  2.   float time=0;  
  3.   float dutytime=0; 
  4.   uint16_t duty=0; 
  5.   time=angle/9;                         //计算角度所对应时间 
  6.   dutytime=(time+5)/200;                //公式(angle/90+0.5)/20 
  7.   duty=256*dutytime;                    //计算占空比 
  8.   //printf("angle:%d\n",angle); 
  9.   //printf("duty:%0.1f%%\n",dutytime*100); 
  10.   IoTPwmStart(0,duty,50); 
  11.  
  12. static void PWMTask(void *arg) 
  13.     osDelay(20); 
  14.     (void)arg; 
  15.     int t=5; 
  16.     while (t--) 
  17.     { 
  18.     Servo_Angle_Control(0); 
  19.     osDelay(200); 
  20.     Servo_Angle_Control(45); 
  21.     osDelay(200); 
  22.     Servo_Angle_Control(90); 
  23.     osDelay(200); 
  24.     Servo_Angle_Control(135); 
  25.     osDelay(200); 
  26.     Servo_Angle_Control(180); 
  27.     osDelay(200);  
  28.     } 
  29.     return NULL; 

七、编译、烧录,并测试最后的完成效果。

文章相关附件可以点击下面的原文链接前往下载

https://harmonyos./resource/1093

想了解更多内容,请访问:

和华为官方合作共建的鸿蒙技术社区

https://harmonyos.

分享标题:OpenHarmonyNeptune开发板PWM驱动SG90伺服舵机
网站路径:http://www.mswzjz.cn/qtweb/news27/29627.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能