一段stm32平衡小车的程序,void TIM1_UP_TIM16_IRQHandler(void),是什么函数?

一段stm32平衡小车的程序,void TIM1_UP_TIM16_IRQHandler(void),是什么函数?,第1张

调用这个词不是很准确,假设你讲的是io对应的中断服务.

stm32的每个io都可以对应一个exit中断服务,每个exit中断对应多个源,比如gpioA1B1C1都共用一个exit1.gpioA10~15,B10~15,C10~15共用exit15_10

位置闭环控制就是根据编码器的脉冲累加测量电机的位置信息,得到控制偏差,然后通过对偏差的比例、微分、积分进行控制,使得偏差趋于零

c语言的实现

P用于提高相应速度,I用于减小静差,D用于抑制震荡

速度闭环控制是根据单位时间获取的脉冲数测量电机速度信息,对目标值进行比较

理论分析

直立环使用PD控制

在调试直立环,要在定时器中断服务函数屏蔽速度换和转向环

首先估计kp的取值范围,陪我们设置7200代表占空比百分百

设定kp值为7200,那么小车在10°就会满转

确定参数的原则是:kp一直增加,出现大幅度低频抖动

kd一直增加,直至出现高频抖动

确定了pd的最大数,×0.6就是需要的参数

我们对速度进行低通滤波

一般可以把ki的值设置为kp/200

kp最大值=7200/(160*50%)

mpu6050内带三轴陀螺仪和三轴加速度传感器,自带数字运动处理器dmp硬件加速引擎,非常方便实现姿态解算,降低运动处理器对 *** 作系统的负荷 集成可程序控制加速度传感器,角速度传感器,自带温度传感器,支持输出中断

INT中断输出,AD0设置地址AD0=0 地址=0X68 AD0=1 地址0X69,SCL/SDA IIC接口

1.初始化IIC

2.复位mpu6050,由电源管理寄存器0X6B控制

3.设置角速度加速度满量程范围

4.设置其他参数

5.设置系统时钟

6.使能

DEVICE_RESET=1复位

SLEEP=0正常工作模式

TEMP_DIS用于设置是否使能温度传感器,设置为0,则使能CLKSEL[2:0]用于选择系统时钟

陀螺仪配置寄存器0X1B

FS_SEL[1:0]用于设置满量程范围

加速度配置寄存器0X1C

AFS_SEL[1:0]用于设置满量程范围

FIFO使能寄存器0X23

在简单读取传感器数据,可以不用FIFO,设置为0

采样率分频寄存器0X19

采样频率=陀螺仪输出频率/(1+SMPLRT_DIV)

一般设置为采样率的一半

配置寄存器0X1A

看数字低通滤波器设置位

加速度输出寄存器0x3B-0X40

陀螺仪输出 0X43-0X48

温度传感器数据输出0X41-0X42高8位低8位,通过温度换算

欧拉角yaw航向角 roll横滚角 pitch俯仰角

dmp输出的是四元数,采用q30格式,q30是一个常量

上位机

匿名四轴上位机


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/10926048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-12
下一篇 2023-05-12

发表评论

登录后才能评论

评论列表(0条)

保存