您现在的位置是:亿华云 > 人工智能
OpenHarmony Neptune开发板PWM驱动SG90伺服舵机
亿华云2025-10-04 03:43:04【人工智能】0人已围观
简介想了解更多内容,请访问:和华为官方合作共建的鸿蒙技术社区https://harmonyos.51cto.com本文介绍如何在Neptune开发板上,使用openHarmony IoT硬件子系统的PWM
想了解更多内容,驱动请访问:
和华为官方合作共建的伺服鸿蒙技术社区
https://harmonyos.51cto.com
本文介绍如何在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}{ 红色线}红色线===>5V4、驱动相关基础知识介绍
鸿蒙系统IoT硬件子系统提供了一些外设相关的伺服接口,目录位于:
base/iot_hardware/peripheral/interfaces/kitsPWM相关接口,舵机接口头文件为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}频率范围0−65535;
duty:IoTPwmStart接口的duty参数是控制输出方波的占空比的云南idc服务商参数,占空比是指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)//舵机角度控制函数
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; }七、编译、烧录,并测试最后的完成效果。
文章相关附件可以点击下面的原文链接前往下载
https://harmonyos.51cto.com/resource/1093
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com
很赞哦!(73)
相关文章
- 2、根据用户基础选择访问提供程序。由于互联问题的存在,接入商的选择也非常重要,如果用户群主要在联通,尽量选择联通接入较好的接入商,如果用户群主要在电信,那么选择电信接入较好的接入商。如果用户组位于国家/地区,则选择更好的访问提供程序进行交互。
- 注册了双拼域名怎么使用?双拼域名注册后的使用方法
- 一个比传统数据库快100-1000倍的数据库,来看一看?
- 「算法与数据结构」带你看分治算法之美
- 公司名字不但要与其经营理念、活动识别相统一,还要能反映公司理念,服务宗旨、商品形象,从而才能使人看到或听到公司的名称就能产生愉快的联想,对商店产生好感。这样有助于公司树立良好的形象。
- 一级域名和二级域名存在哪些差别呢?
- 精品域名交易怎么样更有保障?
- 教育培训行业可以用.edu后缀吗?
- 比较短的域名方便用户记忆和传播,它带来的好处往往会超过其他类型的域名,如果你非要域名短而且还要包含关键词,那么往往会事与愿违,现在这种域名基本上是可遇而不可求的。
- 注册了双拼域名怎么使用?双拼域名注册后的使用方法
站长推荐
要如何了解反向解析和域名解析?新手该怎么去操作?
Golang 语言极简类型转换库 Cast
应用配置管理之组装模型和模板模型
域名对搜索引擎有影响吗?有哪些影响?
当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
到2026年,利用 AI 的 AR 应用程序用户将超过两亿
Github星标8K+这款国人开源的Redis可视化管理工具,真香...
如何杀死一个Python线程