任务名称
2013年_C题:简易旋转倒立摆及控制装置
任务要求
难度

一、任务

设计并制作一套简易旋转倒立摆及其控制装置。旋转倒立摆的结构如图 1 所示。电动机 A 固定在支架 B 上,通过转轴 F 驱动旋转臂 C 旋转。摆杆 E 通过转轴 D 固定在旋转臂 C 的一端,当旋转臂 C 在电动机 A 驱动下作往复旋转运动时,带动摆杆 E 在垂直于旋转臂 C 的平面作自由旋转。

 

二、要求

1.基本要求
(1)摆杆从处于自然下垂状态(摆角 0°)开始,驱动电机带动旋转臂作往复旋转使摆杆摆动,并尽快使摆角达到或超过-60°~ +60°;
(2)从摆杆处于自然下垂状态开始,尽快增大摆杆的摆动幅度,直至完成圆周运动;
(3)在摆杆处于自然下垂状态下,外力拉起摆杆至接近 165°位置,外力撤除同时,启动控制旋转臂使摆杆保持倒立状态时间不少于 5s;期间旋转臂的转动角度不大于 90°。 

2.发挥部分
(1)从摆杆处于自然下垂状态开始,控制旋转臂作往复旋转运动,尽快使摆杆摆起倒立,保持倒立状态时间不少于 10s;
(2)在摆杆保持倒立状态下,施加干扰后摆杆能继续保持倒立或 2s 内恢复倒立状态;
(3)在摆杆保持倒立状态的前提下,旋转臂作圆周运动,并尽快使单方向转过角度达到或超过 360°;
(4)其他。 

三、说明

1.旋转倒立摆机械部分必须自制,结构要求如下:硬质摆杆 E 通过转轴 D 连接在旋转臂 C 边缘,且距旋转臂 C 轴心距离为 20cm±5cm;摆杆的横截面为圆形或正方形,直径或边长不超过 1cm,长度在 15cm±5cm 范围内;允许使用传感器检测摆杆的状态,但不得影响摆杆的转动灵活性;图 1 中支架 B 的形状仅作参考,其余未作规定的可自行设计结构;电动机自行选型。
2.摆杆要能够在垂直平面灵活旋转,检验方法如下:将摆杆拉起至水平位置后松开,摆杆至少能够自由摆动 3 个来回。
3.除电动机 A 之外,装置中不得有其他动力部件。
4.摆杆自然下垂状态是指摆角为0°位置,见图 2。


5.摆杆倒立状态是指摆杆在-165°至 165°范围内。
6.基本要求(1)、(2)中,超过 30s视为失败;发挥部分(1)超过 90s视为失败;发挥部分(3)超过 3分钟即视为失败;以上各项,完成时间越短越好。
7.摆杆倒立时施加干扰的方法是,以 15cm 长细绳栓一只 5 克砝码,在摆杆上方将砝码拉起 15°~45°,释放后用砝码沿摆杆摆动的切线方向撞击摆杆上端 1~2cm 处;以抗扰动能力强弱判定成绩。
8.测试时,将在摆杆后 1~2cm 处固定一如图 2 所示轻质量角器,以方便观察摆杆的旋转角度。

评审标准

参考答案

GPT-4o给出的设计方案:


一、设计方案

本题的任务是设计并制作一套自动旋转倒立摆控制装置。该装置通过电动机A驱动旋转臂B和连接杆E,实现摆杆F的平衡控制与自由旋转。以下是详细的设计方案:

二、方案论证

  1. 倒立摆系统设计

    • 采用单电机驱动系统,通过旋转臂B带动转轴D以及连接杆E。
    • 使用编码器检测旋转臂B的角度位置信息,保证装置的旋转角度准确控制。
  2. 控制系统

    • 使用PID控制器对倒立摆进行实时控制,确保摆杆能够在指定角度范围内保持平衡。
    • 输入为旋转臂的角度传感器数据,控制输出为电动机A的PWM信号。
  3. 机械结构设计

    • 旋转臂B和连接杆E需选择高强度轻材料,如铝合金,确保机械结构的稳定性和响应速度。

三、重要指标的理论分析

  1. 响应时间

    • 从自由不稳定状态(垂直位置,0°)启动到达到稳定状态(±60°以内)的响应时间应不大于5秒。
    • PID控制器的调节参数需根据系统的响应特性进行调优。
  2. 转动稳定性

    • 当摆杆在±60°范围内旋转时保持平衡状态,系统需保证摆杆振荡幅度最小化和快速回到目标位置。
  3. 旋转范围

    • 摆杆能够自由旋转360°,机械结构设计需避免干涉并确保旋转的顺畅性。

四、电路原理图设计要点

  1. 主控制单元

    • 使用高性能MCU(如STM32系列),具备足够的I/O口和计算能力进行实时控制。
  2. 传感器接口

    • 连接角度传感器(如旋转编码器或霍尔传感器),获取旋转臂的位置信息。
    • 使用ADC读取摆杆角度传感器数据。
  3. 电机驱动电路

    • 选用H桥电机驱动芯片(如L298N),控制电动机A实现正反转和PWM调速。
    • 加入滤波电路,防止对MCU产生电磁干扰。

五、核心器件设计要点

  1. STM32 MCU

    • 足够的处理速度和外设接口(ADC、PWM、I2C、SPI等),稳定运行实时控制算法。
  2. 角度传感器

    • 高精度旋转编码器,测速与角度检测进行PID闭环控制。
  3. H桥驱动芯片

    • L298N或类似的高效电机驱动模块,提供足够的电流和电压以控制电动机A。

重要功能的C代码

  • MCU控制倒立摆平衡
#include "stm32f4xx.h"

#define TARGET_ANGLE 0 // 0度为平衡目标
#define MAX_PWM 1000   // PWM最大值
#define KP 2.0         // 比例系数
#define KI 1.0         // 积分系数
#define KD 0.5         // 微分系数

volatile int16_t current_angle = 0;

// PID控制变量
volatile float integral = 0;
volatile float previous_error = 0;

void init_system() {
    // 初始化代码
    // 初始化传感器,电机驱动,串口等
}

int16_t read_angle() {
    // 读取角度传感器的数据
    // 假设用ADC读取模拟量然后转换为角度
}

void set_motor_pwm(int16_t pwm_value) {
    // 设置电机PWM值
    // 根据需要选择正反转控制
}

void update_control() {
    float error = TARGET_ANGLE - current_angle;
    integral += error;
    float derivative = error - previous_error;
    float output = KP * error + KI * integral + KD * derivative;
    previous_error = error;

    int16_t pwm_value = (int16_t)(output);

    if (pwm_value > MAX_PWM) pwm_value = MAX_PWM;
    if (pwm_value < -MAX_PWM) pwm_value = -MAX_PWM;

    set_motor_pwm(pwm_value);
}

void main() {
    init_system();
    while (1) {
        current_angle = read_angle();
        update_control();
    }
}

FPGA控制倒立摆平衡,假设FPGA用于实现倒立摆控制任务,以下是简化的Verilog代码示例:

module pid_controller(
    input wire clk,
    input wire rst_n,
    input wire [15:0] current_angle,
    output reg [15:0] motor_pwm
);

parameter TARGET_ANGLE = 16'd0;
parameter MAX_PWM = 16'd1000;
parameter KP = 16'd2;
parameter KI = 16'd1;
parameter KD = 16'd0.5;

reg signed [15:0] error, previous_error;
reg signed [31:0] integral;
reg signed [15:0] derivative;
reg signed [31:0] output;

always @(posedge clk or negedge rst_n) begin
    if (!rst_n) begin
        error <= 16'd0;
        previous_error <= 16'd0;
        integral <= 32'd0;
        output <= 32'd0;
    end else begin
        error <= TARGET_ANGLE - current_angle;
        integral <= integral + error;
        derivative <= error - previous_error;
        output <= KP * error + KI * integral + KD * derivative;
        previous_error <= error;
        
        if (output > MAX_PWM) motor_pwm <= MAX_PWM;
        else if (output < -MAX_PWM) motor_pwm <= -MAX_PWM;
        else motor_pwm <= output;
    end
end

endmodule

 


 

本题考察的知识点

  • 逆向摆和姿态控制系统的设计与实现。
  • PID控制算法的应用与实现。
  • 传感器数据采集(角度传感器)的实时处理。
  • 电机驱动电路设计与PWM控制。
  • MCU或FPGA的实时控制程序开发。
  •  
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号