DIY 3D打印机——【有啥用啥版】

news2025/2/25 9:24:51

3D打印已经非常普及,手搓3D打印机的也很普遍了,不幸的是多年前买的三角洲(delta型)打印机年前罢工了,幸好它完成了一项重要使命:让手搓的铣床动起来,从而能够让铣床把受力部分的PLA零件自己加工电木板进行替换,所以有一台三轴铣床可以用来加工一些零件。即便如此,由于是从立方体框架式铣床的设计改为龙门式加之各种设计和材料的缺陷也导致了它们都各自存在明显问题,厚脸皮的讲这也符合了DIY的最初用意吧。所以,现在它们长这样:

和这样:

铝板和PEI板还没到货,所以热床部分还没完善。上图一个TMC2208拿下来实验一种15毫米步进电机的驱动了,暂时用了8825。上面的各种零件一部分来自于原来的铣床,一部分来自于原来的3D打印机(双Z、X轴是原来3D打印机的导轨),至于原来的3D打印机铝材框架嘛正在养吊兰。

开始进入正题,通过不断摸挲,也算和Marlin知根知底了。这篇介绍Marlin2.1固件+RAMPS1.4扩展板(包括MAGE2560、显示屏都是原来3D打印机上的)来实现双Z轴(分别用两个限位和两个驱动),带自动调平(舵机版)、热床(使用板载MOSFET)。

一、Marlin2.1.x编译、上传:

使用VS CODE,点左侧M图标上面的扩展管理按钮,安装Auto build marlin插件(会自动安装platformio ide for vs code),选择Marlin2.1.x所在文件夹,点击Show ABM Panel就会出现右侧界面,绑定、上传即可。

二、RAMPS1.4都连了哪些端口

下图来源于https://reprap.org/wiki/RAMPS_1.4/zh_cn,有需要可以参考一下。

  1. 挤出机加热棒,这个没什么好说的,无正负连接即可。

  1. 喉管散热风扇,这个会在加热时开始工作。该位置还应连接出料冷却风扇,即挤出之后的料进行降温使之快速定型的风扇,和喉管散热风扇作用不同,喉管散热风扇用于给喉管降温,使得从挤出机加热棒传递过来的热量不至于过多导致喉管内的线材被过度加热而软化导致堵头。

  1. 热床,原来的热床是圆形的面积小但功率过大(RAMPS1.4的MOSFET接两块PTC刚好不烫手),所以买了一块300*300的铝板和310*310的PEI,用的12V 110℃ PTC发热片,安装之后会用泡沫或者海绵做隔热,这样两块PTC应该够用。

  1. 一块12V30A开关电源,所以无脑把两个输入并联。

  1. 5块TMC2208,按对应引脚插入5个插槽,其中E1被用作Z2步进电机。

  1. 最下面的舵机按引脚连接舵机,我的舵机好像只能0-150°,实际测试0°是打开,145°斜向收起正好。需要注意的是舵机左边的按键开关左侧有3个针脚,你需要把上面两个(5V和VCC)用跳线帽连接以便给舵机供电。

  1. X\Y\Z最大限位,因为在Marlin中可以限制X,Y,Z轴运动长度,所以只需要3个限位就可以了,我使用的最大限位,所以X_MAX,Y_MAX,Z_MAX还是原来的功能。

  1. Z_MIN限位被连接在自动调平的限位开关上,代码改动比较少。

  1. X_MIN限位被用作Z2的限位开关。

  1. 挤出机热敏电阻连接在T0,热床热敏电阻连接到T1。

关于为什么用两个Z轴驱动而不是用Z驱动芯片旁边的两个Z连接口:

  1. 两个Z连接口是可以连两个电机的,并且这两个电机运动同步性非常棒。

  1. 但是,如果由于外界扰动,导致它们无法使得X方向上左右高度相同就很麻烦。改为双驱动就使得每个Z轴都是独立运动的,进而使用双Z_MAX限位配合调节螺丝就可以在每次归零(实际上走向最大位置)时Z轴被顺便重新调平。这比使用自动调平功能更便捷也更高效。

三、Marlin2.1.x配置

首先声明,不提供人工智能百度功能,即关于配置的问题请不要提问,修改的部分我记得的都会说明,并且把configuration.h,configuration_adv.h,pins_ramps.h附在最后。既然选择手搓,就应该有一定的综合知识和动手动脑解决问题的能力。原版Marlin请自行在github下载。

  1. configuration.h中修改的部分(按代码行顺序):

  1. 定义扩展版类型:

#define MOTHERBOARD BOARD_RAMPS_14_EFB    //表示板载MOSFET用作挤出机加热棒、风扇、热床
  1. 步进电机驱动类型:

#define X_DRIVER_TYPE  TMC2208_STANDALONE    //启用X电机,其驱动模块为TMC2208
#define Y_DRIVER_TYPE  TMC2208_STANDALONE    //启用Y电机,STANDALONE表示独立驱动避免使用DIR/STP驱
#define Z_DRIVER_TYPE  TMC2208_STANDALONE    //启用Z电机,动模式提示TMC CONNECT ERROR错误
//#define X2_DRIVER_TYPE A4988
//#define Y2_DRIVER_TYPE A4988
#define Z2_DRIVER_TYPE TMC2208_STANDALONE    //启用Z2电机
//#define Z3_DRIVER_TYPE A4988
//#define Z4_DRIVER_TYPE A4988
//#define I_DRIVER_TYPE  A4988
//#define J_DRIVER_TYPE  A4988
//#define K_DRIVER_TYPE  A4988
//#define U_DRIVER_TYPE  A4988
//#define V_DRIVER_TYPE  A4988
//#define W_DRIVER_TYPE  A4988
#define E0_DRIVER_TYPE DRV8825                //启用挤出机电机
//#define E1_DRIVER_TYPE A4988
//#define E2_DRIVER_TYPE A4988
//#define E3_DRIVER_TYPE A4988
//#define E4_DRIVER_TYPE A4988
//#define E5_DRIVER_TYPE A4988
//#define E6_DRIVER_TYPE A4988
//#define E7_DRIVER_TYPE A4988
  1. 开启挤出机和热床温度传感器

#define TEMP_SENSOR_0 1        //开启挤出机温度传感器。默认1一般都没问题
#define TEMP_SENSOR_1 0
#define TEMP_SENSOR_2 0
#define TEMP_SENSOR_3 0
#define TEMP_SENSOR_4 0
#define TEMP_SENSOR_5 0
#define TEMP_SENSOR_6 0
#define TEMP_SENSOR_7 0
#define TEMP_SENSOR_BED 1    //热床温度传感器,设置类型准确你的传感器就准么?简易的电阻式温度传感器误差大
#define TEMP_SENSOR_PROBE 0
#define TEMP_SENSOR_CHAMBER 0
#define TEMP_SENSOR_COOLER 0
#define TEMP_SENSOR_BOARD 0
#define TEMP_SENSOR_REDUNDANT 0
  1. 启用PIC温度控制

#define PIDTEMP          // See the PID Tuning Guide at https://reprap.org/wiki/PID_Tuning
//#define MPCTEMP        // ** EXPERIMENTAL **

#define BANG_MAX 255     // Limits current to nozzle while in bang-bang mode; 255=full current
#define PID_MAX BANG_MAX // Limits current to nozzle while PID is active (see PID_FUNCTIONAL_RANGE below); 255=full current
#define PID_K1 0.95      // 调大这个P系数可以更快升温——如果你的加热棒够棒,BANGBANG那些是超出最大值之后的值,即PID(看这里只有P)控制的PWM计算结果超出255后
  1. 启用限位开关

#define USE_XMIN_PLUG    //用于Z2限位
//#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG    //用于自动调平限位开关
//#define USE_IMIN_PLUG
//#define USE_JMIN_PLUG
//#define USE_KMIN_PLUG
//#define USE_UMIN_PLUG
//#define USE_VMIN_PLUG
//#define USE_WMIN_PLUG
#define USE_XMAX_PLUG    //最大限位3个
#define USE_YMAX_PLUG
#define USE_ZMAX_PLUG
//#define USE_IMAX_PLUG
//#define USE_JMAX_PLUG
//#define USE_KMAX_PLUG
//#define USE_UMAX_PLUG
//#define USE_VMAX_PLUG
//#define USE_WMAX_PLUG
  1. 限位信号模式

#define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define I_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define J_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define K_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define U_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define V_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define W_MIN_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop.
#define I_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define J_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define K_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define U_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define V_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define W_MAX_ENDSTOP_INVERTING false // Set to true to invert the logic of the endstop.
#define Z_MIN_PROBE_ENDSTOP_INVERTING true // Set to true to invert the logic of the probe.
//这些设置取决于你连接的传感器种类、接线方法等,如果是光电传感器(连3个引脚要连对)就看其说明书确定输出
//我使用的机械限位,这取决于连接COM和NC还是COM和NO,NO代表常开,NC代表常关,我连接的NO避免电路一直连通,所以对用到的引脚都进行取反。
//需要注意的是,你需要保证最后一行 Z_MIN_PROBE_ENDSTOP_INVERTING (Z轴探针)的设置值与Z_MIN相同。
  1. 电机速度和最大速度

#define DEFAULT_AXIS_STEPS_PER_UNIT   { 80, 80, 800, 166.67 }
//这个地方就是分别代表X,Y,Z,E的速度,不要因为你设置了两个Z就感觉:哦,我Z有俩速度!大聪明噢
//值填的都是steps/mm即多少个控制信号走1毫米:
//1、先算多少脉冲一圈:360/1.8*16=3200,即一圈360度、步距角1.8、16细分,所以3200个脉冲一圈
//2、查看一圈多少毫米:查看,不是计算,也不是测量,走一圈同步带直线距离走多少=齿数*2,我的20齿所以走40mm
//3200/40即可。
//对于挤出机,这玩意受到结构和线材等各种因素影响,呵呵了就,咋能计算准呢,我就是拿个游标卡尺(还是塑料的)让它转一圈看看咬了多少个牙印……后边看打印效果再调

/**
 * Default Max Feed Rate (linear=mm/s, rotational=°/s)
 * Override with M203
 *                                      X, Y, Z [, I [, J [, K...]]], E0 [, E1[, E2...]]
 */
#define DEFAULT_MAX_FEEDRATE          { 800, 800, 200, 600 }
//一般3D打印机上用的这些都是42步进,好点无负载时不丢步RPM也就在500上,按240算,就是4圈/秒咯。
//加上负载,惯量也变大,所以设置太大也没啥好处。
#define DEFAULT_MAX_ACCELERATION      { 3000, 3000, 1000, 3000 }
//这个也是看步进性能、噪音等方面,上限就是不丢步。
  1. Z探针

/**
 * Z Servo Probe, such as an endstop switch on a rotating arm.
 */
#define Z_PROBE_SERVO_NR 0       // 启动0号舵机:对应SERVO 1插口(最左边的那个)
#define Z_SERVO_ANGLES { 0, 145 } //放下和收起时舵机的角度
//测试时使用M280命令:M280 P0 SX 表示了让舵机1转动到X角度。
 *     +-- BACK ---+
 *     |    [+]    |
 *   L |        1  | R <-- Example "1" (right+,  back+)
 *   E |  2        | I <-- Example "2" ( left-,  back+)
 *   F |[-]  N  [+]| G <-- Nozzle
 *   T |       3   | H <-- Example "3" (right+, front-)
 *     | 4         | T <-- Example "4" ( left-, front-)
 *     |    [-]    |
 *     O-- FRONT --+
 */
#define NOZZLE_TO_PROBE_OFFSET { 30, 30, -15 }    //舵机相对于喷嘴的相对距离,正负自己看上图
  1. 电机方向设置

// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR true
#define INVERT_Y_DIR true
#define INVERT_Z_DIR false
//#define INVERT_I_DIR false
//#define INVERT_J_DIR false
//#define INVERT_K_DIR false
//#define INVERT_U_DIR false
//#define INVERT_V_DIR false
//#define INVERT_W_DIR false

// @section extruder

// For direct drive extruder v9 set to true, for geared extruder set to false.
#define INVERT_E0_DIR true
#define INVERT_E1_DIR false
#define INVERT_E2_DIR false
#define INVERT_E3_DIR false
#define INVERT_E4_DIR false
#define INVERT_E5_DIR false
#define INVERT_E6_DIR false
#define INVERT_E7_DIR false
//按你实际情况设置就可以了,我是插电路的时候按黑线在左插的。这个地方把插的线翻转和软件设置都能达到相同效果。
  1. 归零方向设定

#define X_HOME_DIR 1    //归零时走向最大位置
#define Y_HOME_DIR 1
#define Z_HOME_DIR 1
//#define I_HOME_DIR -1
//#define J_HOME_DIR -1
//#define K_HOME_DIR -1
//#define U_HOME_DIR -1
//#define V_HOME_DIR -1
//#define W_HOME_DIR -1
  1. 热床大小设置

#define X_BED_SIZE 300    //就是喷嘴能到达的最远距离
#define Y_BED_SIZE 300    //对于热床跟着Y轴走的,如果热床不被两端的东西挡住,可以用滑块计算
// Travel limits (linear=mm, rotational=°) after homing, corresponding to endstop positions.
#define X_MIN_POS 0        //软限位,从M_MAX位置(归零后的最大位置)走X_BED_SIZE-X_MIN_POS就不会再走了
#define Y_MIN_POS 0        //软限位
#define Z_MIN_POS 0        //软限位
#define X_MAX_POS X_BED_SIZE
#define Y_MAX_POS Y_BED_SIZE
#define Z_MAX_POS 250
  1. 开启EEPROM以便保存自动调平数据

#define EEPROM_SETTINGS     // Persistent storage with M500 and M501
//这个地方需要注意一下,可能即使你开启了这个功能,也会提示EEPROM版本错误是否格式化之类的,即使按提示操作了,也无效- -!!!
//此时,打开一个串口调试器(啥的都行)依次发送M502、M500即可解决。注意:设置你的串口调调试器发送时带有换行回车
  1. 预热设置

//
// Preheat Constants - Up to 10 are supported without changes
//
#define PREHEAT_1_LABEL       "PLA"
#define PREHEAT_1_TEMP_HOTEND 180
#define PREHEAT_1_TEMP_BED     60    //热床温度不要太高,PEI会退磁。不要迷信任何人说的数据,自己的打印机打完不翘边就行了。
#define PREHEAT_1_TEMP_CHAMBER 35
#define PREHEAT_1_FAN_SPEED    255 // Value from 0 to 255:注意把这个地方设置为255,预热时喉管风扇才会转起来。

#define PREHEAT_2_LABEL       "ABS"
#define PREHEAT_2_TEMP_HOTEND 240
#define PREHEAT_2_TEMP_BED    80
#define PREHEAT_2_TEMP_CHAMBER 35
#define PREHEAT_2_FAN_SPEED   255 // Value from 0 to 255
  1. LCD设置

#define LCD_LANGUAGE en    //原来的3D打印机的屏不支持,就用这个吧
然后注释掉它默认的LCD屏,选择你现在用的屏
  1. 设置舵机个数

#define NUM_SERVOS 1 // Note: Servo index starts with 0 for M280-M282 commands
  1. configuration_adv.h中修改的部分(按代码行顺序):

#ifdef Z2_DRIVER_TYPE
  //#define INVERT_Z2_VS_Z_DIR        // Z2 direction signal is the opposite of Z

  #define Z_MULTI_ENDSTOPS          // Other Z axes have their own endstops
  #if ENABLED(Z_MULTI_ENDSTOPS)
    #define Z2_USE_ENDSTOP   _XMIN_   // 这里,我使用X_MIN作为Z2最大限位,所以设置为_XMIN_
    #define Z2_ENDSTOP_ADJUSTMENT 0   // Z2 offset relative to Y endstop
  #endif
  #ifdef Z3_DRIVER_TYPE
    //#define INVERT_Z3_VS_Z_DIR      // Z3 direction signal is the opposite of Z
    #if ENABLED(Z_MULTI_ENDSTOPS)
      #define Z3_USE_ENDSTOP   _YMAX_ // Z3 endstop board plug. Don't forget to enable USE_*_PLUG.
      #define Z3_ENDSTOP_ADJUSTMENT 0 // Z3 offset relative to Y endstop
    #endif
  #endif
  #ifdef Z4_DRIVER_TYPE
    //#define INVERT_Z4_VS_Z_DIR      // Z4 direction signal is the opposite of Z
    #if ENABLED(Z_MULTI_ENDSTOPS)
      #define Z4_USE_ENDSTOP   _ZMAX_ // Z4 endstop board plug. Don't forget to enable USE_*_PLUG.
      #define Z4_ENDSTOP_ADJUSTMENT 0 // Z4 offset relative to Y endstop
    #endif
  #endif
#endif
  1. pins_RAMPS.h设置:

#ifndef E1_STEP_PIN
  #define E1_STEP_PIN                         36
#endif
#ifndef E1_DIR_PIN
  #define E1_DIR_PIN                          34
#endif
#ifndef E1_ENABLE_PIN
  #define E1_ENABLE_PIN                       30
#endif
#ifndef E1_CS_PIN
  #define E1_CS_PIN                           44
#endif
//因为吧E1的电机用作Z2,所以这里需要给Z2电机引脚进行定义,
//没啥好修改的,硬件上就是那么焊接的,咱只照葫芦画瓢给出Z2的定义即可。
//复制还是在源代码上修改都可以,没影响。
#ifndef Z2_STEP_PIN
#define Z2_STEP_PIN                         36
#endif
#ifndef Z2_DIR_PIN
#define Z2_DIR_PIN                          34
#endif
#ifndef Z2_ENABLE_PIN
#define Z2_ENABLE_PIN                       30
#endif
#ifndef Z2_CS_PIN
#define Z2_CS_PIN                           44
#endif

其实Mage2560的端口资源非常丰富,即使被SD+液晶屏用去了很多,RAMPS1.4还有很多预留端口,例如该文件中定义的AUX1-4端口,这些PIN都可以被我们挪作他用,例如在configuration_adv.h中,可以启用自动风扇:

#define E0_AUTO_FAN_PIN -1
#define E1_AUTO_FAN_PIN -1
#define E2_AUTO_FAN_PIN -1
#define E3_AUTO_FAN_PIN -1
#define E4_AUTO_FAN_PIN -1
#define E5_AUTO_FAN_PIN -1
#define E6_AUTO_FAN_PIN -1
#define E7_AUTO_FAN_PIN -1
#define CHAMBER_AUTO_FAN_PIN -1
#define COOLER_AUTO_FAN_PIN -1

#define EXTRUDER_AUTO_FAN_TEMPERATURE 50
#define EXTRUDER_AUTO_FAN_SPEED 255   // 255 == full speed
#define CHAMBER_AUTO_FAN_TEMPERATURE 30
#define CHAMBER_AUTO_FAN_SPEED 255
#define COOLER_AUTO_FAN_TEMPERATURE 18
#define COOLER_AUTO_FAN_SPEED 255

当给其中某个-1指定为某引脚(最好使用pins_RAMPS.h中的预定义名称,以免后续使用产生冲突),则可以实现Marlin预设的降温功能。例如define E0_AUTO_FAN_PIN 设置为AUX1_05_PIN当挤出机温度超过EXTRUDER_AUTO_FAN_TEMPERATURE时,以EXTRUDER_AUTO_FAN_SPEED指定的PWM来输出一个信号,可以把AUX1_05_PIN和一个GND引脚(AUX1_03,AUX1_04...)连接到外置MOS管模块的信号端,并把MOS管模块的输入接到12V输入上,输出接到风扇上以给挤出机添加自动风扇功能。

//
// AUX1    5V  GND D2  D1
//          2   4   6   8
//          1   3   5   7
//         5V  GND A3  A4
//
#define AUX1_05_PIN                           57  // (A3)
#define AUX1_06_PIN                            2
#define AUX1_07_PIN                           58  // (A4)
#define AUX1_08_PIN                            1

总之愿意捣鼓总有办法实现别人的3D打印机有的功能,希望大家捯饬的时候也不烧板子、不气冒烟嗷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高频卡顿问题分析

从监控图中可以看到&#xff0c;3.76k的用户&#xff0c;两分钟内报卡顿次数达到100万次 &#xff0c;很恐怖&#xff0c;这个是非正常的卡顿 由于没有日志&#xff0c;只能先看代码分析&#xff0c;出现高频卡顿的原因 问题描述 在播放过程&#xff0c;会频繁上报卡顿&…

Redis详解(二)

文章目录Redis的单线程模型Redis数据过期删除策略内存淘汰机制手写LRU持久化快照持久化(RDB)RDB优缺点AOF持久化AOF优缺点RDB和AOF的选择注意事项Redis修改配置后未生效(windows)Redis的单线程模型 Redis基于Reactor模式来设计开发了自己的一套高效的时间处理模型。 Redis内部…

leetcode-每日一题-1669-合并两个链表(中等,链表操作)

这道题就是考察对链表的理解&#xff0c;但是题目给的链表和我们数据结构学的还是有点不一样的&#xff0c;这里面的头节点是带节点信息的&#xff0c;我们按照课本来说的话头节点&#xff0c;或者叫首元节点如果我记得不错的话就是叫这个&#xff0c;是不提供节点信息的&#…

[数字媒体] PR视频剪辑之自定义音频、视频加速转场和特显停顿

这篇博客是作者数字媒体系列的笔记&#xff0c;仅作为在线笔记供大家学习。在剪辑视频中&#xff0c;我们会遇到自定义音频、视频加速转场、特显停顿、画面调整等技巧&#xff0c;这篇文章将详细介绍。希望对您有所帮助&#xff0c;后续有时间会深入分享视频制作、动画制作等内…

结合淘宝与Twitter详解分布式系统与其架构设计,分布式其实并不难,阿里架构师用实战给讲明白了!

什么是分布式架构 分布式系统&#xff08;distributed system&#xff09; 是建立在网络之上的软件系统。 内聚性&#xff1a;是指每一个数据库分布节点高度自治&#xff0c;有本地的数据库管理系统。 透明性&#xff1a;是指每一个数据库分布节点对用户的应用来说都是透明的…

手把手教你如何从0到1开发自动化测试框架,你确定不看?

目录 一、序言 二、自动化测试框架技术选型 三、自动化测试框架的设计思路 四、自动化框架介绍 五、框架技术要点解析 六、后续TODO 一、序言 随着项目版本的快速迭代、APP测试有以下几个特点&#xff1a; 首先&#xff0c;功能点多且细&#xff0c;测试工作量大&#x…

Redis基本通用命令

通用命令 查看使用文档&#xff0c;例如要查看select怎么使用 help select切换数据库 select 1查看符合模板的所有key keys * keys *a keys a*判断key是否存在 exists k1给key设置有效期&#xff0c;给k1设置20秒有效期 expire k1 20查看key剩余有效期&#xff0c;查看k1…

2014年408算法题

文章目录0 结果1 题目2 思路0 结果 1 题目 2 思路 二叉树的带权路径长度&#xff08;WPL&#xff09;的计算方法有两种&#xff1a; 1&#xff0c;定义&#xff1a;WPL所有叶结点的权值Wi∗该结点深度Di求和WPL所有叶结点的权值W_i*该结点深度D_i求和WPL所有叶结点的权值Wi​…

linux环境minio安装启动,管理员登录,nginx代理

一.下载minio 官网下载: MinIO | Code and downloads to create high performance object storage 直接点击下载或者用wget https://dl.min.io/server/minio/release/linux-amd64/minio 最后都是得到一个文件minio(大概100M) 二.启动minio 1.创建文件夹,比如 mkdir /data…

mysql的redolog、undolog、binlog介绍,及mysql两阶段提交

https://blog.csdn.net/weixin_45676738/article/details/124770085 https://blog.csdn.net/TABE_/article/details/124935324 三种log REDO LOG 称为 重做日志 &#xff0c;提供再写入操作&#xff0c;恢复提交事务修改的页操作&#xff0c;用来保证事务的持久性。 UNDO LOG 称…

电源管理系统的功能和发展前景分析

电源对于电子设备的重要性不言而喻&#xff0c;电源管理系统是将电源有效分配给系统中的不同组成&#xff0c;在电子设备中起到了电能变换、控制、检测等作用&#xff0c;保证系统的稳定运行&#xff0c;对设备的性能有着直接影响&#xff0c;广泛用在工业、新能源、机器设备、…

一、初识 Spring 框架

文章目录一、Spring 简介二、Spring 框架的优点三、Spring 框架的组成四、Spring 框架 学习路线一、Spring 简介 Spring 框架简介 2004年3月24日发布了Spring 1.0正式版&#xff0c;Spring 框架的诞生给整个软件行业带来了春天。这个框架极大程度上简化了开发&#xff0c;其本…

基于无人机和背负式激光雷达点云的黄河三角洲刺槐林地上生物量估算

论文标题&#xff1a;Estimation of aboveground biomass of Robinia pseudoacacia forest in the Yellow River Delta based on UAV and Backpack LiDAR point clouds ABSTRACT 人工林是陆地碳汇的重要来源。黄河三角洲刺槐林是我国最大的人工生态防护林。然而&#xff0c;自…

“深度学习”学习日记。与学习有关的技巧--超参数的验证

2023.1.31 超参数是指神经网络中&#xff0c;神经元的数量、batch的大小、参数更新时的学习率或权值衰减等&#xff0c;虽然超参数的取值非常重要&#xff0c;但是决定超参数的值时会伴随很多人工的试错&#xff0c;所以我们需要高效地寻找超参数的值的方法 一&#xff0c;验…

【4】【Spring】,【Ioc/DI】,【IoC容器】,【Bean】

1、Ioc/DI,IoC容器&#xff0c;Bean 为了解决不同实现方式耦合度高 Ioc&#xff1a;&#xff08;Inversion of Control&#xff09;控制反转 主要思想&#xff1a;使用对象时&#xff0c;由主动new产生对象转换为由外部提供对象&#xff0c;此过程中对象创建控制权由程序转移…

vite打包静态文件打开显示空白

vite 打包生成静态文件打开显示空白 需求场景 本地调试访问打包的文件看是否有啥问题&#xff0c;方便定位线上问题安卓手机需要去直接访问静态文件&#xff0c;而不是访问域名的情况 vite 打包生成的文件如果直接放在服务器中是可以正常访问的&#xff0c;但是本地直接访问…

三个方面使CRM在360度客户视图中受益

360度客户视图这个词相信您不会陌生&#xff0c;很多关于CRM客户管理系统的文章中都有所提及。所谓的360度客户视图&#xff0c;是帮助企业和业务人员建立客户认知&#xff0c;消除客户生命周期中的信息脱节&#xff0c;让业务人员为客户提供一致性的体验。接下来我们们说&…

Windows10神州网信版的安装

在大约20天里面我完成了Windows10神州网信版72台的安装&#xff0c;有些2009&#xff5e;2014年的计算机完成安装后做一般的办公应用也能流畅运行。买一台新的计算机至少要好几千&#xff0c;通过更换固态硬盘和内存条可以达到旧物新用的目的。 一、安装过程   1、检查硬件  …

Coggle 30 Days of ML(23年1月)打卡

前言 任务链接 这个任务内容比较感兴趣而且和工作内容相关&#xff0c;学习一下打个卡。 编码完成任务1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;6&#xff0c;目前手上只有2080&#xff0c;之后在3090上跑。 最近杂事多&#xff0c;笔记、任务4和7之后再补充。 …

vue前端框架课程笔记(五)

目录非文件组件使用步骤定义组件示例&#xff08;第一部分&#xff09;&#xff1a;使用Vue.extend函数创建三个组件注册组件示例&#xff08;第二部分&#xff09;&#xff1a;组件的全局和局部注册组件使用示例&#xff08;第三部分&#xff09;&#xff1a;编写组件标签最终…