**

基于STM32控制的旋转倒立摆

**

文章目录

    • 基于STM32控制的旋转倒立摆
  • 前言
  • 一、旋转倒立摆的结构
    • 1.相对编码器与绝对编码器
    • 2.相对编码器与绝对编码器的信号采集
    • 3.STM32编码器模式
    • 4.使用STM32CubeMx配置过程
  • 二、倒立摆模型建立
  • 三、实验方案与实验现象
    • 1.整体方案
    • 2.实验现象与上位机数据
  • 反思与总结

前言

近期在学习简易旋转倒立摆装置,倒立摆其实是一个十分经典的自动控制模型,不过开始学习了解结构和原理还是花了很多时间,在思路以及调试过程中遇到了很多困难。
我认为倒立摆有两个难点,一个是自动起摆一个是机械结构,其中自动起摆涉及到PID算法与运动方程的求解,而机械结构主要是尽量减小转动阻尼同时避免旋转时线的缠绕。我买了平衡小车家的机械结构套件,他们为了避免线缠绕使用了导线环,这是一个好东西,可以完美解决导线缠绕问题。主要想讲一下我做的整个过程以及反思总结。


一、旋转倒立摆的结构


整个机械结构主要是三个部分用于带动整个结构运动的电机,一个测量主动摆位置的编码器,以及一个测量摆杆位置的编码器。查阅资料后发现两者是有区别的,一个是相对编码器(测量主动摆位置),一个是绝对编码器(测量随动摆位置的),下面会主要介绍什么是增量式编码器与绝对编码器。

1.相对编码器与绝对编码器

增量式编码器:增量式旋转编码器在电机旋转时输出脉冲。 要使用增量编码器确定轴
位置, 必须知道起始位置并使用外部电路来计算输出脉冲数。
绝对编码器:绝对旋转编码器输出对应于旋转角度的数字代码。 无需计算脉冲就能了解电机轴的位置。 只需要读取编码器的数字输出。
增量式编码器的特点:增量式编码器非常适合测速度,可无限累加测量。但是存在零点累计误差,抗干扰较差,接收设备的停机需断电记忆,开机应找零或参考位等问题。增量式编码器只输出设备的位置变化和运动方向,不会输出设备的绝对位置。
绝对编码器的特点:角位移传感器为单圈绝对值编码器,由机械位置决定的每个位置是唯一的(每个位置的高低电平不同),不需要找参考点,抗干扰性较强,一般用来测量位置位移。
简单来说增量编码器就是通过是输出脉冲让后让单片机计数脉冲数来算速度,绝对编码器就是直接输出角度变化的数字量。而我使用的是增量式编码器中的增量式霍尔编码器。霍尔编码器是一种通过磁电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。霍尔编码器是由霍尔码盘和霍尔元件组成。霍尔码盘是在一 定直径的圆板上等分地布置有不同的磁极。霍尔码盘与电动机同轴,电动机旋转时,霍尔元件检测输出若干脉冲信号,为判断转向,一般输出两组存在一定相位差的方波信号。

2.相对编码器与绝对编码器的信号采集

知道了两种编码器的工作方式就能清楚地知道如何去使用了,其中增量式霍尔编码器通过计算编码器产生的脉冲个数从而获取运动方向和速度。绝对编码器其实核心是一个电位器,它的阻值会随着旋转角度不同而不同。 这里使用的是STM32的编码器模式获取增量式霍尔编码器的信号。绝对编码器主要是使用单片机的AD采样功能获取它的信号。

3.STM32编码器模式

在STM32中,编码器使用的是定时器接口,通过数据手册可知,定时器1,2,3,4,5和8有编码器的功能,而其他没有。编码器输入信号TI1,TI2经过输入滤波,边沿检测产生TI1FP1,TI2FP2接到编码器模块,通过配置编码器的工作模式,即可以对编码器进行正向/反向计数。

STM32编码器有三种工作模式,其中模式三即为上文中提到的四倍频模式。

4.使用STM32CubeMx配置过程

(1) 首先打开timer3的encoder模式:

(2) 下面才是重点,配置具体定时器的参数:

选择的encoderMode是 TI1和TI2模式。这种模式下,AB两相的上升沿和下降沿都会计数,所以计数值是实际值的4倍,需要做分频。还有个地方需要解释一下,我刚开始的时候就是把这里的设置没搞清楚,看Polarity参数设置的是Rising Edge。这个参数的意思是在检测到上升沿的时候就触发encoder捕获AB相的值,而并不是这里设置的是上升沿就只检测AB相的上升沿,下降沿还是同样会计数的。Input Filter滤波值是从1-15,看情况设定,是用来滤除一些杂波的。
(3) 生成代码这样基本就配置好了,生成mdk工程。然后就是添加应用代码了。在初始化中添加打开定时器的encoder模式:

HAL_TIM_Encoder_Start(&htim3, TIM_CHANNEL_ALL);

然后定期调用下面这一句函数就可以获取到encoder编码器的计数值:

enc1 = (uint32_t)(__HAL_TIM_GET_COUNTER(&htim3));//获取定时器的值

二、倒立摆模型建立

通过牛顿力学公式,在较为理想的情况下(无摩擦,主动摆、随动摆都是质量均匀的刚体)对倒立摆系统进行建模。



可以发现倒立摆系统在右半平面存在极点,它是一个不稳定的系统,同时它也是一个非线性系统。

三、实验方案与实验现象

1.整体方案

倒立摆是一种非线性、不稳定系统,而PID控制对于线性系统控制效果较好,对于倒立摆系统的建模是通过将目标值附近进行线性化得到的传递函数模型,进而通过PID控制将系统调控的稳定。对于初始位置离目标值较远,近似线性化模型已经不太吻合,PID就达不到很好的控制效果。所以起始阶段选用能量控制,让倒立摆运动到适合PID控制的位置。

关于能量控制:

摆杆的能量其实是一个系数可以改变的积分,所以给定了能量控制策略
摆杆一共有a>0,

旋转倒立摆的起摆与稳摆---QYC相关推荐

  1. ug产品摆正高级技巧_UG NX如何摆正产品零件模型

    原标题:UG NX如何摆正产品零件模型 有时,我们拿到一个产品模型,按F8也是一个歪的视图,如图: 那么该如何才能将产品摆正呢?其实很简单,我们只需要移动下就好了,按ctrl+t移动对象,选中模型,变 ...

  2. 心形图案怎么摆_心形照片墙怎么摆最好看

    家里有多余的照片怎么办呢,收纳起来的话就起不到观赏,因为最好的方式就是将它做成照片墙,放在墙面上既能欣赏,又能起到装饰的作用,但是很多人关于照片墙怎么摆放不是很清楚,那么下面我们就为大家介绍一下心形照 ...

  3. 心形图案怎么摆_心形照片墙怎么摆

    在家庭装修中,心形照片墙效果图不单能使家更加具有艺术气息,并且还能也营造出了不一样的家居装饰效果.照片墙属于工程量小,可美观效果又十分强的设计,下面小编就来介绍下心形照片墙怎么做,以供大家参考! 一. ...

  4. matlab分析摆臂受力,一种消除摆臂球头受力测量误差的方法与流程

    本发明涉及汽车测试技术领域,尤其涉及一种消除摆臂球头受力测量误差的方法. 背景技术: 摆臂球头是汽车悬架系统中连接摆臂与转向节的一个构件,其在汽车行驶过程中主要承受纵向力和侧向力.在进行摆臂球头的结构 ...

  5. python画一个心形照片墙怎么摆_心形照片墙怎么摆

    在家庭装修中,心形照片墙效果图不单能使家更加具有艺术气息,并且还能也营造出了不一样的家居装饰效果.照片墙属于工程量小,可美观效果又十分强的设计,下面小编就来介绍下心形照片墙怎么做,以供大家参考! 一. ...

  6. 在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,用Python编写程序,问有多少种摆法?并列举出所有摆法。

    可以扩展问题以使用NxN大小的板来解决难题. 代码 '''N Queens problem'''from functools import reduce from itertools import c ...

  7. 【基于Simulink+UG NX MCD 一级倒立摆控制系统仿真】建模和分析(一)

    前言 倒立摆是比较典型的系统,可以看出火箭发射的简化模型,国内外学者常常通过在倒立摆上开发和测试控制算法. 对倒立摆的控制分为两大任务: 起摆 稳摆 所以本文想通过此项目对自动控制原理进行一个复习与学 ...

  8. MATLAB中SSQJ,基于lqr的一级倒立摆仿真研究

    基于lqr的一级倒立摆仿真研究 综合性实验设计题目:直线一级倒立摆班级:0802姓名:郭长春指导老师:张白莉学号:200807211065摘要倒立摆是一个复杂的多变量强祸合不稳定非线性的系统,借助于这 ...

  9. 直线型一阶倒立摆4---能量起摆

    五.能量起摆 能量起摆这一概念来自于K.J.Astrom and K.Furuta的SWINGING UP A PENDULUM BY ENERGY CONTROL.文献下载地址 以下是我翻译的部分论 ...

  10. 基于树莓派的电机倒立摆控制系统开发

    目录(注:完整论文和代码私聊QQ2522170001) 第1章绪论 1.1背景和意义 1.1.1 背景 1.1.2 意义 1.2 国内外研究现状 第二章 倒立摆设计方案 2.1 倒立摆系统建模 2.2 ...

最新文章

  1. STL模拟实现1.0 -- list和iterator模拟实现和简单分析
  2. 诗歌rails之 method_missing
  3. 【Linux】39.nslookup查看域名与其对应的ip
  4. Lesson 02:变量、数据类型
  5. Android中实现SQLite数据库CRUD操作的两种方式
  6. 奇怪的匿名函数之争EventHandler
  7. GDB 调试 .NET 程序实录 - .NET 调用 .so 出现问题怎么解决
  8. linux满负荷运行tail,linux内核tcp调优规范与方案
  9. 下拉样式_Axure 组件重写之神奇的文本框和下拉框
  10. 昨天发生的四件大事!
  11. mat格式数据集转换为arff与txt格式
  12. java语言的继承性_基于java中子类的继承性的应用介绍
  13. 理解两个函数乘积的导数的一种视角
  14. R,L,C,t物理量之间的量纲关系
  15. thinkadmin中日期的使用
  16. 【小学生打字练习软件】_在线网上打字比赛软件系统
  17. 微信用户提现功能 显示NO_AUTH | 产品权限验证失败,请查看您当前是否具有该产品的权限(企业付款到零钱 银行卡)
  18. 【Pandas 数据分析 2】数据结构
  19. Python求正负交错序列前N项和
  20. 显示你个性的鼠标指针(转)

热门文章

  1. 台式计算机颜色如何矫正,台式机怎么颜色校正操作教程
  2. android vue 编辑器,vue vlog下载 vue vlog(视频制作软件) for Android v3.16.3 安卓版 下载-脚本之家...
  3. 双系统linux引导修复
  4. 魔方Newlife.Cube权限系统的使用及模版覆盖详解
  5. Visual Studio助手VAssistx各版本破解教程
  6. 极光 android,android 极光IM集成
  7. wsdl2java 工具_apache CXF wsdl2java工具的使用
  8. 尚硅谷大数据开发Day03
  9. MAC安装淘宝镜像NPM
  10. 黑苹果 惠普笔记本电池补丁_黑苹果笔记本:关于DSDT亮度表的分析与修改