【STM32】电机驱动

一、电机分类

二、直流电机的分类

1.有刷电机

2.无刷电机

3.直流减速电机

三、H桥电路

正向旋转

驱动Q1和Q4

反向旋转

驱动Q2和Q3

四、MC3386电机驱动芯片

1.基本原理图

1)前进/后退:IN1和IN2的电平顺序决定电机的正反转

2)调节速度:高电平引脚的电压值决定电机转动的速度(通过MCU输入的PWM的占空比决定的

2.PWM应用

占空比:高电平占整个周期的比例

3.输出比较功能框图

ARR:决定周期

CCR:决定占空比(高电平的大小)

五、PWM实验

1.引脚分配

2.使用CubeMX

将PC3和PA3设置为Output,将PA2设置为定时器,输入为PWM波

3.代码编写

1.设置为正转

PC3输出高电平,PA3输出低电平

2.设置PWM波(设置速度)

1.开启定时器

2.设置PWM

通过设置CCR(捕获/比较寄存器),来控制小车的速度

我们将PWMA初始化为800

由实验现象可以知道:只有到转速为1300/8000,电机才开始转动

六、增量式编码器

1.工作原理

有多少个光栅盘就可以产生多少个PWM波

2.STM32-编码器实验

如何通过其输出来进行判断输出为高电平还是低电平???通过判断脉冲相位【A相和B相相差90度】

3.STM32编码器接口

当电机正向转动时,CNT向上计数

当电机反向转动时,CNT向下计数

4.实验

1.引脚分配

2.CubeMX设置

3.代码编写

启动编码器

TIM->CNT---->实际上编码器的计数值就是CNT的计数值

正转一圈:600-700左右(向上计数器)

反转一圈:64900-64800左右(向下计数器)

 视频链接:

【一节课秒懂】轻松掌握STM32电机驱动开发_哔哩哔哩_bilibili

七、动手编写

参考博客:

https://www.cnblogs.com/Wilson-hhx/p/10467945.html

https://blog.csdn.net/qq_57707070/article/details/124936006

【STM32】Hal库学习——PWM驱动电机_hal_tim_pwm_start-CSDN博客

1.使用STM32g070RBTx型号的单片机

2.设置CubeMX

我们想要使用PWM的输入占空比来设置电机的输出速度,则将使MOTOR_L_S&&MOTOR_R_S)设置为PWM(定时器部分)

其他引脚设置为输出引脚即可

由于需要双路输出,设定PB5,PB4分别通过TIM3-CH2,TIM3-CH1进行PWM输出

同时PB6,3,1,2输出来控制电机转动

3.启动定时器

4.编写中断回调函数

当达到计数值就会进入这个中断回调

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

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

相关文章

Redis对象

Redis根据基本数据结构构建了自己的一套对象系统。主要包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象 同时不同的对象都有属于自己的一些特定的redis指令集,而且每种对象也包括多种编码类型,和实现方式。 Redis对象结构 struct redisOb…

Linux 防火墙

目录 安全技术 防火墙的分类 按保护范围划分 按实现方式划分 按网络协议划分 应用层防火墙(7层) 防火墙的工作原理 linux防火墙的基本认识 防火墙工具介绍 1.iptables 2.firewalld 3.nftables 安全技术 —— 入侵检测系统(Intru…

centos7中通过kubeadmin安装k8s集群

k8s部署官方提供了kind、minikube、kubeadmin等多种安装方式。 其中minikube安装在之前的文章中已经介绍过,部署比较简单。下面介绍通过kubeadmin部署k8s集群。 生产中提供了多种高可用方案: k8s官方文档 本文安装的是1.28.0版本。 建议去认真阅读一下…

使用coco数据集进行语义分割(1):数据预处理,制作ground truth

如何coco数据集进行目标检测的介绍已经有很多了,但是关于语义分割几乎没有。本文旨在说明如何处理 stuff_train2017.json stuff_val2017.json panoptic_train2017.json panoptic_val2017.json,将上面那些json中的dict转化为图片的label mask&am…

Docker下安装MySQL

如果在Docker下直接拉取MySQL并运行镜像,由于没有指定字符编码集,可能会存在插入中文出现乱码的情况,并且当容器删除后,容器里面存在的数据会丢失,所以在运行容器时应该使用数据卷进行挂载,按照如下步骤操作…

大模型中幂律缩放法则和涌现能力

幂律缩放法则是一种用于描述两个变量之间关系的数学模型。 根据幂律缩放法则,当一个变量的值变化时,另一个变量的值以指数方式变化。具体而言,幂律缩放法则可以表示为Y a * X^b,其中Y表示一个变量的值,X表示另一个变…

网页中的json文档,怎么保存到本地

火狐浏览器操作方法 方法一 右键——>另存页面为 方法二 点击右边的三条横线——>另存页面为 谷歌浏览器操作方法 方法一 右键——>另存为 方法二

阵列信号处理---均匀线阵和均匀加权线阵

均匀线阵 均匀线性阵列(ULA:Uniform Linear Array):有N个阵元位于z轴上且具有均匀间距d。 一般都把阵列的中心放在坐标系的原点。如下图 阵元的位置为 p z n ( n − N − 1 2 ) d , n 0 , 1 , … , N − 1 p_{z_n}\big(n-\frac{N-1}{2}\b…

LLM 开发模式 RAG,MRKL,Re-Act,Plan-Execute 模式对比

本心、输入输出、结果 文章目录 LLM 开发模式 RAG,MRKL,Re-Act,Plan-Execute 模式对比前言RAG、MRKL、Re-Act和Plan-Execute模式的一些对比花有重开日,人无再少年实践是检验真理的唯一标准 LLM 开发模式 RAG,MRKL&…

Wireshark抓包分析RTMP协议时,出现Unknown问题

进行rtmp推流时,使用wireshark抓包,发现部分包显示Unknown 解决方法: 编辑 -> 首选项 -> Protocols -> RTMPT,这里Maximum packet size默认是32768 将该值调大,比如调成1048576,即可解决该问题。…

pytorch 中的dim 的作用范围

1. 二维矩阵时 不同的运算, dim 的作用域都是一样的思想; 当数据是二维矩阵时, 可以按照下面的思想理解: 对于矩阵: dim0 按列操作(沿列向下)。 dim1 按行操作(跨行)。 …

Windows修改MAC地址的方法(以windows11为例)

我们在日常的工作中,如果mac地址被限制,就需要修改mac地址,本文总结一下修改windows的mac地址的方法。 方法一:网络适配器中配置 网络适配器中配置的方式适用于能够在网络适配器中找到物理地址(NetworkAddress)的情况。 1、打开…

腾讯云轻量服务器通过Docker搭建外网可访问连接的redis5.x集群

原创/朱季谦 最近买了一台4核16的腾讯云轻量应用服务器,花了我快四百的大洋,打算搭建一堆docker组件集群,最先开始是通过docker搭建redis集群,计划使用三个端口,分别是7001,7002,7003。 腾讯云服务器有防火墙限制,故…

使用trigger-forward跨流水线传递参数

参考文档:https://docs.gitlab.com/ee/ci/yaml/#triggerforward 今天给大家介绍一个gitlab CI/CD的关键字 - forward,该关键字是一个比较偏的功能,但同时也是一个很实用的功能,我们通过在gitlab的ci文件中使用forward关键字&#…

火星探索:技术挑战与前沿进展

火星探索:技术挑战与前沿进展 一、引言 火星,这颗红色的星球,长久以来一直吸引着人类的目光。随着科技的飞速发展,火星探索已经从纯粹的科幻梦想逐渐转变为现实的研究课题。然而,火星探索仍然面临着诸多技术挑战。本文将深入探讨火星探索的关键技术、现有技术瓶颈以及前沿…

从零构建属于自己的GPT系列1:数据预处理(文本数据预处理、文本数据tokenizer、逐行代码解读)

🚩🚩🚩Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1:文本数据预处理 从零构建属于自己的GPT系列2:语…

记一次若依二开的简单流程

记一次若依二开的简单流程 前言: 搞Java后端的应该都知道若依框架,是一个十分强大且功能齐全的开源的快速开发平台,且毫无保留给个人及企业免费使用。很多中小型公司会直接在该系统上进行二次开发使用。本文记录一次使用若依二开零编码的简单实现&#…

Python安装步骤介绍

本文将介绍Python安装的详细步骤如下: 下载 python安装 python配置环境变量(安装时勾选配置环境变量的则无需此步骤) 一、python下载 官网:Download Python | Python.org 根据电脑位数下载所需的版本 二、Python安装 1.打开安…

C++实现ATM取款机

C实现ATM取款机 代码:https://mbd.pub/o/bread/ZZeZk5Zp 1.任务描述 要求:设计一个程序,当输入给定的卡号和密码(初始卡号和密码为123456) 时,系统 能登录 ATM 取款机系统,用户可以按照以下规则进行: 查询…

dynamic-datasource多数据源事务

Spring 事务管理分为编程式和声明式两种 编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体的逻辑与事务处理解耦(编程式事务在这边不做过多陈述)。 声明式事务有两种方式,一种是在配置文件(XML)中做相…