近期所做项目,需要使用到电动推杆,选购的电动推杆如下图,所购电动推杆所需电压为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
暂无评论