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

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

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

进行硬件接线,接线原理如上面的方案图,运行效果如下

这样,我们就完成了通过继电器控制电动推杆伸缩的目标了

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

  1. STM32 —— STM32 的串口通信

    STM32 -- STM32 的串口通信 STM32的串口通信接口有两种,分别是:UART(通用异步收发器).USART(通用同步异步收发器).而对于大容量 STM32F10x 系列芯片,分别有 3 ...

  2. 12讲 | STM32单片机控制继电器

    前言 专栏内容持续更新 目录 前言 一.继电器的内部结构 二.原理分析 1. 工作原理 2. 驱动电路

  3. (Eclipse)(STM32) STM32在Eclipse編程

    因為Keil需要破解才能compile超過32K大小的程式碼,最近在STM32上使用Lua Lib. 所以輕易就超過32K了,萌生想換IDE的想法.之後轉到Ubuntu 應該也能越來越適應. 首先安裝 ...

  4. STM32——stm32 I2C通信代码配置(2)(学习笔记)

    STM32--I2C通信配置 I2C的系统框架 1.通讯引脚 2.时钟控制逻辑 3.数据控制逻辑 4.整体控制逻辑 通信过程 写入过程 读取过程 I2C代码配置 I2C的初始化结构体 几个重要的函数 ...

  5. STM32——STM32简介与创建工程

    文章目录 一.stm32简介 stm32MCU: ARM: 命名规则: 片上资源/外设: 系统结构: 引脚的定义 功能引脚介绍: 最小系统引脚介绍: 电源引脚介绍: 启动配置 最小系统电路 二.软件安 ...

  6. 步进电机c语言源代码 stm32,STM32控制步进电机源代码

    单片机源程序如下: #include "stm32f10x.h" #include "stm32f10x_rcc.h" #include "misc. ...

  7. 步进电机c语言源代码 stm32,stm32 42步进电机基本旋转实现内含源代码

    /* 包含头文件 ----------------------------------------------------------------*/ #include "StepMotor ...

  8. c语言定义全局变量stm32,STM32 多文件全局变量简单定义方法

    建立3个文件分别是 MainMap.h     SlaveMap.h    MainMap.h//=================================================== ...

  9. [STM32] STM32 移植 U8g2库

    文章目录 前言 1. 准备 2. 移植步骤 2.1 建立有效的通信 2.2 导入U8g2库 2.3 用例测试 总结 前言 开发平台:Keil + 标准库 硬件平台:STM32F103RCT6 显示器件 ...

  10. php和stm32,stm32单片机的gpi和gpo分别有几种工作方式

    GPI有四种工作方式,分别为:浮空输入.上拉输入.下拉输入.模拟输入:GPO有四种工作方式,分别为:开漏输出.开漏复用功能.推挽输出.推挽复用功能. GPI有四种工作方式,分别为:浮空输入.上拉输入. ...

最新文章

  1. 计算机导论成绩分为几部分,计算机导论复习题(选择部分)汇总.docx
  2. AM335X的USB otg网卡(RNDIS /Ethernet Gadget)调试
  3. 【Servlet】ServletContext、ServletConfig对象学习、用户登录系统完善
  4. pyqt开发的程序模板_小程序定制开发和模板开发要多少钱?有什么区别?
  5. php js动态显示系统时间,PHP+JS动态显示当前时间
  6. 【服务端渲染】NuxtJs 综合案例
  7. POJ 2762 Going from u to v or from v to u? (判断单连通)
  8. Zookeeper-入门-安装
  9. 2021-08-3116. 最接近的三数之和 排序+双指针
  10. PyCharm主题自定义
  11. 设计一个递归算法释放二叉树bt中的所有结点(二叉树采用二叉链表存储结构)
  12. Android控件——HorizontalScrollView使用(一)
  13. C#: 生辰八字五行计算算法
  14. CS231n课程笔记翻译:卷积神经网络笔记
  15. n1装哪个版本的linux,斐讯t1/N1是装Ubuntu,还是LinuxDeploy,哪个更好?
  16. 伊宅购集团伊家田园勠力同心数字农业项目说明会圆满举行!
  17. 4s团队项目前端layui整合使用步骤
  18. #html#画哆啦a梦
  19. 虎牙在全球 DNS 秒级生效上的实践
  20. 百度竞价推广怎么提高咨询转化率?

热门文章

  1. 数据库存储时间时区UTC,如何转换为北京时区
  2. 线段树的简单实现(引入lazy_tag)
  3. 小程序自动定位当前位置
  4. 对话状态跟踪学习笔记
  5. 日期时间编辑器(模拟QDateTimeEdit的自定义控件)——QML
  6. 两个字说清楚编程语言实质-Python基础前传(3)
  7. 人工神经网络评价法案例_人工神经网络评价法.
  8. 华为鸿蒙系统英语报纸_“鸿蒙”系统的英文名叫这个!华为注册的这些名字都该怎么翻译?...
  9. 什么是rpm -ivh
  10. word转换html分页,将网页(HTML)内容复制转贴到Word的分页控制