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);//延时1800ms
 
		DCMOTOR1=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);    //延时
	}
 }

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

142:vue+leaflet 加载tomtom地图(多种形式)

第142个 点击查看专栏目录 本示例介绍如何在vue+leaflet中添加tomtom地图,这里包含了多种形式,诸如中文标记、英文标记、白天地图、晚上地图、卫星影像图,高山海拔地形图等。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例…

【前端-VUE】Vue3组件组成部分及组件通信(详解)

一、父子间通信 1.父传子&#xff1a; 2.子传父&#xff1a; 3.什么是prop Prop定义&#xff1a;组件上注册的一些自定义属性 Prop作用&#xff1a;向子组件传递数据 特点&#xff1a; 可以传递任意数量的prop可以传递任意类型的prop 3.1 props校验 思考&#xff1a;组件的prop…

【脑电信号处理与特征提取】P5-彭薇薇:脑电信号的预处理及数据分析要点

彭薇薇&#xff1a;脑电信号的预处理及数据分析要点 脑电 脑电是神经活动的测量方法&#xff0c;在不同位置测量有不同的方法。比如大脑皮层表面测量的是ECoG&#xff0c;在头皮测量的是EEG。除了EEG是无损的&#xff0c;其他都是有损的。 脑电信号采集系统 下面是完整的…

seata Adjusted frame length exceeds 8388608: 539959368,nacos+mysql+seata部署

问题&#xff1a;docker 部署 seata 后出现异常 seata Adjusted frame length exceeds 8388608: 539959368 CSDN上找了一圈都解决不了。github又半天访问不上。后来终于访问上了&#xff0c;发现这是一个很离谱的问题。。。 原因&#xff1a;访问错了端口 seata默认分两个端口…

字符串中的单词反转【leetcode】

本题选自leetcode图解算法数据结构一书 你在与一位习惯从右往左阅读的朋友发消息&#xff0c;他发出的文字顺序都与正常相反但单词内容正确&#xff0c;为了和他顺利交流你决定写一个转换程序&#xff0c;把他所发的消息 message 转换为正常语序。 注意&#xff1a;输入字符串…

充电桩项目实战:搞定多数据源!

你好&#xff0c;我是田哥 最近&#xff0c;我在对充电桩项目进行微服务升级中&#xff0c;既然是项目升级&#xff0c;难免会遇到各种各样的问题。比如&#xff1a;分布式事务问题、多数据源问题、分布式锁问题等。 项目技术栈&#xff1a; SpringSpring BootSpring Cloud Ali…

Redis常见数据类型[上]

目录 前言&#xff1a; 基本全局命令 KEYS EXISTS DEL EXPIRE TTL TYPE 数据结构和内部编码 内部编码&#xff1a; 单线程架构 引出单线程模型&#xff1a; 为什么单线程还这么快&#xff1f; String字符串 字符串数据类型&#xff1a; 常见命令&#xff1a; S…

第十四篇【传奇开心果系列】BeeWare的Toga开发移动应用示例:Toga实现页面切换

传奇开心果系列博文 系列博文目录BeeWare的Toga开发移动应用示例系列博文目录前言一、Toga页面跳转和切换方式方法介绍二、使用TabView来实现页面切换三、使用页面堆栈管理器(Page Stack Manager)来实现页面切换四、使用网格布局(Grid Layout)和可见性控制来实现页面之间的…

防御保护--NAT策略

目录 NAT策略 NAT类型 server-map表 P2P --- peer to peer 网络类型 ​编辑 目标NAT--服务器映射 双向NAT ​编辑 多出口NAT NAT策略 静态NAT --- 一对一 动态NAT --- 多对多 NAPT --- 一对多的NAPT --- easy ip --- 多对多NAPT 服务器映射 源NAT--基于源IP地址进行转…

算法:分界线

一、算法描述 电视剧《分界线》里面有一个片段&#xff0c;男主为了向警察透露案件细节&#xff0c;且不暴露自己&#xff0c;于是将报刊上的字 剪切下来&#xff0c;剪拼成匿名信。 现在有一名举报人&#xff0c;希望借鉴这种手段&#xff0c;使用英文报刊完成举报操作。 但为…

如何从视频中提取高清图片?可以这样截取

如何从视频中提取高清图片&#xff1f;从视频中提取高清图片可以方便我们制作各种用途所需的素材&#xff0c;如海报、社交媒体配图等。此外&#xff0c;高清图片的细节和色彩也更丰富&#xff0c;可以更好地满足我们的视觉需求。从视频中提取高清图片是一项需要技巧的任务&…

leetcode 27.移除元素(python版)

需求 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数组中超出新长度…

代码随想录 Leetcode617.合并二叉树

题目&#xff1a; 代码(首刷看解析 2024年1月31日&#xff09;&#xff1a; class Solution { public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if (!root1) return root2;if (!root2) return root1;root1->val root2->val;root1->left mergeTree…

计算机网络_1.2因特网概述

1.2因特网概述 一、网络、互联网与因特网的区别与联系1、网络2、互联网3、因特网4、 互联网与因特网辨析 二、因特网介绍1、因特网发展的三个阶段2、因特网简介&#xff08;1&#xff09;因特网服务提供者&#xff08;ISP&#xff09;&#xff08;2&#xff09;因特网已经发展成…

数字孪生智慧能源电力Web3D可视化云平台合集

前言 能源电力的经济发展是中国式现代化的强大动力&#xff0c;是经济社会发展的必要生产要素&#xff0c;电力成本变化直接关系到工业生产、交通运输、农业生产、居民生活等各个方面&#xff0c;合理、经济的能源成本能够促进社会用能服务水平提升、支撑区域产业发展&#xf…

监测Tomcat项目宕机重启脚本(Linux)

1.准备好写好的脚本 #!/bin/sh # 获取tomcat的PID TOMCAT_PID$(ps -ef | grep tomcat | grep -v tomcatMonitor |grep -v grep | awk {print $2}) # tomcat的启动文件位置 START_TOMCAT/mnt/tomcat/bin/startup.sh # 需要监测的一个GET请求地址 MONITOR_URLhttp://localhost:…

Spring Cloud中@RefreshScope实现动态刷新的原理

在现代微服务架构中&#xff0c;Spring Cloud已经成为了一种流行的选择&#xff0c;它提供了许多用于构建和部署微服务的工具和库。其中&#xff0c;动态刷新配置是Spring Cloud中一个非常有用的特性&#xff0c;它允许我们在不重启服务的情况下更新配置。这个特性是通过Refres…

Java入门高频考查基础知识8(腾讯18问1.5万字参考答案)

刷题专栏&#xff1a;http://t.csdnimg.cn/gvB6r Java 是一种广泛使用的面向对象编程语言&#xff0c;在软件开发领域有着重要的地位。Java 提供了丰富的库和强大的特性&#xff0c;适用于多种应用场景&#xff0c;包括企业应用、移动应用、嵌入式系统等。 以下是几个面试技巧&…

c#鼠标绘制

有用的没用的&#xff0c;用的上的用不上的&#xff0c;能写的不能写的&#xff0c;反正想起来就写了&#xff0c;比如这篇&#xff0c;好像一般也没什么用&#xff0c;emmm&#xff0c;或许&#xff0c;做录制软件的时候可以用一下。 顾名思义&#xff0c;本篇主要就是来实现将…

Linux上搭建mqtt开发环境及服务器部署(MosquittoEMQX)

&#x1f449;&#x1f449;&#x1f449;关于Mosquitto代码编写及EMQX的使用&#xff0c;由此入 一、安装编译Mosquitto 使用Mosquitto编写程序连接MQTT服务器&#xff0c;并收发数据1-安装所需依赖 用于在Linux系统上进行SSL/TLS加密通信的开发。它提供了一组用于加密和解密…