STM32控制气泵和电磁阀实现

一、功能简介

     使用STM32控制气泵和电磁阀的开和关,气泵和电磁阀的供电电压为12V。

二、实现过程

1、气泵和电磁阀的开和关均为开关量,实现控制方法有多种,比如继电器,但是继电器动作有噪声且体积较大,更好的方法为使用mos管。

2、mos管的选型:mos管选择主要注意两个参数即可,一是导通的电流,二是耐压值,并且常用NMOS管,根据要求,气泵和电磁阀供电电压为12V,所以选择的mos管耐压值要大于12V,这里选用耐压值为30V的MOS管,并且导通电流为5.8A,如下图

3、控制电路:

4、程序代码

/* 引脚 定义 */#define LED0_GPIO_PORT                  GPIOB
#define LED0_GPIO_PIN                   GPIO_PIN_0
#define LED0_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)             /* PB口时钟使能 */#define LED1_GPIO_PORT                  GPIOB
#define LED1_GPIO_PIN                   GPIO_PIN_1
#define LED1_GPIO_CLK_ENABLE()          do{ __HAL_RCC_GPIOB_CLK_ENABLE(); }while(0)             /* PB口时钟使能 */
void led_init(void)
{GPIO_InitTypeDef gpio_init_struct;LED0_GPIO_CLK_ENABLE();                                 /* LED0时钟使能 */LED1_GPIO_CLK_ENABLE();                                 /* LED1时钟使能 */gpio_init_struct.Pin = LED0_GPIO_PIN;                   /* LED0引脚 */gpio_init_struct.Mode = GPIO_MODE_OUTPUT_PP;            /* 推挽输出 */gpio_init_struct.Pull = GPIO_PULLUP;                    /* 上拉 */gpio_init_struct.Speed = GPIO_SPEED_FREQ_HIGH;          /* 高速 */HAL_GPIO_Init(LED0_GPIO_PORT, &gpio_init_struct);       /* 初始化LED0引脚 */gpio_init_struct.Pin = LED1_GPIO_PIN;                   /* LED1引脚 */HAL_GPIO_Init(LED1_GPIO_PORT, &gpio_init_struct);       /* 初始化LED1引脚 */LED0(1);                                                /* 关闭 LED0 */LED1(1);                                                /* 关闭 LED1 */
}
int main(void)
{uint8_t key; HAL_Init();                             /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9);     /* 设置时钟, 72Mhz */delay_init(72);                         /* 延时初始化 */led_init();                             /* 初始化LED */key_init();                             /* 初始化按键 */LED0(0);                                /* 先点亮LED0 */while(1){key = key_scan(0);                  /* 得到键值 */if (key){switch (key){case WKUP_PRES:             /* 控制蜂鸣器 */LED0_TOGGLE();          /* LED0状态取反 */break;case KEY1_PRES:             /* 控制LED1(GREEN)翻转 */LED1_TOGGLE();          /* LED1状态取反 */break;case KEY0_PRES:             /* 同时控制LED0, LED1翻转 */LED0_TOGGLE();          /* LED0状态取反 */LED1_TOGGLE();          /* LED1状态取反 */break;} }else{delay_ms(10);}}
}

最终实现单片机控制气泵和电磁阀的开和关。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/724401.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sqli-labs靶场第19关详解[Sqli-labs-less-19]自动化注入-SQLmap工具注入

Sqli-labs-Less-19 通过测试发现,在登录界面没有注入点,通过已知账号密码admin,admin进行登录发现: 返回了Referer ,设想如果在Referer 尝试加上注入语句(报错注入),测试是否会执行…

论文阅读笔记 | Limited-Reference Image Quality Assessment: Paradigms and Discussions

文章目录 文章题目发表年限期刊/会议名称动机主要思想或方法架构实验结果 文章链接:https://dl.acm.org/doi/10.1145/3581783.3613436 文章题目 Limited-Reference Image Quality Assessment: Paradigms and Discussions 发表年限 2023 期刊/会议名称 MM’23: …

Promise状态变化

promise共有三种状态:pending(待定中)| resolved(已完成)| rejected(已拒绝)。 其状态变化过程有两种:pending >>> resolved 或 pending >>> rejected. 状态变化…

1688商品详情数据(商品属性,价格,sku等)1688API接口开发系列

1688(阿里巴巴批发网)提供了API接口供开发者使用,以便能够获取商品详情数据,包括商品属性、价格、SKU等信息。在使用1688的API接口之前,你需要完成以下几个步骤: 请求文档,API接口接入Anzexi58…

java网络编程 01 IP,端口,域名,TCP/UDP, InetAddress

01.IP 要想让网络中的计算机能够互相通信,必须为计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,而IP地址就是这个标识号,也就是设备的标识。 ip地址组成: ip地址分类:…

Jacob使用教程--通过宏来寻找变量名

说明: 这里做个随比,参考资料请见前面的系列文章 问题展示: 对于一个操作,当我们不知道怎么利用jacob写代码时,而且网上也找不到,可以按照如下操作: 比如,我们要删除 word中的文本框 我们根本不知道文本框,这个变量叫什么,在Microsoft文档哪个父目录下面, 可以通过…

配置与管理防火墙

配置与管理防火墙 1,概念:设置在不同网络或网络安全域之间的一系列部件的组合。 2,功能:保护内网中易手攻击的服务;控制内外网之间网络系统的访问;隐藏内网的IP地址及结构的细节,提高网络保护…

VSCode 隐藏侧边栏文件或文件夹

开发时有些文件根部就会动,可能是运行的环境或者缓存,可能是其他的文件。 但是又不能删除,影响开发的观感,那么怎么在侧边栏栏隐藏文件呢 搜索的时候想要加快速度,怎么屏蔽某些文件呢 隐藏侧栏显示文件或屏蔽搜索范围…

每周一练--[NewStarCTF 2023 公开赛道]Final

很明显又是ThinkPHP的漏洞,上周还做过类似的。 先看看是哪一个版本的。 得到版号后,去找找payload。 (post)public/index.php?scaptcha (data) _method__construct&filter[]system&methodget&server[REQUEST_METHOD]ls -al 这其…

AzerothCore@FreeBSD安装记录

尝试在FreeBSD系统下安装AzerothCore 首先安装相关软件 pkg install cmake mysql80-server boost-all装完mysql之后提示: MySQL80 has a default /usr/local/etc/mysql/my.cnf, remember to replace it with your own or set mysql_optfile"$YOUR_CNF_FILE i…

静态住宅代理IP使用指南,你需要测试的5件事

静态住宅代理IP,是一种在网络通信过程中提供固定IP地址的代理服务。与动态代理IP相比,静态代理IP提供的是持久且不变的IP地址。这种稳定性使得静态代理IP在需要长期稳定网络身份的场景中,如跨境电商/社媒养号、网络监控、品牌保护、长期数据爬…

java常用数据结构面试题,docker教程学习

前言 JVM对实际简单开发的来说关联的还是不多,一般工作个一两年(当然不包括爱学习的及专门做性能优化的什么的),很少有人能很好的去学习及理解什么是JVM,以及弄清楚JVM的工作原理,其实我个人认为这块还是非…

Java+SpringBoot,打造社区疫情信息新生态

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

真空展|2024上海国际真空技术及设备展览会

2024上海国际真空技术及设备展览会 2024 Shanghai International Exhibition of vacuum technology and equipment 时 间:2024年7月13-15日 地 点:上海新国际博览中心 承办单位:上海昶文展览服务有限公司 展会简…

Pytorch 复习总结 6

Pytorch 复习总结,仅供笔者使用,参考教材: 《动手学深度学习》Stanford University: Practical Machine Learning 本文主要内容为:Pytorch 计算机视觉。 本文先介绍了计算机视觉中两种常见的改进模型泛化性能的方法&#xff1a…

[OS] 计算机启动过程

布局 MBR|分区表|一个个磁盘分区 磁盘分区内:引导块|超级块|空闲空间管理(如位示图)|i结点(索引结点)|根目录|文件和目录 唤醒过程: (磁盘ROM上的自举程序)BIOS → (默认0号扇区)MBR → 活动分区 → 引导块(启动块) → 操作系统 介绍: M…

数字文旅与混合现实(MR)的碰撞:打造沉浸式文旅新体验

每天五分钟讲解一个商业模式,大家好我是啊浩说模式 随着数字技术的不断进步,混合现实(Mixed Reality,简称MR)正逐渐成为文旅产业的新宠。MR技术融合了虚拟现实(VR)和增强现实(AR&am…

使用XML配置依赖注入

1. 属性赋值的方式 在我们手动需要给一个类的实例对象属性赋值时,可以采用以下方法: 使用有参构造函数,在建立实例对象时就进行赋值使用属性的set方法 同理,IOC依赖注入也有以上几种情况,这里分别对调用有参构造函数…

【力扣刷题练习】42. 接雨水

题目描述&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 题目解答&#xff1a; class Solution {public int trap(int[] height) {int n height.length;int ans 0;if (n < 3)return…

【C语言】C语言编程实战:Base64编解码算法从理论到实现(文末附完整代码)

文章目录 1. 概述2. 原理2.1 Base64编码表2.2 Base64编码步骤2.3 Base64解码步骤 3. 核心代码解读4. 完整代码下载5. 总结 1. 概述 Base64算法是一种基于64个字符的编码算法&#xff0c;常用于在通常处理文本数据的场合&#xff0c;表示、传输、存储一些二进制数据。该算法使用…