如何利用单片机IO口产生两倍的电源电压

简介

在很多情况下,电子系统中需要获得比工作电源高的电压电源,或者负电源。比如在一些功率器件(MOS)的基极驱动信号、扩展运算放大器的动态范围、一些通信信号(UART232)。

现在有很多专门的芯片,可以提供高效的电压转换,比如ICL7660就是一个非常通用的开关电压转换芯片,通过灵活的配置,可以产生-Vcc, 2VCC等不同的电源。并且可以通过级联获得更高倍数的电压信号。

如果仅仅是为了驱动一个高端MOS管的动作,需要有两倍以上的VCC作为基极信号,控制器开断,那么可以使用单片机的IO口来产生两倍的工作电源。

▲ 插图|Bing图库

▲ 插图|Bing图库

下面给出了基于STC8G1K08(SOP16封装)设计的方案,以及相关的应用。

方案

这个方案最初的目标是用于制作STC无线远程自动程序下载器。由于STC系列的单片机在自动下载的时候,一种最通用的方式,就是使得单片机冷启动,在此过程中,配合PC端的ISP程序在单片机上电过程完成握手信号,使得单片机进入底层监控程序,最终完成下载。

为了能够自动控制外部单片机电源的通断,通常可以使用微型继电器、大功率MOS管。为了便于后期的通讯,当做开关作用的MOS管位于电源的上端,那么控制它的通断的栅极驱动信号就需要比VCC更高的电压。下面给出的方案就是借助于倍压整流(或者仿照ICL7660的工作原理)的方案。

1、原理图设计

本实验的实验工程文件:

D:\zhuoqing\AltiumDesigner\STC\Test\2020\Download7660L.SchDoc

整体的电路原理如下。利用单片极IO口只是该电路功能的一部分。
▲ 直接应用单片机IO口完成倍压整流

▲ 直接应用单片机IO口完成倍压整流

使用STC8G1K08的CCP2输出第3通道的PWM波形。配合P3.6输出高电平和低电平,经过两个肖特基二极管的倍压整流(DT,DT1,C20, C21)最终可以在MOS管T1的栅极形成2VCC的电压。

工作模式1:
P5VCTN输出+5V,PWMO输出占空比为50%的方波信号。C20电容上就会交替充上+5V电压,然后通过DT往C21上冲进2VCC 的电压。

在这种情况下,可以将DT,DT1,C20,C21看成对PWMO的标准倍压整流电路;

此时T1的栅极上施加有2VCC(+10V)的驱动电压,对外的电源打开。

工作模式2:
输出0V模式。此时将P5VCNTN输出为0V,PWM0停止振荡,它可以停留在0V,也可以停留在+5V,由于C20的隔直,所以停止振荡的PWMO信号不会对输出产生影响。

此时,T1栅极的电压经过RT1接到地,输出关断。

2. 制作实验电路板

通过设计单面PCB版图,利用快速制版方式获得实验电路。
▲ 实验电路板

▲ 实验电路板

其中。在C100处焊接容量为1000uF的电容,这使得开关对外负载如果也具有很大的容性的时候,可以提供比较大的冲击电流。

如果该电容没有焊接,或者采用的电容较小,此时在MOS开启对外负载供电的时候,对本电路电压产生冲激,使得电路中的单片机重启。

实验结果

实验中的单片机软件目录:

D:\zhuoqing\window\C51\STC\Tools\STCDL\STCDL8G1K1PWM\STCDL8G1K1.uvproj

1. 软件相关配置

STC的单片机内部时钟配置在35MHz。
▲ STC8G1K 硬件配置

▲ STC8G1K 硬件配置

在PWM输出使用8Bit的模式。

2. 相关子程序

控制10V输使用下面两个指令。需要同时控制P5V,PWMO的输出。

#define P10V_ON                 ON(P5V_PIN), PWM3SetPWM(0x7f)        		
#define P10V_OFF                OFF(P5V_PIN), PWM3SetPWM(0xff)
3. 电路各部分的信号

系统上电,并下载程序之后,测量电路的各部分的信号以及输出性能。
▲ 实验电路板上电后的情况

▲ 实验电路板上电后的情况

参与产生电压的两个IO口,都设置为PUSH-POLL的大电流输出模式。

(1)驱动波形:

测量电路中的波形如下图所示:
▲ 电路上的两部分的波形

▲ 电路上的两部分的波形

(2)输出的2VCC电压:

由于存在整流二极管的电压降,所以实际输出的电压比2VCC要低。在MOS的栅极上可以测到得到输出的驱动电压为:9.33V。

(3)MOS输出阻抗:

使用手持的RLC表,测量T1(MOS)的D,S极之间的电阻,大约为40mΩ。这说明该MOS管被充分打开了。
▲ 测量阻抗的手持RLC表

▲ 测量阻抗的手持RLC表

4. 倍压部分输出特性

使用电子负载作为倍压整流的负载,测量在不同的输出电流下,倍压整流的输出电压。

▲ 电子负载外观

▲ 电子负载外观

如下是测量不通电流下的输出电压,

vdc=[-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,-0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]
vout=[9.31,9.30,9.31,9.31,9.30,9.31,9.31,9.30,9.30,9.31,9.30,9.31,9.31,9.30,9.30,9.31,9.30,9.30,9.11,9.01,8.91,8.82,8.71,8.61,8.51,8.41,8.31,8.21,8.10,8.00,7.90,7.78,7.67,7.57,7.45,7.34,7.22,7.10,6.99,6.87,6.74,6.62,6.49,6.36,6.23,6.09,5.95,5.81,5.66,5.50,5.34,5.18,5.00,4.81,4.63,4.47,4.34,4.26,4.20,4.15,4.11,4.07,4.02,3.99,3.95,3.90,3.87,3.83,3.79,3.75,3.71,3.67,3.63,3.59,3.54,3.50,3.46,3.41,3.37,3.33,3.27,3.23,3.18,3.13,3.08,3.03,2.97,2.93,2.87,2.81,2.76,2.70,2.64,2.58,2.53,2.46,2.40,2.34,2.26,2.19]

从下面图中俗称,输出电压随着电流的增加逐步下降。

▲ 倍压整流输出电压与电流之间的关系

▲ 倍压整流输出电压与电流之间的关系

输入电流和电压变化范围大体如下:

Δ I = 36 m A ,      Δ V = 7.1 V \Delta I = 36mA,\,\,\,\,\Delta V = 7.1V ΔI=36mA,ΔV=7.1V

则倍压整流的输出等效电阻为:

R s = Δ V Δ I = 7.1 36 × 1 0 − 3 = 197.2 Ω R_s = {{\Delta V} \over {\Delta I}} = {{7.1} \over {36 \times 10^{ - 3} }} = 197.2\Omega Rs=ΔIΔV=36×1037.1=197.2Ω

实验中的测量程序:

#!/usr/local/bin/python
# -*- coding: gbk -*-
#============================================================
# TEST1.PY                     -- by Dr. ZhuoQing 2020-05-02
#
# Note:
#============================================================

from headm import *
from tsmodule.tshardware    import *
from tsmodule.tsvisa        import *
from tsmodule.tsstm32       import *
#------------------------------------------------------------
vdc, vout = tspload('testdata', 'vdc', 'vout')

i0 = (99 - 37)
v0 = 1.1e-3

vstart = vdc[0]

def v2i(v):
    return (v - vstart) * i0 / v0/ 10

printf(vdc, vout)
I = [v2i(v) for v in vdc]

plt.plot(I, vout)
plt.xlabel('Out Current(ms)')
plt.ylabel('Out Voltage(V)')
plt.grid(True)
plt.show()

exit()

#------------------------------------------------------------
dm3068open()

#------------------------------------------------------------
vdcdim = []
voutdim = []

for s in range(100):
    zbcmd(b'clzigbee %d'%s)

    time.sleep(1)
    vdc = dm3068vdc()
    meter = meterval()
    vout = meter[0]

    printf("VDC:%f, VOUT:%f"%(vdc, vout))

    vdcdim.append(vdc)
    voutdim.append(vout)
    tspsave('testdata',vdc=vdcdim, vout=voutdim)

printf('\a')
tspsave('testdata',vdc=vdcdim, vout=voutdim)

plt.plot(vdc, vout)
plt.show()



#------------------------------------------------------------




#------------------------------------------------------------
#        END OF FILE : TEST1.PY
#============================================================

结论

直接使用能够输出大电流的单片机IO口(设置为Push-Poll模式),可以产生2VCC的高压。通过其它方式的二极管整流方式,也可以产生负电压。

由于在本实验应用中驱动MOS管的栅极负载非常小,所以所产生的2VCC电源的功率可以满足需求。

开关电源具有体积小、效率高、重量轻、噪声低等优点,其应用越来越广泛。我们在设计蓄电池充电器时,就采用开关电源作为主电路,其中开关器件采用第三代IGBT,其主要优点是耐压高,驱动功率小,开关频率高,导通电阻小。 目前,数模转换器从接上可分为两大类:并行接数模转换器和串行接数模转换器。并行接数模转换器的引脚多,体积大,占用单片机线多;而串行数模转换器的体积小,占用单片机线少。 电源设计人员经常面临种种互相对立的要求。一方面要缩小体积、降低成本,另一方面又要提供更多功能并提高输出功率。受原理上的限制,模拟电源本身的功能有限,而模拟电源控制器的设计更是越来越复杂。由于这一原因,有些设计人员转向了纯数字电源设计。然而,对于许多设计人员来说,如此快速地转向不熟悉的领域并不容易。比较可行的一种折衷方法是采用传统模拟电源,但增加数字单片机做为前端。 这种设计的优点在于电源本身的控制仍然使用模拟技术来实现。因此电源设计人员不需要从头重新开始全数字设计就可以为现有设计增加新的功能。采用这种方法,设计中仍然使用熟悉的误差放大器、电流检测以及电压检测电路。当然,尽管有些设计单元(如补偿网络)仍然采用分立器件实现,但其余部分则由单片机来控制。 单片机能够带来的功能可分为四类:控制、监测、判断性功能及通信。控制功能与单片机电源之间的硬件接有关。有些电源控制器在内部生成控制信号(如参考电压)。这样的控制器为单片机提供的外部连接点很少。 目前,单片机在许多电源设计中的作用主要是监测。许多单片机都有片上模数转换器(ADC)和模拟比较器。因此,单片机在监测输入电压、输入电流、输出电压、输出电压和温度等信号方面是理想之选。 单片机能够监测范围如此广泛的信号,就可以完成更多功能,如智能故障检测。单片机的多功能源于其可编程能力,可以方便地进行定制来满足设计要求。这样,对于故障情况就可以分类进行处理。短暂的过流以及其他非关键故障可能只需要设置一个标志就可以了。而过热这样的故障则可能需要关闭电源,直到故障排除。需要重新启动电源的故障也可以进行更严格的控制。在某个时间段内如果有太多的故障,单片机就可以永久关断电源。 由于采用接简单的模拟数字转换器TLC5615,使得开关电源的硬件电路大为简化,线路板面积缩小,成本降低。
### 回答1: 断码屏是一种常见的显示屏,通常由多个LED组成,可以用来显示各种数字和字符。单片机IO是一种数字输入/输出接,可以通过控制IO的电平来控制外部设备的工作。要利用单片机IO驱动断码屏,可以按照以下步骤操作: 1. 确定断码屏的电气特性:包括工作电压和电流,输入信号的电平等。然后根据这些特性选择合适的IO电平和供电电源。 2. 连接断码屏与单片机:将断码屏的引脚与IO的引脚相连接。通常,断码屏包括数位控制引脚和段选控制引脚,数位控制引脚用于选择显示的数位,段选控制引脚用于选择显示的具体数字或字符。 3. 编写单片机的控制程序:根据断码屏的电气特性和控制时序,编写单片机的控制程序。通过设置IO的输出电平和延时操作,可以控制断码屏上的LED显示指定的数字或字符。 4. 调试和测试:将程序下载到单片机,并连接供电电源,通过观察断码屏上的显示效果进行调试和测试。如果出现显示错误或异常情况,可以检查程序是否正确和IO连接是否稳定,调整相应的参数来进行修改和优化。 总结来说,利用单片机IO驱动断码屏需要了解断码屏的电气特性,连接断码屏与IO,编写控制程序并进行调试和测试。通过这些步骤的操作,就可以实现单片机对断码屏的驱动控制。 ### 回答2: 单片机可以使用IO驱动断码屏,在驱动断码屏之前,首先需要连接好硬件电路。一般来说,断码屏会连接到单片机的数据线和控制线上,其中数据线用于传输需要显示的数字或字符的数据,而控制线则用于控制显示相关的参数。 在编程方面,我们可以通过单片机IO来实现对断码屏的驱动。首先,需要设置IO的工作模式,将其设置为输出模式以控制断码屏的数据和控制线。其次,我们需要根据需要显示的内容,设置相关的数据和参数。这可以通过将相应的数据发送到IO来实现,可以使用比特操作来实现数据的发送。例如,可以将要显示的数据转换为二进制表示,并将其分别发送到各个IO上。同时,需要控制好控制线的状态,例如设置使能信号,用于控制断码屏的使能。 在具体的编程过程中,需要根据断码屏的型号和规格,编写相应的驱动程序。可以通过查找相应的技术文档获取断码屏的详细信息和控制指令。根据文档提供的指令格式,可以编程实现对断码屏的控制和显示。 需要注意的是,在驱动断码屏的过程中,需要保持与断码屏的通信同步。可以使用适当的延时函数来保证数据的稳定传输和显示效果。 总结,利用单片机IO驱动断码屏需要通过设置IO的工作模式和发送数据来实现。在编程过程中,需要根据断码屏的规格和控制指令编写相应的驱动程序。同时,需要保持与断码屏的通信同步,通过适当的延时函数来确保数据的稳定传输和显示效果。 ### 回答3: 断码屏是一种常见的显示屏,其特点是可以通过单片机IO进行驱动。具体实现的步骤如下: 首先,需要了解断码屏的原理。断码屏通常由多个LED组成,每个LED有不同的编码,通过编码控制可以显示不同的数字或字符。在驱动断码屏时,需要将编码信息发送到断码屏的控制芯片,控制芯片再将相应的LED点亮。 接下来,需要选择合适的单片机。常用的单片机有51系列、AVR系列、STM32系列等。需要根据断码屏的接和规格选择相应的单片机,确保单片机IO能够与断码屏的控制芯片进行通信。 在编程时,需要先定义好断码屏的编码信息。可以使用数组或者结构体的形式存储每个数字或字符的编码,然后通过控制单片机IO将编码信息发送到断码屏的控制芯片。 具体驱动过程中,需要先初始化单片机IO,将其配置为输出模式。然后,根据需要显示的内容,逐一输出断码屏的编码信息。可以通过循环的方式,依次将每个编码信息发送到断码屏的控制芯片,并给予一个短暂的高电平信号,使断码屏刷新显示。 在以上的基础上,可以根据具体需求进行更加复杂的操作,如动态显示、亮度调节等。 最后,需要注意的是,如果使用的是共阳断码屏,需要将高电平输出到断码屏的控制芯片,如果使用的是共阴断码屏,则需要将低电平输出。在编写程序时需要注意区分。 以上是利用单片机IO驱动断码屏的基本步骤和注意事项,可根据具体需求进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卓晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值