1kW Arduino MPPT太阳能充电控制器(ESP32 + WiFi)

62,346

819

100

产品介绍:1kW Arduino MPPT太阳能充电控制器(ESP32 + WiFi)

第一步:项目规格

我的目标是建立一个DIY的MPPT,我将继续使用我的离网太阳能装置。它必须是好的,所以我在设计过程中加强了它。这包括使用16位ADC进行精密传感器测量,一个非常快速的双核32位微控制器进行快速系统计算,实现更高的PWM分辨率,并增加了广泛的可选择的PWM频率范围,用于开关优化。还有一堆物联网遥测选项和一个开源固件,它将与我未来的MPPT构建交叉兼容。

技术规格:

  • CC-CV的MPPT扰动算法
  • 80V, 30A输入(太阳能,风力涡轮机,电源)
  • 50V、35A输出(锂离子、磷酸锂、铅酸等)
  • 98%峰值转换效率(同步降压)
  • WiFi和蓝牙Blynk手机应用遥测
  • 充电器/电源模块模式(可作为可编程降压转换器运行)
  • 16bit/12bit高精度ADC测量(ADS1115/ADS1015)
  • 自动ACS712-30A电流传感器校准
  • 电池和输入断开恢复保护协议
  • LCD菜单界面(带有设置和4个显示布局)
  • Flash Memory(非易失性设置保存功能)
  • 可设置的PWM分辨率(16位-8位)
  • 可设置PWM开关频率(1.2kHz - 312kHz)

功率容量:

  • 12v输出/电池- 420w @35a
  • 24v输出/电池- 840w @35a
  • 36V输出/电池- 1000W @35A(当安全解锁1260W)
  • 48V输出/电池- 1000W @35A(当安全解锁1680W)
  • 60V输出/蓄电池-(需要改装)
  • 72V输出/电池- (mod required)
  • 80V输出/电池- (mod required)

注意:

  • 80V输入是指太阳能电池板的绝对Voc。稍微超出这个范围可能会损害您的MPPT。请注意,Voc和Vmp是两种完全不同的东西。
  • 请限制当前的设置为30A,该设计只在电源模式下输出48V 20A的台架测试过。
  • 到目前为止,这种充电模式只在去年夏天的阳光高峰期用8S LiFePO4电池组在22V-27V 23A-19A连续测试过。
  • 对设计的反馈是非常感激的,因为我是开关电子的新。我很乐意纠正教程中的错误。
  • 固件锁定在1kW,不管理论功率额定。这种安全措施是由于缺乏并联mosfet和电感线厚度在这个构建。无论如何,在未来解锁这个特定构建的1kW上限之前,我将进行未来的测试。
  • 项目限制最大输入电流感应范围为30A。无论如何,由于MPPT的降压核心设计,输出将被限制在35A的绝对输出电流。
  • 如果我们在输入端只有一个30A电流传感器,如何测量更高的输出电流?由于buck拓扑的特性,假设输入电压高于输出电压,则输入电流低于输出电流。用一个简单的公式,用一个电流传感器来近似输出电流。这将在教程中进一步解释。
  • 为什么在视频中显示30A输出?出于安全原因,35A测试电感器设计必须降低额定值。MPPT可能输出35A,但对于该特定项目,固件默认设置为30A。你可以在继续写作时阅读更多关于这方面的内容。

第二步:有什么新鲜事?(富谷MPPT V1.0)

我的第一个真正稳定的构建

这是我的第6个MPPT SCC设计,在此之前我做了5个原型。这个构建经历了6个月的测试。我的MPPT项目仍然连接着我的640W太阳能装置,自从它安装后,就一直在为我的离网工作空间供电。为了确保设计没有问题,我等了好几个月才将其公开。就是今天!

项目的灵感

当我买了一些太阳能电池板几个月前,我正在寻找一些MPPT太阳能充电控制器,只是发现他们是昂贵的!作为一个修补匠,我决定自己做一个。我知道材料会很便宜,但设计过程会有很多工作。我搜索了不同的期刊和教程。一个真正突出的是Open Green Energy的一步一步设计教程!(Arduino MPPT太阳能充电控制器我阅读了整个教程,它令人印象深刻!他提到了他在构建过程中遇到的问题,以及为什么这个项目从未被认为完成。我试着去思考解决这些问题的方法,于是我做了6个不同的板修正,最终实现了没有问题的构建。

步骤3:我的早期原型

我以前的设计是基于一个使用ATmega328P-AU微控制器IC的自制Arduino Nano,类似于开放绿色能源所使用的。自从我开始设计更高功率的mppt以来,我发现Arduino Nano有很多的局限性。另一方面,它们足以降低MPPT设计的功耗。

与我在稳定版本中使用的版本相比,我的一些原型具有较低的规格,而另一些则具有较高的规格。我尝试了不同的权衡,试图在成本和性能之间找到适当的平衡。

为什么我不再使用Arduino Nano用于高功率mppt:

  • Arduino Nano是一个8位微控制器,它在计算数学运算时相对较慢。记住一个MPPT是智能和美化的SMPS转换器(在输出情况下的降压转换器)。它需要能够在运行一堆进程的同时处理大量数据。这些过程包括,监管,MPPT跟踪,安全保护,遥测,测量等等。虽然我发现Arduino Nano在处理速度上已经足够了,但它在调节速度上做得很差,如果输入电压升高,输出对限制电压或电流的响应相对较慢。在我早期的原型中,我绕过了这个问题。当Arduino Nano无法跟上并超过参数限制时,MPPT充电停止,因为它试图恢复。这经常触发,扰乱了我的能量收获。下一步,我将向您展示一种更便宜、更快的选择。
  • Arduino Nano和uno中使用的ATmega328P有一个10位ADC。这就是众所周知的模拟引脚。10位意味着有1024个值它可以表示从0V到5V (5V是默认的电压参考)。当ADC引脚与电压和电流传感器设计用于宽范围的电压(例如:80V 30A)时,你只有1024值来代表0V-80V和0A-30A。这给了我们78mV的电压和29mA的电流的传感分辨率。这意味着你有一个非常粗糙的方法来检测电压和电流。
  • Arduino UNO/ Nano也被限制在8位PWM分辨率和62.5kHz的最高频率。频率不是很差,但如果你想要好的性能,8位PWM分辨率是不够的。8位PWM分辨率在占空比尺度上给你256个独特的值。当您将此应用于高功率MPPT或降压设计时,值的单个移位将导致电压的大步长。在基于单片机的SMPS电路上,可以通过使用更大的电容作为缓冲区来补偿,并加快环路周期处理时间。
  • 最后,还有一种更便宜的替代品,叫做ESP32。在接下来的几个步骤中,我将解释为什么使用它。

双电流传感器版本:

  • 我的一个早期原型使用了双电流传感器配置,一个在输出,一个在输入。这是必要的,因为降压变换器有一个不同的电流从输入和输出。在降压型MPPT中,输出端的电流通常高于输入端的电流。这意味着我需要两个不同的电流传感器,最优的两个不同的范围。我试了ACS712-30A, ACS758-100A, LEM DLSR50-50A等…他们都工作得很好,但他们也使构建更加昂贵。
  • 在输入端一个电流传感器就足够了。你可以简单地通过得到输入电流和输入电压来推导和近似输出电流,并将其等同于输出电压和输出电流,同时求出输出电流。(三个给定值,一个未知值)。这来自于“电源输入=电源输出”的假设。这有一个缺点。所有降压转换器都有功率损耗。由于没有考虑功率损耗,从输入电流传感器得到的输出电流将不准确。但是记住,在一天结束的时候,你只是用输出电流来限制充电电流和进行库仑计数。在降压变换器中,输出端的功率总是低于输入端的功率。这意味着我设置我的充电电流,比如说30A,你将得到的实际电流小于30A(可能是29.5A左右,比如说)。 Needless to say, you will not suffer from a tad of current discrepancy at the output.

更好的电流传感器:

  • ACS712是修补匠使用的最流行的电流传感器之一。简单地说,因为它便宜、有效,可以用两种方式感知电流,具有隔离性,并且易于使用。但这并不完美。首先,它很吵!即使当你测量一个完全平坦的直流电路(电池和负载电阻)时,也会有太多的噪声,这些值可能会有点抖动。如果您使用的是模块,您可以通过使用Allegro数据表中规定的更大的滤波器电容器来减少噪声,以限制带宽。国防部将在后面解释。另一个问题是,它使用5V Vcc引脚作为电压基准,因此,如果5V稳压电源线的电压发生变化,电流传感器的模拟输出也会发生变化。这是一个很大的障碍,需要在设计过程中加以注意。由于它是基于霍尔效应的,芯片周围的任何类型的EMI都会导致数值抖动,当设计一个MPPT时,ACS712靠近电感器,需要某种磁屏蔽来保持其稳定。
  • 升级!在我最近的一个原型中,我使用了一个名为LEM HLSR50的工业级电流传感器!这是我在MPPT上试过的最好的一个。它拥有ACS712的所有优点,却没有缺点。它可以测量50A (125A峰值)的双向电流,具有隔离性,使用方便。但这次几乎没有什么声音!在纯直流测试中,模拟输出几乎没有抖动。它有一个内部电压参考,所以模拟输出独立于5V Vcc线。它也有一个单独的引脚电压参考。这意味着可以使用差分ADC,差分ADC消除了计算双向电流传感器零点的需要。 This also meant that the HSLR50 barely required sensor calibration. It was magnetically shielded too! EMI was barely a problem, even putting it close to a neodymium magnet barely affected the performance unlike of the ACS712. There was only one down-side, the price. From where I live it's only $6 at e-gizmo, but from the US or other western countries it costs around $16 from DigiKey. This was the main reason why I didn't use it on my current build. Perhaps, you'll see it on my futures builds someday.

如果你对我的构建日记感兴趣,我会在我的个人facebook账户上发布项目porotypes。其中包括所有其他项目,我没有或从未做一个指导教程或视频教程。

https://www.facebook.com/AngeloCasii/photos_albums

步骤4:警告

前面的设计说明很无聊!如果您只对构建MPPT项目感兴趣,请跳过步骤11。

  • 以下步骤将解释最终方案设计过程中涉及的许多内容。
  • 请原谅我把一些专业术语分解成外行人的术语。我想在这个教程中随便讲一下,让其他人更容易理解。(例如:我将使用MPPT这个词来指代最大功率点跟踪太阳能充电控制器或MPPT SCC。是的,有些人会因为没有正确使用这些术语而被触发)。

项目课程的先决条件:

本教程将简要介绍设计MPPT太阳能充电控制器所需的这些概念。如果您在理解本教程中的某些概念时遇到困难,您可以通过谷歌搜索这些主题,以获得更详细的解释,从而完全理解涉及本项目的概念。

  1. ESP32单片机基础知识
  2. ESP32单片机PWM分辨率和频率
  3. MPPT算法的概念
  4. 光伏电池IV曲线
  5. 外部ADC基础知识
  6. RC滤波器与带宽
  7. 干扰抑制方法
  8. 使用分压器的电压传感
  9. 基于霍尔效应传感器的电流传感
  10. 同步降压变换器101
  11. 同步降压回流控制
  12. 半桥MOSFET驱动器的基础知识
  13. n沟道MOSFET的工作特性
  14. 低导通电阻n沟道mosfet的优点
  15. 反向阻断场效电晶体
  16. 使用n沟道mosfet的ORing二极管仿真概念
  17. 电感的基本知识
  18. 环形磁芯电感设计
  19. SMPS的效率优化方法

第五步:简化mppt的工作原理(适用于像我这样的工程师)

这一步值得一个单独的教程,将包括在我的视频的第2部分。现在我将给出一个关于光伏IV曲线的简单解释。

MPPTs如何工作:

当我开始构建我的第一个MPPT时,我无法理解光伏电池的IV曲线的行为及其与buck的关系。课本上会给你一些术语,这些术语会疏远很多人。在工程课程中,我理解了其中一些,但有些对我来说仍然是新的。虽然视频的第二部分还没有发布,但我有一个很酷的实验,它包含在我计划制作的基于真实生活实验经验的故事讲述视频中。

当我用太阳能板作为输入,一个可变电位器控制占空比(无电压反馈),并在输出端使用镍铬作为负载时,我才对它的工作原理有了初步的了解。我连接了一个液晶瓦特表之间的太阳能电池板和实验buck的输入。当我转动旋钮(增加降压的占空比),LCD瓦特表的功率读数开始从0W增加到20W当我继续转动旋钮以进一步增加占空比时,功率开始缓慢下降。当我继续到达我的旋钮的末端(达到100%最大占空比),我得到了0W的功率,几乎0伏和9A的电流在输入。奇怪的是吧?高电流,但几乎没有电源!好了,现在我们有0 w旋钮时把所有的权力,我开始向后转动这个旋钮来减少工作周期,瓦特计显示增加的权力又再次从0 w到305 w,当我继续减少旋钮的力量又开始减少从305 w到300 w。所以我再次打开它(向后和第四)保持305W。当太阳升得更高时,功率开始变化,所以我不得不将旋钮向后和第四次移动,以从面板获得最高的功率。 It was like a game of see-saw. When the sunlight's intensity changes, I had to sweep back and fourth to get the highest power I could get from my panel.

这就是mppt的工作原理!我转动旋钮,控制降压调节器的占空比,同时比较读数,以从面板获得最高的功率,这是mppt工作的最基本解释。旋钮代表最大功率继电器降压转换器的占空比控制。我和瓦特计代表MPPT系统的反馈。mppt的工作方式与此非常相似,但它用微控制器之类的机器代替了人类顺时针或逆时针旋转旋钮。这样,人类就不需要不断调整旋钮来获得最大的能量。

在MPPTs中,这种功率点跟踪称为扰动算法,也称为爬山算法。MPPT装置(一种美化的智能降压转换器)将占空比向后和第四个扫掠,同时比较获得的功率,同时使其接近太阳能电池板可能获得的最高功率。

当我找到合适的词语时,我会更新这个解释。同时,这篇文章将帮助你更好地理解IV曲线图的技术细节(读这篇文章

第六步:高效同步降压技术

很多人都是新手,但是现在有一种更有效的buck拓扑。这被称为同步降压转换器,广泛应用于高端商用级mppt。这听起来很奇特和复杂,但在设计和成本方面,它实际上是简单和便宜的(很难进行)。幸运的是,本指南将向您展示如何使一个工作,因为我们将在我们的MPPT上实现这一点。

两Buck调节器设计:

  1. 异步巴克转换器
    • 常用的
    • 典型的效率(75 - 87%)
    • 不是最节能的
    • 由于二极管的存在,显著的功率损失
    • 很容易实现
  2. 同步降压转换器
    • 不太常见
    • 典型的效率(88 - 98%)
    • 非常节能
    • 用MOSFET替换二极管降低了功率损耗
    • 在没有事先知情的情况下实施是一场噩梦

先决条件:

本步骤将解释两种不同buck变换器的操作,假设您已经学习了buck变换器和N沟道MOSFET的基础知识。如果您还没有,请在谷歌上搜索“buck转换器如何工作”和“N沟道MOSFET如何工作”。当你开始阅读这两个步骤时,这一步会更有意义。

一般Buck转换器

Buck变换器是将较高电压输入转换为较低电压输入的调节器。这不是另一种方式,因为这将被称为升压转换器。与线性稳压器不同,如臭名昭著的7805 IC,降压稳压器不会通过加热来释放电压和电流进行调节。无论是降压、升压还是降压,这些调节器都尽最大努力节约电力(功率输入-功率损耗=功率输出)。请注意“负功率损耗”,尽管降压调节器是有效的,但它永远不会达到100%的效率,并且仍然会有损耗,除非你生活在一个乌托邦世界。此外,降压稳压器会产生电流放大效应(某种程度上),当降压器输出端的电压降低时,其输出端的电流可能大于输入端的电流。buck变换器是一种开关调节器,它使用PWM信号、一些晶体管、一些电容器、一个电感和一个反馈来调节电压和电流。

异步降压转换器-示例

当“buck转换器”这个词出现的时候,首先映入人们脑海的是那些便宜的蓝板LM2596 buck转换器模块。大多数人熟悉的这些模块是基于效率较低的异步降压转换器拓扑的。它使用一个二极管和一个MOSFET或BJT(它是在LM2596芯片与PWM反馈驱动器)。这些东西通常达到75-85%的平均效率。除了有一个较低的效率评级,你也会注意到,这些模块很容易加热,甚至当使用其广告的电流评级。这种升温是由效率不足引起的热耗散(开关损耗、传导损耗等)造成的。

异步降压转换器-为什么它效率低下?

不要误解我的意思,异步降压转换器仍然比线性稳压器有效。但它的效率还可以更高!这些异步buck无法达到接近98%的效率评级的原因是由于二极管的存在造成的损失。二极管对于降压变换器是必不可少的,因为它可以防止电流回流。有一种叫正向电压降(Vf)的东西,大多数硅基二极管的正向电压降范围为0.4V-1.2V。就这些吗?这听起来并不多,但当你接近高功率电子领域时,提到的电压下降会导致大量的功率损失。二极管产生的电压下降不仅仅是电压下降,它还会产生热量,而热量在电子学中是一种无用的能量形式。把它想象成你家的水管漏水,你就不能从你的水表中得到相同数量的水,结果你失去了水,支付了更高的水费。类似于太阳能装置,浪费能源,你将无法从你的太阳能电池板所能生产的东西中获得最大的收获。

同步降压转换器

解决异步Buck缺乏效率的方法是对异步Buck稍加改进。通过简单地用MOSFET替换二极管,二极管引起的电压下降几乎被消除。为什么一个MOSFET ?与BJT晶体管不同,MOSFET在激活时没有二极管的电压降。当MOSFET导电时,通过在栅极和源极引脚上施加电压,MOSFET导电。你可以把mosfet看作一个机械开关。它们也跑得很快!想象一下惊奇漫画中的闪电侠在纳秒内打开和关闭电灯开关。现在我们已经解决了二极管电压下降的问题,下一步是什么?通常使用n沟道mosfet而不是p沟道mosfet。 MOSFETs have something called Rds(on), also known as the on-resistance. When the MOSFET conducts it behaves like a resistor now, and resistors also causes voltage drops too. N-ch MOSFETs have immensely lower on-resistances compared to P-ch MOSFETs. As a result the N-ch MOSFET has a SIGNIFICANTLY lower voltage drop effect compared to using a diode (most of the time). Now we have lesser power losses dissipated as heat. Operation is simple, when Q2 turns on Q3 turns off and when Q3 turns on Q2 turns off. Of course, deadtime must be implemented in order to prevent Q2 and Q3 from turning on at the same time, causing a quick short (cross-conduction). Easy? No, there's more to it!

同步降压转换器的挑战!

现在在同步Buck中有两个主要的挑战。现在,我们已经用第二个MOSFET替换了二极管,一个新的问题需要解决,主要是开关他们正确。异步降压变换器容易实现的原因是二极管,没有任何花哨的电路或代码,自动阻止电流回流。另一方面,同步降压上的mosfet需要彼此同步切换,否则就会烧坏,因此得名Synchronous。

第一个问题与正确触发N-ch mosfet有关。Q3不是问题,因为排水管直接与地面相连。一个简单的图腾柱驱动器将足以通过提供栅极和Q3源引脚之间的电压开关栅极。另一方面,Q2在顶部,它的源引脚绑在Q3的漏管引脚上。这种结构称为半桥接。为了正确地开关Q2,必须使用MOSFET驱动器,特别是具有电荷泵的驱动器。对于那些还不熟悉背景的人来说,这可能是说不通的。电荷泵使用电容器间隔充电,同时在高侧MOSFET Q2上有图腾柱驱动器用于开关。这确保了MOSFET得到它需要的电压完全打开。当我们知道mosfet可以表现为开关时,mosfet也可以表现为可变电阻(在有源区工作)。 This happens when the MOSFET is provided with a lower voltage across the gate and source pin from the specified Vth (threshold voltage). The charge pump MOSFET driver ensures that the MOSFET saturates and gets the voltage it needs to fully conduct and have the lowest possible on-resistance for lesser power losses in the buck (Vgs are usually rated at 10V).

第二个问题是臭名昭著的低侧燃烧MOSFET,在几乎所有DIY同步buck MPPT构建中都存在。这是造成的低侧MOSFET Q3未能模拟二极管,它已经取代了异步降压。你可以在下一步阅读更多,我分配了一个单独的步骤,因为它值得关注。

同步降压转换器-作为一个异步降压

其他工程师在读到我之前写的几句话时可能会扬起眉毛,因为我没有提到mosfet实际上有二极管在里面。注意二极管是如何平行于MOSFET的漏极和源极管脚的。这被称为“体二极管”。这与场效应晶体管的物理结构和材料内容有关。当MOSFET Q3被无限期关闭时,Buck表现为异步Buck。但是当你同步开关它时,MOSFET Q3导通并提供一个较低的电阻路径,因此它现在表现为同步降压(现在你得到一个较低的电压降效应)。你可以持续关闭Q3,将同步转换为异步,但这样做是没有意义的。

所以很简单,对吗?

是也不是,哈哈哈!实现非常简单,但是正确的操作过程(不要搞砸了!)并不像您想的那么简单。令我惊讶的是,你不会在大学课本中找到这些东西,而是会在学术期刊、半导体应用笔记和设计指南中找到。开放绿色能源是唯一的指导用户,为DIY世界提供一个友好的DIY指南,但即使他也有一些麻烦,使他的工作没有问题。多年来,同步降压转换器一直是业界的商业秘密,因为很少有电子爱好者分享如何正确地让这些东西工作的详细指南。幸运的是,作为电子工程师和修补匠,我们的工作是阐明这个设计,而不是用沉重的工程术语轰炸发烧友。在接下来的步骤中,我将向您展示我们如何通过与我的同事和Open Green Energy的合作,修复DIY同步降压mppt的常见问题。

步骤7:解决低侧MOSFET烧损问题

开放式绿色能源面临的问题:
在批量测试后,我们观察到在ver-3.0设计中的MOSFET (Q3)是反复燃烧的。我们试图修改现有的软件,但没有找到任何满意的结果。

Open green energy写了目前最详细的MPPT教程之一,不仅提到了正确的事情,还提到了他的尝试的问题,就像任何好的和诚实的工程师会。手下来!这真的帮助了我们所有人互相协作来修复和分享设计。在前面的步骤中显示的早期构建中,我也遇到过这个问题。我花了几个月的时间才找出困扰我们多年的罪魁祸首。

上一步提到的第二个问题是几乎所有DIY同步buck MPPT构建中都存在臭名昭著的低侧燃烧MOSFET。开放绿色能源的这个具体问题和我的完全相同,是通过代码解决的。这是我至今没有读过的东西,但通过一系列实验室测试发现的在我的工作空间中进行测试和分析。有一些论文对此进行了解释,但它们要么充满了大量的行话,要么没有直接说明这个问题。下面的文章将解释一切。

让我们先来解释MOSFET驱动器

在我得到这个问题的解决方案之前,我需要解释一下MOSFET驱动器是如何工作的,以避免混淆你们所有人。众所周知的IR2101和IR2110驱动器是我称之为原始逻辑MOSFET驱动器的东西。您有两个逻辑输入HIN和LIN控制开关在高边和低边MOSFET (Q2和Q3)。当HIN高时,Q2打开,当HIN低时,Q2低。LIN高时Q3开,LIN低时Q3低。这需要两个PWM互补信号进行降压操作。这个芯片给你更多的控制开关,因为你有控制死区持续时间以及。我喜欢这个芯片,因为我可以直接独立控制Q2和Q3。我在我的第一个原型版本中使用了它,但我不再使用它,因为我担心它会使本教程的解释更加复杂,因为您将不得不处理对Arduino用户代码不友好的MCU计时器。

最容易使用的MOSFET驱动器是IR2104 IC,它也使用开放的绿色能源。现在让我们更多地关注它,因为它是我在最新的构建中使用的。IR2104有一个内建的死时间函数,使编码过程容易得多。IR2104具有逻辑输入引脚名称IN和SD。IN是用于开关的PWM信号的输入逻辑,SD是使能引脚。SD只是一个凌驾于一切之上的大头针。SD为低;Q2和Q3都关闭,不管是否有PWM信号在IN。当SD是高,Q2或Q3将打开,取决于IN引脚逻辑状态。当IN是高时; Q2 is HIGH and Q3 is LOW. When IN is LOW; Q2 is LOW and Q3 is HIGH. What does this mean? Well, now we only need 1 PWM signal to switch both Q2 and Q3 inversely, thus reducing the need for two complementary PWM signals. This means the higher the PWM duty cycle %; the longer Q2 switches on and the shorter Q3 switches on. On the other hand, the lower the PWM duty cycle %; the longer Q3 switches on and the shorter Q2 switches on. At this point some of you are probably getting a clearer picture of what the problem may be.

存在的问题:

事实证明,这是由于低侧MOSFET Q3无法模拟其从异步降压中更换的二极管造成的。在控制降压型MPPT设计时,我们为IR2104提供0-100%的PWM占空比。还记得我说过的“PWM占空比越低;Q3接通的时间越长,Q2接通的时间越短”吗?在某个点上,Q3(低压侧MOSFET)起到了短路的作用,不再像它从异步降压计数器部分模拟的二极管那样起作用。有一个特定的PWM占空比下限值,您不能降低到该值,否则Q3将开始升温。(稍后再作解释)

解决方案:

对于这个问题有两个解决方案(硬件vs.软件),要么实现一个应用特定的MOSFET驱动IC的同步降压变换器配备回流电流控制(模拟设备提供了大量的他们)或简单地使用旧的IR2104设计并通过代码修复它。显然,我选择了IR2104设计,并用代码修复了它,因为IR2104非常便宜,而且不是同步降压驱动专用芯片10美元的价格标签。

我发现PWM占空比%有一个特定的下限值,当电池连接到输出端时,不应该是0%或低于该指定的PWM下限值。那么我所指的PWM下限是什么?我想出了一个简单的公式,并将其应用到我编写的开源固件中。

  • PWM底部占空比=(输出电压/输入电压)* 100

这意味着最低可能的PWM占空比不应该低于“PWM地板占空比”。该公式取输出电压和输入电压比,计算降压器输出与连接在输出端的电池电压相匹配的电压所需的理想无载PWM占空比。当PWM信号的占空比低于计算的PWM下限值时,电流反向流动,导致Q3在不应该导电时导电。所以你不是在给电池充电,而是在消耗它。当你偏离较低的PWM信号从计算PWM下限,反向电流Q3经验越来越高,导致它燃烧。在代码中,当PWM低于计算下限时,IR2104的SD引脚是低电平的,以确保Q2和Q3永远不会在这种状态下打开。你会注意到“PWM底部占空比”被命名为PPWM,并添加了“PPWM_margin*pwmMax”,这是为了限制最大允许的PWM占空比,因为像IR2104这样的电荷泵MOSFET驱动器由于其IC设计不能在100%占空比下工作。它还将占空比%转换为anlogWrite或ledcWrite函数接受的整数值。

  • PPWM = (PPWM_margin * pwmMax * voltageOutput) / (100.00 * voltageInput);
  • PPWM =约束(PPWM 0 pwmMaxLimited);
  • PWM =约束(PWM、PPWM pwmMaxLimited);
  • ledcWrite (pwmChannel PWM);
  • buck_Enable ();


Arduino中的约束功能限制PWM信号高于上限和低于下限。功能“ledcWrite(pwmChannel,PWM)”是相当于Arduino Uno/Nano模拟写入的ESP32,该功能用于在GPIOx引脚设置PWM信号。上面几行之间有很多代码,我只是写了一些最重要的代码来强调修复解决方案。



第八步:解决PV回流电流问题

存在的问题:

在同步和异步降压变换器拓扑结构中都有所谓的“体二极管电流泄漏”。到目前为止,这个问题已经出现在我读过的大多数DIY同步降压mppt中。有试图修复高侧反向阻塞MOSFET,但往往最终没有正确开关Q1。注意,无论Q2打开还是关闭,MOSFET Q2内部的二极管的存在,导致电流从电池回流到太阳能电池板时,输入电压小于输出电压(太阳能电池板电压<电池电压)。当太阳能电池板在黄昏、黎明和夜间产生较低的电压时,就会发生这种情况。我们的目标是达到最高的效率,在输入端添加二极管是我们最不想要的。我们需要一个解决方案!

昂贵的解决方案:

这个问题可以很容易地通过高边n沟道MOSFET驱动器或类似于ORing mpfet驱动器的东西来解决。我偏离了这个选项,因为这个解决方案所需的驱动芯片非常罕见和昂贵。

更便宜的解决方案:

这可以通过在输入端(Q2之前)增加一个二极管来解决,以防止电流回流,这适用于所有的降压拓扑。但是,还记得我前面提到的步骤吗?二极管引起电压下降,导致功率损耗!因此,我们再次需要用另一个n沟道MOSFET替换输入二极管,这次连接在Q2的反向。这被称为反向阻塞MOSFET配置。当Q1和Q2有相对的体二极管时,电流不再可以双向漏出,除非我们打开mosfet Q1和Q2。现在的挑战是正确地打开和关闭新增加的Q1。显然,我们不能仅仅在Q1的栅极引脚上施加电压,因为它位于“高边”,离地面很远。为了解决这个问题,我们专门设计了一个隔离的DC-DC转换器来进行切换。

我选用的隔离DC-DC变换器是EVsun公司的B1212S元件。每块的成本为2美元,比购买专用应用专用的高边MOSFET驱动器更便宜(例如:模拟设备,TI和Maxim芯片)。虽然可以使用另一种IR2104/IR2101,但隔离DC-DC变换器和MOSFET组合具有在100%占空比下工作的略微优势。

隔离的DC-DC变换器在Q1的源和门引脚之间产生隔离电位差。R37是一个下拉电阻,当没有电源提供在U2的输入Q1门电荷流出。PV防回流装置作为一个整体由Q4进行切换。当GPIO27释放HIGH信号时,Q4导电并提供电流给U2(隔离DC-DC转换器)供电的路径。当U2的输入通电时,U2的输出释放一个12V的隔离电压,并供应到Q1的栅极和源引脚,从而为Q1供电,关闭Vin和Q2的漏极引脚的路径。把GPIO27变成低结果,和我说的完全相反,关掉Q1。

我的实现很简单,但很野蛮。旋转Q1的响应时间还没有定量测量,但我可以向你保证它足够快。不管从面板回来的电流泄漏不是那么高的第一个地方。这只是一个功能,需要防止电池在夜间耗尽。我理解一个更好的实现将是让U2一直打开,同时有一个隔离的图腾极MOSFET驱动芯片开关Q1。但是,嘿,这很有效!

但是太阳能电池板里面有二极管?对?对。。。?

虽然太阳能电池板可以将阳光转化为电能,但当太阳能电池板的电压低于电池的电压时,它也可以将能量吸收回来。电池给太阳能电池板供电?是的,这是可能发生的!在太阳能电池板内部有两种类型的二极管。一个是旁路二极管,它可以消除可能损坏PV电池的热点现象(不是我们要关心的),另一个是阻塞二极管,防止电流从充电器和电池回流的二极管。结果,在检查了我的单晶太阳能电池板的后箱后,令我惊讶的是,它没有安装阻挡二极管。我做了一些调查,发现现代的太阳能电池板不包括阻塞二极管,因为它会造成功率损耗。相反,在某种程度上,将二极管安装在太阳能充电控制器中已成为一种现代标准。

步骤9:为什么我使用外部精密ADC (ADS1115 -德州仪器)

Arduino Nano中的ADC

Arduino Nano和uno中使用的ATmega328P有一个10位ADC。这就是众所周知的模拟引脚。10位意味着有1024个值它可以表示从0V到5V (5V是默认的电压参考)。当ADC引脚与电压和电流传感器设计用于宽范围的电压(例如:80V 30A)时,你只有1024值来代表0V-80V和0A-30A。这给了我们78mV的电压和29mA的电流的传感分辨率。这意味着你有一个非常粗糙的方法来检测电压和电流,你的电压和电流可能会以78mV和29mA的间隔跳变。

ESP32中的ADC

ESP32内置12位ADC,可提供4096个值来表示电压和电流。这是Arduino Uno/ Nano的四倍!对于80V 30A的设置,电压传感分辨率为19.5mV,电流传感分辨率为7.32mA。这是Arduino Uno和Nano的更好的电压和电流传感分辨率!ESP32也有更快的处理器!在监管方面,它也将能够更快地投票,使其更积极响应。但也有一个缺点!众所周知,ESP32的ADC很差!它具有非线性ADC响应。这意味着ADC不能准确地表示0V和Vref之间的电压。 It will suffice, but I did not want to settle with this. The solution?

外部ADC精度

解决方案是使用外部精密I2C ADC!我选择的是德州仪器公司的ADS1115或ADS1015。为什么要使用外部ADC呢?这些外部ADC是为一个特定的目的而设计的,那就是仅仅作为一个ADC,而它的工作非常好!注意到当你将传感器连接到Arduino Uno时,它们的值是如何意外地抖动的吗?尝试使用外部ADC,你会注意到值几乎不会发生意外变化。

ADS1x15 adc有一个内置的内部电压基准。这意味着模拟值读数独立于ADC的Vcc。这使得它不太容易受到系统供电线路噪声的影响。它有一个内置的可编程运算放大器,这意味着你可以选择各种增益。最重要的是ADS1115具有16位ADC分辨率!860年的16位sps !16位将给你一个65,5536代表你的电压和电流!这比Arduino Uno的ADC好64倍。对于80V 30A的MPPT设置,我们现在有1.22mV的电压传感分辨率和0.457mA的电流传感分辨率!这是疯了!

我要用ADS1115还是ADS1015?

问题是,我需要哪一个?尽管规格略有不同,但这两种芯片都与Adafruit的Arduino ADS1x15库交叉兼容。我得到的是16位分辨率和860sps速度的ADS1115还是12位分辨率和3,300sps速度的ADS1015 ?正如视频中提到的,我都试过了。ADS1115在这个构建中是不必要的,它的分辨率我几乎不需要80V 30A。我使用ADS1015进行整个项目的测试和文档。

为什么是12位的ADS1015?

ADS1015有12位ADC分辨率,和ESP32的12位ADC分辨率一样,为什么还要选择ADS1015呢?答案是稳定。还记得我对黑板做过不同的修改吗。我试用过Arduino Nano、Arduino Uno、ESP32;他们所有的ADC都不像ADS1x15这样的专用外部ADC那样稳定。即使在解锁ATmega328P和ESP32的内部ADC Vref(一个mod的稳定性)时,它也比不上外部ADC。记住,现在我们正在使用更高的PWM分辨率,我们现在需要检测电压和电流的微小变化,以使MPPT扰动算法完美地工作。轻微的噪声和传感器读数的抖动严重影响MPP跟踪。一个外部ADC是前进的道路!

步骤10:选择MCU(为什么我选择ESP32而不是Arduino Nano)

有些人可能对ESP32很熟悉。ESP32主要有两个版本:ESP32 Dev Board和WROOM32 ESP32 Module。就大头针和规格而言,它们完全一样。另一方面,开发板有一个用于编程的USB端口,而WROOM32是一个没有USB端口的独立MCU。对于通过USB编程的WROOM32,您需要一个外部USB- ttl UART接口,如CH340C。ESP32 Dev Board自带一个。你为什么要选WROOM32?主要是因为原材料成本和空间。注意我在视频中买了一卷wroom32,我买了50个,每个1.8美元!它们比5- 10美元的ESP32开发板便宜。 Second is space, the WROOM32 is tiny! Without expanding those SMD pads to THT pins, you can build a smaller project with it.

我已经在前面的步骤中解释过了,但如果你错过了,这里是总结:

  • WROOM32模块在我住的地方只卖1.80美元。
  • 它是Arduino兼容,你可以像任何其他Arduino一样使用它!
  • ESP32是一款速度非常快、功能强大的240MHz 32位双核微控制器
  • 它内置WiFi和蓝牙功能,因此您不必购买昂贵的模块
  • 它的最大分辨率为16位PWM
  • 它有一个12位内部ADC(我们不使用)
  • 有低功耗处理的低功耗核心
  • 电容式触针
  • 有一个内置的DAC
  • 这样的例子不胜枚举!

ESP32 -为什么我特别选择它:

  • 它的价格是1.8美元,比Arduino Nano还便宜,而且配置在各个方面都超过了它!
  • 对我来说最重要的部分是16位PWM分辨率。在基于降压变换器的MPPT中,更高的PWM分辨率更受青睐。分辨率越高,电压和电流阶数就越精细。它是可调的,PWM位分辨率越低,PWM频率越高!(稍后将对此进行更多解释)。
  • 当我说它有两个核心时,是的,你可以运行两个独立的进程,同时在两个独立运行的代码中共享相同的记录变量。一个MPPT有一大堆不应该被打扰的算法。这包括电压和电流调节,MPP跟踪和保护协议。例如,WiFi遥测发送需要500毫秒的处理时间。将WiFi遥测技术与主系统进程相结合,会使MPPT变得危险且响应速度较慢。通过为WiFi分配一个单独的核心,我能够为MPPT核心获得9毫秒的每个循环周期。
  • WiFi和蓝牙也是价格的一大优势
  • 处理速度:这东西非常快!相信我的话

ESP32 - PWM分辨率和频率:

  • 基于AVR单片机的单板如Uno和Nano在设置PWM定时器方面具有挑战性。
  • ESP32的库简单地要求PWM位分辨率和PWM频率您需要,其余是魔术,因为您可以使用几乎任何引脚的特定PWM设置。
  • 不要认为这是极限
  • 对于16位PWM分辨率,可实现最大1.22Khz PWM
  • ..........
  • 对于12位PWM分辨率,可实现最大19.5Khz PWM
  • 对于11位的PWM分辨率,最大可以实现39.06Khz的PWM
  • 对于一个10位的PWM分辨率,最大可以达到78.12Khz的PWM
  • 对于9位PWM分辨率,最大可以实现156.25Khz的PWM
  • 对于8位PWM分辨率,可以实现最大312.5Khz的PWM

PWM分辨率和频率的重要性:

  • PWM分辨率越高,MPPT降压稳压器输出的电压和电流阶数就越小。较低的PWM分辨率会使电压和电流的步长更粗。
  • PWM频率越高,MPPT的降压能力越强,输出纹波电压越小。
  • 您可以增加PWM频率到一定程度,但记住电子是权衡利弊的游戏。虽然您的MPPT降压可以处理更多的功率与更高的PWM频率,开关损失也会增加到某个点。
  • 同时,公式给出的PWM Reso和频率之间也有一个限制
    • 最大PWM频率= MCU时钟/ PWM分辨率
    • ESP32的MCU时钟为80MHz
    • 您可以设置PWM频率或Reso作为给定或需要的变量
    • 例:
    • 让我们选择一个11位的PWM分辨率,并找到最大的PWM频率
    • maxpwm频率= 80,000,000 Hz / 11bit
    • 最大PWM频率=39062.5Hz
    • 这意味着对于11位的PWM,我们只能选择39.0625Khz的最大PWM频率
  • 最后,在尝试了不同的PWM Reso和Freq配置后,我最终选择了11位39kHz作为MPPT设计和固件的默认设置。11位是我测试过的最低稳定PWM分辨率,开关频率为39Khz。您可以阅读我的代码注释,找到用于更改PWM Reso和Freq的可调变量。

步骤11:Excel MPPT设计公式计算器

下载Excel档案:点击这里

找到所需的电感电感和饱和电流

我目前正在拍摄教程视频的第2部分。第2部分将解释用于mppt的同步降压变换器的设计公式。目前,我在文件包中提供了一个excel计算器。你只需要简单地输入离网设置的规格到excel文件,它将计算电感电感,电感饱和电流和体积电容所需。

  1. 您只需要从“必需参数部分”中输入必需字段。
  2. 钢瓶-输入你的太阳能电池板设置的总Vmp(最大点电压)
  3. 小鬼-输入你的太阳能电池板设置的总Imp(最大点电流)
  4. Vbatt-输入您的太阳能装置的最大电池电压
  5. 的焊-把它留给39kHz,因为这是默认的PWM开关频率,我已经通过MPPT固件代码设置。如果你打算设置一个不同的PWM开关频率,你可以改变这个。
  6. 将“假定参数部分”值保留为默认值。
  7. “已解决参数部分”中突出显示的黄色字段将显示以下内容:
  8. Ipk-所需的电感额定电流
  9. l-所需的电感器电感
  10. Cout—原理图中C7和C8的推荐电容。这只是一个推荐值,我发现470uF的电容就足够了

通用电感和电容值

一般电感电感:64uH

通用电感额定电流:超过30

通用C7和C8电容:470年佛罗里达大学

当你买下货架上的商用mppt,单位制造与预定的组件值。这些值已为MPPT选择,可用于广泛的电压和电流范围。你可以对电感和散装电容器使用上面的一般值。

步骤12:最后的示意图

这里是最终和完全功能板的最终示意图。我将制作一个单独的教程来调整这个设计,以满足您的需要。但是,如果离网设置符合前面步骤中显示的规格表,则不需要更改任何内容。下面是对原理图的快速解释:

MOSFET:

  • 该项目最终具有非常小的形状因素和高的能量转换效率的关键原因之一是对n沟道mosfet的仔细选择。CSD19505是一个最好的低成本mosfet我可以来源!有了2.6mΩ的通电阻和80V的Vds,这,这是一个野兽!这意味着更小的传导损失。
  • 一个CSD19505相当于三个IRF3205并联,可以处理更高的80V电压。如果我们使用像IRF3205这样的东西,我们最终会使用9个来代替3个CSD19505。CSD19505还具有明显较低的栅极电荷,这也有助于降低开关损耗。
  • 在寻找MOSFET的替代品时,要找到Vgs为80V或以上的MOSFET。Id必须大于90A。Rds(on)必须尽可能低(我不会去任何高于4mΩ在选择单独的mosfet没有使用并行配置为这个MPPT)。Qg越低越好。

微控制器:

  • U8是ESP32作为系统的微控制器
  • R25-R28是按钮的下拉电阻,以保持引脚浮动
  • R29、R39为I2C接口的上拉电阻
  • C19是解决ESP32编程中臭名昭著的自动编程问题的电容器
  • C23是一个简单的旁路电容,用于降低ESP32 3.3V线的波纹
  • R21 & R24是ESP32的EN引脚上拉电阻(UART也是必不可少的)
  • LED1和R36是一个简单的LED指示灯,连接到ESP32的默认LED指示灯脚

USB-TTL UART:

  • U9是一个CH340C USB-TTL UART芯片,用于USB串行com和通过USB对ESP32进行编程
  • U4是一个3.3V的稳压器,用于USB端口的5V输入。这是必须的,因为我们的ESP32使用3.3V逻辑
  • C21和C22是U4稳压器的标准体积电阻
  • D7是一个肖特基二极管具有低Vf防止电流回流到USB端口时,系统是由太阳能电池板或电池供电。1N4007可以作为替代方案。

外部模数转换器:

  • U10是一个外部ADS1015 12位ADC(前面的步骤提到了细节)
  • C20是一个标准的旁路电容,以降低线路噪声到U10
  • R31是一个上拉电阻的警报引脚的U10。警报引脚是一个可编程比较器,我计划在未来的固件更新中使用,就在此刻,它是未使用的。
  • A0-A3为外部ADC U10的模拟输入。
  • U10有一个设定的参考电压(Vref)相当于2.048V,这是普遍设置为适合U1的模拟输出范围(ACS712-30A电流传感器)。
  • U10是一种高度稳定、精确和精确的外部ADC,与使用MCU的内部ADC相比,它提供了更干净的传感器值。

电压传感器:

  • 电压传感可以很容易地实现使用分压器。
  • R1和R2构成一个分压器,输入范围0-80V,输出范围0-1.989V。这个电压低于外部ADC U10的2.048V电压基准。它接近Vref,以最大化ADC分辨率,但不太接近,可能导致剪切。
  • C1为旁路电容,用于将输入分压器的输出从噪声中滤波。
  • 对于0-80V输出范围,R32、R33和R34最初与R1和R1具有相同的值。是的,MPPT最初可以给电池充电到80V,而不是50V。然而,我将其降低到50V,以提高输出分压器处的ADC分辨率。人们最初很少使用48V以上的电池。
  • R32、R33和R34构成一个输入范围0-50V到输出范围0-2.04V的分压器。这个电压低于外部ADC U10的2.048V电压基准。它接近Vref,以最大化ADC分辨率,但不太接近,可能导致剪切。
  • C13是一个旁路电容,用于将输出分压器的输出从噪声中滤波。

电流传感器:

  • U1是ACS712-30A双向隔离30A额定电流传感器IC。
  • U1是双向的,但我们只对将其用作单向电流传感器感兴趣,以最大化电流传感的ADC分辨率。原因U1的-IP和+IP引脚连接在一个反向的方式是由于它的负电流流动响应。当没有当前Vout时= Vcc/2。这意味着当没有电流通过电流传感管脚-IP和+IP时,电流传感器的模拟输出是5V Vcc的一半,约为2.5V。当电流流动-IP到+IP;Vout = 2.5 -(电流检测值* 0.066)。我们现在知道在-30A时,Vout = 2.5V;在0A, Vout = 0.52V。现在,我们有一个接近地面的地板和2.5V的上限,我们可以缩小到ADC的电压参考。这样我们就不需要电平移位,同时也消除了传感器一半的未使用范围。
  • R3和R4是一个分压器,我们从U1的模拟输出得到的2.5V上限的电压略低于U10的2.048V电压参考。这可以防止传感器读数被截断。
  • C2是U1的(ACS712)数据表中提到的滤波器电容器。增大C2,减小了U1的电流感知带宽。由于我们处理的是直流电,我们只需要一个低带宽,以拒绝可能干扰我们的电流检测的噪声。10uF被建议用于直流应用的最大滤波,但在数据表中也提到10uF将产生较慢的上升和响应时间。最终我选择了2.2uF。
  • R5和C9是RC滤波器,进一步降低U1模拟输出拾取的噪声。
  • 请注意我是如何特别注意电流传感器的。从我过去的MPPT原型,使用ACS712模块的股票价值被认为比这个修改版本更嘈杂。在实现这个简单的修复之后,MPP跟踪性能有了显著的提高。

温度传感器:

  • R35是一个10k NTC热敏电阻,用作温度传感器
  • R12是一个下拉电阻器,与R35形成一个分压器,以创建一个简单的温度传感器
  • C12是旁路电容,用于对温度传感器的模拟输出进行滤波。
  • 温度传感器单元的模拟输出连接到GPIO35(使用ESP32内部ADC)。我没有将温度传感器连接到外部I2C ADC,因为它不需要太多的精度。ESP32还为该传感器提供了一个更快的ADC,不需要太多的优先级。

回流电流控制单元(bccu):

  • 在前面的步骤中详细提到了回流电流控制单元
  • Q1是反向阻断,高侧n沟道MOSFET提供了一个可控阻断效应Q2的体二极管电流泄漏。
  • R37是一个下拉电阻出血的门电荷Q1时,BCCU关闭。
  • B1212是一款隔离12V DC-DC变换器。这用于为开关Q1的源和栅极引脚提供单独的地电位。
  • 当GPIO27高时,Q4导通,U2从12V线路获得电源。然后向Q1提供一个隔离的12V电源,以接通并导通。
  • 当GPIO27是低,电源从U2和Q1切断,R37流血在门和源引脚Q1导致它关闭的剩余电荷。
  • C4和C3是数据表推荐的U2旁路电容器。
  • R6和LED3是一个简单的LED指示灯,用于指示BCCU处于活动状态。

巴克监管者行:

  • U5和U6是80V 0.4A降压稳压器,为MPPT系统中的所有其他组件提供稳压电压。
  • U6通过R17,R18和R19固定输出到3.3V。这提供了所有的3.3V组件
  • U5通过R14,R15和R16固定输出为10.625V。这提供10.625V到冷却风扇端口,BCCU和MOSFET的驱动栅驱动电源引脚。最初这是设置为12V,但我不得不降低它,以减少开关损耗,以及减少冷却风扇的消耗。尽管如此,所有组件仍然可以在10.625V下工作
  • U3是连接在U5 10.625V输出端的线性稳压器。这提供了U1操作所需的5V。我知道这导致的损失,但它是微不足道的,因为U1需要很少的电流。从U5和U1的大电压差也可能是一件好事,因为它可以更好地调节5V线,因为U1的模拟输出稳定性严重依赖于5V线的调节。

MPPT主同步降压:

  • 这一部分也从前面的步骤中进行了详细的解释(尽管如此,这里还是进行了总结)
  • Q2和Q3是高边和低边n沟道mosfet,形成用于开关的半桥。
  • L1是MPPT的同步降压电感,这是一种非常快的储能装置。
  • C7和C8是体积电容或旁路电容,用于过滤由SMPS降压单元的快速开关特性引起的纹波电压的输入和输出。
  • U7是配备有电荷泵的IR2104半桥MOSFET驱动器
  • R8和R11是下拉电阻,用于防止Q2在启动前浮动
  • R9和R10是栅极电阻,用于限制U7提供的瞬态电流,以触发Q2和Q3的栅极引脚。
  • D1和D2是肖特基二极管,当Q2和Q3中的任何一个开关时,提供了一个快速回流的路径,用于排放栅极电荷。
  • D3是肖特基二极管,以确保电流永远不会回流12V电源线路为C10充电
  • C10是U7电荷泵使用的自举电容,为高端n沟道MOSFET Q2提供适当的功率。
  • C11是数据表推荐的U7旁路电容
  • R13和R20是必不可少的下拉电阻,防止U7的逻辑引脚浮动。这是另一个重要的修复长期存在的DIY MPPT设计问题。如果没有这个,当您的MPPT运行时,连接USB电缆到您的计算机会导致MCU的引脚在运行期间浮动。因此,MPPT的buck部分有时会失控,意外打开Q2或Q3,造成一些神奇的烟雾。确保添加这些电阻,这确保MPPT的buck是扭转时,GPIO引脚浮动。

步骤13:多氯联苯

你可以从下面的PCBway链接购买我的板材。这些都是快速链接,所以你不需要上传gerber文件到网站上。如果你对戈伯感兴趣。你可以在谷歌驱动器文件包链接中找到它。你可以花5美元购买10块电路板(请确保输入10块)。因为默认设置为5个)。我非常感谢你从我的PCBway链接购买,我用佣金来资助我的其他项目和教程,你的支持将非常感谢。

PCBWAY PCB链接:

1.)主MPPT板(https://bit.ly/3gGccE7

2.)按钮接线板(https://bit.ly/3kuwHF6

3.)2针风扇分接板(https://bit.ly/3jsmWIn

谷歌驱动器所有文件:(原理图,PCB,部件列表,固件)

https://drive.google.com/drive/folders/1Sd2jWAb-F8..。

我尽我最大的努力,在不破坏线隙和宽度的情况下,做出了一个非常紧凑的木板。对于这个特定的设计,我不会为自制PCB提供可打印的pdf文件,因为它使用了很多通道,如果不使用电镀,几乎不可能制作自制PCB。

该项目确实涉及许多表面安装组件。这是我第一个以SMD设计为特色的教程。这并不是我第一个使用SMD的电路板,我从2017年就开始使用了。我已经制作了数百个使用SMD的面板,但我没有在教程中过多地突出它,因为害怕其他爱好者害怕构建它。对于那些刚接触SMD板项目的人来说,根据经验,它实际上比通孔设计(THT)更容易组装。

步骤14:所需材料

我是批量购买零部件的,MPPT项目在亚洲市场单独定价的零部件总成本在20美元左右。价格可能会因你从哪里购买零部件而有所不同。

完整的组件列表与链接:点击查看excel零件列表

主要部件:

  • ESP32 WROOM32 MCU模块
  • ADS1115/ADS1015 I2C模数转换器
  • CSD19505 2.6mΩ N-ch mosfet (3x)
  • 30a电流传感器集成电路
  • IR2104 MOSFET驱动程序
  • B1212 DC-DC隔离变换器
  • 功能描述:0.4A Buck Regulator (2x)
  • Ch340c usb to uart IC
  • 16X2 I2C字符液晶
  • LDO线性调节器
  • LDO线性调节器
  • SS310 & M7二极管(参阅excel表格)
  • SMD电阻和电容(参见excel表格)-电感芯和MISC。(参阅excel表格)

所需工具:

  • 烙铁
  • 焊接铅
  • 镊子
  • 吸锡器
  • 热空气回流站(可选)
  • 锡膏(可选)

零件来源(菲律宾):https://www.e-gizmo.net/oc/index.php

零件来源(全球备选):https://lcsc.com/

步骤15:组件替代方案

如果你是表面贴装(SMD)新手,你可以购买像这样的模块转接板。用一对镊子对要拆卸的部件进行切割,然后用热风回流枪加热焊盘。在某些情况下,这是一种更便宜的获取芯片的方式,而无需大量购买。

贴片电阻被标记。例如,10k欧姆电阻是103,2.2k电阻是222…另一方面,SMD电容器没有标记。当你从电路板上回收MSD电容时,你必须使用万用表的电容测试功能来知道它们的电容。

步骤16:板组装(烙铁法)

从视频中可以看出,在不使用锡膏和热风回流枪的情况下,可以使用各种技术焊接SMD组件。这就是我在2017年进入SMD时焊接SMD组件的方式。

通用技术:

  1. 焊接单个焊盘
  2. 用镊子抓住你的部件
  3. 将它与衬垫对齐
  4. 熔化你之前焊接的锡垫。它充当组件的锚
  5. 焊接所有剩余的脚,你的组件到焊盘
  6. 如果表面有助焊剂的话,可以加一点助焊剂
  7. 如果焊剂和焊料产生了焦炭或燃烧残留物,使用牙刷和酒精清洁板

步骤17:单板组装(热风法)

我下一个最喜欢的技术是手持式回流SMD焊接技术。我的第一个技术是什么?PID烤箱,如果我是第一个,但我今天不会展示。让我们来看看最简单的SMD焊接技术。

手持式回流焊技术:

  1. 拿一个锡膏注射器
  2. 在PCB的焊盘上注入一点锡膏
  3. 对齐组件到衬垫
  4. 用热风回流枪加热衬垫
  5. 焊锡膏将开始融化,组件的脚将魔术般地与焊盘对齐,因为焊锡膏融化,成为一个焊点。
  6. 如果组件与焊盘不一致,使用镊子重新对齐,同时使用热风枪熔化焊料。
  7. 就是这样!简单!

步骤18:USB接口(注意)

请注意,Mini USB端口配有小口指南。这些意味着被用于在自动化工厂组装期间对USB端口板的适当对齐。我没有在我的PCB上实现孔,因为我使用了下面的区域作为线迹。对于你能够焊接这个平板在板和垫子,你将不得不剪下这些小口。

步骤19:CH340x UART芯片(注意)

如果您使用的是CH340 USB-TTL UART芯片的CH340C变体,请不要使用X1 pad。如果你使用的是CH340G,你必须焊接一个SMD 12MHz晶体谐振器的衬垫,因为CH340G变体没有内置到芯片的内部晶体。底线:买CH340C,它的价格和规格都是一样的。

步骤20:正确安装散热器(需要隔离)

如果您是to -220封装晶体管的新手,请阅读这篇文章并特别注意。使用to -220封装的MOSFET总是将其“漏极”引脚绑在MOSFET标签上,是的,它们是电连接的。直接拧上mosfet将导致散热器与所有漏管脚的mosfet传导。

现在让我们回忆一下原理图。mosfet Q1和Q2有漏管脚连接在第一个地方,没有必要隔离两个mosfet。另一方面,MOSFET Q3有一个“漏”引脚,不应该与Q1和Q2的漏引脚导电。Q3是MOSFET,我们需要与散热器隔离。

散热器组装的步骤:

  1. 先将mosfet焊接到板上。
  2. 抓住你的散热器和你的mosfet旁边
  3. 用记号笔在钻孔处作记号
  4. 我使用3.2mm的螺栓,所以使用比螺栓尺寸稍小的钻头
  5. 钻穿铝制散热器。
  6. 在继续执行隔离步骤之前,用力将螺栓拧到散热器上,以便在散热器上形成螺纹。这是一种简单、野蛮且有效的方法,可以在散热器上安装螺纹或凹槽,而无需使用攻丝工具。

隔离的步骤:

  1. 将塑料隔离套管插入到MOSFET的孔或套上螺栓。
  2. 在mosfet和散热器之间添加玻璃纤维或云母隔离垫。
  3. 在MOSFET和散热器之间用塑料绝缘套管拧紧螺栓

如果Q3是唯一需要与Q1和Q2隔离的MOSFET,为什么在视频中要将它们全部隔离?

我把它们都隔离了,因为我不想让散热器连接到电路的任何地方。这对我来说很重要,尤其是在开发和测试期间。如果我离开Q1和Q2连接到散热器,散热器可能会从面板上传导80V,这是一个风险,我不想采取,当我在实验室设备测试的不同引脚探测。电线的轻微碰触可能会损坏我的身体,要更换的零件太多了。另一方面,隔离Q3,而留下Q1和Q2通过散热器有一个轻微的好处,这提供了一个更低的电阻路径Q1和Q2,它可以忽略不计。我建议把他们都隔离开来。

步骤21:NTC热敏电阻温度传感器

NTC热敏电阻有不同的封装。我买了环型的NTC热敏电阻,因为所有我必须做的螺丝钉上我的散热器。它是隔离的,所以不需要电隔离。如果你使用看起来像电容器的热敏电阻,就把它粘在散热器上。热敏电阻的引线通向电路板的R35。这些东西是非极化的,你可以用两种方式连接两个引脚。

步骤22:根据您的需要选择保险丝

你会注意到我使用了20A绿色迷你汽车保险丝,而不是原理图中推荐的35A。我这样做的原因是为了保护我的电路与我的太阳能安装运行。虽然MPPT运行时使用了大量的安全保护协议,但这些协议和安全特性是依赖于微控制器和代码的。如果微控制器发生故障并进入锁定状态(根据我的实地测试,这是非常不可能的),保险丝可以避免大量硬件被油炸。在我记录这个项目的时候,我没有合适的可焊熔断器连接器,所以我只是直接将它们焊接到板上。

如何选择保险丝:

- F1或保险丝1需要根据您的输入电流(太阳能输入)进行额定。您的保险丝额定值必须接近您的太阳能装置的组合Imp(最大点电流)。

- F2或保险丝2需要额定输出电流(电池充电电流)。保险丝的额定值必须接近电池的充电电流。(我的是30A,但为了延长电池组的寿命,我最终将其限制在20A)

-你仍然可以使用35A保险丝,并把这个单位作为任何商业MPPTs。这是通过假设所有保险丝额定值是为最大宣传的运行条件而设计的。只是厌倦了使用远离您当前设置电流的保险丝,可能会阻止保险丝做那里的工作,以挽救您的MPPT意想不到的故障。

步骤23:焊接还是螺丝?

我把太阳能和电池孔做得足够大,可以装电线。如果您计划将连接器安装在外部,您可以直接焊接电线。我想让我的螺丝可拧,所以我用了一个50A额定的螺丝端子。如果你计划做同样的和去我的3D打印外壳,请拆除螺丝终端的盖。

步骤24:焊接剩余的组件

如果你看过视频,我展示了一个特定的顺序,哪些部分要先焊接。这是因为当THT组件首先焊接时,表面贴装组件更难以焊接(高THT组件在SMD组件旁边的块区域)。

首先焊接所有SMD组件,然后是THT。

步骤25:设计感应器

如果你打算听从我的准确的总体设计,你可以跳过这一步,但是如果你打算使用一个不同的电感电感从您的设计,或者使用不同的环形核心从0077071 a7核心模型我使用,此步骤将指导您在设计所需的环形核心为这个项目。

我使用的感应器:

  • 模型:0077071 a7
  • 制造商:磁性材料有限公司
  • 芯材:Kool Mμ(Sendust-FeSiAl)
  • 相对磁导率:60μ
  • 尺寸:外径= 33.5mm,内径= 19.5mm, H = 11mm
  • 铝=61 nH/T^2
  • Ae ^ 2 = 65.6毫米
  • Bsat = 1.0吨
  • 单价:$0.50 USD (25 PHP)
  • 零售供应商的链接:点击我
  • 数据表的链接:点击我

构建环形电感器的步骤:

  1. 找一个合适的环形核(T-130或更大)
  2. 黄色#26铁粉芯材料是buck规则中使用的环形芯的常见选择(你可以使用这些)。虽然我去了一个sendust (Kool Mμ由Magnetics公司),因为它是众所周知的减少40-50%的核心损失比一般的铁粉芯材料。
  3. 访问Coil32的在线计算器(点击我
  4. 向下滚动并找到铁氧体圆环计算器。
  5. 我们将使用16号规格的磁铁线,在右上角有一个dropbox,并选择“AWG 16”
  6. 在文本框“L”中,输入你想要的电感。我的MPPT设计要求电感为64μ h,所以我在盒子里输入了64。(实际上是48μH,前面的步骤讨论了为什么会变成64μH)。
  7. 外径是指环面的外径,测量单位为mm,并在文本框中输入。
  8. ID指的是圆环的内径,以毫米为单位测量,并在文本框中输入。
  9. H是你的圆环的高度或厚度,测量你的mm并在文本框中输入。
  10. 您可以将倒角保留为0mm,除非您的环形磁芯的数据表中指定了它。
  11. μr为“相对磁导率”。这是一个棘手的,经常发现在你的环形核心的数据表。幸运的是0077071A7有一个数据表指定它有60μ,所以我在文本框中输入60。如果你正在处理一个没有标签的未知环形磁芯,观察它是否被油漆着色,一些环形电感器有颜色来指定磁芯材料。黄色环面通常为75μ。(感应器颜色代码的文章
  12. 不要碰其他文本框,不要碰它们!
  13. 按“计算”按钮。
  14. 你将在下面得到结果
  15. N -是16号磁铁线的匝数为了得到在L中指定的电感,你需要绕在环形磁芯上的匝数
  16. Lw是导线长度的一个简单的近似,你将需要它来得到环形电感的N圈数。

电感额定电流

电感电流额定值,你会经常发现在预建电感是指电感饱和电流。这是指在没有直流电流的情况下,电感值比测量值下降一个规定的量时施加的直流电流。一些制造商认为他们的零件电感降低了30%。请记住,电感是非常快速的能量存储设备。能量通过流过感应器的电流产生的磁场储存起来。材料只能存储一个感应器能吸收的特定数量的能量。当电感不能再吸收能量时,电感也会随着电感的减小而饱和。建立一个电感和获得所需的匝数,以获得所需的电感是容易的!但是从环形电感器设计中确定电感器电流是困扰我几个月的事情!这也不是你能轻易遇到的谷歌! There are two ways to determine the inductor current; one is by using datasheets and formulas, and the other is by conducting a inductor pulse test with an oscilloscope connected to a homebrew rig (which I will be demonstrating later).

公式/计算器方法:

  1. 参观鸽巢计算器(点击我
  2. 如果你想学习,你也可以从那里找到公式!
  3. 您将被要求填写一些参数。
  4. 这些参数只能从环形磁芯的数据表中找到
  5. 这就是为什么我说这很难。很少有制造商在他们的数据表中指定这些字段。
  6. 参数Al是每圈电感。这是你可以在环形芯数据表中找到的东西。如果你没有环形磁芯的数据表,你可以访问(这个链接)用于求一般铁粉磁芯环面铝值。
  7. Ae简单地说就是环面的有效横截面积。这也可以在数据表中找到。如果你没有,用你的几何科目的公式来解环面的横截面积。
  8. L是你设计的电感器的电感。
  9. Bsat是磁饱和磁通密度(Magnetic Saturation Flux Density, Bsat),是磁饱和磁通密度(Magnetic Saturation Flux Density, Bsat)中最难求的值之一。我甚至不能在数据表中找到它,我不想满足于鸽子巢的0.4T假设,因为我处理的是不同的核心材料。幸运的是,我发现(这篇文章)显示环面常用芯材不同的磁通量密度(Bsat)。(像我这样的Sendust Kool Mu核的Bsat = 1.0T)。但是,如果你处理的是普通的铁粉核,Bsats可以从(访问这个链接).
  10. 现在我们需要的都有了。按Isat框上的“计算”按钮。
  11. Isat现在是你的电感饱和电流额定值!

你可能想读的文章:

步骤26:构建电感器

你是否使用0077071A7环形磁芯?跟随我!

构建电感器的步骤:

  1. 抓起卷尺,剪下1.3米长的16号磁铁线。
  2. 绕环形核心30圈。顺时针还是逆时针,都没关系。
  3. 转30圈后,电线会稍微多一点。切断多余的,但留下一些电感脚。
  4. 两端的磁铁线必须磨砂或锉!磁石线是搪瓷绝缘的。你必须刮掉珐琅层才能将感应器焊接到PCB上。
  5. 现在你有了一个64uH 33A电感!我们这里有一些强大的东西!

步骤27:测试感应器的电感(可选)

这是一个很好的做法,以验证新建成的电感的电感。从最初的设计中得到错误的电感是可能的,特别是当你们中的一些人依赖于通用的环形磁芯时。我对我的产品充满信心,因为我把它建立在一个带有数据表的品牌环形核心上。尽管如此,我还是进行了电感测试。我用我的安捷伦4263B实验室级LCR表来验证我的。将感应器连接到LCR仪表的开尔文探针后,LCR仪表显示63.790uH!这真的很接近我的64uH目标,太完美了!

你不需要像安捷伦LCR仪这样的花哨设备。你可以自己拿一个LCR表7美元用于检查电感电感。廉价LCR计测量0.05mH (50uH)。它在分辨率上很差,但至少你得到了一个很好的估计,如果你的DIY电感接近你的目标电感。只是不要期望它是精确和准确的实验室级LCR仪表。

步骤28:测试电感器的饱和电流(可选)

现在我们可以验证电感的饱和电流。正如前面提到的,电感的饱和电流是决定MPPT能处理多少电流的因素之一。所以我需要确定,如果我的新构建的电感可以真正处理33A从我已经计算。所以我做了这个电感测试台,和示波器一起工作。我们有一个大的低ESR电容组用于存储能量,一个MOSFET用于开关电路,一个0.1欧姆的分流电阻用于电流传感,Arduino ESP32 MCU用于发送脉冲信号给MOSFET,以及一个旋转编码器来设置MCU的脉冲持续时间。

我搭建的电感试验台的周期频率是20Hz,为了让电容器组充电,设计的比较慢。脉冲持续时间的开启状态可以设置从1纳秒到30毫秒。通过在我的示波器上添加一个BNC连接器,并通过分流电阻连接那个BNC连接器,我们可以测量分流电阻上的电压来测量电流。你在示波器上看到的曲线就是流过电感的电流。

正如预期的那样,电感具有软饱和电流。这在粉芯电感材料中很常见。饱和电流点可以在电流端点线性表现(在直线的端点)处找到。很难说,但从零点到饱和点大约有1.8个百分点。利用欧姆定律,通过测量并联电阻两端的电压和并联电阻的电阻,可以得到饱和电流或饱和电流。

  • Isat = Vshunt / Rshunt
  • Isat = (1.8div * 2V/div) / 0.1Ω
  • 成绩测试标准= 36
  • 我们有一个36A感应器!

结果是我们有一个36A额定电感,比我们预测的33A电感设计高3A。我们的MPPT最终能够处理36A !

步骤29:焊接电感器和大容量电容器

一旦完成MOSFET的安装和电感器的构建,现在就可以将电感器和大容量电容器焊接到PCB上。

步骤30:3D打印外壳

我提供了两个3D打印可下载的外壳设计供选择。您有一个苗条的外壳为一个带下来的WiFi只建立和一个全尺寸外壳为WiFi MPPT与一个16x2 LCD和四个导航按钮。

3D打印STL文件下载:点击我

步骤31:添加冷却风扇(2针风扇接线板)

如果您选择使用较大的散热器,则可以省略使用冷却风扇。最初的MPPT板设计是为了与3针PWM冷却风扇一起工作。如果您计划使用一个2针12V冷却风扇,则必须为MPPT构建一个分路板适配器,以便与一个2针冷却风扇正常工作。注意,如果你要替代MOSFET从原理图上面显示,一定要选择一个逻辑水平MOSFET,如IRLZ44。

步骤32:将主控板安装到机框上

用螺钉将主MPPT板安装在机箱上并固定。3D打印外壳带有打印的支架,不需要购买那些黄铜支架来保持板从外壳的地板上升。

步骤33:添加按钮和LCD

我用的是最便宜的液晶显示屏,因为我一开始就会更多地使用WiFi手机应用。对于LCD,我选择了Arduino兼容的16x2字符LCD,带有I2C背包驱动程序。我还为触控按钮构建了一个简单的接线板,它也可以作为I2C端口扩展器。我忘记把设计发给PCBway了,所以我做了一个自制的电路板。

将4根LCD线连接到按钮插板的I2C扩展端口。然后,将8根线从按钮分接板连接到主MPPT板的接口端口。

步骤34:前面板组装

3D打印外壳还配有3D打印按钮盖。您可以在按钮和tact开关之间添加一些额外的填充带,以消除塑料卡嗒卡嗒的声音。使用镊子将按钮盖插入前面板背面,并将按钮转接板和LCD拧入到位。

步骤35:最后组装

现在可以拧紧并关闭外壳了。我还拧了一对压力表电线到太阳能和电池端口,然后焊接一些可拆卸的XT60连接器和每对的末端,以方便。

步骤36:连接到USB和PSU

将Mini USB电缆从MPPT连接到计算机的USB端口,并使用任何电源在MPPT的太阳能或电池端口提供电源。即使没有外部供电,MPPT仍然可以编程,但液晶显示将是不可读的,除非外部供电。

步骤37:Arduino ESP32 MPPT编程

MPPT项目基于Arduino。你可以像对待任何其他Arduino ESP32开发板一样对待它。我为我未来的所有MPPT版本编写了一个通用固件代码,我称之为Fugu固件。有数千行代码,这些代码被细分为9个不同的草图选项卡,用于组织。你不必更改任何东西!如果您想让WiFi手机应用程序遥测正常工作,您只需添加WiFi SSID、WiFi密码和Blynk身份验证令牌。其余内容可以通过LCD界面进行设置。您的首要任务是将这些Arduino草图(Fugu固件)上传到MPPT。

注意:

  • 此代码已在ADS1015上测试。如果您正在使用ADS1115,请阅读下面的ADC选择步骤

步骤:

1.)安装最新的Arduino IDE:

2.)下载河豚MPPT固件:

  • 从GitHub下载最新版本(V1.1及以上)
  • 从gDrive (V1.0)下载初始版本
  • GitHub链接将提供未来河豚固件的更新
  • 谷歌驱动链接包含了教程中介绍的初始稳定版本
  • 目前固件有9个。ino文件,你必须把它们都放在一个文件夹里。将主文件夹以main .ino文件命名(文件夹名称示例:ARDUINO_MPPT_FIRMWARE_V1.1)。如果你做不到这一点,Arduino草图/固件将不能正常打开。
  • 点击任何带有正确标签的文件夹的草图来打开程序。
  • 如果您在打开ArduinoIDE时看到所有的.ino选项卡,这意味着您已经正确地打开了代码。
  • 我使用Arduino标签功能细分数千行代码进行组织。你可以点击标签来查看固件的不同部分。
  • 您可以将所有参数初始化保留为其默认值,因为稍后可以通过MPPT的LCD界面进行设置。
  • 我的代码注释将指导您理解代码,以防您想了解固件如何工作。

3.)需要安装的Arduino库:

4)。将WiFi物联网证书添加到代码中:

  • 计划使用MPPT WiFi遥测手机应用程序?遵循以下步骤!
  • 为了让MPPT的ESP32连接到你的WiFi路由器,你必须输入你的WiFi凭证
  • 查找ssid[] = " ",然后在" "中输入您的WiFi ssid
  • 查找pass[] = " ",然后在" "中输入WiFi密码
  • blynk手机应用程序具有隐私和安全功能。Blynk(Legacy)在注册时向所有用户发送唯一的身份验证令牌。此令牌与所有其他令牌不同,并确保只有您才能完全控制和访问您的项目。
  • 从你的电子邮件中复制Blynk发送的认证令牌。
  • 在代码中找到auth[] = " ",并将令牌粘贴到" "

5.)为ADS1015/ADS1115选择合适的ADC库

  • ADS1015和ADS1115 adc是交叉兼容的。但是你必须在代码中指定你使用的芯片型号。
  • 如果您使用的是ADS1015,请保留所有默认设置!不要更改任何内容!!!!!!
  • 如果您正在使用ADS1115,请遵循以下步骤:
    1. 删除行“Adafruit\u ADS1015 ads
    2. 取消注释"//Adafruit_ADS1115 ads;",从行开始删除"//"。

6)。电的价格设置

  • Blynk MPPT应用程序可以跟踪您从以kWh为单位的能源收集中节省了多少钱。
  • 为了设置你的节能货币,你必须指定你当地的电力货币汇率(例如:0.5美元/ kWh)
  • 它可以在代码的主大纲中,在USER PARAMETERS部分的下面找到
  • 将“电价= 9.5000;”中的值改为你所在国家的电价成本。例如,在我们国家,1kWh的成本是9.5 PHP。输入9.5000到“electricalPrice =;”

7)。Arduino工具设置:

  • 将鼠标悬停在“工具”选项卡上
  • 按照我上传草图到ESP32的设置即可
  • 板:ESP32开发模块
  • 上传速度:921600
  • CPU频率:240 mhz (WiFi / BT)
  • 闪光频率:80兆赫
  • 闪光模式:
  • 闪光大小:4 mb (32 mb)
  • 分区方案:带spiffs的默认4MB(1.2MB应用程序/1.5MB spiffs)
  • 核心级的调试:没有一个
  • PSRAM:禁用
  • 端口:选择您的com端口
  • 程序员:AVRISP mkII

8)。上传代码/固件

  • 在您的Arduino IDE的右上角,单击要编译的检查图标。
  • 等待几秒钟程序编译。
  • 如果您的程序编译时没有错误,这意味着您已经准备好上传程序了。
  • 点击右箭头按钮上传程序到您的MPPT的Arduino ESP32。
  • 一旦所有代码和草图成功上传,它会说完成上传。
  • 祝贺您现在有了MPPT项目的固件!

校准

  • 电流传感器校准不需要,因为河豚MPPT固件自带自动电流传感器校准
  • 温度传感器的校准可以通过改变“ntcrestic = 9000.00”来完成。这是NTC电阻的额定电阻值。我使用9k欧姆的NTC解释了9000。
  • 另一方面,电压校准可以通过试错来完成。遵循以下步骤:
    1. 进入设置菜单,每次尝试都让它打开。进入设置菜单使所有充电过程停止。每次您上传代码到MPPT时,您都必须这样做,因为每次您上传代码时,MPPT将重置回主菜单。
    2. 将MPPT的太阳能板输入连接到电源模块(设置为60V)
    3. 将MPPT的电池输出连接到电池组
    4. 将MPPT连接到USB端口
    5. 打开电脑上的Arduino IDE
    6. 按CTRL+SHIFT+M打开串口显示器
    7. 在串行馈送中找到VI。
    8. 用电压表测量输入端的电压
    9. 如果您的串行馈线从电压表的测量中读取更高或更低的电压,则需要对输入电压传感器进行校准。
    10. 从主代码的校准参数部分找到“inVoltageDivRatio = 40.2156”。增加或减少
    11. 将代码上传到MPPT
    12. 再次用电压表测量输入电压,并比较串行馈线测量的VI。重复这一步骤,直到电压表测量到与串行馈线VI相同的电压
    13. 同样的事情也适用于输出电压传感器。对"outVoltageDivRatio = 24.5000"执行完全相同的步骤
    14. inVoltageDivRatio和outVoltageDivRatio是为输入和输出分压器预计算的分压器比值。单独写入电阻值会占用处理能力,这样做是为了减少处理时间。该公式是电压分压器公式的倒数:
      • “分压器比=((上电阻+下电阻)/下电阻)”
      • 我希望这能解释为什么你们在代码中看不到电阻值。

其他说明:

  • 这些笔记是为那些计划修改固件的人准备的。如果你只是想使用MPPT单元,你可以跳过阅读这部分注释。
  • ADS1015和ADS1115都是兼容的相同的代码,库工作为两者!请不要改变任何东西!
  • LCD菜单界面使用非易失性闪存保存所有设置。这些设置在启动时预加载。如果您计划在不使用LCD和按钮的情况下使用MPPT,可以通过将disableFlashAutoLoad=0更改为disableFlashAutoLoad=1来覆盖自动加载功能。这将禁止MPPT从LCD界面获取保存的设置,并使用Arduino草图的默认设置。您可以手动设置电池电压、电流等。。。通过代码的参数部分。从这里你还可以访问许多隐藏的功能,你无法从LCD界面找到。
  • 关闭WiFi可节省0.3-0.5W的功耗。
  • serialTelemMode提供不同的串行提要格式。
  • pwmResolution和pwmFrequency可以设置为降压和PWM分辨率的自定义开关频率(这有一个限制,我做了一个步骤解释限制的公式)。
  • avgCountVS和avgCountCS是从传感器中采样以进行平均的电压和电流数。将这两者设置为1将禁用采样,并将显著提高代码运行速度和跟踪速度。我建议使用2和4,增加采样计数可以获得更干净的传感器数据,但需要增加一些处理时间。
  • 还有很多!我需要为此做一个单独的教程(视频的第3部分

步骤38:MOD#1更新:支持电池高达80V

我收到了80V以上(12V/ 24V/ 36V/ 48V/ 60V/ 72V/ 80V)的电池支持请求。按照这些步骤,如果你想从0-80V充电电池电压。

1.)改变分压器电阻

  • 将R32改为200k欧姆
  • 将R34改为5.1k欧姆
  • 保持R33不连接或不填充

2.)修改代码(调整参数)

  • 必须在“校准参数”区域的主草图中更改设置的参数值
  • 将outVoltageDivRatio = 24.5000改为outVoltageDivRatio = 40.2156
  • 修改“vOutSystemMax = 50.0000”为“vOutSystemMax = 80.0000”

免责声明:

  • 如果您使用的是合法的ADS1115 16位ADC,则没有问题。但是,如果您使用的是ADS1015 12位ADC,则输出端的电压感应分辨率将如前面步骤所述降低。我强烈反对修改ADS1015系统。如果你不知道你在做什么,请不要尝试这个mod!我不承担因尝试此mod而导致的事故。

第39步:MOD#2更新:支持更高的太阳能电池板电压(100V-150V)

这个V1.0构建实际上可以支持80V以上的太阳能电池板电压。请注意,这个mod也非常不鼓励,因为它没有在最初的设计过程中考虑。做这个mod将禁用电源模式,你不能再使用MPPT在台架电源模式。我不会给出这个mod的修改输入电阻值和建议的mosfet。如果你真的知道如何正确地完成这个mod,这是一个测试。但对于那些有知识和经验的爱好者和工程师,我将在这一步给出一些提示和建议。只有当你知道你在做什么时才尝试这样做!我重复一遍,我不负责任何事故造成的尝试这个mod!!

1.)选择合适的分压器比

  • 因为我们处理的是增加MPPT输入电压的模。你需要正确地选择适当的分压器电阻来为2.048V ADC电压参考创建一个比例,并将你新设置的输入电压比例考虑进去。

2.)让XL7005A处理80V以上的电压

  • XL7005A最多只能处理80V !它不能处理以上任何事情!为了这个mod工作,你必须删除D8,以防止MPPT的系统从输入电源的电压,这是你的太阳能电池板。
  • 移除D8,而将D4结果留给MPPT,只从电池供电。
  • 在这一点上,你可能知道为什么我不鼓励这个mod。如果你的同步降压故障在电压调节方面,它可能会输出电压超过80V。一个80V以上的电压短脉冲可以立即损坏XL7005A降压reg芯片。

3.)修改代码(调整参数)

  • 就像MOD#1一样,您必须在代码中指定更改的分压器比率。

4)。选择能够处理它的mosfet

  • 您的mosfet需要更换的那些可以处理您的最大输入电压。这在数据表中由Vds表示。如果你要设计一个150V的MPPT,你必须找到Vds略高于150V的mosfet !
  • Id和Rds(on)也需要考虑在内

5.)更换输入电容(c7)

  • 有一个电容器特别需要更换!C7 !它的额定电压需要略高于您的新输入源电压。如果你的mod有150V输入,C7必须略高于150V,否则它会爆炸!

步骤40:USB串行遥测

该项目还提供USB串行遥测馈送!您可以通过代码启用或禁用此选项。此特性可用于诊断、故障排除、设计调整、代码优化或创建您自己的MPPT算法的试验。这可以通过Arduino IDE通过按“CTRL+SHIFT+M”来显示串行监视器。

USB遥测馈送中的变量

  • ERR -当前错误的数量
  • FLV -致命的低系统电压(无法恢复运行)
  • BNC -电池未连接指示灯
  • IUV -输入欠压指示灯
  • IOV -输入过电压指示
  • OOV -输出过压指示器
  • OOC -输出过流指示器
  • OTE -超温指示器
  • REC -从故障指示灯恢复
  • MPPTA - MPPT算法使能指标
  • CM -输出模式(1 =充电器模式,0 =电源模式)
  • BYP -回流电流控制单元MOSFET指示器
  • EN - Buck使能指示灯(1 = MPPT Buck是可操作的,0 =不可操作)
  • FAN -风扇运行指示灯
  • WiFi-WiFi启用指示灯
  • PI -输入功率(从太阳能获得的功率,单位为瓦)
  • PWM -注入到IR2104的PWM(十进制等值值)
  • 允许的PWM下限
  • VI -输入电压(太阳能板电压,单位为伏特)
  • VO-输出电压(以伏特为单位的蓄电池电压)
  • CI-输入电流(太阳能电池板电流,单位为安培)
  • CO -输出电流(以安培计的电池充电电流)
  • Wh-收集的能量(瓦时)
  • 温度-散热器温度(以摄氏度为单位)
  • 校准电流传感器零电流点
  • 瞬时电流传感器模拟电压输出
  • VO%Dev - VO与设定的电池最大输出电压的偏差百分比(单位%)
  • SOC -充电状态,电池的电量(%)
  • LoopT—循环时间,完成一个代码循环周期所花费的时间(以毫秒为单位)

笔记

  • 对于布尔变量,如FLV到EN;1表示真,0表示假。

步骤41:WiFi遥测应用

该项目有一个WiFi遥测和基于免费服务器的数据记录手机应用程序。MPPT的手机应用程序基于Blynk Legacy平台。Android和IoS都可以使用。

安装手机应用程序的步骤:

  • 从应用商店下载并注册为新用户。
  • 在Blynk Legacy应用程序中打开二维码扫描器
  • 扫描上面的二维码
  • 你立即得到了MPPT的手机应用程序的副本!
  • 只要点击播放按钮就可以开始了
  • 您可以添加一个主菜单快捷方式,这样您就可以直接打开MPPT应用程序,而不必一直通过眨眼菜单。

MPPT Blynk应用程序的特点:

  • 显示从太阳能电池板收集的实时能量
  • 显示太阳能电池板功率(瓦)
  • 显示太阳能电池板的电压和电流。
  • 显示电池充电在%
  • 显示电池充电电压和电流
  • 显示以千瓦时收集的能量
  • 以货币(美元、欧元、比索等)显示节省的能源
  • 显示临时工
  • 所有显示数据的三种不同实时图形。
  • 这些数据被记录在Blynk的免费数据库中,并每年更新一次。

观看Blynk教程(跳到13:01)

步骤42:设置MPPT(通过LCD菜单)

就像其他现成的商用MPPT一样,我在项目中添加了一个LCD接口。这不仅用于显示数据,也用于设置MPPT的设置,而无需处理代码。界面非常简单,易于浏览。以下是LCD菜单的布局:

导航按钮(1、2、3、4):

  1. 左按钮
  2. 右键
  3. 后退按钮
  4. 选择按钮

主页# 1

  • 第一行:太阳能,能源收获,运行日
  • 第2行:电池百分比,电池电压,电池充电电流

主页# 2

  • 第一行:太阳能,太阳能电压,太阳能电流
  • 第2行:电池百分比,电池电压,电池充电电流

主页# 3

  • 第1排:太阳能,能量收集,电池%
  • 第2行:16块代表电池寿命0-100%的能量条

主页# 4

  • 第一行:温度统计标签
  • 第2行:MPPT温度、风扇状态

主页面#5(设置菜单提示)

  • 按“选择”进入设置菜单
  • 进入设置菜单使充电过程停止为安全。

设置菜单

  1. 供应算法
    • MPPT + CC-CV-如果您使用太阳能电池板或风力涡轮机作为MPPT的输入,请使用此选项。MPPT算法是从太阳能电池板和风力涡轮机中提取最大功率所必需的。
    • 仅CC-CV-如果您计划将您的MPPT的输入连接到电源模块,请使用此选项。
  2. 充电器/事业单位模式
    • 充电器模式-充电时一定要用这个!在对电池充电时,需要选择“充电模式”,因为它包含了电池充电器所需的所有安全协议。这包括电池断开和连接功能!如果没有这个,您的MPPT在连接电池时肯定会损坏。
    • 事业单位模式-如果您计划将MPPT的电池端子直接连接到直流负载,如逆变器,而不使用电池,您可以使用这个。是的,MPPT可以在没有电池的情况下运行。这是一个实验性的特性,对修补者来说很有用。您也可以使用MPPT单元作为可编程降压转换器或台式电源。
  3. 最大电池电压
    • 输入电池组可承受的最大充电电压
    • 选择从0-50V
  4. 分钟V电池
    • 输入电池组的最小电池电压
    • 选择从0-50V
    • 这对电荷状态很重要
  5. 充电电流
    • 请输入您的电池可以承受的充电电流
    • 0-50A可选(本单元请不要超过35A)
  6. 风扇使
    • 使可能—当冷却风扇温度达到时,冷却风扇开始工作
    • 禁用—强制冷却风扇24/7关闭。
  7. 风扇温度
    • 冷却风扇将开启的温度
    • 可在0-120摄氏度之间选择(默认为60摄氏度)
  8. 关机温度
    • MPPT停止充电以防止过热的温度
    • 0-120℃可选(默认为90℃)
  9. WiFi功能
    • 使可能开启WiFi功能(耗电0.3W)
    • 禁用-关闭WiFi功能,省电。
  10. 自动装载特性
    • 启用-启动时从闪存自动加载存储的设置
    • 禁用-禁用自动加载,并使用Arduino默认变量设置。
  11. 背光的睡眠
    • 在可设定的时间内,当没有按下按钮时关闭背光
    • 持续时间:从不,秒,分钟,天,周和月
  12. 恢复出厂设置
    • 重置所有的MPPT设置为默认值
    • 按“选择”,然后选择“是”重新设置
  13. 固件版本页面
    • 显示设备上安装的Fugu MPPT固件版本。

步骤43:安装我的太阳能电池板

我有两个320W的太阳能板串联。菲律宾因疫情仍处于封锁状态。我们没有人力在屋顶上安装这些太阳能电池板,所以我采用了一个临时解决方案。我在院子里放了一根长而扁平的电线(规格14)到我的工作空间。我意识到这种解决方法所带来的损失。这就是为什么我使用串联,以增加电压和减少电流,减少损失相比,使用并联设置。

步骤44:我的工作区离网设置

这是6个月前我的MPPT安装第一天的照片。到目前为止,我仍然在使用它,并且在过去的6个月里一直没有问题。自从第一次安装以来,它已经从我的太阳能装置中收集了超过334kWh的能量。这并不多,因为我在工作空间中没有消耗太多的能量。它连接到我的1kVA 220V纯正弦波逆变器和我的8S 2.56kWh LiFePO4电池组(现在它在一个防火箱中)。

第45步:98%峰值效率

如果你看过这个视频,你会发现我做的不同的板子修改。在我的最终版本中,我做了一个自制的PCB版本,这是它的精简版(运行在单个ESP32核上,WiFi禁用,没有LCD)。

通过在MPPT的输入和输出端口连接电压表和电流表,我对简化后的版本进行了效率曲线测试。然后我连接一个可变负载控制器与镍铬水浴作为一个高功率负载。当我增加负载时,我记录相应的电压和电流,以计算每行的电源输入和电源输出。在使用了效率公式之后,我把这些点画在图上,求出了效率曲线。

令我惊讶的是,它在270W、61.4V输入和27.00V输出时的转换效率为98.6%。我无法找到图表的末端,因为我的袖珍DMM的电流表被限制在10A。这听起来很好是真的,我仍然怀疑我的9999计数袖珍DMMs是否足够准确。在光明的一面,即使没有主动冷却的mosfet几乎加热,这是一个好迹象,我们有最小的传导损失从mosfet。视频的第4部分将分配给这样的测试。我将不得不重新访问这个,并使用我的Agilent 34401A & TTi 1604实验室DMM来实现更好的准确性。

效率曲线实验室测试Excel表格:

https://drive.google.com/drive/folders/1K_LWb9oq4K..。

步骤46:未来计划

有新情况我会通知你们的。我希望你们喜欢这个教程!

可能的插件:

  • 你实际上可以修改这个150V直流操作。很简单,改变mosfet Vds公司150 v,改变输入电压分压器为输入适当的比率能够探测到120 v / 150 v,最后删除D8的翻译,所以MPPT的可以从电池获得权力和不超过80 v巴克规则的限制。视频的第4部分将对此进行解释。
  • MPPT实际上可以充电电池化学高达80V而不是50V!这是在我最初的设计中设置的,但我将输出的电压分压器改为一个较低的比例,以增加输出的电压传感分辨率。改变输出的分压器电阻,与输入的电阻值相同,可以给电池充电高达80V。你只需要从代码中改变电压分压器的比例值。
  • 您可以使用20x4字符LCD或I2C AMOLED LCD更好的显示。因为我一开始是通过WiFi手机应用查看大部分数据的,所以我没有费这个力气。
  • 感应器可以安装在外部,如果你计划建立一个更大的!
  • 并联4个mosfet以降低导通电阻,降低导通损耗。这使得更高电流的MPPT变体成为可能!也需要一个更大的电感来实现这一点。

更新:

  • 我对2.0版的计划是使用igbt来容纳150V或300V太阳能电池板设置,并尝试给它一个50A或100A的电流能力。有一种被称为交错同步降压配置的东西,这可以很容易地增加最大功率跟踪器的功率处理能力。
  • 电量状态计算的库仑计数在我个人府谷MPPT固件的测试阶段。
  • 视频的第二部分将展示MPPT的完整设计过程
  • 视频的第三部分将深入讲解河豚MPPT固件和相关算法
  • 视频的第4部分将是我们将在MPPT单元上进行的测试的蒙太奇片段。

第一个分享

    建议

    1285.3 k
    11139.3 k
    20.3.1 k