涡喷发动机模型制作全过程

一、前言

本篇分享涡喷发动机模型的的制作过程,不涉及商用。

在继续优化瓦力机器人的过程中,在MakerWorld上看到linus3d分享的涡喷3D模型,于是我们复刻了一个,并在这个模型的基础上加上了驱动马达和和灯带模拟涡喷发动机模型转起来的效果。此外还额外设计了底座,这样模型放上去就能直接通电。

本篇提供 纯模型版动力版 的3D打印文件,并附上材料清单以及我们制作动力版的过程,具体模型组装视频中我们已经尽力讲清楚,如有不清楚的地方可联系我们。

二、工作原理

注:简单科普涡喷发动机的结构和大致工作原理,帮助大家理解整体结构。

涡喷发动机是一种涡轮发动机。特点是完全依赖燃气流产生推力。通常用作高速飞机的动力。油耗比涡轮扇发动机高。

涡喷发动机主要分为压缩区,燃烧室,涡轮,后燃器,四个部分组成。

更加细分的结构如下:

(以我们只做的模型为例)

三、关于3D模型

1.介绍

3D模型我们提供了两个版本,一个是加上电机、灯带、底座等硬件的让涡喷模型能动起来的 动力版本 ,我们做的就是动力版本;

一个是 纯模型版本 ,这个版本更适合不想加任何硬件只想组装模型,了解真实涡喷结构的伙伴。
一个是 动力版本 ,这个版本有加灯光和小电机,也就是我做的这个版本

2.3D图纸下载:

点击下载:涡喷图纸-纯模型
点击下载:涡喷图纸-动力版

注:图纸内模型都是单个,其中有部分3D零件需要多个,以下是需要打印多个的零件,请仔细核对零件名称。

打印数量5个

打印数量6个

打印数量6个

打印数量3个

纯模型版本的图纸除上面这些零件外,这个零件要打印11个。

底座支架

点击下载:底座

**

3.动力版本的整体实现思路**

1)在燃烧室和后燃器部分加上灯带达到发光效果。通过ardunio控制板,旋转可变电阻器控制led灯带明暗,按钮控制颜色切换。

2)通过小型有刷电机(驱动马达)驱动叶片旋转。

3)通过两对磁吸键进行供电以及灯带控制,两对磁吸键一对控制电机、一对控制灯带。

4)在原本静态的3D模型上进行了图纸修改,包括修改传动轴和外壳,增加灯带开槽、另外打印固定电机的3D模块、底座磁吸键开槽等。

5)设计支架底座的图纸。(底座除磁吸键孔位外,大家可根据需求调整)

四、材料清单和准备

1.结构组装部件

注:这部分的部件是组装整体的结构用的,因此无论是纯模型组装还是加入电机灯带的都需要使用这些零件。

1)螺丝

规格:M2.5x10,数量:80个

规格:M3 x 12, 数量:12个

2)螺母

规格:M2.5,数量:80个(不建议买自锁,因为有些地方可能会不好卡进去)

规格:M3 ,数量:12个(可以买自锁)

3)丝杆

规格:M3 x 30mm,数量:6个

建议这些螺丝螺母多准备至少15%~20%的量,以备不时之需。

注:以下截图数量是up买了3份的数量,不要照抄数量,仔细看产品规格。

4)轴承

规格:6204,数量2个

规格:6003 ,数量2个

规格:MR105ZZ,数量6个

MR105ZZ小轴承装在后燃器部分,以下是6204和6003这两个不同规格的大轴承安装的位置

5)鱼眼杆

规格:M3 ,数量:12个

6)胶带、双面胶或强力胶(按需准备)

双面胶用于粘连桨叶和轴,也可以使用强力胶

将led灯带引出的线用双面胶粘连固定在涡轮室的凹槽内,之后再用胶带加固。

2.电子部件

1)Arduino uno r3控制板*1个

用于实现灯带发光,灯光效果切换等。

可调电阻*1个

用于控制灯带亮度。

微动按键按钮*1

用于切换灯带颜色。

注:这个部分up没有具体购买链接,建议arduino控制板可以选用基础比较实惠,购买arduino时可以选购带可调电阻和微动按键按钮的套餐,一般都有配。

2)WS2812灯带

规格:5V2.5毫米宽-1.1米148灯*1根

在实际使用过程中建议把灯带裁剪成两段。

3)磁吸连接键*2对

规格:3pin磁吸连接器公母接头

吸上就能供电、传输信号,具体给灯带,马达供电,传输信号。

4)有刷电机/马达*1个

*马达调速器(电机驱动板)1个

注:配的电池可以测试使用,实际组装建议使用其他电池

5)电池2S*1个

规格不限,我们用的是2S,之后经由降压模块将电压降低至5V。

电池规格主要受限于降压模块的规格。

6)DC-DC降压模块*1个

降压模块需要给arduino、马达调速器(电机驱动板)供电。

视频里面up使用的是带有降压功能的电源模块,实际上大家可以直接使用简单的DC-DC降压模块,就不用像视频内焊接那么多地方。

选购的DC-DC降压模块注意可以将电压降至5V的就可以。

7)母头杜邦线*20根

(可以多准备一些,用来连接arduino控制板以及给支架上的磁吸线做延长,有些arduino控制板也会送)

8)舵机线*4根

(可以多准备一些)

9)跳线

(走线使用)

**

五、模型组装**

1.两个版本的模型组装均可参考这个视频(点击跳转参考)

2.动力制作过程可以参考我们的b站的涡喷制作视频(点击跳转)

3.这是我们选择3D打印的耗材,大家也可以发挥想象力打出你们喜欢的颜色。

六、电机、灯带操作注意事项

制作过程中会涉及到简单的电子元件焊接,建议先提前学习和练习。

1.电机/马达

1)这里电机和磁吸键不是直接相连的,我们用舵机线给电机和磁吸键做了一对接口,电机焊接到舵机线公口,磁吸键焊接到舵机线母口。

2)电机装在火焰稳定器和后燃器交接处,我们额外打印了两个零件固定电机

3)有刷电机的正负极焊接到舵机线上,注意正负极不要弄反。

4)截取舵机延长线的母头与磁吸连接器进行焊接,注意正负极要与有刷电机的正负极一致。

2.灯带

灯带需要剪掉原来的接口并且裁剪成两段。

原来带接口的那段,在灯珠末端焊接磁吸键,灯珠部分粘在燃烧室内壁模拟燃烧室火焰效果,线段部分用双面胶粘在涡轮区的线槽内,再用胶带覆盖贴实,这条线会穿过整个涡轮外壳;

另外一段灯带焊接上一条的线,最后用双面胶粘在“火焰稳定器”,如果还有多余的部分就裁剪掉。

操作时请注意:

1)剪掉不需要原厂接口,与磁吸连接器进行焊接,注意正负极和信号的位置,线序可以先和厂商确认。

2)中间截断灯带再进行焊接时需要注意不要焊接在原灯带的尾端,需要紧接着截断的位置焊接,不然会造成信号不导通,灯带不会亮。

3)灯带的线段穿过线槽时要用胶布压紧,避免后续叶片转动卡住。

七、ardunio代码

需先安装FastLED库

最终效果和控制方式:

长按微动按键会红色灰色蓝色和黄色之间跳动,短按会切换红色灰色蓝色和黄色之间颜色

ardunio代码如下:

#include <FastLED.h>

#define LED_PIN_1 3   // 第一条 LED 灯带
#define LED_PIN_2 2   // 第二条 LED 灯带
#define NUM_LEDS 144  // 每条灯带 144 颗 LED
#define POT_PIN A0          // 电位器连接 A0 端口
#define BUTTON_PIN 4        // 按钮连接 4 号引脚
#define DEBOUNCE_DELAY 50   // 防抖延迟(单位:毫秒)
#define LONG_PRESS_TIME 1000  // 长按 1 秒切换颜色

CRGB leds1[NUM_LEDS];  // 第一条灯带
CRGB leds2[NUM_LEDS];  // 第二条灯带

uint8_t currentColor = 0;   // 当前颜色索引
unsigned long lastDebounceTime = 0;  
unsigned long buttonPressTime = 0;
bool lastButtonState = HIGH;
bool buttonState = HIGH;
bool isLongPressing = false;  // 标记是否正在长按

void setup() {
    pinMode(BUTTON_PIN, INPUT_PULLUP);  // 按钮使用内部上拉电阻
    FastLED.addLeds<WS2812, LED_PIN_1, GRB>(leds1, NUM_LEDS);
    FastLED.addLeds<WS2812, LED_PIN_2, GRB>(leds2, NUM_LEDS);
    Serial.begin(9600);  // 开启串口调试
}

void loop() {
    // 读取电位器值(0 ~ 1023),映射到亮度(1 ~ 255)
    int potValue = analogRead(POT_PIN);
    int brightness = map(potValue, 0, 1023, 1, 255);
    
    // 读取按钮状态(防抖处理)
    bool reading = digitalRead(BUTTON_PIN);
    
    if (reading != lastButtonState) {
        lastDebounceTime = millis();
    }
    
    if ((millis() - lastDebounceTime) > DEBOUNCE_DELAY) {
        if (reading != buttonState) {
            buttonState = reading;
            if (buttonState == LOW) {  // 按钮被按下
                buttonPressTime = millis();  // 记录按下的时间
                isLongPressing = false;
            } else {  // 按钮松开
                if (!isLongPressing) {  
                    currentColor = (currentColor + 1) % 4;  // 短按切换颜色
                }
            }
        }
    }

    // 长按检测(超过 1 秒)
    if (buttonState == LOW && millis() - buttonPressTime > LONG_PRESS_TIME) {
        if (!isLongPressing) {
            isLongPressing = true;  // 进入长按模式
        }
        
        // 让颜色循环切换
        currentColor = (currentColor + 1) % 4;
        setAllLEDs(currentColor, brightness);
        FastLED.show();
        delay(200); // 每 0.2 秒切换一次颜色(可调节)
    }

    lastButtonState = reading;

    // 更新 LED 颜色
    setAllLEDs(currentColor, brightness);
    FastLED.show();  
    delay(10);
}

// 设置所有 LED 颜色
void setAllLEDs(uint8_t colorIndex, uint8_t brightness) {
    CRGB color;
    switch (colorIndex) {
        case 0: color = CRGB(brightness, 0, 0); break;   // 红色
        case 1: color = CRGB(0, 0, brightness); break;   // 蓝色
        case 2: color = CRGB(brightness, brightness, brightness); break; // 灰色
        case 3: color = CRGB(brightness, brightness, 0); break; // 黄色
    }

    // 遍历所有 LED
    for (int i = 0; i < NUM_LEDS; i++) {
        leds1[i] = color; // 第一条 LED 灯带
        leds2[i] = color; // 第二条 LED 灯带
    }

    FastLED.show();  // 更新 LED 颜色
}