STM32学习100步之第五十六步——继电器模块模块

继电器

所谓继电器就是一个开关电路,给线圈通电,利用电流的磁效应产生磁场吸合开关。具体怎么利用单片机来控制继电器,原理图如下:
STM32学习100步之第五十六步——继电器模块模块_第1张图片
其中ULN2003为达林顿管,有很强的驱动能力,因为单片机输出的电流特别小,不足以使继电器能够产生强大的吸引力。内部结构如下:
STM32学习100步之第五十六步——继电器模块模块_第2张图片
具体开发板连接如下:
STM32学习100步之第五十六步——继电器模块模块_第3张图片
STM32学习100步之第五十六步——继电器模块模块_第4张图片
具体的三个输出接口接到了三个端口上面(某一时刻必然有两个端口是连接在一起的即构成了通路),注意这里的端口的电流特别大,因为连接了实际电流,这里充分体现了单片机的小电流带动大电流的工作。

继电器内部原理图如下:
STM32学习100步之第五十六步——继电器模块模块_第5张图片
其中relay_1、relay_2分别连接着单片机的PA13、PA14,默认接了JTAG接口,因为单片机的接口不够用,所以采用了复用。

单片机控制继电器的原理和控制按键程序相同,程序如下:

	RCC_Configuration(); //系统时钟初始化 
	TOUCH_KEY_Init();//触摸按键初始化

	RELAY_Init();//继电器初始化

	while(1){
		if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_A))RELAY_1(1); //当按键A按下时继电器1标志置位		
		if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_B))RELAY_1(0); //当按键B按下时继电器1标志置位		
		if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_C))RELAY_2(1); //当按键C按下时继电器2标志置位
		if(!GPIO_ReadInputDataBit(TOUCH_KEYPORT,TOUCH_KEY_D))RELAY_2(0); //当按键D按下时继电器2标志置位
	}

relay.c中的程序:

void RELAY_Init(void){ //继电器的接口初始化
	GPIO_InitTypeDef  GPIO_InitStructure; 	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); //APB2外设时钟使能      
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//启动AFIO重映射功能时钟    
    GPIO_InitStructure.GPIO_Pin = RELAY1 | RELAY2; //选择端口号(0~15或all)                        
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式       
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz)    
	GPIO_Init(RELAYPORT, &GPIO_InitStructure);
	//必须将禁用JTAG功能才能做GPIO使用
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);// 改变指定管脚的映射,完全禁用JTAG+SW-DP
	GPIO_ResetBits(RELAYPORT,RELAY1 | RELAY2); //都为低电平(0) 初始为关继电器							
}

void RELAY_1(u8 c){ //继电器的控制程序(c=0继电器放开,c=1继电器吸合)
	GPIO_WriteBit(RELAYPORT,RELAY1,(BitAction)(c));//通过参数值写入接口
}
void RELAY_2(u8 c){ //继电器的控制程序(c=0继电器放开,c=1继电器吸合)
	GPIO_WriteBit(RELAYPORT,RELAY2,(BitAction)(c));//通过参数值写入接口
}

需要特别注意这里禁用了JTAG接口。

你可能感兴趣的:(STM32学习100步之第五十六步——继电器模块模块)