【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.编写中断回调函数
当达到计数值就会进入这个中断回调




相关文章:
【STM32】电机驱动
一、电机分类 二、直流电机的分类 1.有刷电机 2.无刷电机 3.直流减速电机 三、H桥电路 正向旋转 驱动Q1和Q4 反向旋转 驱动Q2和Q3 四、MC3386电机驱动芯片 1.基本原理图 1)前进/后退:IN1和IN2的电平顺序决定电机的正反转 2)调节速度&#…...
csp 如此编码 C语言(回归唠嗑版)
熟悉的开篇废话,最近其实在研究那个web开发这一块,导致csp联系就减少了,好久没更csp的帖子了,尽管明天就要考了,但是嘞,能看一道是一道呗对吧。 等过段时间我把web开发这一块整明白了就发帖子,…...
或许是全网最全的延迟队列
什么是延迟队列 作用:用来存储延迟消息延迟消息:生产者发送一个消息给mq,然后mq会经过一段时间(延迟时间),然后在把这个消息发送给消费者 应用场景 预定会议后,需要在预定的时间点前十分钟通…...
C语言结构体小项目之通讯录代码实现+代码分析
一、思路 1.文件 这里由于通讯录实现代码较长,因此分三个文件进行,contact.c用于实现通讯录主体代码,声明各项头文件用contact.h实现,测试用test.c 二.功能 增加联系人删除联系人修改联系人查找指定联系人排序显示通讯录的信息…...
tp5 rewrite nginx重写
tp框架,默认的访问路径是 www.xxxx.com/index.php/admin/shop/index格式的,为了方便和更规范,也看起来有逼格一些,需要将index.php去掉 无index.php就会报404 我这里是宝塔 #地址重写if (!-e $request_filename) {rewrite ^(.*)$ /index.…...
.NET 反射优化的经验分享
比如针对 GetCustomAttributes 通过反射获取属性的优化,以下例子 // dotnet run -c Release -f net7.0 --filter "*" --runtimes net7.0 net8.0public class Tests{public object[] GetCustomAttributes() => typeof(C).GetCustomAttributes(typeof(MyAttribute…...
使用opencv的Sobel算子实现图像边缘检测
1 边缘检测介绍 图像边缘检测技术是图像处理和计算机视觉等领域最基本的问题,也是经典的技术难题之一。如何快速、精确地提取图像边缘信息,一直是国内外的研究热点,同时边缘的检测也是图像处理中的一个难题。早期的经典算法包括边缘算子方法…...
亿欧网首届“元创·灵镜”科技艺术节精彩纷呈,实在智能AI Agent智能体展现硬核科技图景
12月4日-10日,持续一周的首届“元创灵镜”科技艺术节在海南陵水香水湾拉开帷幕,虚实交互创造出的“海岛之镜”开幕式呈现出既真实又虚幻的未来感,融入前沿科技元素的艺术装置作品在“虚实之镜&自然生长”科技艺术展诠释着浪漫想象&#x…...
宝塔面板快速搭建本地网站结合内网穿透实现远程访问【无需公网IP】
文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板,它支持Linux/Windows系统,我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…...
css的Grid布局
1.简单布局 .grid { display: grid; grid-template-columns: 1fr 2fr 1fr; 布局样式 column-gap: 24px; 列间距 row-gap: 24px; 行间距 } 2.排列布局 center垂直方向居中对其 end靠下对齐 3.水平方向对齐 center居中 end靠右对齐 space-between两段对齐 4.对…...
Python接口测试框架选择之pytest+yaml+Allure!
一、为什么选择pytest? pytest完全兼容python自带的unittest pytest让单元测试更简单,能很好的管理测试用例。 对于实现接口测试的复杂场景,pytest的fixture、PDB等高阶用法都能实现需求。 入门简单,对于代码基础薄弱的团队人员…...
03-详解Nacos注册中心的配置步骤和功能
Nacos注册中心 服务注册到Nacos Nacos是SpringCloudAlibaba的组件也遵循SpringCloud中定义的服务注册和服务发现规范,因此使用Nacos与使用Eureka对于微服务来说并没有太大区别 主要差异就是依赖不同,服务地址不同 第一步: 在父工程cloud-demo模块的pom.xml文件中引入Spring…...
微服务学习:Nacos微服务架构中的服务注册、服务发现和动态配置Nacos下载
Nacos的主要用途包括: 服务注册与发现:Nacos提供了服务注册和发现的功能,服务提供者可以将自己的服务注册到Nacos服务器上,服务消费者则可以通过Nacos来发现可用的服务实例,从而实现服务调用。 动态配置管理ÿ…...
逆向经历回顾总结
逆向经历回顾总结 一、前言 将自己的逆向经验做个总结,希望新手对逆向大方向能快速了解。高手有啥不一样的经验也可以讨论讨论。 二、个人经历 本人入行逆向全因一部韩剧“幽灵”,里面涉及渗透、病毒分析、取证的攻防对抗,我觉得对新手来说…...
企业IT安全:内部威胁检测和缓解
什么是内部威胁 内部威胁是指由组织内部的某个人造成的威胁,他们可能会造成损害或窃取数据以谋取自己的经济利益,造成这种威胁的主要原因是心怀不满的员工。 任何内部人员,无论是员工、前雇员、承包商、第三方供应商还是业务合作伙伴&#…...
Linux 服务器较为强大的运维及管理脚本实现(支援:本机线上操作)
功能: Copyright (C) 2019 ~ 2023 Sichuan Jiaile Network Information Technology Co., LTD. All rights reserved. STG SCRIPT.(X) 1.0.0 VERSION Usage: ./linux.sh make 编译 ./linux.sh make ld …...
【数据结构】插入排序,希尔排序,选择排序,堆排序,冒泡排序
1.插入排序 思路:插入排序将一个数插入一个有序的数组里面,将这个数和数组元素挨着比较,直到他插入到合适的位置。 动画演示: 步骤:1.定义一个变量tmp保存要插入的数据 2.在循环中用tmp和有序数组中的元素比较&#…...
MyBatis--07--启动过程分析、SqlSession安全问题、拦截器
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 谈谈MyBatis的启动过程具体的操作过程如下:实现测试类,并测试SqlSessionFactorySqlSession SqlSession有数据安全问题?在MyBatis中,SqlSess…...
Qt基础之四十二:QMap、QHash的实现原理和性能对比
一.红黑树与哈希表 1.红黑树 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。 红黑树为了保证其最长…...
虚幻学习笔记12—C++类的实例化
一、前言 本系列如无特殊说明使用的虚幻版本都是5.2.1,VS为2022版本。在Unity中通常创建的脚本都默认继承了MonoBehavior,都是不能再用代码New而实例化的,虚幻也是一样不能直接New来实例化。在Unity中是通过Instantiate方法来实例化一个游戏对…...
提升协作效率:开源实时协作Markdown工具全解析
提升协作效率:开源实时协作Markdown工具全解析 【免费下载链接】codimd CodiMD - Realtime collaborative markdown notes on all platforms. 项目地址: https://gitcode.com/gh_mirrors/co/codimd 在数字化协作日益频繁的今天,一款能够让团队成员…...
【独家首发】Python WASM安全白皮书:XSS绕过、WASI权限逃逸、沙箱逃逸——3类高危漏洞POC及修复代码(限前500名开发者获取)
第一章:Python WASM安全白皮书导论 WebAssembly(WASM)正迅速成为云原生、边缘计算与浏览器沙箱场景中关键的安全执行载体。随着 Python 生态对 WASM 的支持逐步成熟(如 Pyodide、WASI-SDK 与 GraalPy 的跨编译能力)&am…...
OpenClaw数据清洗:GLM-4-7-Flash智能修复CSV文件常见问题
OpenClaw数据清洗:GLM-4-7-Flash智能修复CSV文件常见问题 1. 为什么需要自动化数据清洗工具 作为数据分析师,我每天要处理大量来源各异的CSV文件。最头疼的不是分析本身,而是前期数据清洗——编码混乱、日期格式不统一、缺失值扎堆…...
AI辅助web开发新体验:让快马智能生成实时Markdown编辑器应用
今天想和大家分享一个特别实用的开发体验——用AI辅助快速构建一个实时Markdown编辑器。作为一个经常需要写技术文档的开发者,我一直希望能有个简洁高效的编辑器工具,这次尝试用InsCode(快马)平台的AI能力来实现这个需求,整个过程出乎意料的顺…...
ROS2 核心概念与实战应用指南
1. ROS2核心概念解析:从零开始理解机器人开发框架 第一次接触ROS2时,我被它复杂的术语体系搞得晕头转向。直到把机器人项目比作一个餐厅,才突然开窍——节点就像厨师和服务员,话题是传菜窗口,服务是点单对讲机…...
别再让数据库“吃”脏数据了!一文讲透MySQL约束,从入门到精通
作为一名程序员,我们每天都在和数据库打交道。不知道你有没有遇到过这样的情况:用户注册时填写的年龄是200岁,性别是“未知”,或者明明员工表里存了一个部门ID,但在部门表里却根本找不到这个部门。这些“脏数据”就像定…...
大型系统构建与性能优化:缓存、负载均衡、分库分表与会话方案
大型系统的核心不是“堆技术名词”,而是: 识别瓶颈用架构手段把瓶颈拆开、绕开、扩展掉 这篇按“性能瓶颈 -> 分层架构 -> 数据与缓存 -> 会话管理”的主线整理。 面试与工程都通用的一句话方法论: 先观测(指标/日志/链路…...
BongoCat:让桌面交互充满生命力的开源伴侣
BongoCat:让桌面交互充满生命力的开源伴侣 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作,每一次输入都充满趣味与活力! 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 在数字化工作与娱乐…...
Go Routine 调度器任务分配策略
Go语言凭借其轻量级线程——Goroutine和高性能调度器,成为高并发编程的热门选择。Goroutine调度器的任务分配策略直接影响程序性能,其核心在于如何高效利用CPU资源,平衡负载并减少上下文切换开销。本文将深入解析调度器的核心机制,…...
UIImage命名检查黑科技:用Runtime拦截空字符串导致的CUICatalog崩溃
UIImage命名检查黑科技:用Runtime拦截空字符串导致的CUICatalog崩溃 在iOS开发中,图片资源管理看似简单,却暗藏玄机。当团队规模扩大、项目复杂度上升时,一个被忽视的空字符串可能引发连锁反应——[UIImage imageNamed:"&quo…...

