前言
事情是这样的。
普通的电流表功能单一,好一点的还能测量功耗,但并不能避免烧板。
于是我想花较低的成本,自己做一个精度高,功能更全的可编程电流表,最好能带保护功能,避免烧板的情况!
正好,立创开源平台有个类似的外包项目,完成就能得2000元奖金。
那我肯定是拿下了!
本文主要是记录一下电流表的制作过程和电路代码原理。
项目说明
这是一个TYPE-A转TYPE-A的可编程电流表!
①可设置20mA-3A的可编程电流,连续可调,触发周期可调,响应快;
②小幅度波动容忍度可调;
③支持5-35V的快充供电,可以作为快充中间件;
④大电流极速响应,当瞬时电流超过设定值的1.2倍时,会立即断开后级电路;
⑤可以实时提示限流值的情况,实时查看供电电压及电流的情况;
⑥提供源代码,优化改进更容易。这里下文会有详细说明。
先分享一下电流表的设计原理。
设计原理
因本次主要是要实现一个可编程电流表。
- 首先是电流的显示;
- 其二是要可编程的电流保护功能。
这个要求不复杂,但考虑到是做为充电器的中间件,后期可能会有QC,出现比较高的电压,就需要支持宽电压供电,所以这里使用了DC-DC降压电路,供电电压范围可以达到5-20V。
使用了二级稳压,DC-DC先降压到5V,再进一步通过LDO将5V降到3.3V,这样能很好的提高MCU供电电压的稳定,以此获得更平滑的供电,也能提高ADC采样的稳定性。
原理图
PCB
下面讲解比较主要的7部分电路:
1.供电电路
电流表直接由USB供电。
使用DC-DC降压芯“ JW5015A”将输入电压降到5V,再使用LDO SK6014稳压到3.3V,之间使用了一个可恢复保险丝和ESD进行后级保护。
实测这款DC-DC降压芯片,在输入电压为5.12V时,测量5V输出能达到5.08V,几乎没有压降,在整个供电范围内,输出电压也非常的稳定。
误差值可能与FB反馈端精度有关。
2.输出控制及电流采样电路电路
输出控制使用了微硕的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,A3的增益100。
我理解的就是放大100倍,起到将小电压放大的作用,方便于我们采样,以提高采样精度。
采样输出端也使用了一个3.3V ESD,防止芯片串入高压损坏MCU。
3.USB电压采样
电压采样尽量使用0.1%精度的电阻,以便提高采样精度。
4.显示电路
LCD ST7735S 1.14寸屏显示电路:
这里使用的是1.14寸的屏,8脚插接屏,分辨率 160*80。
此处对背光加了额外电路,可以使用PWM来控制亮度。
5.按键电路
这里使用了两个按键和一个拨轮编码器。
这个按键是软硅胶按键,手感比较好。
编码器使用的是EC12B的拨轮编码器,仅4元。
把按键单独拿出来说的原因是:按键并联的硬件防抖电容大家不要省!这个防抖能起非常好的作用,别觉得没用就不焊了啊。
6.无源蜂鸣器驱动电路
蜂鸣器要买无源的,因为这里使用PWM驱动发声。
7.主控电路
主控使用的是国民技术的 N32G430C8L7,Flash 64K,SRAM 16K。
软件说明
本章节主要说明——开发环境、ADC采样、毫秒定时器。这三个部分。
1.开发环境
软件使用Keil 5.36开发。
N32G430C8L7 SDK版本使用的是1.1.0。
2.ADC 采样
这里使用了DMA方式进行ADC采样。
减少了MCU的参与,速度快效率高。
这里采样了3个通道,分别是:
- 电压
- 电流
- 内置的温度采样
不过温度并没有使用。
采样使用了16倍过采样,减小了ADC采样的漂移,提高了采样的精度,不好的地方就是延长了采样时间。
上面是DMA采样传输完成后的中断。
每次采样完一组数据后就会进入中断,这样我们就能做一些数据处理。
关于限流保护,也是放在这里进行处理的,这样能够优先进行响应,响应速度快,及时保护后级电路的安全。
3.毫秒定时器
高精度的时间在程序设计中非常的重要!
不要想着滴答定时器,一个是精度不高,二呢就是会消耗MCU的时间,会浪费大量的MCU资源。
本程序中,毫秒定时器几乎参与到了所有模块中,特别的重要。
时间定时器就是一个时间计数功能,使用基础定时器TIM6就能满足要求。
在“定时器更新中断”中,除了做时间计数外,还做了更多功能:
①N32G430串口没有空闲中断,因此自己实现了空闲中断,以便串口的不定长接收功能;
②自动进行蜂鸣器的响铃停止功能,做了一个时间计录标记,当达到指定的时间后自动停止,这样就不需要额外编写检查程序了;
③在进入限流保护后,处理不同声音,不需要再使用Delay延时等待。
开源说明
本项目参加了【立创开源硬件平台】的【星火计划_外包赛道】。
项目成本30元(加面板外壳50元),获得奖金2000元(含税)。
遵照GPL 3.0 开源协议,可以自由复制、修改和传播。
本项目为首次公开,为本人原创项目。
项目未曾在别的比赛中获奖。
参考资料:
[1]作者:YuToo《可编程电流表》***/gnosis/ammeter
— 完 —
本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:dandanxi6@qq.com