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);    //延时}}

实验现象:
可以观察到步进电机首先顺时针运转,随后逆时针运转。

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

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

相关文章

查找二叉树(tree_a)

时间限制&#xff1a;1秒 内存限制&#xff1a;128M 题目描述 已知一棵二叉树用邻接表结构存储&#xff0c;中序查找二叉树中值为x的结点&#xff08;x在二叉树中是唯一的&#xff09;&#xff0c;并指出是第几个结点。 输入描述 第一行n为二叉树的结点个树&#xf…

【TCP】重传与超时机制

前言 在网络通信的世界里&#xff0c;传输控制协议&#xff08;TCP&#xff09;扮演着一个至关重要的角色。它确保了数据的可靠传输&#xff0c;就像邮差确保每一封信都能准确无误地送达收件人手中一样。但是&#xff0c;网络环境充满了不确定性&#xff0c;数据包可能会因为各…

新书速览|Docker与Kubernetes容器运维实战

帮助读者用最短的时间掌握Docker与K8s运维技能 内容简介 随着云计算和容器技术的发展&#xff0c;Docker与Kubernetes已经成为各个企业首选的部署工具&#xff0c;使用它们可以提高系统的部署效率和运维能力&#xff0c;降低运维成本。本书是一本为初学者量身定制的Docker与Kub…

Android PMS——PMS服务启动流程(二)

PackageManagerService 既然是系统服务&#xff0c;那么肯定是通过 SystemServer 启动的&#xff0c;所以我们首先看一下 SystemServer 服务中启动 PackageManagerService 相关代码。 一、PMS启动 1、SystemServer 源码路径&#xff1a;/frameworks/base/services/java/com/…

iPhone手电筒不能工作的几种修复办法,总有一种适合你

这篇文章解释了为什么你的iPhone的手电筒不工作以及如何修复它。 手电筒不工作的原因 iPhone手电筒功能可能不起作用的原因有几个。通常&#xff0c;软件错误或小故障会导致该功能出现故障&#xff0c;但可能是你处于错误的电源模式或只需要充电。其他时候&#xff0c;确切的…

STM32F407移植OpenHarmony笔记4

上一篇写到make menuconfig报错&#xff0c;继续开整。 make menuconfig需要/device/soc/*下面有对应的Kconfig文件。 直接去gitee下载stm32的配置文件拿来参考用。 先提取Kconfig文件&#xff0c;后面再添加其它文件。https://gitee.com/openharmony/device_soc_st/tree/Open…

arcgis 如何将线路转为路面

在出外业的时候&#xff0c;用手机软件测出来的路&#xff08;线要素&#xff09;&#xff0c;需要转换成路面。具体操作如下&#xff1a; 1.打开线图层 2.菜单-地理处理-缓冲区 在缓冲区中&#xff0c;输入要转换的线要素&#xff0c;在线性单位下方填写要转换的面的宽度&am…

[E模拟] lc2670. 找出不同元素数目差数组(哈希表+状态压缩)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;2670. 找出不同元素数目差数组 2. 题目解析 哈希计数统计就行了&#xff0c;题解里有看到用 long 64 位进行状态压缩的&#xff0c;可以参考下。这类题就不纠结写法了。 思路&#xff1a; 两个哈希表&#x…

回响科技二面面试题解答

面试题 1、你们的数仓中DWD层为什么要划分数据域&#xff1f;划分数据域之后会对ADS层造成什么影响&#xff1f;是可以提效还是可扩展性强&#xff1f;你们是如何考虑的呢&#xff1f; 2、AZkaban和dolphinScheduler的区别是什么&#xff1f;如果选型会从哪几个方面来考虑呢&a…

《Numpy 简易速速上手小册》第10章:Numpy案例研究和实践技巧(2024 最新版)

文章目录 10.1 实际案例分析10.1.1 基础知识10.1.2 完整案例&#xff1a;天气数据分析10.1.3 拓展案例 1&#xff1a;股票价格分析10.1.4 拓展案例 2&#xff1a;信号处理 10.2 Numpy 最佳实践10.2.1 基础知识10.2.2 完整案例&#xff1a;高效数组操作10.2.3 拓展案例 1&#x…

vue-cli初始化项目很慢?

第一种情况 大部分是由于npm的镜像源不是淘宝的 cmd输入npm config get registry查看是不是淘宝的&#xff0c;是的话看第二种情况试试不是的话输入npm config set registry https://registry.npm.taobao.org 第二种情况 vue-cli配置文件不是使用淘宝镜像源的 找到文件.vue…

已实现:vue、h5项目如何使用echarts实现雷达图、六边形图表

说实话&#xff0c;要说图表里&#xff0c;最强的应该属于echarts了&#xff0c;不管是接入难度上&#xff0c;还是样式多样性上&#xff0c;还有社区庞大程度上&#xff0c;都是首屈一指的&#xff0c;反观有的人习惯用chart.js了&#xff0c;这个无可厚非&#xff0c;但是如果…

从C向C++5——友元和string

一.对象特性&#xff08;续&#xff09; 1.空指针访问成员函数 C中空指针也是可以调用成员函数的&#xff0c;但是也要注意有没有用到this指针。 如果用到this指针&#xff0c;需要加以判断保证代码的健壮性。 如果调用的成员函数不访问成员属性&#xff0c;那么空指针可以调…

C语言中大小写字母的转化

在C语言中&#xff0c;大小写字母的转化是一个非常基础且常用的功能。C语言中的字符是以ASCII码的形式存储的&#xff0c;而ASCII码中&#xff0c;小写字母和大写字母之间相差32。因此&#xff0c;可以通过简单的数学运算来实现大小写字母的转换。 一、数学运算转化 大写字母…

微信小程序如何实现实时显示输入内容

如下所示&#xff0c;在许多场景中需要实时显示用户输入&#xff0c;具体实现见下文。 .wxml <input type"text" placeholder"请输入{{item.value}}(必填)" style"width:80%;" bindinput"get_required_value" data-info"{{it…

科技云报道:新趋势下,国产数据库或“春山可望”

科技云报道原创。 从540亿元到1286亿元——这是中国通信标准化协会大数据技术标准推进委员会针对中国数据库行业给出的一份预测报告。 报告指出&#xff0c;未来五年&#xff0c;中国数据库行业将从百亿级市场跨越成为千亿级市场。 最近两年&#xff0c;中国的数据库行业似乎…

【PyRestTest】PyRestTest入门引导

pyresttest环境安装完毕之后&#xff0c;进行如下操作&#xff0c;快速入门pyresttest。 第一步&#xff1a;创建一个简单的REST服务 1、进行如下命令clonepyresttest项目: git clone https://github.com/svanoort/pyresttest.git2、安装运行Rest服务的依赖包 (Django and D…

Ubuntu 22.04 中文乱码解决方案

sudo apkg-reconfigure locales 按空格键选中

团队管理-如何提高员工积极性

一、审题 关键词&#xff1a;提高、工作积极性 有哪些指标&#xff1a; 1、迭代工作交付量&#xff0c;单位时间内完成的工作内容 2、问题解决&#xff0c;处理问题的态度是否积极&#xff0c;效率是否提高 3、工作主动性&#xff0c;是否主动的承担一些工作职责&#xff…

PHP面试--echo、print、print_r、var_dump区别

echo、print、print_r、var_dump 区别 echo 输出单个或多个字符&#xff0c;多个使用逗号分隔无返回值 echo "String 1", "String 2";print 只可以输出单个字符返回1&#xff0c;因此可用于表达式 print "Hello"; if ($expr && pri…