#第五届立创电子设计大赛#数控直流电子负载

1年前 24521
  • 描述
  • 文档
  • BOM
  • 附件
  • 成员
  • 评论

描述

版权声明:本文档是micespring在“GD32杯第五届立创电子大赛”的参赛项目《数控直流电子负载》的详细介绍,禁止商用!转载请注明原始链接和作者ID。


项目评选已经结束,评论区已经开放。 由于该项目被锁定无法更改,所以所有的变动都写在此处,请制作之前注意

需要注意的问题:

  1. 目前提供的固件是基于8M晶振的,而不是原理图上的25M晶振。如果使用25M晶振,可以自行修改代码中的相关设置。
  2. 因为本项目是使用SPI驱动TFT屏,为保证流畅频率设定为50MHz。如果需要修改PCB,那么请注意LCD信号线的走线,与MCU的距离要尽量短,否则可能会白屏或者画屏
  3. 目前风扇调速是为4线风扇设计的,如果使用2线,需要修改代码中的PWM频率
  4. EEPROM请使用24C02

一些建议:

  • LM324可以替换为OPA2274,经测试可以进一步减小负载电流设定值和实际值之间的误差

  • 如果有自激,可根据实际情况调整LM324放大反馈电路周围预留的阻容元件

  • 正常情况下,C23,C37,R23不需要焊接

    • -

一、项目详情

电子负载是一种消耗电能的设备,主要的作用是对电源进行测试。比起使用大功率可调电阻或者电炉丝等传统的无源负载,电子负载具有参数可调,使用方便等诸多优势。无论是专业的电子工程项目开发还是业余的电子爱好者,电子负载仪都是必备的设备之一。比如本次大赛的定向主题“直流可调电源设计”,如果有一台电子负载,就可以更加方便对电源进行调试,加速项目的开发。

电子负载从测试电源的种类来分可以分为交流电子负载和直流电子负载。从功能上划分常见的有恒流、恒压、恒阻、恒功率四种类型。因为我们常见的大多数电源都是恒压直流电源。测试这类电源时,主要测试的是其电流输出能力。所以大多数的应用场景中,直流恒流电子负载是最为常见的类型。而电子负载从控制方式上划分则又可以分为数控和模拟两种类型。相较于使用纯模拟电路控制的电子负载,数控电子负载使用数字控制,在参数调节上更为直观,而且功能丰富、扩充简单,还可以方便的实现测试的自动化。

基于以上分析,我决定制作一台数控直流(恒流)电子负载。由于数控电子负载可以通过模拟的方式实现伪恒功率电子负载的功能,所以并未显式在名称中注明“恒流”字样,但本质上还是恒流电子负载。

在项目立项之时,我定下的关键技术参数为:

  1. 最大测试电流:10A
  2. 最大测试输入电压:36V
  3. 最大功率:120W
  4. 电流控制范围:0.1~10A,控制精度:0.1A

最终的成品以上目标参数和功能均已实现。

二、项目所面临的挑战及所解决的问题

市面上已经存在有不少专业或者非专业的电子负载,模拟的和数控的都有。专业的大多价格高昂,对于个人爱好者来说十分不划算。而非专业的大多又过于简陋:显示上主要都是LED数码管和单色LCD,而且功能上大多都比较简单,有些还缺乏一些关键的保护功能。除商业化产品外,网上也有不少公开的电子负载设计,但大多使用的都是非标准、非通用的器件和模块,最终成品的品质波动很大。基于此,本项目将主要解决以下问题

  1. 成本高问题:尽量使用通用且经济的元件实现功能
  2. 功能简单问题:成品除基本的恒流负载功能外,还将实现更多有用的功能
  3. 显示、控制简陋问题:使用大屏TFT彩屏作为显示器件,旋转编码器作为输入器件,并使用主流的图形库来实现现代化的UI界面。
  4. 制作困难问题:减少制作所需的工具和步骤,提高制作成功率。

三、项目硬件、软件部分涉及到的关键点

硬件部分(模拟电路部分)

核心原理

恒流电子负载的核心电路是一个由运放、功率MOS管、采样电阻、参考电压构成的负反馈控制电路:电流流经采样电阻会产生压降,当该压降VRS小于参考电压REF_VOL时,运放控制MOS管开启,此时流经RS的电流开始上升,直到RS上产生的压降高于参考电压时,运放关闭MOS管,流经RS的电流开始减小。如此循环往复,使得MOS管工作在线性区的某个位置以实现对负载电流的控制。最终负载的恒流值由采样电阻RS和参考电压REF_VOL共同决定。

image.png

功率地、模拟地和数字地

整个系统应该是共地的,这是电路工作的基础。但是,不同的逻辑电路的地平面之间是不能直接通过铺铜连接到一起的,否则高频工作的数字电路,大电流的功率电路和控制/采样用的模拟电路之间就会相互串扰。最好的方式就是三者的地之间进行单点连接。本项目中,输入电源功率地和模拟地之间采用0欧电阻连接。而数字地和模拟地因为本项目设计的原因,本来就是在两块不同的PCB上,然后通过排针连接,这本身就是很好的隔离措施。如此,实现了三个参考地平面之间的连结,并且最大限度的减少了三块逻辑电路之间的干扰。

image.png

电源

本项目的整个系统需要3个不同的电压,12V用于散热系统的风扇供电。9V用于供给主运放,以获得较大的动态范围以良好的驱动功率MOSFET。3.3V用于精密运放,ADC/DAC,还有数字电路的供电。因为整个系统的功耗不大,再加上整个系统对电源纯净度要求比较高,所以这里设计使用12V电源输入,并使用了线性稳压器获得9V和3.3V的电压,另外还添加了较多的电容进行滤波。

image.png

恒流控制和参考电压的获取

由基本原理可知,可以调节参考电压和采样电阻的大小来控制负载电流的大小。但是控制电阻的大小显然比控制电压的高低困难的多。所以我们选择设置参考电压来控制负载电流大小。对于传统的模拟电子负载,此处的参考电压一般都是通过一个电位器接在电压基准和地之间来获得的。如果想实现数字控制,只需要将此电位器换成数字电位器即可。考虑到数字电位器的精度一般不高,所有,更好的选择是使用DAC,即数模转换电路来生成参考电压。

DAC有很多现成的IC可以使用,在这里,我选择了MCP4725这款DAC。这款DAC拥有12bit的分辨率,也就是说最终可以实现4095个电流档位。另外,MCP4725通过I2C接口与MCU实现通讯,可以简化PCB的布线难度。

image.png

由于DAC直接输出的驱动能力较弱,输出电压容易受负载的影响。为了稳定输出电压, 此处,使用了一路运放作为电压跟随器来保证DAC的输出电压有足够的驱动能力。

image.png

经过运放后,为了方便反馈电阻的适配,在作为参考电压输入反馈系统之前,这里又添加了一个精密电位器R21,这样,MCP4725的输出电压范围就由0~VCC变成了0~任意值,可以方便我们选择合适的反馈电阻。另外,电位器的两边还预留了两个电阻的焊盘R15和R17,在最终调试结束,确定了电位器的值之后,可以将电位器替换为固定电阻,增加稳定性的同时可以进一步节省成本

image.png

采样电阻的选择

由于采样电阻最大的设计通过电流为10A。如果使用大阻值采样电阻,比如使用1欧姆的电阻时,电阻上的功率将达到100W,那么采样电阻就会因为发热而烧毁,或者因为发热引起的温漂导致电流的测量或控制出现偏差。但是如果直接使用小阻值的采样电阻,如1毫欧的电阻,那么最大电流时压降也不过10mV,这一方面使得整个电路对干扰及其敏感,另一方面由于运放的精度限制,电流将难以控制。综合考虑后,我使用了2个6毫欧2W的电阻(R8和R10)并联获得3毫欧的采样电阻阻值,同时,增加一路前置放大电路,将采样电阻上的电压经过放大后送入主反馈电路。这样一方面兼顾了采样电阻的功率,另一方面也解决了反馈系统信号太小导致容易干扰而且难以控制的问题。

image.png

至此,我们可以通过MCU控制MCP4725来决定恒流电流的大小,也就实现了数控恒流负载的功能。

电流的采样

现在,我们可以控制负载电流的大小了,但是,我们还需要实时的测量电流的大小。测量电流的方法很简单,通过测量采样电阻上的压降,然后除以采样电阻的阻值即可得到电流的大小。因为要测量电压的大小,所以这时候我们就需要用到ADC,即模数转换电路了。与DAC相同,ADC有很多现成的IC可供选择。这里,经过综合评估后,我选择了ADS1115这款ADC。ADS1115拥有16bit的分辨率和4路模拟输入,且内置电压基准源,并同样使用I2C与MCU进行通讯。由于I2C总线的特性,ADS1115和MCP4725可以挂载在同一个I2C总线上。这就进一步降低了布线的难度。

因为ADC采样的精度很大程度上会受到电源的影响,所以ADS1115使用了LC滤波来保证ADS1115能有一个稳定的供电环境。

image.png

ADS1115的量程可配置,这里为了方便起见,使用了略高于供电电压3.3v的档位4.095V。因为使用的采样电阻很小,即使在最大电流时压降依然很低,无法充分利用ADS1115的量程,所以又增加一个INA199放大器来将采样电阻上的压降放大后采样。

image.png

输入电压采样和四线测量法

电压的测试方法很简单,两个电阻连接在输入端子的正极和地上组成分压电路,分压后输入ADC(ADS1115)采样即可,如下图中的R4和R5即分压电阻,分压比约为1:0.09,这样在输入36V时,分压后的电压约为3.27V,正好可以最大化的利用ADC的量程。

image.png

这里需要注意的时分压电阻的阻值,如果阻值太低,那么会带来额外的电流消耗,导致恒流控制不准。另一方面,这些电流消耗会导致分压电阻温度上升,带来温漂的同时还可能导致分压电阻烧毁!但是分压电阻太大也不好,太大的话一方面会导致系统抗干扰能力下降,因为环境中的微小干扰加在一个巨大阻值的电阻上时就能感应出很高的电压。另一方面,ADC是有输入阻抗的,如果分压电阻太大甚至接近了ADC的输入阻抗,那么分压电阻会和ADC的输入阻抗之间再次构成一个分压网络,导致ADC测得的电压比实际偏小。所以经过综合考虑,这里使用了100K的上臂电阻和10k的下臂电阻,可在两者之间取得平衡。

另一个需要注意的是电压的采样点,如果采样点距离输入端子比较远,那么由于PCB铜皮的电阻不为0,在电流较大时,PCB铜皮上也会产生可观的压降。这样,采样得到的电压就不是输入端子处的电压了。所以,这里电压的采样点一定是在靠近输入端子的地方,如下图:

image.png

这样就能比较精确的采集输入端子处的电压了。已经可以应付大多数的测量需求。但是,这里我们无论多么努力,都只能尽可能准确的测量输入端子处的电压。而从电源到输入端子处肯定是要连接导线的,而只要有导线就会产生压降,所以我们无法在有电流的情况下准确的测量电源的实际输出电压。在只需要考虑电流大小的测试场景下,这是无伤大雅的。但是如果是需要考虑功率而且对功率精度要求比较高的场合,比如测试电池的容量和能量时。因为通过测得的电压和电流计算出的消耗功率并不是实际电源的输出功率,所以测试出来的结果就会不准。为了解决这个问题,我们就必须将电压测试点一步到位,直接连接到电源的输出点上。但是这里还有个问题,那就是简单的将电压采样点引出一根线放到电源输出点上还是不行的,因为我们整个系统的地平面参考点是连接在输入端子的负极上的。而输入端子的负极到电源的负极之间也有导线,也存在压降。这里我们绝对不能直接将接地参考点引出连接到电源的负极上,这会导致电路设计难度增高,抗干扰能力下降,而且可能会导致严重的故障(想象一下如果使用时忘了连接接地参考线会怎样)。为了解决这个问题,就必须使用四线测量法了。

四线测量法其实是额外引出了两根用于电压采样的线,这样与原来的两根连接线一起就组成了4线测试系统。额外引出的这两根电压测试线直接连接在电源的输出端子上,其中没有电流或者只有很微弱的电流,通过测量这两根线之间的电压,就可以得到准确的电源输出电压了。但是改如何实现这个功能呢,要知道电压测试线的负极对于这个系统来说,它的电位可是负的。而一般的ADC是无法测量负压的。所以我们要用到差分测量法,也就是对两根线上的电压做一个减法,来得到最终的电压。在电路的具体实现上,虽然ADS1115具有差分测量功能,但是使用这个功能会导致其模拟通道数量变为2,无法满足我们的需求(电流,电压,4线电压)。所以,这里采用了一个独立的运放组成一个差分放大电路,将电压测试线两端的电压差分、放大(衰减)后送入ADS1115采样。

image.png

运放的选型上,考虑到使用4线的场合都是对电压精度要求比较高的。所以这里采用了润石科技的精密、轨到轨单运算放大器RS8557XF,它仅20uV的输入失调电压和低至0.03uV/℃的温漂可以完美的实现我们的需求。

image.png

保护系统

除了软件上的保护外,硬件上为了安全起见是一定要增加保护的,具体实现为:

测试电源回路上的大功率防反接二极管

image.png

测试电源回路上的保险丝

image.png

ADC采样端的限压二极管

image.png

image.png

image.png

散热系统的设计

因为电子负载消耗的电能主要是转化为热能,所以必须要有一个稳定而且强大的散热系统,否则电子负载的功率就无法做大。这一方面要求散热片必须有足够的散热能力,可以将热量迅速散出;另一方面则要求功率管与电子负载有比较可靠的结合方式,否则热量如果无法及时从功率管上传输至散热片,那即使散热片散热效率再高,整个系统的功率也做不上去。

比较传统的做法都是直接使用预制铝制散热片配合风扇进行散热,然后功率管通过打孔的方式与散热片进行结合,此方法比较节省成本但是通用产品大多无法针对风扇进行针对性的风道调整,所以散热效率不佳,再者就是订制散热片,但是这样制作成本就太高了,对于非商业化的项目十分不划算。

经过考虑,最终选择了使用Intel 775规格的散热器,并使用类似CPU的压合方式与功率管进行结合。此为经过我考虑后的最佳解决方案,原因如下:

  1. 775散热器是专业且成熟的标准,经过了市场的验证。
  2. 有大量在售(或二手)的商业化产品可以购买,可选规格多,价格便宜。
  3. Intel 775散热器的扣具安装十分简单,只需要在PCB上打4个孔即可,
  4. 相较于最新的115X散热器扣具,775规格的安装孔孔距更小,可有效减少PCB板的变形
  5. 压合的方式相对与打孔螺丝的结合方式更加方便

实际验证,表现超出预期,可以很轻松的处理功率管100W以上的发热。

另外,功率管附近我设计了一个热敏电阻来对功率管的温度进行采样,并根据采样获得的温度来对风扇的转速通过PWM调速进行控制,即节能静音,也可以在关键时刻如热失控时控制负载关闭来保护功率管防止烧毁。因为这套系统的作用,在整个制作过程中未发生一起MOS管烧毁事故:)

image.png

硬件部分(数字电路部分)

显示和控制部分

显示部分采用了2.4寸的6.5K色QVGA分辨率的TFT显示屏,比起小尺寸的OLED或者单色STN显示屏,彩色的TFT显示屏可以同屏显示更多内容(或更加明显的显示内容),也可以提供更加优良的观感,并且为以后的功能扩充留下了更多的余地。并且,彩屏TFT并未明显增加成本。

image.png

用户控制部分使用了一个带中心按键的旋转编码器和两个按键,旋转编码器用于快速选择选项或者设定数值,两个按键则一个实现控制另一个作为功能键使用。

这里还提供了两个指示灯,一个作为负载运行的指示灯,另一个则作为电源指示灯。

image.png

主控的选择

主控选择上,因为使用了大屏TFT,所以小容量的单片机就无法满足要求了。而且大屏的内容绘制也更加复杂,仅使用底层的绘图法绘制内容将极大的增加编码的难度,所以需要专用的使用图形库来进行内容绘制。另外还有显示汉字需要存储的字库。这要求主控MCU的ROM容量和RAM大小都不能太小。而且因为TFT屏选择的是SPI接口的,所以选择的主控最好还能有高速的硬件SPI。

经过综合考量,最终选择的主控为意法半导体STM32系列的STM32F412RET6,这款MCU采用带单精度浮点运算器的Cortex-M4内核,工作在100MHz的频率。拥有512KB的ROM和256KB的大容量SRAM,后者是流畅运行图形库的基础。外设上,它拥有高达50MHz的硬件SPI,支持DMA,可以以极高的速度驱动TFT显示屏(实测最高刷新率可以达到40FPS以上)。并且与ADC、DAC等的通讯也可以使用纯硬件IIC进行,以达到最高的运行效率。

image.pngimage.png

另外,虽然此MCU拥有内置的RC时钟电路,但是为了保证进行电池容量测试时数值累加的准确性,这里还是使用了外置的晶体振荡器来获得准确的时钟。

image.png

非易失型储存器

整个系统需要对校准数据和用户设计以及测试数据进行存储。虽然可以使用MCU内部的Flash ROM来解决,但是考虑到以后的功能扩充,MCU内部的Flash容量其实不算宽裕。另外将数据保存在MCU中会导致MCU内部Flash的磨损,当出现坏块时MCU就报废了,这是难以接受的。所以我们需要外部的非易失型储存器来进行数据的持久化存储。常用的非易失型储存器有EEPROM, NOR Flash,NAND Flash等。NAND Flash虽然有容量(非常)大且价格便宜的特点,但是它的控制和数据的读取/写入都比较麻烦,而且需要磨损均衡算法来规避坏块,况且大多数情况下我们都不需要用到这么大的容量,所以NAND Flash用在这里是不合适的。剩下的EEPROM和NOR FLASH虽然在功能上都能较好的满足需求,但是EEPROM大容量的很贵,NOR Flash写入前需要擦除,无法随机写入。考虑到随机存储需求,比如测试数据的存储(防止意外掉电丢失),最终本项目选择了同时使用一片小容量EEPROM和一片大容量的NOR Flash, EEPROM作为数据快速的随机存储使用,NOR Flash用来存储不要经常变动的那些数据(如校准数据)。

EEPROM的选择上使用了台湾合泰的HT24LC64,IIC接口,拥有8KB的容量。足以满足随机数据存储满足要求:

image.pngimage.png

NOR Flash选择了兆易创新(GD)的GD25Q64CSIGR,拥有高达8MB的容量和Quad-SPI接口,数据擦写次数10万次,20年的数据持久性。可以在最大程度上满足校准数据的稳定存储。

image.pngimage.png

软件部分

开发环境

项目使用Atollic TrueStudio 9.3.0 IDE进行开发,通过STM32 CubeMX生成初始化工程,开发语言为C语言,编译器为GCC。

image.pngimage.png

图形库

图形库使用LittleVGL,一个开源、强大的嵌入式图形库。littlVGL提供了丰富的控件,还包括了一个软件任务系统和内置的内存管理器,这些都可以极大的降低开发的难度。

LittleVGL需要一个用于存储控件属性的堆空间,和一到二个图形缓冲区。本项目中,为LittleVGL分配了32KB的堆空间和50KB的图形缓冲区,并使用DMA进行屏幕数据的刷新。 LittleVGL主页:LittleVGL< br> < br> image.png

代码结构

代码主要分为3层:硬件驱动层,硬件抽象层和用户交互层

image.png

硬件驱动层用于底层硬件的沟通和交流,比如ADC数据的采集,DAC控制,负载开关等等。硬件抽象层则用来作为用户层代码和硬件层代码之间的桥梁,它屏蔽了底层硬件的细节,只向用户态代码提供加工好的数据或者提供硬件控制的高级接口。用户交互层则直接负责界面的绘制,功能逻辑的实现等等。

系统功能层级

系统功能层级如下图所示

image.png

有关更详细的功能介绍,请参考项目视频。

校准功能的实现

为了消除硬件上的偏差导致的测量误差,本项目设计了软件校准功能。校准的基本思路是使用多段拟合的方法,在整个的电压/电流的量程上设置多个校准点,记录下各个采样点的电压/电流值和对应的实际ADC值。测量时将采样获得的ADC值与这些校准点进行比对,找到对应的区段。然后在区段内采用线性插值的计算方法获取最终的电压/电流值。校准点越多,最终的结果就会越精确,但校准所需要记录的数据就越大。 经过综合的考量,最终电压校准点步进为为0.2V,电流为0.1A 以下为获取电压值的关键代码:

uint16_t GetTestInputVoltage(){
    uint16_t value = GetTestInputVoltageRawValue();

    // 校准数据不存在的情况
    if(voltageCalData == NULL){
        double volPerBit = 1.379282892314428;
        return value*volPerBit;
    }

    // ADC采样值小于零点值的情况
    if(value <     = voltageCalData->data[0]){
        return 0;
    }

    // 找到对应的区段,并进行线性插值,计算实际的电压值
    uint16_t voltage = 0;
    for(int i = 1; i <      voltageCalData->stepCounts; i++){
        if(value <     = voltageCalData->data[i]){
            voltage = (voltageCalData->stepVoltage) * (i - 1)
                    + (value - voltageCalData->data[i - 1]) * (voltageCalData->stepVoltage) / (voltageCalData->data[i] - voltageCalData->data[i - 1]);
            return voltage;
        }
    }

    voltage = (voltageCalData->stepCounts - 1) * voltageCalData->stepVoltage * value / voltageCalData->data[voltageCalData->stepCounts - 1];

    return voltage;
}

恒流控制

因为DAC的输出值和最终的恒流值之间是存在一定的误差的,而且由于采样电阻的温漂原因,此误差会不停的变化。考虑到代码实现的复杂度和功能需求,此处使用软件校准法。即在使用前进行一次校准,通过记录下不同的恒流值对应的DAC设定值,然后在设定电流时,根据此校准表查找到对应的DAC值并设定。在实际验证时,恒流值误差在±2%以内,基本满足使用需求。

*** NOTE:如果需要更加精细的电流控制,此处可以使用PID控制。此功能可以作为本项目以后的改进点之一。

其他功能的实现关键点

恒功率电子负载

恒功率电子负载功能是通过纯软件实现的,通过不停的采样当前的电压,并根据设定的功率计算出应该设定的电流,然后通过恒流控制功能重新设定负载电流,以此来实现恒功率负载功能。可见,此功能无法应付电压高频变动的情况。

电池容量测试

电池的容量(I·t)和能量(p·t),通过定时器每隔100ms采样一次电流值和功率值,并进行累加计算得出。这些数据被实时的存储在EEPROM中,这样,即使意外断电测试数据也不会丢失。

四、项目材料清单

控制板材料清单

image.png

模拟板材料清单

image.png

五、项目图片

含有大赛LOGO特写图片

image.png

其他图片

正面

image.png

侧面

image.pngimage.png

控制板和模拟板分离照

image.png

实际运行图1

image.png

实际运行图2

image.png

性能展示——电压准确度

image.png

性能展示——电流准确度

image.png

性能展示——最大负载功率和四线电压

image.png

六、演示视频链接

自我介绍

90后男生,目前从事服务业工作。业余电子爱好者。

视频链接:https://www.bilibili.com/video/bv1Y5411Y7TS

项目简介

数控直流电子负载,可用于测试恒压型电源。带有能量统计和电池容量测试功能。

视频链接:https://www.bilibili.com/video/BV1Aa4y1a7RQ/

功能展示

项目目前进度介绍和已完成的功能展示:

视频链接:https://www.bilibili.com/video/BV17f4y1Q7cg/< br> < br> 通过实例对电子负载的功能进行演示:

视频链接:https://www.bilibili.com/video/BV15D4y1m7JF/

七、项目其他说明

本项目为首次公开发布

本项目已开源全部代码,代码已经上传至附件

适用于STM32F412RE的二进制文件也已经上传至附件,可直接烧录后使用

文档

控制板_sch

控制板_PCB

模拟板_sch

模拟板_PCB

BOM

ID Designator Footprint Quantity
1 D5,D3,D4 LL-34_L3.5-W1.5-RD 3
2 L1,L2,L3,L1 L0805 4
3 D6 TO-247AC-3_L15.8-W5.0-P5.46-L 1
4 R21 RES-ADJ-TH_3362P 1
5 LED-RUN LED0805_RED 1
6 C1,C8,C18,C29 C1210 4
7 JP1,JP2,JP3,JP4,JP7,JP8,JP6,JP5 JUMPER-0603 8
8 U1 LQFP-64_L10.0-W10.0-P0.50-LS12.0-BL 1
9 R12,R23,R30,R15 C0805 4
10 X1 OSC-SMD_4P-L3.2-W2.5-BL 1
11 D2,D1 SMA_L4.4-W2.6-LS5.0-RD 2
12 R8,R10 RES-SMD_L6.4-W3.2 2
13 U6 SOT-23-5_L3.0-W1.7-P0.95-LS2.8-BR 1
14 U4 MSOP-10_L3.0-W3.0-P0.50-LS5.0-BL 1
15 Q2 SOT-23(SOT-23-3) 1
16 C13,C14,C12,C15 CAP-TH_BD5.0-P2.00-D0.8-FD 4
17 U3 SC-70-6_L2.2-W1.3-P0.65-LS2.1-BR 1
18 DC1 CONN-TH_DC-005-2.5A-2.0 1
19 U1 SOT-23-6_L2.9-W1.6-P0.95-LS2.8-BR 1
20 C25,C22 CASE-A_3216 2
21 U2 SOT-223-3_L6.5-W3.4-P2.30-LS7.0-BR 1
22 Q3 SOT-23-3 1
23 U8 CONN-TH_2P-P5.00_L7.6-W10.0 1
24 R1,R2,R3,R4 R0805 4
25 R5 R0805 1
26 R6,R7,R8,R9,R10,R11,R14,R15,R16 R0805 9
27 R12,R13 R0805 2
28 R17,R18 R0805 2
29 CTRL,OPTN KEY-TH_4P-L6.0-W6.0-P4.50-LS6.5 2
30 U2 SOIC-8_L5.3-W5.3-P1.27-LS8.0-BL 1
31 K-RST KEY-SMD_L6.1-W3.7-LS8.0 1
32 U7 TO-252-2_L6.6-W6.1-P4.57-LS9.9-BR-CW 1
33 U3 SOIC-8_L4.9-W3.9-P1.27-LS6.0-BL 1
34 Q1 SOT-23-3_L2.9-W1.6-P1.90-LS2.8-BR-CW 1
35 J1 HDR-M-2.54_1X2 1
36 C6,C9,C16,C11 C1206 4
37 C23 C0805 1
38 C36,C7,C10,C17,C2,C24,C19,C21,C20,C37,C38,C27,C28,C30,C31,C26,C1,C4,C5,C6,C7,C8,C9,C12 C0805 24
39 ENC SW-TH_EC11E1820402 1
40 C3 C0805 1
41 C2,C3 C0805 2
42 C10,C11 C1210 2
43 C15,C17,C18,C19,C20,C21 C0402 6
44 C16 C0402 1
45 LED-PWR LED0805_GREEN 1
46 LCD1 TFT_2.4_18P_SPI_ILI9341_240X320_65K_S 1
47 NTC RES-TH_L2.5-W2.5-P1.70-D0.3 1
48 C4,C5 CAP-TH_BD8.0-P3.50-D1.0-FD 2
49 F1 F1206 1
50 J3 HDR-M-2.54_1X10 1
51 C32 CAP-D5.0×F2.0 1
52 FAN CONN-TH_4P-P2.54_A2510S-4P 1
53 Q1 TO-247AC-3_L15.8-W5.0-P5.46-L 1
54 TIN CONN-TH_P5.08_KF127-5.08-2P 1
55 CON HDR-F-2.54_1X10 1
56 J2 HDR-M-2.54_1X4 1
57 C13,C14 C0805 2
58 R13 C0805 1
59 R14,R20,R6,R16,R31,R11 C0805 6
60 R22 C0805 1
61 R27,R28,R24,R7,R9,R2,R3,R5 C0805 8
62 R1 C0805 1
63 R4,R18,R19 C0805 3
64 R17 C0805 1
65 R26,R25 C0805 2
66 U5 SOIC-14_L8.7-W3.9-P1.27-LS6.0-BL 1

附件

文件名 下载
BOM_控制板.xlsx
BOM_模拟板.xlsx
Gerber_控制板_PCB.zip
Gerber_模拟板_PCB.zip
项目源代码.zip
STM32F412RE-ElecPowerLoad.hex
请前往 立创EDA开源硬件平台 进行评论

评论 (144)

LCDS 回复

距提交截止仅剩58天,立即完善项目有机会赢3万元现金大奖、知名创投机构投资意向、名企名校资深评委指导、优秀项目全方位包装宣传机会;更多大赛详情见:https://diy.szlcsc.com/posts/34f1707c52034835810b0b5719b583bb

LCDS 回复

记得更新介绍文档哟~

LCDS 回复

您好,距离赛事结束还有46天,请尽快完善项目和工程详情哦~

LCDS 回复

恭喜您的项目在第五届立创电子设计大赛中获得一等奖!

Dream2018 回复

恭喜楼主 终于可以评论了,楼主的源程序是KEIL打开的吧 ,但是没找到工程文件无法打开,能否发一份完整的,我现在自己按你的文件做了一个,烧了程序后,显示屏上电显示了初始化 然后就黑屏了背光灯不亮了 不知道什么问题,求解。。。

Dream2018 回复

楼主 现在下载程序后遇到如下问题,上电屏幕闪了一下  然后就黑屏了 ,闪屏之间可以看到显示屏显示 英文 初始化中。后面就一直黑屏,上电风扇高速转动了一两秒后速度降下来然后很低的速度一直转动,不知道什么问题导致的,求解。。。

micespring 回复

@Dream2018  晶振是多少的?不是8M的话换8M的。

yy321 回复

只焊接控制板然后通电屏幕不亮正常吗?

yy321 回复

另外跳线都代表什么应该怎么接给个说明

micespring 回复

@yy321  不太正常。你可以先短接控制屏幕背光的MOS管来禁用亮度控制,我感觉这个地方好像出问题的多一些。

Dream2018 回复

@micespring  非常感谢,可以了,我把背光灯控制三极管去掉了 我当时就怀疑背光灯没亮 屏有显示, 然后直接短接就可以。进去后发现温度显示为0,你应该用的10K  NTC吧,BOM里面是100K的。 还有就是不能保存,背光设置值为0,调整后重新上电 还是没保存,不知道什么原因

RXF 回复

恭喜楼主获得第一名,你那个控制板与模拟板分离的那张实物图片里,adc电路1脚的jp7 jp8 不接是为什么啊?ADDR不从vcc gnd选一个接?dac电路的6脚jp5 jp6也都不接是什么原因啊?风扇那里的jp4没接q3是什么啊。U5lm324那里不接的元件是什么原因啊,图中也没有解释还是我没看到😭。另外,问一下大大,这个项目工程文件怎么打开啊?求解惑🥺🥺

micespring 回复

@RXFSS  JP7,JP8,JP5,JP6都是用来更改I2C地址避免冲突的,这里都使用的是设备的默认地址,所以不用接。风扇因为我用的是4线风扇所以不用三极管控制。LM324附近的阻容元件是用来在出现自激时调试用的。附件的工程是纯代码文件,使用任意IDE新建工程后添加这些代码即可(添加的时候根据IDE的不同,Lib中的外设库代码需要根据实际情况来确定是否添加)。也可以自己写make来直接调用GCC编译。没有解释是因为这是电赛的工程,编辑功能是锁定的,我没法更改😂😂😂

micespring 回复

@Dream2018  好像还有个哥们儿说是不能保存,奇怪。。。还好不是电池供电,不要背光控制也可以。

xzhenlin 回复

楼主,你好!我用Atollic TrueSTUDIO for STM32 9.3.0重搭了工程,但编译时出了36个错误,都是同一类,undefined reference to 类,如undefined reference to `lv_init' ,能指导一下不?谢谢!

xzhenlin 回复

@micespring  原因就是你源码是2K的EEPROM,但bom表是64K,不兼容。最多只能用8K的EEPROM。

xzhenlin 回复

我用keil重搭工程了,修了lvgl.h头文件路径,可以编译了,有1000个警告,但不影响使用,下载下来也能正常工作。

micespring 回复

@xzhenlin  警告这么多应该是keil的编译器跟LVGL不兼容。能用就好。

Dream2018 回复

@xzhenlin  能否共享下工程,我弄的有点问题,我的邮箱624676692@qq.com,万分感谢!

lnb801022 回复

四线电池测试不显示容量和能量,不确定那里问题,大佬能告诉一下具体维修思路吗。背光那个问题不用短接mos管,只需要把24cl64换成24c08就可以了。wx_camera_1608125113185.jpg

micespring 回复

@lnb801022 你这个做的真好看。你这是偶尔发生的还是一直这样?我这边没法再现你这个问题。

lnb801022 回复

一直这样,所以不确定哪里有问题

kn4869 回复

这个厉害先收藏了

yibin 回复

做好一套,正常使用中!感谢!303284124421883362.jpg

micespring 回复

@yibin 不客气,做的真不错.

lnb801022 回复

QQ图片20210117221838.jpg正常使用中,非常感谢

chen010311 回复

这一版NTC是10K还是100K?

micespring 回复

你好,是10K

chen010311 回复

您好 又碰倒一个问题 12VDC口的输入电容 C5挡着散热器了 我能否把C5拆掉 把C4换成470UF或者680UF?不知道470UF够不够?

micespring 回复

拆掉就行,除非你用的电源质量特别差,否则加不加对性能影响不大,

chen010311 回复

现在点亮了还遇到一个问题
电压校准之后 没输入的时候电压会在56v和0v之间跳动 还有就是校准电流的时候无法进行 校准用的可调电源 一直在乱跳

micespring 回复

跳56V是传感器的原因,啥都不接的时候偶尔会返回最大值,忽略即可。你说的校准时候乱跳的情况暂时还没遇到过。校准电流的话只要电流读数是对的就行了。

chen010311 回复

初始电压电流必须校准 否则不能使用是吗?

micespring 回复

可以不校准,但是误差会很大。

centelis 回复

请问屏幕有链接吗?

micespring 回复

游戏机项目那边有

LKning 回复

大神啊,等有时间也做一个!

napier 回复

请问有没有推荐的国产替代 MCU?STM32 现在已经疯了-___-b

micespring 回复

很遗憾,这个项目选用STM32F412RE的原因是它有高达256KB的内置(连续地址)SRAM可以用来流畅的跑LVGL,国产暂时没找到内置SRAM这么大的。
项目立项的时候F412RE才12块钱一颗,我也没想到后面会涨成这个样子。。。。。。

napier 回复

了解了,感谢回复。。。

FENG22784321 回复

华大,GD都可以,华大可以在淘宝买到,GD貌似现在也涨得很厉害,换华大得重写程序

LONGzxb 回复

有哪位大神帮我修一下我作的,我早就已经自己制作了五个,可是可是*****
没一个成功的,最近又没时间在弄了,请哪位大神帮帮忙啊,维修好赠送一套

LONGzxb 回复

如果不想要这个的话我这里还有树莓派4B+可以赠送

bi4sqm 回复

单独控制板用stlink烧完后,3.3V上电屏幕就闪一下,是正常的表现吗?

micespring 回复

闪一下之后是黑屏还是有画面显示?如果是黑屏的话,请参考项目描述开头的4点注意事项。

micespring 回复

建议先参考项目描述开头的制作注意事项来排查问题,这个项目我无法编辑,一些后期的更改都放在了项目描述里面了。

bi4sqm 回复

闪一下后黑屏,我在确认下。

napier 回复

恩,之前查了一下 GD32 也是吓人,TNND 芯片价格比他家股票厉害多了。。。。手里没存货的芯现在是没法玩了

bi4sqm 回复

进到校准界面,电压电流下ADC都没有读值,一直显示0000,测量VOL-SAMP,分压后的电压看似正常。是ADC器件的问题?

micespring 回复

读取ADC失败,可以尝试自己写代码调试一下看看ADC是否正常。现在有些地方会用ADS1015打磨后当作ADS1115来卖

bi4sqm 回复

优信那边买的,按理说不应该 。我再去立创买几颗吧。4线风扇,短接了jp2,3后,上电全速转过后会保持一个速度一直转,好像和你视频里行为不太一致唉。

micespring 回复

有的风扇是这样的,无法完全关掉。

bi4sqm 回复

了解了,等立创的1115到货了再试试。

class44 回复

这个是要先烧录再把芯片贴上吗

bi4sqm 回复

换上了立创买的1115依旧不行,jp7也已经短路了。MCU i2c部分有问题?

class44 回复

大哥你这个能教教我怎么弄的吗 可以有偿

bi4sqm 回复

兄弟,我自己还没搞好呢,你可以直接对照电路图检查一下。

bi4sqm 回复

ADC找到原因了,mcu的SDA pin虚焊。。。。

micespring 回复

板子上有烧录接口,可以焊上芯片后再烧录。

micespring 回复

找到原因了就好

bi4sqm 回复

还有一个问题,校准界面下,确认按钮是哪个??

bi4sqm 回复

看了一下代码,校准是从0-31V连续抓ADC的值啊,超过32个后才是确认,这下有点尴尬了。我的电源到不了32V。。。。

micespring 回复

淘宝上买个4块钱包邮的那种可调升压模块即可,或者用你手头的电源(电池之类的就可以)串联后来获取更高的电压。
举个例子,如果你的电源输出是0~12V,那么串联一节5号电池就可以得到1.5~13.5V的电压。

micespring 回复

当然你也可以自行修改代码来减少这个值的范围

bi4sqm 回复

电压还好,我本来需求的电压也就常规锂电池的电压,电流就不好弄了,10A的电流,我得想想办法了。

RXF 回复

哥直接下载那个hex下进去单控制板屏幕一直卡在intilizing界面,是一直初始化怎么解决啊

micespring 回复

开头的注意事项读了吗?先照着排除一下问题看看

class44 回复

老哥你怎么烧录的可以教教我嘛

class44 回复

老哥你弄好了可以教一下嘛 拜托拜托

RXF 回复

@micespring 你好,注意事项之前都看了,屏幕是同型号的,板子没有改动。直接往芯片里下载附件里的hex,卡在了初始化界面,这个原因是不是需要修改代码呢,程序跳不过某条自检界面。还是需要模拟控制接到一起才会正常开机呢?

RXF 回复

@class44 焊接好芯片后用控制板上的gnd clk dio pwr 那个四线下载。还需要短接pwr旁边的两个点,直接烧录hex就可。

class44 回复

老哥能不能加个qq1750938950  帮帮忙 可以有偿
拜托了

class44 回复

大哥这个屏幕买成了触屏版的会有影响吗

micespring 回复

没有影响

micespring 回复

我也不太清楚,我这边测试是可以不带模拟板正常启动的,建议重新检查一下焊接看看是不是有问题,最主要的是要看晶振是不是8M的,还有EEPROM是不是AT24C02
image.png

bi4sqm 回复

做事做好了,缺10A的电源做校准。你遇到什么问题?

likas 回复

换成STM32F401RET6可以吗? 可以不用很高的刷新率,现在412好贵啊

micespring 回复

401只有64K的内存,太紧张了,411差不多。

likas 回复

@micespring 转到keil 我编译了一下发现RAM 好像只用了91K,查到STM32F401RE好像有96K的RAM,我折腾一下看看,某宝下单了412但是店家不发货😭,
QQ截图20210405191039.png

micespring 回复

今年不适合玩儿电子,太难了.

micespring 回复

91K肯定是不对劲的,光显示缓存我记得都分配了100多K

sf116 回复

电流电压采样直接用INA219,系统更简洁

micespring 回复

219性能不够

likas 回复

412到货了,制作成功,制作途中遇到有时候读取不到电压现象,后来检查虚焊或者排针接触问题,最后把JP7接上就OK了,应该是地址冲突问题,感谢楼主的项目

micespring 回复

恭喜恭喜,也谢谢你的分享。是我的疏忽,忘了提醒大家I2C设备的地址问题了。我随后会把这点更新至项目描述。

vihor3 回复

一共花了多少钱兄弟

likas 回复

200左右吧

zxcvbnml 回复

楼主 这边有出售成品吗 想买一个来研究一下




class44 回复

老哥想问一下那个adc和dac值的转换的算法是为什么那样算啊还有那个1.3几的那个数是怎么得出来的呢?

local 回复

今年芯片价格疯涨,只能用国产替代了下单了华大的HC32F460KETA,i2c有3个,gpio有52个,flash有512k,sram有192k应该够了吧,还得修改代码,只能慢慢弄了QQ截图20210428165039.png

micespring 回复

够,我做了分层设计,只修改底层硬件驱动代码就可以跑了

lu_student 回复

你好 我想问下数字地 模拟地 和 功率地的问题 ,为什么 要打那么多过孔呢    怎么解决模拟地 数字地 功率地  的问题  大佬...

micespring 回复

这个一两句话说不清楚,简单来说,就是不同的区域的地不要直接通过铺铜的方式连接到一起,通过一条细导线或者0欧电阻连接比较好,这样可以降低不同区域间的干扰。

wenkusheng 回复

楼主您好 能不能把bom 表 型号不对的零件修改成正确的

micespring 回复

项目是被被锁定无法编辑的。我已经在项目描述开头把不同的地方注明了。

chn12234 回复

楼主你好,在恒流控制电路模块中,由左上角的运放和s8050三级管构成的连接到mos管控制端的电路起到什么作用呢?

micespring 回复

单片机通过拉低EN信号可以直接关闭电子负载,此外STM32管脚未初始化时为低电平,这样可以防止芯片在初始化阶段意外开启电子负载,相当于“双保险”

class44 回复

楼主您好,我想问一下这个校准是一个电压或电流按一次确定吗,还是怎么校准,我看代码好像是一个电压或电流按一次,有点不太确定

micespring 回复

是的,按照提示输入标准电压电流后,按一下,然后继续下一个档位

class44 回复

好的,谢谢了

class44 回复

EZQA3NK`FQQ29J_XZOT$65C.png
楼主你好,还想再问问这个四线电压乘的1.38和两线电压乘的1.37是怎么算出来的呢?
然后为什么我这个显示屏上电流只有实际的一半 有点找不到原因。 麻烦你了。

micespring 回复

这两个值是根据实际的情况填上去的,简单来说就是万用表量一下真实的值,然后程序这边看下ADC的采样值,然后算出比例。
只有一半大概率是你买错了INA199的型号,INA199放大器有好几个型号,放大倍率是不一样的。

class44 回复

好的谢谢了我去查查我买的手册是多少倍,谢谢了。

class44 回复

我看了一下买的INA199的型号没有错,有点奇怪了。

lu_student 回复

大佬我有点不懂您的ADS1115 4个通道分别具体是干什么的(我没看您的程序才学完51还不会32),我的理解是1个差分输入2个单端输入,AIN3和AIN0构成差分输入输出采样电阻电压的数字量,AIN1单端输入输出实际电源电压的数字量,AIN2输出电源负端电压的输出量。总感觉哪里不对。希望大佬指正。

yibin 回复

发来我帮你搞定!

micespring 回复

一个(端子上的)电压,一个电流(来自INA199),一个四线电压(来自运放),还有一个通道闲置。所有的通道都是输入,没有输出。此外也没用1115的差分测量功能。

lu_student 回复

感谢

bi4sqm 回复

终于找了个10A的模块把校准搞定了,测试电池的时候发现没有内阻显示,不知道LZ有没有打算在固件中增加内阻的测量?

class44 回复

大佬想问一下为什么最大只有120 W的功率呢,不应该是360W吗?

shen_qi 回复

大佬,控制板一直卡在初始化怎么办

micespring 回复

你看一下开头的注意事项,看看有没有什么遗漏的地方?

shen_qi 回复

@micespring 看了一遍发现安错晶振了,一开始安上的是有源的换个无源晶振的就好了。

micespring 回复

找到问题了就好

wanfoido 回复

image.png
你好,我想请问一下这个SYS-EN信号是控制什么的,为什么这里需要用一个比较器和三极管来接到mos管的门极呢

micespring 回复

单片机通过拉低EN信号可以直接关闭电子负载,此外STM32管脚未初始化时为低电平,这样可以防止芯片在初始化阶段意外开启电子负载,相当于“双保险”

ShengYu0803 回复

楼主,我比较偏硬件方向,没用过这个编程软件,请问有办法导入到keil吗

micespring 回复

可以,我发的是纯代码,不含IDE专有文件。

xieXiaoGE 回复

真不错

hombo125 回复

你好,可以做到250W左右吗,120W功率太小了,二块板叠加是不是可以到240W

micespring 回复

两个负载并联就行

65727A 回复

你好 接项目吗?做个电池测试的仪器

LONGzxb 回复

现在还要不要了   要的话吧地址发到我的邮箱里 1395854487@qq.com

liaozhelin 回复

不知道楼主有没有接触过ESP32 ,好像是有512K的SRAM,我之前用它跑过LVGL,SPI接口可以到80M,刷屏还是很快的,因为楼主这个电源设计非常好,大部分的采集都是采用外置IC,因此说不定可以用ESP32进行替代,打算尝试一下,楼主的硬件和软件功底十分扎实,佩服!

yibin 回复

地址发你邮箱了。

Time-L 回复

谢谢大佬的分享。我想用你这个下5块的单焊出来自己用,可以吗?买了两台的炬为150W的,一百多一台。并联用还是觉得太小了。后面自己又做了个500W的简易电子负载(就是LM324 16管的那种),但没这个好使。喜欢功能多的。更重要是学习。

micespring 回复

这个板子大,5块钱估计打不了。自用的话你随意,开源的目的就是这,只要不是以盈利为目的,你可以随便用。

woaidianzi1 回复

不要钱我都打了,不过是在捷配打的,因为单片机买不到一直没焊

xxh529 回复

你的编译环境搭好了吗?可否指教一下

anduoha 回复

你好, 谢谢大佬分享,我自己做了一套,最开始调试时晶振使用错误,用成有源的,上电后一直显示初始化中,现在晶振使用的8M无源的, 经示波器检查震荡正常;EEPROM使用的是AT24C02,HG24C08也换过, 现在液晶屏始终无法点亮,短接背光的三极管后屏幕是白屏;是EEPROM型号错误吗?

micespring 回复

你往前翻翻评论,有不少白屏但是后来解决了的,你看看有没有你的问题。还有个建议是把代码导入到Keil或者CubeIDE里面,调试一下,看看是哪个步骤出现了错误,应该有助于排查问题。

wchy1128 回复

大佬,请问是下载附件打板吗?

2020qz 回复

校准电流的时候有问题,阻抗好大,没有电流流过,请问这是啥问题呢

2020qz 回复

运放虚焊了

hepeizhi 回复

有完整的工程文件吗,能发我一份吗感激不尽

hepeizhi 回复

image.png这个是什么情况啊

hepeizhi 回复

QQ图片20211111162214.png

Theyn 回复

有点没搞懂,功率最终是被二极管D6    STPS3045CWC消耗了吗?

Theyn 回复

MOS管消耗,并联MOS管再加大散热片可以提高最大功率吗

micespring 回复

不能简单的并联,每片MOS都有微小的差异,尤其是不同批次的,很容易出现通过两个MOS的电流不一致导致一个MOS已经过载而另一个还在闲置。另一一方面,因为散热片的最大热耗散功率在那儿限制着所以单纯堆MOS效果不大。

micespring 回复

看到的晚了,是的

yibanyuzhou 回复

电流只有实际的一半的问题找到了吗

就目前f4这个价格…  移植到esp32有没有可能?

micespring 回复

可能,推荐ESP32-S2或者S3,不过我ESP32不熟,你可以直接下载我的代码修改就可以。

svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow