硬件工程师要学习的第一门基础课,恐怕都是电源的设计吧。不管是哪种单片机和芯片,也不管是哪种运算放大器,或者哪种功率器件,总是需要正确的供电,否则,再精妙的构想,也是无本之木,无水之源。在电源的设计中,最基础的应该是稳压器(Voltage Regulator)的应用设计了,比如最常见的LM7805,LM2596,LM1117等等。不同型号的Voltage Regulator具备不同的特性,根据应用场合,选择合适的Voltage Regulator,并为其设计外围电路,是作为一个硬件工程师的基本功。
LM2677,是TI公司生产的高效率5A开关buck稳压器,由于它内部具备的low ON-register DMOS功率开关,使得它能够驱动大电流负载。LM2677有+3.3V、+5V、+12V和AJUSTABLE四个版本,其中AJUSTABLE的输出范围是1.2V~37V,使用它可以做一个可调的恒压源。官方手册中给出的AJUSTABLE典型应用电路如下:
在上图中,R1固定为1K,选择不同的R2值,就能得到不同的输出电压。
VOUT = VREF * (R1 + R2) / R1
其中VREF = 1.21V。如果需要得到14.8V的输出,那么R2选择11.23KΩ就可以了。要制作一个手动可调的恒压源,将R2换成一个电位器即可。用户拧动电位器,使其有效阻值变化,LM2677的输出也会随之变化。
LM2677的数控方案(一)
实现了手动可调的控制之后,如果要制作一个数控可调的恒压源,那么是不是把R2换成一个数字电位器就可以呢?答案是:NO。因为绝大部分的数字电位器Potentiometers端,所加载的电压均不能超过VCC,也就是+5V或者+3.3V。如果把R2换成了数字电位器,VOUT那一端的电压就远远超过了数字电位器Potentiometers端的允许电压。
如果将数字电位器和电阻串联起来当作R2,使得在电阻的分压下,数字电位器Potentiometers端的电压不超过VCC呢?经过简单的计算就会发现,运用这种方式的话,数字电位器起到的作用实在很小,即使数字电位器满量程的变化,它引起的输出电压变化也不过是一个很小的范围。
为了应用数字电位器,LM2677的外围电路需要做一些调整。调整的目的是,使得数字电位器的满量程变化,能够对应到所需输出电压的满量程。调整过后的电路图如下:(这个电路是为1.5V~15V的输出电压设计的,如果需要更大的输出电压,修改R29和R30的值即可。)
VOUT并没有像手动控制的那样,将自身通过电阻直接反馈到FB端,而是经过了两个双路运算放大器LM358和数字电位器ISL95810构成的反馈网络。反馈网络的第一级是电压跟随器,作用是增大反馈网络的输入阻抗,否则第二级的输入就变成了VOUT * (R26//R24) / (R23 + R26//R24),而不是VOUT * (R26) / (R23 + R26)。第二级和第三级是反向比例放大电路,数字电位器ISL95810即是第三级的反馈电阻。第四级是同相比例放大电路,它将前级的信号放大4倍后输入到FB上。
ISL95810是intersil公司生产的256taps数字电位器,有50kΩ和10kΩ两个版本可选,这里使用的是10kΩ版本。当ISL95810的有效阻值为0Ω时,平衡后的输出电压为15.28V;当ISL95810的有效阻值为10kΩ时,平衡后的输出电压为1.39V。输出电压VOUT和数字电位器Rx满足下面这个关系:
VOUT = (VREF / 4) * 5 / (1 + Rx)* 10.1
假如当前状态下,ISL95810的有效电阻变小,那么第三级的输出电压就会相应的变低,第四级的输出电压也会相应的变低,反馈到FB上的电压就会低于原来稳定状态下的1.21V,此时LM2677就知道该升高自身的swith frequency的占空比,从而得到更高的输出电压,直到FB重新获得1.21V为止。
这种方案实现了数控,且调节范围很大,但是也有一些缺点:首先,电路稍微有些复杂;其次,数字电位器的成本稍高;第三,需要额外设计一个±5V的电源,给运放供电。(当然也可以使用单电源供电和+2.5V的参考电压,节省掉±5V的电源,但是运放电路会相应的更复杂一些。)
LM2677的数控方案(二)
LM2677的内部工作原理,是使用VOUT反馈到FB端的电压,与参考电压VREF比较,构成一个负反馈网络。VOUT反馈到FB的电压,可以直接使用电阻来实现(如使用电位器),也可以使用运算放大器构成的电路(如方案一),实际上,只要是能将VOUT反馈到FB端的任何方式,都可以实现调节功能,比如使用AD采集VOUT,然后使用DA反馈到FB。
这种方案,需要使用AD和DA芯片,看起来是最复杂。但是由于数控方案本身需要UART(或其他通讯协议)的功能而必须使用MCU,而目前的MCU集成了AD和DA部分,所以反而在电路实现上最为简单。(32位CORTEX-M3的ARM异军突起,使得集成AD和DA的单片MCU价格也在二十元以下,而使用8位MCU配合DA和AD芯片的成本,已经超过了前者。虽然使用前者强大的32位处理功能,来实现单一的电压调节,实在是有点浪费啊-_-~~~)
图中,VOUT经过R14和R16分压之后,输入至AD采样,结果经过运算之后,转换出相应的DA值,经过R13,反馈到FB上。使用R11连接+24V,这样即使DAC_OUT失效,输出也会保持在很低的安全电压下。D4的作用是将DAC_OUT电压钳位在+3.3V上,保护DA输出引脚。只要DAC_OUT能够以正确的比例反映ADC_IN的值,那么这个负反馈网络就构建成功。
OFF引脚具备内部上拉,如果悬空则芯片会一直工作。加上R17下拉到地,使得MCU未工作时LM2677处在关断状态。
RS232和RS485
要完成一个功能完整的数控电压源,当然不能只有LM2677,还得有MCU以及它的外围芯片。这里采用的MCU是STM32F103RCT6,它具备256K字节的程序空间和48K的RAM,自带DA和AD模块。采用MAX3485和MAX3232,实现RS485和RS232的串口通讯。(这些都属于常规的设计,这里就不多扯了~)
值得一提的是RS485总线的地址实现。RS485总线可挂接多个设备,每个设备都有自身的地址,设备通过匹配地址,来确定是否响应当前指令。设置地址,常见的方法有:一,拨码开关(或电位器)等手动方式,优点是简单直观;缺点是不宜扩展,且有相当的硬件成本。二,存储在EEPROM中,优点是容易扩展,可由开发者将地址固化在EEPROM中,也可由用户通过指令设置,可存储更多详尽具体的信息;缺点是若仅仅为了存储撑死了不到8字节的地址信息,不值得专门放置一片EEPROM。三,直接写入程序FLASH空间,优点是节省硬件成本,缺点是每一个MCU都必须烧进不同的程序。四,使用MCU(或其他芯片)厂家固化的产品序列号,优点是节约硬件成本,缺点是序列号一般比较长,而只选取其中部分字节有可能造成地址重合。
由于STM32F103RCT6没有内部的EEPROM,也不需要用户频繁的更改地址,加上对实时性的要求不高,所以采用了第四种方法。以STM32的序列号低十六位作为地址,对负载量不高的RS485总线来说,地址重合的可能性较低。万一重合,还可发送完整的序列号。识别完整还是部分序列号,在指令中很好设计。这样就既减少了地址的长度,又解决了地址重合的问题。
用户377235 2016-6-3 16:00
为何不用数字电位器替代R1呢?
用户1431363 2016-6-3 09:46