电控笔记

来源:互联网 发布:md5用php可以解密吗 编辑:程序博客网 时间:2024/04/27 23:02

主体结构: 初始化上位机、遥控器(接收值,中断更新位置数值)、can(函数发送,中断接收)轮子控制及各种初始化;定时器3产生四路PWM波。

                  定时器1中定时中断(1ms):控制更新获取数据,计算控制速度、角度,并更新底盘数据。(主体)



舵机控制:高电平时间控制角度,低电平时间控制转动速度


遥控器信息:每个通道中间值1024,上下加减660.长度11位,无符号位。通道s1、s2发射机位置


程序信息:串口1(遥控数据接收),串口3(上位机数据),can总线(小车底部轮子控制),I2C(mpu6050读取),PID内外两环。


PID参数整定
(1) 比例系数Kp对系统性能的影响
比例系数加大,使系统的动作灵敏,速度加快,稳态误差减小。Kp偏大,振荡次数加多,调节时间加长。Kp太大时,系统会趋于不稳定。Kp太小,又会使系统的动作缓慢。Kp可以选负数,这主要是由执行机构、传感器以控制对象的特性决定的。如果Kc的符号选择不当对象状态(pv值)就会离控制目标的状态(sv值)越来越远,如果出现这样的情况Kp的符号就一定要取反。
(2) 积分控制Ti对系统性能的影响
积分作用使系统的稳定性下降,Ti小(积分作用强)会使系统不稳定,但能消除稳态误差,提高系统的控制精度。

(3) 微分控制Td对系统性能的影响

微分作用可以改善动态特性,Td偏大时,超调量较大,调节时间较短。Td偏小时,超调量也较大,调节时间也较长。只有Td合适,才能使超调量较小,减短调节时间。


STM32时钟:系统初始化APB1的时钟是4分频,即42m,当APB1的时钟分频为1的时候,TIM2~7以及TIM12~14的时钟为APB1的时钟,而如果APB1的时钟分频不为1,那么以上时钟频率姜维APB1时钟的两倍,即84m

                                                                    Tout=((arr+1)*(psc+1))/Tclk;(Tclk:TIM输入时钟频率,Tout溢出时间)

                        为了快速一般采用PLL作为SYSCLK的时钟源,以太网PTP时钟是使用SYSCLK系统时钟,APB1,APB2,AHB是由SYSCLK时钟分频而来。AHB时钟最大频率168mhz,APB2时钟最大频率84mhz,APB1时钟最大频率42mhz。


定时器时钟来源:

(1)内部时钟

(2)外部时钟模式1:外部输入脚(TIx)

(3)外部时钟模式2:外部触发输入(ETR),仅适用于TIM2/TIM2/TIM4

(4)内粗触发输入(ITRx):使用a定时器作为b定时器的预分频器。

@关闭stm32——PWM即关闭定时器,重新打开即使能寄存器。

        @note TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);关闭PWM中的一路,全部关闭即关闭定时器

        @note TIM_CCxNCmd(TIM1, TIM_Channel_1, TIM_CCxN_Disable);不同貌似是关闭后的电平(互补通道)


JLINK调试问题总结


PID参数整定方法


在STM32串口通信程序中使用printf()函数发送数据非常方便,但是需要先进行简单的配置,下面介绍两种配置方法。

方法一、对工程属性进行配置

第1步:在main.c中包含"stdio.h” (标准输入输出头文件);

第2步:在main.c文件中重定义fput()这个C标准库函数(因为printf()在C标准库函数中实质上是一个宏,要调用到fputc()这个函数);

第3步:在工程属性的"Target" -> "Code Generation" 选项中勾选"Use MicroLIB";


注:mpu6050使用原子程序自检不通过时需要将mpu6050放平


0 0
原创粉丝点击