【STM32】STM32控制继电器实现电动推杆的伸缩

【STM32】STM32控制继电器实现电动推杆的伸缩

  • 一、方案构想
    • 1.继电器简单介绍
      • 继电器stm32控制程序
        • JDQ.h文件
        • JDQ.c文件
        • main.c文件
    • 2.继电器控制电动推杆方案
  • 二、实际效果演示

近期所做项目,需要使用到电动推杆,选购的电动推杆如下图,所购电动推杆所需电压为24v。这种类型的电动推杆只有正负极接线口,如果要实现电动推杆向外推出的功能,需要把电动推杆的正负极与24v供电源正接,如果要实现电动推杆向内收缩的功能,则需要将电动推杆的正负极与24v供电源反接,那如何用简单的程序方法来控制这种类型电动推杆的伸缩呢,博主在这里使用stm32单片机控制继电器的方法来达到控制电动推杆伸缩的目的。
【STM32】STM32控制继电器实现电动推杆的伸缩_第1张图片

一、方案构想

1.继电器简单介绍

继电器选择的类型是下面这种,淘宝上都有的买,一般的stm32芯片普通I/O口的高电平是3.3v,因此在选购继电器时要注意购买5v控制的继电器。
【STM32】STM32控制继电器实现电动推杆的伸缩_第2张图片
继电器的控制原理很简单,继电器的输入端一般含GND、VCC和INx,INx是对应的是第x个继电器接线端子,通过再INx端给入高电平或者低电平,可以控制输出端连线之间的通断,下图中红色线接在再公共触点和常开触点,若设置INx端为高点平控制通断,则当INx为低电平时,红色线不连通,相当于断路,当INx端为高电平时,红色线连通,相当于导线。继电器实现了低电压控制高电压的通断,在实际生活中很实用。
【STM32】STM32控制继电器实现电动推杆的伸缩_第3张图片

继电器stm32控制程序

继电器的控制程序也很简单,给定四个I/O口输出高低电平就可以起到控制作用,程序如下,实现的功能是,间隔一秒控制继电器四个口的通断,每个一秒,通断一次。

JDQ.h文件

#ifndef __JDQ_H
#define __JDQ_H	 
#include "sys.h"

#define IN1 PEout(0)
#define IN2 PEout(1)	
#define IN3 PEout(2)
#define IN4 PEout(6)

void JDQ_Init(void);    
#endif

JDQ.c文件

#include "JDQ.h"
void JDQ_Init(void)
{	
	GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_6;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOE, &GPIO_InitStructure);
	GPIO_SetBits(GPIOE,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_6);
}

main.c文件

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "JDQ.h"

 int main(void)
 {	
	delay_init();	  
	JDQ_Init();		
	IN1=1;
	IN2=1;
	IN3=1;
	IN4=1;
	 while(1)
	{
	  IN1=~IN1;
	  IN2=~IN2;
	  IN3=~IN3;
	  IN4=~IN4;
      delay_ms(1000);
	}
 }

2.继电器控制电动推杆方案

电动推杆的控制是依靠正接电源和反接电源实现的,要实现程序控制电动推杆的话,我们要实现从正接状态切换到反接状态,那如何实现这种状态的转变呢,如图所示,博主在这里给出了一种方案,通过继电器的输出口实现状态的改变,每次只有继电器的两个输出口为吸合状态,实现电动推杆的某种功能,如果继电器的四个口都没有吸合,则电动推杆会自锁,但是要避免出现四个输出口都吸合的状态。
【STM32】STM32控制继电器实现电动推杆的伸缩_第4张图片

二、实际效果演示

这里使用开关电源作为24v供电源,main.c文件修改如下

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "JDQ.h"

 int main(void)
 {	
	delay_init();	  
	JDQ_Init();		
	//初始状态均为不吸合状态
	IN1=0;
	IN2=0;
	IN3=0;
	IN4=0;
	 while(1)
	{
	  IN1=1;
	  IN2=1;
	  IN3=0;
	  IN4=0;
	  delay_ms(1000);
	  delay_ms(1000);
	  delay_ms(1000);
	  delay_ms(1000);
	  delay_ms(1000);
	  delay_ms(1000);
	  IN1=0;
	  IN2=0;
	  IN3=1;
	  IN4=1;
      delay_ms(1000);
      delay_ms(1000);
      delay_ms(1000);
      delay_ms(1000);
      delay_ms(1000);
      delay_ms(1000);
	}
 }

进行硬件接线,接线原理如上面的方案图,运行效果如下
【STM32】STM32控制继电器实现电动推杆的伸缩_第5张图片
这样,我们就完成了通过继电器控制电动推杆伸缩的目标了

你可能感兴趣的:(STM32,stm32,单片机)