当前位置: 首页 > news >正文

STM32F407控制微型推拉式电磁铁(通过继电器)

1、继电器

在这里插入图片描述
继电器相当于开关,单片机通过io口高低电平的控制来控制继电器的开闭。采用继电器的好处除了能够用低电压控制高电压(如32单片机控制220V的电压)外,还可以防止电流反冲,弄烧单片机。
本文采用3.3v的电磁铁,明明可以直接接在单片机的io口上,像led那样使用,为什么还要继电器?就是防止电流反冲。
在这里插入图片描述
如何接线?
在这里插入图片描述
在这里插入图片描述
如果不明白,NC、NO什么意思,建议用万用表测一下,以防万一。

NO(英文normal open缩写)为常开触点
NC(英文normal close缩写)为常闭触点(实际继电器上会以NC NO为标注) 。
常开触点NO:就是在线圈通电时处于闭合状态,在线圈断电时处于断开状态。
常闭触点NC:就是在线圈断电时处于闭合状态,在线圈通电时处于断开状态。
在这里插入图片描述

关于继电器的高电平触发还是低电平触发?还是接5V还是3.3V?
先看这张我统计的表
在这里插入图片描述
给继电器供电无论3.3V、5V,高电平触发都达到效果,而低电平就不太好。而32单片机的数据脚的高电平是3.3V。建议用高电平触发,因为后面在选供电电压时会有多一种选择。
我也不明白是我调试的器件原因,还是什么?很奇葩。以下这句话和我的测试结果也有点不一样。可能是接触不良吧。
在这里插入图片描述

2、电磁铁

在这里插入图片描述
有两根一黑一红的电线,接通直流电源正负极就可以工作。

3、实物

在这里插入图片描述
在接线这里,自己还是忘记了,让主控板与电源板共地,浪费时间去找原因。不共地,数据线怎么传输数据啊!!

4、代码

代码很容易,就像控制led灯一样的原理,通过控制32单片机的引脚电平的高低来控制继电器的启闭,进而控制电磁铁。采用了正点原子的代码——KEY实验,所以其实只有WKUP_PRESS控制继电器,其他是控制led。

当然也出现了许多问题。
比如这个:在这里插入图片描述
在这里插入图片描述

(1)、烧录器选错了,改正如下图:
在这里插入图片描述
在这里插入图片描述
(2)、由于是复制了KEY实验的代码文件夹,导致路径错误
在这里插入图片描述
(3)、由于是复制了KEY实验的代码文件夹,导致文件夹名称改变
在这里插入图片描述
.map文档是包含的,一定要把KEY.map改为ELECTROMAGNET.map,其他的话就不太明白了,反正现在是能烧入代码了。方法:把KEY的有关文档全部删掉,编译一次,根据错误提示来改就行。不过这样子做,会keil5会把烧录器改为第一项,办法参考上面的(1)问题。

main.c

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "electromagnet.h"
#include "key.h"//ALIENTEK 探索者STM32F407开发板 实验3
//按键输入实验-库函数版本 
//技术支持:www.openedv.com
//淘宝店铺:http://eboard.taobao.com
//广州市星翼电子科技有限公司    
//作者:正点原子 @ALIENTEK int main(void)
{ u8 key;           //保存键值delay_init(168);  //初始化延时函数LED_Init();				//初始化LED端口 ELECTROMAGNET_Init();//初始化ELECTROMAGNET端口KEY_Init();       //初始化与按键连接的硬件接口LED0=0;				  	//先点亮红灯ELECTROMAGNET=0;  //电磁铁高电平触发,先拉低电平while(1){key=KEY_Scan(0);		//得到键值if(key){						   switch(key){				 case WKUP_PRES:	//控制电磁铁ELECTROMAGNET=!ELECTROMAGNET;break;case KEY0_PRES:	//控制LED0翻转LED0=!LED0;break;case KEY1_PRES:	//控制LED1翻转	 LED1=!LED1;break;case KEY2_PRES:	//同时控制LED0,LED1翻转 LED0=!LED0;LED1=!LED1;break;}}else delay_ms(10); }}

electromagnet.c

#include "electromagnet.h" 
//	 
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F407开发板
//蜂鸣器驱动代码	   
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2014/5/3
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved									  
// 	 //初始化PC0为输出口		    
//BEEP IO初始化
void ELECTROMAGNET_Init(void)
{   GPIO_InitTypeDef  GPIO_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);//使能GPIOC时钟//初始化电磁铁对应引脚GPIOC0GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHzGPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOGPIO_ResetBits(GPIOC,GPIO_Pin_0);  //电磁铁对应引脚GPIOC0拉低
}

electromagnet.h

#ifndef __ELECTROMAGNET_H	 
#define __ELECTROMAGNET_H	 
#include "sys.h" 
//	 
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK STM32F407开发板
//蜂鸣器驱动代码	   
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//创建日期:2014/5/3
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2014-2024
//All rights reserved									  
// #define ELECTROMAGNET PCout(0)	// 电磁铁控制IO void ELECTROMAGNET_Init(void);//初始化		 				    
#endif

相关文章:

STM32F407控制微型推拉式电磁铁(通过继电器)

1、继电器 继电器相当于开关,单片机通过io口高低电平的控制来控制继电器的开闭。采用继电器的好处除了能够用低电压控制高电压(如32单片机控制220V的电压)外,还可以防止电流反冲,弄烧单片机。 本文采用3.3v的电磁铁&am…...

VS Code工作区用法

背景VS Code可以通过"文件/打开文件夹"来打开本地项目,但是想要打开多个项目便需要来回切换,比较费劲。此时就可以使用工作区功能,将不同的项目放置到同一个工作区中,这样切换项目的时候就会非常方便。操作方法打开其中…...

Mybatis-Plus SQLFeatureNotSupportedException: getObject with type问题解决

问题描述: Error attempting to get column modify_time from result set. Cause: java.sql.SQLFeatureNotSupportedException: getObject with type ; getObject with type; nested exception is java.sql.SQLFeatureNotSupportedException: getObject with type…...

Unity | 发布Android的那些事儿

1.使用UnityWebRequest获取StreamingAssets中的json文件(1)直接根据不同平台指定url路径IEnumerator AITalPredZhanHui(){string url;string fileName "girl.json"; #if UNITY_EDITOR || UNITY_STANDALONEurl "file://" Applicat…...

git为什么要先commit,然后pull,最后再push?而不是commit完直接push?

情况是这样的,现在远程有一个仓库,分支就一个,是master。然后我本地的仓库是从远程的master上clone下来的。大家都是clone下来,再在自己本地改好,再commit然后pull然后push,大家都是这么做的。那么现在问题…...

若依框架----源码分析(@RateLimiter)

若依作为最近非常火的脚手架,分析它的源码,不仅可以更好的使用它,在出错时及时定位,也可以在需要个性化功能时轻车熟路的修改它以满足我们自己的需求,同时也可以学习人家解决问题的思路,提升自己的技术水平…...

页面的重排和重绘?

思路: 网页渲染HTML文件到浏览器的过程->定义->如何优化网页渲染HTML文件到浏览器的过程HTML 文件通过HTML解析器解析生成DOM树;CSS文件通过CSS解析器生成CSSOM树;DOM树和CSSOM树生成渲染树(render tree)&#x…...

人脸检测-python和c++实现

人脸检测是计算机视觉领域中的一个重要应用,其目的是从图像或视频中自动检测出其中的人脸,并对其进行识别、跟踪等操作。人脸检测技术已经广泛应用于安防、人机交互、娱乐等领域,具有广泛的应用前景。 人脸检测的基本思路可以分为以下几个步骤: 图像预处理:首先需要对输入…...

PowerJob源码环境搭建

一、IEDA导入PowerJob源码 gitgithub.com:PowerJob/PowerJob.gitPowerJob 由调度服务器(powerjob-server)和执行器(powerjob-worker)两部分组成 powerjob-server 负责提供 Web 服务和完成任务的调度powerjob-worker 则负责执行用…...

天梯赛刷题小记 —— L2

最近在重刷 天梯赛&#xff0c;浅浅记录一下&#xff0c;进入L2阶段了 L2-001 紧急救援 解题思路&#xff1a;典型的dijkstra模板题&#xff0c;带路径记录与权重&#xff0c;方案数记录&#xff0c;解析出过 Dijkstra(兼路径) #include <bits/stdc.h> #define inf…...

Prometheus监控实战系列十九:监控Kubernetes集群(上)

Kuberentes是一款开源的容器编排产品&#xff0c;由Google开发后发布到社区&#xff0c;并在2015年将该项目捐献给了云原生基金会&#xff08;Cloud Native Computing Foundation&#xff09;。从2014年第一个版本发布以来&#xff0c;Kubernetes便迅速获得开源社区的追捧&…...

番茄学习法——亲测超级好用

今天给大家分享下我最近使用的学习方法&#xff0c;真的非常好用&#xff01;大家用起来&#xff01; 在日常的学习和工作中&#xff0c;我们经常会遇到一些难以克服的问题&#xff1a;分心、效率低下、焦虑等。为了帮助人们更好地学习和工作&#xff0c;一些学习方法和工具应运…...

vue 项目中使用高德地图

一、账号准备 首先&#xff0c;需要注册并登录高德地图开放平台&#xff0c;申请密钥。操作指引&#xff1a;高德地图开放平台 二、安装高德地图加载器 npm 安装&#xff1a; npm i amap/amap-jsapi-loader --save或者 yarn 安装&#xff1a; yarn add amap/amap-jsapi-loa…...

【每日一题】病人排队

题目描述小理是个热爱生活的孩子。病人登记看病&#xff0c;小理想编写一个程序&#xff0c;将登记的病人按照以下原则排出看病的先后顺序&#xff1a;1. 老年人&#xff08;年龄 ≥≥ 60岁&#xff09;比非老年人优先看病。2. 老年人按年龄从大到小的顺序看病&#xff0c;年龄…...

【数据结构】链表OJ题

目录面试题 02.04 分割链表剑指 Offer II 027 回文链表160 相交链表141 环形链表142 环形链表 II138 复制带随机指针的链表面试题 02.04 分割链表 定义lesshead和greaterhead链接小于和大于等于k的值分别设置哨兵位和尾节点指针最后将两表去除哨兵位再链接 struct ListNode* p…...

冒泡 VS 插入 VS 选择——谁更胜一筹?(附排序源码)

文章目录什么样的“排序算法”更加优质&#xff1f;排序算法的执行效率排序算法的内存消耗排序算法的稳定性冒泡排序&#xff08;Bubble Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;最终的胜利者&#x1f…...

[python tools] 今天看到另一个配置工具 YACS,所以做下笔记

YACS 实际上就只是把别人的readme翻译了一下 github: https://github.com/rbgirshick/yacs 样例代码: https://github.com/Wuziyi616/multi_part_assembly/blob/master/docs/config.md 一、使用方法 1. 首先搞一个config的python文件&#xff0c;用来存一下基本的配置信息 比…...

Prometheus cadvisor容器监控和node-exporter节点监控

往期文章 Prometheus监控系统 https://blog.csdn.net/qq_39578545/article/details/108754585 Docker之compose介绍 使用一个Dockerfile模板文件可以定义一个单独的应用容器&#xff0c;如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品&#xff0c;Docker Comp…...

机器学习|正则化|评估方法|分类模型性能评价指标|吴恩达学习笔记

前文回顾&#xff1a;逻辑回归 目录 &#x1f4da;正则化 &#x1f407;过拟合的问题 &#x1f407;代价函数 &#x1f407;正则化线性回归 &#x1f407;正则化的逻辑回归模型 &#x1f4da;模型评估方法 &#x1f407;留出法&#xff08;hold-out&#xff09; &#…...

python迭代器详解

不懂的问题&#xff1a;什么是协变、逆变&#xff1f;渐进式&#xff1f; _T_co TypeVar("_T_co", covariantTrue) # Any type covariant containers.作者&#xff1a;20岁爱吃必胜客&#xff08;坤制作人&#xff09;&#xff0c;近十年开发经验, 跨域学习者&…...

关于Docker逃逸

关于Docker逃逸 文章目录关于Docker逃逸前言一、判断是否为docker容器&#xff1f;二、privileged特权模式启动容器逃逸三、 Docker Remote API未授权访问逃逸四、危险挂载导致Docker逃逸五、危险挂载Docker Socket逃逸六、 挂载宿主机procfs逃逸七、脏牛漏洞来进行docker逃逸八…...

@Autowired和@Resource区别

Autowired和Resource到底有什么区别 Autowired 和 Resource 都是用来实现依赖注入的注解&#xff08;在 Spring/Spring Boot 项目中&#xff09;&#xff0c;但二者却有着 5 点不同&#xff1a; 来源不同&#xff1a;Autowired 来自 Spring 框架&#xff0c;而 Resource 来自…...

动态内存管理详细讲解

目录 1.为什么存在动态内存分配 2. 动态内存函数的介绍 2.1 malloc和free 2.2 calloc 2.3 realloc 今天要和大家分享的内容是的动态内存管理&#xff0c;我们先从他的定义入手学习。 1.为什么存在动态内存分配 我们到现在已经掌握了内存开辟的方式就是要么创建一个变量…...

Python和Excel的完美结合:常用操作汇总(案例详析)

在以前&#xff0c;商业分析对应的英文单词是Business Analysis&#xff0c;大家用的分析工具是Excel&#xff0c;后来数据量大了&#xff0c;Excel应付不过来了&#xff08;Excel最大支持行数为1048576行&#xff09;&#xff0c;人们开始转向python和R这样的分析工具了&#…...

卡特兰数、斯特林数基础

卡特兰数 从格点(0,0)(0,0)(0,0)走到格点(n,n)(n,n)(n,n)&#xff0c;只能向右或向上走&#xff0c;不能穿过对角线&#xff0c;的路径的条数&#xff0c;称为卡特兰数HnH_nHn​。 则有H01H_01H0​1。 通项公式&#xff1a; Hn(2nn)−(2nn−1)H_n\begin{pmatrix} 2n\\ n \en…...

STL——mapmultimap和setmultiset

一、关联式容器 与序列式容器相同&#xff0c;关联式容器也是用于存储数据的&#xff0c;不同的是&#xff0c;关联式容器里存储的是<key, value>结构的键值对&#xff0c;在数据检索时比序列式容器效率更高。 二、键值对 用来表示具有一一对应的一种结构&#xff0c;该…...

2023热门抖音权重查询小程序源码

2023热门抖音权重查询小程序源码 跟抖音上很火的一模一样&#xff0c;小程序适配优化。接口免费。小程序不是网页 修改教程: 1&#xff0c;如果想修改或者去除水印&#xff0c;直接删除或修改“index.html”12&#xff5e;22行 2&#xff0c;如果想修改logo&#xff0c;直接…...

153.网络安全渗透测试—[Cobalt Strike系列]—[生成hta/exe/宏后门]

我认为&#xff0c;无论是学习安全还是从事安全的人多多少少都会有些许的情怀和使命感&#xff01;&#xff01;&#xff01; 文章目录一、后门简介1、hta后门2、exe后门3、宏病毒后门二、生成后门并测试0、测试环境1、生成hta后门并测试2、生成exe后门并测试3、生成宏病毒后门…...

如何成为优秀的程序员

崔宝秋&#xff0c;现任小米首席架构师、小米云平台负责人。1995年赴美留学&#xff0c;纽约州立大学石溪分校计算机科学系博士毕业&#xff0c;曾任IBM高级工程师和高级研发经理、雅虎搜索技术核心团队主任工程师、LinkedIn主任工程师&#xff0c;2012年回国加入小米科技。 20…...

多线程(四):线程安全

在开始讲解线程安全之前我们先来回顾一下我们学了那些东西了&#xff1a; 1. 线程和进程的认识 2. Thread 类的基本用法 3. 简单认识线程状态 4. 初见线程安全 上一章结束时看了一眼线程安全问题&#xff0c;本章将针对这个重点讲解。 一个代码在单线程中能够安全执行&am…...

图片网站怎么做/手机优化大师下载安装

环境&#xff1a; Nacos 1.4.4 Nginx 1.23.1背景&#xff1a; 部署了Nacos集群&#xff0c;同时使用了Nginx进行负载均衡转发&#xff0c;登陆时提示账号密码错误。不通过转发直接去访问Nacos节点发现能够正常登录。去Nacos的github仓库的Issue查找相关问题&#xff0c;发现已…...

wordpress免登录评论/如何网站关键词优化

身处大数据时代&#xff0c;各企业对云计算相关业务越来越依赖。各种服务器类型的市场需求也愈之加大&#xff0c;更多的虚拟机主机服务商转阵成服务器&#xff0c;当然不乏新踏入行业的新人。怎么才能做好业务&#xff0c;根据以往虚拟机的经验来说&#xff0c;选择一套管理系…...

广州番禺服装网站建设/学企业管理培训班

这三个函数都是指向函数本身的&#xff0c;call()和apply()的第一参数都是这个函数要执行的上下文对象&#xff0c;之后的参数是这个函数执行要传的参数&#xff0c;不同的地方时call是以枚举的方式传参&#xff0c;apply是以数组的形式传参&#xff0c;当然也可以传递argument…...

学网站建设要什么/杭州seo网站哪家好

在 SQL 语句中, NULL 值与字符列中的空格, 数字中的零, 字符列中的 NULL ASCII 字符都不相同. 当DBMS在一列中发现一个 NULL 值时, 就将其翻译为未定义或是不可用的. DBMS不能在一列中做出有关 NULL 的假设, 也不能假设 NULL 值等于 NULL, 造成某一列成为 NULL 的因素可能是: (…...

廊坊网站建设企业/房地产市场现状分析

2.3.1 栈在括号匹配中的应用 #include <stdio.h> #include <stdlib.h> #include <stddef.h>#define true 1; #define false 0;#define MaxSize 50 typedef struct {char data[MaxSize];int top; } SqStack;// 1、初始化栈 // 2、判空操作 // 3、进栈 // 4、…...

石家庄网站外包/西安网站维护公司

描述60台计算机的机房所需要的设备也就是网线&#xff0c;交换机&#xff0c;路由器&#xff0c;这个规模也就算是一个小型的局域网&#xff0c;接下来我就详细讲解一下具体怎样组网、60台电脑规模的局域网怎样连接首先第一步应该将“路由器”与“光猫”串连&#xff0c;串连所…...