继电器原理:
继电器就是通过电磁转换,在导体中通过电流,从而达到可以吸合触点,形成一个开关。
继电器驱动芯片
采用的是ULN2003D芯片,因为继电器需要一个大电流,但是IO的电流是有限的,因此使用该芯片可以增加流入的电流。
ULN2003D简介:
ULN2003是高耐压、大电流复合晶体管阵列;
特点(了解):
ULN2003 的每一对达林顿都串联一个2.7K 的基极电阻,在5V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。
ULN2003 工作电压高,工作电流大,灌电流可达500mA,并且能够在关态时承受50V 的电压,输出还可以在高负载电流并行运行。
作用:
ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中,可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。简单来说ULN2003其实就是用来放大电流的,增加驱动能力
ULN2003D就相当于一个非门,前面输出高电平后面输出低电平。
整体看下来:引脚1-7是输入信号;引脚10-16是输出信号,引脚8接地,引脚9接VCC。
引脚1输入RL信号,相对应的输出引脚16控制的是一个继电器。当引脚1输入高电平,继电器开启;
引脚2-5输入D、C、B、A信号,相对应的输出引脚15、14、13、12作为四相来控制四相五线步进电机;
引脚6输入SPK信号,相对应的输出引脚11控制的是一个喇叭。当引脚6输入高电平,喇叭开启;
引脚7输入M0T信号,相对应的输出引脚10控制的是一个直流电机。当引脚6输入高电平,直流电机启动。
这个时候大概就能理解ULN2003的本质了:由于单片机的引脚输出电流太低了,无法驱动大部分的设备。而ULN2003只相当于是一个开关,设备(负载)的供电是在外围电路上,而它能够通过微弱的单片机输出电流来控制外围电路的开闭。这某种程度上也可以说是,放大电流,增加驱动能力
void Relay_Init(void)
{
EALLOW;
SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK =1; //开启GPIO时钟
//继电器端口配置
GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 0; //配置为普通IO口模式
GpioCtrlRegs.GPADIR.bit.GPIO15 = 1; //方向:输出
GpioCtrlRegs.GPAPUD.bit.GPIO15 = 0; //1,是默认上拉,但1通过ULN2003D以后,变成低电平,使继电器直接导通了,我们不希望这样
EDIS;
}