电机(一):直流有刷电机和舵机

声明:以下图片来自于正点原子,仅做学习笔记使用

电机专题:

直流电机:直流有刷BDC(内含电刷),直流无刷BLDC(大疆的M3508和M2006),无刷电机有以下三种形式:(第三种叫做永磁同步电机,换相方式为正弦波,前两种为方波)

步进电机:电脉冲信号驱动角位移或相位移

伺服电机:绝对服从驱动信号的控制,价格昂贵,如下图所示:

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

直流有刷BDC:

仅需调整电压即可调整转速,内部结构包括:定子(产生磁场),转子,换向器(改变绕组电流流向)和电刷,加上减速齿轮便可以获得较大的扭矩,直流电机关键参数:

加装霍尔传感器进行计数:

H桥驱动:

IR2104STRPBF:半桥式驱动器,输出电压:10V to 20V,输出电流:130 mA

要么Motor+输出为正,要么Motor-输出为正(光耦隔离输入输出反相)R22电压为0,此时MOS关断;R20电压为1,此时MOS打开接入GND,Motor+输出为负。这样传导的过程会有时间延迟,成为死区时间。

电机的启动停止通过控制SD_IN的高低电平即可实现,PWM需要使用互补PWM,例如TIM_CH1和TIM_CH1N,PWM的比较值决定了电机的速度

互补输出是指两个输出信号,它们是互补的,即当一个输出为高电平时,另一个输出必定为低电平,反之亦然。这种输出配置在数字电路中非常常见,用于控制逻辑门的状态,从而实现对外部设备的控制。

编码器:

通过在固定时间内测量编码器的脉冲数,可以计算出旋转角度或速度,进而推算出电机转速。

STM32的定时器编码器接口原理主要是利用编码器输出的正交信号(通常是A相和B相)来计算速度和方向。首先,编码器输出的A相和B相信号通过STM32的定时器输入捕获引脚接入到单片机中。这两个信号是相位差90度的正交信号,通常由光电编码器产生。

然后,STM32的定时器模块通过输入捕获功能对这两个信号进行采样。当A相和B相的信号发生变化时,定时器会捕获到这个变化并记录下当前的时间戳。

接下来,通过计算两个时间戳之间的差值,可以得到编码器的旋转速度。具体来说,如果A相和B相的信号变化越快,说明编码器的转速越快。

另外,通过比较A相和B相信号的先后顺序,可以判断编码器的旋转方向。例如,如果A相信号先于B相信号变化,说明编码器正转;反之,如果B相信号先于A相信号变化,说明编码器反转。

注意:定时器的通道1和2支持编码器功能,通道3和4不支持编码器功能

编码器的关键参数:

分辨率PPR:编码器可以测量的最小距离

精度:实际输出与测量值之间的误差

最大响应频率PPS:编码器每秒输出的最大脉冲数目

最大转速:编码器机械系统能承受的最大转速

函数:

冒泡排序在电机速度采样滤波中的作用原理主要表现在以下几个方面:

数据排序:冒泡排序可以对采集到的电机速度数据进行排序,将原始数据按照从小到大的顺序排列。这种排序操作可以使得速度数据从低到高逐渐增加,便于后续的处理和比较。

数据比较:冒泡排序算法的核心思想是比较相邻元素的大小,并进行交换位置。在电机速度采样滤波中,通过冒泡排序算法的比较过程,可以发现相邻数据之间的差异,从而检测到异常的突变数据。这些突变数据可能由于电机负载突变、干扰信号等原因产生,通过比较相邻数据可以有效地排除这些异常值。

数据去噪:通过冒泡排序的比较过程,可以识别出异常的突变数据,并将它们排除在最终的速度数据之外。这种去噪处理可以有效减少噪声干扰对电机速度测量的影响,提高测量结果的准确性和稳定性。

数据平滑:在经过冒泡排序的数据处理后,可以进一步对这些数据进行平滑处理,如滑动平均滤波等。平滑处理可以有效去除随机波动和偶然误差,使得最终的速度数据更加平滑和稳定。

一阶低通滤波在电机速度采样滤波中的作用原理主要是通过一阶线性系统对输入信号进行滤波处理,以抑制高频噪声并平滑输出信号。一阶低通滤波器通常由一个电阻和一个电容组成,形成一个RC电路。当输入信号加在一阶低通滤波器的输入端时,信号中的高频成分将被电容阻隔,而低频成分将通过电阻传递到输出端。因此,一阶低通滤波器能够有效地抑制高频噪声,保留低频信号。在电机速度采样滤波中,一阶低通滤波器的作用是将采集到的速度信号中的高频噪声成分滤除,保留低频变化成分。这种滤波处理能够减小电机速度测量中的随机噪声和突变干扰,提高测量结果的稳定性和准确性。

一阶低通滤波器的传递函数具有形式为(H(s) = \frac{1}{RCs + 1})的极点和零点。随着频率的增加,传递函数的幅度逐渐减小,并在截止频率处为0。因此,一阶低通滤波器在高频段具有衰减特性,能够有效地抑制噪声干扰。在实际应用中,需要根据具体需求选择合适的一阶低通滤波器参数,如电阻和电容值。此外,为了更好地适应不同场景下的速度采样滤波需求,还可以采用可调整参数的一阶低通滤波器设计,根据实际情况进行动态调整。

PID中:I越大消除静态误差的时间越短使尽快达到预期效果,但是过大导致超调或振荡(尤其针对惯性较大的系统),微分D过大会引入高频噪声,微分系数对系统的影响较小,一般调节重点在PI两个参数。

位置式PID和增量式PID是两种不同的PID控制算法,它们之间的主要区别在于对过去误差的累计和当前误差的计算方式。

位置式PID:位置式PID控制算法是一种非递推式算法,它根据整个过去的状态来计算控制输出。这意味着它会将误差的累加值用于控制输出,这使得位置式PID具有较大的累积误差。此外,每次输出都与过去的所有状态有关,导致计算量大,这可能会对执行机构产生较大的影响。位置式PID存在积分饱和问题:如果长时间无法达到目标,此时累积误差会变得很大导致系统响应很慢

增量式PID:增量式PID控制算法是一种递推算法,它只与当前拍和前两拍的误差有关。因此,增量式PID的输出只与最近的误差变化有关,这使得其具有较小的累积误差。此外,增量式PID输出的是控制量的增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等。

PID的三环控制:速度环,位置环,电流环

位置环:通过编码器当前的计数值反应电机的位置,表现出来的现象是电机转几周仍然会回到指定的位置。

双环控制中外环控制是最重要的考虑对象,内环控制用于对控制进行优化。

双环控制有效避免了对一个参数调整时另外一个参数的变化对系统的影响,表现为超调现象。

位置外环+速度内环能够很好的解决只有位置环时候的超调现象。在双环控制参数调节过程中一定注意外环PID的系数不要调节过大,尽量去调节内环。

在PID三环控制中,电流环控制对直流有刷电机具有以下意义:

提高控制精度:电流环作为最内环,能够快速响应电机的电流变化,减小电机电流的波动,从而提高控制精度。改善动态性能:通过电流环控制,可以快速地调节电机的输入电流,使其快速跟踪设定值,从而改善动态性能。增强稳定性:通过电流环控制,可以减小电机电流的波动,提高系统的稳定性。保护电机和控制系统:电流环控制可以限制电机的输入电流,防止过电流导致电机和控制系统损坏。

在PID三环控制中,位置环控制对直流有刷电机的意义主要在于实现精准的位置控制。

通过位置环控制,可以精确地控制电机的位置,使其达到设定的目标位置。位置环控制能够快速响应电机的位置变化,减小位置误差,提高控制精度和系统的稳定性。同时,位置环控制还可以通过调节电机的输入电压或电流,控制电机的速度和加速度,实现更加平滑和精确的运动控制。

闭环死区:即使PID控制器试图精确控制电机的速度,电机的实际旋转速度可能也不会精确地等于PID控制器期望的旋转速度。这可能会导致系统在目标位置附近来回振荡,或者根本就无法达到目标位置。

PID调试过程中的积分饱和问题是指,当系统存在一个方向的偏差时,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构达到极限位置。如果控制器输出继续增大,执行器开度无法再增大,此时计算机输出控制量超出了正常运行范围而进入饱和区。一旦系统出现反向偏差,输出逐渐从饱和区退出。进入饱和区越深则退出饱和区时间越长。在此段时间里,执行机构 仍然停留在极限位置而不随偏差反向而立即做出相应的改变,这时系统就像失控一样,造成控制性能恶化。这种现象称为积分饱和现象或积分失控现象。

所需的硬件资源:

3)定时器1、3、6

TIM1正常输出通道 PA8

TIM1互补输出通道 PB13

TIM3 编码器A相输入通道 PC6

TIM3 编码器B相输入通道 PC7

4)ADC

ADC1通道8 PB0(电流)

5)SD(刹车)信号输出 PF10

6)串口1

USART1_TX PB6(发送)

USART1_RX PB7(接收)

舵机:

舵机的5V供电与其他模块的隔开,舵机容易烧板子。下图为舵机信号线的改装形式(可以支持较大功率的舵机):SERVO2=1的时候三极管导通此时舵机信号线为GND状态;SERVO2=0的时候三极管截止此时舵机信号线为SRV+状态。

PWM的两个模式:(舵机采用PWM2,高电平有效,向上计数)

如果舵机没反应,用示波器查看脉冲周期是否为20ms,且高电平时间在0.5到25ms之间变化

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

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

相关文章

C语言之分支与循环【附6个练习】

文章目录 前言一、什么是语句?1.1 表达式语句1.2 函数调用语句1.3 控制语句1.4 复合语句1.5 空语句 二、分支语句(选择结构)2.1 if语句2.1.1 悬空else2.1.2 练习(1. 判断一个数是否为奇数 2. 输出1-100之间的奇数) 2.2…

deepfacelive实时换脸教程(2024最新版)

deepfacelive其实操作用法很简单,难的是模型的制作。本帖主要讲deepfacelive(下文简称dflive)软件本身的操作,以及模型怎么从dfl转格式过来,至于模型如何训练才能效果好,请移步教程区,看deepfac…

51单片机中TCON, IE, PCON等寄存器的剖析

在单片机中,如何快速通过名字记忆IQ寄存器中每一个控制位的作用呢? IE(interrupt enable)寄存器中,都是中断的使能位置。 其中的EA(enable all)是总使能位,ES(enable serial)是串口…

构建安全的SSH服务体系

某公司的电子商务站点由专门的网站管理员进行配置和维护,并需要随时从Internet进行远程管理,考虑到易用性和灵活性,在Web服务器上启用OpenSSH服务,同时基于安全性考虑,需要对 SSH登录进行严格的控制,如图10…

WorkQueue模型

WorkQueues,也被称为任务队列模型。当消息处理比较耗时的时候,可能生产消息的速度会远远大于消息的消费速度。长此以往,消息就会堆积越来越多,无法及时的处理。此时就可以使用work模型:让多个消费者绑定到一个队列&…

gem5学习(8):创建一个简单的缓存对象--Creating a simple cache object

目录 一、SimpleCache SimObject 二、Implementing the SimpleCache 1、getSlavePort() 2、handleRequest() 3、AccessEvent() 4、accessTiming() (1)缓存命中:sendResponse() (2)缓存未命中: 三、…

matlab概率论例子

高斯概率模型: [f,xi] ksdensity(x): returns a probability density estimate, f, for the sample in the vector x. The estimate is based on a normal kernel function, and is evaluated at 100 equally spaced points, xi, that cover the range of the da…

Mybatis行为配置之Ⅰ—缓存

专栏精选 引入Mybatis Mybatis的快速入门 Mybatis的增删改查扩展功能说明 mapper映射的参数和结果 Mybatis复杂类型的结果映射 Mybatis基于注解的结果映射 Mybatis枚举类型处理和类型处理器 再谈动态SQL Mybatis配置入门 Mybatis行为配置之Ⅰ—缓存 Mybatis行为配置…

读书笔记1-C++ Primer Plus

C是在C语言基础上开发的一种集面向对象编程(OOP)、通用编程和传统的过程化编程于一体的编程语言。本书是根据2003年的ISO/ANSI C标准编写的,通过大量短小精悍的程序详细而全面地阐述了C的基本概念和技术。 全书分17章和10个附录,分…

使用WAZUH检测LD_PRELAOD劫持、SQL注入、主动响应防御

目录 1、检查后门 使用工具检测后门 1.chkrootkit 2.rkhunter 手动检查文件 检查ld.so.preload文件 2、检测LD_PRELOAD ubuntu配置 wazuh配置 3、检测SQL注入 ubuntu配置 攻击模拟 4、主动响应 wauzh的安装以及设置代理可以参考本篇:WAZUH的安装、设置…

Apache Flink连载(二十三):Flink HA - Flink基于Yarn HA

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. Yarn HA配置 ​​​​…

Cache替换算法

由于Cache很小,主存很大,Cache很容易装满,Cache满了怎么办? ——采用替换算法。 全相联映射:Cache完全满了才需要替换,需要在全局中选择替换哪一块。直接映射:如果对应位置非空,则…

linux线程与进程

简要 在Linux系统中,进程(Process)和线程(Thread)是操作系统中两个重要的概念,它们都是用于执行程序的执行单元,但有一些关键的区别。 在Linux系统中,可以使用fork系统调用创建新…

Vue3-30-路由-嵌套路由的基本使用

什么是嵌套路由 嵌套路由 &#xff1a;就是一个组件内部还希望展示其他的组件&#xff0c;使用嵌套的方式实现页面组件的渲染。 就像 根组件 通过路由渲染 普通组件一样&#xff0c;嵌套路由也是一样的道理。 嵌套路由的相关关键配置 1、<router-view> 标签 声明 被嵌套组…

在 Spring 中操作 Redis

&#x1f9f8;欢迎来到dream_ready的博客&#xff0c;&#x1f4dc;相信您对博主首页也很感兴趣o (ˉ▽ˉ&#xff1b;) &#x1f4dc;redis和缓存及相关问题和解决办法 什么是缓存预热、缓存穿透、缓存雪崩、缓存击穿 目录 1、引入依赖 2、对 Redis 的配置文件进行书写 3、S…

kivy PageLayout 的说明及例子

PageLayout 是 Kivy GUI 框架中的一个布局管理器&#xff0c;它允许开发者在同一个窗口中放置多个页面&#xff0c;用户可以通过滑动来浏览这些页面。PageLayout 的工作方式类似于一个可以滑动的标签页&#xff08;TabbedPanel&#xff09;&#xff0c;但其页面可以自由调整大小…

Linux常用命令大全总结及讲解(超详细版)

前言&#xff1a; Linux 是一个基于Linux 内核的开源类Unix 操作系统&#xff0c;Linus Torvalds于 1991 年 9 月 17 日首次发布的操作系统内核。Linux 通常打包为Linux 发行版。 Linux 最初是为基于Intel x86架构的个人计算机开发的&#xff0c;但此后被移植到的平台比任何其…

K8S 中对 Windows 节点的利用

目录 漏洞概述 漏洞详情 ​编辑 漏洞验证 补丁分析 在集群中探索 参考资料 在许多组织中&#xff0c;所运行的很大一部分服务和应用是 Windows 应用。Windows 容器提供了一种封装进程和包依赖项的方式&#xff0c;从而简化了 DevOps 实践&#xff0c;令 Windows 应用程序…

【xdma】 pcie.bar设置

FPGA优质开源项目– PCIE通信 xdma 两者保持一致 FPGA开源项目 – PCIE I/O控制卡 xdma PCIe的XDMA应用 读写部分分为两种&#xff0c;一种是数据的读写&#xff0c;另一种是配置数据的读写&#xff0c;在数据读写部分&#xff0c;DMA通过MIG控制DDR完成数据读写。配置数据…

使用 Tkinter 制作一个进制转换工具,好用!

在平时工作学习当中&#xff0c;我们经常会编写一些简单的 Python GUI 工具&#xff0c;以此来完成各种各样的自动化任务&#xff0c;比如批量处理文件&#xff0c;批量处理图片等等。当我们进行这些工具的编写之时&#xff0c;往往只关注了功能的实现&#xff0c;而忽略了页面…