0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【精选好文】玩转OpenHarmony PID:教你打造两轮平衡车

电子发烧友论坛 来源:未知 2022-12-27 09:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

简介

此次为大家带来的是OpenAtom OpenHarmony(以下简称“OpenHarmony”)系统与PID控制算法相结合并落地的平衡车项目。 PID控制算法是一种经典的,并被广泛应用在控制领域的算法。类似于这种:需要将某一个物理量保持稳定的场合,比如维持平衡,稳定温度、转速等,PID都会适用。在四轴飞行器,平衡小车、汽车定速巡航、温度控制器等场景均有应用。 08b11fd4-8583-11ed-bfe3-dac502259ad0.png08ca2cea-8583-11ed-bfe3-dac502259ad0.png  通过本样例的学习,开发者能够对OpenHarmony系统设备端开发有进一步的认识,还能够掌握PID控制算法的使用。本样例使用OpenHarmony 3.2 Beta1操作系统,硬件平台采用小熊派BearPi-HM Nano(Hi3861)开发板。 本样例效果动图: 08e982fc-8583-11ed-bfe3-dac502259ad0.gif092f6772-8583-11ed-bfe3-dac502259ad0.gif  

硬件配置资源

  • 两轮平衡小车主要硬件资源:
  • 主控CPU:小熊派BearPi-HM Nano(Hi3861)开发板;
  • 陀螺仪:MPU6050六轴陀螺仪传感器
  • 左右轮:带有霍尔传感器的直流电机
  • 小车平台及结构件资源可以自行在相关网站获得。

原理概括

poYBAGQL6wuAI2mxAAB-3MA1l5A344.png  小时候都玩过上图游戏吧:木杆立在手指上,尽量保持木杆直立不倒。 当木杆向前倾斜时,我们会往前行走,以用来抵消木杆的前倾;往后倾斜时,我们会往后倒退。对的!没错!你猜对了。平衡车的控制原理就是这样: 0f1c4c36-8583-11ed-bfe3-dac502259ad0.png  

PID算法介绍

平衡车的控制离不开对PID算法的应用。那么什么是PID算法?它能解决什么问题? PID算法:就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种常见的“保持稳定”控制算法。 0f394994-8583-11ed-bfe3-dac502259ad0.png0f4cb4e8-8583-11ed-bfe3-dac502259ad0.gif  结合两轮平衡车的场景,对PID参数的认识如下:
  • P比例参数:该参数能够快速让小车达到平衡状态,但是由于控制是滞后的,以及是惯性系统,容易带来超调,即小车会出现前后摇摆的现象。所以P参数不能太大;
  • I积分参数:小车由于摩擦力或者风阻力,并且P不能太大,只靠P控制有可能达不到稳定状态,所以需要加入I积分参数,消除稳态误差;
  • D微分参数:平衡小车维持的是倾斜角度要为平衡角度,由于PI参数使小车振荡,小车会出现前后摇摆现象,加入D微分参数能够消除小车的振荡。

两步搭建样例工程

在OpenHarmony源码基础上,两步构建平衡小车代码。(OpenHarmony源码下载路径及BearPi-HM Nano(Hi3861)开发板代码烧录,请参考文章末尾相关链接) 第一步:拷贝Balance_car文件夹到源码路径下:deviceoardearpiearpi_hm_nanoapp (Balance_car文件获取路径,请参考文章末尾相关链接) 如图文件夹目录: 0f5bcabe-8583-11ed-bfe3-dac502259ad0.png  第二步:修改BUILD.gn,在源码路径下:deviceoardearpiearpi_hm_nanoappBUILD.gn 添加编译依赖:"Balance_car:balance_car",如下图: 0f7a38f0-8583-11ed-bfe3-dac502259ad0.png  

关键算法讲解

两轮平衡车的控制主要涉及三个PID环的串联使用,它们分别是直立环(平衡控制)、速度环(速度控制)、转向环(方向控制)。三个控制效果合成,控制轮子运行。 0f8f32be-8583-11ed-bfe3-dac502259ad0.png0f9de4da-8583-11ed-bfe3-dac502259ad0.png  直立环控制算法:直立环控制算法是平衡小车维持平衡的主要算法。直立环采用了PD算法环节,即只有比例与微分环节。 倾斜角度大小以及角加速度大小决定了轮子的速度大小。可以理解为倾斜角度越大,控制轮子顺着倾斜的方向的速度越大;倾斜的角加速度越大,控制轮子速度也要越大。
float g_middleAngle = 1.0;//平衡角度
float g_kpBalance = -85800.0;
float g_kdBalance = -400;


static int ControlBalance(float angle, short gyro)
{
    int outpwm = 0;
    float angleBias = 0.0;
    float gyroBias = 0.0;
    float tempAngle = 0.0;
    float tempGyro = 0.0;


    tempAngle = 0 - angle;//极性控制
    tempGyro = 0 - gyro;


    angleBias = g_middleAngle - tempAngle;
    gyroBias = 0 - tempGyro;
    outpwm = (g_kpBalance / 100 * angleBias + g_kdBalance
     * gyroBias / 100);


    return outpwm;
}
速度环控制算法:速度环控制的目的是让机器以恒定速度前进或后退,该恒定速度可以为0速度,即要让平衡车静止。速度环采用了PI环控制,只有比例与积分环节。
float g_kpSpeed = 95800.0;
float g_kiSpeed = 200;


static int ControlSpeed(long int left, long int right)
{
    int outpwm = 0;
    int speedBias = 0;
    int speedBiasLowpass = 0;
    static int speed_i = 0;
    float a = 0.68;
    static int speedBiasLast = 0;


    speedBias = 0 - left - right;
    speedBiasLowpass = (1 - a) * speedBias
        + a * speedBiasLast;
    speedBiasLast = speedBiasLowpass;


    speed_i += speedBiasLowpass;
    speed_i = limit_data(speed_i, SPEED_H, SPEED_L);


    outpwm = (g_kpSpeed * speedBiasLowpass / 100 +
        gkiSpeed * speed_i / 100);


    return outpwm;
}
转向环控制算法:转向环的目的是控制小车以恒定速度转向。在本次场景为了控制小车平衡静止,所以只做了限制转向的操作。
static int ControlTurn(short gyro)
{
  int outpwm;


    outpwm = g_kpTurn * gyro;
  return outpwm;
}
以上详细代码,请参考文章末尾的相关链接(Balance_car文件获取路径)。

总结

本文呈现了两轮平衡小车的大致原理。简单介绍了一下PID算法的效果:P比例参数,能够快速让系统达到稳定值,但是P太大容易超调,带来振荡;I积分参数,消除稳态误差,让系统达到稳定值;D积分参数,能消除振荡,但是会使系统时效性变慢。开发者可以根据现场情况,合理调节PID三个参数。 本样例是OpenHarmony知识体系工作组为广大开发者分享的样例。同时知识体系工作组结合日常生活,给开发者规划了各种场景的Demo样例,如智能家居场景、影音娱乐场景、运动健康场景等;欢迎广大开发者一同参与OpenHarmony的开发,更加完善样例,相互学习,相互进步。

本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com

0fb74b82-8583-11ed-bfe3-dac502259ad0.png

热门推荐干货好文

1、24Bit ADC高精度低功耗MCU 医疗级别设备参考设计(附上高精确算法+电路原理图)

2、超强性能AI芯片,OpenHarmony多系统支持,可定制高性能AP(附10+开发Demo)

3、从零入门物联网OH开源平台,从简单到高阶项目,创客电子爱好者都爱用!

4、低成本ESP32方案,支持OpenHarmony系统开发(附10+项目样例Demo)

5、NO RTOS移植!32位、64线程开发板,超强实时性体验!

6、四核64位,超强CPU ,看RK3568“竞”开发板DEMO!

7、人工智能也能这么玩, 简单快速入手,还能自定义AI运算

8、业界首款!支持富设备开发,OpenHarmony开发者都选它!

9、高性能双核RISC-V,满足大多数开发,这款国产MCU工程师都爱了!


原文标题:【精选好文】玩转OpenHarmony PID:教你打造两轮平衡车

文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:【精选好文】玩转OpenHarmony PID:教你打造两轮平衡车

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    两轮后向安全难题迎突破,毫米波雷达开启智能防护新时代

    本文聚焦两轮电动后向安全痛点,分析变道盲区、倒车视线受阻、追尾预警缺失三大安全隐患。介绍飞睿智能毫米波雷达后向预警解决方案,阐述其在盲区监测、变道预警、防碰撞预警三大场景的应用价值,展现该技术为两轮
    的头像 发表于 04-03 15:12 1954次阅读
    <b class='flag-5'>两轮</b><b class='flag-5'>车</b>后向安全难题迎突破,毫米波雷达开启智能防护新时代

    百度地图技术引擎重塑两轮导航新体验

    随着城市出行结构不断演变,两轮正成为短途通勤与灵活交通的重要支柱。在这一浪潮中,百度地图不再只是汽车驾驶员的导航助手,而是以前瞻性布局与技术纵深,悄然成为两轮智能化变革的核心推手。
    的头像 发表于 01-14 14:18 785次阅读

    基于Power PROFET™ BTS50010 - 1TAE的两轮启动继电器设计方案

    基于Power PROFET™ BTS50010 - 1TAE的两轮启动继电器设计方案 在两轮(摩托车和踏板车)的设计领域,启动继电器的性能和可靠性至关重要。传统的机电继电器在应对
    的头像 发表于 12-21 16:05 686次阅读

    四维图新发布两轮智能化解决方案

    10月28日,2025四维图新Evolution创想大会在北京召开。会上,四维图新CEO程鹏正式发布两轮智能化解决方案。方案深度整合全链条核心技术,为企业、运营方及监管部门提供全方位支撑,加速两轮车行业从 “机械化” 向 “智
    的头像 发表于 10-31 17:20 1223次阅读

    ASM1042A3S规级CANFD芯片在两轮平衡控制器方案中的技术应用

    摘要 本文以国科安芯推出的ASM1042A3S规级CAN FD芯片为例,讨论在两轮平衡控制器方案中的技术应用。通过对芯片核心技术特点
    的头像 发表于 10-23 17:49 862次阅读

    四维图新参与编制两轮智能化技术发展路线图

    近日,由中国电子商会智能电动汽车专委会牵头,联合天津内燃机研究所(天津摩托车技术中心)与两轮智能化技术创新中心共同发起、四维图新承办的《两轮智能化技术发展路线图(2025-2035
    的头像 发表于 10-22 16:49 1128次阅读

    Arduino Uno l两轮平衡机器人 电机驱动无输出求解

    Arduino Uno l两轮平衡机器人 电机驱动无输出求解
    发表于 10-15 06:36

    新国标全面施行,利尔达智能云盒正为两轮装上“最强大脑”……

    //面对新国标强监管与消费市场升级的双重驱动,两轮产业正经历一场前所未有的智能化变革……随着2025年9月1日电动自行车新国标的全面实施,两轮车市场正加速向“安全化、网联化、智能化”转型。新国标
    的头像 发表于 09-18 09:04 1150次阅读
    新国标全面施行,利尔达智能云盒正为<b class='flag-5'>两轮</b><b class='flag-5'>车</b>装上“最强大脑”……

    赋能两轮新国标 | 匠芯创D13x系列芯片为手机无线投屏与导航提供核心支持

    近日,匠芯创推出基于D13x系列工业级显示控制芯片的两轮无线投屏解决方案。该方案积极响应两轮新国标智能化要求,以极高的性价比为核心优势,支持Android与iOS双系统无线投屏,具
    的头像 发表于 09-17 18:03 1007次阅读
    赋能<b class='flag-5'>两轮</b><b class='flag-5'>车</b>新国标 | 匠芯创D13x系列芯片为手机无线投屏与导航提供核心支持

    电动两轮仪表盘2.0时代来临,开启智慧出行新潮流

    电动两轮2.0时代自2004年电动自行车企业大规模成立以来,两轮电动在技术和市场方面都取得了显著进展。随着技术的创新和市场需求的增长,两轮
    的头像 发表于 08-07 15:45 1260次阅读
    电动<b class='flag-5'>两轮</b><b class='flag-5'>车</b>仪表盘2.0时代来临,开启智慧出行新潮流

    晶华微新欧标两轮BMS解决方案

    目前,随着市场对于轻便两轮的需求增加,锂电池在电动两轮动力系统中的普及率也进一步提升。对于电池系统的智能化、自动化控制,以及对电池系统的实时状态监测显得越来越重要。
    的头像 发表于 07-09 11:47 2102次阅读
    晶华微新欧标<b class='flag-5'>两轮</b><b class='flag-5'>车</b>BMS解决方案

    两轮平衡电动及其电机控制器设计

    摘要:两轮平衡电动平衡原理源自倒立摆模型,为研制两轮平衡电动
    发表于 06-09 16:15

    杰发科技亮相2025年两轮智能化技术发展大会

    此前,5月9日-10日,由中国电子商会智能电动汽车专委会、国家摩托车检验检测中心(天津)及莆田市荔城区人民政府共同主办的2025年两轮智能化技术发展大会在莆田市举行。在会议期间举行的两轮
    的头像 发表于 05-16 15:42 1431次阅读

    武汉芯源半导体CW32L010在两轮仪表的应用介绍

    CW32L010凭借其优异的性能、丰富的外设资源和超低功耗特性,为两轮仪表盘应用提供了高性价比的解决方案。其宽电压工作范围和工业级温度特性,特别适合车辆电子应用的严苛环境。对于想采用CW32L010进行两轮
    的头像 发表于 05-13 14:07 984次阅读
    武汉芯源半导体CW32L010在<b class='flag-5'>两轮</b><b class='flag-5'>车</b>仪表的应用介绍

    武汉芯源半导体CW32L010在两轮仪表的应用介绍

    随着两轮电动的智能化发展,仪表盘作为人机交互的重要界面,其功能需求日益复杂。武汉芯源半导体的安全低功耗单片机CW32L010凭借其优异的性能和丰富的外设资源,成为两轮仪表盘应用的理
    发表于 05-13 14:06