PWM 驱动电机

2023-11-03

文章主要是个人的笔记,所以很多地方可能是根据自己的情况来写的

驱动器在这里插入图片描述

使用的是L298N

CubeMX的配置

基本的配置略过(时钟源等)
我们使用定时器1
1
在这里插入图片描述
选择内部时钟 通道1 PWM互补通道
2
在这里插入图片描述
这里我们后面把预分频的值改为了3,计数值改为4000,使得输出频率达到了10k
1 预分频的值 分频后得到的值才是定时器1的时钟
2 这个主要是死区和滤波器的时钟
auto-reload preload 是用于设置定时器的ARR自动重装寄存器是更新事件产生时写入有效还是立即写入有效。如果使能了表示更新事件产生时写入有效,否则反之。
在这里插入图片描述
这个主要是主从模式的配置,一般感觉用不到。
在这里插入图片描述
死区时间设置为20 这个是为了避免驱动的损坏
在这里插入图片描述
Pulse 的值除以我们总的计数值得到占空比

占空比控制的原理

我觉得L298N使用PWM一共有两种方法,一种是取掉驱动上面的使能跳冒,输出PWM波来控制 第二种也就是我现在学习的这种方法,使用互补输出来控制。
在这里插入图片描述
这里的占空比设定是30%,根据驱动器的表我们可以知道,前三分之一的时间电机转动的方向与后面的时间不同(我们假设前面时间使电机正转,后面时间使电机反转),由于这个输出信号周期短(我现在使用的是TT电机,一般需要几k的波去驱动。),我们从整体上看到的是反转,只是前面时间的正转削弱了反转。当占空比为50%的时候,电机不转,而占空比与50%的绝对值大小决定了电机的转速。

代码

HAL_TIM_Base_Start(&htim1);开启定时器1
HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);//开启定时器Pwm通道1
HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_1);//开启定时器Pwm通道1互补通道
__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,500);

__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,500);
是一个宏定义,它改变了CCR寄存器中的值,不用对寄存器进行操作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PWM 驱动电机 的相关文章

  • 初始化 ST-Link 设备时出错 - 无法连接到设备

    我目前正在使用 ST Link 调试器对我的 STM32F3 Discovery 板进行编程 我使用的IDE是Atollic TrueStudio 5 5 2 现在我面临一个非常奇怪的问题 那就是我不断收到消息 初始化 ST Link 设备
  • c项目makefile多重定义错误

    这个问题是一个对应于创建的repexthis问题 在我的嵌入式 C 项目中 我有两个独立的板 我想为每个板创建两个 c 文件 master c 和 Slave c 其中包含自己的特定main 功能 我使用 stm32cumbemx 生成带有
  • GCC - 如何停止链接 malloc?

    我正在努力将我的代码缩减到最小的骨架大小 我使用的是只有 32k 闪存的 STM32F0 需要很大一部分闪存用于数据存储 我的代码已经有大约 20k 闪存大小 其中一些是由于使用了 STM32 HAL 函数 我可以在以后需要时对其进行解释和
  • 在 MCU 内部 FLASH 中从一个固件跳转到另一个固件

    我目前正在开发针对 STM32F030C8 的引导加载程序固件应用程序 我在分散文件中指定引导加载程序应用程序将占用主内存位置 0x08000000 到 0x08002FFF 扇区 0 到扇区 2 我还编写了一个主固件应用程序 存储在0x0
  • STM32 F072上的软件如何跳转到bootloader(DFU模式)?

    STM32应用笔记2606对此进行了讨论 但没有简单的代码示例 该答案已使用 IAR EWARM 在 STM32F072 Nucleo 板上进行了测试 这个答案使用 STM32标准外设库 仅此而已 请注意 验证您是否成功进入引导加载程序模式
  • 当数据大小较小时,内存到内存 DMA 传输是否需要权衡?

    我正在学习 STM32 F4 微控制器 我正在尝试找出使用 DMA 的限制 根据我的理解和研究 我知道如果数据量较小 即设备使用DMA生成或消耗少量数据 则开销会增加 因为DMA传输需要DMA控制器执行操作 从而不必要地增加系统成本 我做了
  • 138-基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真+源程序

    资料编号 138 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 ds1302时钟 LED灯 蜂鸣器 电位器 制作一个基于stm32单片机汽车多功能仪表盘显示系统Proteus仿真 2 通过DHT1
  • rt-thread studio中新建5.02版本报错

    先吐槽一下 rt thread studio出现BUG真多 好多时间都是在找BUG 但里面用好多控件还是挺好用的 真是又爱又恨 所以一般使用功能不多的话还是用keil多一点 创建5 02版本工程之后直接进行编译 直接会报下面这个错误 资源
  • rt-thread studio中新建5.0不能用

    文章目录 一 版本对比 二 文件和文件夹打斜杠 在使用RT Thread studio创建新工程5 0版本的时候 结果发现新建完成之后程序不能正常运行 但是创建4 10版本的时候却能运行 那肯定是新版本出现了BUG 一 版本对比 首先对比了
  • STM32F103

    提示 来源正点原子 参考STM32F103 战舰开发指南V1 3PDF资料 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 开发环境硬件普中科技 接线图在g
  • STM32 GPIO工作原理详解

    STM32 GPIO介绍 1 STM32引脚说明 GPIO是通用输入 输出端口的简称 是STM32可控制的引脚 GPIO的引脚与外部硬件设备连接 可实现与外部通讯 控制外部硬件或者采集外部硬件数据的功能 以STM32F103ZET6芯片为例
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • VS Code 有没有办法导入 Makefile 项目?

    正如标题所说 我可以从现有的 Makefile 自动填充 c cpp properties json 吗 Edit 对于其他尝试导入 makefile 的人 我找到了一组脚本 它们完全可以实现我想要实现的目标 即通过 VS Code 管理
  • STM32的HAL中实现单按、长按和双按功能

    我正在尝试实现单击 双击和长按功能来执行不同的功能 到目前为止 我已经理解了单击和长按的逻辑 但我不知道如何检测双击 至于代码 我使用计数器实现了单击和长按 但代码仅停留在第一个 if 条件上 bool single press false
  • 无法使用 OpenOCD 找到脚本文件

    我正在尝试按照本教程将 OpenOCD 与我的 ST 发现板一起使用 https japaric github io discovery README html https japaric github io discovery READM
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • STM32F4XX的12位ADC采集数值超过4096&右对齐模式设置失败

    文章目录 一 前言 二 问题1 数值超过4096 三 问题1的排错过程 四 问题2 右对齐模式设置失败 五 问题2的解决方法 5 1 将ADC ExternalTrigConv设置为0 5 2 使用ADC StructInit 函数 一 前
  • 核心耦合内存在 STM32F4xx 上可执行吗?

    尝试从 STM32F429s CCM 运行代码 但每当我命中 CCM 中的第一条指令时 我总是会遇到硬故障 并且 IBUSERR 标志被设置 该指令有效且一致 STM32F4xx 是否可能不允许从 CCM 执行 数据访问效果良好 alios
  • 从没有中断引脚并且在测量准备好之前需要一些时间的传感器读取数据的最佳方法

    我正在尝试将压力传感器 MS5803 14BA 与我的板 NUCLEO STM32L073RZ 连接 根据 第 3 页 压力传感器需要几毫秒才能准备好读取测量值 对于我的项目 我对需要大约 10 毫秒来转换原始数据的最高分辨率感兴趣 不幸的
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯

随机推荐

  • python join_Python join()方法:合并字符串

    join 方法也是非常重要的字符串方法 它是 split 方法的逆方法 用来将列表 或元组 中包含的多个字符串连接成一个字符串 想详细了解 split 方法的读者 可阅读 Python split 方法 一节 使用 join 方法合并字符串
  • WCF Service 的创建,测试,发布与使用示例

    WCF Service 的创建 测试 发布与使用示例 一 WCF Service 的创建 WCF Service Application 注 为了在 IIS 或 WAS 中托管 则必须使用 WCF Service Application 类
  • Kali安装zmap简单介绍

    zmap是一个非常方便的扫描器 跟nmap和masscan一样 不过区别在于zmap他快 号称是一小时扫遍整个互联网 主要使用方式是TCP SYN scan TCP connectscan UDP scan No Ping scan等 下面
  • 【MySQL基础】9—MySQL数据类型

    Github主页 https github com A BigTree 笔记链接 https github com A BigTree Code Learning 如果可以 麻烦各位看官顺手点个star 如果文章对你有所帮助 可以点赞 收藏
  • shell中变量自增的实现方法

    Linux Shell中写循环时 常常要用到变量的自增 现在总结一下整型变量自增的方法 我所知道的 bash中 目前有五种方法 1 i expr i 1 2 let i 1 3 i 4 i i 1 5 i i 1 可以实践一下 简单的实例如
  • NLP下游任务理解以及模型结构改变(上)

    序言 Bert 是一种基于微调的多层双向 Transformer 编码 Bert中的Transformer 编码器 和 Transformer 本身的编码器结构相似 但有以下两点的不同 1 与Transformer本身的Encoder端相比
  • JAVA层HIDL服务的获取原理-Android10.0 HwBinder通信原理(九)

    Android取经之路 的源码都基于Android Q 10 0 进行分析 Android取经之路 系列文章 系统启动篇 Android系统架构Android是怎么启动的Android 10 0系统启动之init进程Android10 0系
  • 一个非常好用的 Python 魔法库

    点上方蓝色 菜鸟学Python 选 星标 公众号 重磅干货 第一时间到达 来源 Be melting https blog csdn net lys 828 article details 106489371 今天跟大家分享FuzzyWuz
  • React配置路由----傻瓜教程

    整体思路就是 就是在路由文件里配置路由 再将路由文件导入App js 最后将App js导入src下的index js 1 安装全局环境和创建React项目 cnpm install g create react app 仅第一次创建项目前
  • 带你熟知关键字static用法——C语言(举例及通俗易懂)

    引入 首先我们看两个例子 例1 include
  • win10 vscode tensorflow 填坑大成

    win 10 vscode tensorflow 这个略览是基于对Vs code 各种设置功能的迷惑开始的 包括 user setting workspace setting launch setting 以及从user setting 分
  • python代码中的中文语法错误:SyntaxError: Non-ASCII character ‘\xe5‘ in file trade.py on line 7

    编写的python程序中使用了中午 执行的时候报了上述语法错误 经过排查原因如下 我使用的解释器的版本是python2的 Python 2默认的编码格式是ASCII 如果直接使用中文就会报如下错误 SyntaxError Non ASCII
  • 集合实现控制台登录注册案例

    学习完集合框架以后做了一个用集合去实现控制台的注册登录的操作 这个案例是用集合去存储用户的注册的信息 所以存在每次运行程序都要进行一个注册的操作 这也是程序目前唯一的一个bug了 但是写完这个例子 还是让我受益颇多的 对于程序中真是的开发如
  • LeetCode5-最长回文子串

    官网地址 https leetcode cn com problems longest palindromic substring solution zui chang hui wen zi chuan by leetcode soluti
  • 安装libpng报错zlib not installed

    libpng安装configure时报错 error ZLib not installed 两个原因 zlib的include和lib路径没找到 添加zlib路径到环境变量 在 configure就行了 export LDFLAGS L u
  • Python中一维向量和一维向量转置相乘

    在Python中有时会碰到需要一个一维列向量 n 1 与另一个一维列向量 n 1 的转置 1 n 相乘 得到一个n n的矩阵的情况 但是在python中 我们发现 无论是 T 还是 np transpose 都无法实现一维向量的转置 相比之
  • Cocos Creator 源码解读:siblingIndex 与 zIndex

    前言 本文基于 Cocos Creator 2 4 5 撰写 普天同庆 来了来了 源码解读 系列文章终于又来了 温馨提醒 本文包含大段引擎源码 使用大屏设备阅读体验更佳 Hi There 节点 cc Node 作为 Cocos Creato
  • 完美解决 knife4j You do not have permission to access this page的问题

    文章目录 1 复现问题 2 分析问题 3 解决问题 1 复现问题 今天在项目中配置了knife4j 本地启动后 输入用户名和密码能够正常访问 如下图所示 但将项目部署到正式环境并成功启动 且用户名和密码输入正确后 却报出了如下错误 用户名和
  • 电脑 ktv服务器系统,ktv服务器主机系统

    ktv服务器主机系统 内容精选 换一换 安装传输工具在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ exe 在本地主机和Windows云服务器上分别安装数据传输工具 将文件上传到云服务器 例如QQ
  • PWM 驱动电机

    文章主要是个人的笔记 所以很多地方可能是根据自己的情况来写的 驱动器 使用的是L298N CubeMX的配置 基本的配置略过 时钟源等 我们使用定时器1 1 选择内部时钟 通道1 PWM互补通道 2 这里我们后面把预分频的值改为了3 计数值