可调电源项目(Xuemeng V6)
本文最后更新于93 天前,其中的信息可能已经过时,如有错误请至q群984946310联系咱~

这是一款小巧数控电源,支持输出2.5V ~ 36V,0~10A连续可调,可带载200W,带主动散热,尺寸仅有82×60×39mm。也是本喵的第一个作品~


零、一些告知:

  • V6.2,也就是本版本,应该不会再继续更新,但根据目前的复刻状况来看,确实还有一些BUG,但本人确实没有精力继续维护本版本,在这里说声抱歉。但你遇到任何问题,可以进群咨询,我或者群友看到都会尽量解答的!
  • 目前的精力都放在最新的V7版本,当前(26/1/8)已经近乎完成硬件设计,可以着手写代码了;我尽量这个寒假完成项目,然后就潜水了。(谁家好人下一个学期10门课程的?!
  • 然后预告一下V7的信息:
    • V7是一个4 in 1的工具,目前暂命名为『XM Power Kit』;他有如下功能:
      • 数控电源:5 ~ 32V输入,2 ~ 36V @ 10A 输出,最大300W,极限360W。
      • 示波器:1M带宽,7.2MSPS采样率,可以实现简单的触发。
      • 波形发生器:1Msps采样率,支持输出-5V ~ +5V内,任意振幅,频率,偏置,最大50KHz的各种波形
      • 万用表:支持测量 ± 36V max电压;± 2A电流;0 ~ 1MΩ 电阻;0 ~ 1F 电容。精度都是3位半。
    • V7将使用rtos、lvgl等技术,会漂亮很多。
  • 最后要说的是,V7的焊接难度会高很多,请你务必准备好足够的工具,必备烙铁和热风枪!且非常建议你开钢网。好了,尽情期待吧~ 可以进群获取最新消息~(群号在末尾)

一、项目基础信息

1.1 项目简介

这是一款基于 STM32F103CBT6 + SC8701 的小型高带载可调电源,通过 PID 算法实现恒压恒流功能,核心特点如下:

  • 输入方式:支持 PD 诱骗输入、DC 电源输入(⚠️ 输入请勿高于 35V);
  • 输出接口:支持香蕉头输出、USB-A 接口输出;
  • 显示配置:2.4 英寸 320×240 彩屏,实时显示电压、电流、功率等参数;
  • 通信调试:配备蓝牙模块/CH340 转串口,方便连接上位机或调试;
  • 规格参数:输入范围 5-32V(强烈建议输入 12V 以上),输出范围 2.5-36V 连续可调,最大电流可达 10A。

1.2 项目背景

作为一名数学系大学新牲,居然还要上晚自习?怎会如此!我决定搞点比赛来申请免去晚自习,刚好缺个数控电源,本着学习新东西的想法,Xuemeng V6诞生了~

1.3 核心参数

类别型号/规格说明
主控 MCUSTM32F103CBT6 (V6.2更换)Arm Cortex-M3 核心,128K Flash,20K RAM,主频 72MHz
电源控制芯片SC8701QEDR同步 4 功率管 Buck-Boost 控制器
电流检测INA226(2 颗)IIC 通信,检测输入/输出电压、电流、功率
PD 诱骗芯片CH224K/CH224A自动诱骗充电头最大输出电压
显示屏2.4 英寸 TFT(ILI9341)分辨率 320×240,18P插接款(座子买上接抽屉!)
人机交互1 颗拨轮开关用于参数调节与功能选择
调试接口CH340N(串口转 USB)/SWD/蓝牙支持串口下载调试、SWD 调试、蓝牙通信调试
PCB 规格76×54mm,1.6mm 板厚,4 层板绝大部分采用0603封装,少部分0402,方便焊接
成品尺寸82×60×39mm(长宽高)含 3D 打印外壳

1.4 开源协议

本工程依据CC-BY-NC-SA 4.0知识共享许可协议,请勿用于商用,转载时请标明出处。

开源代码地址:“待更新”

二、更新日志

  • 2025/9/04:1.完成简单的上位机程序,允许对pid参数,回差,死区等等数据进行调整。2.优化短路保护,掉压保护的逻辑。
  • 2025/8/30: 完成 Ver6.2-rebuilt 设计与验证,主要改进PCB布局,修复了由于未割地导致的“地弹”致使输出电流6A以上时mcu死机的问题,目前已通过10A电流半小时测试。
  • 2025/8/22: 完成 Ver6.1 设计,将LM74610换成MX16171D,解决输入/出电压抖动问题;优化INA226的IIC走线,预解决当输出电流>7A时因IIC总线报错而导致的死机问题。放宽输入最大16A,输出到10A;删除部分无用电路简化BOM,修改mos频率为400Khz,电感改为6.8uh。

三、项目待完成目标

  • [x] 实现输出短路保护 和 输入欠压保护 (2025/8/31)
  • [x] 开发简易上位机程序(2025/9/4)
  • [ ] 开发上位机电压/电流/电功率曲线图显示功能 (鸽了,V7搞)

四、硬件设计

4.1 硬件整体简介

  PCB板采用4层板设计,阻容 95% 为0603封装。主控采用常见的STM32F103CBT6;提供type-C(PD诱骗)、DC 2.5mm两种方式输入,使用CH224K自动诱骗最高功率输入;可调电源控制芯片为SC8701QEDR,这是一颗全桥buck-boost芯片,能实现升降压输出;设备支持5V – 32V输入,2.5V – 36V 10A输出(建议输入9V以上)。

介绍.png

4.2 硬件框架

草稿_202509050057_38507 1.jpg

4.3 外壳设计

外壳采用“前后壳 + 顶板”方案,方便安装,目前仅提供 3D 打印模型,尺寸 82×60×39mm(长宽高)。

  • 散热:预留了 12V 规格(5cm×5cm×1cm)风扇槽位,通过粘胶固定;
  • 电池:预留 30mm×10mm×20mm 规格的锂电池槽位;
  • 顶板方案:
  1. 切割亚克力板并打孔,通过 4 颗螺丝配合支柱固定。
  2. 使用嘉立创面板打印,直接粘贴在中框上;效果如图~外壳.jpg
  • 材料购买(tb 金超官方旗舰店)
    1. M2*5 尼龙圆头螺丝 *8
    2. M2*25 尼龙螺柱 * 4
    3. 当然也可以买金属的,但要注意绝缘,金属部分是接地的。

4.4 硬件原理详细解析

> 前言:原理图少部分参考学习了黑马小乌龟、flyn 等大佬的开源设计(在此致谢),绝大部分电路都是自主设计;若有错误/建议/疑问,欢迎在评论区交流!

4.4.1 供电输入部分

项目提供两种输入方式:Type-C PD 输入、DC 输入,核心设计如下:

(1)PD 诱骗设计
PD诱骗.PNG
  • 芯片选择:CH224K(支持“电阻法”“电平法”两种配置方式,此处选电阻法);
  • 电压配置:悬空CFG2和CFG3,通过 CFG1 引脚外接电阻阻值设定最大诱骗电压,R279默认不焊接(诱骗 20V),电阻法配置表如下:
CFG1 外接电阻请求电压
6.8KΩ9V
24KΩ12V
56KΩ15V
NC(不焊接)20V
  • 若需要PD3.1支持(28V 5A)可以直接将芯片换成CH224A,同时,将R277和R278改为0Ω,R279改为210KΩ即可支持28V诱骗。CH224K和CH224A的芯片引脚定义是通用的。
(2)双输入保护
  • 电路:使用两套MX16171D理想二极管控制器搭配Nmos组成理想二极管,实现双电源输入保护双输入.PNG
  • 这个芯片本质就是配合NMOS模拟一个几乎无压降的理想二极管,将两个组合到一起就能实现双输入的保护。
  • 不同于LM74610,它可以控制mos全程开启,故不再有电压波动问题(2025/8/22更新)
  • 再者,它能支持最第1V的输入而不需要外置电源,很适合本项目。
  • MX16171D100不能直接用于本项目,引脚定义不同!且需要单独供电!!!已有小伙伴掉坑!

旧电路设计(LM74610SS)

  • 电路:使用两套“理想二极管控制器 + N-MOS”构成(型号 LM74610SS,可替换为 MX74610SS 降低成本,二者硬件兼容);
    双输入保护.png
  • 这个芯片本质就是配合NMOS模拟一个几乎无压降的理想二极管,将两个组合到一起就能实现双输入的保护。
  • 需要注意的是,芯片控制的Vgs应为5~6V,你可以直接测2.2UF电容的电压来判断芯片是否正常。
  • 再者,这个芯片是通过nmos的寄生二极管两端电压差来给芯片充电,它工作时时这样的:
    • 1.当最初通电时,负载电流流过 MOSFET 的体二极管,并产生压降(Vf)。MOSFET体二极管两端的正向压降(Vf)用于为电荷泵电容Vcap充电。在此期间,电荷泵电容器Vcap充电至6.3V;
    • 2.当Vcap达到6.3V,电荷泵被禁用,Vcap存储的能量用于驱动mos栅极;
    • 3.当Vcap下降到5.15V时,mos关闭,启动电荷泵进行充电。如此在2,3间循环往复
      因此,mos整个周期有98%导通,剩余2%用于电容充电。
  • 还是推荐更低成本的MX74610SS,二者功能/引脚一致。
  • 缺陷:[已解决]由于mos会有2%的时间关闭,因此输入电压会阶段性的降低0.7V左右,这就会导致输出会有瞬时跳变,甚至会导致低电压输出震荡。解决办法是降低cap的容值,我从2.2uf降低到了47nf,目前只要输入高于9V,就基本不会影响后级的输出。下面是cap=47nf的输入波形:
    5.jpg
  • 可以看到,输入电压越高,这个波动造成的影响越小,因此建议至少9V的输入电压(5V也能用,但纹波没那么好看~)。
(3)输入电压电流检测
  • 芯片选择:INA226AIDGSR
    这是一颗功能强大的芯片,它能通过测量总线电压、检流电阻电压来计算出电压、电流、电功率信息,并通过IIC来与MCU通信。
  • 硬件上: 你只需要通过A0,A1引脚的电平配置好设备地址,剩下部分都很简单,记得IIC要上拉即可
INA226.PNG
  • (2025/8/22) 优化IIC布线,修复输出电流超7.5A因EMI导致的iic总线报错死机。

4.4.2 Buck-Boost 电路(核心)

这一部分是整个电路的核心,也是困扰我最久的地方,下面我来进行讲解:buck-boost.PNG

(1)芯片选型
  • 型号:SC8701QEDR,这是一颗同步 4 功率管 Buck-Boost 控制器;
  • 参数:输入 2.7-36V,输出 2-36V,可以通过 PWM 调整输出电压/电流;
  • 不足之处:根据数据手册,有VOUT = VOUT_SET×(1/6 + 5/6×D)(D 为 UPWM 占空比),意思是最小输出电压为最大设定电压的 1/6,也就是说如想输出 3.3V,最大输出仅为3.3V * 6 = 19.8V 左右。

这大大限制了电压调节的范围。那么有办法解决么?有的兄弟!有的!我们可以换个角度,来往下看~

(2)电压范围拓展

根据 SC8701 数据手册,输出电压完整公式为:Vout = (VFB_REF×(1+Rup/Rdown)) × (1/6 + 5/6×D)(VFB_REF = 1.22V);既然“(1/6+5/6×D)”部分动不了,那我们干脆直接令D=100%最大输出,转向“(VFB_REF×(1+Rup/Rdown))”部分,我们可以通过改变 FB 引脚下的 Rup 与 Rdown 的电阻网络关系,来对输出电压进行调节,这种方式就没有什么限制了。来~随我看图:FB.PNG

  • 具体实现:我们来看如下等效图:f6a13a1d52d2740189fdb301438a4f4da.jpg
  • PS:此处电阻等效为V7的配置,V6可以自己带进去算一算~
    根据基尔霍夫电流定律,我们有:
    • 1. i1 = i2 + i3
    • 2. i2 = Vref / Rd1
    • 3. i3 = (Vref – Vdac) / Rd2
    • 4. i1 * Rup = Vout – Vref 经过简单的代换得到:
    • Vout = Vref * (1+ Rup / Rd1) + (Vref - Vdac) * (Rup / Rd2) 带入已知值,式子化为:
    • Vout = 39.345 - 15.625 * Vdac

因此我们就可以知道,当Vdac输出0V时,Vout理论输出39V左右;Vdac输出2.44V时,Vout理论输出1.2V。(实际受到电阻误差、8701硬件限制、dac误差等等原因,导致实际输出与理论有偏差)

  • 由公式可知,我们就通过DAC实现了sc8701输出电压的线性调节,并且成功拓宽了电压输出范围~

2025/8/23:修改R259为65K(频率400Khz),SW4改为6.8uh

4.4.3 输出部分

  • 核心功能:MX16171D配合NMOS构成理想二极管 防倒灌 + 多颗电容滤波;
  • 输出接口:提供4mm香蕉头、USB-A 母口,都是常用的接口,满足日常需求~
  • 当然,最重要的还是这颗输出INA226,它为整个pid系统提供电压、电流等数据。

五、软件设计

5.0 前言

  • 在此感谢B站UP主”keysking”,感谢他带我领略STM32单片机的魅力❤

5.1 软件简介

  软件部分就是我自己写的了,我从头编写了LCD屏的ILI9341驱动、Flash、INA226、mcp4725等等驱动,我都考虑了移植性,尤其是LCD屏幕的驱动,欢迎大家来移植与使用,样例我会放在附件~

  • 开发环境:STM32CubeIDE + STM32CubeMX + CLion
  • 架构:裸机,并没有使用LVGL和RTOS系统,我感觉没必要(其实懒得学)
  • 核心逻辑:定时器中断置位标志位,主循环检测标志位并执行对应任务;
  • 代码获取:您可前往 雪萌の小窝 下载完整工程,后续整理后会上传至 Gitee/GitHub。

5.2 代码浅谈

  说实话,我的代码写的着实不咋地,很多地方还很死板粗糙,我会慢慢打磨的,有问题/建议/想要的功能都可以提出,我会尽力改进的!(ง •_•)ง

(1)定时器中断调度

主要通过 TIM4(10ms 周期)、TIM1(100ms 周期)实现任务定时,中断回调函数如下:

//定时器1中断回调处理(100ms):屏幕刷新
uint8_t fan_counter = 0;
char screen_show_str[20];
void Tim1_Process(void) {
    DashBord_Refresh();     // 数据界面刷写
    LCD_refresh = 0;        // 清除标志位

    fan_counter++;
    if (fan_counter >= 10) {// 1s一次风扇更新与转速调节
        //风扇更新
        float temperature = GetTemperature();
        uint8_t persent = Fan_AutoControl(temperature);
        char screen_str[40];
        //温度更新
        numberToString_4bit(temperature, "℃", screen_str);
        LCD_PrintString(160,4,screen_str,&font16x16,WHITE,GRAY,1);
        sprintf(screen_show_str,"%03d%%",persent);
        LCD_PrintString(282,4,screen_show_str,&font16x16,WHITE,GRAY,1);
        fan_counter = 0;
    }
}


//定时器4中断回调处理(10ms):PID
void Tim4_Process(void) {
    // 电源状态保护,防止因未知错误导致电源状态异常
    if (power_state == HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11)) {
        HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_11);
    }

    PID_SundivisionCotrol(&pid_dev,current_OutputVoltage);      // 积分随误差大小限幅

    if (power_state) {

        if ((PID_Buffer_mode == 1) && (Pid_buffer <= Pid_Buffer_max)) {                     // 缓冲模式控制
            Pid_buffer++;
        } else {
            PID_Exit_Buffer(&pid_dev);
        }

        // 计算PID调节量
        int16_t ΔDAC_Value = PID_Calculate(&pid_dev, current_OutputVoltage, current_OutputCurrent);

            // DAC限幅
        DAC_Value = (uint16_t)fmax(HARDWARE_DAC_MAX,fmin(HARDWARE_DAC_MIN,(int32_t)DAC_Value + (int32_t)ΔDAC_Value));

        // 写入DAC
        MCP4725_WriteFast(&hi2c2, DAC_Value, MCP4725_MODE_NORMAL);
        pid_refresh = 0;
    }
}

然后在主循环里检测对应标志位,并运行相应代码,就能实现定时操作了:

while (1)
  {
    HAL_IWDG_Refresh(&hiwdg);                                   //喂狗

    KeyEventTypeDef event = Key_GetEvent();

    if (event != KEY_EVENT_NONE) {Key_EventHandle(event);}                         //按键处理

     if (pid_refresh) {                                                             //pid
       current_OutputVoltage = INA226_ReadBusVoltage(&OutputData);                  // 获取当前输出电压
       current_OutputCurrent = fabs(INA226_ReadCurrent(&OutputData) -               // 获取当前输出电流
             current_OutputVoltage / flash_param_read(PARAM_DISCHARGE_RESISTOR));
       current_InputVoltage = INA226_ReadBusVoltage(&InputData);                    // 获取当前输入电压
       current_InputCurrent = INA226_ReadCurrent(&InputData);                       // 获取当前输入电流
       // current_OutputPower = INA226_ReadPower(&OutputData);                      // 获取当前输出功率
       current_OutputPower = current_OutputCurrent * current_OutputVoltage;
       Low_Voltage_Check();
       Short_Circuit_Check(&short_short_circuit_count);   // 短路检查
       Tim4_Process();
     }

    if (LCD_refresh) {Tim1_Process();}                          // 屏幕刷新

对于初始化部分,为了方便小伙伴们快速检查哪些硬件出现了问题,我编写了如下初始化代码:

uint8_t Users_Init(void) {
  uint8_t error_reg = 0;    // 0000 0000 从0~7位表示W25Q,MCP4725,4725_defult,226_IN,226_OUT,
  LCD_Init();
  Key_Init();
  if (W25Q256_Init()) {set_bit(&error_reg,0);set_bit(&error_reg,7);}
  if (MCP4725_InitAndReport(&hi2c2) != HAL_OK){set_bit(&error_reg,1);set_bit(&error_reg,7);}
  if (MCP4725_WriteEEPROM(&hi2c2, DAC_Value, MCP4725_MODE_NORMAL) != HAL_OK){set_bit(&error_reg,2);set_bit(&error_reg,7);}

  float max_current_IN = 16.0f;
  float max_current_OUT = 12.0f;
  if (INA226_Init(&InputData,&hi2c1,INPUT_ADDR ,max_current_IN, g_flash_param_default.input_shunt_resistor)) {
    set_bit(&error_reg,3);
    set_bit(&error_reg,7);
  }
  if (INA226_Init(&OutputData,&hi2c1,OUTPUT_ADDR ,max_current_OUT, g_flash_param_default.output_shunt_resistor)) {
    set_bit(&error_reg,4);
    set_bit(&error_reg,7);
  }
  DisCharge_resistor = flash_param_read(PARAM_DISCHARGE_RESISTOR);
  if (fabs(DisCharge_resistor) < 0.001f) DisCharge_resistor = g_flash_param_default.discharge_resistor;
    PID_Init(
      &pid_dev,
      Default_Voltage,                                  // 目标电压
      flash_param_read(PARAM_VOLT_LOOP_KP),             // 电压环Kp_cv(从Flash读取)
      flash_param_read(PARAM_VOLT_LOOP_KI),             // 电压环Ki_cv(从Flash读取)
      flash_param_read(PARAM_VOLT_LOOP_KD),             // 电压环Kd_cv(从Flash读取)
      0.0f,                                             // 线路电阻
      flash_param_read(PARAM_VOLT_REG_DEADBAND),        // 电压环调节死区(从Flash读取)
      0.3f,                                             // 电压环积分上限
      -0.3f,                                            // 电压环积分下限
      Default_Current,                                  // 目标电流
      flash_param_read(PARAM_CURR_LOOP_KP),             // 电流环Kp_cc(从Flash读取)
      flash_param_read(PARAM_CURR_LOOP_KI),             // 电流环Ki_cc(从Flash读取)
      flash_param_read(PARAM_CURR_LOOP_KD),             // 电流环Kd_cc(从Flash读取)
      10.0f,                                            // 软件最大电流
      2.0f,                                             // 电流环积分上限
      -2.0f,                                            // 电流环积分下限
      2.0f,                                             // 最小电压
      37.0f,                                            // 最大电压
      flash_param_read(PARAM_CURR_HYSTERESIS)           // 电流回差(从Flash读取)
  );   //上述参数都将在接下来允许用户自定义,参数存储在flash中

  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1);                                  //启动IPWM
  HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2);                                  //启动FAN_PWM
  HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);                                    //启动蜂鸣器
  HAL_TIM_Base_Start_IT(&htim4);                                                          //启动pid时钟
  HAL_TIM_Base_Start_IT(&htim1);                                                    //启动屏幕刷新/计时时钟

  HAL_ADCEx_Calibration_Start(&hadc1);                                                        //ADC自动校准
  HAL_ADC_Start(&hadc1);                                                                            //启动ADC转换


  MX_IWDG_Init();
  return error_reg;
}
  • 若没有任何错误,LCD屏将会先显示初始化,随后进入数据界面。
  • 若出现错误,蜂鸣器会快速的蜂鸣,提示出现问题,此时你可以前往波特律动串口助手连接蓝牙,并按下RESET按键,蓝牙会输出当前有问题的硬件。

六、程序下载

本作品提供了两种下载方式:

方法特点
ST-LINK比较复杂,需要配置SIM32CubeIde/CLion环境
串口下载简单,一根数据线即可,想快速使用的推荐

为了方便,这里仅仅展示通过串口进行下载:
6.1 串口下载

  • 1. 首先你需要一条数据线,typeC接口的能传数据的就行(你平时的手机充电线即可)
  • 2. 下载附件中的FlyMCU软件和最新的.hex文件以及CH340的驱动
  • 3. 先安装驱动,随后用数据线连接电脑与设备中间的typeC接口
  • 4. 打开FlyMCU,按照下图进行配置:FLYMCU.PNG
  • 5. 设备长按boot0的同时,单击Reset按钮,随后过一会再松开Boot0,若程序显示下图,则成功进入刷写:刷写.PNG
  • 6. 进度条走完后,单击一下reset按钮,就正常进入程序了,恭喜你完成了程序写入ヽ(✿゚▽゚)ノ

七、性能

很抱歉手头上没有设备进行纹波测试(我都不是学电子这块的的,大学实验室都不让我进哈哈设备都借不到),不过可以看看演示视频看看效果,希望对你有帮助~

  • 有大佬能帮我测一下是最好了,得到数据后我就可以进行改进了~ 😘

(2025/8/30)下面为我的大致测试,不是很准~

输入电压输出电压输出电流纹波
24V12V0A60mV

八、上位机

我花了几个小时写了个简单的上位机,通过数据线连接设备后,可以通过附件里的上位机对众多参数进行调节,参数修改即刻生效(虽然可以,但不建议边输出边调节)。

  • 建议使用Windows10及以上系统!使用Win7可能因缺动态链接库导致无法打开软件
  • 已有小伙伴踩坑。上位机使用python编写,pyinstaller打包,upx压缩,win11环境。

当前可调节参数如图:捕获.PNG

还是挺简陋的,将来会更新更多的可调数据,如风扇之类的,也会支持读取设备数据并绘制实时曲线等功能~

九、其他

  • 1.程序还在编写整理中,整理好就上传geeit/github
  • 2.您可以加984946310进行讨论,欢迎您! (答案:雪萌)
  • 3.程序仅完成了主体,C8T6的FLASH就快满了,后续可能会升级为CBT6,但都是以后的事了 以替换为CBT6
  • 4.这是我的个人博客,里面将会对这个项目进行了详细的细节分析,仅对接下来的V7进行详细分析,欢迎前往雪萌の小窝
  • 5.最后,祝你玩的开心,能学到些新知识~

十、元件采购建议与提醒

我采购的时候遇到了超级多问题,不是st-link是坏的,就是假INA226能把24V测成18V的离谱玩意,因此,我在此建议部分元器件的淘宝店家,希望对你有帮助,避免踩坑ヽ(✿゚▽゚)ノ。

  • PS:群文件里有我整理的BOM表,表内的表1为建议立创商城购买,可直接上传此文件;表二2为剩余物料推荐购买点。

显示表格
元件型号淘宝店名单价
INA226AIDGSR优信电子2.5元/个
REF3030AIDBZR优信电子1.1元/个
5020无源蜂鸣器优信电子1.2元/个
ME3116AM6G优信电子0.8元/个
3*4轻触开关优信电子0.9元/10个
LMV321IDBVR优信电子0.28元/个
1265一体电感6.8uh优信电子1.6元/个
STM32F103CBT6新纶电子1.95元/个
SC8701QEDR新纶电子1.41元/个
W25Q256JVEIQ新纶电子1.29元/个
MCP4725A0T-E_CH新纶电子0.9元/个
MX16171D立创商城2.99元/个
AGM6014A芯恒盛电子1元/个
VGA6328A佳信达通电子4.58元/个
拨轮开关3脚telesky旗舰店1.46/个
2.4寸显示屏ILI9341插接款无触摸耀元鸿科技16元/个
470uf 35V 8*10.5CAICOS旗舰店5元/10个
50V 100uf 8*10.5CAICOS旗舰店4元/10个
50V 100uf 8*12楷信电子0.55/个
50V 47uf 6.3*8楷信电子0.37/个
5cm风扇12V A1接口(拼多多)连环马散热1.48元/个
铝散热片9x9x5mm
铝散热片22x22x10mm
M2*8塑料尼龙螺钉金超官方旗舰店2.49元/50个
M2*25尼龙柱平头六角双通金超官方旗舰店2.81元/20个

小PS:

目前已经可以试着复刻了,硬件上已经没有什么大问题,接下来也不会做太大的改动,软件会继续更新,接下来都是通用的。

十一、注意事项

已有一些小伙伴进行复刻,但出现了许多问题,在此总结一下,希望能帮到你~~

  • 一. 理想二极管MX16171D不能替换为MX16171D100,二者不兼容。已有小伙伴中招导致奇妙故障。
  • 二. 成功开机后,设置低电压输出震荡:可以使用上位机调小PID参数以抑制震荡
  • 三. 焊接问题。其一:SC8701为QFN封装,焊接难度大,建议焊好拿手机微距看看,没焊好可能会炸mos和8701!!(此芯片有底部焊盘,有线路连接,需要使用风枪!)
  • 四. 焊接问题。其二:复刻需要一定的动手能力以及工具,至少要一把烙铁(有一些0402,不好焊),
  • 五. 焊接方法:推荐(作者使用):烙铁+风枪+加热台+钢网。
    • 1.先上MCU面锡膏,放好元件,上加热台铁板烧(方便焊接flash,波轮开关,mcu以及排线插口)
    • 2.焊好mcu面先测一下3.3V和12V的电感有没有短路,再测测dcdc芯片的FB引脚有没有对地短路(作者踩过FB的坑,3.3V输出9V芯片一套带走😢)
    • 3.没问题可以试着上电(swd接口上3.3V或者dc口上个5V)
    • 4.功率面上锡膏,贴好元件,用风枪吹,最后再去焊所有大号电容
    • 5.焊好一定要检查8701(拿手机微距看),万用表测一下输入输出有没有哪里短路
    • 6.确认没问题了可以上电,正常会输出14~15V!没问题了再去刷程序!
    • 对于8701的焊接,建议上锡膏后再加点焊油,用风枪先吹到位,然后给8701四周加上足量焊油,烙铁用马蹄头,温度稍微开高一点,沿着芯片四周慢慢同一方向脱一两遍,一般就焊好了。
  • 五. 对于上位机:建议使用win10以上系统,不然可能打不开(win7提示缺少动态链接库,小伙伴踩坑)

十二、关于下一版Xuemeng V7

  • Xuemeng V7会进行一次较大的改进,下面为更新日志,不定时更新V7开发进度
    XuemengV7更新日志 :

V7ES_p2p01(2025/10/15):

  1. 更新电压/流采样方式,以提升PID速率
  2. 新增示波器功能,7MSPS,1Mhz
  3. 新增信号发生器,输出±5V,15Khz
  4. 新增拓展接口,支持外挂拓展
  5. typeC调试口支持USB与串口切换;USB下支持读取外挂flash、链接上位机;串口下支持串口调试与程序刷写
  6. 新增简易的快充协议检测功能
  7. 屏幕升级为2.8寸,且由fsmc驱动,可达100fps
  8. 交互逻辑为旋转编码器+4个独立按键,二者其一都可完成交互
  9. 将适配全新外壳,更加美观
更多日志

V7ES_p2p02(2025/11/11):

  1. 修复示波器运放电源接反问题
  2. 修复调试口串口模式下无法刷写程序问题
  3. 修复buck-boost芯片引脚漏接线路问题
  4. 优化短路逻辑,更加可控
  5. 优化信号发生器电路,成本更低,功能更强大
  6. 优化丝印布局,进行焊接引导
  7. 优化mcu DAC输出削波问题
  8. 优化示波器电路,成本更低,干扰更小

V7ES_p2p02(2025/11/12):

  1. 优化波形发生器电路,设计:能输出±4V,偏置可调,50Khz max的正弦波,以及三角波等常见波形
  2. 优化了示波器后级抗混叠电路,显著提升使用体验
  3. 更改DCDC_3V3配置电阻,优化输出

V7ES_p2p02(2025/11/13):
1.优化了bom表,尽量使用重复元件,节约成本
2.优化了少了布线以及过孔

还有很多小地方上的改进,就等V7再详细说明吧,V7预计会在明年3月初发布~

十三、一些事项

还请不用私信我,大二学习太忙了,没有太多精力搞开源设计,所以一般私信不会回复,在此表示抱歉

有事情可以进群984946310交流!(答案:雪萌)一般群里的消息我才有时间看并回复,谢谢!

如有错误,欢迎指出喵~❤
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
下一篇