bsp_stepper_ctrl.c-增量式PID算法实现-增量式PID /*** @brief 增量式PID算法实现* @param val:当前实际值* @note 无* @retval 通过PID计算后的输出*/floatPID_realize(_pid *pid,floattemp_val){/*传入实际值*/pid->actual_val = temp_val;/*计算目标值与实际值的误...
* @param 无 * @retval 无 */intmain(void){/* 初始化系统时钟为168MHz */SystemClock_Config();/*初始化USART 配置模式为 115200 8-N-1,中断接收*/DEBUG_USART_Config();printf("欢迎使用野火 电机开发板 步进电机位置速度双环控制 例程\r\n");printf("按下按键3启动和停止电机\r\n");/* 初始化...
bsp_stepper_ctrl.c-增量式PID算法实现-增量式PID /*** @brief 增量式PID算法实现* @param val:当前实际值* @note 无* @retval 通过PID计算后的输出*/floatPID_realize(_pid *pid,floattemp_val){/*传入实际值*/pid->actual_val = temp_val;/*计算目标值与实际值的误差*/pid->err=pid->target_va...
*/ int32_t protocol_init(void); /** * @brief 接收的数据处理 * @param void * @return -1:没有找到一个正确的命令. */ int8_t receiving_process(void); /** * @brief 设置上位机的值 * @param cmd:命令 * @param ch: 曲线通道 * @param data:参数指针 * @param num:参数个数 * @re...
* @param*PID:PID 结构体变量地址 * @param Feedback_value:当前实际值 * @retval 期望输出值 */ int32_t own_pid_ctrl(PID_TypeDef *PID,float Feedback_value) { PID->Error = (float)(PID->SetPoint - Feedback_value); /* 计算偏差 */ ...
* @param Feedback_value:当前实际值 * @retval 期望输出值 */ int32_t own_pid_ctrl(PID_TypeDef *PID,float Feedback_value) { PID->Error = (float)(PID->SetPoint - Feedback_value); /* 计算偏差 */ PID->SumError += PID->Error; /* 累计偏差 */ ...
u(t) = K_p(e(t)-e(t-1) )+ K_ie(t) + K_d(e(t)-2e(t-1)+e(t-2)) 1. 代码实现 位置式PID AI检测代码解析 /** * 位置式PID * * @param dt 采样周期 * @param kp 比例增益 * @param ki 积分增益 * @param kd 微分增益 ...
比例(Proportion)积分(Integral)微分(Differential)控制器(PID控制器或三项控制器)是一种采用反馈的控制回路机制,广泛应用于工业控制系统和需要连续调制控制的各种其他应用。
* @param *PID: 指向PID控制器结构体的指针 * actual_val: 当前实际值 * @return 调节后的输出值 ***/ float Position_PID_Realize(tPID *PID, float actual_val) {PID->actual_val = actual_val; // 传递真实值 PID->err = PID->target
/** * @brief 速度PID算法实现 * @param actual_val:实际值 * @note 无 * @retval 通过PID计算后的输出 */ #define SPE_DEAD_ZONE 5.0f /*速度环死区*/ #define SPE_INTEGRAL_START_ERR 100 /*积分分离时对应的误差范围*/ #define SPE_INTEGRAL_MAX_VAL 260 /*积分范围限定,防止积分饱和*/ float ...