电赛—风力摆控制系统设计讲解

原创 嵌入式基地 2023-05-07 10:20


不想错过我的推送,右上角-查看公众号-设为星标



1、赛题回顾

2、硬件说明

  1. 整个模块分上下三层:最下层为亚克力板固定四个8520电机,中间层为电机驱动电路板、各个模块接口等,上层为主控核心板;

  2. 电机两个正转,两个反转,分别对应X、Y的+/-两个方向;螺旋桨两正两反,在这里螺旋桨做推力方向,可以良好的避免异常情况下的射桨等极端情况;

  3. 传感器:MPU6050陀螺仪模块

  4. 点状激光头 –固定在底部亚克力板上

  5. 电机使用8520空心杯电机,电气参数如下:
    电机型号:8520空心杯电机(2S) 重量:5.3g
    工作电压:5~7.4V DC 堵转电流:8A
    空载电流:100mA 空载转速:50000RPM
    负载电流:1.2A 负载转速:44000RPM

3、算法分析

3.1、基础知识

  • 当只有一个方向的水平摆动的情形如x方向的摆动时;根据定义,我们可将系统理想化为单摆模型,因此有:


    上述(1)为简谐运动的典型运动学公式,质点做简谐运动,其位移与时间的函数关系;
    f(x):表示位移

A:表示振幅
w:表示角速度
φ:表示相位
周期T与w之间的关系为:T=2π/w。

  • 为单摆周期计算公式,结合实物参数推算大致的运动周期:
    L=摆杆长度=0.3m
    g=重力加速度,我们取10m/s2
    因此,推导出下面公式:


    显然,上面的摆杆我们选取的长度是相对比较短的,假设极端一点,我们选取摆杆长度为2m,此时公式:


    周期T的取值范围:1.09s ~2.81s

  • 根据单摆周期的实验法去测得周期:这里我们测量的是十次单摆周期秒表计时为11.5s;因此在程序中定义

#define Period 1150 //单摆周期 ms

如果修改了摆杆长度、机械结构,这个值要去重新测得,然后看公式(1)中的变量

A:振幅,是我们需要设定的摆动幅度;
φ:相位,在这里可以理解为开始时对应的位移,我们设为0;
w:角速度,w=2π/T 已知
t:自变量,u32 TimeCnt;//运动时间计数器

综上,可以推导出f(x)


公式(3)是一种典型的数据离散归一的处理方法,具体的意义我们可以理解为在一个运动周期内每隔5ms(5ms中断)取点,映射到2π的范围上,记录对应点位移随着时间在A范围内正弦函数周期性变化情况;


3.2、PID算法

3.2.1、参数设置

图1

根据上图做设置以下参数定义 :
  • 离地高度 float Height=675(单位 mm);

  • 角度由陀螺仪模块反馈获得,X 方向为 Roll,Y 方向为 Pitch

  • 激光点位置 float Measure_X,可以通过测得的角度三角转换得出测量值:Measure_X=tan(Roll)Height;加入初始值、弧度单位换算即:Measure_X=(float)tan((Roll-ZHONGZHI_B)/1802PI)Height;

3.2.2、控制简谐运动

  • 控制激光点的位置满足单摆运动因此有目标值 Target_X:

Alpha=(float)TimeCnt/Period2PI;
Target_X=Amplitude_xsin(Alpha);    //X 方向目标值函数 PID 公式 :pwm=Kpe(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]

此时可以通过控制 Amplitude_x 来控制摆动的幅度,导入 PID 这里就不做具体的叙述了;这样就可以控制风力摆每个方向做单摆运动(简谐运动);

3.2.3、李萨如图形

定义:李萨如图形由在互相垂直的方向上的两个频率成简单整数比的简谐振动所合成的规则的、稳定的闭合曲线;
要点:互相垂直、 简谐运动、频率成整数比
系统满足要求,我们来看下李萨如图形的数学定义:


设n=q/p; n称为曲线的参数,是两个正弦振动的频率比; 参数方程可以写作:

又有李萨如图形特殊情形:


若a=b,n=1,则曲线是椭圆
若 φ=π/2 ,则这椭圆其实是圆
若 φ=0 ,则这椭圆其实是线段

对应我们的需求,回到我们风力摆系统中,当风力摆同时参与两个互相垂直方向上的简谐运动,风力摆的位移是这两个振动的矢量和:

  1. n=1,我们没有必要去调节频率比;因此有我们的目标值函数:Target_X=Amplitude_xsin(Alpha); Target_Y=Amplitude_ysin(Alpha+Phase);

  2. 画直线,相位差φ=0;

  3. 画圆,a=b,n=1,φ=π/2或者3π/2

  • 这部分内容较多,这里就不展开讲解了,详细的可以查看该资料:https://mbd.pub/o/bread/ZJiakp5y

4、电路设计

4.1、STM32最小系统

4.2、电源电路

4.3、OLED显示电路

5、程序设计

5.1、位置式PID控制

int Position_PID_X (float value,float Target)
{     
     static float Bias,Pwm,Integral_bias,Last_Bias;
     Bias=value-Target;                                    //计算偏差
     Integral_bias+=Bias;                                  //求出偏差的积分
     Pwm=Position_KP*Bias+                                 //PID控制器比例项
         Position_KI*Integral_bias+                        //PID控制器积分项
         Position_KD*(Bias-Last_Bias);                     //PID控制器微分项 
     Last_Bias=Bias;                                       //保存上一次偏差 
     return Pwm;                                           //增量输出
}

int Position_PID_Y (float value,float Target)
{     
     static float Bias,Pwm,Integral_bias,Last_Bias;
     Bias=value-Target;                                    //计算偏差
     Integral_bias+=Bias;                                  //求出偏差的积分
     Pwm=Position_Kp*Bias+                                 //PID控制器比例项
         Position_Ki*Integral_bias+                        //PID控制器积分项
         Position_Kd*(Bias-Last_Bias);                     //PID控制器微分项 
     Last_Bias=Bias;                                       //保存上一次偏差 
     return Pwm;                                           //增量输出
}

5.2、读取MPU6050姿态信息

void Read_DMP(void)
{    
  unsigned long sensor_timestamp;
  unsigned char more;
  long quat[4];

  dmp_read_fifo(gyro, accel, quat, &sensor_timestamp, &sensors, &more);        
  if (sensors & INV_WXYZ_QUAT )
  {    
    q0=quat[0] / q30;
    q1=quat[1] / q30;
    q2=quat[2] / q30;
    q3=quat[3] / q30;
    Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;     
    Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3// roll
    Yaw =     atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;//yaw
  }
}

6、资料下载

  • https://mbd.pub/o/bread/ZJiakp5y


评论
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 70浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 65浏览
  • 全球知名半导体制造商ROHM Co., Ltd.(以下简称“罗姆”)宣布与Taiwan Semiconductor Manufacturing Company Limited(以下简称“台积公司”)就车载氮化镓功率器件的开发和量产事宜建立战略合作伙伴关系。通过该合作关系,双方将致力于将罗姆的氮化镓器件开发技术与台积公司业界先进的GaN-on-Silicon工艺技术优势结合起来,满足市场对高耐压和高频特性优异的功率元器件日益增长的需求。氮化镓功率器件目前主要被用于AC适配器和服务器电源等消费电子和
    电子资讯报 2024-12-10 17:09 84浏览
  • 概述 通过前面的研究学习,已经可以在CycloneVGX器件中成功实现完整的TDC(或者说完整的TDL,即延时线),测试结果也比较满足,解决了超大BIN尺寸以及大量0尺寸BIN的问题,但是还是存在一些之前系列器件还未遇到的问题,这些问题将在本文中进行详细描述介绍。 在五代Cyclone器件内部系统时钟受限的情况下,意味着大量逻辑资源将被浪费在于实现较大长度的TDL上面。是否可以找到方法可以对此前TDL的长度进行优化呢?本文还将探讨这个问题。TDC前段BIN颗粒堵塞问题分析 将延时链在逻辑中实现后
    coyoo 2024-12-10 13:28 101浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-10 16:13 105浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 44浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 45浏览
  • 智能汽车可替换LED前照灯控制运行的原理涉及多个方面,包括自适应前照灯系统(AFS)的工作原理、传感器的应用、步进电机的控制以及模糊控制策略等。当下时代的智能汽车灯光控制系统通过车载网关控制单元集中控制,表现特殊点的有特斯拉,仅通过前车身控制器,整个系统就包括了灯光旋转开关、车灯变光开关、左LED前照灯总成、右LED前照灯总成、转向柱电子控制单元、CAN数据总线接口、组合仪表控制单元、车载网关控制单元等器件。变光开关、转向开关和辅助操作系统一般连为一体,开关之间通过内部线束和转向柱装置连接为多,
    lauguo2013 2024-12-10 15:53 78浏览
  • 我的一台很多年前人家不要了的九十年代SONY台式组合音响,接手时只有CD功能不行了,因为不需要,也就没修,只使用收音机、磁带机和外接信号功能就够了。最近五年在外地,就断电闲置,没使用了。今年9月回到家里,就一个劲儿地忙着收拾家当,忙了一个多月,太多事啦!修了电气,清理了闲置不用了的电器和电子,就是一个劲儿地扔扔扔!几十年的“工匠式”收留收藏,只能断舍离,拆解不过来的了。一天,忽然感觉室内有股臭味,用鼻子的嗅觉功能朝着臭味重的方向寻找,觉得应该就是这台组合音响?怎么会呢?这无机物的东西不会腐臭吧?
    自做自受 2024-12-10 16:34 136浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 68浏览
  • 【萤火工场CEM5826-M11测评】OLED显示雷达数据本文结合之前关于串口打印雷达监测数据的研究,进一步扩展至 OLED 屏幕显示。该项目整体分为两部分: 一、框架显示; 二、数据采集与填充显示。为了减小 MCU 负担,采用 局部刷新 的方案。1. 显示框架所需库函数 Wire.h 、Adafruit_GFX.h 、Adafruit_SSD1306.h . 代码#include #include #include #include "logo_128x64.h"#include "logo_
    无垠的广袤 2024-12-10 14:03 69浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦