任务名称
2011年_F题:帆板控制系统【高职高专组】
任务要求
难度

一、任务
 设计并制作一个帆板控制系统,通过对风扇转速的控制,调节风力大小,改变帆板转角θ,如图 1 所示。

二、要求
1、基本要求
(1)用手转动帆板时,能够数字显示帆板的转角θ。显示范围为 0~60°,分辨力为 2°,绝对误差≤5°。
(2)当间距 d=10cm 时,通过操作键盘控制风力大小,使帆板转角θ能够在 0~60°范围内变化,并要求实时显示θ。
(3)当间距 d=10cm 时,通过操作键盘控制风力大小,使帆板转角θ稳定 45°±5°范围内。要求控制过程在 10 秒内完成,实时显示θ,并由声光提示,以便进行测试。
2、发挥部分
(1) 当间距 d=10cm 时,通过键盘设定帆板转角,其范围为 0~60°。要求θ在 5 秒内达到设定值,并实时显示θ。最大误差的绝对值不超过5°。
(2) 间距 d 在 7~15cm 范围内任意选择,通过键盘设定帆板转角,范围为0~60°。要求θ在 5 秒内达到设定值,并实时显示θ。最大误差的绝对值不超过 5°。
(3) 其他。
三、说明
(1) 调速装置自制。
(2) 风扇选用台式计算机散热风扇或其他形式的直流供电轴流风扇,但不能选用带有自动调速功能的风扇。
(3) 帆板的材料和厚度自定,固定轴应足够灵活,不阻碍帆板运动。帆板形式及具体制作尺寸如图 2 所示。

评审标准

 

参考答案

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


一、总体设计

设计一个帆板控制系统,通过对风扇转速的控制来调节帆板的转角。系统包含以下模块:

  1. 转速控制模块:通过调节风扇的转速来控制风力。
  2. 角度传感器:检测帆板的转角。
  3. 控制器:处理角度反馈并控制风扇转速,以达到预期的帆板角度。
  4. 用户界面:包括键盘和数字显示,用于设定角度和显示当前角度。

二、简单论证

风扇转速影响风力大小,从而影响帆板的转动角度。通过角度传感器反馈实际角度,控制器根据当前角度与目标角度的偏差调整风扇转速,以实现闭环控制,最终稳定在设定角度。

三、重要指标的理论分析

  1. 分辨力:角度分辨力为2°,能够在0~60°范围内准确测量,并显示在数字界面上。
  2. 响应时间:系统应该能在5秒内将帆板调整至设定角度,并稳定在该角度范围内,调整精度在±5°以内。
  3. 稳态误差:帆板角度稳态误差不超过设定值的±5°。

四、电路原理图设计要点

  1. 转速控制电路:

    • 使用PID控制算法,通过PWM信号调节风扇的转速。
    • OPAMP用来放大信号,将MCU产生的PWM信号转换为用于控制风扇的信号,增强驱动能力。
  2. 角度检测电路:

    • 使用角度传感器(如霍尔传感器或旋转编码器),将帆板角度转换为电信号输入MCU。
  3. 显示和输入接口:

    • 7段数码管显示或LCD显示当前帆板角度。
    • 键盘输入设定角度。

五、核心器件设计要点

  1. MCU(如STM32系列):

    • 使用MCU的ADC接口读取角度传感器数据,利用其PWM输出控制风扇转速。
    • 核心功能包括数据采集、PID运算及控制信号输出。
    • 提供人机交互接口用于设定目标角度和显示当前角度。
  2. 角度传感器(如霍尔传感器或旋转编码器):

    • 提供高分辨率角度测量,适用于0~60°范围内的测量,传感器精度满足要求。

六、MCU主要功能代码

以下是实现帆板角度控制的C语言代码实例(使用STM32)

#include "stm32f4xx.h"
#include "stdio.h"

// 定义全局变量和宏
#define TARGET_ANGLE 45  // 目标角度
#define KP 2.0  // 比例系数
#define KI 1.0  // 积分系数
#define KD 0.5  // 微分系数

void SystemClock_Config(void);
void GPIO_Config(void);
void PWM_Config(void);
void ADC_Config(void);
void display_angle(uint16_t angle);
uint16_t read_angle(void);

// PID控制相关变量
float error = 0, integral = 0, derivative = 0, last_error = 0;
float pid_output = 0;

// 主函数
int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Config();
    PWM_Config();
    ADC_Config();
    
    while (1) {
        uint16_t current_angle = read_angle();
        display_angle(current_angle);
        
        // PID计算
        error = TARGET_ANGLE - current_angle;
        integral += error;
        derivative = error - last_error;
        pid_output = KP * error + KI * integral + KD * derivative;
        last_error = error;
        
        // 调节风扇转速
        __HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_1, pid_output);
        
        HAL_Delay(200);
    }
}

// 系统时钟配置
void SystemClock_Config(void) {
    // 时钟配置代码
}

// GPIO配置
void GPIO_Config(void) {
    // GPIO端口配置代码
}

// PWM配置
void PWM_Config(void) {
    // PWM配置代码
}

// ADC配置
void ADC_Config(void) {
    // ADC配置代码
}

// 读取角度传感器数据
uint16_t read_angle(void) {
    // 读取角度传感器的ADC值并转换为角度值
    uint16_t adc_val = HAL_ADC_GetValue(&hadc1);
    uint16_t angle = (adc_val * 60) / 4096; // 假设ADC满量程值为4096,对应最大测量角度60度
    return angle;
}

// 显示角度
void display_angle(uint16_t angle) {
    // 显示角度值的代码,例如通过LCD或数码管显示
}

通过上述设计及代码实现,帆板系统能够实时调节帆板角度,满足多个角度设定和实时测量的要求,并具有较高精度和响应速度。


本题考察的主要知识点:

  1. 传感器与信号处理:涉及角度传感器的角度测量、信号采集、滤波及处理。
  2. 控制系统设计:包括PID控制算法,用于实时调节风扇转速控制帆板角度。
  3. 硬件接口与通信:涉及MCU与传感器、执行器的接口设计,ADC采样及PWM信号输出。
  4. 用户界面设计:包括数字显示屏的使用、人机交互接口(如键盘输入)。
  5. 反馈系统设计:处理反馈信号,确保系统按预设目标运行,响应时间和精度控制。
  6. 电源与功率管理:保证系统在正常工作范围内的功耗控制和电源管理。
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号