问题总览 1、电机带负载所引起的死区补偿问题 2、利用MPU6050传感器进行某一轴的角度测量问题 3、stm32串口通讯得到的数据用DMA转运问题一、电机带负载所引起的死区补偿问题 我选用的电机为直流减速电机,型号为GA25-370,是12V的电机。 电机运行分为带负载和不带负载的两种情况:不带负载的电机转速呈现饱和特性,带负载的电机转速呈现有死区的饱和特性。制作平衡车的时候不会让电机满速运行,所以我们可以近似地看做为线性特性和死区特性。平衡车一定是带负载的,那我们如何补偿呢?这里分享我的方法。 直流电机调速方案比较
文章目录基本概述默认参数时,MLX90640的工作流程如下:测量帧解释:温度转颜色的方法为:成果展示:资源汇总基本概述STM32F103RCT6使用IIC接口与MLX90640采集数据,采集数据后使用LCD将温度转换为像素点输出到TFT-LCD屏幕,温度达到指定数值自动蜂鸣器报警,使用按键关闭报警声,源码文件文末自取。默认参数时,MLX90640的工作流程如下:(1)上电,内部初始化(约40ms)(2)读取工作参数到控制和状态寄存器(3)开始以2Hz的速率测量实时数据并更新到RAM,自动更新状态寄存器。测量帧解释:MLX90640共有768个测量像素点,每次测量其中的一半,称为1帧,故此完成7
前言 手上正好有TCS3472模块,也正好想在加深一下自己对I2C协议的理解和应用,所以就写了这个代码库出来。参考的资料主要来源于TCS3472的数据手册,和arduino中MH_TCS3472库的宏定义,和函数名称,我就没有重新命名,方便大家理解和使用修改之类的。环境开发板:STM32C6T6最小系统板案例的代码环境:Keil5+STM32CubeMX生成的HAL库,OLED(4P)+TCS3472案例接线:TCS3472模块的VIN接到ST-LINK的5V,OLED模块VCC接3.3V。TCS3472和OLED的SDA接到PB9,SCL接到PB8。TCS3472模块的LED引脚接PA3(
STM32-DSP库的使用一.CMSIS-DSP1.1DSP库简介1.2支持的函数类别1.3宏定义二、操作2.1STM32CubeMX配置基本工程2.2Lib库的方式实现(推荐)2.3手动添加DSP文件(可以下载官方最新库,功能齐全)三、MFCC测试DSP加速效果为验证语音识别MFCC用到快速傅里叶变换FFT,在工程中应用DSP库时对着网上各种教程暴雷难受,希望给大家提供帮助;并且以lib库、手动src移植两种方式分别实现;测试环境Crotex-M4实测有效(相比于Cortex-M3增加了浮点运算单元和数字信号处理(DSP)指令集,适用于需要处理复杂算法的应用);一.CMSIS-DSP1.1D
时间记录:2024/1/5一、USART/UART介绍协议介绍(1)起始位,一位逻辑电平0表示(2)数据位,8-9位,逻辑高低电平,一般使用8位(3)校验位,分为奇校验、偶校验、无校验(4)停止位,0.5、1、1.5、2个逻辑电平1表示(5)波特率,数据传输的速度,1S发送接收的比特位数,常用的115200、9600串口介绍串口1: TX:PA9RX:PA10串口2: TX:PA2RX:PA3串口3: TX:PB10RX:PB11二、以串口1为例实现数据的收发(1)使能GPIO时钟,配置GPIO端口RCC_APB2PeriphClockCmd(RCC_APB2Periph_G
STM32工程模板没有统一的格式,可以参考ST官方的示例模板或者根据自己的开发经验和使用习惯总结。ProjectTemplate文档以库函数工程模板为例,HAL库工程模板对应参考即可。OfficialProjectTemplateST发布的标准外设库(STM32StandardPeripheralLibraries)中都会包含示例工程模板。以笔者正在使用的STM32L151RET6为例,截止在写这篇文档的时候最新的版本为1.4.0。示例工程模板路径为en.stsw-stm32077_v1-4-0\STM32L1xx_StdPeriph_Lib_V1.4.0\Project\STM32L1xx_
文章目录一:OLED调试工具1.1OLED显示屏介绍1.2实验:在OLED显示屏的使用1.3自己新增功能测试道友:今天没有开始的事,明天绝不会完成。一:OLED调试工具1.1OLED显示屏介绍学习任何一门语言就需要进行调试,stm32调试方式主要有以下三种:串口调试:通过串口,将调试信息发送到电脑端,电脑端使用串口调试助手显示调试信息。显示屏调试:直接将显示屏连接到单片机,将调试信息打印在显示屏上。Keil调试模式:借助Keil软件的调试模式,可使用单步运行、设置断点、查看寄存器及变量等功能。点灯调试法:在程序的某个关键位置设置点灯的代码,用于指示程序是否运行到该位置。注释调试法:将可能有问题
最近看到了FOC这个东西,感觉很有意思,想着以后用这个算法做个东西,目前的想法是用开源的ODrive方案,自己做一个有感单电机驱动的板子,并且加入一点自己的东西,但是这不是目前工作的重点,所以就先学习了一下,记录下来,方便以后做的时候查阅。原文来自稚晖君的文章:【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术FOC算法与SVPWM技术什么是FOC?FOC驱动器和无刷电调的区别FOC的优势电调的优势无刷直流电机基础知识基础知识左手定则右手定则右手螺旋定则(即安培定则)PWM(脉冲宽度调制)磁回路分析法三相二极内转子电机结构三相多绕组多极内转子电机的结构外转子无刷直流电机的工作原理BLD
1什么是GPIO GPIO就是通用输入输出端口的简称,GPIO是一种灵活的引脚(或针脚)配置,允许微控制器与外部世界进行数字输入和输出的通信。每个GPIO引脚可以被配置为输入或输出,从而使它们能够执行各种不同的任务。STM32芯片的GPIO被分成很多组,每组有16个引脚(也有可能少于16个),如型号为STM32F103VET6型号的芯片有GPIOA、GPIOB、GPIOC至GPIOE共5组GPIO,该芯片一共100个引脚,其中GPIO引脚就占了一大部分,所有的GPIO引脚都有基本的输入输出功能。最基本的输出功能是由STM32控制引脚输出高、低电平,实现开关控制,如把GPIO引脚接
本程序是在keil5软件下使用标准库编程的,纯自己手打,包含详细的代码注释。首先就是PWM模块,次模块用于改变小车的转速,本项目用一个L98N电机驱动模块,将左边的两个轮子连接在一个L98N电机驱动模块输出引脚,将坐标的两个轮子连接在L298N的另外一个输出引脚,由此控制四个轮子的转动。下面是PWM模块的代码PWM.c#include"stm32f10x.h"//Deviceheader//用两个定时器产生PWM波形,分别控制两侧电机//PA6、PA7、PA8、PA9四个引脚分别产生四个PWM波形控制左轮前进调速、左轮后退调速、右轮前进调速、右轮后退调速//其中轮子的前进和后退输出的PWM波形