我的订单购物车(0)联系客服 帮助中心供应商合作 嘉立创产业服务群
领券中心备货找料立推专区爆款推荐TI订货PLUS会员BOM配单PCB/SMT工业品面板定制

可编程电流表

2023-09-22 16:29:42阅读量:5101

本文作者:立创开源硬件平台 OSHWHub @YuToo禁止商用,未经许可禁止转载点击看原文章


1.项目说明


这是一个TYPE-A转TYPE-A的可编程电流表!


  



①可设置20mA-3A的可编程电流,连续可调,触发周期可调,响应快;

②小幅度波动容忍度可调;

③支持5-35V的快充供电,可以作为快充中间件;

④大电流极速响应,当瞬时电流超过设定值的1.2倍时,会立即断开后级电路;

⑤可以实时提示限流值的情况,实时查看供电电压及电流的情况;

⑥提供源代码,优化改进更容易。这里下文会有详细说明。

先分享一下电流表的设计原理。




2.设计原理

因本次主要是要实现一个可编程电流表。

首先是电流的显示;

其二是要可编程的电流保护功能。

这个要求不复杂,但考虑到是做为充电器的中间件,后期可能会有QC,出现比较高的电压,就需要支持宽电压供电,所以这里使用了DC-DC降压电路,供电电压范围可以达到5-20V。

使用了二级稳压,DC-DC先降压到5V,再进一步通过LDO将5V降到3.3V,这样能很好的提高MCU供电电压的稳定,以此获得更平滑的供电,也能提高ADC采样的稳定性。


下面讲解比较主要的7部分电路:



01.供电电路

  


电流表直接由USB供电。


使用DC-DC降压芯“ JW5015A”将输入电压降到5V,再使用LDO SK6014稳压到3.3V,之间使用了一个可恢复保险丝和ESD进行后级保护。

实测这款DC-DC降压芯片,在输入电压为5.12V时,测量5V输出能达到5.08V,几乎没有压降,在整个供电范围内,输出电压也非常的稳定。

误差值可能与FB反馈端精度有关。



02.输出控制及电流采样电路电路

  



输出控制使用了微硕的PMOS WSD30L20DN。这款PMOS最高支持30V的电压及20A的电流,DFN 3*3封装。

工作原理简单分析:

PMOS是低电平导通,初始上电时,由R3给Q2 G极施加高电平,Q2默认截止。

当需要打开时,由VBUS_CTRL输入高电平,使Q1导通,将Q2 G极电压拉低,Q2打开,给后级供电,实现了整个开关过程。

因Q2的Vgs电压为20V,为了保护MOS管,所以做了分压,防止Vgs电压过高而损坏MOS管。

电流采样使用的是INA180A3,。

我理解的就是放大100倍,起到将小电压放大的作用,方便于我们采样,以提高采样精度。

采样输出端也使用了一个3.3V ESD,防止芯片串入高压损坏MCU。



03.USB电压采样


电压采样尽量使用0.1%精度的电阻,以便提高采样精度。


  





04.显示电路

LCD ST7735S 1.14寸屏显示电路:

  




这里使用的是1.14寸的屏,8脚插接屏,分辨率 160*80。

此处对背光加了额外电路,可以使用PWM来控制亮度。



05.按键电路

  

这里使用了两个按键和一个拨轮编码器。

这个按键是软硅胶按键,手感比较好。

编码器使用的是EC12B的拨轮编码器,仅4元。

把按键单独拿出来说的原因是:按键并联的硬件防抖电容大家不要省!这个防抖能起非常好的作用,别觉得没用就不焊了啊。



06.无源蜂鸣器驱动电路

  

蜂鸣器要买无源的,因为这里使用PWM驱动发声。



07.主控电路

  



主控使用的是国民技术的 N32G430C8L7,Flash 64K,SRAM 16K。


  


图片立创商城可以买到,国产芯片中也算是价廉物美了。


3.软件说明


本章节主要说明——开发环境、ADC采样、毫秒定时器。这三个部分。

01.开发环境


软件使用Keil 5.36开发。

N32G430C8L7 SDK版本使用的是1.1.0。



02.ADC 采样

这里使用了DMA方式进行ADC采样。

减少了MCU的参与,速度快效率高。

  

  

  



这里采样了3个通道,分别是:

  • 电压
  • 电流
  • 内置的温度采样

不过温度并没有使用。

采样使用了16倍过采样,减小了ADC采样的漂移,提高了采样的精度,不好的地方就是延长了采样时间。

  



上面是DMA采样传输完成后的中断。

每次采样完一组数据后就会进入中断,这样我们就能做一些数据处理。

关于限流保护,也是放在这里进行处理的,这样能够优先进行响应,响应速度快,及时保护后级电路的安全。



03.毫秒定时器
高精度的时间在程序设计中非常的重要!

不要想着滴答定时器,一个是精度不高,二呢就是会消耗MCU的时间,会浪费大量的MCU资源。

本程序中,毫秒定时器几乎参与到了所有模块中,特别的重要。

  

时间定时器就是一个时间计数功能,使用基础定时器TIM6就能满足要求。

  



在“定时器更新中断”中,除了做时间计数外,还做了更多功能:

①N32G430串口没有空闲中断,因此自己实现了空闲中断,以便串口的不定长接收功能;

②自动进行蜂鸣器的响铃停止功能,做了一个时间计录标记,当达到指定的时间后自动停止,这样就不需要额外编写检查程序了;

③在进入限流保护后,处理不同声音,不需要再使用Delay延时等待。

  



更多详情及附件,可从原工程查看。

本文作者:立创开源硬件平台 OSHWHub 用户@ YuToo禁止商用,未经许可禁止转载


标签图标
DIY | 电流表
广告图片