声明:以下图片来自于正点原子,仅做学习笔记使用
电机专题:
直流电机:直流有刷BDC(内含电刷),直流无刷BLDC(大疆的M3508和M2006),无刷电机有以下三种形式:(第三种叫做永磁同步电机,换相方式为正弦波,前两种为方波)
步进电机:电脉冲信号驱动角位移或相位移
伺服电机:绝对服从驱动信号的控制,价格昂贵,如下图所示:
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
直流有刷BDC:
仅需调整电压即可调整转速,内部结构包括:定子(产生磁场),转子,换向器(改变绕组电流流向)和电刷,加上减速齿轮便可以获得较大的扭矩,直流电机关键参数:
加装霍尔传感器进行计数:
H桥驱动:
IR2104STRPBF:半桥式驱动器,输出电压:10V to 20V,输出电流:130 mA
要么Motor+输出为正,要么Motor-输出为正(光耦隔离输入输出反相)R22电压为0,此时MOS关断;R20电压为1,此时MOS打开接入GND,Motor+输出为负。这样传导的过程会有时间延迟,成为死区时间。
电机的启动停止通过控制SD_IN的高低电平即可实现,PWM需要使用互补PWM,例如TIM_CH1和TIM_CH1N,PWM的比较值决定了电机的速度
互补输出是指两个输出信号,它们是互补的,即当一个输出为高电平时,另一个输出必定为低电平,反之亦然。这种输出配置在数字电路中非常常见,用于控制逻辑门的状态,从而实现对外部设备的控制。
编码器:
、
通过在固定时间内测量编码器的脉冲数,可以计算出旋转角度或速度,进而推算出电机转速。
STM32的定时器编码器接口原理主要是利用编码器输出的正交信号(通常是A相和B相)来计算速度和方向。首先,编码器输出的A相和B相信号通过STM32的定时器输入捕获引脚接入到单片机中。这两个信号是相位差90度的正交信号,通常由光电编码器产生。
然后,STM32的定时器模块通过输入捕获功能对这两个信号进行采样。当A相和B相的信号发生变化时,定时器会捕获到这个变化并记录下当前的时间戳。
接下来,通过计算两个时间戳之间的差值,可以得到编码器的旋转速度。具体来说,如果A相和B相的信号变化越快,说明编码器的转速越快。
另外,通过比较A相和B相信号的先后顺序,可以判断编码器的旋转方向。例如,如果A相信号先于B相信号变化,说明编码器正转;反之,如果B相信号先于A相信号变化,说明编码器反转。
注意:定时器的通道1和2支持编码器功能,通道3和4不支持编码器功能
编码器的关键参数:
分辨率PPR:编码器可以测量的最小距离
精度:实际输出与测量值之间的误差
最大响应频率PPS:编码器每秒输出的最大脉冲数目
最大转速:编码器机械系统能承受的最大转速
函数:
冒泡排序在电机速度采样滤波中的作用原理主要表现在以下几个方面:
数据排序:冒泡排序可以对采集到的电机速度数据进行排序,将原始数据按照从小到大的顺序排列。这种排序操作可以使得速度数据从低到高逐渐增加,便于后续的处理和比较。
数据比较:冒泡排序算法的核心思想是比较相邻元素的大小,并进行交换位置。在电机速度采样滤波中,通过冒泡排序算法的比较过程,可以发现相邻数据之间的差异,从而检测到异常的突变数据。这些突变数据可能由于电机负载突变、干扰信号等原因产生,通过比较相邻数据可以有效地排除这些异常值。
数据去噪:通过冒泡排序的比较过程,可以识别出异常的突变数据,并将它们排除在最终的速度数据之外。这种去噪处理可以有效减少噪声干扰对电机速度测量的影响,提高测量结果的准确性和稳定性。
数据平滑:在经过冒泡排序的数据处理后,可以进一步对这些数据进行平滑处理,如滑动平均滤波等。平滑处理可以有效去除随机波动和偶然误差,使得最终的速度数据更加平滑和稳定。
一阶低通滤波在电机速度采样滤波中的作用原理主要是通过一阶线性系统对输入信号进行滤波处理,以抑制高频噪声并平滑输出信号。一阶低通滤波器通常由一个电阻和一个电容组成,形成一个RC电路。当输入信号加在一阶低通滤波器的输入端时,信号中的高频成分将被电容阻隔,而低频成分将通过电阻传递到输出端。因此,一阶低通滤波器能够有效地抑制高频噪声,保留低频信号。在电机速度采样滤波中,一阶低通滤波器的作用是将采集到的速度信号中的高频噪声成分滤除,保留低频变化成分。这种滤波处理能够减小电机速度测量中的随机噪声和突变干扰,提高测量结果的稳定性和准确性。
一阶低通滤波器的传递函数具有形式为(H(s) = \frac{1}{RCs + 1})的极点和零点。随着频率的增加,传递函数的幅度逐渐减小,并在截止频率处为0。因此,一阶低通滤波器在高频段具有衰减特性,能够有效地抑制噪声干扰。在实际应用中,需要根据具体需求选择合适的一阶低通滤波器参数,如电阻和电容值。此外,为了更好地适应不同场景下的速度采样滤波需求,还可以采用可调整参数的一阶低通滤波器设计,根据实际情况进行动态调整。
PID中:I越大消除静态误差的时间越短使尽快达到预期效果,但是过大导致超调或振荡(尤其针对惯性较大的系统),微分D过大会引入高频噪声,微分系数对系统的影响较小,一般调节重点在PI两个参数。
位置式PID和增量式PID是两种不同的PID控制算法,它们之间的主要区别在于对过去误差的累计和当前误差的计算方式。
位置式PID:位置式PID控制算法是一种非递推式算法,它根据整个过去的状态来计算控制输出。这意味着它会将误差的累加值用于控制输出,这使得位置式PID具有较大的累积误差。此外,每次输出都与过去的所有状态有关,导致计算量大,这可能会对执行机构产生较大的影响。位置式PID存在积分饱和问题:如果长时间无法达到目标,此时累积误差会变得很大导致系统响应很慢
增量式PID:增量式PID控制算法是一种递推算法,它只与当前拍和前两拍的误差有关。因此,增量式PID的输出只与最近的误差变化有关,这使得其具有较小的累积误差。此外,增量式PID输出的是控制量的增量,并无积分作用,因此该方法适用于执行机构带积分部件的对象,如步进电机等。
PID的三环控制:速度环,位置环,电流环
位置环:通过编码器当前的计数值反应电机的位置,表现出来的现象是电机转几周仍然会回到指定的位置。
双环控制中外环控制是最重要的考虑对象,内环控制用于对控制进行优化。
双环控制有效避免了对一个参数调整时另外一个参数的变化对系统的影响,表现为超调现象。
位置外环+速度内环能够很好的解决只有位置环时候的超调现象。在双环控制参数调节过程中一定注意外环PID的系数不要调节过大,尽量去调节内环。
在PID三环控制中,电流环控制对直流有刷电机具有以下意义:
提高控制精度:电流环作为最内环,能够快速响应电机的电流变化,减小电机电流的波动,从而提高控制精度。改善动态性能:通过电流环控制,可以快速地调节电机的输入电流,使其快速跟踪设定值,从而改善动态性能。增强稳定性:通过电流环控制,可以减小电机电流的波动,提高系统的稳定性。保护电机和控制系统:电流环控制可以限制电机的输入电流,防止过电流导致电机和控制系统损坏。
在PID三环控制中,位置环控制对直流有刷电机的意义主要在于实现精准的位置控制。
通过位置环控制,可以精确地控制电机的位置,使其达到设定的目标位置。位置环控制能够快速响应电机的位置变化,减小位置误差,提高控制精度和系统的稳定性。同时,位置环控制还可以通过调节电机的输入电压或电流,控制电机的速度和加速度,实现更加平滑和精确的运动控制。
闭环死区:即使PID控制器试图精确控制电机的速度,电机的实际旋转速度可能也不会精确地等于PID控制器期望的旋转速度。这可能会导致系统在目标位置附近来回振荡,或者根本就无法达到目标位置。
PID调试过程中的积分饱和问题是指,当系统存在一个方向的偏差时,PID控制器的输出由于积分作用的不断累加而加大,从而导致执行机构达到极限位置。如果控制器输出继续增大,执行器开度无法再增大,此时计算机输出控制量超出了正常运行范围而进入饱和区。一旦系统出现反向偏差,输出逐渐从饱和区退出。进入饱和区越深则退出饱和区时间越长。在此段时间里,执行机构 仍然停留在极限位置而不随偏差反向而立即做出相应的改变,这时系统就像失控一样,造成控制性能恶化。这种现象称为积分饱和现象或积分失控现象。
所需的硬件资源:
3)定时器1、3、6
TIM1正常输出通道 PA8
TIM1互补输出通道 PB13
TIM3 编码器A相输入通道 PC6
TIM3 编码器B相输入通道 PC7
4)ADC
ADC1通道8 PB0(电流)
5)SD(刹车)信号输出 PF10
6)串口1
USART1_TX PB6(发送)
USART1_RX PB7(接收)
舵机:
舵机的5V供电与其他模块的隔开,舵机容易烧板子。下图为舵机信号线的改装形式(可以支持较大功率的舵机):SERVO2=1的时候三极管导通此时舵机信号线为GND状态;SERVO2=0的时候三极管截止此时舵机信号线为SRV+状态。
PWM的两个模式:(舵机采用PWM2,高电平有效,向上计数)
如果舵机没反应,用示波器查看脉冲周期是否为20ms,且高电平时间在0.5到25ms之间变化