网站首页 联系我们 电话 0510-88265582 88265580
导航
贝博艾弗森体育官网入口本着“质量,服务至上,服务至上,诚实守信”的宗旨

基于STM32的自平衡机器人设计

发布时间: 2024-04-23 15:38:06

作者: 贝搏体育app官网下载

  将机器人整体开源,同时总结一下机器人搭建过程中遇到的坑和未来的改进方向。在分享的文件里包含了结构设计、程序控制、电路设计以及其他模块有关的资料供大家参考。

  如图所示,该机器人根据陀螺仪的位姿数据,通过三个全向轮驱动底部球体调整自己在球上的位置,保持动态平衡的同时实现全向移动。

  保持动态平衡过程需要对机器人进行运动学分析,这里参考了平衡小车之家的运动学方程:

  自平衡控制问题转化为三步:输入X、Y角度—控制器计算—输出A、B、C电机转速的控制模型。

  首先考虑参考平衡车控制,球上自平衡机器人本质上依然是一个一阶倒立摆问题。

  这里参考了飞思卡尔直立车的操控方法,采用串级PID控制器,外环PD角度环,内环速度PI环。

  由于我的驱动方案选择的是42步进电机,在速度闭环的时候有些问题。正常的直流电机+编码器的控制方案能够最终靠编码器将轮子的真实速度计算出来,从而和控制器的理想转速作差,实现速度控制。

  而我这里的速度闭环是通过计算上一个时钟周期时给步进电机的控制量,通过运动学方程分解,得到机器人的虚拟速度,与理想转速作差控制。我认为这种速度闭环方式还是存在一定缺陷的,但是在网上查看论文的时候我发现有很多自平衡机器人都是用42步进电机来实现速度闭环的,不知道是什么方法。

  这里还能好好思考一下为什么角度环要用PD控制,速度环要PI控制,角度环的P部分和D部分对机器人控制有什么影响?在很多CSDN调试平衡车的博客中都有解释,这里就留给大家思考了。

  用到的模块大致如上所示,C8T6的价格随着最近芯片涨价直线上升,我白嫖了实验室的两块板子,现在买一块实在太贵,可以等芯片价格稳定一些再买。其余开关排针等常见元件不再赘述。

  机器人使用solidworks设计整体结构,底板可在某宝定制6050太空铝切割,蓝色件为正常3D打印件。

  控制程序采用定时器0.5ms定时中断的方式来进行计算,每触发两次中断计算对电机控制一次,这里还是推荐大家采用外部中断读取GY-521上的INT引脚的方式,控制计算周期。GY-521上的INT引脚每5ms触发一次跳变,采用外部中断的方式能严格保证读取位姿数据与计算处理同步。

  对于电机控制,由于采用的驱动方案是步进电机,调速的方式是改变驱动步进电机的脉冲频率。我这里选择了三个定时器,动态调节定时器的频率,具体方式是在初始化时设定好定时器的预分频系数psc的值,然后在程序里动态更改ARR寄存器的值,从而改变定时器的定时频率。

  球上自平衡机器人能作为算法试验平台, 输入输出固定,更换不同控制器,将数据导入MATLAB做多元化的分析即可比较控制器性能。

  个人认为结构有两个改进方向,一方面参考以下论文:余义. 单球驱动自平衡机器人位姿解算与控制管理系统研究[D].武汉科技大学,2019。论文中采用的四足式驱动结构更加有助于机器人自平衡控制。

  另一方面能增加球体和机器人固定装置,利用机械结构将机器人与底部驱动球结合成一个整体防止机器人跳轮等问题。同时驱动球对于机器人平衡的影响较大,最好还是定制空心钢球,然后喷漆增大摩擦力,最有利于机器人自平衡控制。

  控制部分的改进,首先是控制原理,本文是针对建立好的运动学方程做多元化的分析,通过串级PID算法来实现自平衡运动。该机器人的控制问题本质上是一阶倒立摆问题,能够使用动力学建模的方式,通过动力学分析算出平衡需要的虚拟力矩,再对电机进行力矩控制。

  其次是控制器,PID控制算法应用广泛但也有一定的缺点,可优先考虑采用模糊PID,ADRC自抗扰控制器,强化学习等智能控制算法对机器人自平衡进行控制。

  环境:STM32F103RC,主频 72MHz(外部晶振)或64MHz(HSI) 两块DAC8760菊花链链接,采用SPI1驱动 note:发生电流回路开路等时,ALARM脚持续低,当电流回路等正常,DAC芯片能自动回到正常状态,故程序无需特殊处理。 代码实现: //DAC8760.c #define DAC8760_GLOBALS #include DAC8760.h static const uint8_t ORange = { 0, // 0~5V(OFF) 0, // 1~5V 1, // 0~10V 3, // -10~10V 6, // 0~20mA 5, //

  EEPROM 是一种掉电后数据不丢失的存储器,常用来存储一些配置信息,以便系统重新上电的时候加载之。EEPOM 芯片最常用的通讯方式是I2C 协议,本小节以EEPROM的读写实验为我们讲述解答STM32 的I2C 使用方法。实验中STM32 的I2C 外设采用主模式,分别用作主发送器和主接收器,通过查询事件的方式来确保正常通讯。 硬件设计 EEPROM 硬件连接图 本实验板中的EEPROM芯片(型号:AT24C02)的SCL 及SDA 引脚连接到了STM32 对应的I2C 引脚中,结合上拉电阻,构成了I2C 通讯总线C 总线交互。EEPROM芯片的设备地址一共有7 位,其中高4 位固定为:1010 b,低3

  1、首先需要设置keil ! (、添加头文件 3、在代码中增加两段代码 增加第一段代码: #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PR

  STM32有2个看门狗:独立看门狗和窗口看门狗。 独立看门狗IWDG:独立于系统之外,因为有独立时钟,所以不受系统影响的系统故障探测器,大多数都用在监视硬件错误。 窗口看门狗WWDG:系统内部的故障探测器,时钟与系统相同。如果系统时钟不走了,这个狗也就失去了作用了,大多数都用在监视软件错误。 简单的讲,看门狗就是检测系统故障的,如果因为系统故障而没有及时喂狗,则引发复位重启。 对于一般的独立看门狗,程序能在它产生复位前的任意时刻刷新看门狗,但是这样有一个隐患,有可能程序跑乱了又跑回正常的地方,或者跑乱的程序正好执行了刷新看门作,这样的情况下一按的看门狗就检测不出来故障了;但是如果使用窗口看门狗,程序员能够准确的通过程序正常执行

  看门狗WWDG和IWDG的区别是什么 /

  相当部分的 STM32芯片都带USB模块,有时我们会考虑利用STM32芯片的USB模块进行程序代码的下载或升级。USB协议中有专门针对设备固件升级的类协议,即能够最终靠DFU类协议进行产品固件的加载或更新。 关于STM32产品的DFU程序下载和升级,ST官方有相关的资料文档。可以去 或者去 搜索DFUse下载有关的资料。 有个用户手册UM0412详细的介绍了如何利用ST官方软件工具DfuSe进行有关编程操作。顺便提醒下,下载DfuSe安装包解压运行DfuSe_Demo_Vxx_Setup.exe之后,还不算安装好,还得安装针对DfuSe的WINDOWS环境下的

  概述 工具: PC W5500EVB Net-SNMP软件包编译环境:Keil4 &IAR功能:利用互联网管理协议SNMP及基本的控制命令实现简单的LED控制 一、W5500简介 韩国WIZnet公司生产的以太网控制芯片W5500整合了五层结构中的前四层,即物理层、数据链路层、网络层和传输层,并在内部利用硬件实现了TCP/IP协议栈。开发者无需专业的网络知识,使用W5500如同控制外部存储器一样简单,为用户更好的提供了最简单的网络接入方法。全硬件TCP/IP协议栈完全独立于主控芯片,能够更好的降低主芯片负载且无需移植繁琐的TCP/IP协议栈,便于产品实现网络化更新。以太网控制芯片W5500具有以下特点: 1、W5500支持硬件TCP/IP

  OpenBLT 简介 OpenBLT是一种开源引导加载程序,可以在任何微控制器上运行并用任何类型的通信接口来执行软件更新,而无需专用的调试器硬件。 官网介绍页: 源码下载页: 关于STM32的IAP、ISP、BootLoader相关的内容见往期笔记: 《STM32串口IAP分享》 《STM32的ISP下载的原理是什么呢?》 OpenBLT实践 下载源码,得到: 我们拿个ARMCM0_STM32G0_Nu

  OpenBLT Bootloader的使用分享 /

  前段时间在设计NB-IOT模块与STM32的硬件通讯时用到了电平转换。当主控芯片引脚电平与外部连接器件电平不匹配的时候就需要用电平转换电路来进行转换。这几乎是每一个电子工程师都会遇到的一个问题。今天我就总结一下几种常用的电平转换方案,希望对大家起到一定的帮助。 1.使用电平转换芯片 这可能是所有方案里面最稳定可靠省事的了,给转换芯片两侧供需要转换的两个电源,然后在芯片的输入输出接上需要转换的输入输出信号就OK了,所有转换部分都由芯片内部完成。下图为德州仪器的TXB0108双向电平转换器。 TXB0108 这种方案的优点很多,上面的这款转换器在VccA供电电压2.5V以上的时候最高能够达到100Mbps,速度很快。除此之外还有驱

  启动文件浅析

  PID控制C语言实现位置 增量型抗积分饱和积分分离 变积分

  兴)

  嵌入式工程师AI挑战营(初阶):基于RV1106,动手部署手写数字识别落地

  有奖直播 瑞萨新一代视觉 AI MPU 处理器 RZ/V2H:高算力、低功耗、实时控制

  【下载】LAT1396 STM32CubeIDE实用技巧之STM32H7双核调试的配置

  【下载】LAT1343 STM32H5 USBD Classic驱动 CDC移植

  【下载】LAT1392 LTDC RGB接口 LCD的TouchGFX工程的移植步骤

  【直播】4月11日,STM32Trust如何帮助新产品设计提升信息安全保护能力

  【线日,基于Buildroot制作STM32MP13启动镜像-深圳/厦门/西安/郑州/苏州

  【新品】STM32U0新一代超低功耗入门级MCU,助力终端产品省电,安全,BOM成本低

  【新品】 STM32H7R/S基于Cortex-M7,运行频率高达600 MHz,板载闪存型MCU 拥有高速的外部存储

  【新品】STM32WBA54/55 支持BLE5.4、IEEE 802.15.4通信协议、Zigbee®、Thread和Matter协议

  【新品】STM32MP2 最高配备双核Arm® Cortex®-A35和Cortex®-M33的STM32MP2系列微处理器

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  ST(意法半导体)近日推出了全新的STM32U0微控制器,这款基于Cortex-M0+内核的产品,可以在带有实时时钟(RTC)的待机模式下,实现仅为160n ...

  1 DMA概述直接存储器访问 (DMA) :用于在外设与存储器之间以及存储器与存储器之间进行高速数据传输。DMA传输过程的初始化和启动由CPU完 ...

  在FreeRTOS中,队列是实现任务之间同步、互斥和通信的一种重要方法(其他的实现方法有:任务通知、事件组、信号量、互斥量)。任何任务都可 ...

  01前言本文是上文 《STM32H5 DA 之初体验(带 TrustZone)》的后续之作。倘若你还没有阅读此文,那么建议你先阅读下,然后再回过头来阅读 ...

  从51开始,单片机玩了很久了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但始终没开始,原因-----不知道玩了ARM可以做什么(对 ...

  Inova Semiconductors 推出用于汽车ISELED照明和传感器网络的新型混合信号收发器

  美光全系列车规级解决方案已通过高通汽车平台验证, 助力 AI 智能汽车

  Gartner预测到2027年,80%因成本原因而采用数据与分析云服务的企业将没办法实现预期投资回报

  米尔i.MX93核心板上市!MPU+MCU+NPU三芯一体,创新LGA设计

  Meta 向第三方硬件制造商开放其 MR 操作系统,华硕、联想将推相关产品

  ADI有奖直播:基准电压源产品技术及应用选择 7月25日上午10:00-11:30 不容错过~

  综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云:



上一篇:电阻-晶体管耦合逻辑电路图分析 下一篇:【48812】轿车小常识(皮带)_1

网站地图:贝博平台体育app官网

cache
Processed in 0.005542 Second.