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.供电电路
使用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,禁止商用,未经许可禁止转载