用flash做网站教程大型购物网站建设费用
基本原理


1、软件设计
本闭环控制例程是在步进电机编码器测速例程的基础上编写的,这里只讲解核心的部分代码,有些变量的设置,头文件的包含等并没有涉及到,完整的代码请参考本章配套的工程。 我们创建了4个文件:bsp_pid.c和bsp_pid.h文件用来存放PID控制器相关程序,bsp_stepper_ctrl.c、bsp_stepper_ctrl.h 文件用来存步进电机位置环控制程序及相关宏定义。
1. 编程要点
-  
定时器 IO 配置
 -  
步进电机、编码器相关外设初始化
 -  
位置闭环控制实现
 -  
PID参数整定
 
代码分析
PID代码
/********************************************************************************* @file    main.c* @author  fire* @version V1.0* @date    2019-xx-xx* @brief   PID算法实现******************************************************************************* @attention** 实验平台:野火  STM32 F103 开发板 * 论坛    :http://www.firebbs.cn* 淘宝    :http://firestm32.taobao.com********************************************************************************//* Includes ------------------------------------------------------------------*/
#include "./pid/bsp_pid.h"
#include "math.h"
#include "./stepper/bsp_stepper_ctrl.h"
#include "./protocol/protocol.h"
/* 定义全局变量 */
_pid pid;
float set_point=0.0;
int pid_status=0;/*** @brief  PID参数初始化*	@note 	无* @retval 无*/
void PID_param_init()
{/* 初始化参数 */pid.target_val=0.0;				pid.actual_val=0.0;pid.err=0.0;pid.err_last=0.0;pid.integral=0.0;pid.Kp = 1.3;pid.Ki = 0;pid.Kd = 0;#if PID_ASSISTANT_ENfloat pid_temp[3] = {pid.Kp, pid.Ki, pid.Kd};set_computer_value(SEND_P_I_D_CMD, CURVES_CH1, pid_temp, 3);// 给通道 1 发送 P I D 值#endif
}/*** @brief  设置目标值* @param  val		目标值*	@note 	无* @retval 无*/
void set_pid_actual(float temp_val)
{pid.target_val = temp_val;    // 设置当前的目标值
}/*** @brief  获取目标值* @param  无*	@note 	无* @retval 目标值*/
float get_pid_a