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
最近在重刷 天梯赛,浅浅记录一下,进入L2阶段了 L2-001 紧急救援 解题思路:典型的dijkstra模板题,带路径记录与权重,方案数记录,解析出过 Dijkstra(兼路径) #include <bits/stdc.h> #define inf…...
Prometheus监控实战系列十九:监控Kubernetes集群(上)
Kuberentes是一款开源的容器编排产品,由Google开发后发布到社区,并在2015年将该项目捐献给了云原生基金会(Cloud Native Computing Foundation)。从2014年第一个版本发布以来,Kubernetes便迅速获得开源社区的追捧&…...
番茄学习法——亲测超级好用
今天给大家分享下我最近使用的学习方法,真的非常好用!大家用起来! 在日常的学习和工作中,我们经常会遇到一些难以克服的问题:分心、效率低下、焦虑等。为了帮助人们更好地学习和工作,一些学习方法和工具应运…...
vue 项目中使用高德地图
一、账号准备 首先,需要注册并登录高德地图开放平台,申请密钥。操作指引:高德地图开放平台 二、安装高德地图加载器 npm 安装: npm i amap/amap-jsapi-loader --save或者 yarn 安装: yarn add amap/amap-jsapi-loa…...
【每日一题】病人排队
题目描述小理是个热爱生活的孩子。病人登记看病,小理想编写一个程序,将登记的病人按照以下原则排出看病的先后顺序:1. 老年人(年龄 ≥≥ 60岁)比非老年人优先看病。2. 老年人按年龄从大到小的顺序看病,年龄…...
【数据结构】链表OJ题
目录面试题 02.04 分割链表剑指 Offer II 027 回文链表160 相交链表141 环形链表142 环形链表 II138 复制带随机指针的链表面试题 02.04 分割链表 定义lesshead和greaterhead链接小于和大于等于k的值分别设置哨兵位和尾节点指针最后将两表去除哨兵位再链接 struct ListNode* p…...
冒泡 VS 插入 VS 选择——谁更胜一筹?(附排序源码)
文章目录什么样的“排序算法”更加优质?排序算法的执行效率排序算法的内存消耗排序算法的稳定性冒泡排序(Bubble Sort)插入排序(Insertion Sort)选择排序(Selection Sort)最终的胜利者…...
[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文件,用来存一下基本的配置信息 比…...
Prometheus cadvisor容器监控和node-exporter节点监控
往期文章 Prometheus监控系统 https://blog.csdn.net/qq_39578545/article/details/108754585 Docker之compose介绍 使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Comp…...
机器学习|正则化|评估方法|分类模型性能评价指标|吴恩达学习笔记
前文回顾:逻辑回归 目录 📚正则化 🐇过拟合的问题 🐇代价函数 🐇正则化线性回归 🐇正则化的逻辑回归模型 📚模型评估方法 🐇留出法(hold-out) &#…...
python迭代器详解
不懂的问题:什么是协变、逆变?渐进式? _T_co TypeVar("_T_co", covariantTrue) # Any type covariant containers.作者:20岁爱吃必胜客(坤制作人),近十年开发经验, 跨域学习者&…...
CANN/asc-devkit浮点ilogbf函数文档
ilogbf 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/can…...
独立开发者如何利用Taotoken的透明计费规避项目超支风险
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken的透明计费规避项目超支风险 对于独立开发者而言,项目预算的控制是决定项目能否持续、健康…...
XXMI启动器:一站式二次元游戏模组管理终极指南,轻松管理热门游戏模组
XXMI启动器:一站式二次元游戏模组管理终极指南,轻松管理热门游戏模组 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一款功能强大的开源游戏…...
终极Limbus Company自动化助手:AhabAssistantLimbusCompany完整使用指南
终极Limbus Company自动化助手:AhabAssistantLimbusCompany完整使用指南 【免费下载链接】AhabAssistantLimbusCompany AALC,PC端Limbus Company小助手。AALC,Limbus Company Assistant on PC 项目地址: https://gitcode.com/gh_mirrors/ah…...
Python窗口美化终极指南:5分钟打造Windows 11风格界面
Python窗口美化终极指南:5分钟打造Windows 11风格界面 【免费下载链接】py-window-styles Customize your python UI window with awesome pre-built windows 11 themes. 项目地址: https://gitcode.com/gh_mirrors/py/py-window-styles 还在为Python应用程序…...
如何彻底释放华硕笔记本性能:G-Helper轻量控制工具终极指南
如何彻底释放华硕笔记本性能:G-Helper轻量控制工具终极指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenboo…...
Linux驱动开发实战:为I.MX6ULL编写一个DS18B20的字符设备驱动(从设备树到应用测试)
Linux驱动开发实战:I.MX6ULL平台DS18B20字符设备驱动全流程解析 在嵌入式Linux开发领域,能够完整实现一个符合内核规范的设备驱动是工程师的核心能力之一。本文将带您深入探索如何为I.MX6ULL处理器开发DS18B20温度传感器的标准字符设备驱动,…...
在珠宝首饰加工中,遨博协作机器人配合微力控技术,实现宝石的自动化镶嵌
在珠宝首饰的高端制造领域,宝石镶嵌是决定产品最终价值与艺术表现力的灵魂工序。这一过程要求近乎苛刻的精度、无可挑剔的稳定性,以及对脆性材料的极致呵护。长期以来,这依赖于镶嵌师多年练就的“手感”与专注力,属于劳动力高度密…...
OBS背景移除插件:零绿幕实现专业直播效果的完整指南
OBS背景移除插件:零绿幕实现专业直播效果的完整指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: https://gi…...
用MATLAB和Python搞定二维热传导仿真:从ADI算法到FFT快速求解器的保姆级对比
MATLAB与Python热传导仿真实战:从算法选择到性能调优 在工程仿真领域,热传导问题一直是个经典课题。无论是电子设备散热分析、建筑热工设计还是材料加工模拟,二维热传导方程的求解都是基础中的基础。对于需要在不同编程环境中实现这类仿真的工…...
