产品展示 | 联系我们 您好,欢迎访问博亿堂byt98网址登陆/博亿堂平台怎么样-博亿堂娱乐直播下载,我们将竭诚为您服务!
20年专注设备技术研发 专注技术 专心质量 专业服务
全国咨询热线:13528138066
您的位置: 首页 > 产品展示 > 直流电机
直流电机

基于STM32和MPU-6050的两轮自平衡小车系统模块设计与实现

时间:2024-03-15 05:39:43 来源:博亿堂byt98网址登陆 点击:1次

  两轮自平衡小车系统类似于倒立摆系统,具有多变量、非线性、强耦合等特点,是研究各种操控方法的理想平台。两轮自平衡小车系统的控制过程是微控制器对姿态检测传感器和编码器等采集的数据来进行分析处理,计算出使系统恢复平衡的实时控制量,从而驱动电机实现系统的动态平衡。

  针对小车系统的复杂性,本文提出了将卡尔曼滤波算法和双闭环PID控制算法相结合的方法,既利用卡尔曼滤波算法对MPU-6050传感器采集的倾斜角度和角速度数据来进行融合,得到小车平衡姿态的最优估计值,又利用以姿态信息、速度为反馈控制量构成双闭环PID控制算法,再结合采用高性能STM32F103C8T6作为主控制器,来提升两轮小车系统稳定性和抗干扰能力。

  系统的硬件电路结构框图如图1所示,其硬件电路主要由主控制器模块、姿态检测模块、直流电机驱动模块、编码器及电源模块等几部分构成。电源模块负责系统各个模块控制电路的电源。主控制器模块是系统的控制核心,用来接收传感器模块采集的数据,对数据来进行处理及运算,将控制信号输出给直流电机驱动模块。姿态检测模块实时地对小车角速度及角加速度进行采集。直流电机驱动模块负责将主控制器输出的PWM信号转换为控制信号驱动2个直流电机的转速和方向。编码器负责测量直流电机的速度和方向,将测量数据反馈给主控制器,从而形成闭环控制。

  本系统选用的直流电机工作电压为12V,因此采用三节3.7V可充电电池构成12V直流电源。但STM32主控制器和MPU-6050需要的是3.3V直流电源,因此选用LM2596SDC-DC降压模块得到3.3V电源。

  本系统选用意法半导体公司的STM32F103C8T6作为主控制器,该控制器是一种基于Cortex-M3内核的32bCPU,最高工作频率为72MHz,片上集成32~512kB的Flash存储器,6~64kB的SRAM存储器。片上集成了SPI,I2C和USART等通信接口,方便对MPU-6050姿态检测传感器的数据进行采集。含有7个定时器,可输出多路PWM信号使得电机驱动模块获得稳定的PWM波形。

  本系统中姿态检测模块选用的是美国InvenSense公司的MPU-6050,MPU-6050为全球首例整合性6轴运动处理器,整合了3轴陀螺仪和3轴加速度计,能够准确的对小车的姿态进行实时检测[4]。该处理器的角速度感测范围为±250、±500、±1000与±2000°/s,加速度感测范围为±2g、±4g、±8g与±16g,加速度感测范围可通过编程来控制[5]。MPU-6050可在不同电压下工作,VDD供电电压为(2.5±0.125)V、(3.0±0.15)V或(3.3±0.165)V,本系统中为MPU-6050提供的是3.3V直流电源。MPU-6050模块的电路如图2所示,本系统中MPU-6050作为从机使用,使用SDA和SCL端口和主机STM32进行通信,MPU-6050检测的数据经过内置的16位AD转换器进行转换,然后将16位数字量通过I2C总线接口发送给主机。

  本系统中直流电机驱动模块设计采用ST公司的L298N组成的双H桥电机驱动电路,其电路如图3所示。该模块具有驱动能力强,发热量低,抗干扰能力强等特点。可以同时驱动2台直流电机,当图3中的使能端ENA和ENB使能后,从IN1、IN2输入的PWM信号驱动电机1的转速和方向,从IN3、IN4输入的PWM信号驱动电机2的转速和方向。

  图3 直流电机驱动模块的电路2、系统的软件设计2.1、系统的总体流程设计

  本系统的主程序流程图如图4所示,主要由初始化程序、中断响应程序、传感器数据采集程序、卡尔曼滤波程序、车速及方向检测程序、PID控制程序、直流电机PWM控制程序等几部分组成。

  系统启动后,首先进行初始化,然后执行中断程序,判断5ms时间是否到,若时间到,则读取MPU6050传感器采集的角度和角速度的数据,然后利用卡尔曼滤波算法对读取的数据进行融合得到最优估计值。同样采用中断的方式读取编码器的脉冲数从而得到直流电机的转速以及方向。然后利用增量式PID控制算法分别对小车的角度和角速度、转速进行PID控制,调节PID参数即可改变PWM占空比,利用改变占空比的方法即可改变电机的速度,从而实现对电机速度和方向的控制。2.2、系统初始化程序

  系统初始化程序主要包括:系统时钟初始化、NVIC中断初始化、定时器外部中断初始化、通信(I2C)初始化、测速模块初始化、MPU-6050初始化和电机PWM初始化等。

  STM32的工作频率为72MHz或36MHz,本系统对时钟频率的要求很苛刻,如果频率过低,系统就会工作在不稳定状态下,系统产生的误差会变大,又因系统使用的滤波方式是卡尔曼滤波,因此在时钟初始化程序中需将时钟频率设置为72MHz。通信(I2C)初始化主要设置串口波特率为9600b/s,需设置中断允许标志位和模块的工作模式。

  陀螺仪动态性能较好,可以提供瞬间的动态角度变化,但存在输出信号有偏差或漂移,经过积分后形成逐渐增大的累积误差,不适合单独进行长时间的动态角度测量。加速度计静态性能较好,可以提供较为准确的静态角度值,但受重力加速度影响比较大,不适宜测量动态系统的角度值。由于自平衡小车系统需要在动静态情况下均能准确的测量出小车的倾角,因此需要对陀螺仪和加速度计的采集数据进行数据融合得到最优值。本系统采用卡尔曼滤波算法对陀螺仪和加速度计的数据进行融合。

  卡尔曼滤波算法是以最小均方误差为最佳估计准则的递归数据处理算法,利用前一时刻的估计值和当前时刻的测量值来更新对状态变量的估计,最终求出当前时刻的最优估计值。

  控制算法的编写是小车平衡控制的核心问题,也是软件编写和程序调试中的关键技术。本系统中采用了常用的增量式PID控制算法。PID控制的原理是根据系统的设定值和测量值之间的偏差,对偏差进行比例、积分、微分计算出控制量。系统采用双闭环PID控制算法对小车系统进行自平衡控制,其结构框图如图5所示。

  本小车系统使用的电机是小型12V直流电机,其转速是由施加给电机的电压大小来决定,转向是通过改变施加给电机电源的正负极性。电机驱动模块输出两路PWM信号,使用过程中通过给其中一路占空比为零,另外一路不为零来控制电机的正反转。

  程序下载后对小车系统各硬件模块部分分别进行测试,观察小车动作情况。若测试均能正常通过,则表明系统硬件电路工作正常。调试时,检测到小车的角度为30.90439°,小车电机转速为-52.09581。

  在小车自平衡过程中,若给小车一个外力来破坏小车的平衡,则小车要能迅速响应这个变化,立即运动去减小倾角的变化,建立一个稳定平衡状态。开始调试时,能响应,但波动较大,建立平衡的时间较长。通过修正PID参数,最终能使小车快速达到平衡状态。

  小车平衡时效果图如图6所示。系统通电后,小车完全实现自平衡的时间为12s,在普通水磨石地面上,平衡时倾角范围约在±10o以内。若给予一定外力干扰时,小车在20s内能够自动调节实现自平衡状态。

  本文设计了一个两轮自平衡小车系统,该系统基于STM32F103C8T6微处理器、采用卡尔曼滤波算法和双闭环PID控制算法对小车进行自平衡控制。实验测试结果证明,采用卡尔曼滤波算法能够有效地消除陀螺仪和加速度计在测量过程中的噪声干扰和随机漂移误差,准确地计算出小车的姿态倾角。采用高性能的微处理器,使得卡尔曼滤波算法和PID控制算法能够快速完成,提高了数据采集和控制的实时性,提高了系统的稳定性和抗干扰能力。

  关键字:引用地址:基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

  1、引言 智能小车是一个集自动控制、环境监测、无线遥控等多功能于一体的综合系统,人们习惯称其为移动轮式机器人,目前以单片机为核心的移动机器人还存在处理数据局限、控制不稳定等不足之处,国内市场暂时还没有出现具有真正意义的跟随性智能载物小车。本设计基于单片机的智能小车测距模块、红外遥控模块和小车智能控制模块,通过软硬件设计调试,实现了小车的自动跟随状态。主要利用超声波测距模块实现小车与目标之间距离的实时检测,当两者距离较近小车就“缓慢跟随”,一旦测得距离较远,小车将“加快脚步”,直到追上目标,并且小车可以跟随目标一起转弯,不会“跟丢”。 2、硬件设计 2.1、系统总体设计 为实现小车智能跟随,采用了超声波测距、电机驱动、红外遥控等功能

  的可遥控智能跟随小车的设计与实现 /

  我们做一个电子产品,往往需要实现人机交互的功能。那么人机交互的方式除了输出到上位机通过电脑去显示,显示器也是一个很不错的方式,可用于一些不能使用电脑的场合。LCD12864显示器中的一种,具有价格低廉,操作简单的优点。今天就为大家带来一个STM32驱动12864的例程,使用SPI串行通信,仅仅需要三根数据线就可以完成通信。废话不多说,进入正题。 接线 PSB---GND 1.初始化IO口以及显示屏 void Lcd_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2P

  首先要解决DMA怎么知道要接收的数据何时开始,何时结束的问题。而且每次传输完数据,要改变下一次数据长度。 如果把DMA设成循环模式肯定是不行的,所以把DMA设置成正常模式。 STM32的串口有监测总线是否处于空闲的功能,我们可以使用这个功能,当数据传输完总线变成空闲状态时产生中断,来对收到的数据做处理。因此整个过程就变成:当一堆数据开始传输,DMA默默地把数据搬运到内存中,当这堆数据传输完成,总线变成空闲状态时,马上产生中断,在中断服务程序中去做相应处理。 初始化程序: #defineDMA_Rec_Len10//数据缓冲区大小 u8value[DMA_Rec_Len]; voiduart_init_DMA_IN(u

  单片机读取可变长度数据到内存 /

  /*********************** 结构体操作点亮LED ********************************/ #include stdint.h //数据类型声明标准头文件 #define __IO volatile //定义__IO //GPIO寄存器结构体定义 typedef struct { __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef;

  简单的一种应用,ARM芯片作为master,flash为slaver,实现单对单通信。ARM主控芯片STM32F103,flash芯片为MACRONIX INTERNATIONAL的MX25L6465E,64Mbit。 SPI应该是嵌入式外围中最简单的一种应用了吧!一般SPI应用有两种方法:软件仿真,手动模拟产生时序和应用主控芯片的SPI控制器。 一般采用第二种方法比较好,比较稳定。应用主控芯片的SPI控制器,要点:正确的初始化SPI、操作SPI各寄存器和正确理解flash的时序。下面是过程,采用的是STM32F10X自带的库函数 1、初始化:void SpiFlashIniTIalzaTIon(void); 要知道

  单片机的64Mbit单对单通信 /

  定时器应用之PWM输出 1.1 TIM1_CH1N 与 TIM1_CH1 的区别 在刚准备使用定时器的时候,我看了下原理图,发现对于定时器1,它的每一个输出通道都是成对的,即TIM1_CH1N与TIM1_CH1两个一组,通过网络查询后,明白了芯片这样设计的原因。 TIM1是一个完整的电机控制用定时器外设,TIM1_CH1和TIM1_CH1N,用于驱动上下两个功率管。如果Deadtime为0,则 TIM1_CH1N是TIM1_CH1的反相,如果Deadtime不为0,则在TIM1_CH1N上插入了Deadtime,防止上下功率管同时导通。 另外的两类管脚定义: TIM1_ETR是外部触发输入管脚; TIM1_BKIN是故障信

  STM32的GPIO介绍 STM32引脚说明 GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。 STM32的大部分引脚除了当GPIO使用之外,还可以复用位外设功能引脚(比如串口),这部分在【STM32】STM32端

  的八种GPIO工作方式详解 /

  一、什么是串行通讯与并行通讯? 按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。 而并行通讯一般是指使用 8、 16、 32 及 64 根或更多的数据线进行传输的通讯方式。并行通讯就像多个车道的公路,可以同时传输多个数据位的数据,而串行通讯,而串行通讯就像单个车道的公路,同一时刻只能传输一个数据位的数据。 并行通讯与串行通讯的对比图如下: 很明显,因为一次可传输多个数据位的数据 ,在数据传输速率相同的情况下,并行通讯传输的数据量要大得多,而串行通讯则可以节省数据线的硬件成本(特别是远距离时)以及 PCB

  什么是通讯? /

  设计

  设计

  微控制器的空间矢量脉宽调制

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  STM32CubeMX and STM32Cube HAL basics

  MPS电机研究院 让电机更听话的秘密! 第一站:电机应用知识大考!第三期考题上线,跟帖赢好礼~

  有奖征文:邀一线汽车VCU/MCU开发工程师,分享开发经验、难题、成长之路等

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

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

  【直播】3月27日,STSAFE-A110安全芯片及ST4SIM eSIM芯片助力安全通信

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

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

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【下载】AN5129_适合2.4GHz无线信号的低成本PCB天线 基于 BlueNRG-LP ARM Cortex-M0+

  1、单片机中断:找了一张 80C51 单片机的图如下:其中,在 P3 2、P3 3 的位置,即 12 ,13 引脚处,标有 INT0 和 INT1,那两个引 ...

  肌电测量或肌电图是检查人体神经、肌肉系统功能的重要方法,广泛应用于神经科、骨科、耳鼻喉科及口腔科。它可为临床诊断、治疗神经肌肉系统 ...

  中断系统是计算机或者单片机的主要功能部件。有了中断系统,便可以使微处理器具备对外部的异步事件做处理的能力。当微处理器的CPU正在执 ...

  首先我们来连接一下单片机的引脚图,如果,具体功能在下面都有介绍。单片机的40个引脚大致可分为4类:电源、时钟、控制和I O引脚。⒈ 电源 ...

  最近一段时间,边缘AI概念的兴起,和汽车图形显示性能的提升,慢慢的变多的MCU厂商开始“卷”图像处理性能。...

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