【STM32单片机】继电器控制电磁阀与行程(限位)开关的应用
STM32单片机高电平为3.3V,而电磁阀的工作电压常为12V/24V,这意味着需要借助继电器控制电磁阀。继电器的本质是通过单片机引脚高低电平控制的(电磁铁)开关。 继电器是高电平触发还是低电平触发取决于上拉/下拉电阻。笔者采用的是继电器高电平触发。

限位开关与继电器类似,均为单刀双掷开关。笔者设置为限位开关高电平触发(当然也可以用低电平触发)。限位开关的COM端连接单片机的VCC,NC端连接单片机的GND,NO端连接单片机的引脚。未触发状态下COM端与NC端连通,当限位开关触发后,由于COM端与NO端连通,引脚电平发生变化(低电平->高电平),读取到电平变化后完成动作。
注意:GPIO中默认将引脚设置为低电平,若使用限位开关低电平触发一定不要忘记将电平置高!
例如,笔者配置引脚PD15控制继电器的一路,PA0为限位开关的COM端,通过PA0的引脚电平变化来控制PD15的引脚电平变化。

#include "gpio.h"
void User_GPIO_Init(void)
{GPIO_InitTypeDef  gpio;RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//配置引脚 PA0gpio.GPIO_Pin = GPIO_Pin_0;gpio.GPIO_Speed=GPIO_Speed_50MHz;gpio.GPIO_Mode = GPIO_Mode_IN; //注意要设置为上拉输入        gpio.GPIO_OType = GPIO_OType_PP;GPIO_Init(GPIOA, &gpio);GPIO_ResetBits(GPIOA,GPIO_Pin_0);//若设置为低电平触发一定要将电平置高//GPIO_SetBits(GPIOA,GPIO_Pin_0);
}//如果读到引脚变化(高电平触发)if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1){   //PD15引脚为控制继电器的一路GPIO_ResetBits(GPIOD,GPIO_Pin_15);//关闭电磁阀delay_ms(10);}else {GPIO_SetBits(GPIOD,GPIO_Pin_15);//保持电磁阀开启
//或写成   GPIO_WriteBit(GPIOD,GPIO_Pin_15,(BitAction)!GPIO_ReadOutputDataBit(GPIOD,GPIO_Pin_15)));delay_ms(10);}

当然,仅通过限位开关触发来控制电路是不够的。例如,限位开关触发后仍然保持住触发后状态;遥控器模式通过切换再次到达当前模式仍能完成一系列动作。这就需要标志位!

extern int flag; //将标志位设置为全局变量,适合多线程使用
if(TelCtrlData.switch_r==2&&TelCtrlData.switch_l==2)
{//只有满足限位开关触发并且为第一次触发才进行新的功能if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==1&&flag==0){ flag=1;//将标志位置1表明已进入功能一次GPIO_ResetBits(GPIOD,GPIO_Pin_15);OSTimeDly(10,OS_OPT_TIME_PERIODIC,&err);}else if(flag==1)//只要进入功能就一直保持状态(无论限位开关是否再次触发){GPIO_ResetBits(GPIOD,GPIO_Pin_15);OSTimeDly(10,OS_OPT_TIME_PERIODIC,&err);}else //未触发时的状态{GPIO_SetBits(GPIOD,GPIO_Pin_15);OSTimeDly(10,OS_OPT_TIME_PERIODIC,&err);}
}else flag=0;  //切换遥控器模式时将flag置零,功能才得以重复使用

一位单片机爱好者

【STM32单片机】继电器控制电磁阀与行程(限位)开关的应用相关推荐

  1. STM32 Proteu直流电机正反转控制系统限位开关-0035

    STM32 Proteu直流电机正反转控制系统限位开关-0035 Proteus仿真小实验: STM32 Proteu直流电机正反转控制系统限位开关-0035 功能: 硬件组成:STM32F103C6 ...

  2. 基于STM32单片机智能RFID刷卡汽车位锁设计(论文

    基于STM32单片机智能RFID刷卡汽车位锁设计(论文) 摘要 在车位日益紧张的今天,如何避免私家车位被他人抢占,是令人头痛的事.日前面市的一种新型车位锁,不仅有效解决了这一问题,还可对车辆起到防盗作 ...

  3. 【STM32】STM32之限位开关

    一.简介 本文介绍如何在STM32上使用限位开关. 二.实验平台 库版本:STM32F10x_StdPeriph_Lib_V3.5.0 编译软件:MDK4.53 硬件平台:STM32开发板(主芯片st ...

  4. 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告)

    基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 文章目录 基于STM32单片机智能RFID刷卡汽车位锁设计(开题报告) 一.课题的背景及意义 二.国内外研究状况: 三.系统功能分析及体系 ...

  5. 51单片机四路开关电路+限位开关

    #include <reg51.h> #include <intrins.h> unsigned char tmp; void send_char(unsigned char ...

  6. abb限位开关已打开drv1_广告雕刻机限位开关触发

    广告雕刻机限位开关触发?广告雕刻机是指专门用于广告行业的设备,是专门为广告而研发的设备.广告雕刻机当然也可以用于其他行业,例如工艺品行业.家具行业.模型行业等.今天我们重点说下"广告雕刻机限 ...

  7. abb限位开关已打开drv1_Telemecanique传感器限位开关产品系列

    Telemecanique传感器 Telemecanique传感器,是施耐德电气旗下专精于传感器产品的知名品牌,已有百年历史.被公认为全球传感器领域的专家. 从机电式到电子式产品,从检测到识别再到距离 ...

  8. UM2 3D 打印机 DIY 实践 (6)限位开关

    主板是前面讲到的 mega2560 + Ramps1.4,刷 Marlin 固件. 限位开关的作用一是保护电机,当喷头运行到边沿时触发停止,避免继续运行烧坏电机:二是喷头自动回到xyz 轴原点,只要一 ...

  9. ALS3-P系列限位开关

    是由苏州西门子电器有限公司制作,APT 创立于 1993 年,专业生产按钮.指示灯.万能转换开关.通 用类继电器等低压产品,是中国领先的低压元器件制造商.2008 年 8 月, 苏州西门子电器有限公司 ...

最新文章

  1. mybatis mysql crud_Mybatis的CRUD操作
  2. cocos2dx android protobuf,Quick_Cocos2d_x V3.3 Protobuf Android
  3. H5支持度检测常用模式(仅干货)
  4. Android系统服务
  5. C#增删改查操作Access数据库之二(数据库的增加)
  6. Hadoop分布式集群安装配置
  7. css td 溢出改为省略号
  8. linux 安装servlet环境_linux下一键搭建LAMP环境安装网站全教程
  9. 详细解读八大无线网络安全技术利弊
  10. 组建团队--共同愿景
  11. mysql表必须有主键吗_SQL中的每一张表都必须设有主键吗
  12. 模态框获取页面请求数据
  13. 回归A股成“网红”,中芯国际20年芯片发展史
  14. 一天一看————计算机网络参数模型与5G协议!
  15. 游戏2048源代码 - C语言控制台界面版
  16. mp3转wma格式转换器 mp3音频怎么转换wma格式
  17. WebRTC通话原理-SDP协议
  18. 用jquery合并(去重)html表格中相同内容
  19. postgresql获取当前或某一时间段的年月日
  20. AMCL 激光测量模型

热门文章

  1. 灰色系统理论及其应用 (六) :SARS 疫情对某些经济指标影响问题
  2. Raptor-选组长
  3. 【教程】Pull Requests —— 让团队成员间的协作更轻松方便!
  4. C语言学习第017课——C语言提高(一)
  5. 《褚时健传》- 令人敬畏的匠人精神
  6. Python:Kendall tau相关系数的计算
  7. 开源协议:在项目中使用Apache License 2.0
  8. 一个简单检索系统的实现思想
  9. chrome设置微信ua_用Chrome在电脑上模拟微信浏览器 - 雪山玉龙 - 博客园
  10. FlexSim2019版新功能——Emulation