描述
<p>注:*为必填项。</p>
<p>【请在报名阶段填写 ↓】
<em> 1、自我/团队介绍
</em> 2、简要介绍项目</p>
<h2>1、项目详情</h2>
<pre><code>本项目秉承以往设计原则,均全部开源。其中带有部分指导内容,以帮助大家都能够制作出来,由于时间匆忙,闲暇时刻补充文档,定有不足之处,希望大家指正。
本项目预定采取两款单片机,一款是极为流行的Arduino atmega328,适合编程能力适中的伙伴采用。
另一款预计采用GD32VF103CBT6,程序也将全部开源。项目中采用润石科技的Rs358以及风华电阻电容(若商城中无相应值电阻电容则替换)。
</code></pre>
<p>项目参数:</p>
<table>
<tr>
<th>参数</th>
<th>值</th>
</tr>
<tr>
<td>额定输出电压</td>
<td>0 - 24V</td>
</tr>
<tr>
<td>额定输出电流</td>
<td>0 - 3A</td>
</tr>
<tr>
<td>输出功率</td>
<td>MAX 72w MIN 27W 【根据输入电源】</td>
</tr>
<tr>
<td>电压分辨率</td>
<td>2mV 12bit DAC可以提高分辨率至0.5mv</td>
</tr>
<tr>
<td>电流分辨率</td>
<td>1mA</td>
</tr>
<tr>
<td>纹波</td>
<td>待测量</td>
</tr>
<tr>
<td>质量</td>
<td>待测量</td>
</tr>
</table>
<h2>2、项目面临的挑战及所解决的问题</h2>
<h3>2.1 电源常见问题</h3>
<p><strong>1. 电源体积质量大,适用实验室等固定使用。</strong></p>
<p><img src="//image.lceda.cn/pullimage/FJo67NxCBiJw1RXsuXR129Om2ZEIkakH8NB8PBVx.png" alt="淘宝开关电源"></p>
<p><strong>2. 开关电源的纹波远远大于线性电源</strong></p>
<p><img src="//image.lceda.cn/pullimage/P4EcgnM3wrUnS7ae0HFpvsR4u5XTdKDp0ZSLZfgi.png" alt="纹波对比"></p>
<p><strong>3. 一般实验电源不能小电流恒流输出</strong></p>
<p><strong>4. 价格稍高</strong></p>
<pre><code>综上所述:如何设计一款价格实惠,且性能较好同时具有便携性的自用线性电源是本设计的重点。
需要提出的是,由于成本的降低和本人能力有限,其中一些保护电路会舍弃,但是本设计尽可能提供保护。
</code></pre>
<h3>2.2 踩坑运放之——输入共模电压范围</h3>
<pre><code>为尽可能压缩成本,选择国产LM358一块仅需0.2元,挺香的。但是遇到一个小问题,虽然很快就解决了,但有必要记录一下。
问题描述: 项目中通过LM358搭建电压跟随器,目的是避免对差分放大器的干扰,但是却降低1.5V(仿真中)。实际测试降低1.35V。具体情况如下图所示:
知识点:
1、VICM(共模电压) = (VIN(+) + VIN(-))/2 注:跟随器通常假设VIN(+)=VIN(-)=VICM
2、VICMR(输入共模范围)定义了运放器件正确运行所需的共模输入电压的范围,并描述输入与每个电源轨的接近程度。
另一种描述方法: VICMR = VICMR_MAX - VICMR_MIN
VICMR_MIN = VCC(运放电源) - 电源轨限制
VICMR_MAX = VCC + 电源轨限制
</code></pre>
<p><img src="//image.lceda.cn/pullimage/b6gP1sihHKtKblrhDwmF7fPeUTCVQgA6ew24DNg4.png" alt="LM358"></p>
<pre><code>由以上所述,LM358从数据手册中可以得出,正好输入共模电压范围为V-1.5跟仿真结果一致。
解决办法:将运放替换为润石科技的Rs358,这是一款轨道轨的运放,成功解决以上问题。
</code></pre>
<h3>2.3 QC3.0协议诱骗</h3>
<pre><code>为方便使用充电宝,手机充电器等外部供电,本设计支持QC3.0协议。实际理论如下:
</code></pre>
<h2>3、项目硬件、软件关键点(主要对电源设计上的理论描述)</h2>
<h3>3.1 PWM_DAC</h3>
<pre><code>附件中带有Multisim14仿真文件,可以下载供参考
主要技术路线: 积分电路
PWM(Pulse Width Modulation)是频率固定、占空比变化的数字信号,PWM 信号波形可以被分解为一个直流分量加上一个相同占空比,但平均幅度为零的新的方波。
</code></pre>
<h3>3.2 电压反馈部分</h3>
<h3>3.3 电流反馈部分</h3>
<p><img src="//image.lceda.cn/pullimage/MyWPBaB9I5T2EG3j8xJeYm7lwvPXTAhc7jvRCHkS.png" alt="QQ截图20200808235748.png"></p>
<pre><code>小明提问:第一部分为什么并联10个10欧姆电阻,在这里起什么作用?
作者解答:若采用单个1欧姆的电阻,需要采用功率电阻,功率电阻体积大且价格比较贵,所以该项目采用并联10个电阻以增加功率的同时降低项目成本。
小王提问:在差分放大器前端为什么需要用一个放大器作缓冲?
作者解答:为防止电流灌入差分放大器,引起不必要的误差,故采用放大器输出低电流(基本可以忽略)的特性,提高差分放大电路精度。
小周提问:第二部分差分放大器用来干嘛的?
作者解答:差分放大器主要用于计算电阻两端电压差,而根据欧姆定律可知,I = U/R当R=1欧姆时,电压差则对应输出电流。
</code></pre>
<h3>3.4 微电流检测部分</h3>
<pre><code>该部分若需要极高的精度,例如需达到nA级别的电流测量,可以参考第四届立创电子设计大赛的作品。
项目地址:https://diy.szlcsc.com/p/xacker/dong-tai-dian-liu-jian-ce-she-bei
由于此次项目精度要求不高,故采用INA219替代,本项目中,此部分还作为微小电流控制的软件反馈,以增加实验中,弱电流充电的稳定性。
</code></pre>
<h3>3.5 预升压部分</h3>
<pre><code>该部分采用数字电位器和升压芯片组成,升压模块和稳压芯片之间配合极为关键。因为LT3080对跨度较大的电压会导致其需要更大的散热器。而升压模块则可以保证在输出电压低于输入电压时,通过升压芯片11使能口停止工作。此时电压则通过L1和D3(实际测试具有0.5v左右压降)。若输出电压高于输入电压,若输出15V,则升压至17V或18V这样既能够保证LT3080的温度上的稳定性,还可以添加高于输入电压的输出。
其中的主要计算公式如图中的VOut所示:
</code></pre>
<p><img src="//image.lceda.cn/pullimage/Z8qbJnDWMKFfiLhi2W74frOvwNByr7ykEl11k0bH.png" alt="预升压"></p>
<pre><code>升压计算公式如下:
</code></pre>
<p><img src="//image.lceda.cn/pullimage/Nr898IqGSH4wxivB2BvihU3Dw3ymN2JVtjqfe1jI.png" alt="QQ截图20200823150856.png"></p>
<h3>3.6 数字电位器程序篇</h3>
<pre><code>void MCP4017::setResistance(double Rout)
{
uint8_t tempsteps = (int)((_maxSteps * (Rout - WIPEROHMS)) / _maxOhm);
setSteps(tempsteps);
}
/////////////////////////////////////////////////////////////////////////////
/*!
just in case you need it, a way to calculate the resistance
since most of these potentiometers loss settings at power down (or they simply loose power)
they generally default to their midrange
*/
/////////////////////////////////////////////////////////////////////////////
float MCP4017::calcResistance()
{
//float Rout;
//Rout = ((_currentStep / _maxSteps) * _maxOhm) + WIPEROHMS;
return _currentRout;
}
/////////////////////////////////////////////////////////////////////////////
/*!
Here is our actual method where we send the steps over to the Digital Potentiometer!
*/
/////////////////////////////////////////////////////////////////////////////
void MCP4017::I2CSendSteps(uint8_t steps)
{
Wire.beginTransmission(I2CADCAddress);
Wire.write(steps); //
Wire.endTransmission();
}
</code></pre>
<h2>4、项目材料清单</h2>
<h2>5、项目展示</h2>
<h3>5.1 第一版本展示</h3>
<p><img src="//image.lceda.cn/pullimage/IWIQSNJZF2cjHqyUGvYCpdHP6gvDSffBR8CRJnPE.jpeg" alt="IMG_20200810_002501.jpg"></p>
<h2>6、开源文档</h2>
<h2>7、参考文献</h2>
<p>``
1、 <a href="https://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=143727" target="_blank">https://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=143727</a></p>
<pre><code></code></pre>
文档
电源部分原理图
PCB_2020-08-03_12-37-57
控制部分
评论(6)