STM32单片机基本原理与应用(四)
直流电机驱动控制原理
1、电机正反转控制
在STM32中,直流电机的正反转控制主要通过改变电机输入电源的极性来实现。当电机的电压极性发生变化时,电机的旋转方向也会相应改变。在硬件电路中,可以通过继电器或晶体管等电子开关来切换电机的电源极性。
在软件层面,STM32可以通过GPIO引脚的高低电平来控制电机的正反转。例如,当GPIO引脚输出高电平时,电机正转;当输出低电平时,电机反转。通过改变GPIO引脚的电平状态,可以实现电机的正反转控制。
2、电机速度控制
直流电机的速度控制可以通过PWM技术实现。通过调节PWM方波的占空比,可以改变电机输入电压的平均值,从而控制电机的转速。占空比越大,电机转速越快;占空比越小,电机转速越慢。
实验案例
采用ULN2003芯片驱动,通过对ULN2003芯片的输入引脚的电源极性控制,从而控制直流电机的正反转。
-
实验模块:STM32核心板+直流电机
-
电路原理图

两路直流电机通过ULN2003芯片驱动,控制引脚分别为ULN-O5 ULN-O6
程序源码:
int main(void){delay_init(); //延时函数的初始化 DCMOTOR_Init(); //初始化直流电机端口while(1){DCMOTOR1=1;DCMOTOR2=0; delay_ms(1800);//延时1800msDCMOTOR1=0; DCMOTOR2=1;delay_ms(1800);//延时1800ms }
实验现象:
程序运行后,直流电机先正向转动后,停止1.8秒后再反方向转动。
步进电机驱动控制原理
步进电机是通过控制脉冲信号来驱动电机的。在STM32中,控制器通过输出一系列的脉冲信号来控制步进电机的转动。每个脉冲信号对应步进电机的一个步进角度,控制脉冲的数量和频率可以控制电机的转动速度和位置。
STM32控制器通过定时器产生精确的脉冲信号,并通过GPIO引脚输出到步进电机驱动器,其驱动器输入引脚接收。在每个脉冲信号的上升沿或下降沿作用下,步进电机转动一定的角度,从而实现电机的连续或间歇转动。
实验案例
步进电机驱动器是连接控制器和步进电机的中间设备。它接收来自控制器的脉冲信号,并转换为合适的电流和电压,驱动步进电机转动。在实验中ULN2003就是起这个作用,作为“连接的桥梁”——步进电机驱动器。
- 实验模块:STM32核心板+步进电机
- 电路原理图

步进电机简而言之就是能够通过输入脉冲的个数,确定旋转的角位移,一般用他来控制小车轮子的偏移角度等。步进电机由驱动芯片ULN2003驱动,利用ULN2003与MCU引脚相连,可以驱动步进电机。主要在于放大驱动电流。
其中ULN2003的控制端与单片机的PG6、PG7、PG8、PG9相连接。
程序源码:
1、步进电机驱动函数
void stepper(uint8_t dir,int speed)
{if(dir == Pos){IN1_HIGH;delay_ms(speed);IN1_LOW;IN2_HIGH;delay_ms(speed);IN2_LOW;IN3_HIGH;delay_ms(speed);IN3_LOW;IN4_HIGH;delay_ms(speed);IN4_LOW;}else{IN1_HIGH;delay_ms(speed);IN1_LOW;IN4_HIGH;delay_ms(speed);IN4_LOW;IN3_HIGH;delay_ms(speed);IN3_LOW;IN2_HIGH;delay_ms(speed);IN2_LOW;}
}
2、主函数
int main(void){ delay_init(); //延时函数初始化 MOTOR_Init(); //步进电机IO初始化 while(1){int i;for(i = 0;i < 1000;i++) //电机正转stepper(Pos,8); //间隔最少是5ms delay_ms(1000); //延时for(i = 0;i < 1000;i++) //电机反转stepper(Neg,8); delay_ms(1000); //延时}}
实验现象:
可以观察到步进电机首先顺时针运转,随后逆时针运转。
相关文章:
STM32单片机基本原理与应用(四)
直流电机驱动控制原理 1、电机正反转控制 在STM32中,直流电机的正反转控制主要通过改变电机输入电源的极性来实现。当电机的电压极性发生变化时,电机的旋转方向也会相应改变。在硬件电路中,可以通过继电器或晶体管等电子开关来切换电机的电源…...
elk之安装和简单配置
写在前面 本文看下elk的安装和简单配置,安装我们会尝试通过不同的方式来完成,也会介绍如何使用docker,docker-compose安装。 1:安装es 1.1:安装单实例 下载es安装包 在这里 下载,下载后解压到某个目录…...
springboot(ssm环保网站 绿色环保宣传系统Java系统
springboot(ssm环保网站 绿色环保宣传系统Java系统 开发语言:Java 框架:springboot(可改ssm) vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.7࿰…...
【MBtiles数据索引和服务发布】GeoServer改造Springboot番外系列二
xyz地图服务访问示例:http://192.168.1.240:8081/gmserver/raster/xyz/firstWP:Imagery-raster/{z}/{x}/{y}.jpg 访问示例如下: mbtiles目录结构 根据z,x,y获取对应mbtiles文件路径的工具方法 说明:重点是使用getMb…...
Redis抓取数据到Logstash再推到Elasticsearch集群
一、安装Logstash 前面安装过Logstash了,不做解释直接跳过 参考:上一篇文章 二、配置Logstash 在logstash目录下,编辑我们之前的配置文件logstash.conf vim logstash.confinput、output字面意思,从redis去拿取数据,输出到Elasticsearch data_type:数据类型为list k…...
【代码随想录-链表】反转链表
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…...
32GPIO输入LED闪烁蜂鸣器
一.GPIO简介 所有的GPIO都挂载到APB2上,每个GPIO有16个引脚 内核可以通过APB2对寄存器进行读写,寄存器都是32位的,但每个引脚端口只有16位 驱动器用于增加信号的驱动能力 二.具体…...
Qt|QPushButton控件讲解
前提 按钮分为了四种状态:常态、聚焦、按下、禁用 前一段时间更新了MFC框架下CButton的自绘。因为MFC框架下的按钮限制性很高,所以只能由自绘实现各种风格,但是QT框架完美的解决了这个问题,我们只需要了解如何调用,就…...
再学webpack
1 优化 webpack 打包体积的思路 优化 webpack 打包体积的思路包括: 提取第三方库或通过引用外部文件的方式引入第三方库:将第三方库单独打包,并通过 CDN 引入,减少打包体积。使用代码压缩插件:例如 UglifyJsPlugin&a…...
systemd:service与target使用及相关命令
文章目录 一、 unit1.1 unit常用命令 二、 service系统服务2.1 unit service配置文件2.1.1 [Unit]区块2.1.2 [Service]区块2.1.3 [Install]区块2.1.4 示例介绍 2.2 service常用命令 三、target3.1 tartget有关命令 四、其他系统命令4.1 systemctl 相关系统管理命令4.2 journalc…...
FairGuard游戏加固入选《CCSIP 2023中国网络安全行业全景册(第六版)》
2024年1月24日, FreeBuf咨询正式发布《CCSIP 2023中国网络安全行业全景册(第六版)》。本次发布的全景图,共计展示20个一级分类、108个细分安全领域,旨在为广大企业提供网络安全产品选型参考,帮助企业了解中国网络安全技术与市场的…...
文心一言 VS ChatGPT :谁是更好的选择?
前言 目前各种大模型、人工智能相关内容覆盖了朋友圈已经各种媒体平台,对于Ai目前来看只能说各有千秋。GPT的算法迭代是最先进的,但是它毕竟属于国外产品,有着网络限制、注册限制、会员费高昂等弊端,难以让国内用户享受。文心一言…...
七街八巷×实在RPA丨财务凭证录入零出错,效率提升8倍
在如今的数字化时代,企业财务面临着海量且复杂的数据流程。特别是在凭证录入这一看似简单却又频繁的环节中,传统的手工操作已无法满足日益增长的业务需求。 中国轻食知名品牌七街八巷,通过部署实在智能集“自动化平台开箱即用解决方案咨询”…...
线性代数----------学习记录
线性代数发展历程 (1)线性方程组:例如二元一次方程组; (2)行列式:determinant,克莱默,莱布尼兹; (3)矩阵:方程个数与未知数的个数可…...
Ubuntu如何安装使用Nginx反向代理?
在Ubuntu上安装Nginx并配置使其生效是相对简单的过程。以下是一步一步的指南: 步骤 1:安装 Nginx 打开终端,并执行以下命令来安装 Nginx: sudo apt update sudo apt install nginx步骤 2:启动 Nginx 服务 安装完成…...
Linux系统——正则表达式
有一段时间本机访问量过高,如何查看日志提取出访问量前十的信息 1.使用提取命令(cut、awk、sed)提取出ip地址的那一列 2.使用sort按数字排序,将相同的地址整合到一起 3.使用uniq -c统计出数量 4.使用sort 数字 数字倒序排序 5.最…...
【文本到上下文 #9】NLP中的BERT和迁移学习
一、说明 BERT:适合所有人的架构概述:我们将分解 BERT 的核心组件,解释该模型如何改变机器理解人类语言的方式,以及为什么它比以前的模型有重大进步。 BERT的变体: 在BERT取得成功之后,已…...
github单文件下载——DownGit
记录一下一个好用的网站,支持github中某一特定文件夹下文件的下载 选择一个合适的梯子,访问Downgit网址 https://minhaskamal.github.io/DownGit/#/home 将所需网站连接粘贴到这里,点击download即可...
Java之Stream的应用与原理分析
前言 stream是怎么做到一次迭代中将所有流操作进行叠加?stream怎么做到只有在终止操作时进行元素遍历?那中间操作是做了些什么? Stream 与集合的区别 集合是内存中的数据结构抽象,描述了数据在内存中是如何存储的。流描述了对数据…...
Git 实战场景过程(工作总结篇)
目录 前言1. Git远程仓库建立分支,本地未显示1.1 问题所示1.2 知识补充 2. Git暂存内容切换分支2.1 问题所示2.2 知识补充 3. Git放弃修改数据3.1 问题所示3.2 知识补充 前言 主要总结工作中的疑惑点,如果你也有相应的场景,可以评论区见&…...
企业级AI智能体平台技术评测:9款产品架构差异与生产落地能力分析
现在,大模型已经从“会聊天”进化到了“会干活”,AI智能体(AI Agent)成为这场变革的核心载体。麦肯锡数据显示,2025年已有62%的组织开展AI智能体相关实践,64%的企业认为AI提升了组织创新能力,其…...
ExplorerPatcher使用指南:3步恢复Windows经典界面体验
ExplorerPatcher使用指南:3步恢复Windows经典界面体验 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher ExplorerPatcher是一款强大的…...
Fast Video Cutter Joiner(视频剪切合并软件)
链接:https://pan.quark.cn/s/fb790471c8c6Fast Video Cutter Joiner是一款强大的视频剪切合并工具,可以帮助用户对视频进行剪切或者合并处理,并支持编辑常见视频格式。这是一个快速的视频剪辑和加入软件,具有易于使用的界面。它允…...
Spring AI 助力 Java 开发者构建全功能 AI 智能体
【导语:随着人工智能的迅速发展,Java 开发者在将 AI 能力集成到基于 Spring 的应用程序方面选择有限。Spring AI 的出现改变了这一局面,本文详细介绍了如何使用 Spring AI 构建基于 Java 的全功能 AI 智能体。】Spring AI 打破 Java 集成 AI …...
图卷积神经网络安全最佳实践:7大关键漏洞防范与代码审计终极指南 [特殊字符]️
图卷积神经网络安全最佳实践:7大关键漏洞防范与代码审计终极指南 🛡️ 【免费下载链接】pygcn Graph Convolutional Networks in PyTorch 项目地址: https://gitcode.com/gh_mirrors/py/pygcn 图卷积神经网络(GCN)作为处理…...
第四天(实习无忧)
##文件结束的判定,编译与链接##1.文件结束的判定:fgetc(pf)读取结束返回EOF,fgets(arr,100,pf)读取结束返回NULL,fread(arr,sizeof(int),n,pf)读取结束返回对应的n。而成功读取到文件尾结束可以用feof(pf)判断,若中途因…...
AI建站工具怎么选?一篇讲透选型标准与对比逻辑
面对市面上五花八门的“智能建站”、“免代码建站”宣传,很多人越看越糊涂:到底哪个才是真的适合我?是选AI自动生成的,还是拖拽式更灵活?这篇不直接给答案,而是先提供一套通用的筛选标准,再帮你…...
深入理解Vue的响应式原理:从Object.defineProperty到Proxy
Vue的响应式系统是其核心特性之一,它使得数据变化能够自动驱动视图更新。从Vue 2.x的Object.defineProperty到Vue 3.x的Proxy,这一演进不仅是技术实现上的突破,更体现了Vue对性能、兼容性和开发体验的深度思考。以下从技术原理、实现差异、性…...
用风水学重构代码:周易卦象优化系统架构
在软件工程领域,系统架构的优化与性能调优一直是技术专家们不懈探索的核心课题。传统的优化思路往往聚焦于算法效率、资源调度、中间件配置等技术维度。然而,一个更具颠覆性的视角正在悄然兴起:将源自古老东方智慧的《周易》卦象体系…...
2026网盘风云再起:告别“传不动”,这两款不限速良心网盘实测解析
近些年,网盘市场经历了一轮又一轮的洗牌。从早年各大云盘陆续关停,到后来现有网盘部分服务全面转向收费模式,甚至对非会员进行严苛的网速阉割。用户常常面临「存不下、传不动、下不来」的窘境。 如今已是2026年,网盘市场看似被少…...
