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

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

一、方案构想

1.继电器简单介绍

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

继电器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.继电器控制电动推杆方案

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

二、实际效果演示

这里使用开关电源作为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);
	}
 }

进行硬件接线,接线原理如上面的方案图,运行效果如下
在这里插入图片描述
这样,我们就完成了通过继电器控制电动推杆伸缩的目标了

版权声明:本文为CSDN博主「亦乐大大」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45417246/article/details/115796790

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

一、方案构想

1.继电器简单介绍

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

继电器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.继电器控制电动推杆方案

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

二、实际效果演示

这里使用开关电源作为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);
	}
 }

进行硬件接线,接线原理如上面的方案图,运行效果如下
在这里插入图片描述
这样,我们就完成了通过继电器控制电动推杆伸缩的目标了

版权声明:本文为CSDN博主「亦乐大大」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45417246/article/details/115796790

生成海报
点赞 0

亦乐大大

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

pwm电机调速的原理介绍与代码实现

1、pwm实现调速的原理与介绍 PWM(Pulse Width Modulation)脉冲宽度调制。 1)占空比 pwm占空比就是一个脉冲周期内有效电平在整个周期所占的比例。 通过调节PWM的占空比就能调节IO口上电压的持续

【STM32Cube笔记】2-STM32Cube安装教程

【STM32Cube笔记】系列文章目录 1-基于STM32的VSCode入门级教程前言 2-STM32Cube安装教程 3-STM32CubeIDE汉化 4-STM32Cube配置时钟设置 5-跑马灯引脚配置 6-Cortex-M7内核基本配

Proteus STM32仿真学习板

一 全球IC爆冷,价格猛涨,ST系列单片机更是一马当先,贵到你怀疑人生。这个时候想学习STM32的基础去购买开发板是很不划算的,而且用完就搁置了,吃灰到永远,